Download - Presentación - 1er Plática de Tips
![Page 1: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/1.jpg)
Tips y Técnicas
2009 Grupo ASSSI
System i
![Page 2: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/2.jpg)
Temario
Unidades.
1. Operación y Administración.2. Programación y Desarrollo de Aplicaciones.3. Base de Datos.4. Comunicaciones.5. Seguridad.6. Trivia.
![Page 3: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/3.jpg)
1. Operación y Administración
![Page 4: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/4.jpg)
Respaldar Archivos de Spool en V5R4
1. Operación y Administración
![Page 5: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/5.jpg)
1. Operación y Administración
Ahora que ya están en V5R4, o que pronto lo van a estar, no hay que olvidar algo de lo bueno.
¡ Ahora no se pierde ningún atributo al restaurarlos !
Nuevo parámetro adicionado a los comandos: SAVLIB, SAVOBJ, RSTLIB, RSTOBJ
SAVLIB LIB(PRUEBASLIB) DEV(TAP01) SPLFDTA(*ALL)
Este comando salva todos los archivos de spool de las output queues en la librería.
RSTLIB SAVLIB(PRUEBASLIB) DEV(TAP01) SPLFDTA(*NEW)
Este comando restaura todos los archivos de spool que no existan en las output queues.
![Page 6: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/6.jpg)
1. Operación y Administración
SAVOBJ OBJ(MIOUTQ) LIB(PRUEBSALIB) DEV(TAP01) OBJTYPE(*OUTQ) SPLFDTA(*ALL)
Este comando salva la output queue MIOUTQ en la librería PRUEBALIB con todos los archivos de spool que contenga.
RSTOBJ OBJ(MIOUTQ) SAVLIB(PRUEBASLIB) DEV(TAP01) OBJTYPE(*OUTQ) SPLFDTA(*NEW)
Este comando restaura los archivos de spool de la output queue MIOUTQ en la librería PRUEBALIB, que no existan en el sistema.
![Page 7: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/7.jpg)
Como Monitorear Problemas de i5/OS
1. Operación y Administración
![Page 8: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/8.jpg)
1. Operación y Administración
Mejores lugares para encontrar problemas:
• Cola de mensajes QSYSMSGQ.
• Cola de mensajes del Operador del Sistema QSYSOPR.
• Estadísticas de las Unidades de Disco.
• Entradas de los Trabajaos Activos.
• Colas de Trabajo y Colas de Salida.
Considerar alguna herramienta de monitoreo automático.
![Page 9: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/9.jpg)
1. Operación y Administración
Cola de Mensajes QSYSMSGQ
• Se debe crear en la librería QSYS.
CRTMSGQ MSGQ(QSYS/QSYSMSG) TEXT(‘Cola de mensajes opcional para recibir mensajes del sistema’)
• El sistema operativo envía de manera automática los problemas críticos del sistema.
Existen diferentes formas de trabajar con esta cola de mensajes:
1. Utilizar una herramienta de monitoreo.2. Crear un programa que lea los mensajes en QSYSMSGQ y realice cierta
acción cada vez que se reciba un mensaje.3. Monitorear QSYSMSGQ en modo ‘break’
CHGMSGQ MSGQ(QSYSMSGQ) DLVRY(*BREAK)
![Page 10: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/10.jpg)
1. Operación y Administración
Cola de Mensajes QSYSOPR
• Más compleja de monitorear ya que incluye tanto mensajes de rutina como mensajes críticos.
• Utilizar una herramienta de monitoreo o escribir un programa.
Recomendaciones para monitorear de manera automática:
1. Mensajes que requieren una respuesta tal como C, D, I o R.
Cuando un trabajo requiere de una contestación, no informa de esto para continuar.
2. Filtrar mensajes de consulta asociados con el usuario QSPLJOB.
Mensajes para tareas como cargar diferentes tipos en la impresora o alinear formatos.
![Page 11: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/11.jpg)
1. Operación y Administración
Cola de Mensajes QSYSOPR
3. Monitorear mensajes con un código de severidad de 80 o mayor.
Exceptuando los del usuario QSPLJOB.
Normalmente son mensajes que deben ser atendidos de inmediato.
4. Monitorear trabajos que no se completaron normalmente.
CPF1240 - Job &3/&2/&1 ended abnormallyCPC1234 - Job &3/&2/&1 ended from job queue by user &4CPC1125 - Job &3/&2/&1 was ended by user &4CPC1126 - Job &3/&2/&1 was ended by user &4
![Page 12: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/12.jpg)
1. Operación y Administración
Cola de Mensajes QSYSOPR
5. Monitorear condiciones serias de almacenamiento.
CPF0907 - Serious storage condition may exist. Press HELP.
• Cubrimos la mayoría de los problemas típicos.
• Iniciarse en el monitoreo automático.
• En la 2ª parte revisaremos otros mensajes a monitorear.
![Page 13: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/13.jpg)
1. Operación y Administración
Para la 2ª Parte
Analizaremos otras áreas críticas a monitorear, incluyendo:
• Cambios súbitos en la capacidad de disco utilizada.
• Objetos dañados.
• Problemas con trabajos activos en ejecución.
• Problemas con trabajos batch, incluyendo los de ejecución prolongada.
• Asegurarse que los subsistemas críticos están en ejecución.
• Asegurarse que los trabajos críticos de servidores están en ejecución.
• Problemas con impresiones de archivos de spool.
![Page 14: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/14.jpg)
2. Programación y Desarrollo de Aplicaciones
![Page 15: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/15.jpg)
Eludir Registros Bloqueados
2. Programación y Desarrollo de Aplicaciones
![Page 16: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/16.jpg)
2. Programación y Desarrollo de Aplicaciones
Poner especial atención en la operación READ en el segundo cálculo:
FSomeFile UF E K Disk Prefix(SR_)
D Forever S N inz(*On) D Open C Const(' ') D Closed C Const('Z')
/Free DoW Forever;
Read(E) SomeRec; If %Eof(SomeFile);
Leave; EndIf; If %Error();
Read(N) SomeRec; Iter;
EndIf; If SR_Status = Open and SR_Balance = *Zero;
Eval SR_Status = Closed; Update SomeRec %Fields(SR_Status);
EndIf; EndDo; Eval *InLR = *On; Return;
/End-Free
![Page 17: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/17.jpg)
• La operación READ incluye en extender E, indicándole al compilador RPG no detenerse si la operación termina en error.
• Después del READ y el chequeo usual por fin de archivo, utilizar la función %ERROR para atrapar los registros bloqueados.
• Si falla el READ, volver a leer, esta vez sin el lock.
• Esta segunda lectura permite mover el apuntador del archivo al siguiente registro.
• En este ejemplo no se revisó si el error se debió a un ‘lock’.
• Si se requiere, utilizar la función %STATUS, valor 1218.
2. Programación y Desarrollo de Aplicaciones
![Page 18: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/18.jpg)
La Eficiencia de Variables de Longitud Variable
2. Programación y Desarrollo de Aplicaciones
![Page 19: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/19.jpg)
• ¿Recuerdan los viejos tiempos en que los dinosaurios rondaban la tierra y la única forma de construir strings de datos en RPG involucraba jugar juegos ridículos con arreglos?
• O peor aún, utilizar combinaciones obscuras con operaciones MOVE.
• RPG IV introdujo funciones poderosas para manejar strings como %TRIM.
• Sin embargo, existen capacidades del lenguaje que pocos programadores utilizan.
• Una de las mejores es la de variables de caracter, de longitud variable.
• Existen varias ventajas de su utilización, pero en este ejemplo, únicamente nos enfocaremos a la de rendimiento.
2. Programación y Desarrollo de Aplicaciones
![Page 20: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/20.jpg)
D Spec – Mostrar como se definen y mostrar cada parte
D varStruct DS (A) D Campovar 256a Varying Inz
// Los siguiente campos se definen solamente para mostrar el layout de un campo variable
(B) D long 5i 0 Overlay(CampoVar)(C) D datos 256a Overlay(CampoVar: *Next)
• Tienen 2 componentes: La longitud actual representada por un entero de 2-bytes en las primeras 2 posiciones, seguido de los datos.
• Se diferencian por la Palabra Clave Varying (A).
• Codificar siempre la Palabra Clave Inz para asegurar que la longitud se asigne correctamente. Esto es crítico cuando se incorporan campos de longitud variable en estructuras de datos.
• ¿Por que?
2. Programación y Desarrollo de Aplicaciones
![Page 21: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/21.jpg)
D Spec – Mostrar como se definen y mostrar cada parte
D varStruct DS (A) D Campovar 256a Varying Inz
// Los siguiente campos se definen solamente para mostrar el layout de un campo variable
(B) D long 5i 0 Overlay(CampoVar)(C) D datos 256a Overlay(CampoVar: *Next)
• Porque por omisión, las estructuras de datos se inicializan con espacios (hex40), creando confusión al interpretarlo como la longitud del campo.
• En el ejemplo, (B) y (C), se definieron los 2 componentes como campos separados para mostrar el layout.
2. Programación y Desarrollo de Aplicaciones
![Page 22: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/22.jpg)
• Siempre que el contenido de un campo de longitud variable cambie, el compilador ajusta la longitud para reflejar el nuevo contenido.
• Siempre se debe utilizar %TRIMX cuando se carguen datos desde un campo de longitud fija.
• De lo contrario, los blancos restantes se contarán en la longitud del campo.
• Para saber la longitud del campo, utilizar la función %LEN() y obtener el valor actual.
2. Programación y Desarrollo de Aplicaciones
![Page 23: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/23.jpg)
• Vamos a ver como pueden mejorar notablemente el rendimiento.
• Observar los 2 siguientes códigos.
• Ambos construyen un string de 100 valores separados por comas.
• A primera vista, existe muy poca diferencia en la lógica, pero…
For i = 1 to 10;For j = 1 to 10;
fixedField = %Subst(baseString: i: j ); longFixed = %TrimR(longFixed) + ',' + fixedField;
EndFor;EndFor;
For i = 1 to 10;For j = 1 to 10;fixedField = %Subst(baseString: i: j ); longVarying += ',' + %TrimR(fixedField);
EndFor;EndFor;
2. Programación y Desarrollo de Aplicaciones
¿Creerían que el segundo puede ejecutar cientos, sino es que miles de veces más rápido?
![Page 24: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/24.jpg)
For i = 1 to 10;For j = 1 to 10;
fixedField = %Subst(baseString: i: j ); longFixed = %TrimR(longFixed) + ',' + fixedField;
EndFor;EndFor;
Pasos que se llevan a cabo:
• Descubrir donde se encuentra el último caracter sin espacio.
• Adicionar la coma en la siguiente posición.
• Adicionar el contenido de fixedField en la siguiente y subsecuentes posiciones.
• Si no se ha llenado longFixed, adicionar blancos hasta llenarlo.
Este proceso se repite para cada valor adicionado al string.
2. Programación y Desarrollo de Aplicaciones
![Page 25: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/25.jpg)
For i = 1 to 10;For j = 1 to 10;fixedField = %Subst(baseString: i: j ); longVarying += ',' + %TrimR(fixedField);
EndFor;EndFor;
Pasos que se llevan a cabo:
• Incrementar la longitud del campo en 1, y posicionar la coma en esa posición.
• Determinar la longitud del campo a adicionar (ej. Ignorar blancos).
• Copiar los datos al inicio de la longitud del campo, incrementando la longitud del campo + 1 posición.
¡ Mucho más sencillo ! Y la diferencia en velocidad puede ser impresionante.
2. Programación y Desarrollo de Aplicaciones
![Page 26: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/26.jpg)
For i = 1 to 10;For j = 1 to 10;
fixedField = %Subst(baseString: i: j ); longFixed = %TrimR(longFixed) + ',' + fixedField;
EndFor;EndFor;
2. Programación y Desarrollo de Aplicaciones
Otro punto a considerar es que este código (Primer ejemplo), es más eficiente que el utilizado normalmente:
longFixed = %TrimR(longFixed) + ',' + %TrimR(fixedField);
Al campo que se va a adicionar se le quitan los blancos, los cuales se adicionan nuevamente si el campo destino no se llena completamente.
longFixed = %TrimR(longFixed) + ','; longFixed = %TrimR(longFixed) + fixedField;
La separación de las 2 funciones, significa que los cálculos para la longitud efectiva del campo destino y el llenado subsecuente de blancos ocurre 2 veces por cada ‘loop’.
![Page 27: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/27.jpg)
For i = 1 to 10;For j = 1 to 10;
fixedField = %Subst(baseString: i: j );longFixed = %TrimR(longFixed) + ',' + fixedField;
EndFor;EndFor;
2. Programación y Desarrollo de Aplicaciones
Se utiliza simplemente para generar campos de diferentes longitudes (1 a 10 caracteres) para actuar como datos de prueba a ser adicionados al string destino.
![Page 28: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/28.jpg)
Enviar un Mensaje a Un Usuario Desde Un Programa.
2. Programación y Desarrollo de Aplicaciones
![Page 29: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/29.jpg)
2. Programación y Desarrollo de Aplicaciones
Utilizar: Call QEZSNDMSG
Especificar toda la información vía parámetros, para enviar un mensaje de interrupción desde un programa BATCH.
PGM PARM(&MSG &USERID)
DCL VAR(&MSGTYPE) TYPE(*CHAR) LEN(10)DCL VAR(&DELIVERY) TYPE(*CHAR) LEN(10)DCL VAR(&MSG) TYPE(*CHAR) LEN(32)DCL VAR(&MSGLEN) TYPE(*CHAR) LEN(4)DCL VAR(&USERID) TYPE(*CHAR) LEN(10)DCL VAR(&NUMUSERS) TYPE(*CHAR) LEN(4)DCL VAR(&MSGSNT) TYPE(*CHAR) LEN(4)DCL VAR(&FUNCREQ) TYPE(*CHAR) LEN(4)DCL VAR(&ERRORCODE) TYPE(*CHAR) LEN(8)DCL VAR(&DISPLAY) TYPE(*CHAR) LEN(1)DCL VAR(&MSGQ) TYPE(*CHAR) LEN(20)DCL VAR(&DSTTYPE) TYPE(*CHAR) LEN(4)DCL VAR(&CCSID) TYPE(*CHAR) LEN(4)
CHGVAR VAR(&MSGTYPE) VALUE('*INFO')CHGVAR VAR(&DELIVERY) VALUE('*BREAK')CHGVAR VAR(&DISPLAY) VALUE('N')CHGVAR VAR(&DSTTYPE) VALUE('*USR')
CHGVAR VAR(%BIN(&MSGLEN)) VALUE(32)CHGVAR VAR(%BIN(&NUMUSERS)) VALUE(1)CHGVAR VAR(%BIN(&MSGSNT)) VALUE(0)CHGVAR VAR(%BIN(&FUNCREQ)) VALUE(0)CHGVAR VAR(%BIN(&ERRORCODE 1 4)) VALUE(0)CHGVAR VAR(%BIN(&CCSID)) VALUE(0)
CALL PGM(QEZSNDMG) PARM(&MSGTYPE +&DELIVERY +&MSG +&MSGLEN +&USERID +&NUMUSERS +&MSGSNT +&FUNCREQ +&ERRORCODE +&DISPLAY +&MSGQ +&DSTTYPE +&CCSID )
ENDPGM
![Page 30: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/30.jpg)
3. Base de Datos
![Page 31: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/31.jpg)
Utilizar DRDA para ejecutar SQL en otro System i
3. Base de Datos
![Page 32: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/32.jpg)
• DRDA – Distribuited Relational Database Architecture.
• Para utilizar SQL en múltiples equipos o particiones.
• Puede ayudar en tareas administrativas.
• Muy útil para consultar datos en los tablas/archivos.
• Permite a un System i local, ejecutar sentencias SQL en un servidor remoto(incluye otras plataformas).
3. Base de Datos
![Page 33: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/33.jpg)
Configuración del Servidor Remoto
• DRDA utiliza el Servidor DDM (Distribuited Data Management) para recibir y procesar SQL.
1. Revisar si está en ejecución el Trabajo QRWTSRVR en el subsistema QSYSWRK.
2. Arrancar el Servidor;
STRTCPSVR SERVER(*DDM)
3. Base de Datos
![Page 34: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/34.jpg)
Configuración del Servidor Local
• Adicionar una entrada del Servidor Remoto en el directorio de bases de datos relacionales.
1. Utilizar el comando WRKRDBDIRE, y la opción 1 para adicionar una entrada al directorio.
Base de datos relacional = Nombre que hace referencia al System i Remoto.Localidad remota = Nombre de Host o Dirección IP.Tipo de conexión = *IP
2. Utilizar el comando ADDRDBDIRE:
ADDRDBDIRE RDB(Remoto) RMTLOCNAME(xx.xx.xx.xx *IP)
3. Base de Datos
![Page 35: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/35.jpg)
Utilizando DRDA
1. Arrancar SQL – STRSQL
2. Utilizar la sentencia CONNECT – Requiere el nombre especificado en el parámetro RDB, nombre de usuario y contraseña:
CONNECT TO Remoto USER xxxxxx USING ‘contraseña’
3. Una vez conectado satisfactoriamente, todas las sentencias SQL se ejecutarán con la base de datos remota, hasta finalizar la conexión.
4. Para conectarse entre servidores utilizar SET CONNECTION:
SET CONNECTION RemotoSET CONNECTION Local
5. Para saber a cual están conectados, utilizar la sentencia CONNECT.
6. Para desconectar, utilizar el comando DISCONNECT Remoto.
3. Base de Datos
![Page 36: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/36.jpg)
4. Comunicaciones
![Page 37: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/37.jpg)
NetServer
4. Comunicaciones
![Page 38: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/38.jpg)
• ¿ Qué es NetServer ?
4. Comunicaciones
• Servidor para compartir directorios e impresoras con clientes Windows.
• Permite el acceso remoto a los recursos de System i.
• System i Access no es necesario.
• Se recomienda utilizar el Navegador para configurar NetServer.
![Page 39: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/39.jpg)
Configuración de NetServer
1. Verificar que TCP/IP está activo y funcional.
2. Verificar el nombre correcto del Servidor NetServer.
Buscar en los mensajes del operador el mensaje CPIB680, el cual contiene el nombre.
3. Si no es el nombre correcto, cambiar de la siguiente manera:
CALL QZLSCHSN PARM (nombre-servidor nombre-dominio ‘texto’
X’00000000’)
4. Finalizar y arrancar el Servidor NetServer:
ENDTCPSVR *NETSERVER
STRTCPSVR *NETSERVER
4. Comunicaciones
![Page 40: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/40.jpg)
Configuración de NetServer
5. Revisar que se esté ejecutando el Trabajo QZLSSERVER en el subsistema QSERVER.
6. Utilizar el comando NETSTAT *CNN para verificar que existen las siguientes entradas:
** netbios>001:27:44 Listen
** netbios>000:00:01 *UDP
** netbios>000:00:00 *UDP
** netbios>000:30:57 Listen
** cifs>427:49:42 Listen
7. Revisar que se está ejecutando el trabajo QNPSERVD en el subsistema QSYSWRK:
STRHOSTSVR *NETPRT
4. Comunicaciones
![Page 41: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/41.jpg)
Compartir Archivos
Abrir el Navegador:
1. Seleccionar Red – Servidores.
2. Clic en TCP/IP para ver todos los servidores.
3. Clic derecho en NetServer y seleccionar Abrir.
4. Clic derecho en Objetos Compartidos y seleccionar Nuevo – Archivo.
5. Utilizar Propiedades Generales para configurar el nombre, descripción, accesos, número máximo de usuarios, etc.
4. Comunicaciones
![Page 42: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/42.jpg)
Configuración de la PC - Archivos
1. Verificar que se tiene conexión con el System i – Ping.
2. Seleccionar Inicio – Buscar – Equipos o Personas – Un equipo en la red –nombre del servidor netserver (\\as400\)
3. Doble clic para seleccionar los recursos compartidos.
4. Clic derecho en el directorio a compartir y seleccionar compartir y seguridad.
5. Seleccionar la letra del drive.
6. Seleccionar si se desea conectar al arrancar el equipo.
7. Especificar usuario y contraseña.
4. Comunicaciones
![Page 43: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/43.jpg)
Compartir Impresoras
Abrir el Navegador:
1. Seleccionar Red – Servidores.
2. Clic en TCP/IP para ver todos los servidores.
3. Clic derecho en NetServer y seleccionar Abrir.
4. Clic derecho en Objetos Compartidos y seleccionar Nuevo – Impresora.
5. Utilizar Propiedades Generales para configurar el nombre, descripción, cola de salida, driver de la impresora, etc.
4. Comunicaciones
![Page 44: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/44.jpg)
Configuración de la PC - Impresoras
1. Verificar que se tiene conexión con el System i – Ping.
2. Seleccionar Inicio – Buscar – Equipos o Personas – Un equipo en la red –nombre del servidor netserver.
3. Doble click para seleccionar los recursos compartidos.
4. Click derecho en la impresora a compartir.
5. Instalar el driver de la impresora – AFP y SCS.
www.printers.ibm.com
Qca400\Win32\Install\Printer
4. Comunicaciones
![Page 45: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/45.jpg)
5. Seguridad
![Page 46: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/46.jpg)
Dando a Los Auditores Lo Que Solicitan
5. Seguridad
![Page 47: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/47.jpg)
Mostrar información que comúnmente solicitan los molestos auditores.
1. Contraseñas por Omisión.
• Lista de todos los usuarios que utilizan la contraseña por omisión.• Ocurren cuando son iguales al ID de Usuario.• Son muy comunes ya que el sistema operativo la asigna al crear el ID de
Usuario.
Ejecutar el comando:
ANZDFTPWD ACTION(*NONE)
Crea un archivo de spool QPSECPWD con la lista de todos los usuarios con la contraseña por omisión.
Puede deshabilitar los usuarios.
Lo mejor es que también genera un archivo físico QASECPWD en QUSRSYS.
5. Seguridad
![Page 48: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/48.jpg)
2. Parámetros de Configuración de las Contraseñas.
Se puede obtener fácilmente con el Navegador, y crear un documento de Word:
a) Abrir un documento de Word.
b) Abrir el navegador y seguir la ruta Seguridad – Políticas – Contraseñas. Esta ventana contiene 3 pestaña: General, Validación y Políticas de Expiración.
c) Clic en General. Se muestra el nivel de seguridad de contraseñas utilizado en el sistema.
d) Presionar Alt-PrtSc para copiar la ventana completa al Clipboard de Windows.
e) En el documento de Word, seleccionar Paste.
f) Repetir los pasos d y e para las pestañas Validación y Políticas de Expiración.
5. Seguridad
![Page 49: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/49.jpg)
3. Información de los Perfiles de Usuario.
Información referente a autorizaciones especiales asignadas a los usuarios.
a) Crear un archivo de información de perfiles de usuario (AIPU)
b) Fácil de crear:
DSPUSRPRF USRPRF(*ALL) TYPE(*BASIC) OUTPUT(*OUTFILE) OUTFILE(lib/nombre_archivo)
c) En mi experiencia lo que más les interesa son los perfiles de usuario con alguna de las siguientes clases o autorizaciones especiales:
• Clases de usuario *SECOFR (Oficial de Seguridad) o *PGMR (Programador).• Autorizaciones especiales *ALLOBJ (All Objects) o *SECADM (Administrador
deSeguridad).
• Usuarios con acceso a línea de comandos.
5. Seguridad
![Page 50: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/50.jpg)
d) Para utilizar esta información se puede desarrollar un programa, ligar el archivo a una base de datos de Access, o utilizar una de las 3 siguientes sentencias SQL:
• Usuarios con Clases *SECOFR o *PGMR:
SELECT * FROM lib/nombre_archivo WHERE UPUSCL = '*SECOFR' OR UPUSCL = '*PGMR‘
• Usuarios con autorizaciones especiales *ALLOBJ y/o *SECADM:
SELECT * FROM lib/nombre_archivo WHERE UPSPAU LIKE '%ALLOBJ%' OR UPSPAU LIKE '%SECADM%‘
• Usuarios con autorización a línea de comandos:
SELECT * FROM LIB/FILENAME WHERE UPLTCP = '*NO‘
e) La parte más difícil es identificar cuales campos del archivo representan la parte del perfil de usuario. Utilizar:
DSPFFD FILE(lib/nombre_archivo) OUTPUT(*PRINT)
5. Seguridad
![Page 51: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/51.jpg)
4. Autorización para ciertos comandos.
• SBMJOB – Submitir trabajos.
• RLSJOB – Liberar trabajos.
• CHGJOB – Cambiar trabajos.
• ADDJOBSCDE – Adicionar trabajos al Scheduler.
5. Seguridad
Usuarios con acceso a comandos críticos del sistema, para trabajar con ‘jobs’, o el scheduler, incluyendo:
Estos comandos indican quien puede ejecutar o manipular trabajos en el sistema.Se puede imprimir la lista de usuarios autorizados y su autorización específica:
DSPOBJAUT OBJ(nombre_comando) OBJTYPE(*CMD) OUTPUT(*PRINT)
![Page 52: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/52.jpg)
5. Seguridad
Los auditores quieren todo… y más.
Una cosa es segura con los auditores, no importa lo que les entreguen, siempre quieren más. Pero si saben donde buscar la información, será sencillo actualizarla
cuando los auditores la requieran.
![Page 53: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/53.jpg)
6. Trivia
![Page 54: Presentación - 1er Plática de Tips](https://reader031.vdocumento.com/reader031/viewer/2022012315/5571f27f49795947648ca3dc/html5/thumbnails/54.jpg)
Base de Datos – Cierto o Falso
1. Join dinámico significa que el criterio no se aplica hasta que la consulta es ejecutada.
2. Los triggers de SQL requieren que el journaling esté activo.
3. Existe una diferencia significativa entre DB2/400 y DB2 UDB para System i.
4. Es posible cambiar la longitud de un campo de un archivo físico sin recompilarlo.
5. Las vistas de SQL no pueden ser indexadas.
6. Múltiples archivos planos pueden ser copiados en un archivo de DB2utilizando el ‘Wildcard’ (*) en el comando CPYFRMSTMF.
7. El número de renglón no es soportado en DB2, y no existe forma de darle vuelta.
8. “Índice Interno” significa que si DB2 genera un índice para forzar una restricción referencial, el índice se oculta al usuario/administrador.
6. Trivia