Utilisation de la fonction de trace SQL sur Autonomous AI Database sur une infrastructure Exadata dédiée
Vous pouvez utiliser la fonction de trace SQL avec Autonomous AI Database on Dedicated Exadata Infrastructure pour vous aider à identifier la source d'une charge globale de base de données excessive, telle qu'une instruction SQL à forte consommation de ressources dans votre application.
A propos de la fonction de trace SQL
Lorsqu'une opération d'application prend plus de temps que prévu, l'obtention d'une trace de toutes les instructions SQL exécutées dans le cadre de cette opération avec des détails tels que le temps passé par cette instruction SQL dans les phases d'analyse, d'exécution et d'extraction vous aidera à identifier et à résoudre la cause du problème de performances. Pour ce faire, vous pouvez utiliser la fonction de trace SQL sur une base de données Autonomous AI.
La fonction de trace SQL est désactivée par défaut dans la base de données Autonomous AI. Vous devez l'activer pour commencer à collecter les données de trace SQL. Pour effectuer le suivi des instructions SQL, implémentez les tâches suivantes en tant qu'utilisateur ADMIN :
-
Commencez par configurer la base de données pour enregistrer les fichiers SQL Trace. Pour plus d'informations, reportez-vous à Configuration de la trace SQL sur la base de données Autonomous AI.
-
Activez ensuite la fonction de trace SQL. Reportez-vous à Activation de la trace SQL sur la base de données Autonomous AI.
Remarque : l'activation de la fonction de trace SQL peut dégrader les performances de l'application pour la session lorsque la collecte de trace est activée. Cet impact sur les performances est attendu en raison de la surcharge liée à la collecte et à l'enregistrement des données de trace.
-
Pour arrêter la collecte des données de trace SQL, vous devez désactiver la trace SQL. Reportez-vous à Désactivation de la trace SQL.
-
Lorsque vous désactivez la fonction de trace SQL, les données de trace collectées pendant l'exécution de la session avec la fonction de trace activée sont écrites dans la vue
SESSION_CLOUD_TRACEde votre session et dans un fichier trace du bucket, que vous configurez lors de la configuration de la fonction de trace SQL. Vous disposez de deux options pour afficher les données de trace :-
Affichez et analysez les données SQL Trace dans le fichier trace enregistré dans la banque d'objets cloud. Pour plus d'informations, reportez-vous à Affichage du fichier trace enregistré dans la banque d'objets cloud sur la base de données Autonomous AI.
-
Affichez et analysez les données SQL Trace enregistrées dans la vue
SESSION_CLOUD_TRACE. Pour plus d'informations, reportez-vous à Affichage des données de trace dans la vue SESSION_CLOUD_TRACE sur la base de données Autonomous AI.
-
Configurer la fonction de trace SQL sur la base de données Autonomous AI
Pour configurer votre base de données Autonomous AI pour la fonction de trace SQL, procédez comme suit :
-
Créez un bucket pour stocker les fichiers trace dans le stockage d'objet cloud.
Pour enregistrer les fichiers de trace SQL, le bucket peut se trouver dans n'importe quelle banque d'objets cloud prise en charge par Autonomous AI Database. Par exemple, pour créer un bucket dans Oracle Cloud Infrastructure Object Storage, reportez-vous à Création d'un bucket.
A savoir : Veillez à choisir Standard en tant que niveau de stockage lors de la création du bucket dans Oracle Cloud Infrastructure Object Storage car les fichiers de trace SQL ne sont pris en charge qu'avec les buckets créés dans le niveau de stockage standard. Pour plus d'informations sur le niveau Object Storage standard, reportez-vous à Présentation des niveaux de stockage.
-
Créez des informations d'identification pour votre compte Cloud Object Storage à l'aide de
DBMS_CLOUD.CREATE_CREDENTIAL.Exemple :
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'adb_user@example.com', password => 'password' );END; /Reportez-vous à Procédure CREATE_CREDENTIAL pour plus d'informations sur les arguments des paramètres
usernameetpasswordpour les différents services de stockage d'objets. -
Définissez des paramètres d'initialisation pour indiquer l'URL Cloud Object Storage d'un bucket pour les fichiers trace SQL et pour indiquer les informations d'identification permettant d'accéder à Cloud Object Storage.
-
Définissez la propriété de base de données
DEFAULT_LOGGING_BUCKETpour indiquer le bucket de journalisation sur Cloud Object Storage.Par exemple, si vous créez le bucket avec 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/';Où
namespace-stringest l'espace de noms OCI Object Storage et bucket_name est le nom du bucket que vous avez créé précédemment. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.Pour obtenir la liste des régions, reportez-vous à Régions et domaines de disponibilité.
La banque d'objets cloud que vous utilisez pour les fichiers de trace SQL peut être n'importe quelle banque d'objets cloud prise en charge par Autonomous AI Database.
-
Définissez la propriété de base de données
DEFAULT_CREDENTIALsur les informations d'identification créées à l'étape 2.Exemple :
ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.DEF_CRED_NAME';Vous devez inclure le nom du schéma avec les informations d'identification. Dans cet exemple, le schéma est
ADMIN.
-
Activer la fonction de trace SQL sur la base de données Autonomous AI
Remarque : l'activation de la fonction de trace SQL peut dégrader les performances de l'application pour la session lorsque la collecte de trace est activée. Cet impact sur les performances est attendu en raison de la surcharge liée à la collecte et à l'enregistrement des données de trace.
Pour activer la fonction de trace SQL pour une session de base de données, , procédez comme suit :
-
Définissez éventuellement un identificateur client pour l'application. Cette étape est facultative, mais elle est recommandée. La fonction de trace SQL utilise l'identificateur client comme composant du nom du fichier trace lorsque ce dernier est écrit dans la banque d'objets cloud.
Exemple :
BEGIN DBMS_SESSION.SET_IDENTIFIER('sqlt_test'); END; / -
Définissez éventuellement un nom de module pour l'application. Cette étape est facultative, mais elle est recommandée. La fonction de trace SQL utilise le nom du module comme composant du nom du fichier trace lorsque ce dernier est écrit dans la banque d'objets cloud.
Exemple :
BEGIN DBMS_APPLICATION_INFO.SET_MODULE('modname', null); END; / -
Activez l'utilitaire SQL Trace.
ALTER SESSION SET SQL_TRACE = TRUE; -
Exécutez votre charge globale.
Cette étape consiste à exécuter l'ensemble de l'application ou des parties spécifiques de l'application. Lorsque vous exécutez la charge globale dans la session de base de données, les données de trace SQL sont collectées.
-
Désactivez la fonction de trace SQL.
Lorsque vous désactivez la fonction de trace SQL, les données collectées pour la session sont écrites dans une table de la session et dans un fichier trace du bucket que vous configurez lorsque vous configurez la fonction de trace SQL.
Désactiver la fonction de trace SQL
Pour désactiver la fonction de trace SQL, procédez comme suit :
-
Désactivez l'utilitaire SQL Trace.
ALTER SESSION SET SQL_TRACE = FALSE; -
Si nécessaire pour votre environnement, vous pouvez éventuellement réinitialiser la propriété de base de données
DEFAULT_LOGGING_BUCKETafin d'effacer la valeur du bucket de journalisation sur Cloud Object Storage.Exemple :
ALTER DATABASE PROPERTY SET DEFAULT_LOGGING_BUCKET = '';
Lorsque vous désactivez la fonction de trace SQL, les données de trace collectées pendant l'exécution de la session avec la fonction de trace activée sont copiées dans une table et envoyées vers un fichier trace sur la banque d'objets cloud.
Visualisation du fichier trace enregistré dans la banque d'objets cloud sur la base de données Autonomous AI
Vous utilisez des données de fichier trace SQL pour analyser les performances des applications sur Autonomous AI Database. Lorsque vous désactivez la trace SQL dans votre session de base de données, les données sont écrites dans le bucket de banque d'objets cloud configuré avec DEFAULT_LOGGING_BUCKET.
La fonction SQL Trace écrit les données de trace collectées dans la session dans la banque d'objets cloud au format suivant :
default_logging_bucket/sqltrace/clientID/moduleName/sqltrace_numID1_numID2.trc
Les composants du nom de fichier sont les suivants :
-
default_logging_bucket : valeur de la propriété de base de données
DEFAULT_LOGGING_BUCKET. Pour plus d'informations, reportez-vous à Configuration de la trace SQL sur la base de données Autonomous AI. -
clientID: est l'identifiant du client. Pour plus d'informations, reportez-vous à Activation de la fonction de trace SQL sur la base de données Autonomous AI. -
moduleName: nom du module. Pour plus d'informations, reportez-vous à Activation de la fonction de trace SQL sur la base de données Autonomous AI. -
numID1_numID2: deux identificateurs fournis par l'utilitaire SQL Trace. Les valeurs numériquesnumID1etnumID2distinguent chaque nom de fichier trace des autres sessions à l'aide de la fonction de trace et de la création de fichiers trace dans le même bucket dans Cloud Object Storage.Lorsque le service de base de données prend en charge le parallélisme et qu'une session exécute une requête parallèle, la fonction SQL Trace peut générer plusieurs fichiers trace avec des valeurs
numID1etnumID2différentes.Remarque : lorsque la fonction de trace SQL est activée et désactivée plusieurs fois au cours de la même session, chaque itération de trace génère un fichier trace distinct dans la banque d'objets cloud. Pour éviter d'écraser les traces précédentes générées dans la session, les fichiers générés suivent la même convention de dénomination et ajoutent un suffixe numérique au nom du fichier trace. Ce suffixe numérique commence par le nombre 1 et est incrémenté de 1 pour chaque itération de trace par la suite.
Par exemple, voici un exemple de nom de fichier trace généré lorsque vous définissez l'identificateur client sur "sql_test" et le nom de module sur "modname" :
sqltrace/sqlt_test/modname/sqltrace_5415_56432.trc
Vous pouvez exécuter TKPROF pour convertir le fichier trace en fichier de sortie lisible.
-
Copiez le fichier trace de la banque d'objets vers votre système local.
-
Accédez au répertoire dans lequel le fichier trace est enregistré.
-
Exécutez l'utilitaire
TKPROFà partir de l'invite du système d'exploitation à l'aide de la syntaxe suivante :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]Les fichiers d'entrée et de sortie sont les seuls arguments requis.
-
Pour afficher l'aide en ligne, appelez
TKPROFsans arguments.Pour plus d'informations sur l'utilisation de l'utilitaire
TKPROF, reportez-vous à la section Tools for End-to-End Application Tracing dans Oracle Database 19c SQL Tuning Guide ou Oracle Database 26ai SQL Tuning Guide.
Visualisation des données de trace dans la vue SESSION_CLOUD_TRACE sur la base de données Autonomous AI
Lorsque vous activez la fonction de trace SQL, les mêmes informations de trace enregistrées dans le fichier trace de la banque d'objets cloud sont disponibles dans la vue SESSION_CLOUD_TRACE de la session dans laquelle la fonction de trace a été activée.
Tant que vous êtes dans la session de base de données, vous pouvez visualiser les données de trace SQL dans la vue SESSION_CLOUD_TRACE. La vue SESSION_CLOUD_TRACE comprend deux colonnes : ROW_NUMBER et TRACE.
DESC SESSION_CLOUD_TRACE
Name Null? Type
---------- ----- ------------------------------
ROW_NUMBER NUMBER
TRACE VARCHAR2(32767)
Le paramètre ROW_NUMBER indique l'ordre des données de trace trouvées dans la colonne TRACE. Chaque ligne de sortie de trace écrite dans un fichier trace devient une ligne de la table et est disponible dans la colonne TRACE.
Une fois la fonction de trace SQL désactivée pour la session, vous pouvez exécuter des requêtes sur la vue SESSION_CLOUD_TRACE.
Exemple :
SELECT trace FROM SESSION_CLOUD_TRACE ORDERBY row_number;
Les données dans SESSION_CLOUD_TRACE persistent pendant toute la durée de la session. Une fois la session déconnectée ou fermée, les données ne sont plus disponibles.
Si SQL Trace est activé et désactivé plusieurs fois au cours de la même session, SESSION_CLOUD_TRACE affiche les données de trace de toutes les itérations de manière cumulée. Par conséquent, la réactivation de la fonction de trace dans une session après la désactivation de la fonction de trace précédente ne supprime pas les données de trace générées par l'itération précédente.