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

Utilisez la fonction de trace SQL pour identifier la source d'une charge globale excessive de la base de données, telle qu'une instruction SQL à forte charge dans votre application.

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

Affiche les étapes de configuration de la trace SQL sur la base de données d'IA autonome.

Note

Si vous activez la fonction de suivi SQL, la performance de votre application pour la session peut être dégradée lorsque la collecte de traces est activée. Cette incidence négative 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 configurer la base de données pour la trace SQL, procédez comme suit :

  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 Oracle Cloud Infrastructure Object Storage, procédez de la façon suivante

    1. Ouvrez la console Oracle Cloud Infrastructure.
    2. Sélectionnez Stockage dans le menu.
    3. Sous Stockage, sélectionnez Stockage d'objets et stockage d'archives.
    4. Cliquez sur Créer un seau.
    5. Dans la page Créer un seau, entrez le nom du seau et cliquez sur Créer.

    Si vous utilisez un service Oracle Cloud Infrastructure Object Storage, notez que les fichiers de suivi SQL ne sont pris en charge que pour les seaux créés dans le niveau de stockage standard. Veillez à sélectionner Standard comme niveau de stockage lors de la création du seau. Voir Aperçu du service de stockage d'objets pour plus d'informations sur le niveau de stockage d'objets standard.

  2. Créez des données d'identification pour votre compte de stockage d'objets en nuage à 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;
    /

    Pour Oracle Cloud Infrastructure, username est votre nom d'utilisateur Oracle Cloud Infrastructure. password est votre jeton d'authentification Oracle Cloud Infrastructure. Pour plus d'informations, voir Utilisation de jetons d'authentification.

    Voir Procédure CREATE_CREDENTIAL pour plus de détails sur les paramètres et leurs valeurs, selon le service de stockage d'objets en nuage.

  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 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/';

      namespace-string est l'espace de noms Oracle Cloud Infrastructure Object Storage 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. Affectez à la propriété de base de données DEFAULT_CREDENTIAL les données d'identification que vous avez créées à l'étape 2.

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

      Exemple :

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

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

Affiche les étapes permettant d'activer la fonction de trace SQL pour la session de base de données.

Note

Si vous activez le suivi SQL, la performance de votre application pour la session peut être dégradée lorsque la collecte de traces est activée. Cette incidence négative sur les performances est attendue en raison des frais généraux liés à la collecte et à l'enregistrement des données de trace.

Avant d'activer la fonction de trace SQL, vous devez configurer la base de données pour enregistrer les fichiers de trace SQL. Pour plus d'informations, voir Configurer le suivi SQL sur une base de données d'IA autonome.

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

  1. (Facultatif) 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.

    Exemple :

    BEGIN
      DBMS_SESSION.SET_IDENTIFIER('sqlt_test');
    END;
    /
  2. (Facultatif) 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.

    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. Voir Désactiver le suivi SQL sur la base de données d'IA autonome pour plus de détails.

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

Affiche les étapes pour désactiver la trace SQL sur la base de données d'IA autonome.

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. (Facultatif) 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.

    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. Vous disposez de deux options pour afficher les données de trace :

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

Décrit le nom du fichier de sortie pour les fichiers trace SQL et affiche les commandes à utiliser TKPROF pour organiser et afficher les données du fichier trace.

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 :

  • default_logging_bucket : Il s'agit de la valeur de la propriété de base de données DEFAULT_LOGGING_BUCKET. Pour plus d'informations, voir Configurer le suivi SQL sur une base de données d'IA autonome.

  • clientID : Identificateur du client. Pour plus d'informations, voir Activer le suivi SQL sur la base de données d'IA autonome.

  • moduleName : Il s'agit du nom du module. Pour plus d'informations, voir Activer le suivi SQL sur la base de données d'IA autonome.

  • numID1_numID2 : deux identificateurs fournis par l'utilitaire SQL Trace. Les valeurs numériques numID1 et numID2 distinguent de manière unique chaque nom de fichier trace des autres sessions à l'aide de la fonction de trace et de la création de fichiers de trace dans le même seau du stockage d'objets en nuage.

    Lorsque le service de base de données prend en charge le parallélisme et qu'une session exécute une interrogation parallèle, l'installation SQL Trace peut produire plusieurs fichiers de trace avec différentes valeurs numID1 et numID2.

Note

Lorsque la trace SQL est activée et désactivée plusieurs fois au sein de la même session, chaque itération de trace génère un fichier de trace distinct dans le magasin d'objets en nuage. Pour éviter de remplacer les traces précédentes générées dans la session, les fichiers générés par la suite suivent la même convention d'attribution de nom 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 traçage par la suite.

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.

Voir "Outils de suivi d'application de bout en bout" dans le guide de réglage SQL pour Oracle Database pour plus d'informations sur l'utilisation de l'utilitaire TKPROF.

Voir les données de trace dans la vue SESSION_CLOUD_TRACE de la base de données autonome avec intelligence artificielle

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.

Exemple :

SELECT trace FROM SESSION_CLOUD_TRACE ORDER BY 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.