Uso del rastreo SQL en Autonomous AI Database en una infraestructura de Exadata dedicada

Puede utilizar el rastreo SQL con Autonomous AI Database en una infraestructura de Exadata dedicada para ayudarle a identificar el origen de una carga de trabajo excesiva de la base de datos, como una sentencia SQL de alta carga en la aplicación.

Acerca del Rastreo SQL

Cuando una operación de aplicación tarda más de lo esperado, obtener un rastreo de todas las sentencias SQL ejecutadas como parte de esta operación con detalles como el tiempo empleado por esa sentencia SQL en las fases de análisis, ejecución y recuperación le ayudará a identificar y resolver la causa de la incidencia de rendimiento. Para ello, puede utilizar el rastreo SQL en una base de datos de IA autónoma.

El rastreo SQL está desactivado por defecto en la base de datos de IA autónoma. Debe activarla para empezar a recopilar los datos de rastreo SQL. Para rastrear sentencias SQL, implante las siguientes tareas como usuario ADMIN:

Configuración del rastreo SQL en la base de datos de IA autónoma

Para configurar la base de datos de IA autónoma para el rastreo SQL, haga lo siguiente:

  1. Cree un cubo para almacenar los archivos de rastreo en Cloud Object Storage.

    Para guardar los archivos de rastreo SQL, el cubo puede estar en cualquier almacén de objetos en la nube que soporte la base de datos de IA autónoma. Por ejemplo, para crear un cubo en Oracle Cloud Infrastructure Object Storage, consulte Creación de un cubo.

    Consejo: asegúrese de seleccionar Estándar como nivel de almacenamiento al crear el cubo en Oracle Cloud Infrastructure Object Storage porque los archivos de rastreo SQL solo están soportados con cubos creados en el nivel de almacenamiento estándar. Para obtener información sobre el nivel de almacenamiento de objetos estándar, consulte Descripción de los niveles de almacenamiento.

  2. Cree una credencial para su cuenta de Cloud Object Storage mediante DBMS_CLOUD.CREATE_CREDENTIAL.

    Por ejemplo:

     BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL(
         credential_name => 'DEF_CRED_NAME',
         username => 'adb_user@example.com',
         password => 'password'
     );END;
     /
    

    Consulte el procedimiento CREATE_CREDENTIAL para obtener detalles sobre los argumentos para los parámetros username y password para diferentes servicios de almacenamiento de objetos.

  3. Defina parámetros de inicialización para especificar la URL de Cloud Object Storage para un cubo para los archivos de rastreo SQL y para especificar las credenciales para acceder a Cloud Object Storage.

    1. Defina la propiedad de base de datos DEFAULT_LOGGING_BUCKET para especificar el cubo de registro en Cloud Object Storage.

      Por ejemplo, si crea el cubo con Oracle Cloud Infrastructure (OCI) Object Storage:

       SET DEFINE OFF;
       ALTER DATABASE PROPERTY SET
          DEFAULT_LOGGING_BUCKET = 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucket_name/o/';
      

      Donde namespace-string es el espacio de nombres de OCI Object Storage y bucket_name es el nombre del cubo que ha creado anteriormente. Consulte Descripción de los espacios de nombres de Object Storage para obtener más información.

      Consulte Regiones y dominios de disponibilidad para obtener una lista de regiones.

      El almacén de objetos en la nube que utiliza para los archivos de rastreo SQL puede ser cualquier almacén de objetos en la nube que soporte la base de datos de IA autónoma.

    2. Defina la propiedad DEFAULT_CREDENTIAL de la base de datos en la credencial creada en el paso 2.

      Por ejemplo:

       ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.DEF_CRED_NAME';
      

      Se necesita incluir el nombre del esquema con la credencial. En este ejemplo, el esquema es ADMIN.

Activación del rastreo SQL en la base de datos de IA autónoma

Nota: La activación del rastreo SQL puede degradar el rendimiento de la aplicación para la sesión mientras la recopilación de rastreo está activada. Se espera que este impacto en el rendimiento se deba a la sobrecarga que supone recopilar y guardar datos de rastreo.

Para activar el rastreo SQL para una sesión de base de datos, haga lo siguiente:

  1. De manera opcional, defina un identificador de cliente para la aplicación. Este paso es opcional, pero se recomienda. El rastreo SQL utiliza el identificador de cliente como componente del nombre del archivo de rastreo cuando el archivo de rastreo se escribe en el almacén de objetos en la nube.

    Por ejemplo:

     BEGIN
       DBMS_SESSION.SET_IDENTIFIER('sqlt_test');
     END;
     /
    
  2. De manera opcional, defina un nombre de módulo para la aplicación. Este paso es opcional, pero se recomienda. El rastreo SQL utiliza el nombre del módulo como componente del nombre del archivo de rastreo cuando el archivo de rastreo se escribe en el almacén de objetos en la nube.

    Por ejemplo:

     BEGIN
       DBMS_APPLICATION_INFO.SET_MODULE('modname', null);
     END;
     /
    
  3. Active la utilidad SQL Trace.

     ALTER SESSION SET SQL_TRACE = TRUE;
    
  4. Ejecute la carga de trabajo.

    Este paso implica ejecutar toda la aplicación o partes específicas de la aplicación. Mientras ejecuta la carga de trabajo en la sesión de la base de datos, se recopilan los datos de rastreo SQL.

  5. Desactive el rastreo SQL.

    Al desactivar el rastreo SQL, los datos recopilados para la sesión se escriben en una tabla de la sesión y en un archivo de rastreo del cubo que configure al configurar el rastreo SQL.

Desactivar el rastreo SQL

Para desactivar el rastreo SQL, realice lo siguiente:

  1. Desactive la utilidad SQL Trace.

     ALTER SESSION SET SQL_TRACE = FALSE;
    
  2. Opcionalmente, según sea necesario para su entorno, puede que desee restablecer la propiedad de base de datos DEFAULT_LOGGING_BUCKET para borrar el valor del cubo de registro en Cloud Object Storage.

    Por ejemplo:

     ALTER DATABASE PROPERTY SET DEFAULT_LOGGING_BUCKET = '';
    

Al desactivar el rastreo SQL, los datos de rastreo recopilados mientras la sesión se ejecuta con el rastreo activado se copian en una tabla y se envían a un archivo de rastreo en el almacén de objetos en la nube.

Ver el archivo de rastreo guardado en el almacén de objetos en la nube en la base de datos de IA autónoma

Los datos del archivo de rastreo SQL se utilizan para analizar el rendimiento de la aplicación en Autonomous AI Database. Al desactivar el rastreo SQL en la sesión de base de datos, los datos se escriben en el cubo del almacén de objetos en la nube configurado con DEFAULT_LOGGING_BUCKET.

La utilidad SQL Trace escribe los datos de rastreo recopilados en la sesión en el almacén de objetos en la nube con el siguiente formato:

default_logging_bucket/sqltrace/clientID/moduleName/sqltrace_numID1_numID2.trc

Los componentes del nombre de archivo son:

Por ejemplo, a continuación se muestra un ejemplo de nombre de archivo de rastreo generado al definir el identificador de cliente en "sql_test" y el nombre de módulo en "modname":

sqltrace/sqlt_test/modname/sqltrace_5415_56432.trc

Puede ejecutar TKPROF para convertir el archivo de rastreo en un archivo de salida legible.

  1. Copie el archivo de rastreo del almacén de objetos en el sistema local.

  2. Navegue hasta el directorio en el que se guarda el archivo de rastreo.

  3. Ejecute la utilidad TKPROF desde el indicador del sistema operativo con la siguiente sintaxis:

     tkprof filename1 filename2 [waits=yes|no] [sort=option] [print=n]
      [aggregate=yes|no] [insert=filename3] [sys=yes|no] [table=schema.table]
      [explain=user/password] [record=filename4] [width=n]
    

    Los archivos de entrada y salida son los únicos argumentos necesarios.

  4. Para ver la ayuda en pantalla, llame a TKPROF sin argumentos.

    Para obtener información sobre el uso de la utilidad TKPROF, consulte Tools for End-to-End Application Tracing en Oracle Database 19c SQL Tuning Guide u Oracle Database 26ai SQL Tuning Guide.

Visualización de datos de rastreo en la vista SESSION_CLOUD_TRACE en la base de datos de IA autónoma

Al activar el rastreo SQL, la misma información de rastreo que se guarda en el archivo de rastreo en el almacén de objetos en la nube está disponible en la vista SESSION_CLOUD_TRACE de la sesión en la que se ha activado el rastreo.

Mientras sigue en la sesión de base de datos, puede ver los datos de rastreo SQL en la vista SESSION_CLOUD_TRACE. La vista SESSION_CLOUD_TRACE incluye dos columnas: ROW_NUMBER y TRACE.

DESC SESSION_CLOUD_TRACE

Name       Null? Type
---------- ----- ------------------------------
ROW_NUMBER       NUMBER
TRACE            VARCHAR2(32767)

ROW_NUMBER especifica el orden de los datos de rastreo encontrados en la columna TRACE. Cada línea de salida de rastreo escrita en un archivo de rastreo se convierte en una fila de la tabla y está disponible en la columna TRACE.

Después de desactivar el rastreo SQL para la sesión, puede ejecutar consultas en la vista SESSION_CLOUD_TRACE.

Por ejemplo:

SELECT trace FROM SESSION_CLOUD_TRACE ORDERBY row_number;

Los datos de SESSION_CLOUD_TRACE se mantienen durante la sesión. Después de cerrar la sesión o cerrarla, los datos ya no están disponibles.

Si SQL Trace está activado y desactivado varias veces en la misma sesión, SESSION_CLOUD_TRACE muestra los datos de rastreo de todas las iteraciones de forma acumulativa. Por lo tanto, la reactivación del rastreo en una sesión después de desactivar previamente el rastreo no elimina los datos de rastreo producidos por la iteración anterior.