miércoles, 26 de noviembre de 2014

Obtener el espacio libre y usado de grupos de discos Oracle ASM

Space used/free in ASM Disk Groups taking mirroring into account

He pasado mucho tiempo buscando como obtener el porcentaje espacio libre y
usado en los grupos de discos de ASM para poder definir alarmas cuando
el porcentaje del espacio usado llegue a un valor definido.


Muchos, si no es que todos, no toman en cuenta la redundancia de los grupos
de discos.


Es por eso que, al documentarme, consegui el objetivo.


Las siguientes son las consideraciones tomadas en cuenta para la escritura de la consulta:


Columnas de v$asm_diskgroup 11g R2


TYPE
Tipo de redundancia en el grupo de discos:
EXTERNA (EXTERN)
DOBLE (NORMAL)
TRIPLE (HIGH)


TOTAL_MB
Capacidad total del grupo de discos (en megabytes).


FREE_MB
Capacidad del grupo de discos sin utilizar (en megabytes).


REQUIRED_MIRROR_FREE_MB
Cantidad de espacio que se requiere para soportar la redundancia
del grupo de discos en caso de que uno o más discos fallen.
El total de espacio mostrado toma en cuenta el espejeo. Es decir, para
doble redundancia es igual al tamaño de un disco dentro del grupo de discos.
Si la redundancia es triple, este valor es igual a la suma del tamaño
de dos discos dentro del grupo de discos.
Este espacio no puede ser utilizado de forma "directa" para archivos y
de cierta manera se puede decir que es espacio reservado para garantizar
la redundancia de los datos. Por lo tanto, no es considerado como espacio
disponible para archivos.


USABLE_FILE_MB
Cantidad de espacio libre que puede ser utilizado libremente tomando en cuenta
la redundancia. Es decir, el espacio que está disponible para almacenar
archivos de base de datos, entre otros.
La columna USABLE_FILE_MB nos indica el total de espacio libre real que tenemos sin
importar el tipo de redundancia. Es decir, si nos muestra 100mb, entonces, sólo disponemos
de ese espacio libre REAL dentro del grupo de discos.


Tomando en cuenta los puntos anteriores, podemos decir que el espacio total real para
almacenar archivos es (TOTAL_MB-REQUIRED_MIRROR_FREE_MB)/TYPE.
Donde TYPE puede tener valores de 1,2,3 dependiendo de la redundancia configurada.


El espacio libre total en el grupo de discos es igual a USABLE_FILE_MB


El espacio utilizado dentro del grupo de discos es igual a ((TOTAL_MB-REQUIRED_MIRROR_FREE_MB)/TYPE)-USABLE_FILE_MB


Por lo anterior, la consulta para conocer el espacio libre, usado y los respectivos porcentajes es:


select
name
,total_mb
,free_mb
,round(free_mb*100/total_mb) free_pct
,used_mb
,round(used_mb*100/total_mb) used_pct
from (
select
NAME
,round((total_mb-required_mirror_free_mb)/(decode(type,'HIGH',3,'NORMAL',2,1))) total_mb
,(usable_file_mb) free_mb
,round(((total_mb-required_mirror_free_mb)/(decode(type,'HIGH',3,'NORMAL',2,1)))-usable_file_mb) used_mb
from v$asm_diskgroup
)
;




Ejemplo de salida:

NAME     TOTAL_MB    FREE_MB   FREE_PCT    USED_MB   USED_PCT
-------- ---------- ---------- ---------- ---------- ----------
DATA        2211840     389785         18    1822055         82
RECO        2939040    1113790         38    1825250         62
REDO         127187      94028         74      33159         26



Puedes ejecutar la consulta en ambientes de pruebas.



Referencias: https://docs.oracle.com/cd/B28359_01/server.111/b28320/dynviews_1023.htm#REFRN30171

Probado en Oracle 11g

No hay comentarios:

Publicar un comentario