这篇文章将为大家详细讲解有关SQL中如何利用10046事件扩展SQL跟踪,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在会话sql_trace的基础上,利用10046诊断事件,可以扩展sql_trace的功能,主要体现在对绑定变量和等待事件的跟踪上。
10046诊断事件可以设置的四个级别:
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';
关闭10046事件跟踪
alter session set events '10046 trace name context off';
设置对指定会话的跟踪,有以下几种方法:
1、通过程序包dbms_monitor
开启跟踪
exec dbms_monitor.session_trace_enable(, , waits => true, binds => true);
关闭跟踪
exec dbms_monitor.session_trace_disable(, );
2、通过程序包dbms_system
开启跟踪
exec dbms_system.set_ev(, , 10046, 12, '');
关闭跟踪
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;
关闭跟踪
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;
/
关于“SQL中如何利用10046事件扩展SQL跟踪”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。