Package DBMS_USERDIAG

Le package DBMS_USERDIAG fournit des sous-programmes permettant d'activer et de désactiver la fonction de trace SQL pour une instruction SQL, une session, un identificateur client ou un service applicatif, un module et une action spécifiques. Vous pouvez également collecter des valeurs de variable attachée, des informations sur les événements Wait et des statistiques sur les plans d'exécution pour obtenir des diagnostics plus détaillés.

Procédure SESSION_SQL_TRACE_ENABLE

Utilisez la procédure DBMS_USERDIAG.SESSION_SQL_TRACE_ENABLE pour activer la fonction de trace SQL pour la session en cours ou pour les sessions qui correspondent aux attributs de trace indiqués.

Syntaxe

DBMS_USERDIAG.SESSION_SQL_TRACE_ENABLE (
    level         IN BINARY_INTEGER DEFAULT 1,
    sid           IN BINARY_INTEGER DEFAULT 0,
    ser           IN BINARY_INTEGER DEFAULT 0,
    instance_name IN VARCHAR2       DEFAULT NULL,
    binds         IN BINARY_INTEGER DEFAULT 0,
    waits         IN BINARY_INTEGER DEFAULT 0,
    client_id     IN VARCHAR2       DEFAULT NULL,
    service       IN VARCHAR2       DEFAULT NULL,
    module        IN VARCHAR2       DEFAULT NULL,
    action        IN VARCHAR2       DEFAULT NULL,
    plan_stat     IN VARCHAR2       DEFAULT NULL,
    sql_id        IN VARCHAR2       DEFAULT NULL
);

Paramètres

Paramètre Description
level Indique le niveau de trace SQL. Le niveau 1 collecte les données de trace de base. Le niveau 4 inclut des informations sur les variables attachées et le niveau 8 inclut des informations sur les événements Wait. Les valeurs peuvent être combinées. Ce paramètre est facultatif et la valeur par défaut est 1.
sid Indique l'identificateur de session de la session cible. La valeur par défaut, 0, identifie la session en cours.
ser Indique le numéro de série de la session cible. La valeur par défaut, 0, identifie la session en cours. Utilisez sid et ser ensemble pour identifier une autre session.
instance_name Indique l'instance de base de données qui contient la session cible.
binds Indique si les informations sur les variables attachées doivent être incluses. Une valeur différente de zéro inclut les informations de variable attachée et ajoute la fonction de trace de niveau 4. La valeur par défaut est 0.
waits Indique si les informations sur les événements Wait doivent être incluses. Une valeur différente de zéro inclut les informations sur les événements Wait et ajoute le suivi de niveau 8. La valeur par défaut est 0.
client_id Indique l'identificateur client utilisé pour mettre en correspondance les sessions entre les instances de base de données.
service Indique le service de base de données utilisé pour mettre en correspondance les sessions.
module Indique le module d'application utilisé avec service pour mettre en correspondance les sessions.
action Indique l'action d'application utilisée avec service et module pour mettre en correspondance les sessions.
plan_stat Indique l'option de statistiques du plan d'exécution. Les valeurs valides sont NEVER, FIRST_EXECUTION, ALL_EXECUTIONS et ADAPTIVE. La valeur par défaut est FIRST_EXECUTION.
sql_id Indique l'ID SQL. Lorsqu'elle est indiquée, la fonction de trace est limitée à l'instruction SQL portant cet ID.

Exemple

L'exemple suivant active la fonction de trace SQL pour une instruction SQL spécifique et inclut les informations relatives aux variables attachées et aux événements Wait :

BEGIN
    DBMS_USERDIAG.SESSION_SQL_TRACE_ENABLE(
        sql_id    => '5yka4rvxpbjc6',
        binds     => 1,
        waits     => 1,
        plan_stat => 'ADAPTIVE');
END;
/

L'exemple suivant active la fonction de trace SQL pour une session différente en utilisant son ID de session et son numéro de série :

BEGIN
    DBMS_USERDIAG.SESSION_SQL_TRACE_ENABLE(
        sid   => 39,
        ser   => 15593,
        binds => 1,
        waits => 1);
END;
/

Remarques sur l'utilisation

  • Vous devez être connecté en tant qu'utilisateur ADMIN ou disposer du privilège EXECUTE sur le package DBMS_USERDIAG pour exécuter cette procédure.
  • La fonction de trace SQL est désactivée par défaut. Activez une méthode de trace pour une règle de trace, exécutez la charge globale et désactivez la fonction de trace en utilisant les mêmes attributs d'identification.
  • Indiquez une méthode de trace pour une règle de trace. Vous pouvez identifier les cibles de trace par ID SQL, session, identificateur client, service, module et action.
  • Des niveaux de trace plus élevés, notamment la fonction de trace des variables attachées et des événements Wait, peuvent générer des fichiers trace volumineux et affecter les performances des applications.
  • Un utilisateur local ne peut pas suivre une session appartenant à un utilisateur commun.
  • DBMS_USERDIAG.ENABLE_SQL_TRACE_EVENT est en phase d'abandon. Utilisez plutôt SESSION_SQL_TRACE_ENABLE et SESSION_SQL_TRACE_DISABLE.

Pour plus d'informations, reportez-vous à Procédure SESSION_SQL_TRACE_DISABLE.

Procédure SESSION_SQL_TRACE_DISABLE

Utilisez la procédure DBMS_USERDIAG.SESSION_SQL_TRACE_DISABLE pour désactiver la fonction de trace SQL pour la session en cours ou pour les sessions qui correspondent aux attributs de trace indiqués.

Désactivez la fonction de trace une fois la charge globale terminée. Lorsque la fonction de trace est désactivée, la base de données télécharge les données de trace collectées vers le bucket Cloud Object Storage configuré pour la fonction de trace SQL. Vous pouvez consulter les données de trace dans le fichier trace généré ou dans la vue SESSION_CLOUD_TRACE.

Syntaxe

DBMS_USERDIAG.SESSION_SQL_TRACE_DISABLE (
    level         IN BINARY_INTEGER DEFAULT 1,
    sid           IN BINARY_INTEGER DEFAULT 0,
    ser           IN BINARY_INTEGER DEFAULT 0,
    instance_name IN VARCHAR2       DEFAULT NULL,
    binds         IN BINARY_INTEGER DEFAULT 0,
    waits         IN BINARY_INTEGER DEFAULT 0,
    client_id     IN VARCHAR2       DEFAULT NULL,
    service       IN VARCHAR2       DEFAULT NULL,
    module        IN VARCHAR2       DEFAULT NULL,
    action        IN VARCHAR2       DEFAULT NULL,
    plan_stat     IN VARCHAR2       DEFAULT NULL,
    sql_id        IN VARCHAR2       DEFAULT NULL
);

Paramètres

Paramètre Description
level Indique le niveau de trace SQL. Le niveau 1 collecte les données de trace de base. Le niveau 4 inclut des informations sur les variables attachées et le niveau 8 inclut des informations sur les événements Wait. Les valeurs peuvent être combinées. Ce paramètre est facultatif et la valeur par défaut est 1.
sid Indique l'identificateur de session de la session cible. La valeur par défaut, 0, identifie la session en cours.
ser Indique le numéro de série de la session cible. La valeur par défaut, 0, identifie la session en cours. Utilisez sid et ser ensemble pour identifier une autre session.
instance_name Indique l'instance de base de données qui contient la session cible.
binds Indique si les informations sur les variables attachées doivent être incluses. Une valeur différente de zéro inclut les informations de variable attachée et ajoute la fonction de trace de niveau 4. La valeur par défaut est 0.
waits Indique si les informations sur les événements Wait doivent être incluses. Une valeur différente de zéro inclut les informations sur les événements Wait et ajoute le suivi de niveau 8. La valeur par défaut est 0.
client_id Indique l'identificateur client utilisé pour mettre en correspondance les sessions entre les instances de base de données.
service Indique le service de base de données utilisé pour mettre en correspondance les sessions.
module Indique le module d'application utilisé avec service pour mettre en correspondance les sessions.
action Indique l'action d'application utilisée avec service et module pour mettre en correspondance les sessions.
plan_stat Indique l'option de statistiques du plan d'exécution. Les valeurs valides sont NEVER, FIRST_EXECUTION, ALL_EXECUTIONS et ADAPTIVE. La valeur par défaut est FIRST_EXECUTION.
sql_id Indique l'ID SQL. Lorsqu'elle est indiquée, la fonction de trace est limitée à l'instruction SQL portant cet ID.

Indiquez les mêmes attributs d'identification que ceux que vous avez utilisés lorsque vous avez activé la fonction de trace.

Exemple

L'exemple suivant désactive la fonction de trace SQL pour l'instruction SQL identifiée par 5yka4rvxpbjc6 :

BEGIN
    DBMS_USERDIAG.SESSION_SQL_TRACE_DISABLE(
        sql_id => '5yka4rvxpbjc6');
END;
/

L'exemple suivant désactive la trace SQL pour la session identifiée par l'ID de session 39 et le numéro de série 15593 :

BEGIN
    DBMS_USERDIAG.SESSION_SQL_TRACE_DISABLE(
        sid => 39,
        ser => 15593);
END;
/

Remarques sur l'utilisation

  • Utilisez les mêmes attributs d'identification dans SESSION_SQL_TRACE_DISABLE que dans SESSION_SQL_TRACE_ENABLE.
  • Si la session cible se ferme avant que la fonction de trace ne soit désactivée, la base de données télécharge le fichier trace lorsque la session se termine.
  • Les données de trace peuvent contenir des données d'application. Protégez correctement le bucket et les informations d'identification Cloud Object Storage.
  • Les données de trace sont disponibles dans la vue SESSION_CLOUD_TRACE pendant la durée de la session dans laquelle la fonction de trace a été activée. Une fois la session terminée, les données ne sont plus disponibles dans la vue.

Pour plus d'informations, reportez-vous à Procédure SESSION_SQL_TRACE_ENABLE.