设为首页 收藏本站
查看: 601|回复: 0

[经验分享] 一次访问ORACLE数据字典的优化

[复制链接]

尚未签到

发表于 2016-8-10 07:34:04 | 显示全部楼层 |阅读模式
前面写过一篇帖子:DBA任务---确保统计信息准确性http://blog.csdn.net/robinson1988/article/details/6321537  今晚上有位哥们QQ问我有没有什么SQL脚本用来收集统计信息的 几乎未加思考我就把上面的脚本原封不动的贴个了那位哥们
  后来那位哥们改写了SQL,说下面的SQL要跑200多秒,7千多W的逻辑读
SELECT  OWNER,SEGMENT_NAME,CASEWHEN SIZE_GB < 0.5 THEN30WHEN SIZE_GB >= 0.5 AND SIZE_GB < 1 THEN20WHEN SIZE_GB >= 1 AND SIZE_GB < 5 THEN10WHEN SIZE_GB >= 5 AND SIZE_GB < 10 THEN5WHEN SIZE_GB >= 10 THEN1END AS PERCENT,2 AS DEGREEFROM (SELECT OWNER,SEGMENT_NAME,SUM(BYTES / 1024 / 1024 / 1024) SIZE_GBFROM DBA_SEGMENTS AWHERE OWNER IN ('DATASYNC_PRC','OSS03','BAS01','DATASYNC_1','DATASYNC_2','OSS_CMS')AND SEGMENT_NAME IN (SELECT  DISTINCT TABLE_NAMEFROM DBA_TAB_STATISTICS BWHERE (LAST_ANALYZED IS NULL OR STALE_STATS = 'YES')AND OWNER IN('DATASYNC_PRC','OSS03','BAS01','DATASYNC_1','DATASYNC_2','OSS_CMS'))GROUP BY OWNER, SEGMENT_NAME);          该SQL语句执行计划如下:
SQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT-----------------------------------------------------------------------------------------------------------------------------------------------Plan hash value: 2028155339----------------------------------------------------------------------------------------------------------------| Id  | Operation                                | Name                | Rows  | Bytes | Cost (%CPU)| Time     |----------------------------------------------------------------------------------------------------------------|   0 | SELECT STATEMENT                         |                     | 22412 |  3852K|   113K  (2)| 00:05:55 ||   1 |  HASH GROUP BY                           |                     | 22412 |  3852K|   113K  (2)| 00:05:55 ||*  2 |   FILTER                                 |                     |       |       |            |          ||   3 |    VIEW                                  | SYS_DBA_SEGS        |  2837 |   487K|   110K  (2)| 00:05:46 ||   4 |     UNION-ALL                            |                     |       |       |            |          ||   5 |      NESTED LOOPS                        |                     |  1840 |   296K| 93690   (2)| 00:04:53 ||*  6 |       HASH JOIN                          |                     |  1779 |   272K| 93690   (2)| 00:04:53 ||   7 |        TABLE ACCESS FULL                 | TS$                 |   172 |  1548 |    54   (2)| 00:00:01 ||   8 |        NESTED LOOPS                      |                     |  1779 |   257K| 93635   (2)| 00:04:53 ||*  9 |         HASH JOIN                        |                     |  6571 |   757K| 80450   (3)| 00:04:12 ||* 10 |          FILTER                          |                     |       |       |            |          ||* 11 |           HASH JOIN RIGHT OUTER          |                     |  7221 |   423K| 10278   (6)| 00:00:33 ||  12 |            TABLE ACCESS FULL             | USER$               |  3200 | 54400 |    27   (0)| 00:00:01 ||  13 |            TABLE ACCESS FULL             | OBJ$                |  3854K|   158M| 10133   (5)| 00:00:32 ||  14 |          VIEW                            | SYS_OBJECTS         |  3507K|   194M| 70065   (2)| 00:03:40 ||  15 |           UNION-ALL                      |                     |       |       |            |          ||* 16 |            TABLE ACCESS FULL             | TAB$                |   210K|  5548K| 15995   (2)| 00:00:51 ||  17 |            TABLE ACCESS FULL             | TABPART$            |   148K|  2895K|   727   (3)| 00:00:03 ||  18 |            TABLE ACCESS FULL             | CLU$                |    10 |   150 | 14128   (2)| 00:00:45 ||* 19 |            TABLE ACCESS FULL             | IND$                |   750K|    16M| 16045   (2)| 00:00:51 ||  20 |            TABLE ACCESS FULL             | INDPART$            |   620K|    11M|  2424   (4)| 00:00:08 ||* 21 |            TABLE ACCESS FULL             | LOB$                |  2273 | 50006 | 15929   (2)| 00:00:50 ||  22 |            TABLE ACCESS FULL             | TABSUBPART$         |   269K|  5261K|   932   (4)| 00:00:03 ||  23 |            TABLE ACCESS FULL             | INDSUBPART$         |  1503K|    28M|  3868   (5)| 00:00:13 ||  24 |            TABLE ACCESS FULL             | LOBFRAG$            |  2977 | 65494 |    17   (0)| 00:00:01 ||* 25 |         TABLE ACCESS CLUSTER             | SEG$                |     1 |    30 |     2   (0)| 00:00:01 ||* 26 |          INDEX UNIQUE SCAN               | I_FILE#_BLOCK#      |     1 |       |     1   (0)| 00:00:01 ||* 27 |       INDEX UNIQUE SCAN                  | I_FILE2             |     1 |     8 |     0   (0)| 00:00:01 ||  28 |      NESTED LOOPS                        |                     |     1 |   109 |  2274   (1)| 00:00:08 ||  29 |       NESTED LOOPS                       |                     |     1 |   101 |  2274   (1)| 00:00:08 ||* 30 |        FILTER                            |                     |       |       |            |          ||* 31 |         HASH JOIN OUTER                  |                     |     1 |    92 |  2273   (1)| 00:00:08 ||  32 |          NESTED LOOPS                    |                     |   568 | 42600 |  2245   (1)| 00:00:08 ||* 33 |           TABLE ACCESS FULL              | UNDO$               |  1116 | 45756 |     5   (0)| 00:00:01 ||* 34 |           TABLE ACCESS CLUSTER           | SEG$                |     1 |    34 |     2   (0)| 00:00:01 ||* 35 |            INDEX UNIQUE SCAN             | I_FILE#_BLOCK#      |     1 |       |     1   (0)| 00:00:01 ||  36 |          TABLE ACCESS FULL               | USER$               |  3200 | 54400 |    27   (0)| 00:00:01 ||  37 |        TABLE ACCESS CLUSTER              | TS$                 |     1 |     9 |     1   (0)| 00:00:01 ||* 38 |         INDEX UNIQUE SCAN                | I_TS#               |     1 |       |     0   (0)| 00:00:01 ||* 39 |       INDEX UNIQUE SCAN                  | I_FILE2             |     1 |     8 |     0   (0)| 00:00:01 ||* 40 |      HASH JOIN                           |                     |   996 | 77688 | 14672   (1)| 00:00:46 ||  41 |       TABLE ACCESS FULL                  | TS$                 |   172 |  1548 |    54   (2)| 00:00:01 ||* 42 |       FILTER                             |                     |       |       |            |          ||* 43 |        HASH JOIN RIGHT OUTER             |                     |   996 | 68724 | 14618   (1)| 00:00:46 ||  44 |         TABLE ACCESS FULL                | USER$               |  3200 | 54400 |    27   (0)| 00:00:01 ||  45 |         NESTED LOOPS                     |                     |   531K|    26M| 14574   (1)| 00:00:46 ||  46 |          TABLE ACCESS FULL               | FILE$               |   872 | 10464 |     3   (0)| 00:00:01 ||* 47 |          TABLE ACCESS CLUSTER            | SEG$                |   610 | 24400 |    23   (0)| 00:00:01 ||* 48 |           INDEX RANGE SCAN               | I_FILE#_BLOCK#      |     1 |       |     2   (0)| 00:00:01 ||  49 |    VIEW                                  | DBA_TAB_STATISTICS  |    42 |  1932 |  2828   (6)| 00:00:09 ||  50 |     UNION-ALL                            |                     |       |       |            |          ||* 51 |      FILTER                              |                     |       |       |            |          ||  52 |       NESTED LOOPS OUTER                 |                     |     1 |   115 |    23   (0)| 00:00:01 ||  53 |        NESTED LOOPS                      |                     |     1 |    97 |    21   (0)| 00:00:01 ||  54 |         NESTED LOOPS OUTER               |                     |     1 |    74 |    19   (0)| 00:00:01 ||  55 |          NESTED LOOPS                    |                     |     1 |    67 |    19   (0)| 00:00:01 ||  56 |           INLIST ITERATOR                |                     |       |       |            |          ||  57 |            TABLE ACCESS BY INDEX ROWID   | USER$               |     6 |   102 |     7   (0)| 00:00:01 ||* 58 |             INDEX UNIQUE SCAN            | I_USER1             |     6 |       |     2   (0)| 00:00:01 ||* 59 |           INDEX RANGE SCAN               | I_OBJ2              |     1 |    50 |     2   (0)| 00:00:01 ||* 60 |          INDEX UNIQUE SCAN               | I_TAB_STATS|* 61 |         TABLE ACCESS CLUSTER             | TAB$                |     1 |    23 |     2   (0)| 00:00:01 ||* 62 |          INDEX UNIQUE SCAN               | I_OBJ#              |     1 |       |     1   (0)| 00:00:01 ||  63 |        TABLE ACCESS BY INDEX ROWID       | MON_MODS_ALL$       |     1 |    18 |     2   (0)| 00:00:01 ||* 64 |         INDEX UNIQUE SCAN                | I_MON_MODS_ALL|  65 |      NESTED LOOPS                        |                     |     1 |   147 |   775   (6)| 00:00:03 ||* 66 |       FILTER                             |                     |       |       |            |          ||  67 |        NESTED LOOPS OUTER                |                     |     1 |   141 |   773   (6)| 00:00:03 ||* 68 |         HASH JOIN                        |                     |     1 |   123 |   771   (6)| 00:00:03 ||  69 |          NESTED LOOPS OUTER              |                     |     1 |    65 |    19   (0)| 00:00:01 ||  70 |           NESTED LOOPS                   |                     |     1 |    58 |    19   (0)| 00:00:01 ||  71 |            INLIST ITERATOR               |                     |       |       |            |          ||  72 |             TABLE ACCESS BY INDEX ROWID  | USER$               |     6 |   102 |     7   (0)| 00:00:01 ||* 73 |              INDEX UNIQUE SCAN           | I_USER1             |     6 |       |     2   (0)| 00:00:01 ||* 74 |            INDEX RANGE SCAN              | I_OBJ2              |     1 |    41 |     2   (0)| 00:00:01 ||* 75 |           INDEX UNIQUE SCAN              | I_TAB_STATS|  76 |          VIEW                            | TABPARTV$           |   148K|  8397K|   747   (6)| 00:00:03 ||* 77 |           TABLE ACCESS FULL              | TABPART$            |   148K|  4632K|   747   (6)| 00:00:03 ||  78 |         TABLE ACCESS BY INDEX ROWID      | MON_MODS_ALL$       |     1 |    18 |     2   (0)| 00:00:01 ||* 79 |          INDEX UNIQUE SCAN               | I_MON_MODS_ALL|  80 |       TABLE ACCESS CLUSTER               | TAB$                |    21 |   126 |     2   (0)| 00:00:01 ||* 81 |        INDEX UNIQUE SCAN                 | I_OBJ#              |     1 |       |     1   (0)| 00:00:01 ||  82 |      NESTED LOOPS                        |                     |     1 |   140 |   737   (4)| 00:00:03 ||  83 |       NESTED LOOPS                       |                     |     1 |   134 |   735   (4)| 00:00:03 ||  84 |        NESTED LOOPS                      |                     |     1 |   117 |   734   (4)| 00:00:03 ||  85 |         NESTED LOOPS OUTER               |                     |     1 |    76 |   731   (4)| 00:00:03 ||  86 |          VIEW                            | TABPARTV$           |     1 |    58 |   729   (4)| 00:00:03 ||* 87 |           TABLE ACCESS FULL              | TABPART$            |     1 |    32 |   729   (4)| 00:00:03 ||  88 |          TABLE ACCESS BY INDEX ROWID     | MON_MODS_ALL$       |     1 |    18 |     2   (0)| 00:00:01 ||* 89 |           INDEX UNIQUE SCAN              | I_MON_MODS_ALL|* 90 |         TABLE ACCESS BY INDEX ROWID      | OBJ$                |     1 |    41 |     3   (0)| 00:00:01 ||* 91 |          INDEX RANGE SCAN                | I_OBJ1              |     1 |       |     2   (0)| 00:00:01 ||* 92 |        TABLE ACCESS CLUSTER              | USER$               |     1 |    17 |     1   (0)| 00:00:01 ||* 93 |         INDEX UNIQUE SCAN                | I_USER#             |     1 |       |     0   (0)| 00:00:01 ||  94 |       TABLE ACCESS CLUSTER               | TAB$                |    21 |   126 |     2   (0)| 00:00:01 ||* 95 |        INDEX UNIQUE SCAN                 | I_OBJ#              |     1 |       |     1   (0)| 00:00:01 ||  96 |      NESTED LOOPS                        |                     |     3 |   360 |   146   (5)| 00:00:01 ||* 97 |       FILTER                             |                     |       |       |            |          ||  98 |        NESTED LOOPS OUTER                |                     |     1 |   114 |   144   (5)| 00:00:01 ||* 99 |         HASH JOIN                        |                     |     1 |    96 |   142   (5)| 00:00:01 || 100 |          NESTED LOOPS OUTER              |                     |     1 |    65 |    19   (0)| 00:00:01 || 101 |           NESTED LOOPS                   |                     |     1 |    58 |    19   (0)| 00:00:01 || 102 |            INLIST ITERATOR               |                     |       |       |            |          || 103 |             TABLE ACCESS BY INDEX ROWID  | USER$               |     6 |   102 |     7   (0)| 00:00:01 ||*104 |              INDEX UNIQUE SCAN           | I_USER1             |     6 |       |     2   (0)| 00:00:01 ||*105 |            INDEX RANGE SCAN              | I_OBJ2              |     1 |    41 |     2   (0)| 00:00:01 ||*106 |           INDEX UNIQUE SCAN              | I_TAB_STATS| 107 |          VIEW                            | TABCOMPARTV$        | 19453 |   588K|   122   (5)| 00:00:01 || 108 |           TABLE ACCESS FULL              | TABCOMPART$         | 19453 |   398K|   122   (5)| 00:00:01 || 109 |         TABLE ACCESS BY INDEX ROWID      | MON_MODS_ALL$       |     1 |    18 |     2   (0)| 00:00:01 ||*110 |          INDEX UNIQUE SCAN               | I_MON_MODS_ALL| 111 |       TABLE ACCESS CLUSTER               | TAB$                |   160 |   960 |     2   (0)| 00:00:01 ||*112 |        INDEX UNIQUE SCAN                 | I_OBJ#              |     1 |       |     1   (0)| 00:00:01 || 113 |      NESTED LOOPS                        |                     |    35 |  5810 |  1146   (8)| 00:00:04 || 114 |       NESTED LOOPS OUTER                 |                     |     1 |   160 |  1144   (8)| 00:00:04 || 115 |        NESTED LOOPS                      |                     |     1 |   153 |  1144   (8)| 00:00:04 ||*116 |         FILTER                           |                     |       |       |            |          || 117 |          NESTED LOOPS OUTER              |                     |     1 |   147 |  1142   (8)| 00:00:04 ||*118 |           HASH JOIN                      |                     |    11 |  1419 |  1120   (8)| 00:00:04 ||*119 |            HASH JOIN                     |                     |     1 |    70 |   142   (5)| 00:00:01 || 120 |             NESTED LOOPS                 |                     |     1 |    58 |    19   (0)| 00:00:01 || 121 |              INLIST ITERATOR             |                     |       |       |            |          || 122 |               TABLE ACCESS BY INDEX ROWID| USER$               |     6 |   102 |     7   (0)| 00:00:01 ||*123 |                INDEX UNIQUE SCAN         | I_USER1             |     6 |       |     2   (0)| 00:00:01 ||*124 |              INDEX RANGE SCAN            | I_OBJ2              |     1 |    41 |     2   (0)| 00:00:01 || 125 |             VIEW                         | TABCOMPARTV$        | 19453 |   227K|   122   (5)| 00:00:01 || 126 |              TABLE ACCESS FULL           | TABCOMPART$         | 19453 |   227K|   122   (5)| 00:00:01 || 127 |            VIEW                          | TABSUBPARTV$        |   269K|    15M|   969   (8)| 00:00:04 ||*128 |             TABLE ACCESS FULL            | TABSUBPART$         |   269K|  8681K|   969   (8)| 00:00:04 || 129 |           TABLE ACCESS BY INDEX ROWID    | MON_MODS_ALL$       |     1 |    18 |     2   (0)| 00:00:01 ||*130 |            INDEX UNIQUE SCAN             | I_MON_MODS_ALL|*131 |         INDEX RANGE SCAN                 | I_OBJ1              |     1 |     6 |     2   (0)| 00:00:01 ||*132 |        INDEX UNIQUE SCAN                 | I_TAB_STATS| 133 |       TABLE ACCESS CLUSTER               | TAB$                |   160 |   960 |     2   (0)| 00:00:01 ||*134 |        INDEX UNIQUE SCAN                 | I_OBJ#              |     1 |       |     1   (0)| 00:00:01 ||*135 |      FILTER                              |                     |       |       |            |          ||*136 |       FILTER                             |                     |       |       |            |          || 137 |        NESTED LOOPS OUTER                |                     |     1 |    51 |     3  (34)| 00:00:01 || 138 |         NESTED LOOPS OUTER               |                     |     1 |    36 |     2  (50)| 00:00:01 ||*139 |          FIXED TABLE FULL                | X$KQFTA             |     1 |    21 |     1 (100)| 00:00:01 ||*140 |          TABLE ACCESS BY INDEX ROWID     | FIXED_OBJ$          |     1 |    15 |     1   (0)| 00:00:01 ||*141 |           INDEX UNIQUE SCAN              | I_FIXED_OBJ| 142 |         TABLE ACCESS BY INDEX ROWID      | TAB_STATS$          |     1 |    15 |     1   (0)| 00:00:01 ||*143 |          INDEX UNIQUE SCAN               | I_TAB_STATS----------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------2 - filter( EXISTS (SELECT 0 FROM  ( (SELECT "U"."NAME" "OWNER","O"."NAME" "TABLE_NAME",NULL"PARTITION_NAME",NULL "PARTITION_POSITION",NULL "SUBPARTITION_NAME",NULL"SUBPARTITION_POSITION",'TABLE' "OBJECT_TYPE","T"."ROWCNT""NUM_ROWS",DECODE(BITAND("T"."PROPERTY",64),0,"T"."BLKCNT",TO_NUMBER(NULL))"BLOCKS",DECODE(BITAND("T"."PROPERTY",64),0,"T"."EMPCNT",TO_NUMBER(NULL))"EMPTY_BLOCKS",DECODE(BITAND("T"."PROPERTY",64),0,"T"."AVGSPC",TO_NUMBER(NULL))"AVG_SPACE","T"."CHNCNT" "CHAIN_CNT","T"."AVGRLN" "AVG_ROW_LEN","T"."AVGSPC_FLB""AVG_SPACE_FREELIST_BLOCKS",DECODE(BITAND("T"."PROPERTY",64),0,"T"."FLBCNT",TO_NUMBER(NULL))"NUM_FREELIST_BLOCKS","TS"."CACHEDBLK" "AVG_CACHED_BLOCKS","TS"."CACHEHIT""AVG_CACHE_HIT_RATIO","T"."SAMPLESIZE" "SAMPLE_SIZE","T"."ANALYZETIME""LAST_ANALYZED",DECODE(BITAND("T"."FLAGS",512),0,'NO','YES')"GLOBAL_STATS",DECODE(BITAND("T"."FLAGS",256),0,'NO','YES')"USER_STATS",DECODE(BITAND("T"."TRIGFLAG",67108864)+BITAND("T"."TRIGFLAG",134217728),0,NULL,67108864,'DATA',134217728,'CACHE','ALL') "STATTYPE_LOCKED",CASE  WHEN "T"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"T"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END  "STALE_STATS" FROM"SYS"."MON_MODS_ALL{1}quot; "M","SYS"."TAB_STATS{1}quot; "TS","SYS"."TAB{1}quot; "T","SYS"."OBJ{1}quot; "O","SYS"."USER              WHERE ("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS') AND "O"."NAMESPACE"=1 AND"O"."NAME"=:B1 AND "O"."OWNER#"="U"."USER#" AND "O"."SUBNAME" IS NULL AND "O"."REMOTEOWNER" IS NULL AND"O"."LINKNAME" IS NULL AND "O"."OBJ#"="T"."OBJ#" AND BITAND("T"."PROPERTY",1)=0 AND"O"."OBJ#"="TS"."OBJ#"(+) AND "T"."OBJ#"="M"."OBJ#"(+) AND ("T"."ANALYZETIME" IS NULL OR CASE  WHEN"T"."ANALYZETIME" IS NULL THEN NULL WHEN ("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"T"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1)THEN 'YES' ELSE 'NO' END ='YES')) UNION ALL  (SELECT "U"."NAME" "OWNER","O"."NAME""TABLE_NAME","O"."SUBNAME" "PARTITION_NAME","TP"."PART#" "PARTITION_POSITION",NULL"SUBPARTITION_NAME",NULL "SUBPARTITION_POSITION",'PARTITION' "OBJECT_TYPE","TP"."ROWCNT""NUM_ROWS","TP"."BLKCNT" "BLOCKS","TP"."EMPCNT" "EMPTY_BLOCKS","TP"."AVGSPC" "AVG_SPACE","TP"."CHNCNT""CHAIN_CNT","TP"."AVGRLN" "AVG_ROW_LEN",TO_NUMBER(NULL) "AVG_SPACE_FREELIST_BLOCKS",TO_NUMBER(NULL)"NUM_FREELIST_BLOCKS","TS"."CACHEDBLK" "AVG_CACHED_BLOCKS","TS"."CACHEHIT""AVG_CACHE_HIT_RATIO","TP"."SAMPLESIZE" "SAMPLE_SIZE","TP"."ANALYZETIME""LAST_ANALYZED",DECODE(BITAND("TP"."FLAGS",16),0,'NO','YES')"GLOBAL_STATS",DECODE(BITAND("TP"."FLAGS",8),0,'NO','YES')"USER_STATS",DECODE(DECODE(BITAND("TAB"."TRIGFLAG",67108864)+BITAND("TP"."FLAGS",32),0,0,1)+DECODE(BITAND("TAB"."TRIGFLAG",134217728)+BITAND("TP"."FLAGS",64),0,0,2),0,NULL,1,'DATA',2,'CACHE','ALL')"STATTYPE_LOCKED",CASE  WHEN "TP"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"TP"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END  "STALE_STATS"FROM "SYS"."MON_MODS_ALL{1}quot; "M","SYS"."TAB{1}quot; "TAB","SYS"."TAB_STATS{1}quot; "TS", (SELECT "OBJ#""OBJ#","DATAOBJ#" "DATAOBJ#","BO#" "BO#",ROW_NUMBER() OVER ( PARTITION BY "BO#" ORDER BY "PART#")"PART#","HIBOUNDLEN" "HIBOUNDLEN","HIBOUNDVAL" "HIBOUNDVAL","TS#" "TS#","FILE#" "FILE#","BLOCK#""BLOCK#","PCTFREE{1}quot; "PCTFREE{1}quot;,"PCTUSED{1}quot; "PCTUSED{1}quot;,"INITRANS" "INITRANS","MAXTRANS""MAXTRANS","FLAGS" "FLAGS","ANALYZETIME" "ANALYZETIME","SAMPLESIZE" "SAMPLESIZE","ROWCNT""ROWCNT","BLKCNT" "BLKCNT","EMPCNT" "EMPCNT","AVGSPC" "AVGSPC","CHNCNT" "CHNCNT","AVGRLN""AVGRLN","PART#" "PHYPART#" FROM SYS."TABPART{1}quot; "TABPART{1}quot; WHERE "FILE#">0 AND "BLOCK#">0)"TP","SYS"."OBJ{1}quot; "O","SYS"."USER{1}quot; "U" WHERE ("U"."NAME"='BAS01' OR "U"."NAME"='DATAS)6 - access("S"."TS#"="TS"."TS#")9 - access("O"."OBJ#"="SO"."OBJECT_ID" AND "O"."TYPE#"="SO"."OBJECT_TYPE_ID")10 - filter(NVL("U"."NAME",'SYS')='DATASYNC_PRC' OR NVL("U"."NAME",'SYS')='OSS03' ORNVL("U"."NAME",'SYS')='BAS01' OR NVL("U"."NAME",'SYS')='DATASYNC_1' ORNVL("U"."NAME",'SYS')='DATASYNC_2' OR NVL("U"."NAME",'SYS')='OSS_CMS')11 - access("O"."OWNER#"="U"."USER#"(+))16 - filter(BITAND("T"."PROPERTY",1024)=0)19 - filter("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR"I"."TYPE#"=7 OR "I"."TYPE#"=8 OR "I"."TYPE#"=9)21 - filter(BITAND("L"."PROPERTY",64)=0 OR BITAND("L"."PROPERTY",128)=128)25 - filter("S"."TYPE#"="SO"."SEGMENT_TYPE_ID")26 - access("S"."TS#"="SO"."TS_NUMBER" AND "S"."FILE#"="SO"."HEADER_FILE" AND"S"."BLOCK#"="SO"."HEADER_BLOCK")27 - access("S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#")30 - filter(NVL("U"."NAME",'SYS')='DATASYNC_PRC' OR NVL("U"."NAME",'SYS')='OSS03' ORNVL("U"."NAME",'SYS')='BAS01' OR NVL("U"."NAME",'SYS')='DATASYNC_1' ORNVL("U"."NAME",'SYS')='DATASYNC_2' OR NVL("U"."NAME",'SYS')='OSS_CMS')31 - access("S"."USER#"="U"."USER#"(+))33 - filter("UN"."STATUS{1}quot;<>1)34 - filter("S"."TYPE#"=1 OR "S"."TYPE#"=10)35 - access("S"."TS#"="UN"."TS#" AND "S"."FILE#"="UN"."FILE#" AND "S"."BLOCK#"="UN"."BLOCK#")38 - access("S"."TS#"="TS"."TS#")39 - access("UN"."TS#"="F"."TS#" AND "UN"."FILE#"="F"."RELFILE#")40 - access("S"."TS#"="TS"."TS#")42 - filter(NVL("U"."NAME",'SYS')='DATASYNC_PRC' OR NVL("U"."NAME",'SYS')='OSS03' ORNVL("U"."NAME",'SYS')='BAS01' OR NVL("U"."NAME",'SYS')='DATASYNC_1' ORNVL("U"."NAME",'SYS')='DATASYNC_2' OR NVL("U"."NAME",'SYS')='OSS_CMS')43 - access("S"."USER#"="U"."USER#"(+))47 - filter("S"."TYPE#"<>6 AND "S"."TYPE#"<>5 AND "S"."TYPE#"<>8 AND "S"."TYPE#"<>10 AND"S"."TYPE#"<>1)48 - access("S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#")51 - filter("T"."ANALYZETIME" IS NULL OR CASE  WHEN "T"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"T"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END ='YES')58 - access("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS')59 - access("O"."OWNER#"="U"."USER#" AND "O"."NAME"=:B1 AND "O"."NAMESPACE"=1 AND "O"."REMOTEOWNER"IS NULL AND "O"."LINKNAME" IS NULL AND "O"."SUBNAME" IS NULL)filter("O"."SUBNAME" IS NULL AND "O"."REMOTEOWNER" IS NULL AND "O"."LINKNAME" IS NULL)60 - access("O"."OBJ#"="TS"."OBJ#"(+))61 - filter(BITAND("T"."PROPERTY",1)=0)62 - access("O"."OBJ#"="T"."OBJ#")64 - access("T"."OBJ#"="M"."OBJ#"(+))66 - filter("TP"."ANALYZETIME" IS NULL OR CASE  WHEN "TP"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"TP"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END ='YES')68 - access("O"."OBJ#"="TP"."OBJ#")73 - access("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS')74 - access("O"."OWNER#"="U"."USER#" AND "O"."NAME"=:B1 AND "O"."NAMESPACE"=1 AND "O"."REMOTEOWNER"IS NULL AND "O"."LINKNAME" IS NULL)filter("O"."REMOTEOWNER" IS NULL AND "O"."LINKNAME" IS NULL)75 - access("O"."OBJ#"="TS"."OBJ#"(+))77 - filter("FILE#">0 AND "BLOCK#">0)79 - access("TP"."OBJ#"="M"."OBJ#"(+))81 - access("TP"."BO#"="TAB"."OBJ#")87 - filter("BLOCK#"=0 AND "FILE#"=0)89 - access("TP"."OBJ#"="M"."OBJ#"(+))90 - filter("O"."NAME"=:B1 AND "O"."NAMESPACE"=1 AND "O"."REMOTEOWNER" IS NULL AND "O"."LINKNAME" ISNULL)91 - access("O"."OBJ#"="TP"."OBJ#")92 - filter(("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS') AND ("TP"."ANALYZETIME" ISNULL OR CASE  WHEN "TP"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"TP"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END ='YES'))93 - access("O"."OWNER#"="U"."USER#")95 - access("TP"."BO#"="TAB"."OBJ#")97 - filter("TCP"."ANALYZETIME" IS NULL OR CASE  WHEN "TCP"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"TCP"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END ='YES')99 - access("O"."OBJ#"="TCP"."OBJ#")104 - access("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS')105 - access("O"."OWNER#"="U"."USER#" AND "O"."NAME"=:B1 AND "O"."NAMESPACE"=1 AND "O"."REMOTEOWNER"IS NULL AND "O"."LINKNAME" IS NULL)filter("O"."REMOTEOWNER" IS NULL AND "O"."LINKNAME" IS NULL)106 - access("O"."OBJ#"="TS"."OBJ#"(+))110 - access("TCP"."OBJ#"="M"."OBJ#"(+))112 - access("TCP"."BO#"="TAB"."OBJ#")116 - filter("TSP"."ANALYZETIME" IS NULL OR CASE  WHEN "TSP"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"TSP"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","PO"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END ='YES')118 - access("TCP"."OBJ#"="TSP"."POBJ#")119 - access("PO"."OBJ#"="TCP"."OBJ#")123 - access("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS')124 - access("U"."USER#"="PO"."OWNER#" AND "PO"."NAME"=:B1 AND "PO"."NAMESPACE"=1 AND"PO"."REMOTEOWNER" IS NULL AND "PO"."LINKNAME" IS NULL)filter("PO"."REMOTEOWNER" IS NULL AND "PO"."LINKNAME" IS NULL)128 - filter("FILE#">0 AND "BLOCK#">0)130 - access("TSP"."OBJ#"="M"."OBJ#"(+))131 - access("SO"."OBJ#"="TSP"."OBJ#")132 - access("SO"."OBJ#"="TS"."OBJ#"(+))134 - access("TCP"."BO#"="TAB"."OBJ#")135 - filter(NULL IS NOT NULL)136 - filter(DECODE(NVL("FOBJ"."OBJ#",0),0,TO_DATE(NULL),INTERNAL_FUNCTION("ST"."ANALYZETIME")) ISNULL)139 - filter("T"."KQFTANAM"=:B1)140 - filter("T"."KQFTAVER"="FOBJ"."TIMESTAMP"(+)-TO_DATE(' 1991-01-01 00:00:00', 'syyyy-mm-ddhh24:mi:ss'))141 - access("T"."KQFTAOBJ"="FOBJ"."OBJ#"(+))143 - access("T"."KQFTAOBJ"="ST"."OBJ#"(+))已选择303行。             
当时是下午,脑的晕晕的 没有怎么关注这个事情,晚上10点过睡觉起来,那位哥们又QQ找我了 呵呵,由于睡了一觉,加上自己一看到大SQL就像打了鸡血一样,所以再次请求那位哥们把SQL发给我,经过半分钟的分析,加了个HINT
SELECT  OWNER,SEGMENT_NAME,CASEWHEN SIZE_GB < 0.5 THEN30WHEN SIZE_GB >= 0.5 AND SIZE_GB < 1 THEN20WHEN SIZE_GB >= 1 AND SIZE_GB < 5 THEN10WHEN SIZE_GB >= 5 AND SIZE_GB < 10 THEN5WHEN SIZE_GB >= 10 THEN1END AS PERCENT,2 AS DEGREEFROM (SELECT OWNER,SEGMENT_NAME,SUM(BYTES / 1024 / 1024 / 1024) SIZE_GBFROM DBA_SEGMENTS AWHERE OWNER IN ('DATASYNC_PRC','OSS03','BAS01','DATASYNC_1','DATASYNC_2','OSS_CMS')AND SEGMENT_NAME IN (SELECT  /*+ UNNEST */ DISTINCT TABLE_NAMEFROM DBA_TAB_STATISTICS BWHERE (LAST_ANALYZED IS NULL OR STALE_STATS = 'YES')AND OWNER IN('DATASYNC_PRC','OSS03','BAS01','DATASYNC_1','DATASYNC_2','OSS_CMS'))GROUP BY OWNER, SEGMENT_NAME);   执行计划如下:
SQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT------------------------------------------------------------------------------------------------------------------------------------------------Plan hash value: 539876731------------------------------------------------------------------------------------------------------------------| Id  | Operation                                  | Name                | Rows  | Bytes | Cost (%CPU)| Time     |------------------------------------------------------------------------------------------------------------------|   0 | SELECT STATEMENT                           |                     | 22412 |  4224K|   122K  (3)| 00:06:24 ||   1 |  HASH GROUP BY                             |                     | 22412 |  4224K|   122K  (3)| 00:06:24 ||*  2 |   HASH JOIN                                |                     | 22412 |  4224K|   122K  (3)| 00:06:24 ||   3 |    VIEW                                    | VW_NSO_1            |   790 | 13430 | 11899   (8)| 00:00:38 ||   4 |     HASH UNIQUE                            |                     |   790 | 36340 | 11899   (8)| 00:00:38 ||   5 |      VIEW                                  | DBA_TAB_STATISTICS  |   790 | 36340 | 11898   (8)| 00:00:38 ||   6 |       UNION-ALL                            |                     |       |       |            |          ||   7 |        NESTED LOOPS OUTER                  |                     |   231 | 26565 |  3598   (7)| 00:00:12 ||*  8 |         FILTER                             |                     |       |       |            |          ||*  9 |          HASH JOIN OUTER                   |                     |   231 | 24948 |  3598   (7)| 00:00:12 ||  10 |           NESTED LOOPS                     |                     |  1321 |   116K|  1885   (1)| 00:00:06 ||  11 |            NESTED LOOPS                    |                     |  1605 |   105K|   188   (1)| 00:00:01 ||  12 |             INLIST ITERATOR                |                     |       |       |            |          ||  13 |              TABLE ACCESS BY INDEX ROWID   | USER$               |     6 |   102 |     7   (0)| 00:00:01 ||* 14 |               INDEX UNIQUE SCAN            | I_USER1             |     6 |       |     2   (0)| 00:00:01 ||* 15 |             INDEX RANGE SCAN               | I_OBJ2              |   267 | 13350 |    30   (0)| 00:00:01 ||* 16 |            TABLE ACCESS CLUSTER            | TAB$                |     1 |    23 |     2   (0)| 00:00:01 ||* 17 |             INDEX UNIQUE SCAN              | I_OBJ#              |     1 |       |     1   (0)| 00:00:01 ||  18 |           TABLE ACCESS FULL                | MON_MODS_ALL$       |  1926K|    33M|  1653  (10)| 00:00:06 ||* 19 |         INDEX UNIQUE SCAN                  | I_TAB_STATS{1}OBJ#   |     1 |     7 |     0   (0)| 00:00:01 ||  20 |        NESTED LOOPS OUTER                  |                     |   265 | 43195 |  3176   (9)| 00:00:10 ||  21 |         NESTED LOOPS                       |                     |   265 | 41340 |  3176   (9)| 00:00:10 ||* 22 |          FILTER                            |                     |       |       |            |          ||* 23 |           HASH JOIN OUTER                  |                     |   261 | 39150 |  2652  (11)| 00:00:09 ||* 24 |            HASH JOIN                       |                     |   930 |   119K|   940   (5)| 00:00:03 ||  25 |             NESTED LOOPS                   |                     |  5315 |   301K|   188   (1)| 00:00:01 ||  26 |              INLIST ITERATOR               |                     |       |       |            |          ||  27 |               TABLE ACCESS BY INDEX ROWID  | USER$               |     6 |   102 |     7   (0)| 00:00:01 ||* 28 |                INDEX UNIQUE SCAN           | I_USER1             |     6 |       |     2   (0)| 00:00:01 ||* 29 |              INDEX RANGE SCAN              | I_OBJ2              |   886 | 36326 |    30   (0)| 00:00:01 ||  30 |             VIEW                           | TABPARTV$           |   148K|    10M|   747   (6)| 00:00:03 ||* 31 |              TABLE ACCESS FULL             | TABPART$            |   148K|  4632K|   747   (6)| 00:00:03 ||  32 |            TABLE ACCESS FULL               | MON_MODS_ALL$       |  1926K|    33M|  1653  (10)| 00:00:06 ||  33 |          TABLE ACCESS CLUSTER              | TAB$                |     1 |     6 |     2   (0)| 00:00:01 ||* 34 |           INDEX UNIQUE SCAN                | I_OBJ#              |     1 |       |     1   (0)| 00:00:01 ||* 35 |         INDEX UNIQUE SCAN                  | I_TAB_STATS{1}OBJ#   |     1 |     7 |     0   (0)| 00:00:01 ||  36 |        NESTED LOOPS                        |                     |     1 |   156 |   737   (4)| 00:00:03 ||  37 |         NESTED LOOPS                       |                     |     1 |   150 |   735   (4)| 00:00:03 ||  38 |          NESTED LOOPS                      |                     |     1 |   133 |   734   (4)| 00:00:03 ||  39 |           NESTED LOOPS OUTER               |                     |     1 |    92 |   731   (4)| 00:00:03 ||  40 |            VIEW                            | TABPARTV$           |     1 |    74 |   729   (4)| 00:00:03 ||* 41 |             TABLE ACCESS FULL              | TABPART$            |     1 |    32 |   729   (4)| 00:00:03 ||  42 |            TABLE ACCESS BY INDEX ROWID     | MON_MODS_ALL$       |     1 |    18 |     2   (0)| 00:00:01 ||* 43 |             INDEX UNIQUE SCAN              | I_MON_MODS_ALL{1}OBJ |     1 |       |     1   (0)| 00:00:01 ||* 44 |           TABLE ACCESS BY INDEX ROWID      | OBJ$                |     1 |    41 |     3   (0)| 00:00:01 ||* 45 |            INDEX RANGE SCAN                | I_OBJ1              |     1 |       |     2   (0)| 00:00:01 ||* 46 |          TABLE ACCESS CLUSTER              | USER$               |     1 |    17 |     1   (0)| 00:00:01 ||* 47 |           INDEX UNIQUE SCAN                | I_USER#             |     1 |       |     0   (0)| 00:00:01 ||  48 |         TABLE ACCESS CLUSTER               | TAB$                |     1 |     6 |     2   (0)| 00:00:01 ||* 49 |          INDEX UNIQUE SCAN                 | I_OBJ#              |     1 |       |     1   (0)| 00:00:01 ||  50 |        NESTED LOOPS                        |                     |    52 |  7124 |   659   (2)| 00:00:03 ||  51 |         NESTED LOOPS OUTER                 |                     |    51 |  6681 |   556   (2)| 00:00:02 ||* 52 |          FILTER                            |                     |       |       |            |          ||  53 |           NESTED LOOPS OUTER               |                     |    51 |  6324 |   556   (2)| 00:00:02 ||* 54 |            HASH JOIN                       |                     |   122 | 12932 |   311   (3)| 00:00:01 ||  55 |             NESTED LOOPS                   |                     |  5315 |   301K|   188   (1)| 00:00:01 ||  56 |              INLIST ITERATOR               |                     |       |       |            |          ||  57 |               TABLE ACCESS BY INDEX ROWID  | USER$               |     6 |   102 |     7   (0)| 00:00:01 ||* 58 |                INDEX UNIQUE SCAN           | I_USER1             |     6 |       |     2   (0)| 00:00:01 ||* 59 |              INDEX RANGE SCAN              | I_OBJ2              |   886 | 36326 |    30   (0)| 00:00:01 ||  60 |             VIEW                           | TABCOMPARTV$        | 19453 |   911K|   122   (5)| 00:00:01 ||  61 |              TABLE ACCESS FULL             | TABCOMPART$         | 19453 |   398K|   122   (5)| 00:00:01 ||  62 |            TABLE ACCESS BY INDEX ROWID     | MON_MODS_ALL$       |     1 |    18 |     2   (0)| 00:00:01 ||* 63 |             INDEX UNIQUE SCAN              | I_MON_MODS_ALL{1}OBJ |     1 |       |     1   (0)| 00:00:01 ||* 64 |          INDEX UNIQUE SCAN                 | I_TAB_STATS{1}OBJ#   |     1 |     7 |     0   (0)| 00:00:01 ||  65 |         TABLE ACCESS CLUSTER               | TAB$                |     1 |     6 |     2   (0)| 00:00:01 ||* 66 |          INDEX UNIQUE SCAN                 | I_OBJ#              |     1 |       |     1   (0)| 00:00:01 ||  67 |        NESTED LOOPS OUTER                  |                     |   240 | 46800 |  3728   (9)| 00:00:12 ||  68 |         NESTED LOOPS                       |                     |   240 | 45120 |  3728   (9)| 00:00:12 ||* 69 |          FILTER                            |                     |       |       |            |          ||* 70 |           HASH JOIN OUTER                  |                     |   240 | 43680 |  3247  (10)| 00:00:11 ||* 71 |            HASH JOIN                       |                     |  1713 |   274K|  1534   (6)| 00:00:05 ||  72 |             NESTED LOOPS                   |                     |   124 | 11160 |   556   (2)| 00:00:02 ||* 73 |              HASH JOIN                     |                     |   122 | 10248 |   311   (3)| 00:00:01 ||  74 |               NESTED LOOPS                 |                     |  5315 |   301K|   188   (1)| 00:00:01 ||  75 |                INLIST ITERATOR             |                     |       |       |            |          ||  76 |                 TABLE ACCESS BY INDEX ROWID| USER$               |     6 |   102 |     7   (0)| 00:00:01 ||* 77 |                  INDEX UNIQUE SCAN         | I_USER1             |     6 |       |     2   (0)| 00:00:01 ||* 78 |                INDEX RANGE SCAN            | I_OBJ2              |   886 | 36326 |    30   (0)| 00:00:01 ||  79 |               VIEW                         | TABCOMPARTV$        | 19453 |   493K|   122   (5)| 00:00:01 ||  80 |                TABLE ACCESS FULL           | TABCOMPART$         | 19453 |   227K|   122   (5)| 00:00:01 ||  81 |              TABLE ACCESS CLUSTER          | TAB$                |     1 |     6 |     2   (0)| 00:00:01 ||* 82 |               INDEX UNIQUE SCAN            | I_OBJ#              |     1 |       |     1   (0)| 00:00:01 ||  83 |             VIEW                           | TABSUBPARTV$        |   269K|    19M|   969   (8)| 00:00:04 ||* 84 |              TABLE ACCESS FULL             | TABSUBPART$         |   269K|  8681K|   969   (8)| 00:00:04 ||  85 |            TABLE ACCESS FULL               | MON_MODS_ALL$       |  1926K|    33M|  1653  (10)| 00:00:06 ||* 86 |          INDEX RANGE SCAN                  | I_OBJ1              |     1 |     6 |     2   (0)| 00:00:01 ||* 87 |         INDEX UNIQUE SCAN                  | I_TAB_STATS{1}OBJ#   |     1 |     7 |     0   (0)| 00:00:01 ||* 88 |        FILTER                              |                     |       |       |            |          ||* 89 |         FILTER                             |                     |       |       |            |          ||* 90 |          HASH JOIN RIGHT OUTER             |                     |   783 | 39933 |     7  (29)| 00:00:01 ||  91 |           TABLE ACCESS FULL                | TAB_STATS$          |   770 | 11550 |     3   (0)| 00:00:01 ||* 92 |           HASH JOIN OUTER                  |                     |   783 | 28188 |     3  (34)| 00:00:01 ||  93 |            FIXED TABLE FULL                | X$KQFTA             |   783 | 16443 |     1 (100)| 00:00:01 ||  94 |            TABLE ACCESS FULL               | FIXED_OBJ$          |   784 | 11760 |     2   (0)| 00:00:01 ||  95 |    VIEW                                    | SYS_DBA_SEGS        |  2837 |   487K|   110K  (2)| 00:05:46 ||  96 |     UNION-ALL                              |                     |       |       |            |          ||  97 |      NESTED LOOPS                          |                     |  1840 |   296K| 93690   (2)| 00:04:53 ||* 98 |       HASH JOIN                            |                     |  1779 |   272K| 93690   (2)| 00:04:53 ||  99 |        TABLE ACCESS FULL                   | TS$                 |   172 |  1548 |    54   (2)| 00:00:01 || 100 |        NESTED LOOPS                        |                     |  1779 |   257K| 93635   (2)| 00:04:53 ||*101 |         HASH JOIN                          |                     |  6571 |   757K| 80450   (3)| 00:04:12 ||*102 |          FILTER                            |                     |       |       |            |          ||*103 |           HASH JOIN RIGHT OUTER            |                     |  7221 |   423K| 10278   (6)| 00:00:33 || 104 |            TABLE ACCESS FULL               | USER$               |  3200 | 54400 |    27   (0)| 00:00:01 || 105 |            TABLE ACCESS FULL               | OBJ$                |  3854K|   158M| 10133   (5)| 00:00:32 || 106 |          VIEW                              | SYS_OBJECTS         |  3507K|   194M| 70065   (2)| 00:03:40 || 107 |           UNION-ALL                        |                     |       |       |            |          ||*108 |            TABLE ACCESS FULL               | TAB$                |   210K|  5548K| 15995   (2)| 00:00:51 || 109 |            TABLE ACCESS FULL               | TABPART$            |   148K|  2895K|   727   (3)| 00:00:03 || 110 |            TABLE ACCESS FULL               | CLU$                |    10 |   150 | 14128   (2)| 00:00:45 ||*111 |            TABLE ACCESS FULL               | IND$                |   750K|    16M| 16045   (2)| 00:00:51 || 112 |            TABLE ACCESS FULL               | INDPART$            |   620K|    11M|  2424   (4)| 00:00:08 ||*113 |            TABLE ACCESS FULL               | LOB$                |  2273 | 50006 | 15929   (2)| 00:00:50 || 114 |            TABLE ACCESS FULL               | TABSUBPART$         |   269K|  5261K|   932   (4)| 00:00:03 || 115 |            TABLE ACCESS FULL               | INDSUBPART$         |  1503K|    28M|  3868   (5)| 00:00:13 || 116 |            TABLE ACCESS FULL               | LOBFRAG$            |  2977 | 65494 |    17   (0)| 00:00:01 ||*117 |         TABLE ACCESS CLUSTER               | SEG$                |     1 |    30 |     2   (0)| 00:00:01 ||*118 |          INDEX UNIQUE SCAN                 | I_FILE#_BLOCK#      |     1 |       |     1   (0)| 00:00:01 ||*119 |       INDEX UNIQUE SCAN                    | I_FILE2             |     1 |     8 |     0   (0)| 00:00:01 || 120 |      NESTED LOOPS                          |                     |     1 |   109 |  2274   (1)| 00:00:08 || 121 |       NESTED LOOPS                         |                     |     1 |   101 |  2274   (1)| 00:00:08 ||*122 |        FILTER                              |                     |       |       |            |          ||*123 |         HASH JOIN OUTER                    |                     |     1 |    92 |  2273   (1)| 00:00:08 || 124 |          NESTED LOOPS                      |                     |   568 | 42600 |  2245   (1)| 00:00:08 ||*125 |           TABLE ACCESS FULL                | UNDO$               |  1116 | 45756 |     5   (0)| 00:00:01 ||*126 |           TABLE ACCESS CLUSTER             | SEG$                |     1 |    34 |     2   (0)| 00:00:01 ||*127 |            INDEX UNIQUE SCAN               | I_FILE#_BLOCK#      |     1 |       |     1   (0)| 00:00:01 || 128 |          TABLE ACCESS FULL                 | USER$               |  3200 | 54400 |    27   (0)| 00:00:01 || 129 |        TABLE ACCESS CLUSTER                | TS$                 |     1 |     9 |     1   (0)| 00:00:01 ||*130 |         INDEX UNIQUE SCAN                  | I_TS#               |     1 |       |     0   (0)| 00:00:01 ||*131 |       INDEX UNIQUE SCAN                    | I_FILE2             |     1 |     8 |     0   (0)| 00:00:01 ||*132 |      HASH JOIN                             |                     |   996 | 77688 | 14672   (1)| 00:00:46 || 133 |       TABLE ACCESS FULL                    | TS$                 |   172 |  1548 |    54   (2)| 00:00:01 ||*134 |       FILTER                               |                     |       |       |            |          ||*135 |        HASH JOIN RIGHT OUTER               |                     |   996 | 68724 | 14618   (1)| 00:00:46 || 136 |         TABLE ACCESS FULL                  | USER$               |  3200 | 54400 |    27   (0)| 00:00:01 || 137 |         NESTED LOOPS                       |                     |   531K|    26M| 14574   (1)| 00:00:46 || 138 |          TABLE ACCESS FULL                 | FILE$               |   872 | 10464 |     3   (0)| 00:00:01 ||*139 |          TABLE ACCESS CLUSTER              | SEG$                |   610 | 24400 |    23   (0)| 00:00:01 ||*140 |           INDEX RANGE SCAN                 | I_FILE#_BLOCK#      |     1 |       |     2   (0)| 00:00:01 |------------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------2 - access("SEGMENT_NAME"="TABLE_NAME")8 - filter("T"."ANALYZETIME" IS NULL OR CASE  WHEN "T"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"T"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END ='YES')9 - access("T"."OBJ#"="M"."OBJ#"(+))14 - access("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS')15 - access("O"."OWNER#"="U"."USER#" AND "O"."NAMESPACE"=1 AND "O"."REMOTEOWNER" IS NULL AND"O"."LINKNAME" IS NULL AND "O"."SUBNAME" IS NULL)filter("O"."SUBNAME" IS NULL AND "O"."NAMESPACE"=1 AND "O"."REMOTEOWNER" IS NULL AND"O"."LINKNAME" IS NULL)16 - filter(BITAND("T"."PROPERTY",1)=0)17 - access("O"."OBJ#"="T"."OBJ#")19 - access("O"."OBJ#"="TS"."OBJ#"(+))22 - filter("TP"."ANALYZETIME" IS NULL OR CASE  WHEN "TP"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"TP"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END ='YES')23 - access("TP"."OBJ#"="M"."OBJ#"(+))24 - access("O"."OBJ#"="TP"."OBJ#")28 - access("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS')29 - access("O"."OWNER#"="U"."USER#" AND "O"."NAMESPACE"=1 AND "O"."REMOTEOWNER" IS NULL AND"O"."LINKNAME" IS NULL)filter("O"."NAMESPACE"=1 AND "O"."REMOTEOWNER" IS NULL AND "O"."LINKNAME" IS NULL)31 - filter("FILE#">0 AND "BLOCK#">0)34 - access("TP"."BO#"="TAB"."OBJ#")35 - access("O"."OBJ#"="TS"."OBJ#"(+))41 - filter("BLOCK#"=0 AND "FILE#"=0)43 - access("TP"."OBJ#"="M"."OBJ#"(+))44 - filter("O"."NAMESPACE"=1 AND "O"."REMOTEOWNER" IS NULL AND "O"."LINKNAME" IS NULL)45 - access("O"."OBJ#"="TP"."OBJ#")46 - filter(("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS') AND ("TP"."ANALYZETIME" IS NULLOR CASE  WHEN "TP"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"TP"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END ='YES'))47 - access("O"."OWNER#"="U"."USER#")49 - access("TP"."BO#"="TAB"."OBJ#")52 - filter("TCP"."ANALYZETIME" IS NULL OR CASE  WHEN "TCP"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"TCP"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","O"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END ='YES')54 - access("O"."OBJ#"="TCP"."OBJ#")58 - access("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS')59 - access("O"."OWNER#"="U"."USER#" AND "O"."NAMESPACE"=1 AND "O"."REMOTEOWNER" IS NULL AND"O"."LINKNAME" IS NULL)filter("O"."NAMESPACE"=1 AND "O"."REMOTEOWNER" IS NULL AND "O"."LINKNAME" IS NULL)63 - access("TCP"."OBJ#"="M"."OBJ#"(+))64 - access("O"."OBJ#"="TS"."OBJ#"(+))66 - access("TCP"."BO#"="TAB"."OBJ#")69 - filter("TSP"."ANALYZETIME" IS NULL OR CASE  WHEN "TSP"."ANALYZETIME" IS NULL THEN NULL WHEN("M"."INSERTS"+"M"."DELETES"+"M"."UPDATES">"TSP"."ROWCNT"*TO_NUMBER("DBMS_STATS"."GET_PREFS"('STALE_PERCENT',"U"."NAME","PO"."NAME"))/100 OR BITAND("M"."FLAGS",1)=1) THEN 'YES' ELSE 'NO' END ='YES')70 - access("TSP"."OBJ#"="M"."OBJ#"(+))71 - access("TCP"."OBJ#"="TSP"."POBJ#")73 - access("PO"."OBJ#"="TCP"."OBJ#")77 - access("U"."NAME"='BAS01' OR "U"."NAME"='DATASYNC_1' OR "U"."NAME"='DATASYNC_2' OR"U"."NAME"='DATASYNC_PRC' OR "U"."NAME"='OSS03' OR "U"."NAME"='OSS_CMS')78 - access("U"."USER#"="PO"."OWNER#" AND "PO"."NAMESPACE"=1 AND "PO"."REMOTEOWNER" IS NULL AND"PO"."LINKNAME" IS NULL)filter("PO"."NAMESPACE"=1 AND "PO"."REMOTEOWNER" IS NULL AND "PO"."LINKNAME" IS NULL)82 - access("TCP"."BO#"="TAB"."OBJ#")84 - filter("FILE#">0 AND "BLOCK#">0)86 - access("SO"."OBJ#"="TSP"."OBJ#")87 - access("SO"."OBJ#"="TS"."OBJ#"(+))88 - filter(NULL IS NOT NULL)89 - filter(DECODE(NVL("FOBJ"."OBJ#",0),0,TO_DATE(NULL),INTERNAL_FUNCTION("ST"."ANALYZETIME")) IS NULL)90 - access("T"."KQFTAOBJ"="ST"."OBJ#"(+))92 - access("T"."KQFTAOBJ"="FOBJ"."OBJ#"(+) AND "T"."KQFTAVER"="FOBJ"."TIMESTAMP"(+)-TO_DATE('1991-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))98 - access("S"."TS#"="TS"."TS#")101 - access("O"."OBJ#"="SO"."OBJECT_ID" AND "O"."TYPE#"="SO"."OBJECT_TYPE_ID")102 - filter(NVL("U"."NAME",'SYS')='DATASYNC_PRC' OR NVL("U"."NAME",'SYS')='OSS03' ORNVL("U"."NAME",'SYS')='BAS01' OR NVL("U"."NAME",'SYS')='DATASYNC_1' OR NVL("U"."NAME",'SYS')='DATASYNC_2'OR NVL("U"."NAME",'SYS')='OSS_CMS')103 - access("O"."OWNER#"="U"."USER#"(+))108 - filter(BITAND("T"."PROPERTY",1024)=0)111 - filter("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR"I"."TYPE#"=7 OR "I"."TYPE#"=8 OR "I"."TYPE#"=9)113 - filter(BITAND("L"."PROPERTY",64)=0 OR BITAND("L"."PROPERTY",128)=128)117 - filter("S"."TYPE#"="SO"."SEGMENT_TYPE_ID")118 - access("S"."TS#"="SO"."TS_NUMBER" AND "S"."FILE#"="SO"."HEADER_FILE" AND"S"."BLOCK#"="SO"."HEADER_BLOCK")119 - access("S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#")122 - filter(NVL("U"."NAME",'SYS')='DATASYNC_PRC' OR NVL("U"."NAME",'SYS')='OSS03' ORNVL("U"."NAME",'SYS')='BAS01' OR NVL("U"."NAME",'SYS')='DATASYNC_1' OR NVL("U"."NAME",'SYS')='DATASYNC_2'OR NVL("U"."NAME",'SYS')='OSS_CMS')123 - access("S"."USER#"="U"."USER#"(+))125 - filter("UN"."STATUS{1}quot;<>1)126 - filter("S"."TYPE#"=1 OR "S"."TYPE#"=10)127 - access("S"."TS#"="UN"."TS#" AND "S"."FILE#"="UN"."FILE#" AND "S"."BLOCK#"="UN"."BLOCK#")130 - access("S"."TS#"="TS"."TS#")131 - access("UN"."TS#"="F"."TS#" AND "UN"."FILE#"="F"."RELFILE#")132 - access("S"."TS#"="TS"."TS#")134 - filter(NVL("U"."NAME",'SYS')='DATASYNC_PRC' OR NVL("U"."NAME",'SYS')='OSS03' ORNVL("U"."NAME",'SYS')='BAS01' OR NVL("U"."NAME",'SYS')='DATASYNC_1' OR NVL("U"."NAME",'SYS')='DATASYNC_2'OR NVL("U"."NAME",'SYS')='OSS_CMS')135 - access("S"."USER#"="U"."USER#"(+))139 - filter("S"."TYPE#"<>6 AND "S"."TYPE#"<>5 AND "S"."TYPE#"<>8 AND "S"."TYPE#"<>10 AND "S"."TYPE#"<>1)140 - access("S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#")已选择251行。  这次SQL能在1秒钟左右出结果,逻辑读由7千多W降低到8W多,我为什么加这个HINT就不说了,经常看我博客的人肯定懂的
  有时候单独去访问数据字典很快,但是如果关联了太多数据字典性能就急剧下降,这个时候你不要怕,把它当成我们普通人写的SQL那样对待
  很多人说遇到数据字典 加个 /*+ rule */ ,对于这个我是非常不赞同的
  
另外就是关于这个脚本 DBA任务---确保统计信息准确性 http://blog.csdn.net/robinson1988/article/details/6321537
  会收集所有分区的统计信息,而不是只收集某个分区(如果表的数据只有一个分区发生了变化那么重复收集分区统计信息就做无用功了)
  所以如果哥们要借鉴我的这个SQL,请自己改写
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-255679-1-1.html 上篇帖子: ORACLE数据库的相关习题 下篇帖子: Pro ORACLE SQL一书错误之处
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表