如何在Oracle 10g中跟踪SQL
2007-05-06 12:08:39 来源:WEB开发网核心提示: PL/SQL过程已成功完成,我们可以启动对客户机的跟踪:SQL> exec dbms_monitor.client_id_trace_enable(client_id=>'kimberly');PL/SQL过程已成功完成,如何在Oracle 10g中跟踪SQL(
PL/SQL过程已成功完成。
我们可以启动对客户机的跟踪:
SQL> exec dbms_monitor.client_id_trace_enable
(client_id=>'kimberly');
PL/SQL过程已成功完成。
请注意,所有这些设置都是永久性的--所有与该服务和模块关联的会话都会被跟踪,而不仅仅是跟踪当前会话。
为了基于会话ID跟踪SQL,可以查看Oracle企业管理器的Top Sessions页面,或者像您当前做的那样查询V$SESSION视图。
SQL> select sid, serial#, username
from v$session;
SID SERIAL# USERNAME
------ ------- ------------
133 4152 SYS
137 2418 SYSMAN
139 53 KIMBERLY
140 561 DBSNMP
141 4 DBSNMP
. . .
168 1
169 1
170 1
28 rows selected.
通过会话ID(SID)和序号,您可以使用DBMS_MONITOR只对下面的会话启用跟踪:
SQL> exec dbms_monitor.session_trace_enable(139);
PL/SQL过程已成功完成。
该序号默认为该SID的当前序号(除非另外指定),因此如果那就是您想跟踪的会话和序号,那么您就不必查看更多的内容了。还有,默认情况下,WAITS设置为true而BINDS设置为false,因此上面的语法实际上与下面的语法效果相同:
SQL> exec dbms_monitor.session_trace_enable
(session_id=>139, serial_num=>53, waits=>true, binds=>false);
请注意,WAITS和BINDS是相同的参数,您在过去可能已经使用DBMS_SUPPORT和10046事件对它们进行了设置。
如果您正在一个生产环境中工作,那么此时您最好重新运行出错的SQL或应用程序,并且相应地创建跟踪文件。
更多精彩
赞助商链接