Añadirle más espacio a un diskgroup externo de ASM

Como añadirle más espacio a un diskgroup externo de ASM.
en inglés
Tengo un banco de datos que utiliza ASM (Automatic Storage Management – administración de almacenamiento automático) y sus diskgroups (como ASM define un volumen) están definidos externamente (el sistema de almacenamiento se encarga de ellos, no ASM.)

Cuando los diskgroups se llenan, generalmente le pido al administrador de almacenamiento que me dé más espacio. Después tengo que recalcular y redefinir el tamaño de los diskgroups en ASM.

Primero hay que ver el tamaño y porcentaje de uso de los diskgroups actualmente. Sirve correr:

SELECT name nombre, state estado, type tipo, total_mb asignado, (total_mb – free_mb) usado, ROUND((1- (free_mb / total_mb))*100, 2)  pct_lleno

FROM v$asm_diskgroup
ORDER BY pct_full desc;
Nombre Estado Tipo Asignado Usado
Pct_lleno
DATA1 CONNECTED EXTERN 256060 243257 95
DATA2 CONNECTED EXTERN 204800 130554 64
REDO_A CONNECTED EXTERN 40964 2525 6
REDO_B CONNECTED EXTERN 40964 2525 6
FRA CONNECTED EXTERN 204800 4503 2
ADMIN CONNECTED EXTERN 20480 396 2

 


El diskgroup DATA1 tiene un volumen del 95%. El objetivo es que tenga un volumen del 85%, entonces le pedí al administrador de almacenamiento que me diera 30,125 MB adicionales.

Después de que el espacio fue asignado, hay que redefinir el diskgroup con este código:
select ‘ALTER DISKGROUP ‘ || dg.name || ‘ RESIZE DISK ‘ || d.name || ‘;’
from V$ASM_DISK d, V$ASM_DISKGROUP dg
where d.group_number = dg.group_number
and dg.name = ‘DATA1’;

 

Entré al servidor como el usuario grid (el dueño de la instancia de ASM):
ORACLE_SID=+ASM
sqlplus / as sysasm

 

–Corrí los comandos generados por el código de SQL anterior:
ALTER DISKGROUP DATA_MDMPROD RESIZE DISK DATA1_0000;
ALTER DISKGROUP DATA_MDMPROD RESIZE DISK DATA1_0004;
ALTER DISKGROUP DATA_MDMPROD RESIZE DISK DATA1_0001;
ALTER DISKGROUP DATA_MDMPROD RESIZE DISK DATA1_0002;

 

–Rebalancié el diskgroup, por si las moscas:
ALTER DISKGROUP DATA1 REBALANCE POWER 5 WAIT;

Recorrí el comando original para ver el nivel de los diskgroups; el diskgroup DATA1 ya tiene un nivel más bajo, del 85%.

SELECT name nombre, state estado, type tipo, total_mb asignado, (total_mb – free_mb) usado, ROUND((1- (free_mb / total_mb))*100, 2)  pct_lleno
FROM v$asm_diskgroup
ORDER BY pct_full desc;
Nombre
Estado
Tipo
Asignado
Usado
Pct_lleno
DATA1
CONNECTED
EXTERN
286185
243257
85
DATA2
CONNECTED
EXTERN
204800
130554
64
REDO_A
CONNECTED
EXTERN
40964
2525
6
REDO_B
CONNECTED
EXTERN
40964
2525
6
FRA
CONNECTED
EXTERN
204800
4503
2
ADMIN
CONNECTED
EXTERN
20480
396
2

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s