Realizar rastreo SQL en base de datos de IA autónoma
Utilizar el rastreo SQL para ayudar a identificar el origen de una carga de trabajo excesiva de la base de datos, como una sentencia SQL de carga alta en la aplicación. Autonomous AI Database soporta el rastreo basado en sesión con ALTER SESSION y el rastreo de destino con el paquete DBMS_USERDIAG.
El rastreo SQL está desactivado por defecto. Para recopilar datos de rastreo, active una regla de rastreo, ejecute la carga de trabajo que desea investigar y, a continuación, desactive la regla mediante los mismos atributos de identificación. Cuando el rastreo está desactivado, la base de datos carga los datos recopilados en Cloud Object Storage. Puede revisar los datos en el archivo de rastreo generado o en la vista SESSION_CLOUD_TRACE.
El método de rastreo determina cómo la base de datos identifica las sesiones que se van a rastrear. El identificador de cliente y el rastreo de servicio, módulo y acción pueden identificar sesiones coincidentes entre instancias de base de datos, mientras que el rastreo basado en sesión tiene como destino una sesión específica en una instancia específica. El identificador de cliente y el servicio, el módulo y el rastreo de acciones soportan la variable de enlace y la información del evento de espera. Debido a que el rastreo básico no está disponible para estos métodos de rastreo, el rastreo de espera está activado por defecto cuando no especifica explícitamente el rastreo de enlace o espera. El rastreo basado en sesiones soporta niveles de rastreo básicos, de enlace y de espera.
Configuración del rastreo SQL en la base de datos de IA autónoma
Configure la base de datos para guardar los archivos de rastreo SQL en Cloud Object Storage antes de activar el rastreo SQL.
Nota
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 esperado se debe a la sobrecarga que supone recopilar y guardar datos de rastreo.
Requisitos para el Rastreo SQL
La siguiente configuración es necesaria para el rastreo de ALTER SESSION y el rastreo de DBMS_USERDIAG. Complete estos pasos antes de habilitar cualquiera de los métodos de rastreo.
Para configurar la base de datos para el rastreo SQL, haga lo siguiente:
-
Cree un cubo para almacenar los archivos de rastreo en Cloud Object Storage.
Para guardar archivos de rastreo SQL, puede utilizar cualquier servicio de Cloud Object Storage soportado por Autonomous AI Database.
Por ejemplo, para crear un cubo en Oracle Cloud Infrastructure Object Storage:
-
Abra la consola de Oracle Cloud Infrastructure.
-
Seleccione Storage (Almacenamiento) en el menú.
-
En Almacenamiento, seleccione Almacenamiento de objetos y archivos.
-
Haga clic en Crear cubo.
-
En la página Crear cubo, introduzca el nombre del cubo y haga clic en Crear.
Si utiliza Oracle Cloud Infrastructure Object Storage, los archivos de rastreo SQL solo están soportados en cubos creados en el nivel de almacenamiento estándar. Seleccione Estándar como nivel de almacenamiento. Consulte Visión general de Object Storage para obtener información sobre el nivel de Object Storage estándar.
-
-
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; /Nota
Nota: Si la cuenta de usuario está en el dominio de identidad por defecto, basta con especificar solo el nombre de usuario. Si la cuenta de usuario pertenece a un dominio de identidad no por defecto, agregue al nombre de usuario el nombre de dominio de identidad seguido de/. Por ejemplo,identity_domain_name/adb_user@example.com.Para Oracle Cloud Infrastructure, especifique el nombre del usuario Oracle Cloud Infrastructure como
usernamey el token de autenticación de la instancia de Oracle Cloud Infrastructure comopassword. Consulte Trabajar con tokens de autenticación para obtener más información.Consulte el procedimiento CREATE_CREDENTIAL para obtener información sobre los parámetros y sus valores para el servicio Cloud Object Storage que utiliza.
-
Defina las propiedades de la base de datos para especificar la ubicación de Cloud Object Storage para los archivos de rastreo SQL y la credencial utilizada para acceder a ella.
-
Defina la propiedad de base de datos
DEFAULT_LOGGING_BUCKETpara especificar el cubo de registro.Por ejemplo, si ha creado el cubo en 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/';En este ejemplo,
namespace-stringes el espacio de nombres de Oracle Cloud Infrastructure Object Storage y bucket_name es el nombre del cubo que ha creado. 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.
-
Defina la propiedad de base de datos
DEFAULT_CREDENTIALen la credencial que ha creado en el paso 2. Incluya el nombre del esquema con la credencial. En este ejemplo, el esquema esADMIN.ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.DEF_CRED_NAME';
-
Requisitos específicos de DBMS_USERDIAG
Los requisitos comunes anteriores se aplican al rastreo DBMS_USERDIAG. Además, complete los siguientes requisitos previos antes de utilizar este paquete:
- Debe estar conectado como usuario
ADMINo tener el privilegioEXECUTEenDBMS_USERDIAG. - Para el rastreo basado en sesión, obtenga el ID de sesión de destino y el número de serie. Puede consultar
V$SESSIONpara identificar estos valores. - Para el rastreo de identificadores de cliente, asegúrese de que la aplicación defina el identificador de cliente, por ejemplo,
SALES_APP. - Para el rastreo de servicio, módulo y acción, identifique los atributos de aplicación utilizados para hacer coincidir las sesiones de destino.
- Utilice el rastreo de enlace y espera solo cuando necesite esta información de diagnóstico adicional. Estas opciones pueden generar archivos de rastreo grandes, afectar al rendimiento de la aplicación y aumentar la memoria PGA utilizada por la sesión mientras se recopilan los datos de rastreo.
Después de completar los requisitos comunes y específicos de DBMS_USERDIAG, seleccione el método de rastreo que mejor se ajuste a su objetivo de diagnóstico. Utilice ALTER SESSION para rastrear la actividad en la sesión actual o utilice DBMS_USERDIAG para dirigir una carga de trabajo o un grupo de sesiones específicos.
Sesiones de Rastreo con SESIÓN ALTER
Utilice ALTER SESSION para activar el rastreo SQL para la sesión de base de datos actual. Este método captura información de rastreo para el trabajo realizado en esa sesión.
Antes de activar el rastreo SQL, configure la base de datos para guardar los archivos de rastreo SQL. Consulte Configuración del rastreo SQL en Autonomous AI Database para obtener más información.
Para activar el rastreo SQL para la sesión actual:
-
(Opcional) Defina un identificador de cliente para la aplicación. Este identificador se utiliza como componente del nombre del archivo de rastreo.
Por ejemplo:
BEGIN DBMS_SESSION.SET_IDENTIFIER('sqlt_test'); END; /DBMS_SESSION.SET_IDENTIFIERdefine el identificador de cliente para la sesión actual. -
(Opcional) Defina un nombre de módulo para la aplicación. El nombre del módulo también se utiliza como componente del nombre del archivo de rastreo.
Por ejemplo:
BEGIN DBMS_APPLICATION_INFO.SET_MODULE('modname', NULL); END; / -
Active la utilidad de rastreo SQL.
Por ejemplo:
ALTER SESSION SET SQL_TRACE = TRUE;ALTER SESSION SET SQL_TRACE = TRUEactiva el rastreo para la sesión actual. -
Ejecute la carga de trabajo que desea analizar. Los datos de rastreo SQL se recopilan mientras la carga de trabajo se ejecuta en la sesión.
-
Desactive el rastreo SQL.
Desactivar el rastreo SQL en la base de datos de IA autónoma
Desactive el rastreo SQL cuando termine la carga de trabajo. Al desactivar el rastreo, se escriben los datos recopilados en la sesión y en un archivo de rastreo en el cubo de Cloud Object Storage configurado para el rastreo SQL.
Para desactivar el rastreo SQL para la sesión actual:
-
Desactive la utilidad de rastreo SQL.
Por ejemplo:
ALTER SESSION SET SQL_TRACE = FALSE;ALTER SESSION SET SQL_TRACE = FALSEdesactiva el rastreo para la sesión actual. -
(Opcional) Restablezca la propiedad de la base de datos
DEFAULT_LOGGING_BUCKETpara borrar el valor del cubo de registro.Por ejemplo:
ALTER DATABASE PROPERTY SET DEFAULT_LOGGING_BUCKET = '';Esta sentencia borra el cubo de registro configurado para el rastreo SQL.
Después de desactivar el rastreo SQL, puede ver los datos de rastreo de una de las siguientes formas:
- Vea y analice los datos de rastreo SQL en el archivo de rastreo guardado en Cloud Object Storage. Consulte Visualización del archivo de rastreo guardado en Cloud Object Storage en Autonomous AI Database.
- Ver y analizar los datos de rastreo SQL en la vista
SESSION_CLOUD_TRACE. Consulte Ver datos de rastreo en la vista SESSION_CLOUD_TRACE en Autonomous AI Database.
Rastrear cargas de trabajo con DBMS_USERDIAG
Utilice el paquete DBMS_USERDIAG para activar y desactivar el rastreo SQL para una sentencia, sesión, identificador de cliente o servicio de aplicación, módulo y acción SQL específicos. Este enfoque le ayuda a recopilar información de diagnóstico dirigida para la carga de trabajo SQL específica que se está investigando, al tiempo que minimiza la actividad de la base de datos no relacionada en el análisis.
Ventajas del Rastreo SQL DBMS_USERDIAG
DBMS_USERDIAG proporciona las siguientes capacidades:
- Rastreo de ámbito a una sentencia SQL específica mediante su
SQL_ID. - Rastree otra sesión activa proporcionando su ID de sesión y su número de serie.
- Rastrear la actividad de la aplicación por identificador de cliente.
- Rastrear la actividad de la aplicación por servicio, módulo y acción.
- Incluya valores de variables de enlace y detalles de eventos de espera cuando se requieran diagnósticos más profundos.
- Recopile estadísticas del plan de ejecución para la primera ejecución, cada ejecución o un juego adaptativo de ejecuciones según la necesidad de la investigación.
Activación del Rastreo SQL para un ID SQL Específico
Utilice SQL_ID para rastrear solo la sentencia SQL coincidente. En este ejemplo, se recopila información de eventos de espera y variables de enlace y se activan las estadísticas del plan adaptativo.
El parámetro sys no está operativo en Autonomous AI Database y no se utiliza en los ejemplos de este tema.
Por ejemplo:
BEGIN
DBMS_USERDIAG.SESSION_SQL_TRACE_ENABLE(
sql_id => '5yka4rvxpbjc6',
binds => 1,
waits => 1,
plan_stat => 'ADAPTIVE');
END;
/El parámetro sql_id limita el rastreo a la sentencia SQL especificada. Los parámetros binds y waits incluyen información de eventos de espera y variables de enlace, y plan_stat especifica la opción de recopilación de estadísticas del plan.
Ejecute la carga de trabajo que utiliza el ID de SQL 5yka4rvxpbjc6 y, a continuación, desactive el rastreo:
Por ejemplo:
BEGIN
DBMS_USERDIAG.SESSION_SQL_TRACE_DISABLE(
sql_id => '5yka4rvxpbjc6');
END;
/El parámetro sql_id identifica la regla de rastreo que se va a desactivar. Utilice el mismo valor de identificación que ha especificado al activar el rastreo.
El valor sql_id debe identificar la sentencia que desea rastrear. Los valores plan_stat válidos son FIRST_EXECUTION, NEVER, ALL_EXECUTIONS y ADAPTIVE.
Activación del Rastreo SQL para una Sesión Diferente
Utilice el ID de sesión de destino y el número de serie para rastrear una sesión diferente. En este ejemplo, 39 es el ID de sesión y 15593 es el número de serie.
Por ejemplo:
BEGIN
DBMS_USERDIAG.SESSION_SQL_TRACE_ENABLE(
sid => 39,
ser => 15593,
binds => 1,
waits => 1);
END;
/Los parámetros sid y ser identifican la sesión de destino. Los parámetros binds y waits permiten la recopilación de información de eventos de espera y variables de enlace.
Ejecute la carga de trabajo en la sesión de destino y, a continuación, desactive el rastreo de una sesión con los privilegios necesarios:
Por ejemplo:
BEGIN
DBMS_USERDIAG.SESSION_SQL_TRACE_DISABLE(
sid => 39,
ser => 15593);
END;
/Los parámetros sid y ser identifican la regla de rastreo asociada a la sesión de destino.
Si la sesión de destino se cierra antes de que se desactive el rastreo, la base de datos carga el archivo de rastreo cuando se cierra la sesión.
Activar Rastreo SQL por Identificador de Cliente
Utilice un identificador de cliente para rastrear las sesiones coincidentes en las instancias de base de datos. En este ejemplo, la aplicación define el identificador de cliente en SALES_APP.
Por ejemplo:
BEGIN
DBMS_USERDIAG.SESSION_SQL_TRACE_ENABLE(
client_id => 'SALES_APP',
binds => 1,
waits => 1);
END;
/El parámetro client_id identifica las sesiones de aplicación que se van a rastrear. Los parámetros binds y waits permiten recopilar información de diagnóstico adicional.
Ejecute la carga de trabajo de la aplicación y, a continuación, desactive el rastreo mediante el mismo identificador de cliente:
Por ejemplo:
BEGIN
DBMS_USERDIAG.SESSION_SQL_TRACE_DISABLE(
client_id => 'SALES_APP');
END;
/El parámetro client_id identifica la regla de rastreo que se va a desactivar. Utilice el mismo identificador de cliente que especificó al activar el rastreo.
Activación del Rastreo SQL por Servicio, Módulo y Acción
Utilice atributos de aplicación para rastrear sesiones que utilizan un servicio, módulo y acción especificados. En este ejemplo, el rastreo se limita al servicio HIGH, al módulo ORDER_PROCESSING y a la acción CREATE_ORDER.
Por ejemplo:
BEGIN
DBMS_USERDIAG.SESSION_SQL_TRACE_ENABLE(
service => 'HIGH',
module => 'ORDER_PROCESSING',
action => 'CREATE_ORDER',
binds => 1,
waits => 1);
END;
/Los parámetros service, module y action identifican las sesiones de aplicación que se van a rastrear. Los parámetros binds y waits permiten recopilar información de diagnóstico adicional.
Ejecute la carga de trabajo de la aplicación y, a continuación, desactive el rastreo con los mismos valores de servicio, módulo y acción:
Por ejemplo:
BEGIN
DBMS_USERDIAG.SESSION_SQL_TRACE_DISABLE(
service => 'HIGH',
module => 'ORDER_PROCESSING',
action => 'CREATE_ORDER');
END;
/Los parámetros service, module y action identifican la regla de rastreo que se va a desactivar. Utilice los mismos valores que ha especificado al activar el rastreo.
La aplicación debe definir los atributos de servicio, módulo y acción para sus sesiones. Puede utilizar DBMS_APPLICATION_INFO.SET_MODULE para definir el módulo y la acción. La coincidencia se realiza en todas las instancias de base de datos cuando los atributos de la aplicación son los mismos.
Puede obtener más información en los siguientes enlaces:
Verificación del Rastreo SQL
Puede consultar las siguientes vistas para verificar que el rastreo está activado y para revisar las reglas de rastreo:
SELECT sid, serial#, sql_trace
FROM V$SESSION
WHERE sid = 39;SELECT *
FROM DBA_ENABLED_TRACES;La columna TRACE_TYPE de DBA_ENABLED_TRACES identifica el método de rastreo, como el identificador SQL, la sesión, el identificador de cliente o el servicio, el módulo y la acción.
Visualización del archivo de rastreo guardado en Cloud Object Storage en Autonomous AI Database
Describe la nomenclatura de archivos de salida para los archivos de rastreo SQL y muestra los comandos para utilizar TKPROF para organizar y ver los datos del archivo de rastreo.
Al desactivar el rastreo SQL, los datos de rastreo recopilados en la sesión se escriben en el cubo de Cloud Object Storage configurado con DEFAULT_LOGGING_BUCKET.
La utilidad SQL Trace escribe los datos de rastreo recopilados en la sesión en Cloud Object Storage con el siguiente formato:
default_logging_bucket/sqltrace/clientID/moduleName/sqltrace_numID1_numID2.trc
Los componentes del nombre de archivo son:
- default_logging_bucket: valor de la propiedad de base de datos
DEFAULT_LOGGING_BUCKET. Consulte Configuración del rastreo SQL en Autonomous AI Database. - clientID: identificador de cliente. Consulte Sesiones de Rastreo con ALTER SESSION.
- moduleName: nombre del módulo. Consulte Sesiones de Rastreo con ALTER SESSION.
- numID1_numID2: dos identificadores que distinguen de forma única el archivo de rastreo de los archivos de rastreo generados por otras sesiones que utilizan el mismo cubo. Cuando una sesión ejecuta una consulta paralela, la utilidad SQL Trace puede producir varios archivos de rastreo con diferentes valores.
Nota
Nota: cuando el rastreo SQL se activa y desactiva varias veces en la misma sesión, cada iteración de rastreo genera un archivo de rastreo independiente. Los archivos posteriores incluyen un sufijo numérico para evitar sobrescribir archivos de rastreo anteriores. El sufijo comienza en 1 y aumenta para cada iteración de rastreo posterior.
Por ejemplo, a continuación se muestra un ejemplo de nombre de archivo de rastreo generado cuando el identificador de cliente es sqlt_test y el nombre de módulo es modname:
sqltrace/sqlt_test/modname/sqltrace_5415_56432.trcPuede ejecutar TKPROF para convertir el archivo de rastreo en un archivo de salida legible:
-
Copie el archivo de rastreo del almacenamiento de objetos en el sistema local.
-
Navegue hasta el directorio en el que se guarda el archivo de rastreo.
-
Ejecute la utilidad
TKPROFdesde 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.
-
Para ver la ayuda en pantalla, llame a
TKPROFsin argumentos.
Consulte "Herramientas para el rastreo completo de aplicaciones" en la Guía de ajustes SQL de Oracle AI Database para obtener información sobre el uso de la utilidad TKPROF.
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 de Cloud Object Storage 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 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 en la columna TRACE. Cada línea de salida de rastreo escrita en un archivo de rastreo se convierte en una fila de la vista y está disponible en la columna TRACE.
Después de desactivar el rastreo SQL, consulte 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 la sesión o cerrarla, los datos ya no están disponibles.
Si el rastreo SQL 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. Al volver a activar el rastreo en una sesión después de desactivarlo previamente, no se eliminan los datos de rastreo producidos por una iteración anterior.