ITPub博客

首页 > 数据库 > Oracle > SQL性能的度量 - 利用10046事件扩展SQL跟踪

SQL性能的度量 - 利用10046事件扩展SQL跟踪

原创 Oracle 作者:llnnmc 时间:2018-01-20 19:50:52 0 删除 编辑

在会话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;

/

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28974745/viewspace-2150350/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
刘鲁宁的个人博客。

注册时间:2016-12-29

  • 博文量
    113
  • 访问量
    287691