oracle11g有DBMS_MONITOR跟踪TRUNCATE操作

1,小表1W,中表100W与大表1000W的区别
          1,分别建立小中大表
             CREATE TABLE T_SMALL(A NUMBER);
             CREATE TABLE T_MIDDLE(A NUMBER);
             CREATE TABLE T_BIG(A NUMBER);
          2,此期仅对比测试小中大表TRUNCATE内部有何不同,故只能TRUNCATE
             跟踪,不用跟踪INSERT操作
          3,小表
               --1,插入
                   DECLARE
                    TYPE TYP_TAB_V_UPPER IS TABLE OF PLS_INTEGER INDEX BY BINARY_INTEGER;
                    V_UPPER TYP_TAB_V_UPPER;
                    V_END PLS_INTEGER:=&END;
                   BEGIN
                    FOR I IN 1..V_END LOOP
                      V_UPPER(I):=I;
                    END LOOP;
                  
                   
                    FORALL I IN 1..V_END
                      INSERT INTO T_SMALL VALUES(V_UPPER(I));
                      COMMIT;
                   END;
               --2,10046跟踪
                 ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER,LEVEL 12';
                
               --3,TRUNCATE表操作
                 TRUNCATE TABLE T_SMALL; 
              
               --4,停止10046跟踪
                 ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
                
               --5,提取TRC文件,并复制到另一个文件中
                  位置:D:\oracle\diag\rdbms\orcl\orcl\trace
                  新位置:D:\10046
                  删除原位置TRC文件,为了重新生成新的TRC文件
                  问题:在11G对应的USER_DUMP_DEST未发现产生的TRC文件,怪了
                   解决:
                       --以SYSDBA开启SCOTT会话监控
                       SQL> exec dbms_monitor.session_trace_enable(132,21);
                      
                       SQL> exec dbms_monitor.session_trace_disable(132);
                       --小结:
                          USER_DUMP_DEST生成的追踪文件orcl_ora_7112,7112对应V$PROCESS的SPID
               --6,格式化TRC文件(复制)
            
             中表插入
               --1,插入
                   DECLARE
                    TYPE TYP_TAB_V_UPPER IS TABLE OF PLS_INTEGER INDEX BY BINARY_INTEGER;
                    V_UPPER TYP_TAB_V_UPPER;
                    V_END PLS_INTEGER:=&END;
                   BEGIN
                    FOR I IN 1..V_END LOOP
                      V_UPPER(I):=I;
                    END LOOP;
                  
                   
                    FORALL I IN 1..V_END
                      INSERT INTO T_MIDDLE VALUES(V_UPPER(I));
                      COMMIT;
                   END;
               --2,追踪SCOTT会话
                 exec dbms_monitor.session_trace_ENABLE(132);
                
               --3,TRUNCATE表操作
                 TRUNCATE TABLE T_MIDDLE; 
              
               --4,关闭追踪SCOTT会话
                 exec dbms_monitor.session_trace_disable(132);
                
               --5,提取TRC文件,并复制到另一个文件中
                  位置:D:\oracle\diag\rdbms\orcl\orcl\trace
                  新位置:D:\10046
                  删除原位置TRC文件,为了重新生成新的TRC文件
                  问题:在11G对应的USER_DUMP_DEST未发现产生的TRC文件,怪了
                   解决:
                       --以SYSDBA开启SCOTT会话监控
                       SQL> exec dbms_monitor.session_trace_enable(132,21);
                      
                       SQL> exec dbms_monitor.session_trace_disable(132);
                       --小结:
                          USER_DUMP_DEST生成的追踪文件orcl_ora_7112,7112对应V$PROCESS的SPID
               --6,格式化TRC文件(复制)
             大表插入  
               --1,插入
                   DECLARE
                    TYPE TYP_TAB_V_UPPER IS TABLE OF PLS_INTEGER INDEX BY BINARY_INTEGER;
                    V_UPPER TYP_TAB_V_UPPER;
                    V_END PLS_INTEGER:=&END;
                   BEGIN
                    FOR I IN 1..V_END LOOP
                      V_UPPER(I):=I;
                    END LOOP;
                  
                   
                    FORALL I IN 1..V_END
                      INSERT INTO T_BIG VALUES(V_UPPER(I));
                      COMMIT;
                   END;
               --2,10046跟踪
                 exec dbms_monitor.session_trace_enable(132,21);
                
               --3,TRUNCATE表操作
                 TRUNCATE TABLE T_BIG; 
              
               --4,停止10046跟踪
                 exec dbms_monitor.session_trace_disable(132);
                
               --5,提取TRC文件,并复制到另一个文件中
                  位置:D:\oracle\diag\rdbms\orcl\orcl\trace
                  新位置:D:\10046
                  删除原位置TRC文件,为了重新生成新的TRC文件
                  问题:在11G对应的USER_DUMP_DEST未发现产生的TRC文件,怪了
                   解决:
                       --以SYSDBA开启SCOTT会话监控
                       SQL> exec dbms_monitor.session_trace_enable(132,21);
                      
                       SQL> exec dbms_monitor.session_trace_disable(132);
                       --小结:
                          USER_DUMP_DEST生成的追踪文件orcl_ora_7112,7112对应V$PROCESS的SPID
               --6,格式化TRC文件(复制)
              
              
               小结:1,对于TRUNCATE而言,大中小表的内部操作(ORACLE内部)差不多,故每个TRC文件
                        TKPROF之后差不多大小
              
      2,10046诊断TRC如何分析
          1,10046 TRC文件示例,重复部分略去
             TKPROF: Release 11.2.0.1.0 - Development on 星期五 9月 14 13:45:52 2012
               Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
              
               Trace file: d:\10046\orcl_ora_t_middle.trc
               Sort options: default
              
               ********************************************************************************
               count    = number of times OCI procedure was executed
               cpu      = cpu time in seconds executing
               elapsed  = elapsed time in seconds executing
               disk     = number of physical reads of buffers from disk
               query    = number of buffers gotten for consistent read
               current  = number of buffers gotten in current mode (usually for update)
               rows     = number of rows processed by the fetch or execute call
               ********************************************************************************
              
               SQL ID: c2wk6dy1akjbs
               Plan Hash: 1537128132
               select count(FA#)
               from
                SYS_FBA_TRACKEDTABLES where OBJ# = 73333 and DROPSCN = 0
              
              
               call     count       cpu    elapsed       disk      query    current        rows
               ------- ------  -------- ---------- ---------- ---------- ----------  ----------
               Parse        2      0.00       0.00          0          0          0           0
               Execute      2      0.00       0.00          0          0          0           0
               Fetch        2      0.00       0.00          0          2          0           2
               ------- ------  -------- ---------- ---------- ---------- ----------  ----------
               total        6      0.00       0.00          0          2          0           2
              
               Misses in library cache during parse: 1
               Optimizer mode: CHOOSE
               Parsing user id: SYS   (recursive depth: 1)
              
               Rows     Row Source Operation
               -------  ---------------------------------------------------
                     1  SORT AGGREGATE (cr=1 pr=0 pw=0 time=0 us)
                     0   TABLE ACCESS BY INDEX ROWID SYS_FBA_TRACKEDTABLES (cr=1 pr=0 pw=0 time=0 us cost=1 size=6 card=1)
                     0    INDEX UNIQUE SCAN SYS_C001432 (cr=1 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 1214)
              
               ********************************************************************************
              
               SQL ID: 65r8rs8x7bnhf
               Plan Hash: 0
               LOCK TABLE "T_MIDDLE" IN EXCLUSIVE MODE  NOWAIT
              
              
               call     count       cpu    elapsed       disk      query    current        rows
               ------- ------  -------- ---------- ---------- ---------- ----------  ----------
               Parse        1      0.01       0.02          0          0          0           0
               Execute      1      0.00       0.00          0          0          0           0
               Fetch        0      0.00       0.00          0          0          0           0
               ------- ------  -------- ---------- ---------- ---------- ----------  ----------
               total        2      0.01       0.02          0          0          0           0
              
               Misses in library cache during parse: 1
               Optimizer mode: ALL_ROWS
               Parsing user id: 84     (recursive depth: 1)
               ********************************************************************************
              
               SQL ID: 4nackmz96wbrb
               Plan Hash: 3777519066
               TRUNCATE TABLE T_MIDDLE
              
              
               call     count       cpu    elapsed       disk      query    current        rows
               ------- ------  -------- ---------- ---------- ---------- ----------  ----------
               Parse        1      0.01       0.02          0          2          0           0
               Execute      1      0.00       0.01          5         96        181           0
               Fetch        0      0.00       0.00          0          0          0           0
               ------- ------  -------- ---------- ---------- ---------- ----------  ----------
               total        2      0.01       0.04          5         98        181           0
              
               Misses in library cache during parse: 1
               Optimizer mode: ALL_ROWS
               Parsing user id: 84 
              
               Elapsed times include waiting on following events:
                 Event waited on                             Times   Max. Wait  Total Waited
                 ----------------------------------------   Waited  ----------  ------------
                 reliable message                                3        0.00          0.00
                 enq: RO - fast object reuse                     2        0.01          0.01
                 db file sequential read                         5        0.00          0.00
                 local write wait                                3        0.00          0.00
                 log file sync                                   1        0.02          0.02
                 SQL*Net message to client                       1        0.00          0.00
                 SQL*Net message from client                     1        0.00          0.00
               ********************************************************************************
          2,10046文件的结构;
              
               1,每个SQL的语句,这个SQL包括用户执行的SQL以及递归调用ORACLE的SQL
                  是否包括递归调用ORACLE的SQL可由TKPROF选项控制
               2,每个SQL的解析,执行,提取三个阶段各项指标的性能数据,比如:
                  COUNT,CPU,ELAPSED等  
               3,每个SQL的执行计划
               4,在运行这些SQL时数据库的等待事件   
            小结:1,TRUNCATE操作在底层会调用ORACLE内部的一些字典表如:OBJ#,SEG#,MLOG$
                     以及一些底层包如:DBMS_STANDARD和SED打头的包
                  2,如何你要深入研究这些底层操作之间内部的流程,就要详细看这个TRC文件,
                    即:每个内部表的含义,
                        TRC文件中执行内部SQL的顺序
                        内部SQL之间如何发生关系
                        这是另一个话题了

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-743454/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-743454/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值