Rastreo SQL en Autonomous Database

Utilice el rastreo SQL para ayudarle a identificar el origen de una carga de trabajo de base de datos excesiva, como una sentencia SQL de carga elevada en la aplicación.

Configuración del rastreo SQL en Autonomous Database

Muestra los pasos para configurar el rastreo SQL en Autonomous Database.

Nota

Si activa el rastreo SQL, el rendimiento de la aplicación para la sesión se puede degradar mientras la recopilación de rastreo está activada. Este impacto negativo en el rendimiento se espera debido a la sobrecarga que supone recopilar y guardar datos de rastreo.

Para configurar la base de datos para el rastreo SQL, realice las siguientes acciones:

  1. Cree un cubo para almacenar archivos de rastreo en el almacenamiento de objetos en la nube.

    Para guardar los archivos de rastreo SQL, el cubo puede estar en cualquier instancia de Cloud Object Storage que soporte Autonomous Database.

    Por ejemplo, para crear un cubo en Oracle Cloud Infrastructure Object Storage, realice lo siguiente:

    1. Abra la consola de Oracle Cloud Infrastructure.
    2. En el menú, seleccione Almacenamiento.
    3. En Almacenamiento, seleccione Object Storage y Archive Storage.
    4. Haga clic en Crear cubo.
    5. En la página Crear cubo, introduzca el nombre del cubo y haga clic en Crear.

    Si utiliza Oracle Cloud Infrastructure Object Storage. Tenga en cuenta que los archivos de rastreo SQL solo están soportados con cubos creados en el nivel de almacenamiento estándar. Asegúrese de seleccionar Estándar como nivel de almacenamiento al crear el cubo. Para obtener información sobre el nivel de almacenamiento de objetos estándar, consulte Visión general de Object Storage.

  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 Procedimiento CREATE_CREDENTIAL para obtener más información sobre los argumentos para los parámetros username y password para diferentes servicios de almacenamiento de objetos.

  3. Defina los parámetros de inicialización para especificar la URL de almacenamiento de objetos en la nube para un cubo de 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 que especifique el cubo de registro en Cloud Object Storage.

      Por ejemplo, si crea el cubo con Oracle Cloud Infrastructure 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 Oracle Cloud Infrastructure Object Storage y bucket_name es el nombre del cubo 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 almacenamiento de objetos en la nube que utiliza para los archivos de rastreo SQL puede ser cualquier almacenamiento de objetos en la nube que soporte Autonomous Database.

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

      Por ejemplo:

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

    Es necesario incluir el nombre de esquema con la credencial. En este ejemplo, el esquema es ADMIN.

Activación del rastreo SQL en Autonomous Database

Muestra los pasos para activar el rastreo SQL para la sesión de base de datos.

Nota

Si activa el rastreo SQL, el rendimiento de la aplicación para la sesión se puede degradar mientras la recopilación de rastreo está activada. Este impacto negativo en el rendimiento se espera debido a la sobrecarga que supone recopilar y guardar datos de rastreo.

Antes de activar el rastreo SQL, debe configurar la base de datos para guardar los archivos de rastreo SQL. Consulte Configuración del rastreo SQL en Autonomous Database para obtener más información.

Para activar el rastreo SQL:

  1. (Opcional) Defina un identificador de cliente para la aplicación. Este paso es opcional pero recomendable. 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. (Opcional) Defina un nombre de módulo para la aplicación. Este paso es opcional pero recomendable. 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 Cloud Object Store.

    Por ejemplo:

    BEGIN
      DBMS_APPLICATION_INFO.SET_MODULE('modname', null);
    END;
    /
  3. Active la utilidad Rastreo SQL.
    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. Al ejecutar la carga de trabajo en la sesión de la base de datos, se recopilan los datos de rastreo SQL.

  5. Desactivar 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. Consulte Disable SQL Tracing on Autonomous Database para obtener información.

Desactivación del rastreo SQL en Autonomous Database

Muestra los pasos para desactivar el rastreo SQL en Autonomous Database.

Para desactivar el rastreo SQL:

  1. Desactive la utilidad SQL Trace.
    ALTER SESSION SET SQL_TRACE = FALSE;
  2. (Opcional) 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 se ejecuta la sesión 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. Tiene dos opciones para ver los datos de rastreo:

Visualización del archivo de rastreo guardado en el almacén de objetos en la nube en Autonomous Database

Descripción de la Nomenclatura del Archivo de Salida para los Archivos de Rastreo SQL y Visualización de los Comandos para Utilizar TKPROF para Organizar y Ver los Datos del Archivo de Rastreo.

Utilice los datos del archivo de rastreo SQL para analizar el rendimiento de la aplicación en Autonomous 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 el nube configurado con DEFAULT_LOGGING_BUCKET.

La utilidad Rastreo SQL 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:

  • default_logging_bucket: es el valor de la propiedad de la base de datos DEFAULT_LOGGING_BUCKET. Consulte Configuración del rastreo SQL en Autonomous Database para obtener más información.

  • clientID: is the client identifier. Consulte Activación del rastreo SQL en Autonomous Database para obtener más información.

  • moduleName: is the module name. Consulte Activación del rastreo SQL en Autonomous Database para obtener más información.

  • numID1_numID2: son dos identificadores que proporciona la utilidad Rastreo SQL. Los valores numéricos numID1 y numID2 distinguen de forma única cada nombre de archivo de rastreo de otras sesiones mediante el rastreo y la creación de archivos de rastreo en el mismo cubo de Cloud Object Storage.

    Cuando el servicio de base de datos soporta el paralelo y una sesión ejecuta una consulta paralela, la utilidad Rastreo SQL puede generar varios archivos de rastreo con valores numID1 y numID2 diferentes.

Nota

Al activar y desactivar el rastreo SQL varias veces en la misma sesión, cada iteración de rastreo genera un archivo de rastreo independiente en el almacén de objetos en la nube. Para evitar sobrescribir los rastreos anteriores generados en la sesión, los archivos generados posteriormente siguen la misma regla de nomenclatura y agregan un sufijo numérico al nombre del archivo de rastreo. Este sufijo numérico empieza por el número 1 y se incrementa en 1 por cada iteración de rastreo posterior.

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 al directorio en el que esté guardado el archivo de rastreo.
  3. Ejecute la utilidad TKPROF desde el símbolo 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 línea, llame a TKPROF sin argumentos.

Consulte la sección sobre herramientas para el rastreo completo de las aplicaciones en la Guía de ajustes SQL de Oracle Database para obtener información sobre el uso de la utilidad TKPROF.

Visualización de datos de rastreo en la vista SESSION_CLOUD_TRACE de Autonomous Database

Al activar el rastreo SQL, la misma información de rastreo guardada en el archivo de rastreo del 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 siga en la sesión de la base de datos, podrá 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 ORDER BY row_number;

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

Si la rastreo SQL se activa y desactiva varias veces en la misma sesión, en SESSION_CLOUD_TRACE se muestran los datos de rastreo de todas las iteraciones de forma acumulada. Por lo tanto, al volver a activar el rastreo en una sesión después de desactivar previamente el rastreo, no se eliminan los datos de rastreo producidos por la iteración anterior.