环境:
Windows 7
Oracle 11.2.0.1 32位
相同的问题在10g,11g Linux下没有重现。不知道是不是我这里的11g Windows有问题?
CODE:
[font=宋体]C:\Users\Administrator>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 5月 25 10:30:53 2010
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn / as sysdba
已连接。
SQL> select table_name from dba_tab_modifications where rownum<5;
TABLE_NAME
------------------------------
TAB$
SEG$
OBJ$
IND$
SQL> select table_name from dba_tab_modifications where table_name='TAB$';
TABLE_NAME
------------------------------
TAB$
SQL> select * from dba_tab_modifications where table_name='TAB$';
未选定行
SQL> set autot on
SQL> select table_name from dba_tab_modifications where table_name='TAB$';
TABLE_NAME
------------------------------
TAB$
执行计划
----------------------------------------------------------
Plan hash value: 3635092817
----------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4 | 68 | 96 (0)| 00:00:02 |
| 1 | VIEW | DBA_TAB_MODIFICATIONS | 4 | 68 | 96 (0)| 00:00:02 |
| 2 | UNION-ALL | | | | | |
| 3 | NESTED LOOPS | | 2 | 92 | 46 (0)| 00:00:01 |
| 4 | NESTED LOOPS | | 2 | 82 | 45 (0)| 00:00:01 |
| 5 | NESTED LOOPS | | 2 | 74 | 45 (0)| 00:00:01 |
| 6 | INDEX FULL SCAN | I_USER2 | 43 | 129 | 1 (0)| 00:00:01 |
|* 7 | INDEX RANGE SCAN | I_OBJ2 | 1 | 34 | 2 (0)| 00:00:01 |
|* 8 | INDEX UNIQUE SCAN | I_MON_MODS_ALL$_OBJ | 1 | 4 | 0 (0)| 00:00:01 |
| 9 | TABLE ACCESS CLUSTER | TAB$ | 1 | 5 | 1 (0)| 00:00:01 |
|* 10 | INDEX UNIQUE SCAN | I_OBJ# | 1 | | 0 (0)| 00:00:01 |
| 11 | NESTED LOOPS | | 1 | 45 | 45 (0)| 00:00:01 |
| 12 | NESTED LOOPS | | 1 | 41 | 45 (0)| 00:00:01 |
| 13 | INDEX FULL SCAN | I_USER2 | 43 | 129 | 1 (0)| 00:00:01 |
|* 14 | INDEX RANGE SCAN | I_OBJ2 | 1 | 38 | 2 (0)| 00:00:01 |
|* 15 | INDEX UNIQUE SCAN | I_MON_MODS_ALL$_OBJ | 1 | 4 | 0 (0)| 00:00:01 |
| 16 | NESTED LOOPS | | 1 | 72 | 5 (0)| 00:00:01 |
| 17 | NESTED LOOPS | | 1 | 67 | 4 (0)| 00:00:01 |
| 18 | NESTED LOOPS | | 1 | 63 | 4 (0)| 00:00:01 |
| 19 | MERGE JOIN CARTESIAN | | 1 | 29 | 3 (0)| 00:00:01 |
| 20 | TABLE ACCESS FULL | TABSUBPART$ | 1 | 26 | 2 (0)| 00:00:01 |
| 21 | BUFFER SORT | | 43 | 129 | 1 (0)| 00:00:01 |
| 22 | INDEX FULL SCAN | I_USER2 | 43 | 129 | 1 (0)| 00:00:01 |
|* 23 | TABLE ACCESS BY INDEX ROWID| OBJ$ | 1 | 34 | 1 (0)| 00:00:01 |
|* 24 | INDEX RANGE SCAN | I_OBJ1 | 1 | | 1 (0)| 00:00:01 |
|* 25 | INDEX UNIQUE SCAN | I_MON_MODS_ALL$_OBJ | 1 | 4 | 0 (0)| 00:00:01 |
|* 26 | INDEX RANGE SCAN | I_OBJ1 | 1 | 5 | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
7 - access("O"."OWNER#"="U"."USER#" AND "O"."NAME"='TAB$')
8 - access("O"."OBJ#"="M"."OBJ#")
10 - access("O"."OBJ#"="T"."OBJ#")
14 - access("O"."OWNER#"="U"."USER#" AND "O"."NAME"='TAB$' AND "O"."TYPE#"=19)
filter("O"."TYPE#"=19)
15 - access("O"."OBJ#"="M"."OBJ#")
23 - filter("O"."NAME"='TAB$')
24 - access("O"."OBJ#"="TSP"."OBJ#" AND "O"."OWNER#"="U"."USER#")
25 - access("O"."OBJ#"="M"."OBJ#")
26 - access("O2"."OBJ#"="TSP"."POBJ#")
统计信息
----------------------------------------------------------
8 recursive calls
0 db block gets
302 consistent gets
110 physical reads
64 redo size
427 bytes sent via SQL*Net to client
415 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> select * from dba_tab_modifications where table_name='TAB$';
未选定行
执行计划
----------------------------------------------------------
Plan hash value: 4078897460
---------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes| Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4 | 472| 113 (1)| 00:00:02 |
|* 1 | HASH JOIN | | 4 | 472| 113 (1)| 00:00:02 |
|* 2 | HASH JOIN | | 4 | 380| 111 (1)| 00:00:02 |
| 3 | VIEW | VW_JF_SET$35EDC1EA | 4 | 308| 107 (0)| 00:00:02 |
| 4 | UNION-ALL | | | | | |
| 5 | NESTED LOOPS | | 2 | 78| 52 (0)| 00:00:01 |
|* 6 | INDEX SKIP SCAN | I_OBJ2 | 2 | 68| 51 (0)| 00:00:01 |
| 7 | TABLE ACCESS CLUSTER | TAB$ | 1 | 5| 1 (0)| 00:00:01 |
|* 8 | INDEX UNIQUE SCAN | I_OBJ# | 1 | | 0 (0)| 00:00:01 |
|* 9 | INDEX SKIP SCAN | I_OBJ2 | 1 | 40| 51 (0)| 00:00:01 |
| 10 | NESTED LOOPS | | | | | |
| 11 | NESTED LOOPS | | 1 | 69| 4 (0)| 00:00:01 |
| 12 | NESTED LOOPS | | 1 | 62| 3 (0)| 00:00:01 |
| 13 | TABLE ACCESS FULL | TABSUBPART$ | 1 | 26| 2 (0)| 00:00:01 |
|* 14 | TABLE ACCESS BY INDEX ROWID| OBJ$ | 1 | 36| 1 (0)| 00:00:01 |
|* 15 | INDEX RANGE SCAN | I_OBJ1 | 1 | | 1 (0)| 00:00:01 |
|* 16 | INDEX RANGE SCAN | I_OBJ1 | 1 | | 1 (0)| 00:00:01 |
| 17 | TABLE ACCESS BY INDEX ROWID | OBJ$ | 1 | 7| 1 (0)| 00:00:01 |
| 18 | TABLE ACCESS FULL | USER$ | 43 | 774| 3 (0)| 00:00:01 |
| 19 | TABLE ACCESS FULL | MON_MODS_ALL$ | 68 | 1564| 2 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("ITEM_2"="M"."OBJ#")
2 - access("ITEM_1"="U"."USER#")
6 - access("O"."NAME"='TAB$')
filter("O"."NAME"='TAB$')
8 - access("O"."OBJ#"="T"."OBJ#")
9 - access("O"."NAME"='TAB$' AND "O"."TYPE#"=19)
filter("O"."NAME"='TAB$' AND "O"."TYPE#"=19)
14 - filter("O"."NAME"='TAB$')
15 - access("O"."OBJ#"="TSP"."OBJ#")
16 - access("O2"."OBJ#"="TSP"."POBJ#")
统计信息
----------------------------------------------------------
856 recursive calls
0 db block gets
343 consistent gets
0 physical reads
0 redo size
871 bytes sent via SQL*Net to client
404 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
22 sorts (memory)
0 sorts (disk)
0 rows processed[/font]看起来很类似于data block与index block不符的情况,重建一下index I_MON_MODS_ALL$_OBJ试试看
CODE:
[font=宋体]SQL> drop index I_MON_MODS_ALL$_OBJ;
索引已删除。
--c1001000.sql文件中有这个索引的定义
SQL> create unique index i_mon_mods_all$_obj on mon_mods_all$(obj#)
2 storage (maxextents unlimited)
3 /
索引已创建。
SQL> set autot off
SQL> select table_name from dba_tab_modifications where table_name='TAB$';
TABLE_NAME
------------------------------
TAB$
SQL> select * from dba_tab_modifications where table_name='TAB$';
未选定行[/font]还是不行
CODE:
[font=宋体]SQL> select /*+ gather_plan_statistics */ * from dba_tab_modificationS where tab
le_name='TAB$';
未选定行
SQL> select * from table(dbms_xplan.display_cursor(null,0,'ALL IOSTATS LAST'));
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID agc1pu4skkrn8, child number 1
-------------------------------------
select /*+ gather_plan_statistics */ * from dba_tab_modificationS where
table_name='TAB$'
Plan hash value: 3953559329
---------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 161 (100)| | 0 |00:00:00.01 | 55 |
|* 1 | HASH JOIN | | 1 | 4 | 472 | 161 (1)| 00:00:02 | 0 |00:00:00.01 | 55 |
|* 2 | HASH JOIN | | 1 | 4 | 380 | 159 (1)| 00:00:02 | 1 |00:00:00.01 | 52 |
| 3 | VIEW | VW_JF_SET$35EDC1EA | 1 | 4 | 308 | 155 (0)| 00:00:02 | 1 |00:00:00.01 | 47 |
| 4 | UNION-ALL | | 1 | | | | | 1 |00:00:00.01 | 47 |
| 5 | NESTED LOOPS | | 1 | 2 | 78 | 52 (0)| 00:00:01 | 1 |00:00:00.01 | 18 |
|* 6 | INDEX SKIP SCAN | I_OBJ2 | 1 | 2 | 68 | 51 (0)| 00:00:01 | 1 |00:00:00.01 | 14 |
| 7 | TABLE ACCESS CLUSTER | TAB$ | 1 | 1 | 5 | 1 (0)| 00:00:01 | 1 |00:00:00.01 | 4 |
|* 8 | INDEX UNIQUE SCAN | I_OBJ# | 1 | 1 | | 0 (0)| | 1 |00:00:00.01 | 2 |
|* 9 | INDEX SKIP SCAN | I_OBJ2 | 1 | 1 | 40 | 51 (0)| 00:00:01 | 0 |00:00:00.01 | 14 |
| 10 | NESTED LOOPS | | 1 | | | | | 0 |00:00:00.01 | 15 |
| 11 | NESTED LOOPS | | 1 | 1 | 69 | 52 (0)| 00:00:01 | 0 |00:00:00.01 | 15 |
| 12 | NESTED LOOPS | | 1 | 1 | 62 | 51 (0)| 00:00:01 | 0 |00:00:00.01 | 15 |
|* 13 | INDEX SKIP SCAN | I_OBJ2 | 1 | 2 | 72 | 51 (0)| 00:00:01 | 1 |00:00:00.01 | 14 |
| 14 | TABLE ACCESS BY INDEX ROWID| TABSUBPART$ | 1 | 1 | 26 | 0 (0)| | 0 |00:00:00.01 | 1 |
|* 15 | INDEX UNIQUE SCAN | I_TABSUBPART$_OBJ$ | 1 | 1 | | 0 (0)| | 0 |00:00:00.01 | 1 |
|* 16 | INDEX RANGE SCAN | I_OBJ1 | 0 | 1 | | 1 (0)| 00:00:01 | 0 |00:00:00.01 | 0 |
| 17 | TABLE ACCESS BY INDEX ROWID | OBJ$ | 0 | 1 | 7 | 1 (0)| 00:00:01 | 0 |00:00:00.01 | 0 |
| 18 | TABLE ACCESS FULL | USER$ | 1 | 43 | 774 | 3 (0)| 00:00:01 | 46 |00:00:00.01 | 5 |
| 19 | TABLE ACCESS FULL | MON_MODS_ALL$ | 1 | 68 | 1564 | 2 (0)| 00:00:01 | 60 |00:00:00.01 | 3 |
---------------------------------------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$4CC7D0F8
3 - SET$35EDC1EA / VW_JF_SET$35EDC1EA@SEL$A33807FD
4 - SET$35EDC1EA
5 - SEL$61D13A11
6 - SEL$61D13A11 / O@SEL$2
7 - SEL$61D13A11 / T@SEL$2
8 - SEL$61D13A11 / T@SEL$2
9 - SEL$61BB150F / O@SEL$3
10 - SEL$5962AF70
13 - SEL$5962AF70 / O@SEL$4
14 - SEL$5962AF70 / TSP@SEL$4
15 - SEL$5962AF70 / TSP@SEL$4
16 - SEL$5962AF70 / O2@SEL$4
17 - SEL$5962AF70 / O2@SEL$4
18 - SEL$4CC7D0F8 / U@SEL$2
19 - SEL$4CC7D0F8 / M@SEL$2
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("ITEM_2"="M"."OBJ#")
2 - access("ITEM_1"="U"."USER#")
6 - access("O"."NAME"='TAB$')
filter("O"."NAME"='TAB$')
8 - access("O"."OBJ#"="T"."OBJ#")
9 - access("O"."NAME"='TAB$' AND "O"."TYPE#"=19)
filter(("O"."NAME"='TAB$' AND "O"."TYPE#"=19))
13 - access("O"."NAME"='TAB$')
filter("O"."NAME"='TAB$')
15 - access("O"."OBJ#"="TSP"."OBJ#")
16 - access("O2"."OBJ#"="TSP"."POBJ#")
Column Projection Information (identified by operation id):
-----------------------------------------------------------
1 - (#keys=1) "U"."NAME"[VARCHAR2,30], "ITEM_5"[VARCHAR2,30], "ITEM_3"[VARCHAR2,30], "ITEM_4"[VARCHAR2,30],
"M"."DROP_SEGMENTS"[NUMBER,22], "M"."INSERTS"[NUMBER,22], "M"."UPDATES"[NUMBER,22], "M"."DELETES"[NUMBER,22], "M"."TIMESTAMP"[DATE,7],
"M"."FLAGS"[NUMBER,22]
2 - (#keys=1) "ITEM_2"[NUMBER,22], "ITEM_5"[VARCHAR2,30], "ITEM_3"[VARCHAR2,30], "ITEM_4"[VARCHAR2,30], "U"."NAME"[VARCHAR2,30]
3 - "ITEM_2"[NUMBER,22], "ITEM_1"[NUMBER,22], "ITEM_3"[VARCHAR2,30], "ITEM_4"[VARCHAR2,30], "ITEM_5"[VARCHAR2,30]
4 - STRDEF[22], STRDEF[22], STRDEF[30], STRDEF[30], STRDEF[30]
5 - "O"."OBJ#"[NUMBER,22], "O"."OWNER#"[NUMBER,22], "O"."NAME"[VARCHAR2,30]
6 - "O"."OBJ#"[NUMBER,22], "O"."OWNER#"[NUMBER,22], "O"."NAME"[VARCHAR2,30]
7 - "T".ROWID[ROWID,10], "T"."OBJ#"[NUMBER,22]
8 - "T".ROWID[ROWID,10]
9 - "O"."OBJ#"[NUMBER,22], "O"."OWNER#"[NUMBER,22], "O"."NAME"[VARCHAR2,30],"O"."SUBNAME"[VARCHAR2,30]
10 - "O"."OBJ#"[NUMBER,22], "O"."OWNER#"[NUMBER,22], "O"."NAME"[VARCHAR2,30],"O"."SUBNAME"[VARCHAR2,30], "O2"."SUBNAME"[VARCHAR2,30]
11 - "O"."OBJ#"[NUMBER,22], "O"."OWNER#"[NUMBER,22], "O"."NAME"[VARCHAR2,30],"O"."SUBNAME"[VARCHAR2,30], "O2".ROWID[ROWID,10]
12 - "O"."OBJ#"[NUMBER,22], "O"."OWNER#"[NUMBER,22], "O"."NAME"[VARCHAR2,30],"O"."SUBNAME"[VARCHAR2,30], "TSP"."POBJ#"[NUMBER,22]
13 - "O"."OBJ#"[NUMBER,22], "O"."OWNER#"[NUMBER,22], "O"."NAME"[VARCHAR2,30],"O"."SUBNAME"[VARCHAR2,30]
14 - "TSP"."POBJ#"[NUMBER,22]
15 - "TSP".ROWID[ROWID,10]
16 - "O2".ROWID[ROWID,10]
17 - "O2"."SUBNAME"[VARCHAR2,30]
18 - "U"."USER#"[NUMBER,22], "U"."NAME"[VARCHAR2,30]
19 - "M"."OBJ#"[NUMBER,22], "M"."INSERTS"[NUMBER,22], "M"."UPDATES"[NUMBER,22], "M"."DELETES"[NUMBER,22], "M"."TIMESTAMP"[DATE,7],
"M"."FLAGS"[NUMBER,22], "M"."DROP_SEGMENTS"[NUMBER,22]
Note
-----
- cardinality feedback used for this statement
已选择97行。[/font]可以看出,在步骤1的HASH_JOIN时,数据没有了,并且应该是MON_MODS_ALL$的全表扫描的问题?
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19423/viewspace-663740/
,如需转载,请注明出处,否则将追究法律责任。