ITPub博客

首页 > 数据库 > Oracle > 利用SQL_TRACE跟踪SQL的执行

利用SQL_TRACE跟踪SQL的执行

原创 Oracle 作者:FIGHT_ANGEL 时间:2016-04-05 16:49:15 0 删除 编辑
SQL_TRACE相当于10046事件的LEVEL 1 (10046事件包括1,4,8,12四个级别)
包括:输出 APPNAME(应用程序名),PARSING IN CURSOR,PARSE ERROR(SQL解析),EXEC(执行),FETCH(获取数据),UNMAP,SORT UNMAP(排序,临时段),ERROR,STAT(执行计划),XCTEND(事务)等

trace file 在参数user_dump_dest对应的目录下生成,可以在一个session中生成多个trace file
缺省的文件名格式为:sid_ora_pid_traceid.trc  注:TRACEID就是你自己定义的标识符,默认是空值!

ALTER SESSION SET SQL_TRACE=TRUE;
ALTER SESSION SET TRACEFILE_IDENTIFIER='mysession';

ALTER SESSION SET SQL_TRACE=FALSE;
ALTER SESSION SET TRACEFILE_IDENTIFIER='';

或者使用 DBMS_SESSION程序包 来开启或关闭sql_trace
SQL> exec DBMS_SESSION.SET_SQL_TRACE (sql_trace boolean);

示例如下:
SQL> show parameter user_dump
NAME         TYPE      VALUE
----------------- ----------- ------------------------------
user_dump_dest   string    /u01/diag/rdbms/orcl/orcl/trace

SQL> show parameter trace
NAME                   TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_trace            integer     0
sec_protocol_error_trace_action    string      TRACE
sql_trace                boolean     FALSE
trace_enabled              boolean     TRUE
tracefile_identifier          string

SQL> select value from v$diag_info where name='Default Trace File';--当前session默认的trace文件
VALUE
--------------------------------------------------------
/u01/diag/rdbms/orcl/orcl/trace/orcl_ora_26614.trc

SQL> alter session set tracefile_identifier='mysession';--设置自定义标识符
Session altered.

SQL> select value from v$diag_info where name='Default Trace File';--当前session默认的trace文件
VALUE
-------------------------------------------------------------
/u01/diag/rdbms/orcl/orcl/trace/orcl_ora_26614_mysession.trc

SQL> alter session set sql_trace=true;--打开sql_trace
Session altered.

SQL> select sysdate from dual;--执行语句
SYSDATE
---------
05-APR-16

SQL> alter session set sql_trace=false;--关闭sql_trace
Session altered.

cd到trace目录,查看生成的trace文件
[oracle@silent ~]$ cd /u01/diag/rdbms/orcl/orcl/trace
[oracle@silent trace]$ ll *mysession*
-rw-r----- 1 oracle oinstall 2456 Apr  5 16:24 orcl_ora_26614_mysession.trc
-rw-r----- 1 oracle oinstall  110 Apr  5 16:24 orcl_ora_26614_mysession.trm

使用Oracle自带的一个命令行工具tkprof,将trace文件生成一个易读的文本文件
[oracle@silent trace]$ tkprof orcl_ora_26614_mysession.trc mysession.txt
[oracle@silent trace]$ ll *mysession*
-rw-r--r-- 1 oracle oinstall 5455 Apr  5 16:26 mysession.txt
-rw-r----- 1 oracle oinstall 2456 Apr  5 16:24 orcl_ora_26614_mysession.trc
-rw-r----- 1 oracle oinstall  110 Apr  5 16:24 orcl_ora_26614_mysession.trm

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28909249/viewspace-2075620/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2015-10-26

  • 博文量
    5
  • 访问量
    15273