Saltar al contenido

Seguimiento de la conexión del cliente SAP HANA

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

  1. Ingrese el siguiente comando para ver la configuración de seguimiento actual:

    hdbsqldbc_cons SHOW ALL
    

    hdbsqldbc_cons las utilidades se pueden encontrar en el sap/hdbclient carpeta.

  2. 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.

  3. 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"
    
  4. 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
    

    Reemplazar ID de proceso

    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.

  5. 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'
    
  6. 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.

  1. 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
    
  2. 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
    

    Valores variables ambientales

  3. A partir de la versión 2.7, la información de seguimiento se puede dirigir a stdout o stderr. 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
  1. 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
    

    GUI del controlador JDBC

  2. 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.

  3. 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"
    
  4. 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")
    
  5. Finalmente, la información de seguimiento se puede enviar a stdout o stderr 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!