oracle性能诊断工具

oracle提供的性能诊断的工具:autotrace、sql_trace、10046事件。

简要记录一下这些工具的使用方法:

autotrace用于跟踪sql的执行计划,收集统计信息。
默认此功能是关闭的,使用下面语句打开:
set autotrace on      包含执行计划和统计信息
set autotrace on explain   只显示执行路径
set autotrace on statistics 只显示执行的统计信息
set autotrace off   关闭autotrace
set autotrace traceonly  同set autotrace on,只是不显示查询的输出

 

sql_trace

可以在全局启用,也可以在session级启用。
1、全局启用:修改pfile/spfile:sql_trace=true,会影响系统性能,很少使用

2、在当前session级设置:
   alter session set sql_trace=true;
   alter session set sql_trace=false;

3、跟踪其他用户进程:
通过oracle提供的系统包DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION来完成。

查看包中的过程:
desc DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION

获取要跟踪的进程的sid,serial#,username:
select sid,serial#,username from v$session;
执行:
exec DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(sid,serial#,ture/false)
exec DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(9,2344,ture)

 

10046事件:

10046是oracle的内部事件,是对sql_trace的增强,可以设置为4个级别:
level1:启用标准的sql_trace功能,等价于sql_trace
level4:等价于level1+绑定值(bind values)
level8:等价于level1+等待事件跟踪
level12:等价于level1+level4+level8

10046也可以在全局设置,也可以在session级设置

1、在全局设置
在参数文件中增加:
event="10046 trace name context forever level 12"
此设置包括所有用户的所有进程生效,包括后台进程
2、对当前session设置
alter session set event '10046 trace name context forever';
alter session set event '10046 trace name context forever,level 8';
alter session set event '10046 trace name context off';
3、对其他session设置
通过DBMS_SYSTEM.SET_EV系统包来实现:
执行跟踪:
exec dbms_system.set_ev(sid,serial#,10046,8,'username');
结束跟踪:
exec dbms_system.set_ev(sid,serial#,10046,0,'username');

 

转自:http://blog.chinaunix.net/uid-13437740-id-2891794.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值