Hoy vamos a trabajar un poco con las instancias de ASM y la manera en que podemos desenvolvernos con la linea de comandos.
Vamos a comenzar cargando las variables de ambiente.
$ cat asm.sh export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_asm export ORACLE_SID=+ASM export PATH=$PATH:$ORACLE_HOME/bin export EDITOR=vi $. ./asm.sh
Comenzamos por loguearnos a la terminal de administracion de ASM usamos el comando asmcmd.
$ asmcmd ASMCMD>
Ahora podemos listar los comandos que tenemos disponibles para operar con ASMCMD
ASMCMD> c commands: cd du find help ls lsct lsdg mkalias mkdir pwd rm rmalias
Vistas Utiles en instancia ASM
Cuando trabajamos desde la instancia de ASM podemos consultar las vistas asociadas, entre las cuales yo elegi las siguientes:
V$ASM_DISK Muestra informacion de cada disco que se encuentra en los diskgroups de cada instancia.
V$ASM_DISKGROUP Muestra informacion para cada diskgroup montado por instancia.
V$ASM_CLIENT Muestra una fila para cada instancia de base de datos con un grupo de discos administrados por la instancia de ASM.
V$ASM_TEMPLATE Muestra una fila con el contenido de objetos de asm asociados a un diskgroup por instancia.
SQL> select * from V$ASM_TEMPLATE; GROUP_NUMBER ENTRY_NUMBER REDUND STRIPE S NAME ------------ ------------ ------ ------ - ------------------------- 2 0 UNPROT COARSE Y PARAMETERFILE 2 1 UNPROT COARSE Y DUMPSET 2 2 UNPROT FINE Y CONTROLFILE 2 3 UNPROT COARSE Y ARCHIVELOG 2 4 UNPROT FINE Y ONLINELOG 2 5 UNPROT COARSE Y DATAFILE 2 6 UNPROT COARSE Y TEMPFILE 2 7 UNPROT COARSE Y BACKUPSET 2 8 UNPROT COARSE Y AUTOBACKUP 2 9 UNPROT COARSE Y XTRANSPORT 2 10 UNPROT COARSE Y CHANGETRACKING
V$ASM_CLIENT
SQL> col INSTANCE_NAME format a30 SQL> col SOFTWARE_VERSION format a30 SQL> col COMPATIBLE_VERSION format a30 SQL> set line 150 SQL> select * from V$ASM_CLIENT; GROUP_NUMBER INSTANCE_NAME DB_NAME STATUS SOFTWARE_VERSION COMPATIBLE_VERSION ------------ -------------- -------- ---------- ----------- ---------------- 2 OPT2L1N OT2L1N CONNECTED 10.2.0.4.0 10.2.0.4.0 1 OPT2L1N OT2L1N CONNECTED 10.2.0.4.0 10.2.0.4.0
V$ASM_DISK
Vemos los discos miembros y su path en el operativo.
Cuando agregamos discos en el operativo, podemos utlizar esta query para verificar que discos miembros tengo disponibles para crear Diskgroups.
SQL> set line 120 col path format a35 col name format a25 select name, path, group_number from v$asm_disk;SQL> SQL> SQL> NAME PATH GROUP_NUMBER ------------------------- ----------------------------------- ------------ DARPRO_DG1_LV1 ORCL:DARPRO_DG1_LV1 1 DARPRO_DG1_LV2 ORCL:DARPRO_DG1_LV2 1 DARPRO_DG2_LV1 ORCL:DARPRO_DG2_LV1 2 DARPRO_DG3_LV1 ORCL:DARPRO_DG3_LV1 3 DARPRO_DG4_LV1 ORCL:DARPRO_DG4_LV1 4 DARPRO_DG5_LV1 ORCL:DARPRO_DG5_LV1 5 DARPRO_DG1_LV3 ORCL:DARPRO_DG1_LV3 1 7 rows selected.
Vemos los discos miembros, su path en el operativo, si esta ONLINE, su tamaño y espacio libre entre otras cosas.
SQL> select name, path, mode_status, state, disk_number, total_mb, free_mb from v$asm_disk; 2 NAME PATH MODE_ST STATE DISK_NUMBER TOTAL_MB FREE_MB ------------------------------ ---------------------------------------- ------- -------- ----------- ---------- ---------- DARPRO_DG1_LV1 ORCL:DARPRO_DG1_LV1 ONLINE NORMAL 0 102400 102349 DARPRO_DG1_LV2 ORCL:DARPRO_DG1_LV2 ONLINE NORMAL 1 102400 102349 DARPRO_DG1_LV3 ORCL:DARPRO_DG1_LV3 ONLINE NORMAL 2 51200 51149 DARPRO_DG2_LV1 ORCL:DARPRO_DG2_LV1 ONLINE NORMAL 0 35840 35790 DARPRO_DG3_LV1 ORCL:DARPRO_DG3_LV1 ONLINE NORMAL 0 35840 35790 DARPRO_DG4_LV1 ORCL:DARPRO_DG4_LV1 ONLINE NORMAL 0 35840 35790 DARPRO_DG5_LV1 ORCL:DARPRO_DG5_LV1 ONLINE NORMAL 0 51200 51150 7 rows selected.
V$ASM_DISKGROUP
SQL> select name, state, type, total_mb, free_mb from v$asm_diskgroup; NAME STATE TYPE TOTAL_MB FREE_MB ------------------------------ ----------- ------ ---------- ---------- DARPRO_DG1 MOUNTED NORMAL 256000 255847 DARPRO_DG2 MOUNTED EXTERN 35840 35790 DARPRO_DG3 MOUNTED EXTERN 35840 35790 DARPRO_DG4 MOUNTED EXTERN 35840 35790 DARPRO_DG5 MOUNTED EXTERN 51200 51150
CREACION Y MODIFICACION DE DISCKGROUPS Y DISCOS MIEMBROS
Como me gusta trabajar con la linea de comandos, voy aprovechar este espacio para agregar algunas sentencias sql, que nos serviran para agregar, quitar y modificar diskgroups.Estas tareas tambien las podemos hacer con el gridcontrol y con el comando dbca, donde elegimos la opcion > configurar instancia ASM.
Ahi podemos agregar y quitar discos solamente.
También asi algunas tareas como rebalanceo, para que segun los recursos con que disponemos puedan ser mejor aprovechados.
Creamos el diskgroup.
CREATE DISKGROUP DARPRO_DG1 EXTERNAL REDUNDANCY DISK 'ORCL:DARPRO_DG1_LV1';
Cuando agregamos un disco a un diskgroup, ponemos primero el nombre del diskgroup y luego del disco que aparece en el campo PATH de la vista v$asm_disk.
ALTER DISKGROUP DARPRO_DG1 ADD DISK 'ORCL:DARPRO_DG1_LV2';
En el caso de querer agregar dos discos miembros a un diskgroup.
ALTER DISKGROUP DARPRO_DG1 ADD DISK 'ORCL:DARPRO_DG1_LV2', 'ORCL:DARPRO_DG1_LV3';
Cuando tenemos agregados los discos, por tareas de mantenimiento u otros eventos podemos montar y desmontar los discos de la siguinete manera:
ALTER DISKGROUP ALL DISMOUNT; ALTER DISKGROUP ALL MOUNT; ALTER DISKGROUP data DISMOUNT; ALTER DISKGROUP data MOUNT;
DROPEO DE DISCOS
Para dropear un diskgroup tenemos dos caminos, o dropeamos los discos miembros y despúes el diskgroup, o dropeamos el diskgroup y su contenido.
ALTER DISKGROUP DARPRO_DG1 DROP DISK DARPRO_DG1_LV3;
O dropeamos el diskgroup y todos sus contenidos.
DROP DISKGROUP DARPRO_DG1 INCLUDING CONTENTS;
REBALANCEO DE DISCOS
Cuando nos dan espacio nuevo de storage, por ejemplo 100GB y solo disponibilizamos 50GB, podemos hacer un resize del tamaño con el siguiente sql al tamaño que deseamos, por ejemplo 70GB 65GB o 100GB como en el ejemplo.
ALTER DISKGROUP DARPRO_DG1 RESIZE DISK DARPRO_DG1_LV2 SIZE 100G;
En el caso que agregamos un disco miembro a un diskgroup, el espacio alocado comienza a rebalancear, a repartirse en el nuevo miembro, en el espacio libre disponible.Por ejemplo tenemos un diskgroup de 100GB integrado por dos disco de 50G y una instancia de base de datos que ocupa 90GB, cuando agregamos un nuevo miembro , por ejemplo de 50GB, el ASM va a ver una unidad, un diskgroup de 150GB, y va a dividir los 90GB , en los tres discos ahora miembros. O sea que cada disco tendra aproximado 30GB de datos en cada disco miembro de 50GB.
Este rebalanceo también ocurre cuando extraemos un disco siempre y cuando esxista una relacion que nos permita quitarlo y vuelva a rebalancear.
Esto lo podemos hacer por medio del setencia REBALANCE mediante un ALTER DISKGROUP. En el caso que no elijamos un rebalanceo de manera manual, tal cual lo estamos por ejecutar, se ejecutara el rebalanceo automatico que toma del parametro ASM_POWER_LIMIT.
SQL> sho parameter ASM_POWER_LIMIT NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ asm_power_limit integer 1
En nuestra instancia de ASM se encuentra en el menor balanceo posible, provocando que rebalacee en mayor tiempo y ocupe menos recursos.
Bien, ejecutemos ahora en un modo manual 5.
ALTER DISKGROUP DARPRO_DG1 REBALANCE POWER 5;
PARAMETROS
Desde la instancia de ASM podemos observar la configuracion del parametro asm_diskgroups, que nos indica cuales son los diskgroup que se montaran de manera automatica en el inicio.
SQL> show parameter disk NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ asm_diskgroups string DARPRO_DG1, DARPRO_DG2, DARPRO _DG3, DARPRO_DG4, DARPRO_DG5 asm_diskstring string disk_asynch_io
Nos vemos en la proxima !
Hola Juan Andrés, quisiera saber si tienes forma de ver el estado del REBALANCE, cuanto porcentaje tiene de avance en un tiempo x.
Atte.
LikeLike
Como estas, mira podes verlo con el siguiente query:
SQL> select * from v$asm_operation;
GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES
———— —– —- ———- ———- ———- ———- ———- ———–
1 REBAL RUN 1 1 447 44025 2070 21
Recorda que cuando agregas un disco , comeinza a rebalancear con el standar que se encuentran en los parametros de ASM .
Si al revisar encontras con que es mucho el tiempo, y tenes recursos utiliza la siguiente orden y aumenta la veloccidad del rebalanceo.
ALTER DISKGROUP data REBALANCE POWER 7;
Podes llevarlo segun los recursos que tengas (asi podes ver un incremento real) hasta 11.
Tenes un ejemplo en https://burzaco.wordpress.com/2009/10/13/agregar-disco-a-un-diskgroup-existente/#more-120
Donde agrego un disco y lo rebalanceo.
Espero te sea de utilidad.
Te invito tambien a que te suscribas al blog donde por correo te llegaran los nuevos articulos .
Saludos,
Juan Andres.
LikeLike
Es necesario reiniciar el server cuando termino de hacer un alter diskgroup add, o no es necesario?
LikeLike
Como te va:
No es necesario reiniciar el ASM por que este proceso ocurre en caliente, miralo desde el lado que ASM es un Volume Manager , una de sus tantas cualidades que nos permite en casos criticos o no agregar espacio sin tener que reiniciar servicios 7×24.
Te invito a que te sumes al blog para que recibas los articulos publicados.
Saludos,
JA.
LikeLike
Hola.. siempre visito tu bloq y me interesa recibir los articulos, son muy interesante para los que trabajamos en el mundo de Oracle.. muchas gracias
LikeLike
Mirtha:
Lo que debes hacer para suscribirte es ir al pie del blog (abajo) y te encontraras con “suscripcion por correo ” ahi completas con tu direccion de correo y te llegarran los articulos cuando son lanzados. Gracias !
LikeLike
Excelente, ya me suscribí.
saludos!
LikeLike
Muy interesante tu blog, felicitaciones. Queria preguntarte lo siguiente: Cuando se borra un disk en ASM o un diskgroup con todos sus discos y quiero reutilizar ese espacio para crear otro diskgroup u otros discos como debo hacerlo, porque una vez borrado ya no se muestran como discos candidatos. Gracias
LikeLike
Cesar,
Te recomiendo leer este articulo de miblog, ahi te muestra lo que estas buscando… si ahun asi no lo puedes resolver… postea nuevamente y te dare una mano.
Saludos !
https://burzaco.wordpress.com/2011/08/12/oracle-asm-delete-disk-from-a-diskgroup/
LikeLike
Hola.
es posible agregar “n” diskgroups”?
Es decir, quiero crear un diskgroup con un nombre diferente dedicado a una instancia adicional.
LikeLike
La respuesta para crear diskgroups con nombres diferentes, es correcta. Se pueden crear los diskgroups con diferentes nombres hasta 256 por instancia ASM, y a cada uno de ellos agregarle discos, para crecer en el storage. Si te queda duda, posteala y te respondo. Tambien te invito a suscribirte al blog, Saludos
LikeLike
Asi es , es una instancia de administracion ideal, Adelante !
LikeLike
Hola Juan.
Me parece excelente tu pagina. los artículos que tienes me han ayudado mucho, espero sigas publicando mas.
Un saludo desde México.
LikeLike
Gracias por el feedback ! Si , en breve estare publicando acerca de 12c !
LikeLike
Hola Juan , un saludo, como puedo agregar mas espacio al diskgroup de un ASM (DATA, REDO, RECO) quiero crear una base de datos en formato ASM y me dice ke no tengo suficiente espacio en DATA , pd. soy novato!!
LikeLike
Francisco:
La salucion es que pidas mas storage o sea una lun, seria importante conocer el OS en el que se encuentra la base oracle para poder decirte que pasos debes seguir.
Saludos desde Argentina.
LikeLike
Gracias por contestar Juan, el quipo es un ODA (Oracle Database Appliance ) con OS Enterprise Linux Enterprise Linux Server release 5.9
LikeLike
Hola Juan, me parece muy interesante tu articulo y para ser sincero, el hecho de que este en español y sea muy precioso me sorprende. Ahora bien, quizás me puedas ayudar, soy nuevo en el mundo del +ASM (en mi anterior trabajo no administraba este tipo de Bases de Datos). Me están solicitando que revise la fragmentacion de un diskgroup que esta al 94% de su capacidad o, indicarles si por el contrario, deben solicitar espacio adicional. Cual seria la recomendación mas sencilla y practica que podrías darme para validar el tipo de mantenimiento que hay que realizarle a ese diskgroup?. PD: El S.O. es SunOS y la versión del +ASM es 11.2.0.3.
Saludos desde Venezuela!
LikeLike
Hola Juan muchas gracias por la informacion. Queria preguntarte lo siguiente: tengo que agregar 40 discos a un diskgroup. Como seria mas optimo para el ASM agregar todos los 40 discos en un comando?. Agregarlo por grupo o uno a uno?.. Esto para el tema del rebalanceo. Gracias por tu colaboracion
LikeLike
Hola Juan, agregue un disco nuevo ASM al diskgroup el cual se incorporo correctamente y me muestra que tiene el espacio disponible pero no puedo agregar datafiles , me dice que no hay espacio disponible. ( exhausto ) . Hay que reiniciar. ?? Desde ya muchas gracias.
LikeLike
Cual es el procedimiento que estas utlizando para agregar mas datafiles al tablespace que se encuentra en ASM ??
Que error te muestra el alert de la base ?
Algun error en el log del ASM ?
Con esto pudo ayudarte, el ASM jamas se reinicia por que es un modelo de alta disponibilidad.
Saludos !
LikeLike