您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)SQL中如何利用10046事件擴展SQL跟蹤,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在會話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)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。