Oracle最强有力的辅助诊断工具SQL_TRACE
http://www.weaseek.com 2008-04-30 09:46:48 来源:赛迪网
获得进程信息,选择需要跟踪的进程:
|
SQL> select sid,serial#,username from v$session 2 where username is not null; SID SERIAL# USERNAME---------- ---------- ------------------------------ 8 2041 SYS 9 437 EYGLE |
设置跟踪:
|
SQL> exec dbms_system.set_sql_trace_in_session(9,437,true)PL/SQL procedure successfully completed.…. |
可以等候片刻,跟踪session执行任务,捕获sql操作……
停止跟踪:
|
SQL> exec dbms_system.set_sql_trace_in_session(9,437,false)PL/SQL procedure successfully completed. |
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级设置。
1. 在全局设置
在参数文件中增加:
event="10046 trace name context forever,level 12"
此设置对所有用户的所有进程生效、包括后台进程.
2.对当前session设置
通过alter session的方式修改,需要alter session的系统权限:
|
SQL> alter session set events '10046 trace name context forever';Session altered.SQL> alter session set events '10046 trace name context forever, level 8';Session altered.SQL> alter session set events '10046 trace name context off';Session altered. |
3.对其他用户session设置
通过DBMS_SYSTEM.SET_EV系统包来实现:
|
SQL> desc dbms_system...PROCEDURE SET_EVArgument Name Type In/Out Default?--------------- ----------------------- ------ --------SI BINARY_INTEGER INSE BINARY_INTEGER INEV BINARY_INTEGER INLE BINARY_INTEGER INNM VARCHAR2 IN... |
其中的参数SI、SE来自v$session视图。