dbms_sql.delete_trace menghapus pernyataan SQL dari pelacakan SQL Trace ketika loose_sql_trace_type diatur ke DEMAND.
Sintaksis
dbms_sql.delete_trace('<schema>', '<query>')Parameter
| Parameter | Deskripsi |
|---|---|
schema | Nama skema. |
query | Pernyataan SQL yang sedang dieksekusi. |
Cara kerja
Ketika Anda memanggil dbms_sql.delete_trace, prosedur ini melakukan tindakan berikut:
Mengonversi konstanta literal dalam pernyataan SQL menjadi wildcard (
?) untuk menghasilkan templat SQL.Menghapus semua baris di
mysql.sql_sharingyang sesuai dengan templat tersebut.Menghentikan SQL Trace dari mencatat pernyataan SQL mendatang yang sesuai dengan templat tersebut.
Catatan penggunaan
Node primary vs. node read-only
Prosedur tersimpan ini berperilaku berbeda tergantung pada node tempatnya dijalankan:
Node primary: Penghapusan bersifat permanen. Baris yang sesuai dihapus dari
mysql.sql_sharingpada node primary, dan perubahannya disinkronkan ke semua node read-only.Node read-only: Penghapusan hanya berlaku untuk node tempat prosedur dijalankan dan tidak dipertahankan secara permanen. Ketika Anda mengakses database melalui titik akhir kluster, pernyataan SQL bertemplat secara otomatis diarahkan ke node primary.
Contoh
Hapus pernyataan SQL dari pelacakan SQL Trace:
CALL dbms_sql.delete_trace('test', 'select * from t where c1 > 1 and c1 < 10');Jika pemanggilan berhasil, tidak ada output yang dikembalikan.
Prosedur tersimpan ini membuat templat berikut dari pernyataan tersebut dan menghapus semua baris yang sesuai dari mysql.sql_sharing:
SELECT * FROM `t` WHERE `c1` > ? AND `c1` < ?