直接开启数据库实例级别的sql_trace是不现实的,会对所有连接到oracle的session都产生sql_trace,这样会产生大量的trace文件(垃圾文件),因此为跟踪特定进程的sql信息,可以对特点进程产生sql_trace文件,步骤如下:
1、获取sender进程的sid,serial#,spid
select a.process,a.program,a.saddr,a.sid,a.serial#,a.paddr,b.spid,b.username,b.program
from v$session a,v$process b
where a.paddr=b.addr
and a.program like 'sender%'
and a.osuser='dsg'
order by 1;
(漫兮网 - 服务于区块链创业者、技术人和站长的网站http://www.manxinet.com)
2、开启sender进程的sql_trace跟踪
SQL> alter session set sql_trace = true;
SQL> exec SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION =(SID,SERIAL#,TRUE);
注:必须产生新交易以后才能生成trace文件,即sender进程必须有事物发生才能产生对应的sql_trace文件
(漫兮网 - 服务于区块链创业者、技术人和站长的网站http://www.manxinet.com)
3、关闭sender进程的sql_trace跟踪
追踪一段时间的sql以后,切忌不要忘记关闭sender进程的sql_trace
SQL> exec SYS.DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION =(SID,SERIAL#,FALSE);
4、使用tkprof格式化trace文件
[dsg@dsgsource ~]$ tkprof ./DSGS_ora_2689.trc /home/dsg/2.txt