viernes, 8 de marzo de 2013

Entradas de diario para tablas (2)

En la entrada anterior "Entradas de diario para tablas (1)" explique como tener nuestros archivos registrados por diario, para poder analizar los cambios en los datos de los archivos.

Con nuestros archivos ya registrados por diario, podemos investigar en sus entradas usando el mandato DSPJRN.

Con DSPJRN podemos visualizar las entradas que se van grabando en los receptores de diario. Estas entradas reflejan cambios en los datos (o archivos), ciclos de commit, rollback, etc.
Hay varios parámetros importante en este mandato:
  • JRN: Es el diario del cual vamos a recuperar entradas. Es recordar que, si queremos ver los cambios en tablas que están en diferentes diarios, habremos de ejecutar un DSPJRN por cada diario implicado.
  • FILE: Podemos indicar si solo queremos ver las entradas para una, o más, tablas. Si lo dejamos en blanco saldrán todas.
  • RCVRNG: Si los dejamos en blanco solo recupera entrada del receptor de diario al cual esta conectado en ese momento. Si queremos buscar en un receptor concreto hemos de especificar el nombre del receptor. Si hemos de buscar un rango de fecha/hora hay que que especificar *CURCHAIN, es un error muy habitual olvidarse de este parámetro :(
  • FROMENTLRG y TOENTLRG: Aquí introduciremos el numero de secuencia  de la entrada de diario de inicio/fin, es muy raro usar este parámetro ya que habitualmente desconocemos (de entrada) este número.
  • FROMTIME y TOTIME: Aquí introduciremos la fecha/hora de inicio y fin del rango donde buscaremos, cuando más acotemos menos tardara la búsqueda. Hay que calcularlo bien ya que no podemos paginar más atrás  del inicio que pongamos y tendremos que volver a repetir la búsqueda.
  • JRNCDE y ENTTYP: Si buscamos algún tipo especifico, o código, de entrada de diario, los introducimos aquí, a la practica solo se suele usar en ENTTYP. Por defecto es *ALL, que ya nos va bien.
  • JOB: Introducirlo aquí si sabemos el nombre del trabajo, o mejor su JobID, del cual queremos ver las entradas de diario que ha generado su ejecución. De esta forma acotamos la búsqueda y podemos analizar el comportamiento de un trabajo en base a los cambios en la base de datos.
  • CCIDLRG: Si conocemos el numero de secuencia del ciclo de commit, podemos introducirlo. De esta forma solo se mostraran las entradas de diario que se han generado bajo ese ciclo de commit, esta opción es mu potente ya que si los programas utilizan la lógica con ciclos de commit es fácil, para un programador ver 
  • OUTPUT: Para visualizar la información por pantalla, a archivo de spool o  volcar las entradas a un archivo (ver al final de este articulo).

Tipos de entrada de diario:
Los siguientes tipos de entradas de diario están relacionados con los cambios en los registros de un archivo: BR, DL, DR, IL, PT, PX, UB, UP, and UR, todas ellas con el código de diario R.

Si indicamos en el parámetro ENTTYP(*RCD), solo se nos mostraran estas entradas. Esto es útil si solo buscamos un cambio en los datos, pero nos omite las entradas de ciclos de compromiso (commit), código de diario C, o acciones con el miembro del archivo, código diario F, que también pueden ser importantes para analizar el comportamiento de un programa/trabajo.

La lista de los códigos, tipos de entradas de diario, y su significado los podéis ver en el IBM Information Center, o pulsando F1=Help sobre la columna correspondiente a la salida por pantalla del DSPJRN.

El mandato DSPJRN puede ser muy lento de ejecutar, por lo que se recomienda acotar al máximo el rango de fecha/hora de inicio y fin, indicar el trabajo, e incluso el ciclo de commit que queramos analizar, para mejorar su respuesta.
En el caso que tengamos que analizar un rango grande de tiempo, una buena opción es someter el DSPJRN utilizando la opción de la salida a fichero OUTPUT(*OUTFILE) e indicando el archivo donde grabara la salida, recomiendo usar el tipo de formato OUTFILFMT(*TYPE5) que es el que da mas información, la explicación a todos estos parámetros la tenéis en el propio mandato (pulsando F1 sobre el titulo del mandato o en la entrada de cada parámetro).
Después podemos usar el SQL, Query o la herramienta de acceso a datos que más os guste, para analizar dichas entradas. El fichero generado tiene varios campos, podéis ver la descripción de sus campos con el mandato DSPFFD FILE(QSYS/QADSPJR5) para el formato *TYPE5. 

Continua ...(3)
Publicar un comentario en la entrada