sql_trace在oracle中的应用

 

 sql_traceoracle中的应用

 

SQL_TRACEORACLE系统中的性能调整中发挥着重大作用,它是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。

启用SQL_TRACE的方法:

一、系统全局级使用

参数文件spfile中设置  sql_trace =true,这将使所有会话启用SQL跟踪,因为它会产生好多输出,所以对系统性能产生很大影响,较少用。

二、会话级使用

1、  alter session set sql_trace=true;

2、  sys.dbms_system.set_sql_trace_in_session

例如: exec dbms_system.set_sql_trace_in_session(9,437,true)

3、  alter session set events

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

例如:

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

 alter session set events '10046 trace name context off';
类似sql_trace10046事件可以在全局设置event="10046 trace name context forever,level 12",也可以在session级设置。

三、文件保存路径

  跟踪文件位于user_dump_dest目录中,位置及文件名可以通过以下SQL查询获得

  SELECT d.VALUE

      || '/'

      || LOWER (RTRIM (i.INSTANCE, CHR (0)))

      || '_ora_'

      || p.spid

      || '.trc' trace_file_name

      FROM (SELECT p.spid

      FROM SYS.v$mystat m, SYS.v$session s, SYS.v$process p

      WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,

      (SELECT t.INSTANCE

      FROM SYS.v$thread t, SYS.v$parameter v

      WHERE v.NAME = 'thread'

      AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,

      (SELECT VALUE

      FROM SYS.v$parameter

      WHERE NAME = 'user_dump_dest') d

四、跟踪文件的阅读

1、       tkprof 格式化输出。tkprof的结果是不包含绑定变量值的,同时也不包括真正的SQL执行顺序,而trace文件中我们则可以看到按照时间排列的parse,binds,executes,fetch等等,这在某西场合下是很有用处的。

  例如:tkprof orcl_ora_14483.trc allan.txt

2、       直接阅读。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值