SQL-Tracing in Autonomous Database ausführen

Mit SQL-Tracing können Sie die Quelle einer übermäßigen Datenbank-Workload identifizieren, z.B. eine High-Load-SQL-Anweisung in Ihrer Anwendung.

SQL-Tracing in Autonomous Database konfigurieren

Zeigt die Schritte zum Konfigurieren des SQL-Tracings in Autonomous Database an.

Hinweis

Wenn Sie SQL Tracing für die Anwendungsperformance für die Session aktivieren, kann dies zu einer Verschlechterung führen, während die Traceerfassung aktiviert ist. Diese negative Auswirkung auf die Performance wird aufgrund des Overheads beim Erfassen und Speichern von Tracedaten erwartet.

So konfigurieren Sie die Datenbank für das SQL-Tracing:

  1. Erstellen Sie einen Bucket, in dem Tracedateien in Ihrem Cloud-Objektspeicher gespeichert werden.

    Um die SQL-Tracingdateien zu speichern, kann sich der Bucket in jedem Cloud-Objektspeicher befinden, den Autonomous Database unterstützt.

    Beispiel: Um einen Bucket in Oracle Cloud Infrastructure Object Storage zu erstellen, gehen Sie wie folgt vor:

    1. Öffnen Sie die Oracle Cloud Infrastructure-Konsole.
    2. Wählen Sie Speicher aus dem Menü.
    3. Wählen Sie unter "Speicher" die Option Object Storage und Archive Storage aus.
    4. Klicken Sie auf Bucket erstellen.
    5. Geben Sie auf der Seite "Bucket erstellen" den Bucket-Namen ein, und klicken Sie auf Erstellen.

    Wenn Sie einen Oracle Cloud Infrastructure Object Storage verwenden, beachten Sie, dass SQL-Tracingdateien nur mit Buckets unterstützt werden, die in der Standardspeicherebene erstellt wurden. Stellen Sie sicher, dass Sie beim Erstellen des Buckets Standard als Speicherebene auswählen. Informationen zur Standard-Object Storage-Tier finden Sie unter Überblick über Object Storage.

  2. Erstellen Sie mit DBMS_CLOUD.CREATE_CREDENTIAL Zugangsdaten für Ihren Cloud Object Storage-Account.

    Beispiel:

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

    In Oracle Cloud Infrastructure ist username Ihr Oracle Cloud Infrastructure-Benutzername. password ist Ihr Oracle Cloud Infrastructure-Authentifizierungstoken. Weitere Informationen finden Sie unter Mit Authentifizierungstoken arbeiten.

    Einzelheiten zu den Parametern und deren Werten finden Sie unter Prozedur CREATE_CREDENTIAL, je nach Cloud-Objektspeicher.

  3. Legen Sie Initialisierungsparameter fest, um die Cloud Object Storage-URL für einen Bucket für SQL-Trace-Dateien anzugeben und die Zugangsdaten für den Zugriff auf den Cloud Object Storage anzugeben.
    1. Legen Sie die Datenbankeigenschaft DEFAULT_LOGGING_BUCKET fest, um den Logging-Bucket in Cloud Object Storage anzugeben.

      Beispiel: Wenn Sie den Bucket mit Oracle Cloud Infrastructure Object Storage erstellen:

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

      Dabei ist namespace-string der Oracle Cloud Infrastructure Object Storage-Namespace, und bucket_name der Name des zuvor erstellten Buckets. Weitere Informationen finden Sie unter Object Storage-Namespaces.

      Eine Liste der Regionen finden Sie unter Regionen und Availability-Domains.

      Der Cloud-Objektspeicher, den Sie für SQL-Tracingdateien verwenden, kann ein beliebiger Cloud-Objektspeicher sein, den Autonomous Database unterstützt.

    2. Legen Sie die Datenbankeigenschaft DEFAULT_CREDENTIAL auf die Zugangsdaten fest, die Sie in Schritt 2 erstellt haben.

      Die Aufnahme des Schemanamens mit den Zugangsdaten ist erforderlich. In diesem Beispiel ist das Schema "ADMIN".

      Beispiel:

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

SQL-Tracing in Autonomous Database aktivieren

Zeigt die Schritte zum Aktivieren des SQL-Tracings für die Datenbanksession an.

Hinweis

Wenn Sie das SQL-Tracing für die Anwendungsperformance für die Session aktivieren, kann es zu einer Verschlechterung der Session kommen, während die Traceerfassung aktiviert ist. Diese negative Auswirkung auf die Performance wird aufgrund des Overheads beim Erfassen und Speichern von Tracedaten erwartet.

Bevor Sie SQL-Tracing aktivieren, müssen Sie die Datenbank so konfigurieren, dass SQL-Trace-Dateien gespeichert werden. Weitere Informationen finden Sie unter SQL-Tracing in Autonomous Database konfigurieren.

So aktivieren Sie das SQL-Tracing:

  1. (Optional) Legen Sie einen Client-Identifier für die Anwendung fest. Dieser Schritt ist optional, wird jedoch empfohlen. Beim SQL-Tracing wird die Client-ID als Komponente des Tracedateinamens verwendet, wenn die Tracedatei in den Cloud-Objektspeicher geschrieben wird.

    Beispiel:

    BEGIN
      DBMS_SESSION.SET_IDENTIFIER('sqlt_test');
    END;
    /
  2. (Optional) Legen Sie einen Modulnamen für die Anwendung fest. Dieser Schritt ist optional, wird jedoch empfohlen. Beim SQL-Tracing wird der Modulname als Komponente des Tracedateinamens verwendet, wenn die Tracedatei in den Cloud-Objektspeicher geschrieben wird.

    Beispiel:

    BEGIN
      DBMS_APPLICATION_INFO.SET_MODULE('modname', null);
    END;
    /
  3. Aktivieren Sie die SQL Trace-Funktion.
    ALTER SESSION SET SQL_TRACE = TRUE;
  4. Führen Sie Ihre Workload aus.

    In diesem Schritt wird die gesamte Anwendung oder bestimmte Teile der Anwendung ausgeführt. Während Sie Ihre Workload in der Datenbank-Session ausführen, werden SQL-Tracing-Daten erfasst.

  5. SQL-Tracing deaktivieren.

    Wenn Sie das SQL-Tracing deaktivieren, werden die erfassten Daten für die Session in eine Tabelle in Ihrer Session und in eine Tracedatei im Bucket geschrieben, den Sie beim Einrichten des SQL-Tracings konfigurieren. Weitere Informationen finden Sie unter SQL-Tracing in Autonomous Database deaktivieren.

SQL-Tracing in Autonomous Database deaktivieren

Zeigt die Schritte zum Deaktivieren des SQL-Tracings in Autonomous Database an.

So deaktivieren Sie das SQL-Tracing:

  1. Deaktivieren Sie die SQL Trace-Funktion.
    ALTER SESSION SET SQL_TRACE = FALSE;
  2. (Optional) Falls für Ihre Umgebung erforderlich, können Sie die Datenbankeigenschaft DEFAULT_LOGGING_BUCKET zurücksetzen, um den Wert für den Logging-Bucket in Cloud Object Storage zu löschen.

    Beispiel:

    ALTER DATABASE PROPERTY SET DEFAULT_LOGGING_BUCKET = '';

Wenn Sie das SQL-Tracing deaktivieren, werden die während der Sessionausführung erfassten Tracingdaten mit aktiviertem Tracing in eine Tabelle kopiert und an eine Tracedatei im Cloud-Objektspeicher gesendet. Sie haben zwei Möglichkeiten, Tracedaten anzuzeigen:

Im Cloud-Objektspeicher gespeicherte Tracedatei in Autonomous Database anzeigen

Beschreibt die Benennung der Ausgabedatei für SQL-Trace-Dateien und zeigt die Befehle an, mit denen TKPROF Tracedateidaten organisiert und angezeigt werden.

Mit SQL-Trace-Dateidaten können Sie die Anwendungsperformance in Autonomous Database analysieren. Wenn Sie das SQL-Trace in der Datenbanksession deaktivieren, werden Daten in den mit DEFAULT_LOGGING_BUCKET konfigurierten Cloud-Objektspeicher-Bucket geschrieben.

Die SQL Trace-Funktion schreibt die in der Session erfassten Tracedaten im folgenden Format in den Cloud-Objektspeicher:

default_logging_bucket/sqltrace/clientID/moduleName/sqltrace_numID1_numID2.trc

Die Komponenten des Dateinamens sind:

  • default_logging_bucket: Der Wert der Datenbankeigenschaft DEFAULT_LOGGING_BUCKET. Weitere Informationen finden Sie unter SQL-Tracing in Autonomous Database konfigurieren.

  • clientID: ist die Client-ID. Weitere Informationen finden Sie unter SQL-Tracing in Autonomous Database aktivieren.

  • moduleName: ist der Modulname. Weitere Informationen finden Sie unter SQL-Tracing in Autonomous Database aktivieren.

  • numID1_numID2: Es handelt sich um zwei IDs, die von der SQL Trace-Funktion bereitgestellt werden. Die numerischen Werte numID1 und numID2 unterscheiden jeden Tracedateinamen eindeutig von anderen Sessions, indem Tracing verwendet und Tracedateien im selben Bucket in Cloud Object Storage erstellt werden.

    Wenn der Datenbankservice Parallelität unterstützt und eine Session eine parallele Abfrage ausführt, kann die SQL Trace-Funktion mehrere Tracedateien mit unterschiedlichen Werten für numID1 und numID2 erstellen.

Hinweis

Wenn das SQL-Tracing mehrmals in derselben Session aktiviert und deaktiviert ist, generiert jede Trace-Iteration eine separate Tracedatei im Cloud-Objektspeicher. Um zu vermeiden, dass vorherige Traces überschrieben werden, die in der Session generiert wurden, folgen nachfolgend generierte Dateien derselben Benennungskonvention und fügen dem Namen der Tracedatei ein numerisches Suffix hinzu. Dieses numerische Suffix beginnt mit der Zahl 1 und wird danach für jede Tracingiteration um 1 erhöht.

Beispiel: Wenn Sie die Client-ID auf "sql_test" und den Modulnamen auf "modname" setzen, lautet der generierte Trace-Dateiname wie folgt:

sqltrace/sqlt_test/modname/sqltrace_5415_56432.trc

Sie können TKPROF ausführen, um die Tracedatei in eine lesbare Ausgabedatei zu übersetzen.

  1. Kopieren Sie die Tracedatei aus dem Objektspeicher in Ihr lokales System.
  2. Navigieren Sie zu dem Verzeichnis, in dem die Tracedatei gespeichert wird.
  3. Führen Sie das Utility TKPROF in der Eingabeaufforderung des Betriebssystems mit der folgenden Syntax aus:
    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]
    

    Die Eingabe- und Ausgabedateien sind die einzigen erforderlichen Argumente.

  4. Um die Onlinehilfe anzuzeigen, rufen Sie TKPROF ohne Argumente auf.

Informationen zur Verwendung des Utilitys TKPROF finden Sie unter "Tools für End-to-End Application Tracing" in der Oracle Database SQL Tuning Guide.

Tracedaten in der SESSION_CLOUD_TRACE-Ansicht in Autonomous Database anzeigen

Wenn Sie SQL Tracing aktivieren, sind dieselben Traceinformationen, die in der Tracedatei im Cloud-Objektspeicher gespeichert werden, in der Ansicht SESSION_CLOUD_TRACE in der Session verfügbar, in der das Tracing aktiviert wurde.

Während Sie sich noch in der Datenbanksession befinden, können Sie SQL-Tracingdaten in der View SESSION_CLOUD_TRACE anzeigen. Die Ansicht SESSION_CLOUD_TRACE enthält zwei Spalten: ROW_NUMBER und TRACE:

DESC SESSION_CLOUD_TRACE

Name       Null? Type
---------- ----- ------------------------------
ROW_NUMBER       NUMBER
TRACE            VARCHAR2(32767)

ROW_NUMBER gibt die Reihenfolge für Tracedaten an, die in der Spalte TRACE gefunden werden. Jede Zeile der Traceausgabe, die in eine Tracedatei geschrieben wird, wird zu einer Zeile in der Tabelle und ist in der Spalte TRACE verfügbar.

Nachdem Sie das SQL-Tracing für die Session deaktiviert haben, können Sie Abfragen in der View SESSION_CLOUD_TRACE ausführen.

Beispiel:

SELECT trace FROM SESSION_CLOUD_TRACE ORDER BY row_number;

Die Daten in SESSION_CLOUD_TRACE bleiben für die Dauer der Session bestehen. Nachdem Sie sich abgemeldet oder die Session geschlossen haben, sind die Daten nicht mehr verfügbar.

Wenn SQL Trace mehrmals in derselben Session aktiviert und deaktiviert ist, zeigt SESSION_CLOUD_TRACE die Tracedaten für alle Iterationen kumulativ an. Wenn Sie das Tracing in einer Session erneut aktivieren, nachdem Sie das Tracing zuvor deaktiviert haben, werden die durch die frühere Iteration erzeugten Tracedaten nicht entfernt.