【优化】DBMS_MONITOR包之生成跟踪文件

DBMS_MONITOR

为了使跟踪更加灵活,oracle 10gdbms_monitor就出现了,可以说它的灵活性是比以往的任何跟踪工具都要强,它可以跟踪指定的sessionmodule或者整个数据库你可以用它来明确的指定是否开启对绑定变量或者等待事件的追踪,详细的dbms_monitor过程和函数可以用desc dbms_monitor查看或者查看官方文档。

 

——desc查看包的详细信息:

SYS@ORA11GR2>desc dbms_monitor

PROCEDURE CLIENT_ID_STAT_DISABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 CLIENT_ID                      VARCHAR2                IN

PROCEDURE CLIENT_ID_STAT_ENABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 CLIENT_ID                      VARCHAR2                IN

PROCEDURE CLIENT_ID_TRACE_DISABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 CLIENT_ID                      VARCHAR2                IN

PROCEDURE CLIENT_ID_TRACE_ENABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 CLIENT_ID                      VARCHAR2                IN

 WAITS                          BOOLEAN                 IN     DEFAULT

 BINDS                          BOOLEAN                 IN     DEFAULT

 PLAN_STAT                      VARCHAR2                IN     DEFAULT

PROCEDURE DATABASE_TRACE_DISABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 INSTANCE_NAME                  VARCHAR2                IN     DEFAULT

PROCEDURE DATABASE_TRACE_ENABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------

 WAITS                          BOOLEAN                 IN     DEFAULT

 BINDS                          BOOLEAN                 IN     DEFAULT

 INSTANCE_NAME                  VARCHAR2                IN     DEFAULT

 PLAN_STAT                      VARCHAR2                IN     DEFAULT

PROCEDURE SERV_MOD_ACT_STAT_DISABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 SERVICE_NAME                   VARCHAR2                IN

 MODULE_NAME                    VARCHAR2                IN

 ACTION_NAME                    VARCHAR2                IN     DEFAULT

PROCEDURE SERV_MOD_ACT_STAT_ENABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 SERVICE_NAME                   VARCHAR2                IN

 MODULE_NAME                    VARCHAR2                IN

 ACTION_NAME                    VARCHAR2                IN     DEFAULT

PROCEDURE SERV_MOD_ACT_TRACE_DISABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 SERVICE_NAME                   VARCHAR2                IN

 MODULE_NAME                    VARCHAR2                IN     DEFAULT

 ACTION_NAME                    VARCHAR2                IN     DEFAULT

 INSTANCE_NAME                  VARCHAR2                IN     DEFAULT

PROCEDURE SERV_MOD_ACT_TRACE_ENABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 SERVICE_NAME                   VARCHAR2                IN

 MODULE_NAME                    VARCHAR2                IN     DEFAULT

 ACTION_NAME                    VARCHAR2                IN     DEFAULT

 WAITS                          BOOLEAN                 IN     DEFAULT

 BINDS                          BOOLEAN                 IN     DEFAULT

 INSTANCE_NAME                  VARCHAR2                IN     DEFAULT

 PLAN_STAT                      VARCHAR2                IN     DEFAULT

PROCEDURE SESSION_TRACE_DISABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 SESSION_ID                     BINARY_INTEGER          IN     DEFAULT

 SERIAL_NUM                     BINARY_INTEGER          IN     DEFAULT

PROCEDURE SESSION_TRACE_ENABLE

 Argument Name                  Type                    In/Out Default?

 ------------------------------ ----------------------- ------ -----

 SESSION_ID                     BINARY_INTEGER          IN     DEFAULT

 SERIAL_NUM                     BINARY_INTEGER          IN     DEFAULT

 WAITS                          BOOLEAN                 IN     DEFAULT

 BINDS                          BOOLEAN                 IN     DEFAULT

 PLAN_STAT                      VARCHAR2                IN     DEFAULT

 

——查询生成trace文件的名称

SYS@ORA11GR2>SELECT c.value || '/' || d.instance_name || '_ora_' || a.spid || '.trc' trace

  2     FROM v$process a, v$session b, v$parameter c, v$instance d

  3    WHERE a.addr = b.paddr

  4      AND b.audsid = userenv('sessionid')

  5      AND c.name = 'user_dump_dest';

 

TRACE

-------------------------------------------------------------------

/u01/app/oracle/diag/rdbms/ora11gr2/ORA11GR2/trace/ORA11GR2_ora_24482.trc

/u01/app/oracle/diag/rdbms/ora11gr2/ORA11GR2/trace/ORA11GR2_ora_10479.trc

/u01/app/oracle/diag/rdbms/ora11gr2/ORA11GR2/trace/ORA11GR2_ora_10495.trc

 

SYS@ORA11GR2>

——此时,trace文件还没有创建

SYS@ORA11GR2>!ls /u01/app/oracle/diag/rdbms/ora11gr2/ORA11GR2/trace/ORA11GR2_ora_24482.trc

ls: /u01/app/oracle/diag/rdbms/ora11gr2/ORA11GR2/trace/ORA11GR2_ora_24482.trc: No such file or directory

 

——Enable生成跟踪文件

SYS@ORA11GR2>exec dbms_monitor.session_trace_enable

 

PL/SQL procedure successfully completed.

 

——此时,trace文件已经生成

SYS@ORA11GR2>!ls /u01/app/oracle/diag/rdbms/ora11gr2/ORA11GR2/trace/ORA11GR2_ora_24482.trc

/u01/app/oracle/diag/rdbms/ora11gr2/ORA11GR2/trace/ORA11GR2_ora_24482.trc

 

——执行一条sql语句

SYS@ORA11GR2>select count(*) from all_objects;

测试的时候最好不要统计这个视图,因为它涉及到的基本很多,生成trace文件很长

 

  COUNT(*)

----------

     85023

 

——Disable生成跟踪文件

SYS@ORA11GR2>exec dbms_monitor.session_trace_disable

 

PL/SQL procedure successfully completed.

 

——查看生成的trace文件

[oracle@wang trace]$ ls ORA11GR2_ora_24482.trc

ORA11GR2_ora_24482.trc

[oracle@wang trace]$ pwd

/u01/app/oracle/diag/rdbms/ora11gr2/ORA11GR2/trace

[oracle@wang trace]$

 

——利用tkprof工具格式化trace文件,格式化后生成的文件名字为monitor.tkf

 

[oracle@wang trace]$ tkprof ORA11GR2_ora_24482.trc monitor.tkf

 

TKPROF: Release 11.2.0.4.0 - Development on Wed Oct 12 22:59:04 2016

 

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

 

验证:

[oracle@wang trace]$ ls monitor.tkf

monitor.tkf

[oracle@wang trace]$

 

——最后参看trace文件:

省略…………………………………….

*******************************************************************

SQL ID: 9tz4qu4rj9rdp Plan Hash: 453053801

 

select count(*)

from

 all_objects

 

 

call     count       cpu    elapsed       disk      query    current        rows

------- ------  -------- ---------- ---------- ---------- ----------

Parse        1      0.05       0.06          0          0          0           0

Execute      1      0.00       0.00          0          0          0           0

Fetch        2      0.35       0.33          0      15014          0           1

------- ------  -------- ---------- ---------- ---------- ----------

total        4      0.40       0.39          0      15014          0           1

 

Misses in library cache during parse: 1

Optimizer mode: ALL_ROWS

Parsing user id: SYS

Number of plan statistics captured: 1

 

Rows (1st) Rows (avg) Rows (max)  Row Source Operation

---------- ---------- ----------  ----------------------------------

         1          1          1  SORT AGGREGATE (cr=19033 pr=0 pw=0 time=424275 us)

     85023      85023      85023   FILTER  (cr=19033 pr=0 pw=0 time=393443 us)

     86997      86997      86997    HASH JOIN  (cr=1079 pr=0 pw=0 time=94053 us cost=301 size=9566480 card=86968)

        92         92         92     INDEX FULL SCAN I_USER2 (cr=1 pr=0 pw=0 time=117 us cost=1 size=368 card=92)(object id 47)

     86997      86997      86997     HASH JOIN  (cr=1078 pr=0 pw=0 time=61164 us cost=299 size=9218608 card=86968)

        92         92         92      INDEX FULL SCAN I_USER2 (cr=1 pr=0 pw=0 time=139 us cost=1 size=2024 card=92)(object id 47)

     86997      86997      86997      TABLE ACCESS FULL OBJ$ (cr=1077 pr=0 pw=0 time=30456 us cost=298 size=7305312 card=86968)

      4006       4006       4006    TABLE ACCESS BY INDEX ROWID IND$ (cr=886 pr=0 pw=0 time=12785 us cost=2 size=8 card=1)

      5074       5074       5074     INDEX UNIQUE SCAN I_IND1 (cr=104 pr=0 pw=0 time=2903 us cost=1 size=0 card=1)(object id 41)

      2818       2818       2818    HASH JOIN  (cr=3836 pr=0 pw=0 time=122382 us cost=2 size=24 card=1)

      2889       2889       2889     INDEX RANGE SCAN I_OBJAUTH1 (cr=3836 pr=0 pw=0 time=8633 us cost=2 size=11 card=1)(object id 62)

      2940       2940       2940     FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=6560 us cost=0 size=1300 card=100)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=31 us cost=0 size=26 card=1)

       772        772        772    HASH JOIN  (cr=1728 pr=0 pw=0 time=61347 us cost=2 size=24 card=1)

      1321       1321       1321     INDEX RANGE SCAN I_OBJAUTH1 (cr=1728 pr=0 pw=0 time=3160 us cost=2 size=11 card=1)(object id 62)

       811        811        811     FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=1901 us cost=0 size=1300 card=100)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=39 us cost=0 size=26 card=1)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=23 us cost=0 size=26 card=1)

        67         67         67    NESTED LOOPS  (cr=1340 pr=0 pw=0 time=3245 us cost=2 size=24 card=1)

        93         93         93     INDEX RANGE SCAN I_OBJAUTH1 (cr=1340 pr=0 pw=0 time=2464 us cost=2 size=11 card=1)(object id 62)

        67         67         67     FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=196 us cost=0 size=13 card=1)

         0          0          0    NESTED LOOPS  (cr=3415 pr=0 pw=0 time=13433 us cost=8 size=78 card=1)

         0          0          0     NESTED LOOPS  (cr=3415 pr=0 pw=0 time=13167 us cost=8 size=78 card=3)

         0          0          0      NESTED LOOPS  (cr=3415 pr=0 pw=0 time=12951 us cost=5 size=68 card=1)

      1312       1312       1312       NESTED LOOPS  (cr=2454 pr=0 pw=0 time=10128 us cost=4 size=57 card=1)

      1312       1312       1312        MERGE JOIN CARTESIAN (cr=1796 pr=0 pw=0 time=8217 us cost=3 size=53 card=1)

       656        656        656         INDEX RANGE SCAN I_OBJ5 (cr=1796 pr=0 pw=0 time=5156 us cost=3 size=40 card=1)(object id 40)

      1312       1312       1312         BUFFER SORT (cr=0 pr=0 pw=0 time=2898 us cost=0 size=1300 card=100)

      1312       1312       1312          FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=1467 us cost=0 size=1300 card=100)

      1312       1312       1312        INDEX RANGE SCAN I_USER2 (cr=658 pr=0 pw=0 time=1405 us cost=1 size=4 card=1)(object id 47)

         0          0          0       INDEX RANGE SCAN I_OBJAUTH1 (cr=961 pr=0 pw=0 time=1381 us cost=1 size=11 card=1)(object id 62)

         0          0          0      INDEX RANGE SCAN I_DEPENDENCY1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=0 card=3)(object id 106)

         0          0          0     TABLE ACCESS BY INDEX ROWID DEPENDENCY$ (cr=0 pr=0 pw=0 time=0 us cost=3 size=10 card=1)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=45 us cost=0 size=26 card=1)

         0          0          0    NESTED LOOPS  (cr=1996 pr=0 pw=0 time=4227 us cost=3 size=76 card=2)

        28         28         28     NESTED LOOPS  (cr=1996 pr=0 pw=0 time=3881 us cost=3 size=25 card=1)

       609        609        609      TABLE ACCESS BY INDEX ROWID TRIGGER$ (cr=1257 pr=0 pw=0 time=2694 us cost=2 size=14 card=1)

       623        623        623       INDEX UNIQUE SCAN I_TRIGGER2 (cr=634 pr=0 pw=0 time=656 us cost=1 size=0 card=1)(object id 163)

        28         28         28      INDEX RANGE SCAN I_OBJAUTH1 (cr=739 pr=0 pw=0 time=843 us cost=1 size=11 card=1)(object id 62)

         0          0          0     FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=82 us cost=0 size=26 card=2)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=26 us cost=0 size=26 card=1)

         0          0          0    NESTED LOOPS  (cr=734 pr=0 pw=0 time=3122 us cost=8 size=78 card=1)

         0          0          0     NESTED LOOPS  (cr=734 pr=0 pw=0 time=3075 us cost=8 size=78 card=3)

         0          0          0      NESTED LOOPS  (cr=734 pr=0 pw=0 time=3018 us cost=5 size=68 card=1)

       278        278        278       NESTED LOOPS  (cr=509 pr=0 pw=0 time=2350 us cost=4 size=57 card=1)

       278        278        278        MERGE JOIN CARTESIAN (cr=378 pr=0 pw=0 time=1939 us cost=3 size=53 card=1)

       139        139        139         INDEX RANGE SCAN I_OBJ5 (cr=378 pr=0 pw=0 time=1222 us cost=3 size=40 card=1)(object id 40)

       278        278        278         BUFFER SORT (cr=0 pr=0 pw=0 time=652 us cost=0 size=1300 card=100)

       258        258        258          FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=301 us cost=0 size=1300 card=100)

       278        278        278        INDEX RANGE SCAN I_USER2 (cr=131 pr=0 pw=0 time=304 us cost=1 size=4 card=1)(object id 47)

         0          0          0       INDEX RANGE SCAN I_OBJAUTH1 (cr=225 pr=0 pw=0 time=357 us cost=1 size=11 card=1)(object id 62)

         0          0          0      INDEX RANGE SCAN I_DEPENDENCY1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=0 card=3)(object id 106)

         0          0          0     TABLE ACCESS BY INDEX ROWID DEPENDENCY$ (cr=0 pr=0 pw=0 time=0 us cost=3 size=10 card=1)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=30 us cost=0 size=26 card=1)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=45 us cost=0 size=26 card=1)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=19 us cost=0 size=26 card=1)

         0          0          0    NESTED LOOPS  (cr=0 pr=0 pw=0 time=0 us cost=2 size=68 card=2)

         0          0          0     NESTED LOOPS  (cr=0 pr=0 pw=0 time=0 us cost=2 size=21 card=1)

         0          0          0      TABLE ACCESS BY INDEX ROWID TABPART$ (cr=0 pr=0 pw=0 time=0 us cost=1 size=10 card=1)

         0          0          0       INDEX UNIQUE SCAN I_TABPART_OBJ$ (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 595)

         0          0          0      INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=11 card=1)(object id 62)

         0          0          0     FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=2)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=55 us cost=0 size=26 card=1)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=35 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=55 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         1          1          1    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=20 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

        54         54         54    VIEW  (cr=0 pr=0 pw=0 time=103 us cost=2 size=13 card=1)

        54         54         54     FAST DUAL  (cr=0 pr=0 pw=0 time=28 us cost=2 size=0 card=1)

         0          0          0    NESTED LOOPS  (cr=0 pr=0 pw=0 time=0 us cost=2 size=21 card=1)

         0          0          0     INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=8 card=1)(object id 62)

         0          0          0     FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=13 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    NESTED LOOPS  (cr=0 pr=0 pw=0 time=0 us cost=2 size=21 card=1)

         0          0          0     INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=8 card=1)(object id 62)

         0          0          0     FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us cost=0 size=13 card=1)

         0          0          0    FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us cost=0 size=26 card=1)

         0          0          0    SORT GROUP BY NOSORT (cr=0 pr=0 pw=0 time=0 us cost=6 size=35 card=1)

         0          0          0     NESTED LOOPS  (cr=0 pr=0 pw=0 time=0 us cost=6 size=105 card=3)

         0          0          0      NESTED LOOPS  (cr=0 pr=0 pw=0 time=0 us cost=3 size=69 card=3)

         0          0          0       INDEX UNIQUE SCAN I_OLAP_CUBES$ (cr=0 pr=0 pw=0 time=0 us cost=0 size=13 card=1)(object id 1019)

         0          0          0       TABLE ACCESS BY INDEX ROWID DEPENDENCY$ (cr=0 pr=0 pw=0 time=0 us cost=3 size=30 card=3)

         0          0          0        INDEX RANGE SCAN I_DEPENDENCY1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=0 card=3)(object id 106)

         0          0          0      INDEX RANGE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us cost=1 size=12 card=1)(object id 36)

         0          0          0    NESTED LOOPS  (cr=0 pr=0 pw=0 time=0 us cost=2 size=29 card=1)

         0          0          0     INDEX SKIP SCAN I_USER2 (cr=0 pr=0 pw=0 time=0 us cost=1 size=20 card=1)(object id 47)

         0          0          0     INDEX RANGE SCAN I_OBJ4 (cr=0 pr=0 pw=0 time=0 us cost=1 size=9 card=1)(object id 39)

 

 

Elapsed times include waiting on following events:

  Event waited on                             Times   Max. Wait  Total Waited

  ----------------------------------------   Waited  ----------  ---

  SQL*Net message to client                       3        0.00          0.00

  SQL*Net message from client                     3        0.00          0.00

  SQL*Net break/reset to client                   2        0.00          0.00

*******************************************************************

注意:使用DBMS_MONITOR时,请确保在完成操作时禁用跟踪;否则,将会跟踪满足指定条件的每个会话。

 

-------------------------------------------------------------------

使用dbms_monitor包这对某个用户的跟踪:

exec dbms_monitor.session_trace_enable(156,3588,TRUE,FALSE);

【等同于exec dbms_monitor.session_trace_disable(156,3588);

第一个参数:SID

第二个参数:SERIAL

第三个参数:用于等待(默认为TRUE)

第四个参数:用于绑定变量(默认为FALSE)

 

 



请使用浏览器的分享功能分享到微信等