STL_UTILITYTEXT - Amazon Redshift

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.

STL_UTILITYTEXT

Erfasst den Text von SELECT SQL Nichtbefehlen, die in der Datenbank ausgeführt werden.

Fragen Sie die UTILITYTEXT Ansicht STL _ 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

  • SHOW

  • TRUNCATE

Vgl. auch STL_DDLTEXT, STL_QUERYTEXT und SVL_STATEMENTTEXT.

Verwenden Sie die ENDTIME Spalten STARTTIME und, um herauszufinden, welche Anweisungen während eines bestimmten Zeitraums protokolliert wurden. Lange SQL Textblöcke werden in Zeilen mit einer Länge von 200 Zeichen aufgeteilt. SEQUENCE In der Spalte werden Textfragmente identifiziert, 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 befinden sich auch in der SYS ÜberwachungsansichtSYS_QUERY_HISTORY. Die Daten in der SYS Überwachungsansicht sind so formatiert, dass sie einfacher zu verwenden und zu verstehen sind. Wir empfehlen Ihnen, die SYS Überwachungsansicht für Ihre Abfragen 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 Datei, mit der die Abfrage ausgeführt wurde, oder ein mit dem GROUP Befehl SET QUERY _ definiertes Label. Wenn die Abfrage nicht dateibasiert ist oder der GROUP Parameter QUERY _ nicht festgelegt ist, ist dieses Feld leer.
starttime Zeitstempel Uhrzeit, zu der UTC die Abfrage gestartet 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.
endtime Zeitstempel ZeitUTC, in der die Abfrage beendet 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) SQLText, in Schritten von 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' ...

Gespeicherte Daten rekonstruieren SQL

Um das in der text Spalte STL _ SQL gespeicherte Objekt zu rekonstruierenUTILITYTEXT, führen Sie eine SELECT Anweisung aus, um es SQL aus einem oder mehreren Teilen der Spalte zu erstellen. text Bevor Sie die rekonstruierte Datei ausführenSQL, ersetzen Sie alle Sonderzeichen (\n) durch eine neue Zeile. Das Ergebnis der folgenden SELECT Anweisung sind Zeilen von rekonstruierten Zeilen SQL im query_statement Feld.

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 teilweise in STL _ UTILITYTEXT gespeichert.

set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000';

In diesem Beispiel wird die Abfrage in zwei Teilen (Zeilen) in der text Spalte STL _ gespeichertUTILITYTEXT.

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

Führen Sie den folgenden SQL Befehl ausUTILITYTEXT, um die in STL _ SQL gespeicherten Daten zu rekonstruieren.

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 rekonstruierte Ergebnis SQL in Ihrem Client zu verwenden, ersetzen Sie alle Sonderzeichen (\n) durch eine neue Zeile.

query_statement ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000\n0000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000';