前提:
1)、必须确保timed_statistics为TRUE,这个参数可以在会话级上进行修改。
2)、为了确保trace输出能够完整进行,还要调整此会话对trace文件大小的限制,一般将此限制取消,即将max_dump_file_size设置为UNLIMITED,或者设置为一个很大的阙值。
1、跟踪本会话:
set line 300;
set arraysize 1000;
select userenv('sid') from dual;
select p.SPID, s.SID, s.SERIAL#, p.INST_ID from Gv$process p, Gv$session s where s.PADDR = p.ADDR and s.SID = userenv('SID') and p.INST_ID = s.INST_ID;
set autotrace traceonly;
set timing on;
alter session set events '10046 trace name context forever ,level 12' ;
--alter session set events '10053 trace name context forever ,level 2' ;
执行sql或存储过程
alter session set events '10046 trace name context off' ;
--alter session set events '10053 trace name context off' ;
2、跟踪其他指定会话:
----指定跟踪SESSION的SPID(OS process)
oradebug setospid 20336
oradebug unlimit
oradebug event 10046 trace name context forever,level 12
经过一段时间后关闭10046
oradebug event 10046 trace name context off;
exec dbms_system.set_ev(30,24167,10046,12,'');
找出进程的sid和serial,然后对他们设置10046事件:
SQL> select sid,serial# from v$session where sid in (30,37);
SID SERIAL#
---------- ----------
30 24167
37 2707
SQL> exec dbms_system.set_ev(30,24167,10046,12,'');
SQL> exec dbms_system.set_ev(37,2707,10046,12,'');
1)、必须确保timed_statistics为TRUE,这个参数可以在会话级上进行修改。
2)、为了确保trace输出能够完整进行,还要调整此会话对trace文件大小的限制,一般将此限制取消,即将max_dump_file_size设置为UNLIMITED,或者设置为一个很大的阙值。
1、跟踪本会话:
set line 300;
set arraysize 1000;
select userenv('sid') from dual;
select p.SPID, s.SID, s.SERIAL#, p.INST_ID from Gv$process p, Gv$session s where s.PADDR = p.ADDR and s.SID = userenv('SID') and p.INST_ID = s.INST_ID;
set autotrace traceonly;
set timing on;
alter session set events '10046 trace name context forever ,level 12' ;
--alter session set events '10053 trace name context forever ,level 2' ;
执行sql或存储过程
alter session set events '10046 trace name context off' ;
--alter session set events '10053 trace name context off' ;
SQL> show parameter background_dump_dest
到该目录找到生成的trc后缀的trace文件。
tkprof tracfilename.trc tracfilename.txt (格式处理为易读格式)2、跟踪其他指定会话:
----指定跟踪SESSION的SPID(OS process)
oradebug setospid 20336
oradebug unlimit
oradebug event 10046 trace name context forever,level 12
经过一段时间后关闭10046
oradebug event 10046 trace name context off;
exec dbms_system.set_ev(30,24167,10046,12,'');
找出进程的sid和serial,然后对他们设置10046事件:
SQL> select sid,serial# from v$session where sid in (30,37);
SID SERIAL#
---------- ----------
30 24167
37 2707
SQL> exec dbms_system.set_ev(30,24167,10046,12,'');
SQL> exec dbms_system.set_ev(37,2707,10046,12,'');