一 跟踪当前会话
1.1 查看当前会话的SID,SERIAL#
#在当前会话里执行
示例:
SQL> select distinct userenv('sid') from v$mystat;
USERENV('SID')
--------------
1945
SQL> select distinct sid,serial# from v$session where sid=1945;
SID SERIAL#
---------- ----------
1945 42786
1.2 开启跟踪
EXEC DBMS_MONITOR.SESSION_TRACE_ENABLE;
1.3 执行sql
select 1 from dual;
1.4 关闭跟踪
EXEC DBMS_MONITOR.SESSION_TRACE_DISABLE;
1.5 查看跟踪
1.5.1 查看追踪文件路径
SELECT S.SID,S.SERIAL#,P.TRACEFILE FROM V$SESSION S ,V$PROCESS P WHERE P.ADDR=S.PADDR AND S.SID=1945;
SID SERIAL# TRACEFILE
---------- ---------- ----------------------------------------------------------------------
1945 42786 /u01/app/oracle/diag/rdbms/emdata/emdata/trace/emdata_ora_180907.trc
1.5.2 格式化追踪文件
#将该trace文件格式化下,输出到outputfile.txt文件下:
tkprof /u01/app/oracle/diag/rdbms/emdata/emdata/trace/emdata_ora_180907.trc outputfile.txt
1.5.3 查看追踪文件
less outputfile.txt
可以看到该会话执行过的sql,sql_id,PLAN HASH,用户名,等待事件等信息。