因为TRACE的目标范围不同,所以导致必须使用不同的方法。若作用于数据库全局的,则改初始化参数。若只作用于当前会话的,则就用ALTER SESSION命令。若作用于其它会话的,则就用DBMS_SYSTEM包。
1.SQL_TRACE的使用
SQL_TRACE可以作为初始化参数在全局启用,也可以通过命令行方式在具体会话启用。在参数文件(PFILE/SPFILE)中指定:SQL_TRACE=TRUE或ALTER SYSTEM SET SQL_TRACE=TRUE;。
通过在全局启用SQL_TRACE可以跟踪到所有后台进程及所有用户进程的活动,通过跟踪文件的实时变化,可以清晰地看到各个进程之间的紧密协调。需要注意的是,在全局启用SQL_TRACE会产生大量trace文件,很容易耗尽磁盘空间,这通常会导致比较严重的性能问题,所以在生产环境中要谨慎使用,并且及时关闭。
1.1.当前SESSION跟踪
1.1.1.开启追踪
ALTER SESSION SET SQL_TRACE=TRUE;
1.1.2.执行sql
SELECT * FROM SCOTT.EMP WHERE EMPNO=7839;
1.1.3.停止跟踪
ALTER SESSION SET SQL_TRACE=FALSE;
1.1.4.查看产生的trace文件
SELECT *FROM V$DIAG_INFO WHERE NAME='Default Trace File';
1.1.5.格式化trace文件
[oracle@test01 ~]$ tkprof /oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_18890.trc /tmp/111.txt
2.跟踪其他用户session
2.1.1.查询出需要跟踪的session信息
session1信息如下:
SELECT SID,SERIAL#,USERNAME FROM V$SESSION WHERE USERNAME='SYS' AND STATUS='INACTIVE';