STL_UTILITYTEXT - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

STL_UTILITYTEXT

Acquisisce il testo dei comandi SQL non-SELECT eseguiti sul database.

Eseguire una query sulla vista STL_UTILITYTEXT per acquisire il seguente sottoinsieme di istruzioni SQL che sono state eseguite nel sistema:

  • ABORT, BEGIN, COMMIT, END, ROLLBACK

  • ANALYZE

  • CALL

  • CANCEL

  • COMMENT

  • CREATE, ALTER, DROP DATABASE

  • CREATE, ALTER, DROP USER

  • EXPLAIN

  • GRANT, REVOKE

  • LOCK

  • RESET

  • SET

  • MOSTRA

  • TRUNCATE

Consulta anche STL_DDLTEXT, STL_QUERYTEXT e SVL_STATEMENTTEXT.

Utilizza le colonne STARTTIME ed ENDTIME per scoprire quali istruzioni sono state registrate in un dato periodo. Blocchi lunghi di testo SQL sono suddivisi in righe di 200 caratteri; la colonna SEQUENCE identifica i frammenti di testo che appartengono a ogni singola istruzione.

STL_UTILITYTEXT è visibile a tutti gli utenti. Gli utenti con privilegi avanzati visualizzano tutte le righe; gli utenti regolari visualizzano solo i propri dati. Per ulteriori informazioni, consulta Visibilità dei dati nelle tabelle e nelle viste di sistema.

Alcuni o tutti i dati di questa tabella sono definiti anche nella vista di monitoraggio SYS SYS_QUERY_HISTORY. I dati nella vista di monitoraggio SYS sono formattati in modo da essere più facili da usare e comprendere. Ti consigliamo di utilizzare la vista di monitoraggio SYS per le query.

Colonne di tabella

Nome colonna Tipo di dati Descrizione
userid integer ID dell'utente che ha generato la voce.
xid bigint ID transazione.
pid integer ID di processo associato all'istruzione di query.
etichetta character(320) Il nome del file utilizzato per eseguire la query o un'etichetta definita con un comando SET QUERY GROUP. Se la query non è basata su file o il parametro QUERY_GROUP non è impostato, questo campo è vuoto.
starttime timestamp Ora in UTC in cui è stata avviata la query. Il tempo totale include l'inserimento in coda e l'esecuzione, con precisione a 6 cifre per le frazioni di secondo. Ad esempio: 2009-06-12 11:29:19.131358.
endtime timestamp L'orario in UTC in cui è terminata la query. Il tempo totale include l'inserimento in coda e l'esecuzione, con precisione a 6 cifre per le frazioni di secondo. Ad esempio: 2009-06-12 11:29:19.131358.
sequenza integer Quando una singola istruzione contiene più di 200 caratteri, vengono registrate delle righe aggiuntive per tale istruzione. La sequenza 0 è la prima riga, 1 la seconda e così via.
text character(200) Testo SQL, in incrementi da 200 caratteri. Questo campo potrebbe contenere caratteri speciali come barra rovesciata (\\) e nuova riga (\n).

Query di esempio

La seguente query restituisce il testo per i comandi "utility" eseguiti il 26 gennaio 2012. In questo caso, sono stati eseguiti alcuni comandi SET e un comando SHOW ALL:

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

Ricostruzione dell'SDL archiviato

Per ricostruire l'SQL archiviato nella colonna text di STL_UTILITYTEXT, eseguire un'istruzione SELECT per creare un SQL da 1 o più parti nella colonna text. Prima di eseguire l'SQL ricostruito, sostituire un carattere speciale qualsiasi (\n) con una nuova riga. Il risultato della dichiarazione SELECT seguente è dato da una riga di SQL ricostruiti nel campo 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;

Per esempio, la query seguente imposta query_group su una sequenza di zeri. La query stessa è più lunga di 200 caratteri ed è archiviata in parti in STL_UTILITYTEXT.

set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000';

In questo esempio, la query è archiviata in 2 parti (righe) nella colonna text di STL_UTILITYTEXT.

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

Per ricostruire l'SQL archiviato in STL_UTILITYTEXT, eseguire l'SQL seguente.

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();

Per utilizzare l'SQL ricostruito derivante nel client, sostituire qualsiasi carattere speciale (\n) con una nuova riga.

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