记一次增加分区需要两个小时的优化案例

                      最近在给生产上一些表增加分区时,遇到了一个很奇怪的问题:
  一共5个表,三个表很快,二个表慢,其中有一个表增加一个分区需要3分钟左右,另一个表在交易库上需要16分钟,而在查询库(通过goldengate同步)同步DDL过来,则需要两个小时!慢就慢了,关键的一点是,期间其他应用没法查询这个表,会报“ORA-04021: 等待对象锁超时 ”错误,影响业务了,必须找出解决办法;
  首先是怀疑GG的DDL复制会不会带来一些特别的影响,因为DDL复制很多公司是不开的,据说问题多;于是过滤了这个表的DDL复制,改成分别在两个库增加分区,但是,时间还是一样的:交易库16分钟左右,查询库2个小时,很稳定啊 ;
  既然不是GG的原因,那么问题在哪里呢?套用现在一种DBA的分类,我就是“百度DBA”(因为Google用不了啊),但是,百度一番也没有发现类似的案例,有truncate慢的案例但套不上,难道别人都没有遇到就我遇到了?人品就是这么“SO BAD”?
  BS了一番百度后,我还是决定做一个“ThinkDBA”,Ycc陷入了深深的思索:这个表有什么特点?很大,一天3千万,一共60亿,可是加分区跟记录数有关吗?又不需要维护索引,而且其他三个表也在10-20个亿,却秒级完成,这说不过去;还有一个特点,这个表的分区字段类型”char(8)",实际保存的是日期转化的字符,如“20171001”,这的源于糟糕的设计,是历史问题,但是,另一个表也是同样的设计,却是非常快的,这个理由被推翻;
  换一个角度,增加分区会做一些什么操作呢?具体的不知道,但总体上只是改一下数据字典吧,那我收集一下数据字典的统计信息会不会有改变呢?于是在查询库做了一个收集系统、固定对象、字典统计信息的操作,然后在第二天,惊奇地发现,查询库上竟然一秒不到就完成了增加(任务放在晚上调度),心中大喜,以为找到了解决之道,立即在交易库也做了同样的操作,然后第二天的结果是,交易库依旧需要16分钟多,奇迹没有发生,同时,查询库也出现了反复,又有需要两个小时的情况了,从现象上初步总结,貌似周一到周五是慢的,而周末则是快的;
    趁着周末,一次性给查询库加了一年的分区,缓解了一个库的”分区荒“问题,但交易库的,依然没有思路;
    因为国庆迁移项目加班,在项目快完成之际,有了一点空闲,加上现在正是业务的低峰,决定深入跟一下这个问题,于是祭出了非常规武器:10046,加了10046之后,发现这个SQL执行更慢了,原来16分钟,现在运行了20多分钟还没完成,慢有什么影响,只好暂停了;不过跟踪文件已经有内容了;
     用TKprof格式化trace文件之后,我不断地翻看着里面的SQL,都是很小的很快的递归SQL,正当在我以为没什么希望的时候,突然一个特别耗时的SQL出现在我的眼帘:
    SELECT KEY.KEY_NAME INDEX_NAME, KEY.COLUMN_NAME, KEY.DESCEND
  FROM (SELECT C.CONSTRAINT_NAME KEY_NAME,
               C.COLUMN_NAME COLUMN_NAME,
               C.POSITION POSITION,
               'ASC' DESCEND
          FROM DBA_CONS_COLUMNS C
         WHERE C.OWNER = :B2
           AND C.TABLE_NAME = :B1
           AND C.CONSTRAINT_NAME IN
               (SELECT CON1.NAME
                  FROM SYS.USER$ USER1,
                       SYS.USER$ USER2,
                       SYS.CDEF$ CDEF,
                       SYS.CON$  CON1,
                       SYS.CON$  CON2,
                       SYS.OBJ$  OBJ1,
                       SYS.OBJ$  OBJ2
                 WHERE USER1.NAME = :B2
                   AND OBJ1.NAME = :B1
                   AND CDEF.TYPE# = 3
                   AND BITAND(CDEF.DEFER, 36) = 4
                   AND CDEF.ENABLED IS NOT NULL
                   AND CON2.OWNER# = USER2.USER#(+)
                   AND CDEF.ROBJ# = OBJ2.OBJ#(+)
                   AND CDEF.RCON# = CON2.CON#(+)
                   AND OBJ1.OWNER# = USER1.USER#
                   AND CDEF.CON# = CON1.CON#
                   AND CDEF.OBJ# = OBJ1.OBJ#)
           AND EXISTS (SELECT 'x'
                  FROM DBA_TAB_COLUMNS T
                 WHERE T.OWNER = C.OWNER
                   AND T.TABLE_NAME = C.TABLE_NAME
                   AND T.COLUMN_NAME = C.COLUMN_NAME)
        UNION
        SELECT I.INDEX_NAME      KEY_NAME,
               C.COLUMN_NAME     COLUMN_NAME,
               C.COLUMN_POSITION POSITION,
               C.DESCEND         DESCEND
          FROM DBA_INDEXES I, DBA_IND_COLUMNS C
         WHERE I.TABLE_OWNER = :B2
           AND I.TABLE_NAME = :B1
           AND I.UNIQUENESS = 'UNIQUE'
           AND I.OWNER = C.INDEX_OWNER
           AND I.INDEX_NAME = C.INDEX_NAME
           AND :B1 = C.TABLE_NAME
           AND :B2 = C.TABLE_OWNER
           AND I.INDEX_NAME IN
               (SELECT INDEX_NAME
                  FROM DBA_INDEXES
                 WHERE TABLE_OWNER = :B2
                   AND TABLE_NAME = :B1
                   AND (VISIBILITY != 'INVISIBLE' OR 'FALSE' = 'TRUE')
                   AND UNIQUENESS = 'UNIQUE')
           AND I.INDEX_NAME NOT IN
               (SELECT C.CONSTRAINT_NAME
                  FROM DBA_CONS_COLUMNS C
                 WHERE C.OWNER = :B2
                   AND C.TABLE_NAME = :B1
                   AND C.CONSTRAINT_NAME IN
                       (SELECT C1.NAME
                          FROM SYS.USER$ U1,
                               SYS.USER$ U2,
                               SYS.CDEF$ D,
                               SYS.CON$  C1,
                               SYS.CON$  C2,
                               SYS.OBJ$  O1,
                               SYS.OBJ$  O2
                         WHERE U1.NAME = :B2
                           AND O1.NAME = :B1
                           AND D.TYPE# IN (2, 3)
                           AND 1 =
                               DECODE(1, 1, DECODE(D.ENABLED, NULL, 0, 1), 1)
                           AND (D.ENABLED IS NULL OR D.DEFER IS NULL OR
                               BITAND(D.DEFER, 32) IN (0, 32))
                           AND C2.OWNER# = U2.USER#(+)
                           AND D.ROBJ# = O2.OBJ#(+)
                           AND D.RCON# = C2.CON#(+)
                           AND O1.OWNER# = U1.USER#
                           AND D.CON# = C1.CON#
                           AND D.OBJ# = O1.OBJ#)
                   AND EXISTS
                 (SELECT 'X'
                          FROM DBA_TAB_COLUMNS T
                         WHERE T.OWNER = C.OWNER
                           AND T.TABLE_NAME = C.TABLE_NAME
                           AND T.COLUMN_NAME = C.COLUMN_NAME))
           AND EXISTS (SELECT 'x'
                  FROM DBA_TAB_COLUMNS T
                 WHERE T.OWNER = :B2
                   AND T.TABLE_NAME = :B1
                   AND T.COLUMN_NAME = C.COLUMN_NAME)) KEY
 ORDER BY KEY.KEY_NAME, KEY.POSITION

  找到问题SQL那就好办了,SQL的执行路径虽然漫长,但紧要处也就几步,一步走错了,整个计划就变了,我不清楚为什么搞出了这么多记录:
SQL Plan Monitoring Details (Plan Hash Value=1366467067)
==============================================================================================================================================================================================================
| Id  |                              Operation                              |       Name        |  Rows   | Cost |   Time    | Start  | Execs |   Rows   | Read | Read  |  Mem  | Activity | Activity Detail |
|     |                                                                     |                   | (Estim) |      | Active(s) | Active |       | (Actual) | Reqs | Bytes | (Max) |   (%)    |   (# samples)   |
==============================================================================================================================================================================================================
|   0 | SELECT STATEMENT                                                    |                   |         |      |         1 |  +1013 |     1 |        2 |      |       |       |          |                 |
|   1 |   SORT ORDER BY                                                     |                   |       2 |  125 |         1 |  +1013 |     1 |        2 |      |       |  2048 |          |                 |
|   2 |    VIEW                                                             |                   |       2 |  124 |         1 |  +1013 |     1 |        2 |      |       |       |          |                 |
|   3 |     SORT UNIQUE                                                     |                   |       2 |  124 |       404 |   +610 |     1 |        2 |      |       |  2048 |          |                 |
|   4 |      UNION-ALL                                                      |                   |         |      |       203 |   +610 |     1 |        2 |      |       |       |          |                 |
|   5 |       FILTER                                                        |                   |         |      |           |        |     1 |          |      |       |       |          |                 |
|   6 |        NESTED LOOPS OUTER                                           |                   |       1 |   33 |           |        |     1 |          |      |       |       |          |                 |
|   7 |         NESTED LOOPS OUTER                                          |                   |       1 |   31 |           |        |     1 |          |      |       |       |          |                 |
|   8 |          NESTED LOOPS OUTER                                         |                   |       1 |   30 |           |        |     1 |          |      |       |       |          |                 |
|   9 |           NESTED LOOPS OUTER                                        |                   |       1 |   26 |           |        |     1 |          |      |       |       |          |                 |
|  10 |            NESTED LOOPS OUTER                                       |                   |       1 |   24 |           |        |     1 |          |      |       |       |          |                 |
|  11 |             NESTED LOOPS                                            |                   |       1 |   23 |           |        |     1 |          |      |       |       |          |                 |
|  12 |              NESTED LOOPS                                           |                   |       1 |   22 |           |        |     1 |          |      |       |       |          |                 |
|  13 |               NESTED LOOPS                                          |                   |       1 |   21 |           |        |     1 |          |      |       |       |          |                 |
|  14 |                NESTED LOOPS                                         |                   |       1 |   19 |           |        |     1 |          |      |       |       |          |                 |
|  15 |                 NESTED LOOPS                                        |                   |       1 |   18 |           |        |     1 |          |      |       |       |          |                 |
|  16 |                  NESTED LOOPS OUTER                                 |                   |       1 |   15 |           |        |     1 |          |      |       |       |          |                 |
|  17 |                   NESTED LOOPS                                      |                   |       1 |   14 |           |        |     1 |          |      |       |       |          |                 |
|  18 |                    NESTED LOOPS                                     |                   |       1 |   13 |           |        |     1 |          |      |       |       |          |                 |
|  19 |                     NESTED LOOPS                                    |                   |       1 |   11 |           |        |     1 |          |      |       |       |          |                 |
|  20 |                      NESTED LOOPS                                   |                   |       1 |   10 |           |        |     1 |          |      |       |       |          |                 |
|  21 |                       NESTED LOOPS                                  |                   |       1 |    9 |           |        |     1 |          |      |       |       |          |                 |
|  22 |                        NESTED LOOPS OUTER                           |                   |       1 |    8 |           |        |     1 |          |      |       |       |          |                 |
|  23 |                         NESTED LOOPS OUTER                          |                   |       1 |    7 |           |        |     1 |          |      |       |       |          |                 |
|  24 |                          NESTED LOOPS                               |                   |       1 |    6 |         1 |    +10 |     1 |        0 |      |       |       |          |                 |
|  25 |                           NESTED LOOPS                              |                   |       1 |    5 |         1 |    +10 |     1 |      662 |      |       |       |          |                 |
|  26 |                            NESTED LOOPS                             |                   |       1 |    3 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
|  27 |                             NESTED LOOPS                            |                   |       1 |    2 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
|  28 |                              TABLE ACCESS BY INDEX ROWID            | USER$             |       1 |    1 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
|  29 |                               INDEX UNIQUE SCAN                     | I_USER1           |       1 |      |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
|  30 |                              TABLE ACCESS BY INDEX ROWID            | USER$             |       1 |    1 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
|  31 |                               INDEX UNIQUE SCAN                     | I_USER1           |       1 |      |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
|  32 |                             TABLE ACCESS BY INDEX ROWID             | USER$             |       1 |    1 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
|  33 |                              INDEX UNIQUE SCAN                      | I_USER1           |       1 |      |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
|  34 |                            INDEX RANGE SCAN                         | I_OBJ2            |       1 |    2 |         1 |    +10 |     1 |      662 |      |       |       |          |                 |
|  35 |                           TABLE ACCESS CLUSTER                      | CDEF$             |       1 |    1 |         1 |    +10 |   662 |        0 |      |       |       |          |                 |
|  36 |                            INDEX UNIQUE SCAN                        | I_COBJ#           |       1 |      |         1 |    +10 |   662 |        1 |      |       |       |          |                 |
|  37 |                          TABLE ACCESS BY INDEX ROWID                | CON$              |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  38 |                           INDEX UNIQUE SCAN                         | I_CON2            |       1 |      |           |        |       |          |      |       |       |          |                 |
|  39 |                         INDEX RANGE SCAN                            | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  40 |                        TABLE ACCESS BY INDEX ROWID                  | CON$              |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  41 |                         INDEX UNIQUE SCAN                           | I_CON2            |       1 |      |           |        |       |          |      |       |       |          |                 |
|  42 |                       TABLE ACCESS BY INDEX ROWID                   | CON$              |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  43 |                        INDEX UNIQUE SCAN                            | I_CON1            |       1 |      |           |        |       |          |      |       |       |          |                 |
|  44 |                      TABLE ACCESS BY INDEX ROWID                    | CDEF$             |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  45 |                       INDEX UNIQUE SCAN                             | I_CDEF1           |       1 |      |           |        |       |          |      |       |       |          |                 |
|  46 |                     TABLE ACCESS BY INDEX ROWID                     | CCOL$             |       1 |    2 |           |        |       |          |      |       |       |          |                 |
|  47 |                      INDEX RANGE SCAN                               | I_CCOL1           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  48 |                    TABLE ACCESS BY INDEX ROWID                      | COL$              |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  49 |                     INDEX UNIQUE SCAN                               | I_COL3            |       1 |      |           |        |       |          |      |       |       |          |                 |
|  50 |                   TABLE ACCESS CLUSTER                              | ATTRCOL$          |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  51 |                  TABLE ACCESS BY INDEX ROWID                        | OBJ$              |       1 |    3 |           |        |       |          |      |       |       |          |                 |
|  52 |                   INDEX RANGE SCAN                                  | I_OBJ1            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
|  53 |                 INDEX RANGE SCAN                                    | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  54 |                INDEX RANGE SCAN                                     | I_OBJ5            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
|  55 |               INDEX RANGE SCAN                                      | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  56 |              TABLE ACCESS CLUSTER                                   | COL$              |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  57 |               INDEX UNIQUE SCAN                                     | I_OBJ#            |       1 |      |           |        |       |          |      |       |       |          |                 |
|  58 |             TABLE ACCESS CLUSTER                                    | COLTYPE$          |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  59 |            INDEX RANGE SCAN                                         | I_HH_OBJ#_INTCOL# |       1 |    2 |           |        |       |          |      |       |       |          |                 |
|  60 |           TABLE ACCESS BY INDEX ROWID                               | OBJ$              |       1 |    4 |           |        |       |          |      |       |       |          |                 |
|  61 |            INDEX RANGE SCAN                                         | I_OBJ3            |      38 |    1 |           |        |       |          |      |       |       |          |                 |
|  62 |          INDEX RANGE SCAN                                           | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  63 |         INDEX RANGE SCAN                                            | I_OBJ1            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
|  64 |        TABLE ACCESS CLUSTER                                         | TAB$              |       1 |    2 |           |        |       |          |      |       |       |          |                 |
|  65 |         INDEX UNIQUE SCAN                                           | I_OBJ#            |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  66 |        NESTED LOOPS                                                 |                   |       1 |    3 |           |        |       |          |      |       |       |          |                 |
|  67 |         INDEX SKIP SCAN                                             | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  68 |         INDEX RANGE SCAN                                            | I_OBJ4            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
|  69 |        NESTED LOOPS                                                 |                   |       1 |    3 |           |        |       |          |      |       |       |          |                 |
|  70 |         INDEX SKIP SCAN                                             | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  71 |         INDEX RANGE SCAN                                            | I_OBJ4            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
|  72 |       NESTED LOOPS OUTER                                            |                   |       1 |    3 |           |        |       |          |      |       |       |          |                 |
|  73 |        TABLE ACCESS BY INDEX ROWID                                  | COL$              |       1 |    2 |           |        |       |          |      |       |       |          |                 |
|  74 |         INDEX UNIQUE SCAN                                           | I_COL3            |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  75 |        TABLE ACCESS CLUSTER                                         | ATTRCOL$          |       1 |    1 |           |        |       |          |      |       |       |          |                 |
|  76 |       FILTER                                                        |                   |         |      |       203 |   +610 |     1 |        2 |      |       |       |          |                 |
|  77 |        NESTED LOOPS                                                 |                   |       1 |   56 |       803 |    +10 |     1 |        2 |      |       |       |          |                 |
|  78 |         NESTED LOOPS                                                |                   |       1 |   56 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  79 |          NESTED LOOPS OUTER                                         |                   |       1 |   53 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  80 |           NESTED LOOPS OUTER                                        |                   |       1 |   51 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  81 |            NESTED LOOPS OUTER                                       |                   |       1 |   50 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  82 |             NESTED LOOPS OUTER                                      |                   |       1 |   48 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  83 |              NESTED LOOPS OUTER                                     |                   |       1 |   47 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  84 |               NESTED LOOPS                                          |                   |       1 |   45 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  85 |                NESTED LOOPS                                         |                   |       1 |   44 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  86 |                 NESTED LOOPS OUTER                                  |                   |       1 |   41 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  87 |                  NESTED LOOPS OUTER                                 |                   |       1 |   40 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  88 |                   NESTED LOOPS OUTER                                |                   |       1 |   39 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  89 |                    NESTED LOOPS OUTER                               |                   |       1 |   38 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  90 |                     NESTED LOOPS OUTER                              |                   |       1 |   34 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
|  91 |                      NESTED LOOPS                                   |                   |       1 |   33 |      1004 |    +10 |     1 |        5 |      |       |       |          |                 |
|  92 |                       NESTED LOOPS                                  |                   |       1 |   32 |      1004 |    +10 |     1 |     3310 |      |       |       |          |                 |
|  93 |                        NESTED LOOPS                                 |                   |       1 |   31 |      1004 |    +10 |     1 |     3310 |      |       |       |          |                 |
|  94 |                         NESTED LOOPS OUTER                          |                   |       1 |   30 |      1004 |    +10 |     1 |     3310 |      |       |       |          |                 |
|  95 |                          NESTED LOOPS                               |                   |       1 |   29 |      1004 |    +10 |     1 |     3310 |      |       |       |          |                 |
|  96 |                           NESTED LOOPS OUTER                        |                   |       1 |   28 |      1004 |    +10 |     1 |       2M |      |       |       |          |                 |
|  97 |                            NESTED LOOPS                             |                   |       1 |   27 |      1004 |    +10 |     1 |       2M |      |       |       |     0.20 | Cpu (2)         |
|  98 |                             NESTED LOOPS                            |                   |       1 |   26 |      1004 |    +10 |     1 |       1G |      |       |       |     2.38 | Cpu (24)        |
|  99 |                              NESTED LOOPS                           |                   |       1 |   24 |      1004 |    +10 |     1 |       2M |      |       |       |          |                 |
| 100 |                               NESTED LOOPS                          |                   |       1 |   22 |      1004 |    +10 |     1 |     3310 |      |       |       |          |                 |
| 101 |                                NESTED LOOPS                         |                   |       1 |   20 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
| 102 |                                 NESTED LOOPS                        |                   |       1 |    3 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
| 103 |                                  NESTED LOOPS                       |                   |       1 |    2 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
| 104 |                                   TABLE ACCESS BY INDEX ROWID       | USER$             |       1 |    1 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
| 105 |                                    INDEX UNIQUE SCAN                | I_USER1           |       1 |      |      1003 |    +10 |     1 |        1 |      |       |       |          |                 |
| 106 |                                   TABLE ACCESS BY INDEX ROWID       | USER$             |       1 |    1 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
| 107 |                                    INDEX UNIQUE SCAN                | I_USER1           |       1 |      |      1003 |    +10 |     1 |        1 |      |       |       |          |                 |
| 108 |                                  TABLE ACCESS BY INDEX ROWID        | USER$             |       1 |    1 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
| 109 |                                   INDEX UNIQUE SCAN                 | I_USER1           |       1 |      |      1003 |    +10 |     1 |        1 |      |       |       |          |                 |
| 110 |                                 VIEW                                | DBA_IND_COLUMNS   |       1 |   17 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
| 111 |                                  NESTED LOOPS OUTER                 |                   |       1 |   17 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
| 112 |                                   NESTED LOOPS                      |                   |       1 |   16 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
| 113 |                                    NESTED LOOPS                     |                   |       1 |   15 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
| 114 |                                     NESTED LOOPS                    |                   |       1 |   14 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
| 115 |                                      NESTED LOOPS                   |                   |       3 |   13 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
| 116 |                                       NESTED LOOPS                  |                   |       3 |    4 |       803 |    +10 |     1 |        5 |      |       |       |          |                 |
| 117 |                                        NESTED LOOPS                 |                   |       1 |    3 |         1 |    +10 |     1 |      662 |      |       |       |          |                 |
| 118 |                                         TABLE ACCESS BY INDEX ROWID | USER$             |       1 |    1 |         1 |    +10 |     1 |        1 |      |       |       |          |                 |
| 119 |                                          INDEX UNIQUE SCAN          | I_USER1           |       1 |      |      1003 |    +10 |     1 |        1 |      |       |       |          |                 |
| 120 |                                         INDEX RANGE SCAN            | I_OBJ2            |       1 |    2 |      1003 |    +10 |     1 |      662 |      |       |       |          |                 |
| 121 |                                        TABLE ACCESS CLUSTER         | ICOL$             |       3 |    1 |       803 |    +10 |   662 |        5 |      |       |       |          |                 |
| 122 |                                         INDEX UNIQUE SCAN           | I_OBJ#            |       1 |      |      1003 |    +10 |   662 |        1 |      |       |       |          |                 |
| 123 |                                       TABLE ACCESS BY INDEX ROWID   | OBJ$              |       1 |    3 |       803 |    +10 |     5 |        5 |      |       |       |          |                 |
| 124 |                                        INDEX RANGE SCAN             | I_OBJ1            |       1 |    2 |      1003 |    +10 |     5 |        5 |    2 | 16384 |       |          |                 |
| 125 |                                      TABLE ACCESS BY INDEX ROWID    | IND$              |       1 |    1 |       803 |    +10 |     5 |        5 |      |       |       |          |                 |
| 126 |                                       INDEX UNIQUE SCAN             | I_IND1            |       1 |      |      1003 |    +10 |     5 |        5 |      |       |       |          |                 |
| 127 |                                     TABLE ACCESS CLUSTER            | USER$             |       1 |    1 |       803 |    +10 |     5 |        5 |      |       |       |          |                 |
| 128 |                                      INDEX UNIQUE SCAN              | I_USER#           |       1 |      |      1003 |    +10 |     5 |        5 |      |       |       |          |                 |
| 129 |                                    TABLE ACCESS CLUSTER             | COL$              |       1 |    1 |      1003 |    +10 |     5 |        5 |      |       |       |          |                 |
| 130 |                                   TABLE ACCESS CLUSTER              | ATTRCOL$          |       1 |    1 |           |        |     5 |          |      |       |       |          |                 |
| 131 |                                INDEX RANGE SCAN                     | I_OBJ5            |       1 |    2 |      1004 |    +10 |     5 |     3310 |      |       |       |          |                 |
| 132 |                               INDEX RANGE SCAN                      | I_OBJ2            |       1 |    2 |      1004 |    +10 |  3310 |       2M |      |       |       |          |                 |
| 133 |                              INDEX RANGE SCAN                       | I_OBJ2            |       1 |    2 |      1013 |     +1 |    2M |       1G |      |       |       |    18.75 | Cpu (189)       |
| 134 |                             TABLE ACCESS CLUSTER                    | IND$              |       1 |    1 |      1006 |     +8 |    1G |       2M |      |       |       |    20.54 | Cpu (207)       |
| 135 |                              INDEX UNIQUE SCAN                      | I_OBJ#            |       1 |      |      1012 |     +2 |    1G |       2M |      |       |       |    56.85 | Cpu (573)       |
| 136 |                            TABLE ACCESS CLUSTER                     | TS$               |       1 |    1 |      1004 |    +10 |    2M |       2M |      |       |       |     0.60 | Cpu (6)         |
| 137 |                             INDEX UNIQUE SCAN                       | I_TS#             |       1 |      |      1004 |    +10 |    2M |       2M |      |       |       |     0.20 | Cpu (2)         |
| 138 |                           TABLE ACCESS CLUSTER                      | IND$              |       1 |    1 |      1004 |    +10 |    2M |     3310 |      |       |       |          |                 |
| 139 |                            INDEX UNIQUE SCAN                        | I_OBJ#            |       1 |      |      1004 |    +10 |    2M |     3310 |      |       |       |     0.50 | Cpu (5)         |
| 140 |                          TABLE ACCESS CLUSTER                       | TS$               |       1 |    1 |      1004 |    +10 |  3310 |     3310 |      |       |       |          |                 |
| 141 |                           INDEX UNIQUE SCAN                         | I_TS#             |       1 |      |      1004 |    +10 |  3310 |     3310 |      |       |       |          |                 |
| 142 |                         INDEX RANGE SCAN                            | I_USER2           |       1 |    1 |      1004 |    +10 |  3310 |     3310 |      |       |       |          |                 |
| 143 |                        TABLE ACCESS BY INDEX ROWID                  | USER$             |       1 |    1 |      1004 |    +10 |  3310 |     3310 |      |       |       |          |                 |
| 144 |                         INDEX UNIQUE SCAN                           | I_USER1           |       1 |      |      1004 |    +10 |  3310 |     3310 |      |       |       |          |                 |
| 145 |                       TABLE ACCESS CLUSTER                          | COL$              |       1 |    1 |       803 |    +10 |  3310 |        5 |      |       |       |          |                 |
| 146 |                        INDEX UNIQUE SCAN                            | I_OBJ#            |       1 |      |       803 |    +10 |  3310 |        5 |      |       |       |          |                 |
| 147 |                      TABLE ACCESS CLUSTER                           | COLTYPE$          |       1 |    1 |           |        |     5 |          |      |       |       |          |                 |
| 148 |                     TABLE ACCESS BY INDEX ROWID                     | OBJ$              |       1 |    4 |           |        |     5 |          |      |       |       |          |                 |
| 149 |                      INDEX RANGE SCAN                               | I_OBJ3            |      38 |    1 |           |        |     5 |          |      |       |       |          |                 |
| 150 |                    INDEX RANGE SCAN                                 | I_USER2           |       1 |    1 |           |        |     5 |          |      |       |       |          |                 |
| 151 |                   TABLE ACCESS CLUSTER                              | SEG$              |       1 |    1 |           |        |     5 |          |      |       |       |          |                 |
| 152 |                    INDEX UNIQUE SCAN                                | I_FILE#_BLOCK#    |       1 |      |           |        |     5 |          |      |       |       |          |                 |
| 153 |                  TABLE ACCESS CLUSTER                               | SEG$              |       1 |    1 |           |        |     5 |          |      |       |       |          |                 |
| 154 |                   INDEX UNIQUE SCAN                                 | I_FILE#_BLOCK#    |       1 |      |           |        |     5 |          |      |       |       |          |                 |
| 155 |                 TABLE ACCESS BY INDEX ROWID                         | OBJ$              |       1 |    3 |       803 |    +10 |     5 |        5 |      |       |       |          |                 |
| 156 |                  INDEX RANGE SCAN                                   | I_OBJ1            |       1 |    2 |       803 |    +10 |     5 |        5 |      |       |       |          |                 |
| 157 |                INDEX RANGE SCAN                                     | I_USER2           |       1 |    1 |       803 |    +10 |     5 |        5 |      |       |       |          |                 |
| 158 |               INDEX RANGE SCAN                                      | I_OBJ1            |       1 |    2 |           |        |     5 |          |      |       |       |          |                 |
| 159 |              INDEX RANGE SCAN                                       | I_USER2           |       1 |    1 |           |        |     5 |          |      |       |       |          |                 |
| 160 |             INDEX RANGE SCAN                                        | I_OBJ1            |       1 |    2 |           |        |     5 |          |      |       |       |          |                 |
| 161 |            INDEX RANGE SCAN                                         | I_USER2           |       1 |    1 |           |        |     5 |          |      |       |       |          |                 |
| 162 |           INDEX RANGE SCAN                                          | I_HH_OBJ#_INTCOL# |       1 |    2 |       803 |    +10 |     5 |        5 |      |       |       |          |                 |
| 163 |          INDEX RANGE SCAN                                           | I_OBJ1            |       1 |    2 |       803 |    +10 |     5 |        5 |      |       |       |          |                 |
| 164 |         TABLE ACCESS BY INDEX ROWID                                 | OBJ$              |       1 |    3 |       203 |   +610 |     5 |        2 |      |       |       |          |                 |
| 165 |        FILTER                                                       |                   |         |      |           |        |     1 |          |      |       |       |          |                 |
| 166 |         NESTED LOOPS                                                |                   |       1 |   33 |           |        |     1 |          |      |       |       |          |                 |
| 167 |          FILTER                                                     |                   |         |      |           |        |     1 |          |      |       |       |          |                 |
| 168 |           NESTED LOOPS OUTER                                        |                   |       1 |   32 |           |        |     1 |          |      |       |       |          |                 |
| 169 |            NESTED LOOPS                                             |                   |       1 |   31 |           |        |     1 |          |      |       |       |          |                 |
| 170 |             NESTED LOOPS                                            |                   |       1 |   30 |           |        |     1 |          |      |       |       |          |                 |
| 171 |              NESTED LOOPS                                           |                   |       1 |   27 |           |        |     1 |          |      |       |       |          |                 |
| 172 |               NESTED LOOPS                                          |                   |       1 |   25 |           |        |     1 |          |      |       |       |          |                 |
| 173 |                NESTED LOOPS OUTER                                   |                   |       1 |   24 |           |        |     1 |          |      |       |       |          |                 |
| 174 |                 NESTED LOOPS OUTER                                  |                   |       1 |   23 |           |        |     1 |          |      |       |       |          |                 |
| 175 |                  NESTED LOOPS OUTER                                 |                   |       1 |   21 |           |        |     1 |          |      |       |       |          |                 |
| 176 |                   NESTED LOOPS OUTER                                |                   |       1 |   17 |           |        |     1 |          |      |       |       |          |                 |
| 177 |                    NESTED LOOPS                                     |                   |       1 |   16 |           |        |     1 |          |      |       |       |          |                 |
| 178 |                     NESTED LOOPS                                    |                   |       1 |   15 |           |        |     1 |          |      |       |       |          |                 |
| 179 |                      NESTED LOOPS OUTER                             |                   |       1 |   13 |           |        |     1 |          |      |       |       |          |                 |
| 180 |                       NESTED LOOPS OUTER                            |                   |       1 |   12 |           |        |     1 |          |      |       |       |          |                 |
| 181 |                        NESTED LOOPS OUTER                           |                   |       1 |   10 |           |        |     1 |          |      |       |       |          |                 |
| 182 |                         NESTED LOOPS                                |                   |       1 |    9 |           |        |     1 |          |      |       |       |          |                 |
| 183 |                          NESTED LOOPS                               |                   |       1 |    8 |           |        |     1 |          |      |       |       |          |                 |
| 184 |                           NESTED LOOPS                              |                   |       1 |    7 |           |        |     1 |          |      |       |       |          |                 |
| 185 |                            NESTED LOOPS                             |                   |       1 |    5 |           |        |     1 |          |      |       |       |          |                 |
| 186 |                             NESTED LOOPS                            |                   |       1 |    4 |         1 |   +610 |     1 |        0 |      |       |       |          |                 |
| 187 |                              NESTED LOOPS                           |                   |       1 |    3 |         1 |   +610 |     1 |        1 |      |       |       |          |                 |
| 188 |                               NESTED LOOPS                          |                   |       1 |    2 |         1 |   +610 |     1 |        1 |      |       |       |          |                 |
| 189 |                                TABLE ACCESS BY INDEX ROWID          | USER$             |       1 |    1 |         1 |   +610 |     1 |        1 |      |       |       |          |                 |
| 190 |                                 INDEX UNIQUE SCAN                   | I_USER1           |       1 |      |         1 |   +610 |     1 |        1 |      |       |       |          |                 |
| 191 |                                TABLE ACCESS BY INDEX ROWID          | USER$             |       1 |    1 |         1 |   +610 |     1 |        1 |      |       |       |          |                 |
| 192 |                                 INDEX UNIQUE SCAN                   | I_USER1           |       1 |      |         1 |   +610 |     1 |        1 |      |       |       |          |                 |
| 193 |                               TABLE ACCESS BY INDEX ROWID           | USER$             |       1 |    1 |         1 |   +610 |     1 |        1 |      |       |       |          |                 |
| 194 |                                INDEX UNIQUE SCAN                    | I_USER1           |       1 |      |         1 |   +610 |     1 |        1 |      |       |       |          |                 |
| 195 |                              TABLE ACCESS BY INDEX ROWID            | CON$              |       1 |    1 |           |        |     1 |          |      |       |       |          |                 |
| 196 |                               INDEX UNIQUE SCAN                     | I_CON1            |       1 |      |           |        |     1 |          |      |       |       |          |                 |
| 197 |                             TABLE ACCESS BY INDEX ROWID             | CDEF$             |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 198 |                              INDEX UNIQUE SCAN                      | I_CDEF1           |       1 |      |           |        |       |          |      |       |       |          |                 |
| 199 |                            INDEX RANGE SCAN                         | I_OBJ2            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
| 200 |                           TABLE ACCESS CLUSTER                      | CDEF$             |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 201 |                            INDEX UNIQUE SCAN                        | I_COBJ#           |       1 |      |           |        |       |          |      |       |       |          |                 |
| 202 |                          TABLE ACCESS BY INDEX ROWID                | CON$              |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 203 |                           INDEX UNIQUE SCAN                         | I_CON2            |       1 |      |           |        |       |          |      |       |       |          |                 |
| 204 |                         TABLE ACCESS BY INDEX ROWID                 | CON$              |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 205 |                          INDEX UNIQUE SCAN                          | I_CON2            |       1 |      |           |        |       |          |      |       |       |          |                 |
| 206 |                        INDEX RANGE SCAN                             | I_OBJ1            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
| 207 |                       INDEX RANGE SCAN                              | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 208 |                      INDEX RANGE SCAN                               | I_OBJ5            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
| 209 |                     TABLE ACCESS CLUSTER                            | COL$              |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 210 |                      INDEX UNIQUE SCAN                              | I_OBJ#            |       1 |      |           |        |       |          |      |       |       |          |                 |
| 211 |                    TABLE ACCESS CLUSTER                             | COLTYPE$          |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 212 |                   TABLE ACCESS BY INDEX ROWID                       | OBJ$              |       1 |    4 |           |        |       |          |      |       |       |          |                 |
| 213 |                    INDEX RANGE SCAN                                 | I_OBJ3            |      38 |    1 |           |        |       |          |      |       |       |          |                 |
| 214 |                  INDEX RANGE SCAN                                   | I_HH_OBJ#_INTCOL# |       1 |    2 |           |        |       |          |      |       |       |          |                 |
| 215 |                 INDEX RANGE SCAN                                    | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 216 |                INDEX RANGE SCAN                                     | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 217 |               TABLE ACCESS BY INDEX ROWID                           | CCOL$             |       1 |    2 |           |        |       |          |      |       |       |          |                 |
| 218 |                INDEX RANGE SCAN                                     | I_CCOL1           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 219 |              TABLE ACCESS BY INDEX ROWID                            | OBJ$              |       1 |    3 |           |        |       |          |      |       |       |          |                 |
| 220 |               INDEX RANGE SCAN                                      | I_OBJ1            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
| 221 |             TABLE ACCESS BY INDEX ROWID                             | COL$              |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 222 |              INDEX UNIQUE SCAN                                      | I_COL3            |       1 |      |           |        |       |          |      |       |       |          |                 |
| 223 |            TABLE ACCESS CLUSTER                                     | ATTRCOL$          |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 224 |          INDEX RANGE SCAN                                           | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 225 |         TABLE ACCESS CLUSTER                                        | TAB$              |       1 |    2 |           |        |       |          |      |       |       |          |                 |
| 226 |          INDEX UNIQUE SCAN                                          | I_OBJ#            |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 227 |         NESTED LOOPS                                                |                   |       1 |    3 |           |        |       |          |      |       |       |          |                 |
| 228 |          INDEX SKIP SCAN                                            | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 229 |          INDEX RANGE SCAN                                           | I_OBJ4            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
| 230 |         NESTED LOOPS                                                |                   |       1 |    3 |           |        |       |          |      |       |       |          |                 |
| 231 |          INDEX SKIP SCAN                                            | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 232 |          INDEX RANGE SCAN                                           | I_OBJ4            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
| 233 |        TABLE ACCESS CLUSTER                                         | TAB$              |       1 |    2 |         1 |   +610 |     1 |        0 |      |       |       |          |                 |
| 234 |         INDEX UNIQUE SCAN                                           | I_OBJ#            |       1 |    1 |         1 |   +610 |     1 |        1 |      |       |       |          |                 |
| 235 |        NESTED LOOPS                                                 |                   |       1 |    3 |           |        |       |          |      |       |       |          |                 |
| 236 |         INDEX SKIP SCAN                                             | I_USER2           |       1 |    1 |           |        |       |          |      |       |       |          |                 |
| 237 |         INDEX RANGE SCAN                                            | I_OBJ4            |       1 |    2 |           |        |       |          |      |       |       |          |                 |
==============================================================================================================================================================================================================

大致的定位,是这个子查询被合并了:
SELECT INDEX_NAME
                  FROM DBA_INDEXES
                 WHERE TABLE_OWNER = 'DM_ACT'
                   AND TABLE_NAME = 'ACCOUNT_DAILY'
                   AND (VISIBILITY != 'INVISIBLE' OR 'FALSE' = 'TRUE')
                   AND UNIQUENESS = 'UNIQUE'
所以,我的解决方案是固化执行计划,让这个视图”no_merge",固定后,效果果然是杠杠的:
不仅这个表是秒级,另一个要3分钟的表也是秒级;

增加分区终于不再成功一种负担,yeah! 这真是中秋节最好的礼物了^_^


20180901更新:

近日又遇上了一个问题,在改索引的并行度时(其实任意DDL都这样),久久无法完成,但也没有阻塞,等待事件是Gc current grant,表面看起来正常,但就是一动不动;经10046跟踪之后,发现又是这个SQL惹的祸,问题应该是一样的问题,视图合并的原因,或者union改成union all也可,但我用no_merge固化,竟然没生效,采用autotune的sqlprofile也没有生效,奇了怪了,沉下心来,好好地重新分析与固化了一次(用了rule),这一次生效了,再运行ddl就闪电一般了。





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

转载于:http://blog.itpub.net/13365316/viewspace-2145708/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值