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à.
SVL_STATEMENTTEXT
Utilizzare la visualizzazione SVL_STATEMENTTEXT per ottenere un record completo di tutti i comandi SQL che sono stati eseguiti nel sistema.
La visualizzazione SVL_STATEMENTTEXT contiene l'unione di tutte le righe nelle tabelle STL_DDLTEXT, STL_QUERYTEXT e STL_UTILITYTEXT. Questa visualizzazione include anche un join alla tabella STL_QUERY.
SVL_STATEMENTTEXT è 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 di transazione associato all'istruzione. |
pid | integer | ID di processo per l'istruzione. |
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 | Orario esatto in cui l'istruzione ha avviato l'esecuzione, con 6 cifre di precisione per le frazioni di secondo. Ad esempio: 2009-06-12 11:29:19.131358 |
endtime | timestamp | Orario esatto in cui l'istruzione ha terminato l'esecuzione, con 6 cifre di precisione per le frazioni di secondo. Ad esempio: 2009-06-12 11:29:19.193640 |
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. |
tipo | varchar(10) | Tipo di istruzione SQL: QUERY , DDL o UTILITY . |
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 query seguente restituisce le istruzioni DDL eseguite il 16 giugno 2009:
select starttime, type, rtrim(text) from svl_statementtext
where starttime like '2009-06-16%' and type='DDL' order by starttime asc;
starttime | type | rtrim
---------------------------|------|--------------------------------
2009-06-16 10:36:50.625097 | DDL | create table ddltest(c1 int);
2009-06-16 15:02:16.006341 | DDL | drop view alltickitjoin;
2009-06-16 15:02:23.65285 | DDL | drop table sales;
2009-06-16 15:02:24.548928 | DDL | drop table listing;
2009-06-16 15:02:25.536655 | DDL | drop table event;
...
Ricostruzione dell'SDL archiviato
Per ricostruire l'SQL archiviato nella colonna text
di SVL_STATEMENTTEXT, eseguire un'istruzione SELECT per creare 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 SVL_STATEMENTTEXT where pid=pg_backend_pid();
Ad esempio, la query seguente seleziona 3 colonne. La query stessa è più lunga di 200 caratteri ed è archiviata in parti in SVL_STATEMENTTEXT.
select
1 AS a0123456789012345678901234567890123456789012345678901234567890,
2 AS b0123456789012345678901234567890123456789012345678901234567890,
3 AS b012345678901234567890123456789012345678901234
FROM stl_querytext;
In questo esempio, la query è archiviata in 2 parti (righe) nella colonna text
di SVL_STATEMENTTEXT.
select sequence, text from SVL_STATEMENTTEXT where pid = pg_backend_pid() order by starttime, sequence;
sequence | text
----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0 | select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234
1 | \nFROM stl_querytext;
Per ricostruire l'SQL archiviato in STL_STATEMENTTEXT, eseguire l'SQL seguente.
select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS text
from SVL_STATEMENTTEXT where pid=pg_backend_pid();
Per utilizzare l'SQL ricostruito derivante nel client, sostituire qualsiasi carattere speciale (\n
) con una nuova riga.
text
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234\nFROM stl_querytext;