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