Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erfasst den Text von auf der Datenbank ausgeführten Nicht-SELECT SQL-befehlen.
Fragen Sie die Ansicht STL_UTILITYTEXT ab, um die folgende Teilmenge von SQL-Anweisungen zu erfassen, die auf dem System ausgeführt wurden:
-
ABORT, BEGIN, COMMIT, END, ROLLBACK
-
ANALYZE
-
CALL
-
CANCEL
-
COMMENT
-
CREATE, ALTER, DROP DATABASE
-
CREATE, ALTER, DROP USER
-
EXPLAIN
-
GRANT, REVOKE
-
LOCK
-
RESET
-
SET
-
ZEIGEN
-
TRUNCATE
Vgl. auch STL_DDLTEXT, STL_QUERYTEXT und SVL_STATEMENTTEXT.
Verwenden Sie die Spalten STARTTIME und ENDTIME, um zu erfahren, welche Anweisungen während eines bestimmten Zeitraums protokolliert wurden. Lange SQL-Textblöcke werden in 200 Zeichen lange Zeilen umgebrochen; die Spalte SEQUENCE identifiziert Textfragmente, die zu einer einzelnen Anweisung gehören.
STL_UTILITYTEXT ist für alle Benutzer sichtbar. Superuser können alle Zeilen sehen; reguläre Benutzer können nur ihre eigenen Daten sehen. Weitere Informationen finden Sie unter Sichtbarkeit der Daten in Systemtabellen und Ansichten.
Einige oder alle Daten in dieser Tabelle sind auch in der SYS-Überwachungsansicht SYS_QUERY_HISTORY zu finden. Die Daten in der SYS-Überwachungsansicht sind so formatiert, dass sie leichter verwendbar und besser verständlich sind. Wir empfehlen Ihnen, für Ihre Abfragen die SYS-Überwachungsansicht zu verwenden.
Tabellenspalten
Spaltenname | Datentyp | Beschreibung |
---|---|---|
userid | integer | ID des Benutzers, der den Eintrag generiert hat. |
xid | bigint | Transaktions-ID. |
pid | integer | Die mit der Abfrageanweisung verbundene Prozess-ID. |
label | Zeichen (320) | Entweder der Name der für die Ausführung verwendeten Datei oder eine mit dem Befehl SET QUERY_GROUP definierte Beschriftung. Wenn die Tabelle nicht dateibasiert ist oder der Parameter QUERY_GROUP nicht eingerichtet ist, ist dieses Feld leer. |
starttime | Zeitstempel | Zeitpunkt des Beginns der Abfrage, nach UTC. Die Gesamtzeit umfasst die Zeit in der Warteschlange und Zeit für die Ausführung mit einer Genauigkeit von 6 Nachkommastellen für Sekundenbruchteile. Beispiel: 2009-06-12 11:29:19.131358 . |
endtime | Zeitstempel | Zeitpunkt in UTC, an dem die Abfrage abgeschlossen wurde. Die Gesamtzeit umfasst die Zeit in der Warteschlange und Zeit für die Ausführung mit einer Genauigkeit von 6 Nachkommastellen für Sekundenbruchteile. Beispiel: 2009-06-12 11:29:19.131358 . |
sequence | integer | Wenn eine einzelne Anweisung mehr als 200 Zeichen enthält, werden weitere Zeilen für diese Anweisung protokolliert. Sequenz 0 ist die erste Zeile, 1 die zweite usw. |
Text | character(200) | SQL-Text, in Schritten von je 200 Zeichen. Diese Feld kann Sonderzeichen wie Backslash (\\ ) und Zeilenumbruch (\n ) enthalten. |
Beispielabfragen
Die folgende Abfrage gibt den Text für „Utility“-Befehle aus, die am 26. Januar 2012 ausgeführt wurden. In diesem Fall wurden einige SET-befehle und ein SHOW ALL-Befehl ausgeführt:
select starttime, sequence, rtrim(text)
from stl_utilitytext
where starttime like '2012-01-26%'
order by starttime, sequence;
starttime | sequence | rtrim
---------------------------+-----+----------------------------------
2012-01-26 13:05:52.529235 | 0 | show all;
2012-01-26 13:20:31.660255 | 0 | SET query_group to ''
2012-01-26 13:20:54.956131 | 0 | SET query_group to 'soldunsold.sql'
...
Wiederherstellen von gespeichertem SQL
Um das in der Spalte text
von STL_UTILITYTEXT gespeicherte SQL wiederherzustellen, führen Sie eine SELECT-Anweisung aus, um SQL von mindestens einem Teil der Spalte text
zu erstellen. Bevor Sie das wiederhergestellte SQL ausführen, ersetzen Sie alle Sonderzeichen (\n
) durch einen Zeilenumbruch. Das Ergebnis der folgenden SELECT-Anweisung besteht aus Zeilen von wiederhergestelltem SQL im Feld query_statement
.
SELECT LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END) WITHIN GROUP (ORDER BY sequence) as query_statement
FROM stl_utilitytext GROUP BY xid order by xid;
Die folgende Abfrage setzt beispielsweise die query_group auf eine Zeichenfolge von Nullen. Die Abfrage selbst ist länger als 200 Zeichen und wird in mehreren Teilen in STL_UTILITYTEXT gespeichert.
set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000';
In diesem Beispiel wird die Abfrage in 2 Teilen (Zeilen) in der Spalte text
von STL_UTILITYTEXT gespeichert.
select query, sequence, text
from stl_utilitytext where query=pg_last_query_id() order by query desc, sequence limit 10;
starttime | sequence | text
----------------------------+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2019-07-23 22:55:34.926198 | 0 | set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000\n0000000000000000000000000000000000000000000000000000000000000000000000000000000000
2019-07-23 22:55:34.926198 | 1 | 000000';
Um das in STL_UTILITYTEXT gespeicherte SQL wiederherzustellen, führen Sie den folgenden SQL-Code aus.
select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS query_statement
from stl_utilitytext where query=pg_last_query_id();
Um das resultierende wiederhergestellte SQL in Ihrem Client zu verwenden, ersetzen Sie alle Sonderzeichen (\n
) durch einen Zeilenumbruch.
query_statement
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000\n0000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000';