Los archivos de seguimiento pueden ayudar al soporte de SAP a diagnosticar comportamientos inesperados.
El seguimiento se puede configurar mediante un ejecutable incluido con la instalación del cliente SAP HANA. SQLDBCuso de interfaz hdbsqldbc_cons
, excepto ODBC, que usa hdbodbc_cons
. Para JDBC, usar ngdbc.jar
.
Los ajustes de la pista también se pueden configurar utilizando variables ambientales.
Paso 1: habilite el seguimiento
Ingrese el siguiente comando para ver la configuración de seguimiento actual:
hdbsqldbc_cons SHOW ALL
hdbsqldbc_cons
las utilidades se pueden encontrar en elsap/hdbclient
carpeta.Para especificar la ubicación del archivo para el archivo de seguimiento y habilitar el seguimiento de instrucciones SQL, ingrese los siguientes comandos:
hdbsqldbc_cons TRACE SQL ON LEVEL DEBUG mkdir c:temptraces hdbsqldbc_cons TRACE FILENAME c:temptracesSQLDBC-%p.txt
hdbsqldbc_cons TRACE SQL ON LEVEL DEBUG mkdir /tmp/traces hdbsqldbc_cons TRACE FILENAME /tmp/traces/SQLDBC-%p.txt
El ID de proceso de la aplicación de seguimiento será reemplazado por% p. La inclusión de% pa en el nombre del archivo garantiza que cada proceso pueda escribir su propio archivo de seguimiento.
Categorías de seguimiento:
- SQL
- DEPURAR
- PAQUETE
- DISTRIBUCIÓN
Niveles de seguimiento:
- DEPURAR
- INFO
- ADVERTENCIA
- ERROR
- FATAL
Para más información, ver Opciones de seguimiento y seguimiento de SQLDBC.
Ejecute el siguiente comando para conectarse a HDBSQL y consultar sobre el estado. Dado que el seguimiento está habilitado, se genera un archivo de seguimiento y se puede utilizar para identificar qué sentencias SQL se llaman
s
.hdbsql -U User1UserKey "s"
Busque y abra el archivo de seguimiento generado. Recuerde reemplazar #### para que coincida con el nombre del archivo de pista que desea abrir.
cd c:temptraces dir SQLDBC*.txt /od notepad SQLDBC-####.txt
cd /tmp/traces ls -lt pico SQLDBC-####.txt
Tenga en cuenta que la configuración de seguimiento se muestra en la parte superior del archivo.
libSQLDBCHDB 2.7.17.1607722875 SYSTEM: Microsoft Windows / X64 BUILD AT: 2020-12-21 18:56:04 BRANCH: unknown APPLICATION: C:SAPhdbclienthdbsql.exe HOST: W-R90XC65K OS USER: dan CURRENT DIRECTORY: C:UsersdanHANAClientsTutorial TRACE FILE NAME: c:temptracesSQLDBC-35724.txt PROCESS ID: 35724 TRACE FILE WRAP COUNT: 0 --- Enabled Traces: SQL Trace: Level DEBUG Distribution Trace: Level DEBUG
Si la configuración de seguimiento cambia mientras el seguimiento está habilitado, la sección Pistas habilitadas volverá a aparecer en el archivo de seguimiento.
Si tiene problemas con el seguimiento de SQLDBC, consulte Solución de problemas de seguimiento de SQLDBC.
Busque en el archivo de seguimiento y observe las sentencias SQL ejecutadas.
::EXECUTE WITH COMMIT SQLCURS_1 2020-12-28 07:11:09.717000 [0x000000000319c260] SQL COMMAND : SELECT VERSION FROM SYS.M_DATABASE ... ::EXECUTE WITH COMMIT SQLCURS_1 2020-12-28 07:11:09.729000 [0x000000000319c260] SQL COMMAND : SELECT B.HOST || ':' || SQL_PORT FROM PUBLIC.M_CONNECTIONS A JOIN SYS.M_SERVICES B ON A.HOST = B.HOST and A.port = B.port WHERE OWN = 'TRUE'
Para desactivar el seguimiento de cada categoría, ejecute el siguiente comando:
hdbsqldbc_cons TRACE OFF
Hecho
Inicie sesión para responder la pregunta
Paso 2: Configuración de seguimiento adicional
Aquí hay algunas opciones de seguimiento adicionales.
El ajuste FLUSH, cuando se enciende, puede reducir la actividad de E / S. Si está investigando un accidente, debe estar encendido para asegurarse de que se registre toda la información de seguimiento.
hdbsqldbc_cons TRACE FLUSH ON
En los casos en que
hdbsqldbc_cons
no es accesible, tal vez porque se instaló un controlador directamente usando npm o pip, la configuración de seguimiento se puede establecer usando variables ambientales.set HDB_SQLDBC_TRACEFILE=c:temptracesSQLDBC-%p.txt set HDB_SQLDBC_TRACEOPTS=SQL=DEBUG,FLUSH
export HDB_SQLDBC_TRACEFILE=/tmp/traces/SQLDBC-%p.txt export HDB_SQLDBC_TRACEOPTS=SQL=DEBUG,FLUSH
La configuración de seguimiento en las variables ambientales tiene prioridad sobre las utilizadas
hdbsqldbc_cons
.Los valores cambiantes del entorno se pueden ver y eliminar con los siguientes comandos. Los primeros y últimos comandos muestran dónde se establece la variable de entorno. El orden intermedio elimina el valor de la variable de entorno.
set HDB_SQLDBC_TRACEFILE set HDB_SQLDBC_TRACEFILE= set HDB_SQLDBC_TRACEFILE set HDB_SQLDBC_TRACEOPTS set HDB_SQLDBC_TRACEOPTS= set HDB_SQLDBC_TRACEOPTS
printenv | grep HDB_SQLDBC_TRACE unset HDB_SQLDBC_TRACEFILE unset HDB_SQLDBC_TRACEOPTS printenv | grep HDB_SQLDBC_TRACE
A partir de la versión 2.7, la información de seguimiento se puede dirigir a
stdout
ostderr
. Aquí están algunos ejemplos.hdbsql -U User1UserKey -Z traceFile=stdout -Z traceOptions=sql=warning "SELECT * FROM HOTEL.CUSTOMER"
set HDB_SQLDBC_TRACEOPTS=SQL=WARN set HDB_SQLDBC_TRACEFILE=stdout hdbsql -U User1UserKey "SELECT * FROM HOTEL.CUSTOMER" set HDB_SQLDBC_TRACEOPTS= set HDB_SQLDBC_TRACEFILE=
Hecho
Inicie sesión para responder la pregunta
Paso 3: rastrear la conexión JDBC
Se debe instalar Java para completar los siguientes pasos. Para comprobar si está instalado, ejecute los siguientes comandos:
java -version
javac -version
Para mostrar la configuración de seguimiento de JDBC actual, ejecute el siguiente comando:
java -jar c:saphdbclientngdbc.jar SHOW
Alternativamente, la configuración de seguimiento se puede ver y configurar mediante una GUI.
java -jar c:saphdbclientngdbc.jar
Active el seguimiento de las declaraciones SQL y use la GUI o los comandos siguientes:
java -jar c:saphdbclientngdbc.jar TRACE ON java -jar c:saphdbclientngdbc.jar TRACE FILENAME c:temptracesjdbctrace java -jar c:saphdbclientngdbc.jar TRACE API ON
Las diversas palabras clave de la opción de línea de comando se pueden encontrar en Opciones de seguimiento y seguimiento de JDBC.
Complete una consulta que generará un archivo de seguimiento.
java -jar c:saphdbclientngdbc.jar -k User1UserKey -o encrypt=True -o validatecertificate=false -c "SELECT * FROM HOTEL.CUSTOMER"
Examine el archivo de la pista.
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body><PRE><PLAINTEXT> Java version: 11 ClassLoader: jdk.internal.loader.ClassLoaders$AppClassLoader@30946e09 Process ID: 7984 Driver version: package com.sap.db.jdbc, Java Platform API Specification, version 1.8, SAP HANA JDBC Driver, SAP SE, 2.7.9-e7d7d91fad7f2973ba232a4bff888b86d102c42b Trace configuration: Levels: API Show plain-text client-side encrypted values: Disabled Show timestamps: Disabled Show elapsed times: Disabled Trace file size: Unlimited Stop on error: Disabled ---- Thread 1060b431 main com.sap.db.jdbc.Driver@2ac273d3.connect("jdbc:sap://localhost:30015", {encrypt=True, key=***, validatecertificate=false}) => com.sap.db.jdbc.HanaConnectionClean@78a2da20[ID:203274] com.sap.db.jdbc.HanaConnectionClean@78a2da20[ID:203274].createStatement() => com.sap.db.jdbc.HanaStatement@47d9a273 com.sap.db.jdbc.HanaStatement@47d9a273.execute("SELECT * FROM HOTEL.CUSTOMER")
Finalmente, la información de seguimiento se puede enviar a
stdout
ostderr
Como se muestra abajo.java -jar c:saphdbclientngdbc.jar -k User1UserKey -o traceFile=stdout -o traceOptions=CONNECTIONS -c "SELECT * FROM HOTEL.CUSTOMER"
¡Felicitaciones, ahora ha configurado el seguimiento con las interfaces del cliente SAP HANA!