SQL中如何利用10046事件扩展SQL跟踪

54次阅读
没有评论

共计 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 跟踪”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计1194字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)