Diagnóstico de problemas con IBM Data Server Driver para JDBC y SQLJ
El IBM® Data Server Driver for JDBC and SQLJ incluye herramientas de diagnóstico y rastros para diagnosticar problemas durante la conexión y la ejecución de sentencias SQL.
Prueba de la conexión de servidor de datos
Ejecute el programa de utilidad DB2Jcc para probar una conexión con un servidor de datos. Usted proporciona a DB2Jcc la URL para el servidor de datos, para una conectividad de tipo 4 IBM Data Server Driver for JDBC and SQLJ o una conectividad de tipo 2 IBM Data Server Driver for JDBC and SQLJ. DB2Jcc intenta conectar con el servidor de datos y ejecutar una sentencia de SQL y un método DatabaseMetaData. Si falla la conexión o la ejecución de sentencias, DB2Jcc proporciona información de diagnóstico sobre el error.
Recogida de datos de rastreo de JDBC
Utilice uno de los procedimientos siguientes para iniciar el rastreo:
Procedimiento 1 : Para la conectividad de tipo 2 IBM Data Server Driver for JDBC and SQLJ, el método recomendado es iniciar el rastreo configurando la propiedad db2.jcc.override.traceFile y la propiedad db2.jcc.t2zosTraceFile en el IBM Data Server Driver for JDBC and SQLJ archivo de propiedades de configuración.
Puede establecer las propiedades db2.jcc.tracePolling y db2.jcc.tracePollingInterval antes de iniciar el controlador que le permita cambiar las propiedades de rastreo de configuración global mientras el controlador esté en ejecución.
Procedimiento 2: Para IBM Data Server Driver for JDBC and SQLJ conectividad de tipo 4, , el método recomendado es iniciar el seguimiento configurando la propiedad db2.jcc.override.traceFile o la propiedad db2.jcc.override.traceDirectory en el archivo de propiedades de configuración IBM Data Server Driver for JDBC and SQLJ . Puede establecer las propiedades db2.jcc.tracePolling y db2.jcc.tracePollingInterval antes de iniciar el controlador que le permita cambiar las propiedades de rastreo de configuración global mientras el controlador esté en ejecución.
- Invoque el método DB2BaseDataSource.setTraceLevel para determinar el tipo de rastreo que necesita. El nivel de rastreo por omisión es
TRACE_ALL. Consulte las propiedades de Common IBM Data Server Driver for JDBC and SQLJ para todos los productos de bases de datos compatibles para obtener una lista de configuraciones de traceLevel. Vea Propiedades para el IBM Data Server Driver for JDBC and SQLJ para obtener información sobre cómo especificar más de un tipo de trazado. - Invoque el método DB2BaseDataSource.setJccLogWriter para especificar el destino del rastreo y activar el rastreo.
Procedimiento 4:
Si utiliza la interfaz DataSource para conectar con una
fuente de datos, invoque el método
javax.sql.DataSource.setLogWriter para activar el rastreo. Con este método, TRACE_ALL es el único
nivel de rastreo disponible.
- Invoque el método DriverManager.getConnection con la
propiedad
traceLevelestablecida en el parámetro info o en el parámetro url para el tipo de rastreo que necesita. El nivel de rastreo por omisión esTRACE_ALL. Consulte las propiedades de Common IBM Data Server Driver for JDBC and SQLJ para todos los productos de bases de datos compatibles para obtener una lista de configuraciones de traceLevel. Vea Propiedades para el IBM Data Server Driver for JDBC and SQLJ para obtener información sobre cómo especificar más de un tipo de trazado. - Invoque el método DriverManager.setLogWriter para especificar el destino del rastreo y activar el rastreo.
Después de que se establezca una conexión, puede desactivar el
rastreo o volverlo a activar, cambiar el destino del rastreo o
cambiar el nivel de rastreo mediante el método
DB2Connection.setJccLogWriter. Para desactivar el rastreo,
establezca el valor de logWriter en null.
La propiedad logWriter es un objeto de tipo java.io.PrintWriter. Si la aplicación no puede manejar objetos
java.io.PrintWriter, puede utilizar la propiedad
traceFile para especificar el destino de la salida del
rastreo. Para utilizar la propiedad traceFile, establezca la
propiedad logWriter en null y establezca la
propiedad traceFile con el nombre del archivo en que el
controlador graba los datos del rastreo. Se tiene que poder grabar en este
archivo y en el directorio en que reside. Si el archivo ya existe, el
controlador lo sobregraba.
traceFile y traceLevel como parte de la URL al cargar el controlador. Por ejemplo:String url = "jdbc:db2://sysmvs1.stl.ibm.com:5021/san_jose" +
":traceFile=/u/db2p/jcctrace;" +
"traceLevel=" + com.ibm.db2.jcc.DB2BaseDataSource.TRACE_DRDA_FLOWS + ";";
Procedimiento 6 : Utilizar métodos de comunicación ( DB2TraceManager ). La clase DB2TraceManager proporciona la capacidad para suspender y reanudar el rastreo de cualquier tipo de programa de anotaciones cronológicas.
Ejemplo de inicio de un rastreo utilizando propiedades de configuración : Para un ejemplo completo del uso de parámetros de configuración para recopilar datos de rastreo, consulte Ejemplos de uso de propiedades de configuración para iniciar un rastreo de JDBC.
Ejemplo de programa de rastreo : Para ver un ejemplo completo de un programa de rastreo bajo el IBM Data Server Driver for JDBC and SQLJ, consulte Ejemplo de un programa de rastreo bajo el IBM Data Server Driver for JDBC and SQLJ.
Recogida de datos de rastreo de SQLJ durante la personalización o vinculación
Para recopilar datos de rastreo con el fin de diagnosticar problemas durante el proceso de personalización o vinculación de SQLJ, especifique las opciones -tracelevel y -tracefile cuando ejecute db2sqljcustomize o el programa de utilidad de vinculación db2sqljbind.
Recopilar datos de diagnóstico para una conexión a un Db2 servidor de datos o grupo de intercambio de datos
jccDump_timestamp_random-number_i.log- la marca de tiempo es la marca de tiempo en la que se escriben los datos.
- número aleatorio es un número entero positivo generado aleatoriamente.
- i es 0 o 1.
El tamaño máximo del archivo es de aproximadamente 2MB. Cuando una aplicación graba el primer registro de rastreo, el controlador crea un archivo con i = 0. A continuación, el controlador graba datos de rastreo en el archivo. Cuando el tamaño del archivo alcanza aproximadamente 2MB, el controlador cambia el nombre del archivo. El nuevo nombre es el mismo que el nombre original, excepto que ahora la i es 1. El controlador continúa este ciclo hasta que se completa la aplicación. Cada entrada de volcado dentro del archivo incluye la marca de tiempo, el nombre de la JVM, el ID de hilo, el ID de origen de datos y los detalles del ID de conexión, para que pueda localizar el origen de la excepción.
- El tamaño máximo de archivo no es exactamente 2MB. Puede superar los 2 MB, de modo que la última entrada de volcado se registra completamente en un único archivo para facilitar su lectura.
- La desactivación de una JVM terminando el proceso Java puede crear archivos .lck en el sistema de archivos. Estos archivos de registro de Internet ( .lck ) deben eliminarse manualmente.
Especificación de los datos que se recopilarán para un servidor de datos : Especifique los códigos de error SQL o los códigos de advertencia SQL para los que desea que se recopilen datos de diagnóstico estableciendo la propiedad de configuración global db2.jcc.diagLevelExceptionCode.
Si no se especifica un valor de db2.jcc.diagLevelExceptionCode, no se recopilan datos de diagnóstico.
Si db2.jcc.diagLevelExceptionCode está configurado como -1, se recopila información de diagnóstico para todos los códigos de error SQL.
Un código de error SQL puede especificarse sin signo, con el signo menos (-) como prefijo o con la letra " n" como sufijo. Un código de advertencia SQL puede ir precedido de un signo más (+) o seguido de la letra " p".
Cuando se especifique más de un código de error SQL o código de advertencia SQL, los códigos deben estar separados por comas.
Ejemplos:
- db2.jcc.diagLevelExceptionCode=204
- db2.jcc.diagLevelExceptionCode=-204
- db2.jcc.diagLevelExceptionCode=204n
- db2.jcc.diagLevelExceptionCode=+222
- db2.jcc.diagLevelExceptionCode=222p
- db2.jcc.diagLevelExceptionCode=-204,-30108,-4499
- db2.jcc.diagLevelExceptionCode=204,30108n,4499
- db2.jcc.diagLevelExceptionCode=204n,30108,4499n
- db2.jcc.diagLevelExceptionCode=+100,-30108,222p
- db2.jcc.diagLevelExceptionCode=100p,30108,+222
Especificación de la recopilación de datos para un grupo de intercambio de datos : Cuando la propiedad de configuración global db2.jcc.traceLevel o db2.jcc.override.traceLevel, o la propiedad traceLevel Connection o DataSource se establece en TRACE_SYSPLEX (X'80000'), el IBM Data Server Driver for JDBC and SQLJ recoge datos sobre el grupo de intercambio de datos, como la lista de servidores, los valores de las propiedades de redireccionamiento automático de clientes y equilibrio de carga de trabajo, las estadísticas del grupo de transporte y los valores de registro especiales.
Formato de información sobre un perfil serializado de SQLJ
profp formatea la información sobre cada
una de las cláusulas SQLJ de un perfil serializado. El formato del programa de
utilidad profp es:
Ejecute el programa de utilidad profp sobre el perfil serializado
correspondiente a la conexión donde se produzca el error. Si se produce una excepción, se genera un seguimiento de pila de Java. A partir del rastreo de pila, puede determinar qué perfil serializado se estaba
utilizando cuando se emitió la excepción.
Formato de información sobre un perfil serializado personalizado de SQLJ
La utilidad db2sqljprint da formato a la información sobre cada cláusula SQLJ en un perfil serializado que se personaliza para el IBM Data Server Driver for JDBC and SQLJ.
Ejecute el programa de utilidad db2sqljprint sobre el perfil
serializado personalizado correspondiente a la conexión donde se produzca el
error.
