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:
-
Beginnen Sie mit der Konfiguration der Datenbank zum Speichern von SQL-Trace-Dateien. Weitere Informationen finden Sie unter SQL-Tracing in autonomer KI-Datenbank konfigurieren.
-
Aktivieren Sie anschließend das SQL-Tracing. Siehe 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 die Erfassung der SQL-Tracingdaten zu stoppen, müssen Sie das SQL-Tracing deaktivieren. Siehe SQL-Tracing deaktivieren.
-
Wenn Sie das SQL-Tracing deaktivieren, werden die während der Sessionausführung mit aktiviertem Tracing erfassten Tracingdaten in die Ansicht
SESSION_CLOUD_TRACEin Ihrer Session und in eine Tracedatei im Bucket geschrieben, die Sie beim Einrichten des SQL-Tracings konfigurieren. Sie haben zwei Möglichkeiten, die Tracedaten anzuzeigen:-
SQL-Trace-Daten in der Tracedatei anzeigen und analysieren, die im Cloud-Objektspeicher gespeichert ist. Weitere Informationen finden Sie unter Tracedatei im Cloud-Objektspeicher in einer autonomen KI-Datenbank anzeigen.
-
In der Ansicht
SESSION_CLOUD_TRACEgespeicherte SQL-Trace-Daten anzeigen und analysieren. Weitere Informationen finden Sie unter Tracedaten in der Ansicht SESSION_CLOUD_TRACE in der autonomen KI-Datenbank anzeigen.
-
SQL-Tracing in autonomer KI-Datenbank konfigurieren
So konfigurieren Sie die autonome KI-Datenbank für das SQL-Tracing:
-
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.
-
Erstellen Sie mit
DBMS_CLOUD.CREATE_CREDENTIALZugangsdaten 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
usernameundpasswordfür verschiedene Object Storage-Services finden Sie unter CREATE_CREDENTIAL-Prozedur. -
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.
-
Legen Sie die Datenbankeigenschaft
DEFAULT_LOGGING_BUCKETfest, 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-stringder 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.
-
Legen Sie die Datenbankeigenschaft
DEFAULT_CREDENTIALauf 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:
-
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; / -
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; / -
Aktivieren Sie die SQL Trace-Funktion.
ALTER SESSION SET SQL_TRACE = TRUE; -
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.
-
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:
-
Deaktivieren Sie die SQL Trace-Funktion.
ALTER SESSION SET SQL_TRACE = FALSE; -
Optional können Sie bei Bedarf die Datenbankeigenschaft
DEFAULT_LOGGING_BUCKETfü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:
-
default_logging_bucket: Der Wert der Datenbankeigenschaft
DEFAULT_LOGGING_BUCKET. Weitere Informationen finden Sie unter SQL-Tracing in autonomer KI-Datenbank konfigurieren. -
clientID: ist die Client-ID. Weitere Informationen finden Sie unter SQL-Tracing in autonomer KI-Datenbank aktivieren. -
moduleName: ist der Modulname. Weitere Informationen finden Sie unter SQL-Tracing in autonomer KI-Datenbank aktivieren. -
numID1_numID2: sind zwei Bezeichner, die von der SQL Trace-Funktion bereitgestellt werden. Die numerischen WertenumID1undnumID2unterscheiden 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
numID1undnumID2erstellen.Hinweis: Wenn das SQL-Tracing mehrmals in derselben Session aktiviert und deaktiviert wird, 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: 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.
-
Kopieren Sie die Tracedatei aus dem Objektspeicher in Ihr lokales System.
-
Navigieren Sie zu dem Verzeichnis, in dem die Tracedatei gespeichert wird.
-
Führen Sie das Utility
TKPROFin 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.
-
Um die Onlinehilfe anzuzeigen, rufen Sie
TKPROFohne Argumente auf.Informationen zur Verwendung des Utilitys
TKPROFfinden 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.