Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
STL_UTILITYTEXT
Menangkap teks perintah SQL Non-Select yang dijalankan pada database.
Kueri tampilan STL_UTILITYTEXT untuk menangkap subset pernyataan SQL berikut yang dijalankan pada sistem:
-
BATALKAN, MULAI, KOMIT, AKHIRI, KEMBALIKAN
-
MENGANALISA
-
PANGGILAN
-
CANCEL (BATALKAN)
-
MENGOMENTARI
-
MEMBUAT, MENGUBAH, MENJATUHKAN DATABASE
-
BUAT, UBAH, JATUHKAN PENGGUNA
-
EXPLAIN
-
HIBAH, CABUT
-
GEMBOK
-
ATUR ULANG
-
SET
-
MEMPERLIHATKAN
-
MEMOTONG
Lihat jugaSTL_DDLTEXT,STL_QUERYTEXT, danSVL_STATEMENTTEXT.
Gunakan kolom STARTTIME dan ENDTIME untuk mengetahui pernyataan mana yang dicatat selama periode waktu tertentu. Blok panjang teks SQL dipecah menjadi baris dengan panjang 200 karakter; kolom SEQUENCE mengidentifikasi fragmen teks yang termasuk dalam satu pernyataan.
STL_UTILITYTEXT terlihat oleh semua pengguna. Pengguna super dapat melihat semua baris; pengguna biasa hanya dapat melihat data mereka sendiri. Untuk informasi selengkapnya, lihat Visibilitas data dalam tabel dan tampilan sistem.
Beberapa atau semua data dalam tabel ini juga dapat ditemukan di tampilan SYS_QUERY_HISTORY pemantauan SYS. Data dalam tampilan pemantauan SYS diformat agar lebih mudah digunakan dan dipahami. Kami menyarankan Anda menggunakan tampilan pemantauan SYS untuk pertanyaan Anda.
Kolom tabel
Nama kolom | Jenis data | Deskripsi |
---|---|---|
userid | integer | ID pengguna yang membuat entri. |
xid | bigint | ID Transaksi. |
pid | integer | ID proses yang terkait dengan pernyataan query. |
label | karakter (320) | Entah nama file yang digunakan untuk menjalankan kueri atau label yang ditentukan dengan perintah SET QUERY_GROUP. Jika kueri tidak berbasis file atau parameter QUERY_GROUP tidak disetel, bidang ini kosong. |
waktu mulai | timestamp | Waktu di UTC kueri dimulai. Total waktu termasuk antrian dan eksekusi. dengan 6 digit presisi untuk detik pecahan. Sebagai contoh: 2009-06-12 11:29:19.131358 . |
akhir waktu | timestamp | Waktu di UTC kueri selesai. Total waktu termasuk antrian dan eksekusi. dengan 6 digit presisi untuk detik pecahan. Sebagai contoh: 2009-06-12 11:29:19.131358 . |
urutan | integer | Ketika satu pernyataan berisi lebih dari 200 karakter, baris tambahan dicatat untuk pernyataan itu. Urutan 0 adalah baris pertama, 1 adalah yang kedua, dan seterusnya. |
text | karakter (200) | Teks SQL, dalam peningkatan 200 karakter. Bidang ini mungkin berisi karakter khusus seperti garis miring terbalik (\\ ) dan baris baru (). \n |
Kueri Sampel
Kueri berikut mengembalikan teks untuk perintah “utilitas” yang dijalankan pada tanggal 26 Januari 2012. Dalam hal ini, beberapa perintah SET dan perintah SHOW ALL dijalankan:
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'
...
Rekonstruksi SQL Tersimpan
Untuk merekonstruksi SQL yang disimpan di text
kolom STL_UTILITYTEXT, jalankan pernyataan SELECT untuk membuat SQL dari 1 atau lebih bagian dalam kolom. text
Sebelum menjalankan SQL yang direkonstruksi, ganti setiap (\n
) karakter khusus dengan baris baru. Hasil dari pernyataan SELECT berikut adalah baris SQL direkonstruksi di lapangan. 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;
Misalnya, query berikut menetapkan query_group ke string nol. Kueri itu sendiri lebih panjang dari 200 karakter dan disimpan di bagian-bagian dalam STL_UTILITYTEXT.
set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000';
Dalam contoh ini, kueri disimpan dalam 2 bagian (baris) di text
kolom 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';
Untuk merekonstruksi SQL yang disimpan di STL_UTILITYTEXT, jalankan SQL berikut.
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();
Untuk menggunakan SQL yang direkonstruksi yang dihasilkan di klien Anda, ganti karakter khusus (\n
) apa pun dengan baris baru.
query_statement
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
set query_group to '00000000000000000000000000000000000000000000000000000000000000000000000000000000\n0000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000';