随锐旗下互动传媒:

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视图。

[责任编辑:梧桐]热门关键词: Oracle SQL_TRACE