1. 环境: oracle 10.2.0.4
2. 测试场景: 通过weblogic提供的数据源连接数据库
1)weblogic中建立数据源时,初始设定一个连接,以方便确认执行过程中,所产生的trace文件。
2)确认trace文件生成的路径:
SQL> show parameter user_dump_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ user_dump_dest string /oracle/admin/jf/udump SQL> show parameter background_dump_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ background_dump_dest string /oracle/admin/jf/bdump |
3)确认用户id
Toad中执行: SELECT SID, SERIAL#, USER#, USERNAME, STATUS FROM V$SESSION T WHERE MACHINE LIKE '本机机器名%'; 目前:本机连接数据库有toad连接和Weblogic建立的数据源连接,故返回两条记录,其中Weblogic建立的数据源连接显示status为INACTIVE。 记录该笔资料的SID和SERIAL#值 |
4)使用sys用户开启Trace
execdbms_monitor.session_trace_enable(93,18096,true,true);;【sid:93;serial: 18096】 PL/SQL procedure successfully completed. |
5)进入trace文件的存放路径,此时并未发现今日生成的.trc文件
ls –lrt * |
6)当通过应用程序发生了数据库操作后,查看/oracle/admin/jf/udump目录下生成了jf_ora_8182.trc文件【通过文件生成的时间判断】
7)通过tkprof命令转化trace文件为txt格式
[200.14]/oracle/admin/jf/udump>tkprof jf_ora_8182.trc/home/bea/app/lihailong/8023_new_03.txt explain=userName/pwdaggregate=no sys=no waits=no; |
8)关闭trace跟踪
SQL> exec dbms_monitor.session_trace_disable(93,18096); |
9)应用程序再发生了数据库操作后,jf_ora_8182.trc文件将不再发生变化。
10)生成8023_new_03.txt的部分内容:
SELECT BYDATE,OPERATE_ID,SUM(OPERATE_POINT) OPERATE_POINT FROM (SELECT SUBSTR(A.CREATE_TIME,0,6) BYDATE,A.OPERATE_ID OPERATE_ID, TO_NUMBER(A.OPERATE_POINT) OPERATE_POINT FROM BE_POINT_DETAIL A ,be_purse B WHERE A.PURSE_ID=B.PURSE_ID AND ( a.customer_id = :1 or a.customer_id = :2 )AND A.CREATE_TIME >= :3 AND B.PURSE_TYPE_ID != '3' AND B.PURSE_PROCESS_TYPE = '1' ) GROUP BY BYDATE,OPERATE_ID ORDER BY BYDATE DESC
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 4 0.01 0.00 0 546 0 30 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 6 0.01 0.01 0 546 0 30
Misses in library cache during parse: 1 Misses in library cache during execute: 1 Optimizer mode: ALL_ROWS Parsing user id: 31 (JF_ISU)
Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT MODE: ALL_ROWS 0 SORT (GROUP BY) 0 NESTED LOOPS 0 INLIST ITERATOR 0 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID) OF 'BE_POINT_DETAIL' (TABLE) 0 INDEX MODE: ANALYZED (RANGE SCAN) OF 'IDX_BE_POINT_DETAIL' (INDEX) 0 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID) OF 'BE_PURSE' (TABLE) 0 INDEX MODE: ANALYZED (UNIQUE SCAN) OF 'PK_BE_PURSE' (INDEX (UNIQUE))
Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ SQL*Net message to client 5 0.00 0.00 SQL*Net message from client 5 0.01 0.04 |
3.测试场景: 开发过程中,通过Toad工具连接数据库后,测试某SQL语句的执行情况
1) 在toad的SQL窗口中,执行如下语句:
开启Trace跟踪: ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
关闭Trace 跟踪:ALTER SESSION SET EVENTS '10046 trace name context off';
2) 开启Trace后,在/oracle/admin/jf/udump目录下存在jf_ora_13297.trc文件
3) 通过toad执行【同场景1中step10的SQL】
SELECT bydate, operate_id, SUM (operate_point) operate_point FROM (SELECT SUBSTR (a.create_time, 0, 6) bydate, a.operate_id operate_id, TO_NUMBER (a.operate_point) operate_point FROM be_point_detail a, be_purse b WHERE a.purse_id = b.purse_id AND (a.customer_id = :1 OR a.customer_id = :2) AND a.create_time >= :3 AND b.purse_type_id != '3' AND b.purse_process_type = '1') GROUP BY bydate, operate_id ORDER BY bydate DESC |
4) 多次执行SQL后,通过tkprof产生如下内容:
SELECT bydate, operate_id, SUM (operate_point) operate_point FROM (SELECT SUBSTR (a.create_time, 0, 6) bydate, a.operate_id operate_id, TO_NUMBER (a.operate_point) operate_point FROM be_point_detail a, be_purse b WHERE a.purse_id = b.purse_id AND (a.customer_id = :1 OR a.customer_id = :2) AND a.create_time >= :3 AND b.purse_type_id != '3' AND b.purse_process_type = '1') GROUP BY bydate, operate_id ORDER BY bydate DESC
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.61 72.67 6742 12092 0 8 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 3 0.61 72.67 6742 12092 0 8
Misses in library cache during parse: 0 Optimizer mode: ALL_ROWS Parsing user id: 31
Rows Row Source Operation ------- --------------------------------------------------- 8 SORT GROUP BY (cr=12092 pr=6742 pw=0 time=72671905 us) 7989 HASH JOIN (cr=12092 pr=6742 pw=0 time=14807759 us) 85 TABLE ACCESS FULL BE_PURSE (cr=7 pr=0 pw=0 time=180 us) 7989 INLIST ITERATOR (cr=12085 pr=6742 pw=0 time=14790792 us) 7989 TABLE ACCESS BY INDEX ROWID BE_POINT_DETAIL (cr=12085 pr=6742 pw=0 time=14789762 us) 42231 INDEX RANGE SCAN IDX_BE_POINT_DETAIL (cr=269 pr=152 pw=0 time=49272 us)(object id 26977)
Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ SQL*Net message to client 2 0.00 0.00 SQL*Net message from client 2 17.44 17.44 db file sequential read 6742 0.12 72.20 |
SELECT bydate, operate_id, SUM (operate_point) operate_point FROM (SELECT SUBSTR (a.create_time, 0, 6) bydate, a.operate_id operate_id, TO_NUMBER (a.operate_point) operate_point FROM be_point_detail a, be_purse b WHERE a.purse_id = b.purse_id AND (a.customer_id = :1 OR a.customer_id = :2) AND a.create_time >= :3 AND b.purse_type_id != '3' AND b.purse_process_type = '1') GROUP BY bydate, operate_id ORDER BY bydate DESC
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.15 0.15 0 12092 0 8 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 3 0.15 0.15 0 12092 0 8
Misses in library cache during parse: 0 Optimizer mode: ALL_ROWS Parsing user id: 31
Rows Row Source Operation ------- --------------------------------------------------- 8 SORT GROUP BY (cr=12092 pr=0 pw=0 time=151202 us) 7989 HASH JOIN (cr=12092 pr=0 pw=0 time=86769 us) 85 TABLE ACCESS FULL BE_PURSE (cr=7 pr=0 pw=0 time=187 us) 7989 INLIST ITERATOR (cr=12085 pr=0 pw=0 time=69778 us) 7989 TABLE ACCESS BY INDEX ROWID BE_POINT_DETAIL (cr=12085 pr=0 pw=0 time=69809 us) 42231 INDEX RANGE SCAN IDX_BE_POINT_DETAIL (cr=269 pr=0 pw=0 time=104 us)(object id 26977)
Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ SQL*Net message to client 2 0.00 0.00 SQL*Net message from client 2 2.31 2.31 |