Consulte también los problemas conocidos del depurador de rutinas para obtener actualizaciones.
El depurador de rutinas PL/SQL no admite variables globales. La vista Variable no muestra las variables globales utilizadas en un procedimiento almacenado PL/SQL, una función o un paquete PL/SQL.
Si está depurando una rutina en una base de datos DB2 local, puede recibir el número de error SQL1224N:
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N No ha podido iniciarse un agente de bases de datos para dar servicio a una petición, o ha finalizado como resultado del cierre del sistema de bases de datos o de un mandato de forzado. SQLSTATE=55032
Esto se debe a un problema en el kernel Linux® (Linux kernel Bugzilla bug #351). Las instrucciones siguientes indican una solución que utiliza el método de conexión TCPIP de DB2 (como bucle de retorno) en lugar de CLI (Interfaz a nivel de llamada). Con este procedimiento, el depurador utilizará el mismo alias de base de datos que antes:
En los pasos del 2 al 7 debe iniciar la sesión como propietario de instancia de DB2.
db2set db2comm
Si la salida no contiene la palabra clave tcpip debe entrar el mandato siguiente para actualizar la variable de registro db2comm a fin de que incluya tcpip:
db2set db2comm=<nombres de protocolo existentes>,tcpip
La variable de registro db2comm determina el gestor de conexiones del protocolo que se habilitará cuando se inicie el gestor de bases de datos. Puede establecer esta variable para varios protocolos de comunicaciones separando las palabras clave mediante comas.
Es necesario volver a emitir el mandato db2start para poder iniciar los gestores de conexiones para los protocolos especificados en el parámetro de registro db2comm. Dado que reiniciaremos DB2 en el paso 7, no es necesario hacerlo ahora.
.Para comprobar el valor actual de SVCENAME, especifique el siguiente mandato:
db2 get dbm cfg | grep -i svcename
Si necesita actualizar el valor de SVCENAME, especifique el siguiente mandato:
db2 update dbm cfg using svcename <nombre_servicio_conexiones>
donde el <nombre_servicio_conexiones> es sensible a mayúsculas y minúsculas y debe coincidir con el nombre del puerto de servicio que ha indicado en /etc/services (por ejemplo, db2 update dbm cfg using svcename db2c_db2inst1).
La actualización de la configuración del gestor de bases de datos no entrará en vigor hasta que se emita el próximo mandato db2start. Realizaremos esta acción en el paso 7.
db2 catalog tcpip node <nombrenodo> remote <nombre_de_host> server <nombre_servicio_conexiones>
donde:
Para comprobar que el mandato catalog ha funcionado correctamente, emita el siguiente mandato:
db2 list node directory
Ejemplo de salida de este mandato (se han eliminado las líneas en blanco a efectos de legibilidad):
Directorio de nodos Número de entradas del directorio = 1 Entrada 1 nodo: Nombre nodo = MYNODE Comentario = Protocolo = TCPIP Nombre del host = 127.0.0.1 Nombre servicio = db2c_db2inst1
por ejemplo:db2 catalog db WAS as WASLOOP db2 uncatalog db WAS db2 catalog db WASLOOP as WAS at node MYNODE
Notas:
Ejemplo de salida para los pasos del 5a al 5c
Antes del paso 5a, ya se ha creado una base de datos local denominada WAS. La salida del mandato db2 list db directory es similar al mensaje siguiente:
Directorio de bases de datos del sistema Número de entradas del directorio = 1 Entrada 1 en base de datos: Alias de base de datos = WAS Nombre de base de datos = WAS Directorio de base de datos local = /home/ctsui Nivel de release de base de datos = 9.00 Comentario = Tipo de entrada de directorio = Indirecto Número de nodo de catálogo = 0
Después del paso 5a, la salida del mandato db2 list db directory es similar al mensaje siguiente:
Directorio de bases de datos del sistema Número de entradas del directorio = 2 Entrada 1 en base de datos: Alias de base de datos = WAS Nombre de base de datos = WAS Directorio de base de datos local = /home/ctsui Nivel de release de base de datos = 9.00 Comentario = Tipo de entrada de directorio = Indirecto Número de nodo de catálogo = 0 Entrada 2 en base de datos: Alias de base de datos = WASLOOP Nombre de base de datos = WAS Directorio de base de datos local = /home/ctsui Nivel de release de base de datos = 9.00 Comentario = Tipo de entrada de directorio = Indirecto Número de nodo de catálogo = 0
Después del paso 5b, la salida del mandato db2 list db directory es similar al mensaje siguiente:
Directorio de bases de datos del sistema Número de entradas del directorio = 1 Entrada 1 en base de datos: Alias de base de datos = WASLOOP Nombre de base de datos = WAS Directorio de base de datos local = /home/ctsui Nivel de release de base de datos = 9.00 Comentario = Tipo de entrada de directorio = Indirecto Número de nodo de catálogo = 0
Después del paso 5c, la salida del mandato db2 list db directory es similar al mensaje siguiente:
Directorio de bases de datos del sistema Número de entradas del directorio = 2 Entrada 1 en base de datos: Alias de base de datos = WAS Nombre de base de datos = WASLOOP Nombre nodo = MYNODE Nivel de release de base de datos = 9.00 Comentario = Tipo de entrada de directorio = Remota Número de nodo de catálogo = -1 Entrada 2 en base de datos: Alias de base de datos = WASLOOP Nombre de base de datos = WAS Directorio de base de datos local = /home/ctsui Nivel de release de base de datos = 9.00 Comentario = Tipo de entrada de directorio = Indirecto Número de nodo de catálogo = 0
Para comprobar que el mandato catalog db ha funcionado correctamente, emita los dos mandatos siguientes (y consulte la salida de ejemplo siguiente):
db2 connect to wasloop db2 connect to was
donde db2 connect to wasloop imprimirá la información de conexión y db2 connect to was proporcionará SQL1403N.
Ejemplo de salida de db2 connect to wasloop:
Información de la conexión de base de datos Directorio de bases de datos del sistema Servidor bases datos = DB2/6000 6.1.0 ID autorización SQL = CTSUI Alias base datos local = WASLOOP
Ejemplo de salida de db2 connect to was:
Información de la conexión de base de datos Directorio de bases de datos del sistema Servidor bases datos = DB2/6000 6.1.0 ID autorización SQL = CTSUI Alias base datos local = WAS
db2 update dbm cfg using authentication client
Para comprobar que el mandato ha funcionado correctamente, visualice el valor nuevo con el siguiente mandato:
db2 get dbm cfg
Ejemplo de salida:
.... Autenticación gestor bases de datos (AUTHENTICATION) = CLIENT ....
db2stop db2start
Nota: puede que sea necesario utilizar db2stop force para cerrar todas las conexiones de base de datos activas.
por ejemplo:db2 attach to MINODO user idusuario using micontraseña db2 drop db WAS