日期:2014-05-16 浏览次数:20517 次
?
今天测试说在加载条目数据、校验数据和质检数据的时候很慢,但是又不知道这些操作的具体SQL是什么,很难分析,应用程序用的是weblogic中间件,session很难跟踪,只好追踪整个库的会话情况,由于整库跟踪需要前台只有一个人操作,跟踪结果才准确,如果多人操作,对跟踪结果会有影响,需要和测试人员约好时间,目前还未开始正式测试性能,所以以下操作都是在本人电脑上实验。
利用dbms_monitor追踪SESSION,如果在程序里指定CLIENT_ID,追踪起来相对简单些,可以使用CLIENT_ID_STAT_ENABLE来追踪,但是程序别没有指定,那么追踪单个SESSION的信息,就需要用SESSION_TRACE_ENABLE来追踪,但是WEBLOGIC连接池很可能连接数据库的不是同一个SESSION,没法确定SID和SERIAL#,也没法使用,只好使用DATABASE_TRACE_ENABLE进行整个数据库的跟踪,下面分别对SESSION_TRACE_ENABLE和DATABASE_TRACE_ENABLE进行演示。
首先演示利用SESSION_TRACE_ENABLE追踪SESSION的用法,首先需要查到要追踪会话的SID和SERIAL#。
SQL> select sid, serial# from v$session where sid in (select sid from
??2? v$mystat where rownum = 1);
?????? SID??? SERIAL#
---------- ----------
?????? 144??????? ??5
???????? 启动会话跟踪。
SQL> exec dbms_monitor.session_trace_enable(144, 5, true, true);
PL/SQL 过程已成功完成。
???????? 做一些操作,让dbms_monitor追踪到。
SQL> select count(*) from user_objects;
? COUNT(*)
----------
??????? 52
SQL> select count(*) from tab;
? COUNT(*)
----------
??????? 34
????????