select sid, serial#, sql_trace, sql_trace_waits, sql_trace_binds from v$session where username = 'HR'输出结果如下:
SID SERIAL# SQL_TRAC SQL_T SQL_T ---------- ---------- -------- ----- ----- 196 60946 DISABLED FALSE FALSE此处您可以看到,SID 为 196、Serial# 为 60946 的会话未启用跟踪。 现在,您可以对等待事件(而不是绑定变量)启用跟踪。可以使用程序包 dbms_monitor 启用跟踪。
begin dbms_monitor.session_trace_enable ( session_id => 196, serial_num => 60960, waits => true, binds => false ); end; /现在,如果您要查看会话信息:
select sid, serial#, sql_trace, sql_trace_waits, sql_trace_binds from v$session where username = 'HR'输出结果如下:
SID SERIAL# SQL_TRAC SQL_T SQL_T ---------- ---------- -------- ----- ----- 196 60960 ENABLED TRUE FALSE注意,仅当使用程序包 dbms_monitor 中的过程 session_trace_enable 启用跟踪(而不是通过 alter session set sql_trace = true 或设置事件 10046)时,才会填充视图 V$SESSION。在以后的某个时间点上,如果您要查明哪些会话已经启用了跟踪,可以使用以上查询执行此操作。 如果使用程序包 dbms_monitor 中的其他过程(如 SERV_MOD_ACT_TRACE_ENABLE 或 CLIENT_ID_TRACE_ENABLE)启用了跟踪,V$SESSION 视图将不显示该信息。相反,它们将记录到另一个视图 DBA_ENABLED_TRACES 中。可以将该视图与其他相关信息存储连接在一起以查看启用了跟踪的会话。例如,使用
SELECT * FROM (SELECT SID, 'SESSION_TRACE' trace_type FROM v$session WHERE sql_trace = 'ENABLED') UNION (SELECT SID, t.trace_type FROM v$session s, dba_enabled_traces t WHERE t.trace_type = 'CLIENT_ID' AND s.client_identifier = t.primary_id) UNION (SELECT SID, t.trace_type FROM v$session s, dba_enabled_traces t, v$instance i WHERE t.trace_type = 'SERVICE' AND s.service_name = t.primary_id AND (t.instance_name IS NULL OR t.instance_name = i.instance_name)) UNION (SELECT SID, t.trace_type FROM v$session s, dba_enabled_traces t, v$instance i WHERE t.trace_type = 'SERVICE_MODULE' AND s.service_name = t.primary_id AND s.module = t.qualifier_id1 AND (t.instance_name IS NULL OR t.instance_name = i.instance_name)) UNION (SELECT SID, t.trace_type FROM v$session s, dba_enabled_traces t, v$instance i WHERE t.trace_type = 'SERVICE_MODULE_ACTION' AND s.service_name = t.primary_id AND s.module = t.qualifier_id1 AND s.action = t.qualifier_id2 AND (t.instance_name IS NULL OR t.instance_name = i.instance_name)) UNION (SELECT SID, t.trace_type FROM v$session s, dba_enabled_traces t, v$instance i WHERE t.trace_type = 'DATABASE' AND (t.instance_name IS NULL OR t.instance_name = i.instance_name))输出结果如下:
SID TRACE_TYPE ---------- --------------------- 136 SERVICE_MODULE 136 SERVICE_MODULE_ACTION您可以看到,您已经对会话 136 的 Service Module 和 Service Module Action 启用了跟踪。但 DBA_ENABLED_TRACES 并未显示绑定变量或等待事件。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12272958/viewspace-677311/ ,如需转载,请注明出处,否则将追究法律责任。