SQL-Tracing in autonomer KI-Datenbank auf dedizierter Exadata-Infrastruktur verwenden

Sie können das SQL-Tracing mit der autonomen KI-Datenbank auf einer dedizierten Exadata-Infrastruktur verwenden, um die Quelle einer übermäßigen Datenbank-Workload zu identifizieren, wie eine High-Load-SQL-Anweisung in Ihrer Anwendung.

SQL-Tracing

Wenn ein Anwendungsvorgang länger als erwartet dauert, können Sie durch das Abrufen eines Traces aller SQL-Anweisungen, die als Teil dieses Vorgangs ausgeführt werden, mit Details wie der Zeit, die diese SQL-Anweisung in den Parse-, Ausführungs- und Fetch-Phasen verbracht hat, die Ursache des Performanceproblems identifizieren und beheben. Dazu können Sie das SQL-Tracing in einer autonomen KI-Datenbank verwenden.

SQL-Tracing ist in der autonomen KI-Datenbank standardmäßig deaktiviert. Sie müssen es aktivieren, um mit der Erfassung der SQL-Tracingdaten zu beginnen. Um SQL-Anweisungen zu verfolgen, implementieren Sie als ADMIN-Benutzer die folgenden Aufgaben:

SQL-Tracing in autonomer KI-Datenbank konfigurieren

So konfigurieren Sie die autonome KI-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 einem beliebigen Cloud-Objektspeicher befinden, den die autonome KI-Datenbank unterstützt. Beispiel: Informationen zum Erstellen eines Buckets in Oracle Cloud Infrastructure Object Storage finden Sie unter Bucket erstellen.

    Tipp: Stellen Sie beim Erstellen Ihres Buckets in Oracle Cloud Infrastructure Object Storage sicher, dass Sie Standard als Speicherebene auswählen, da SQL-Tracingdateien nur mit Buckets unterstützt werden, die in der Standardspeicherebene erstellt wurden. Informationen zur Standard-Object Storage-Tier finden Sie unter Storage-Tiers.

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

    Einzelheiten zu den Argumenten für die Parameter username und password für verschiedene Object Storage-Services finden Sie unter CREATE_CREDENTIAL-Prozedur.

  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 (OCI) 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 OCI Object Storage-Namespace, und bucket_name ist 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 AI Database unterstützt.

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

      Beispiel:

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

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

SQL-Tracing in autonomer KI-Datenbank aktivieren

Hinweis: Wenn Sie das SQL-Tracing aktivieren, kann sich die Anwendungsperformance für die Session verschlechtern, während die Traceerfassung aktiviert ist. Diese Performanceauswirkung wird aufgrund des Overheads beim Erfassen und Speichern von Tracedaten erwartet.

Um das SQL-Tracing für eine Datenbanksession zu aktivieren, gehen Sie wie folgt vor:

  1. Legen Sie optional 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. Legen Sie optional 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.

SQL-Tracing deaktivieren

So deaktivieren Sie das SQL-Tracing:

  1. Deaktivieren Sie die SQL Trace-Funktion.

     ALTER SESSION SET SQL_TRACE = FALSE;
    
  2. Optional können Sie bei Bedarf die Datenbankeigenschaft DEFAULT_LOGGING_BUCKET für Ihre Umgebung 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.

Im Cloud-Objektspeicher gespeicherte Tracedatei in autonomer KI-Datenbank anzeigen

Mit SQL-Trace-Dateidaten können Sie die Anwendungsperformance in einer autonomen KI-Datenbank 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:

Beispiel: Im Folgenden finden Sie einen Beispielnamen für eine generierte Tracedatei, wenn Sie die Client-ID auf "sql_test" und den Modulnamen auf "modname" setzen:

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 for End-to-End Application Tracing in der Dokumentation Oracle Database 19c SQL Tuning Guide oder im Oracle Database 26ai SQL Tuning Guide.

Tracedaten in der SESSION_CLOUD_TRACE-Ansicht in autonomer KI-Datenbank 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 ORDERBY 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.