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;

/

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

转载于:http://blog.itpub.net/28974745/viewspace-2150350/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值