1.最简单的方法
alter session set sql_trace=true;
2.10046调试事件
10046事件有5个等级:
0: 禁止调试事件。
1: 给出如下信息:sql语句、解析、执行、统计信息等。
4: 1+绑定变量的额外信息。主要是数据类型、精度以及每次执行时绑定变量的值
8: 1+等待事件的详细信息。主要是等待事件的名字、持续时间,以及一些额外的参数。
12:1+4+8
利用10046事件启用跟踪:
alter session set events '10046 trace name context forever,level n';
alter session set events '10046 trace name off';
也可以在instance级使用10046事件
alter system set events '10046 trace name context forever, level 1';
3.Oracle 10g以后提供了dbms_monitor包来开启和关闭SQL跟踪:
- 会话级
使用dbms_monitor包的session_trace_enable和session_trace_disable可在会话级别
开启和关闭SQL跟踪。
dbms_monitor.session_trace_enable(session_id => 151,serial_num => 62,waits => ture,binds => false);
dbms_monitor.session_trace_disable(session_id => 151,serial_num => 62);
利用session_trace_enable过程开启SQl跟踪的时候,v$session视图的列sql_trace、sql_trace_waits、sql_trace_binds也会设定相应的值。不过只有在被跟踪的会话至少执行了一个SQL语句的时候才会设定。
- 客户端级
使用dbms_monitor包的client_id_trace_enable和
client_id
_trace_disable可在客户端级
开启和关闭SQL跟踪。这些过程只有在会话属性客户端标记client_identifier已经设定后才有用。可以使用
dbms_session.set_identifier(client_id=>'hello.com.cn');设定客户端标记。
conn scott/tiger
exec
dbms_session.set_identifier(client_id=>'hello.com.cn');
select sid,serial#,client_identifier from v$session;
SID SERIAL# CLIENT_IDENTIFIER
---------- ---------- ------------------------------
151 62 hello.com.cn
conn / as sysdba
exec dbms_monitor.client_id_trace_enable(client_id=>'hello.com.cn',waits=>true,binds=>false);
exec dbms_monitor.client_id_trace_disable(client_id=>'hello.com.cn');
- 数据库级
要为所有连接到数据库的会话打开或关闭SQL跟踪,dbms_monitor包提供了database_trace_enable和database_trace_disable过程。
dbms_monitor.database_trace_enable(waits=>ture,binds=>trus,instance_name=>null);
dbms_monitor.database_trace_disable(instance_name=null);
在RAC上,通过指定instance_name参数,能够对指定的示例进行跟踪。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25791987/viewspace-721493/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25791987/viewspace-721493/