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 von SQL-Tracing in Autonomous Database an.

Hinweis

Wenn Sie SQL Tracing aktivieren, wird die Anwendungsperformance für die Session möglicherweise beeinträchtigt, solange die Traceerfassung aktiviert ist. Diese negativen Auswirkungen auf die Performance sind aufgrund des Overheads beim Erfassen und Speichern von Tracedaten zu erwarten.

So konfigurieren Sie SQL-Tracing für Datenbanken:

  1. Erstellen Sie einen Bucket zum Speichern von Tracedateien in Ihrem Cloud-Objektspeicher.

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

    So erstellen Sie beispielsweise einen Bucket in Oracle Cloud Infrastructure Object Storage:

    1. Öffnen Sie die Oracle Cloud Infrastructure-Konsole.
    2. Wählen Sie im Menü die Option Speicher aus.
    3. Wählen Sie unter "Speicher" die Option Objektspeicher und Archivspeicher aus.
    4. Klicken Sie auf Bucket erstellen.
    5. Geben Sie auf der Seite "Zeitraum erstellen" den Zeitraumnamen ein, und klicken Sie auf Erstellen.

    Wenn Sie Oracle Cloud Infrastructure Object Storage verwenden, beachten Sie, dass SQL-Tracingdateien nur mit Buckets unterstützt werden, die in der Standard-Storage-Ebene erstellt wurden. Stellen Sie sicher, dass Sie Standard als Storage Tier auswählen, wenn Sie den Bucket erstellen. Informationen zur Standard-Tier in Object Storage finden Sie unter Überblick über Object Storage.

  2. Erstellen Sie mit DBMS_CLOUD.CREATE_CREDENTIAL Zugangsdaten für Ihren Cloud-Objektspeicheraccount.

    Beispiele:

    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-Objektspeicher-URL für einen Bucket für SQL-Tracedateien und die Zugangsdaten für den Zugriff auf den Cloud-Objektspeicher anzugeben.
    1. Legen Sie die Datenbankeigenschaft DEFAULT_LOGGING_BUCKET fest, um den Logging-Bucket im Cloud-Objektspeicher 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 Bucket. 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 jeder Cloud-Objektspeicher sein, den Autonomous Database unterstützt.

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

      Der Name des Schemas muss in die Zugangsdaten aufgenommen werden. In diesem Beispiel lautet das Schema "ADMIN".

      Beispiele:

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

SQL-Tracing in Autonomous Database aktivieren

Zeigt die Schritte zum Aktivieren von SQL-Tracing für die Datenbanksession an.

Hinweis

Wenn Sie SQL Tracing aktivieren, wird die Anwendungsperformance für die Session möglicherweise beeinträchtigt, solange die Traceerfassung aktiviert ist. Diese negativen Auswirkungen auf die Performance sind aufgrund des Overheads beim Erfassen und Speichern von Tracedaten zu erwarten.

Bevor Sie SQL-Tracing aktivieren, müssen Sie die Datenbank zum Speichern von SQL Trace-Dateien konfigurieren. Weitere Informationen finden Sie unter SQL-Tracing in Autonomous Database konfigurieren.

So aktivieren Sie SQL-Tracing:

  1. (Optional) Einstellen einer Client-ID für die Anwendung. Dieser Schritt ist optional, wird jedoch empfohlen. Beim SQL-Tracing wird die Client-ID als Komponente des Trace-Dateinamens verwendet, wenn die Trace-Datei in den Cloud-Objektspeicher geschrieben wird.

    Beispiele:

    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 Trace-Dateinamens verwendet, wenn die Trace-Datei in den Cloud-Objektspeicher geschrieben wird.

    Beispiele:

    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.

    Dieser Schritt umfasst die Ausführung der gesamten Anwendung oder bestimmter Teile der Anwendung. Während Sie Ihre Workload in der Datenbanksession ausführen, werden SQL-Tracingdaten erfasst.

  5. SQL Tracing deaktivieren.

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

SQL-Tracing in Autonomous Database deaktivieren

Zeigt die Schritte zum Deaktivieren von SQL-Tracing in Autonomous Database an.

So deaktivieren Sie 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 im Cloud-Objektspeicher zu löschen.

    Beispiele:

    ALTER DATABASE PROPERTY SET DEFAULT_LOGGING_BUCKET = '';

Wenn Sie SQL-Tracing deaktivieren, werden die Tracingdaten, die während der Ausführung der Session mit aktiviertem Trace erfasst wurden, in eine Tabelle kopiert und an eine Tracedatei im Cloud-Objektspeicher gesendet. Sie haben zwei Möglichkeiten, Trace-Daten anzuzeigen:

Im Cloud-Objektspeicher gespeicherte Tracedatei in Autonomous Database anzeigen

Beschreibt die Benennung der Ausgabedatei für SQL-Tracedateien und zeigt die Befehle an, mit denen Sie TKPROF zum Organisieren und Anzeigen der Trace-Dateidaten verwenden können.

Sie verwenden Daten aus SQL-Tracedatei, um die Anwendungsperformance in Autonomous Database zu analysieren. Wenn Sie SQL Trace in Ihrer Datenbanksitzung deaktivieren, werden Daten in den mit DEFAULT_LOGGING_BUCKET konfigurierten Cloudobjektspeicher-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

Der Dateiname besteht aus folgenden Komponenten:

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

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

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

  • numID1_numID2: Zwei IDs, die von der SQL Trace-Funktion bereitgestellt werden. Die numerischen Werte numID1 und numID2 unterscheiden jeden Trace-Dateinamen eindeutig von anderen Sessions, die das Tracing verwenden und Trace-Dateien im selben Bucket im Cloud-Objektspeicher erstellen.

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

Hinweis

Wenn SQL-Tracing innerhalb derselben Session mehrmals aktiviert und deaktiviert wird, generiert jede Trace-Iteration eine separate Trace-Datei 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 Trace-Dateinamen ein numerisches Suffix hinzu. Dieses numerische Suffix beginnt mit der Zahl 1 und wird für jede nachfolgende Tracingiteration um 1 erhöht.

Beispiel: Der folgende Name ist ein Beispiel für eine generierte Tracedatei, wenn Sie die Client-ID auf "sql_test" und den Modulnamen auf "modname" festlegen:

sqltrace/sqlt_test/modname/sqltrace_5415_56432.trc

Sie können TKPROF ausführen, um die Trace-Datei in eine lesbare Datei 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 ist.
  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 Ausgangsdateien sind die einzigen erforderlichen Argumente.

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

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

Tracedaten in der SESSION_CLOUD_TRACE-View in Autonomous Database anzeigen

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

In der Datenbanksession können Sie SQL-Tracingdaten in der View SESSION_CLOUD_TRACE anzeigen. Die View 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 der Trace-Daten in der Spalte TRACE an. Jede Zeile der Traceausgabe in einer Tracedatei wird zu einer Zeile in der Tabelle und ist in der Spalte TRACE verfügbar.

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

Beispiele:

SELECT trace FROM SESSION_CLOUD_TRACE ORDER BY row_number;

Die Daten in SESSION_CLOUD_TRACE bleiben für die Dauer der Session erhalten. Nach der Abmeldung oder dem Schließen der Session sind die Daten nicht mehr verfügbar.

Wenn SQL Trace mehrmals innerhalb derselben Session aktiviert und deaktiviert wird, zeigt SESSION_CLOUD_TRACE die Tracedaten für alle Iterationen kumulativ an. Daher werden Tracedaten, die durch eine frühere Iteration erzeugt wurden, nicht entfernt, wenn Sie Tracing in einer Session erneut aktivieren, nachdem Sie es zuvor deaktiviert haben.