共計 1194 個字符,預(yù)計需要花費 3 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關(guān) SQL 中如何利用 10046 事件擴展 SQL 跟蹤,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在會話 sql_trace 的基礎(chǔ)上,利用 10046 診斷事件,可以擴展 sql_trace 的功能,主要體現(xiàn)在對綁定變量和等待事件的跟蹤上。
10046 診斷事件可以設(shè)置的四個級別:
level 1
啟用標準的 SQL 跟蹤,等價于 sql_trace
level 4
level
1 + 綁定變量信息
level 8
level
1 + 等待事件信息
level 12
level 1 +
level 4 + level 8
啟用自己會話的 10046 事件跟蹤
alter session
set events 10046 trace name context forever,level 12
關(guān)閉 10046 事件跟蹤
alter session
set events 10046 trace name context off
設(shè)置對指定會話的跟蹤,有以下幾種方法:
1、通過程序包 dbms_monitor
開啟跟蹤
exec
dbms_monitor.session_trace_enable(, , waits =
true, binds = true);
關(guān)閉跟蹤
exec
dbms_monitor.session_trace_disable(,);
2、通過程序包 dbms_system
開啟跟蹤
exec
dbms_system.set_ev(, , 10046, 12,
關(guān)閉跟蹤
exec
dbms_system.set_ev(, , 10046, 0,
3、通過 oradebug
開啟跟蹤
oradebug
setorapid ; 或 oradebug setospid ;
oradebug
session_event 10046 trace name context forever, level 12;
確定跟蹤文件路徑
oradebug
tracefile_name;
關(guān)閉跟蹤
oradebug event
10046 trace name context off;
當前會話的事件編號及其級別,可以用以下代碼獲取
set serveroutput on
declare
event_level number;
begin
for event_number in 10000 .. 10999 loop
dbms_system.read_ev(event_number,
event_level);
if (event_level 0) then
dbms_output.put_line(Event ||
to_char(event_number) ||
is set at
level ||
to_char(event_level));
end if;
end loop;
end;
/
關(guān)于“SQL 中如何利用 10046 事件擴展 SQL 跟蹤”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。