Utiliser la fonction de suivi SQL sur une base de données d'intelligence artificielle autonome sur une infrastructure Exadata dédiée

Vous pouvez utiliser la fonction de suivi SQL avec Autonomous AI Database sur une infrastructure Exadata dédiée pour vous aider à identifier la source d'une charge de travail de base de données excessive, telle qu'un énoncé SQL à forte consommation de ressources dans votre application.

À propos de la trace SQL

Lorsqu'une opération d'application prend plus de temps que prévu, l'obtention d'une trace de tous les énoncés SQL exécutés dans le cadre de cette opération avec des détails tels que le temps passé par cet énoncé SQL dans les phases d'analyse, d'exécution et d'extraction vous aidera à identifier et à résoudre la cause du problème de performance. Pour ce faire, vous pouvez utiliser la fonction de trace SQL sur une base de données autonome d'IA.

La trace SQL est désactivée par défaut dans Autonomous AI Database. 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 :

Configurer la trace SQL sur une base de données d'intelligence artificielle autonome

Pour configurer votre base de données Autonomous AI Database pour la trace SQL, procédez de la façon suivante :

  1. Créez un seau pour stocker les fichiers de trace dans votre stockage d'objets en nuage.

    Pour enregistrer les fichiers de suivi SQL, le seau peut se trouver dans n'importe quel magasin d'objets en nuage pris en charge par Autonomous AI Database. Par exemple, pour créer un seau dans le service de stockage d'objets pour Oracle Cloud Infrastructure Object Storage, consultez Création d'un seau.

    Conseil : Assurez-vous de choisir Standard comme niveau de stockage lors de la création de votre seau dans Oracle Cloud Infrastructure Object Storage, car les fichiers de suivi SQL ne sont pris en charge que pour les seaux créés dans le niveau de stockage standard. Pour plus d'informations sur le niveau de stockage d'objets standard, voir Présentation des niveaux de stockage.

  2. Créez des données d'identification pour votre compte de stockage d'objets en nuage à l'aide de DBMS_CLOUD.CREATE_CREDENTIAL.

    Par exemple :

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

    Voir Procédure CREATE_CREDENTIAL pour plus de détails sur les arguments des paramètres username et password pour différents services de stockage d'objets.

  3. Définissez les paramètres d'initialisation pour spécifier l'URL du stockage d'objets en nuage pour un seau pour les fichiers de suivi SQL et pour spécifier les données d'identification permettant d'accéder au stockage d'objets en nuage.

    1. Définissez la propriété de base de données DEFAULT_LOGGING_BUCKET pour spécifier le seau de journalisation dans le stockage d'objets en nuage.

      Par exemple, si vous créez le seau avec le service de stockage d'objets pour Oracle Cloud Infrastructure (OCI) :

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

      namespace-string est l'espace de noms du service de stockage d'objets pour OCI et bucket_name est le nom du seau que vous avez créé précédemment. Pour plus d'informations, voir Présentation des espaces de noms du stockage d'objets.

      Pour obtenir la liste des régions, voir Régions et domaines de disponibilité.

      Le magasin d'objets en nuage que vous utilisez pour les fichiers de suivi SQL peut être n'importe quel magasin d'objets en nuage pris en charge par Autonomous AI Database.

    2. Réglez la propriété de base de données DEFAULT_CREDENTIAL aux données d'identification que vous avez créées à l'étape 2.

      Par exemple :

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

      L'inclusion du nom du schéma avec les données d'identification est requise. Dans cet exemple, le schéma est ADMIN.

Activer la fonction de suivi SQL sur une base de données d'intelligence artificielle autonome

Note : L'activation de la fonction de trace SQL peut nuire à la performance de votre application pour la session pendant que la collecte de trace est activée. Cette incidence sur les performances est attendue en raison des frais généraux liés à 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 :

  1. Facultativement, définissez un identificateur de client pour l'application. Cette étape est facultative mais recommandée. La fonction de trace SQL utilise l'identificateur client comme composant du nom du fichier trace lors de l'écriture dans le magasin d'objets en nuage.

    Par exemple :

     BEGIN
       DBMS_SESSION.SET_IDENTIFIER('sqlt_test');
     END;
     /
    
  2. Facultativement, définissez un nom de module pour l'application. Cette étape est facultative mais recommandée. La fonction de trace SQL utilise le nom du module en tant que composant du nom du fichier trace lorsque le fichier trace est écrit dans le magasin d'objets en nuage.

    Par exemple :

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

     ALTER SESSION SET SQL_TRACE = TRUE;
    
  4. Exécutez votre charge de travail.

    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.

  5. Désactiver le suivi 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 seau que vous configurez lors de la configuration de la fonction de trace SQL.

Désactiver la trace SQL

Pour désactiver la fonction de trace SQL, procédez comme suit :

  1. Désactivez la fonction SQL Trace.

     ALTER SESSION SET SQL_TRACE = FALSE;
    
  2. Facultativement, selon les besoins de votre environnement, vous pouvez réinitialiser la propriété de base de données DEFAULT_LOGGING_BUCKET pour effacer la valeur du seau de journalisation dans le stockage d'objets en nuage.

    Par 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 à un fichier de trace dans le magasin d'objets en nuage.

Voir le fichier de trace enregistré dans le magasin d'objets en nuage sur la base de données d'intelligence artificielle autonome

Vous utilisez les données du fichier de suivi SQL pour analyser la performance 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 seau du magasin d'objets en nuage configuré avec DEFAULT_LOGGING_BUCKET.

L'utilitaire SQL Trace écrit les données de trace collectées dans la session dans le magasin d'objets en nuage dans le format suivant :

default_logging_bucket/sqltrace/clientID/moduleName/sqltrace_numID1_numID2.trc

Les composants du nom de fichier sont les suivants :

Par exemple, voici un exemple de nom de fichier trace généré lorsque vous réglez l'identificateur de client à "sql_test" et le nom du module à "modname" :

sqltrace/sqlt_test/modname/sqltrace_5415_56432.trc

Vous pouvez exécuter TKPROF pour traduire le fichier trace dans un fichier de sortie lisible.

  1. Copiez le fichier trace du magasin d'objets vers votre système local.

  2. Accédez au répertoire dans lequel le fichier trace est enregistré.

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

  4. Pour voir l'aide en ligne, appelez TKPROF sans arguments.

    Pour plus d'informations sur l'utilisation de l'utilitaire TKPROF, voir Outils de suivi d'application de bout en bout dans le guide de réglage SQL pour Oracle Database 19c ou le guide de réglage SQL pour Oracle Database 26ai.

Voir les données de trace dans la vue SESSION_CLOUD_TRACE de la base de données IA autonome

Lorsque vous activez la fonction de trace SQL, les mêmes informations de trace enregistrées dans le fichier de trace du magasin d'objets en nuage sont disponibles dans la vue SESSION_CLOUD_TRACE de la session dans laquelle la trace a été activée.

Pendant que vous êtes encore dans la session de base de données, vous pouvez voir 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)

ROW_NUMBER spécifie 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 rangée dans la table et est disponible dans la colonne TRACE.

Après avoir désactivé la fonction de trace SQL pour la session, vous pouvez exécuter des interrogations sur la vue SESSION_CLOUD_TRACE.

Par exemple :

SELECT trace FROM SESSION_CLOUD_TRACE ORDERBY row_number;

Les données dans SESSION_CLOUD_TRACE sont conservées pendant 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 sein de la même session, SESSION_CLOUD_TRACE affiche les données de trace pour toutes les itérations de manière cumulative. Ainsi, réactiver le traçage dans une session après avoir précédemment désactivé le traçage ne supprime pas les données de trace produites par l'itération précédente.