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_DDLTEXT
Erfasst die folgenden DDL-Anweisungen, die auf dem System ausgeführt wurden.
Diese DDL-Anweisungen enthalten die folgenden Abfragen und Objekte:
-
CREATE SCHEMA, TABLE, VIEW
-
DROP SCHEMA, TABLE, VIEW
-
ALTER SCHEMA, TABLE
Vgl. auch STL_QUERYTEXT, STL_UTILITYTEXT und SVL_STATEMENTTEXT. Diese Ansichten zeigen einen Verlauf der SQL-Befehle, die auf dem System ausgeführt wurden. Dieser Verlauf ist nützlich für die Fehlerbehebung sowie für die Erstellung eines Audit-Trails für alle Systemaktivitäten.
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_DDLTEXT 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 | Mit der Anweisung verbundene Transaktions-ID. |
pid | integer | Die mit der Anweisung 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 Datensätze zurück, die zuvor ausgeführte DDL-Anweisungen enthalten.
select xid, starttime, sequence, substring(text,1,40) as text from stl_ddltext order by xid desc, sequence;
Unten sehen Sie eine Beispielausgabe mit vier CREATE TABLE-Anweisungen. Die DDL-Anweisungen erscheinen in der text
-Spalte, die zur leichteren Lesbarkeit abgeschnitten wird.
xid | starttime | sequence | text ------+----------------------------+----------+------------------------------------------ 1806 | 2013-10-23 00:11:14.709851 | 0 | CREATE TABLE supplier ( s_suppkey int4 N 1806 | 2013-10-23 00:11:14.709851 | 1 | s_comment varchar(101) NOT NULL ) 1805 | 2013-10-23 00:11:14.496153 | 0 | CREATE TABLE region ( r_regionkey int4 N 1804 | 2013-10-23 00:11:14.285986 | 0 | CREATE TABLE partsupp ( ps_partkey int8 1803 | 2013-10-23 00:11:14.056901 | 0 | CREATE TABLE part ( p_partkey int8 NOT N 1803 | 2013-10-23 00:11:14.056901 | 1 | ner char(10) NOT NULL , p_retailprice nu (6 rows)
Wiederherstellen von gespeichertem SQL
Die folgende SQL listet Zeilen auf, die in der Spalte text
von STL_DDLTEXT gespeichert sind. Die Zeilen sind geordnet nach xid
und sequence
. Wenn die ursprüngliche SQL mehr als 200 Zeichen auf mehreren Zeilen umfasste, kann STL_DDLTEXT mehrere Zeilen nach sequence
enthalten.
SELECT xid, sequence, LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') WITHIN GROUP (ORDER BY sequence) as query_statement FROM stl_ddltext GROUP BY xid, sequence ORDER BY xid, sequence;
xid | sequence | query_statement
--------+-----------+-----------------
7886671 0 create external schema schema_spectrum_uddh\nfrom data catalog\ndatabase 'spectrum_db_uddh'\niam_role ''\ncreate external database if not exists;
7886752 0 CREATE EXTERNAL TABLE schema_spectrum_uddh.soccer_league\n(\n league_rank smallint,\n prev_rank smallint,\n club_name varchar(15),\n league_name varchar(20),\n league_off decimal(6,2),\n le
7886752 1 ague_def decimal(6,2),\n league_spi decimal(6,2),\n league_nspi smallint\n)\nROW FORMAT DELIMITED \n FIELDS TERMINATED BY ',' \n LINES TERMINATED BY '\\n\\l'\nstored as textfile\nLOCATION 's
7886752 2 3://mybucket-spectrum-uddh/'\ntable properties ('skip.header.line.count'='1');
...
Um das in der Tabelle text
von STL_DDLTEXT gespeicherte SQL wiederherzustellen, führen Sie den folgenden SQL-Code aus. Dadurch werden die DDL-Anweisungen aus einem oder mehreren Segmenten in der text
-Spalte kombiniert. Bevor Sie das wiederhergestellte SQL ausführen, ersetzen Sie alle Sonderzeichen (\n
) durch eine neue Zeile in Ihrem SQL-Client. Die Ergebnisse der folgenden SELECT-Anweisung stellen drei Zeilen in der Reihenfolge zusammen, um das SQL zu rekonstruieren, 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_ddltext GROUP BY xid, endtime order by xid, endtime;
query_statement
--------------
create external schema schema_spectrum_uddh\nfrom data catalog\ndatabase 'spectrum_db_uddh'\niam_role ''\ncreate external database if not exists;
CREATE EXTERNAL TABLE schema_spectrum_uddh.soccer_league\n(\n league_rank smallint,\n prev_rank smallint,\n club_name varchar(15),\n league_name varchar(20),\n league_off decimal(6,2),\n league_def decimal(6,2),\n league_spi decimal(6,2),\n league_nspi smallint\n)\nROW FORMAT DELIMITED \n FIELDS TERMINATED BY ',' \n LINES TERMINATED BY '\\n\\l'\nstored as textfile\nLOCATION 's3://mybucket-spectrum-uddh/'\ntable properties ('skip.header.line.count'='1');