共计 1194 个字符,预计需要花费 3 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 SQL 中如何利用 10046 事件扩展 SQL 跟踪,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在会话 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 跟踪”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。