1、启用sql_trace

查询v$session视图获取进程信息
select sid,serial#,username from v$session where username is not null;
 
2、根据相应的应用会话,启用sql_trace跟踪
exec dbms_system.set_sql_trace_in_session(7,284,true);
exec dbms_system.set_sql_trace_in_session(11,214,true);
3、执行一段时间后,关闭sql_trace
exec dbms_system.set_sql_trace_in_session(7,284,false);
exec dbms_system.set_sql_trace_in_session(11,214,false);
4、检查trace文件,找到跟踪过程中前台执行的sql调用,
例如:以下语句可疑
 
select auditstatus,categoryid,auditlevel from categoryarticleassign a,category b where b.id=a.categoryid and articleId= 20030700400141 and auditstatus>0 
call     count     cpu     elapsed     disk      query      current     rows
 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- 
Parse        1       0.00   0.00            0        0          0          0
Execute      1       0.00   0.00            0        0          0          0 
Fetch        1       0.81   0.81            0     3892          0          1
------- ------ -------- ---------- ---------- ---------- ---------- ---------- 
total        3       0.81   0.81            0     3892          0          1
 
这里的查询显然是根据articleId进行新闻读取的,但是注意到逻辑读有3892,这是较高的一个数字
 alter session set events '10046 trace name CONTEXT forever, level 1';
 alter session set "_rowsrc_trace_level"=4;