|
在全局启用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
|
|