lunes, 25 de octubre de 2010

Cambio hora verano/invierno

Como cada año el próximo fin de semana se realiza el cambio de hora al horario de invierno (-01:00 GMT)

Para que nuestros sistemas AS400 no se despisten y realicen el cambio de hora automáticamente revisar el articulo publicado el año pasado:

viernes, 22 de octubre de 2010

Averiguar quien elimino un archivo de spool

Algunas veces todos hemos tenido la necesidad de averiguar que usuario ha eliminado un archivo de spool de un trabajo. Esto lo podremos hacer si tenemos activada la auditoria del sistema (valor QAUDCTL) que debe contener *AUDLVL. También debe estar especificado *SPLFDTA, en  el  valor de sistema QAUDLVL (ver Nota2).

Una vez comprobado, y activado, lo anterior, ya podemos recuperar las entradas del diario de auditoria que se correspondan con las operaciones en el spool.
Para ello lo mas recomendable es someter el mandato DSPJRN  (suele tardar bastante) indicando día/hora  de inicio y día/hora fin, del rango de tiempo donde queremos investigar la desaparición del spool, e indicando que solo queremos volcar las entradas de diario T-SF:
SBMJOB CMD(DSPJRN JRN(QAUDJRN) RCVRNG(*CURCHAIN) FROMTIME(ddmmyy hhmmss) TOTIME(ddmmyy hhmmss) JRNCDE((T)) ENTTYP(SF) OUTPUT(*OUTFILE) OUTFILFMT(*TYPE5) OUTFILE(MyTmpLib/TmpDspJrn) ENTDTALEN(*CALC)) JOB(DSPJRN)

El trabajo DSPJRN nos generará un archivo con las entradas relacionadas, en el ejemplo MyTmpLib/TmpDspJrn. Ahora podremos ejecutar una consulta, por ejemplo con SQL, indicando el nombre del archivo de spool y el nombre del trabajo de donde ha desaparecido el spool, en el ejemplo "QSYSPRT" y "MyJob":
SELECT * FROM MyTmpLib/TmpDspJrn WHERE JOESD LIKE 'D%' AND JOESD LIKE '%QSYSPRT%' AND JOESD LIKE '%MyJob%'

Y "voila", en la columna JOB NAME y USER NAME, ya tenemos el usuario que ha eliminado el archivo de spool, así como la hora y desde que programa, si es QCMD indica que se eliminó desde la linea de mandatos, o con alguna opción de menú. Cuando eliminamos un spool, el campo JOESD empieza con el carácter D.
Nota1: El OUTFILFMT(*TYPE5) es válido para la versión V5R2 o superiores. Para versiones anteriores podemos utilizar el *TYPE4, pero entonces no podemos especificar el nombre de trabajo (MyJob), con lo cual pueden aparecer más entradas que correspondan a eliminaciones de archivo de spool, pero en varios trabajos. Si no tenemos muchos puede que no sea un problema, pero si aparecen muchos, sera difícil discernir cual es el que buscamos, aunque hay otros valores que nos pueden ayudar, como puede ser la cola de salida que también aparece en el campo JOESD.

Nota2: Para activar la seguridad del sistema leer la entrada Configurar seguridad del sistema. Para saber más sobre la auditoria del sistema, Help400 publicó , hace ya unos años, una utilidad que puede ir bien para entender mejor como funciona.

miércoles, 6 de octubre de 2010

Tabla de trabajos

El mandato DSPSYSSTS nos  muestra una pantalla con el estado del sistema.
Uno de los valores que hemos de tener en cuenta ,en sistemas con muchos trabajos, es "Jobs in system" que nos indica cuantos JobID tiene el sistema, esto incluye cualquier trabajo que este en cola de trabajos, en estado activo o en cola de salida.

Existe un valor de sistema que nos indica cual es el numero máximo de trabajos en el sistema : DSPSYSVAL SYSVAL(QMAXJOB)

El sistema usa unas tablas para controlar los trabajos que están en el sistema, cada una de ellas puede contener 16352 entradas, con los JobId de los trabajos, que están en el sistema.

Con el mandato DSPJOBTBL podemos visualizar el estado de dichas tablas.

Es importante tener activada la limpieza del sistema (ver entrada Limpiar automaticamente mensajes, joblogs, dumps, ...) para evitar llegar a llenar las tablas de trabajos y tengamos una parada anormal del sistema.

viernes, 17 de septiembre de 2010

Recuperar trabajos de un usuario

La utilidad RTVUSRJOB nos sirve para recuperar los trabajos de los usuarios, pudiendo seleccionar por nombre de usuario, nombre de trabajo (incluido genéricos), estado del trabajo y tipo de trabajo (Batch, Interactivo o todos).
La salida del mandato puede ser a archivo de spool o directamente a fichero, no se contempla la salida a pantalla porque ya existe el mandato WRKUSRJOB que realiza dicha función.
Pulsando F1 podemos acceder a la ayuda del mandato.

pd: También esta disponible en el Grupo Recursos AS400 de IBM MydW para su descarga.

jueves, 2 de septiembre de 2010

Limpiar automaticamente mensajes, joblogs, dumps, ...

Una de las tareas básicas de cualquier administrador de un sistema es mantener los logs del sistema. Nuestro AS400 incluye una funcionalidad para realizar estas tareas, de una forma sencilla y automática.

Para ello solo hemos de ejecutar el mandato GO MENU(CLEANUP) que nos mostrará un menú con las siguientes opciones:
 Primero definiremos que acciones y periodos queremos limpiar, para ello seleccionamos la opción 1, que nos mostrará la siguiente pantalla:
En esta pantalla definimos los periodos de retención de los mensajes, diarios y logs del sistema, así como la hora de ejecución diaria de la limpieza. Pulsar Intro para guardar los cambios y otra vez para salir. 
Nota1: La limpieza de joblogs la realiza solo de los listados ubicados en  las colas de salida QUSRSYS/QEZJOBLOG y QUSRSYS/QEZDEBUG.
Nota2: Para que los listados de los joblogs, dumps y vuelcos de servicio vayan a parar a las colas QEZ* correspondientes, ejecutar los siguientes mandatos:
  CHGPRTF    FILE(*ALL/QPJOBLOG) OUTQ(*LIBL/QEZJOBLOG)
  CHGPRTF    FILE(*ALL/QPPGMDMP) OUTQ(*LIBL/QEZDEBUG)
  CHGPRTF    FILE(*ALL/QPSRVDMP) OUTQ(*LIBL/QEZDEBUG)
A continuación solo nos queda activar la limpieza automática seleccionando la opción 2.

Nota3:  Para que se ejecute la limpieza diaria debe estar activo el Planificador de trabajos del sistema. Trabajo QSYSSCD en subsistema QCTL o QBASE, este trabajo somete el trabajo QCLNUSRMSG, así como los trabajos planificados.

También podemos lanzar la limpieza automática inmediatamente con la opción 3, o cancelar su ejecución con la opción 4.