开启 Oracle Trace

想写一下Oracle Trace,在网上查了一些资料,包括oracle 官网的,发现,只开启和关闭oracle trace 的方法,就很多,够写一篇文章细细的写了。所以特地把它独立出来。

首先需要把时间统计打开,否则cpu等,是不会计时的。设置TIMED_STATISTICS为True,可以在会话级别,也可以在实例级别。
会话级:

alter session set timed_statistics=True;
实例级:
alter system set timed_statistics=True scope=both;

1.在当前Session级别设置

alter session set sql_trace=true;
2.在实例级别设置
alter system set sql_trace=true scope=both;

以上都可以通过

select value from v$parameter where name='sql_trace' 

来检查是否已经打开Trace;

3. 在很多时候我们需要跟踪其他用户的进程,而不是当前用户,这可以通过Oracle提供的系统包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION来完成

Used to set trace on or off in another users session.

EXEC DBMS_System.Set_Sql_Trace_In_Session(sid, serial#, true );
EXEC DBMS_System.Set_Sql_Trace_In_Session(31, 97, true );
The values for SID and SERIAL# can be found using the V$SESSION view.
select sid,serial#,username from v$session where username is not null;

4.讲下一种方法之前,首先要说一下10046事件

10046事件是Oracle提供的内部事件,是对SQL_TRACE的增强.
10046事件可以设置以下四个级别:
1 - 启用标准的SQL_TRACE功能,等价于sql_trace
4 - Level 1 加上绑定值(bind values)
8 - Level 1 + 等待事件跟踪
12 - Level 1 + Level 4 + Level 8
类似sql_trace,10046事件可以在全局设置,也可以在session级设置。

(a)全局设置: 在参数文件(pfile/spfile)中增加:

event="10046 trace name context forever,level 12"

(b)Session 级别设置:

alter session set events '10046 trace name context forever';
alter session set events '10046 trace name context forever, level 8';
alter session set events '10046 trace name context off';

(c)Set_Ev Used to set trace on for a specific event. 对其他用户session设置:

EXEC DBMS_System.Set_Ev(sid, serial#, event, level, name);
EXEC DBMS_System.Set_Ev(31, 97, 10046, 4, '');

可以通过Read_Ev 来检查当前session 的event 10046的状态:

Used to check if a specific event is currently being traced.

EXEC DBMS_System.Read_Ev(event, output);

If output = 1 the event is being traced.

这是我写的SQL代码:

  declare event_level number;
  begin
  sys.dbms_system.read_ev(10046,event_level);
  sys.dbms_output.put_line(event_level);
  end;
  /

输入到PL SQL 的New Command(不是我们经常New的SQL窗口,SQL窗口是不能执行过程的)窗口执行

我的执行结果:0  说明我没有打开event 10046。

 

以上都是我在网上搜索并整理的。

参考:

http://www.oracle-base.com/articles/8i/dbms_system.php

http://docs.oracle.com/cd/B10500_01/server.920/a96533/sqltrace.htm

http://www.eygle.com/case/Use.sql_trace.to.Diagnose.database.htm  这个网址有很多的Oracle trace 实例 让我受益匪浅。

http://blog.csdn.net/weiwenhp/article/details/6932835

http://blog.csdn.net/tianlesoftware/article/details/5632003

http://www.oracle-base.com/articles/10g/sql-trace-10046-trcsess-and-tkprof-10g.php

 

每篇寄语:树尊重别人劳动成果之气,展中华儿女科技发展雄风。

转载于:https://www.cnblogs.com/practiceisvital/archive/2012/10/01/2709808.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值