A veces nos puede interesar auditar el uso o eliminación de un objeto por varias razones:
- Investigar quien, cuando y que lo usa/elimina un objeto.
- Investigar si podemos eliminar un objeto sin uso.
- Análisis el funcionamiento de una aplicación nuestra, o de terceros.
- Etc...
USO DE UN OBJETO
Para ello debemos cambiar el valor de auditoria del objeto, que por omision tendrá el valor indicado en los atributos de la biblioteca, utilizar mandato DSPLIBD LIB(MYLIB) y fijarse en parámetro "Create object auditing" si tiene el valor *SYSVAL habremos de ver el valor de sistema QCRTOBJAUD (utilizar DSPSYSVAL SYSVAL(QCRTOBJAUD) para verlo) que habitualmente tiene el valor *CHANGE, o sea solo audita cambios en el objeto, no su utilización.
Para auditar el uso de un objeto, por ejemplo del programa MYLIB/MYPGM, debemos cambiar el valor de auditoria del objeto, antes documentaremos el valor actual de auditoria para el objeto a cambiar:
DSPOBJD OBJ(MYLIB/MYPGM) OBJTYPE(*PGM) DETAIL(*FULL)
Pulsar AvPág y ver parámetro "Object auditing value", usualmente *CHANGE.
Después ya podemos activar la auditoria de lecturas para el objeto, para ello ejecutar:
CHGOBJAUD OBJ(MYLIB/MYPGM) OBJTYPE(*PGM) OBJAUD(*ALL)
A partir de este instante cualquier acceso al programa MYLIB/MYPGM quedara registrado en el diario de auditoria del sistema (QAUDJRN).
Cuando queramos analizar el uso de ese programa deberemos acceder a los datos del diario de auditoria, para ello lo más recomendable es someter el comando DSPJRN para realizar un volcado de los datos del diario a un archivo temporal y posteriormente realizar un query sobre ese fichero:
Someter:
DSPJRN JRN(QAUDJRN) RCVRNG(*CURCHAIN) FROMTIME(dia/hora_inicio) TOTIME(dia/hora_fin) ENTTYP(ZR) OUTPUT(*OUTFILE) OUTFILFMT(*TYPE1) OUTFILE(MYLIBTEMP/DSPJRNUSE)
Después con SQL, por ejemplo, podemos buscar las utilizaciones del objeto:
SELECT * FROM TEMP/DSPJRN WHERE JOESD LIKE '%MYPGM%'
Dentro de los campos, que se nos mostraran, tendremos algunos claves para nuestra investigación:
Campo Descripción
JOCODE Código de auditoría
JOENTT Tipo entrada de auditoria
JODATE Fecha de la entrada
JOENTT Tipo entrada de auditoria
JODATE Fecha de la entrada
JOTIME Hora de la entrada
JOJOB Nombre del trabajo
JOUSER Nombre del usuario
JONBR Numero del trabajo
JOPGM Nombre del programa que ha realizado el cambio
JOJOB Nombre del trabajo
JOUSER Nombre del usuario
JONBR Numero del trabajo
JOPGM Nombre del programa que ha realizado el cambio
JOOBJ Nombre del objeto cambiado
JOLIB Biblioteca del objeto cambiado
JOMBR Nombre del miembro (si es un archivo)
JOESD Datos de la entrada (longitud variable JOLIB Biblioteca del objeto cambiado
JOMBR Nombre del miembro (si es un archivo)
Una vez analizado el uso del objeto, es recomendable dejar el valor de auditoria al valor anterior, para evitar demasiada sobrecarga en el sistema al tener que guardar en el diario cada vez que se utiliza un objeto, así como el crecimiento desmesurado de los receptores asociados del diario
También es recomendable no dejarlo activado el valor para muchos objetos al mismo tiempo, por las mismas razones.
SUPRESIÓN DE UN OBJETO
Si lo que buscamos es quien y cuando se ha eliminado un objeto, debemos volcar a fichero unos códigos de diario de auditoria diferentes:
DSPJRN JRN(QAUDJRN) RCVRNG(*CURCHAIN) FROMTIME(dia/hora inicio) TOTIME(dia/hora fin) JRNCDE((T)) ENTTYP(DO) OUTPUT(*OUTFILE) OUTFILFMT(*TYPE1) OUTFILE(MYLIBTEMP/DSPJRNDLT)
Después utilizaremos la misma consulta SQL que en el caso anterior.
Nota1: Si queremos la fecha en formato TIMESTAMP utilizar OUTFILFMT(*TYPE3)
Nota3: Podemos ver el significado de los codigos de auditoria en el IBM i Information Center.
Nota2: Tener en cuanta el periodo de latencia en el sistema de los receptores de los diarios de auditoria, ya que es habitual su borrado periódico para evitar ocupar demasiado espacio en disco
No hay comentarios:
Publicar un comentario