SQL中如何利用10046事件扩展SQL跟踪
这篇文章将为大家详细讲解有关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跟踪”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341