SQL> alter session set events "10046 trace name context forever ,level 12" ;SQL> alter session set events "10046 trace name context off" ;从上面语句可以看出追踪的是当前正在使用的会话,在两个语句之间可以放入我们需要分析的语句。
获取trace文件
在当前sqlplus会话下,可以通过以下语句获得trace文件的数字编号。其中SPID即为trace文件的数字编号,一般的组成方式为实例名_ora_SPID.ora select b.sid,b.SADDR,c.ADDR,c.PID,c.SPID from v(session b,v)process c where b.SID=(select distinct sid from v$mystat) and b.PADDR=c.ADDR; trace文件的解析一样可以使用tkprof。 tkprof INST_ora_3370.trc INST_ora_3370.trc explain=test/test
用于监控的脚本
为了同时更好的分析查实事件,我写了一个脚本用于同时获取外部时间计时同时生成trace文件。 prompt written by camash prompt Importing table ... set trimspool on; set linesize 120; set pagesize 2000; set newpage 1; set heading off; set term off; spool test_formal_4.txt; set feedback off set define off var t1 varchar2(20) var t2 varchar2(20) set timing on alter session set events "10046 trace name context forever ,level 12" ; exec :t1:=to_char(SYSTIMESTAMP,"hh24:mi:ss.ff3"); --------------- your sql script --------------- alter session set events "10046 trace name context off" ; prompt Done. exec :t2:=to_char(SYSTIMESTAMP,"hh24:mi:ss.ff3") set serverout on exec dbms_output.put_line("start time: "|| :t1); exec dbms_output.put_line("end time: "|| :t2); spool off;这样每条SQL语句的实际时间就会存放在执行目录的“test_formal_4.txt”文件中,而trace文件将在trace文件目录中生成。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址