重庆思庄Oracle、Redhat认证学习论坛

标题: SQL_TRACE的说明 [打印本页]

作者: jiawang    时间: 2019-2-12 13:13
标题: SQL_TRACE的说明

在全局启用SQL_TRACE会导致所有进程的活动被跟踪,包括后台进程及所有用户进程,这通常会导致比较严重的性能问题,所以在生产环境中要谨慎使用,这个参数在10g之后是动态参数,可以随时调整,在某些诊断中非常有效。


注意:
设置初始化sql_trace参数为ture会对整个实例产生严重的性能影响,所以在生产中不建议设置这个参数。如果要对特定的session启用跟踪,可以使用alter session或者dbms_system.set_sql_trace_in_session来设置,你需要保证一下条件以最小化性能影响:
1、至少保证有25%的CPU idlc;
2、为user_dump_dest分配足够的空间;
3、条带化磁盘减轻IO负担。


[oracle@localhost ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Feb 12 11:19:22 2019
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


SQL> show parameter SQL_trace;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sql_trace                            boolean     FALSE


启用当前session的跟踪:
SQL> alter session set SQL_trace=true;
Session altered.


此时的SQL操作将被跟踪:
SQL> select count(*) from dba_users;
  COUNT(*)
----------
        32



结束跟踪:
SQL> alter session set SQL_trace=false;
Session altered.



查看当前跟踪文件
SQL> select value from v$diag_info where name='Default Trace File';

VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_4080.trc

[oracle@localhost ~]$ cd /u01/app/oracle/diag/rdbms/orcl/orcl/trace/
[oracle@localhost trace]$ more orcl_ora_4080.trc