
▪ Trace文件的位置
11g R1以上:
从11gR1开始,Oracle引入了新的诊断结构,以参数DIAGNOSTIC_DEST控制存放trace文件与core文
件的路径。
可以用以下命令,获取DIAGNOSTIC_DEST的位置:
SQL> show parameter diagnostic_dest
11gR1以前:
如果是用户进程,10046 trace文件会被生成在user_dump_dest下;如果是后台进程,trace文件会被
生成在background_dump_dest下。
下面的命令可以显示user_dump_dest:
SQL> show parameter user_dump_dest
注:下面的某些例子中会设定tracefile_identifier,通过这个设置可以帮助我们更容易的找到生成的
trace文件。
▪ 在Session级打开trace
适用于SQL语句可以在新的session创建后再运行。
在session级收集10046 trace:
alter session set tracefile_identifier='10046';
alter session set timed_statistics = true;
alter session set statistics_level=all;
alter session set max_dump_file_size = unlimited;
alter session set events '10046 trace name context forever,level 12';
--
执行需要被
trace
的
SQL --
select * from dual;
exit;
如果不退出当前session, 可以用以下命令关闭trace:
alter session set events '10046 trace name context off';
注意,如果session没有被彻底地关闭并且跟踪被停止了,某些重要的trace信息的可能会丢失。
注意:这里我们将"statistics_level"设置为all,这是因为有可能这个参数在系统级不是默认
值"TYPICAL"(比如 BASIC)。为了收集性能相关问题的信息我们需要打开某个级别的statistics。
我们推荐在 session 级将这个参数设置成 ALL 以便于收集更多的信息,尽管这不是必须的。
▪ 跟踪一个已经开始的进程
如果需要跟踪一个已经存在session,可以用 oradebug连接到session上,并发起10046 trace。
1. 首先,用某种方法找到需要被跟踪的session.
例如,在SQL*Plus里,找出目标session的OS的进程ID(spid):
select p.PID,p.SPID,s.SID
from v$process p,v$session s
where s.paddr = p.addr
文档 1523462.1 https://support.oracle.com/epmos/faces/DocumentDisplay?_a...
第2页 共7页 2025/3/5 11:55
相关文档
评论