Télefono:
91 626 61 20
Dirección:
C/ Copenhague 6. Edificio Al Andalus. Planta 2ª. Oficina 5. 28232. Las Rozas. Madrid
IBM Informix ofrece, a través de la SMI, una potente herramienta para monitorizar el gestor. Como ya vimos en un artículo anterior, la SMI es una serie de tablas que mantienen información sobre el gestor, permitiendo su acceso por medio de sentencias SQL.
En este artículo nos centraremos en dos de las vistas que ofrece el SMI y que permiten monitorizar los chunks y los dbspaces. La primera de ellas, syschunks, ofrece información sobre todos los chunks definidos gracias a los diferentes campos que tiene, incluyendo el espacio disponible, el estado del chunk o la ruta.
La segunda de las tablas de la que vamos a hablar, y que está muy relacionada con syschunks, es sysdbspaces. Esta tabla nos permite obtener datos como el número de dbspace, el tamaño de página o el tipo de dbspace que es.
Como vemos, ambas tablas nos ofrecen mucha información sobre los dbspaces y los chunks que las forman. Y al ser tablas que se pueden consultar y tratar por medio de consultas SQL o por medio de programación en PHP, disponemos de una potente forma de consultar el almacenamiento del gestor y tratar los datos.
Consultas de ejemplo
Vamos a obtener el tamaño de cada uno de los dbspaces con su espacio libre:
select name as dbspace,sum(chksize) as tamano,sum(nfree) as libre from sysdbspaces as d,syschunks as c where d.dbsnum=c.dbsnum group by name
Con esta consulta podemos saber si hay algún chunk caído y cuál es es cada dbspace:
select name as dbspace,chknum chunk from sysdbspaces as d,syschunks as c where d.dbsnum=c.dbsnum and c.is_offline=1
Con esta otra podemos sacar todos los dbspaces con una ocupación superior al 95%
select name as dbspace,sum(nfree)/sum(chksize)*100 from sysdbspaces as d,syschunks as c where d.dbsnum=c.dbsnum group by name having sum(nfree)/sum(chksize)*100<5
En detalle
Cada una de las tablas tiene muchos más campos que los comentados anteriormente y que ofrecen muchas posibilidades para realizar consultas más o menos complejas que nos presenten la información que deseamos de la mejor manera posible.
Syschunks está compuesta por los siguientes campos:
chknum: es el número del chunk
dbsnum: es el número del dbspace al que pertenece este chunk
nxchknum: número del siguiente chunk que pertenece al mismo dbspace
pagesize: tamaño de página del chunk
chksize: tamaño del chunk en páginas
offset: desplazamiento del chunk en su dispositivo o ruta
nfree: es el número de páginas libres en el chunk. Si el espacio definido es un sbspace o un dbspace, hay que multiplicar este valor por el tamaño de página básico (2K o 4K según el sistema). Si el espacio definido es un blobspace entonces hay que multiplicarlo por el tamaño de página de ese blobspace.
mdsize: tamaño en páginas del área de metadatos del chunk si pertenece a un sbspace. Si no pertenece es -1
udsize: Tamaño en páginas del área de datos del usuario que pertenecen a un smart blobspace. Si el chunk no perteneciera a un sbspace el valor será -1.
udfree: Número de páginas libres del área de datos del usuario si el chunk pertenece a un blobspace. Si no el valor es -1.
is_offline: 1 si el chunk está caído, 0 si no lo está
is_recovering: 1 si el chunk está siendo recuperado, 0 si no lo está
is_blobchunk: 1 si el chunk está en un blobspace, 0 si no lo está
is_sbchunk: 1 si el chunk está en un sbspace, 0 si no lo está
is_inconsistent: 1 si el chunk está realizando un restore lógico, 0 si no lo está
is_extendable: 1 si el chunk es expandible, 0 si no lo es
flags: los flag ofrecen información adicional sobre el estado del chunk. Hay 15 flags diferentes que nos indican situaciones como que el chunk ha sido renombrado o que no se han realizado checkpoints desde que se inicializó el chunk.
fname: ruta donde se encuentra el chunk
mfname: ruta donde se encuentra el chunk de mirror
moffset: offset del mirror
mis_offline: 1 si el mirror está caído, 0 si no lo está.
mis_recovering: 1 si el mirror está siendo recuperado, 0 si no lo está.
Mflags: igual que flags, pero para el mirror.
Sysdbspaces tiene los siguientes campos:
dbsnum: número del dbspace
name: nombre del dbspace
owner: ID del propietario del dspace
fchunk: número del primer chunk del dbspace
nchunks: número de chunks del dbspace
create_size: tamaño mínimo de un chunk que puede ser creado para este dbspace utilizando el Storage pool
extend_size: tamaño mínimo que puede extenderse un chunk de este dbspace, tanto manual como automáticamente
pagesize: tamaño de página
is_mirrored: 1 si el dbspace esta en mirror, 0 si no lo está
is_blobspace: 1 si es un blobspace, 0 si no lo es
is_sbspace: 1 si es un sbspace, 0 si no lo es
is_temp: 1 si es un dbspace temporal, 0 si no lo es
flags: Incluye datos adicionales que también pueden ser consultados.