Oracle查询dba_extents视图很慢

问题描述

下边这条SQL查询每次大概要花1分钟左右,实在是比较异常。

  1. select owner,tablespace_name from dba_extents where segment_name='AUD$' group by owner,tablespace_name;

测试分析

先实际跑完一遍,去详细的执行信息。

模板复制:

  1. set pagesize 9999 long 9999 line 500
  2. alter session set statistics_level=all;
  3. select owner,tablespace_name from dba_extents where segment_name='AUD$' group by owner,tablespace_name;
  4. select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));

执行时间如下:

  1. 20:25:06 SYS@anonymous> set pagesize 9999 long 9999 line 500
  2. 20:25:15 SYS@anonymous> alter session set statistics_level=all;
  3.  
  4. Session altered.
  5.  
  6. Elapsed: 00:00:00.00
  7. 20:26:33 SYS@anonymous> select owner,tablespace_name from dba_extents where segment_name='AUD$' group by owner,tablespace_name;
  8.  
  9. OWNER TABLESPACE_NAME
  10. ------------------------------ ------------------------------
  11. SYS SYSTEM
  12.  
  13. Elapsed: 00:01:01.87

获取执行计划:

  1. 20:27:48 SYS@anonymous> select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));
  2.  
  3. PLAN_TABLE_OUTPUT
  4. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  5. SQL_ID dggb0d96bj8dy, child number 4
  6. -------------------------------------
  7. select owner,tablespace_name from dba_extents where segment_name='AUD$'
  8. group by owner,tablespace_name
  9.  
  10. Plan hash value: 1482657742
  11.  
  12. ------------------------------------------------------------------------------------------------------------------------------------------------------------
  13. | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | OMem | 1Mem | Used-Mem |
  14. ------------------------------------------------------------------------------------------------------------------------------------------------------------
  15. | 0 | SELECT STATEMENT | | 1 | | 1 |00:01:01.87 | 190K| 7157 | | | |
  16. | 1 | HASH GROUP BY | | 1 | 543K| 1 |00:01:01.87 | 190K| 7157 | 2331K| 2194K| 435K (0)|
  17. | 2 | VIEW | DBA_EXTENTS | 1 | 543K| 259 |00:01:01.87 | 190K| 7157 | | | |
  18. | 3 | UNION-ALL | | 1 | | 259 |00:01:01.87 | 190K| 7157 | | | |
  19. | 4 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 310 | 0 | | | |
  20. | 5 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 310 | 0 | | | |
  21. | 6 | TABLE ACCESS FULL | UET$ | 1 | 1 | 0 |00:00:00.01 | 310 | 0 | | | |
  22. |* 7 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  23. | 8 | VIEW | SYS_DBA_SEGS | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  24. | 9 | UNION ALL PUSHED PREDICATE | | 0 | | 0 |00:00:00.01 | 0 | 0 | | | |
  25. | 10 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  26. | 11 | NESTED LOOPS OUTER | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  27. | 12 | MERGE JOIN CARTESIAN | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  28. | 13 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  29. | 14 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  30. |* 15 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  31. | 16 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  32. |* 17 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  33. |* 18 | TABLE ACCESS CLUSTER | SEG$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  34. |* 19 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  35. | 20 | BUFFER SORT | | 0 | 2 | 0 |00:00:00.01 | 0 | 0 | 73728 | 73728 | |
  36. |* 21 | INDEX SKIP SCAN | I_OBJ2 | 0 | 2 | 0 |00:00:00.01 | 0 | 0 | | | |
  37. | 22 | TABLE ACCESS CLUSTER | USER$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  38. |* 23 | INDEX UNIQUE SCAN | I_USER# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  39. |* 24 | VIEW | SYS_OBJECTS | 0 | 5 | 0 |00:00:00.01 | 0 | 0 | | | |
  40. | 25 | UNION ALL PUSHED PREDICATE | | 0 | | 0 |00:00:00.01 | 0 | 0 | | | |
  41. |* 26 | TABLE ACCESS CLUSTER | TAB$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  42. |* 27 | INDEX UNIQUE SCAN | I_OBJ# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  43. |* 28 | TABLE ACCESS BY INDEX ROWID | TABPART$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  44. |* 29 | INDEX UNIQUE SCAN | I_TABPART_OBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  45. |* 30 | TABLE ACCESS CLUSTER | CLU$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  46. |* 31 | INDEX UNIQUE SCAN | I_OBJ# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  47. |* 32 | TABLE ACCESS BY INDEX ROWID | IND$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  48. |* 33 | INDEX UNIQUE SCAN | I_IND1 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  49. |* 34 | TABLE ACCESS BY INDEX ROWID | INDPART$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  50. |* 35 | INDEX UNIQUE SCAN | I_INDPART_OBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  51. |* 36 | TABLE ACCESS BY INDEX ROWID | LOB$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  52. |* 37 | INDEX UNIQUE SCAN | I_LOB2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  53. |* 38 | TABLE ACCESS BY INDEX ROWID | TABSUBPART$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  54. |* 39 | INDEX UNIQUE SCAN | I_TABSUBPART$_OBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  55. |* 40 | TABLE ACCESS BY INDEX ROWID | INDSUBPART$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  56. |* 41 | INDEX UNIQUE SCAN | I_INDSUBPART_OBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  57. |* 42 | TABLE ACCESS BY INDEX ROWID | LOBFRAG$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  58. |* 43 | INDEX UNIQUE SCAN | I_LOBFRAG$_FRAGOBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  59. | 44 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  60. | 45 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  61. | 46 | NESTED LOOPS OUTER | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  62. | 47 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  63. | 48 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  64. |* 49 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  65. | 50 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  66. |* 51 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  67. |* 52 | TABLE ACCESS CLUSTER | SEG$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  68. |* 53 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  69. | 54 | TABLE ACCESS CLUSTER | USER$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  70. |* 55 | INDEX UNIQUE SCAN | I_USER# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  71. |* 56 | INDEX RANGE SCAN | I_UNDO2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  72. |* 57 | TABLE ACCESS BY INDEX ROWID | UNDO$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  73. | 58 | NESTED LOOPS OUTER | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  74. | 59 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  75. | 60 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  76. | 61 | TABLE ACCESS BY INDEX ROWID | FILE$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  77. |* 62 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  78. | 63 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  79. |* 64 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  80. |* 65 | TABLE ACCESS CLUSTER | SEG$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  81. |* 66 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  82. | 67 | TABLE ACCESS CLUSTER | USER$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  83. |* 68 | INDEX UNIQUE SCAN | I_USER# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  84. |* 69 | HASH JOIN | | 1 | 543K| 259 |00:01:01.87 | 190K| 7157 | 1214K| 1214K| 709K (0)|
  85. |* 70 | HASH JOIN | | 1 | 20549 | 1 |00:00:00.33 | 138K| 0 | 1969K| 1969K| 1531K (0)|
  86. | 71 | INDEX FULL SCAN | I_FILE2 | 1 | 106 | 108 |00:00:00.01 | 1 | 0 | | | |
  87. | 72 | VIEW | SYS_DBA_SEGS | 1 | 6785 | 1 |00:00:00.33 | 138K| 0 | | | |
  88. | 73 | UNION-ALL | | 1 | | 1 |00:00:00.33 | 138K| 0 | | | |
  89. | 74 | NESTED LOOPS | | 1 | 6783 | 1 |00:00:00.32 | 137K| 0 | | | |
  90. | 75 | NESTED LOOPS OUTER | | 1 | 2 | 10578 |00:00:00.10 | 21543 | 0 | | | |
  91. | 76 | MERGE JOIN CARTESIAN | | 1 | 2 | 10578 |00:00:00.07 | 10961 | 0 | | | |
  92. | 77 | NESTED LOOPS | | 1 | 1 | 10578 |00:00:00.06 | 10896 | 0 | | | |
  93. | 78 | NESTED LOOPS | | 1 | 1 | 10578 |00:00:00.03 | 314 | 0 | | | |
  94. |* 79 | TABLE ACCESS FULL | SEG$ | 1 | 1 | 10578 |00:00:00.02 | 310 | 0 | | | |
  95. |* 80 | INDEX UNIQUE SCAN | I_FILE2 | 10578 | 1 | 10578 |00:00:00.01 | 4 | 0 | | | |
  96. | 81 | TABLE ACCESS CLUSTER | TS$ | 10578 | 1 | 10578 |00:00:00.02 | 10582 | 0 | | | |
  97. |* 82 | INDEX UNIQUE SCAN | I_TS# | 10578 | 1 | 10578 |00:00:00.01 | 4 | 0 | | | |
  98. | 83 | BUFFER SORT | | 10578 | 2 | 10578 |00:00:00.01 | 65 | 0 | 2048 | 2048 | 2048 (0)|
  99. |* 84 | INDEX SKIP SCAN | I_OBJ2 | 1 | 2 | 1 |00:00:00.01 | 65 | 0 | | | |
  100. | 85 | TABLE ACCESS CLUSTER | USER$ | 10578 | 1 | 10578 |00:00:00.02 | 10582 | 0 | | | |
  101. |* 86 | INDEX UNIQUE SCAN | I_USER# | 10578 | 1 | 10578 |00:00:00.01 | 4 | 0 | | | |
  102. |* 87 | VIEW | SYS_OBJECTS | 10578 | 2 | 1 |00:00:00.22 | 116K| 0 | | | |
  103. | 88 | UNION ALL PUSHED PREDICATE | | 10578 | | 10578 |00:00:00.21 | 116K| 0 | | | |
  104. |* 89 | TABLE ACCESS CLUSTER | TAB$ | 10578 | 1 | 10578 |00:00:00.03 | 21161 | 0 | | | |
  105. |* 90 | INDEX UNIQUE SCAN | I_OBJ# | 10578 | 1 | 10578 |00:00:00.01 | 10583 | 0 | | | |
  106. | 91 | TABLE ACCESS BY INDEX ROWID | TABPART$ | 10578 | 1 | 0 |00:00:00.01 | 10583 | 0 | | | |
  107. |* 92 | INDEX UNIQUE SCAN | I_TABPART_OBJ$ | 10578 | 1 | 0 |00:00:00.01 | 10583 | 0 | | | |
  108. | 93 | TABLE ACCESS CLUSTER | CLU$ | 10578 | 1 | 0 |00:00:00.02 | 21161 | 0 | | | |
  109. |* 94 | INDEX UNIQUE SCAN | I_OBJ# | 10578 | 1 | 10578 |00:00:00.01 | 10583 | 0 | | | |
  110. |* 95 | TABLE ACCESS BY INDEX ROWID | IND$ | 10578 | 1 | 0 |00:00:00.01 | 10583 | 0 | | | |
  111. |* 96 | INDEX UNIQUE SCAN | I_IND1 | 10578 | 1 | 0 |00:00:00.01 | 10583 | 0 | | | |
  112. | 97 | TABLE ACCESS BY INDEX ROWID | INDPART$ | 10578 | 1 | 0 |00:00:00.01 | 10578 | 0 | | | |
  113. |* 98 | INDEX UNIQUE SCAN | I_INDPART_OBJ$ | 10578 | 1 | 0 |00:00:00.01 | 10578 | 0 | | | |
  114. |* 99 | TABLE ACCESS BY INDEX ROWID | LOB$ | 10578 | 1 | 0 |00:00:00.01 | 10583 | 0 | | | |
  115. |*100 | INDEX UNIQUE SCAN | I_LOB2 | 10578 | 1 | 0 |00:00:00.01 | 10583 | 0 | | | |
  116. | 101 | TABLE ACCESS BY INDEX ROWID | TABSUBPART$ | 10578 | 1 | 0 |00:00:00.01 | 10578 | 0 | | | |
  117. |*102 | INDEX UNIQUE SCAN | I_TABSUBPART$_OBJ$ | 10578 | 1 | 0 |00:00:00.01 | 10578 | 0 | | | |
  118. | 103 | TABLE ACCESS BY INDEX ROWID | INDSUBPART$ | 10578 | 1 | 0 |00:00:00.01 | 10578 | 0 | | | |
  119. |*104 | INDEX UNIQUE SCAN | I_INDSUBPART_OBJ$ | 10578 | 1 | 0 |00:00:00.01 | 10578 | 0 | | | |
  120. | 105 | TABLE ACCESS BY INDEX ROWID | LOBFRAG$ | 10578 | 1 | 0 |00:00:00.01 | 10578 | 0 | | | |
  121. |*106 | INDEX UNIQUE SCAN | I_LOBFRAG$_FRAGOBJ$ | 10578 | 1 | 0 |00:00:00.01 | 10578 | 0 | | | |
  122. | 107 | NESTED LOOPS OUTER | | 1 | 1 | 0 |00:00:00.01 | 2 | 0 | | | |
  123. | 108 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 2 | 0 | | | |
  124. | 109 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 2 | 0 | | | |
  125. | 110 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 2 | 0 | | | |
  126. |*111 | TABLE ACCESS BY INDEX ROWID| UNDO$ | 1 | 1 | 0 |00:00:00.01 | 2 | 0 | | | |
  127. |*112 | INDEX RANGE SCAN | I_UNDO2 | 1 | 1 | 0 |00:00:00.01 | 2 | 0 | | | |
  128. |*113 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  129. |*114 | TABLE ACCESS CLUSTER | SEG$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  130. |*115 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  131. | 116 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  132. |*117 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  133. | 118 | TABLE ACCESS CLUSTER | USER$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  134. |*119 | INDEX UNIQUE SCAN | I_USER# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  135. | 120 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 310 | 0 | | | |
  136. | 121 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 310 | 0 | | | |
  137. | 122 | NESTED LOOPS OUTER | | 1 | 1 | 0 |00:00:00.01 | 310 | 0 | | | |
  138. | 123 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 310 | 0 | | | |
  139. |*124 | TABLE ACCESS FULL | SEG$ | 1 | 1 | 0 |00:00:00.01 | 310 | 0 | | | |
  140. | 125 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  141. |*126 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  142. | 127 | TABLE ACCESS CLUSTER | USER$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  143. |*128 | INDEX UNIQUE SCAN | I_USER# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  144. |*129 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  145. |*130 | TABLE ACCESS BY INDEX ROWID | FILE$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  146. | 131 | FIXED TABLE FULL | X$KTFBUE | 1 | 100K| 723K|00:01:01.20 | 52350 | 7157 | | | |
  147. ------------------------------------------------------------------------------------------------------------------------------------------------------------
  148.  
  149. Predicate Information (identified by operation id):
  150. ---------------------------------------------------
  151.  
  152. 7 - access("E"."TS#"="F"."TS#" AND "E"."FILE#"="F"."RELFILE#")
  153. 15 - access("F"."TS#"="E"."TS#" AND "F"."RELFILE#"="E"."SEGFILE#")
  154. 17 - access("TS"."TS#"="E"."TS#")
  155. 18 - filter((BITAND(NVL("S"."SPARE1",0),1)=0 AND BITAND(NVL("S"."SPARE1",0),65536)=0))
  156. 19 - access("S"."TS#"="E"."TS#" AND "S"."FILE#"="E"."SEGFILE#" AND "S"."BLOCK#"="E"."SEGBLOCK#")
  157. filter(("S"."TS#"="TS"."TS#" AND "S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#"))
  158. 21 - access("O"."NAME"='AUD$')
  159. filter("O"."NAME"='AUD$')
  160. 23 - access("O"."OWNER#"="U"."USER#")
  161. 24 - filter(("S"."FILE#"="SO"."HEADER_FILE" AND "S"."BLOCK#"="SO"."HEADER_BLOCK" AND "S"."TS#"="SO"."TS_NUMBER" AND
  162. "S"."TYPE#"="SO"."SEGMENT_TYPE_ID" AND "O"."TYPE#"="SO"."OBJECT_TYPE_ID"))
  163. 26 - filter(("T"."BLOCK#"="E"."SEGBLOCK#" AND "T"."FILE#"="E"."SEGFILE#" AND "T"."TS#"="E"."TS#" AND BITAND("T"."PROPERTY",1024)=0))
  164. 27 - access("T"."OBJ#"="O"."OBJ#")
  165. 28 - filter(("TP"."BLOCK#"="E"."SEGBLOCK#" AND "TP"."FILE#"="E"."SEGFILE#" AND "TP"."TS#"="E"."TS#"))
  166. 29 - access("TP"."OBJ#"="O"."OBJ#")
  167. 30 - filter(("C"."BLOCK#"="E"."SEGBLOCK#" AND "C"."FILE#"="E"."SEGFILE#" AND "C"."TS#"="E"."TS#"))
  168. 31 - access("C"."OBJ#"="O"."OBJ#")
  169. 32 - filter(("I"."BLOCK#"="E"."SEGBLOCK#" AND "I"."FILE#"="E"."SEGFILE#" AND "I"."TS#"="E"."TS#" AND INTERNAL_FUNCTION("I"."TYPE#")))
  170. 33 - access("I"."OBJ#"="O"."OBJ#")
  171. 34 - filter(("IP"."BLOCK#"="E"."SEGBLOCK#" AND "IP"."FILE#"="E"."SEGFILE#" AND "IP"."TS#"="E"."TS#"))
  172. 35 - access("IP"."OBJ#"="O"."OBJ#")
  173. 36 - filter(("L"."BLOCK#"="E"."SEGBLOCK#" AND "L"."FILE#"="E"."SEGFILE#" AND "L"."TS#"="E"."TS#" AND (BITAND("L"."PROPERTY",64)=0 OR
  174. BITAND("L"."PROPERTY",128)=128)))
  175. 37 - access("L"."LOBJ#"="O"."OBJ#")
  176. 38 - filter(("TSP"."BLOCK#"="E"."SEGBLOCK#" AND "TSP"."FILE#"="E"."SEGFILE#" AND "TSP"."TS#"="E"."TS#"))
  177. 39 - access("TSP"."OBJ#"="O"."OBJ#")
  178. 40 - filter(("ISP"."FILE#"="E"."SEGFILE#" AND "ISP"."BLOCK#"="E"."SEGBLOCK#" AND "ISP"."TS#"="E"."TS#"))
  179. 41 - access("ISP"."OBJ#"="O"."OBJ#")
  180. 42 - filter(("LF"."BLOCK#"="E"."SEGBLOCK#" AND "LF"."FILE#"="E"."SEGFILE#" AND "LF"."TS#"="E"."TS#"))
  181. 43 - access("LF"."FRAGOBJ#"="O"."OBJ#")
  182. 49 - access("F"."TS#"="E"."TS#" AND "F"."RELFILE#"="E"."SEGFILE#")
  183. 51 - access("TS"."TS#"="E"."TS#")
  184. 52 - filter((INTERNAL_FUNCTION("S"."TYPE#") AND BITAND(NVL("S"."SPARE1",0),1)=0 AND BITAND(NVL("S"."SPARE1",0),65536)=0))
  185. 53 - access("S"."TS#"="E"."TS#" AND "S"."FILE#"="E"."SEGFILE#" AND "S"."BLOCK#"="E"."SEGBLOCK#")
  186. filter("S"."TS#"="TS"."TS#")
  187. 55 - access("S"."USER#"="U"."USER#")
  188. 56 - access("UN"."NAME"='AUD$')
  189. 57 - filter(("UN"."BLOCK#"="E"."SEGBLOCK#" AND "UN"."FILE#"="E"."SEGFILE#" AND "UN"."TS#"="E"."TS#" AND "UN"."STATUS$"<>1 AND
  190. "S"."FILE#"="UN"."FILE#" AND "S"."BLOCK#"="UN"."BLOCK#" AND "S"."TS#"="UN"."TS#" AND "UN"."TS#"="F"."TS#" AND "UN"."FILE#"="F"."RELFILE#"))
  191. 62 - access("F"."TS#"="E"."TS#" AND "F"."RELFILE#"="E"."SEGFILE#")
  192. 64 - access("TS"."TS#"="E"."TS#")
  193. 65 - filter(("S"."TYPE#"<>6 AND "S"."TYPE#"<>5 AND "S"."TYPE#"<>8 AND BITAND(NVL("S"."SPARE1",0),1)=0 AND BITAND(NVL("S"."SPARE1",0),65536)=0 AND
  194. "S"."TYPE#"<>10 AND "S"."TYPE#"<>1))
  195. 66 - access("S"."TS#"="E"."TS#" AND "S"."FILE#"="E"."SEGFILE#" AND "S"."BLOCK#"="E"."SEGBLOCK#")
  196. filter(("S"."TS#"="TS"."TS#" AND "S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#" AND
  197. TO_CHAR("F"."FILE#")||'.'||TO_CHAR("S"."BLOCK#")='AUD$'))
  198. 68 - access("S"."USER#"="U"."USER#")
  199. 69 - access("E"."KTFBUESEGFNO"="DS"."RELATIVE_FNO" AND "E"."KTFBUESEGBNO"="DS"."HEADER_BLOCK" AND "E"."KTFBUESEGTSN"="DS"."TABLESPACE_ID" AND
  200. "E"."KTFBUEFNO"="F"."RELFILE#")
  201. 70 - access("DS"."TABLESPACE_ID"="F"."TS#")
  202. 79 - filter((BITAND(NVL("S"."SPARE1",0),1)=1 AND BITAND(NVL("S"."SPARE1",0),65536)=0))
  203. 80 - access("S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#")
  204. 82 - access("S"."TS#"="TS"."TS#")
  205. 84 - access("O"."NAME"='AUD$')
  206. filter("O"."NAME"='AUD$')
  207. 86 - access("O"."OWNER#"="U"."USER#")
  208. 87 - filter(("S"."FILE#"="SO"."HEADER_FILE" AND "S"."BLOCK#"="SO"."HEADER_BLOCK" AND "S"."TS#"="SO"."TS_NUMBER" AND
  209. "S"."TYPE#"="SO"."SEGMENT_TYPE_ID" AND "O"."TYPE#"="SO"."OBJECT_TYPE_ID"))
  210. 89 - filter(BITAND("T"."PROPERTY",1024)=0)
  211. 90 - access("T"."OBJ#"="O"."OBJ#")
  212. 92 - access("TP"."OBJ#"="O"."OBJ#")
  213. 94 - access("C"."OBJ#"="O"."OBJ#")
  214. 95 - 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
  215. "I"."TYPE#"=9))
  216. 96 - access("I"."OBJ#"="O"."OBJ#")
  217. 98 - access("IP"."OBJ#"="O"."OBJ#")
  218. 99 - filter((BITAND("L"."PROPERTY",64)=0 OR BITAND("L"."PROPERTY",128)=128))
  219. 100 - access("L"."LOBJ#"="O"."OBJ#")
  220. 102 - access("TSP"."OBJ#"="O"."OBJ#")
  221. 104 - access("ISP"."OBJ#"="O"."OBJ#")
  222. 106 - access("LF"."FRAGOBJ#"="O"."OBJ#")
  223. 111 - filter("UN"."STATUS$"<>1)
  224. 112 - access("UN"."NAME"='AUD$')
  225. 113 - access("UN"."TS#"="F"."TS#" AND "UN"."FILE#"="F"."RELFILE#")
  226. 114 - filter((INTERNAL_FUNCTION("S"."TYPE#") AND BITAND(NVL("S"."SPARE1",0),1)=1 AND BITAND(NVL("S"."SPARE1",0),65536)=0))
  227. 115 - access("S"."TS#"="UN"."TS#" AND "S"."FILE#"="UN"."FILE#" AND "S"."BLOCK#"="UN"."BLOCK#")
  228. 117 - access("S"."TS#"="TS"."TS#")
  229. 119 - access("S"."USER#"="U"."USER#")
  230. 124 - filter(("S"."TYPE#"<>6 AND "S"."TYPE#"<>5 AND "S"."TYPE#"<>8 AND BITAND(NVL("S"."SPARE1",0),1)=1 AND BITAND(NVL("S"."SPARE1",0),65536)=0 AND
  231. "S"."TYPE#"<>10 AND "S"."TYPE#"<>1))
  232. 126 - access("S"."TS#"="TS"."TS#")
  233. 128 - access("S"."USER#"="U"."USER#")
  234. 129 - access("S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#")
  235. 130 - filter(TO_CHAR("F"."FILE#")||'.'||TO_CHAR("S"."BLOCK#")='AUD$')
  236.  
  237. 232 rows selected.
  238.  
  239. Elapsed: 00:00:00.10

直接看id=131的那一行,时间都花在对固定表X$KTFBUE的全表扫描上,这个算是Oracle的一个BUG,当该固定表没有统计信息的时候,Oracle不会对他做动态采样,而是直接使用基数为100000的行。

查看索引的信息,固定表的索引有点奇怪:

  1. SYS@zkm1> select * from V$INDEXED_FIXED_COLUMN where table_name='X$KTFBUE';
  2.  
  3. TABLE_NAME INDEX_NUMBER COLUMN_NAME COLUMN_POSITION
  4. ------------------------------ ------------ ------------------------------ ---------------
  5. X$KTFBUE 1 KTFBUESEGBNO 2
  6. X$KTFBUE 1 KTFBUESEGFNO 1
  7. X$KTFBUE 1 KTFBUESEGTSN 0

看不出啥。

百度或者mos上都可以查找到相关的原因和办法。

mos参考文档:Query Against DBA_EXTENTS Performs Slowly After Upgrade to 11.2.0.3 (Doc ID 1453425.1)

这篇文章有提供几种方法。

Gathering stats on the X$KTFBUE table using the following command:
EXEC DBMS_STATS.GATHER_TABLE_STATS('SYS', 'X$KTFBUE');

For more information on gathering fixed table statistics see:
Document 798257.1 GATHER_FIXED_OBJECTS_STATS Considerations

OR
alter session set "_optimizer_cartesian_enabled" = false;

OR
alter session set "_smm_auto_cost_enabled" = false;

OR
Disable fix for unpublished Bug Bug 11814428: POOR CARDINALITY ESTIMATE FROM JOIN WITH A UNION-ALL VIEW:
alter session set "_FIX_CONTROL" = "11814428:0";

不过只有收集统计信息和最下边的BUG修复关掉才有效。

收集统计信息这个方法略过,因为还有一个表空间查询缓慢的问题和这个是一样的问题。

我们采用另外一种方法,关闭11814428的修复,执行:

  1. 20:30:19 SYS@anonymous> alter session set "_FIX_CONTROL" = "11814428:0";
  2.  
  3. Session altered.
  4.  
  5. Elapsed: 00:00:00.00

之后再次运行变快了:

  1. 20:30:21 SYS@anonymous> select owner,tablespace_name from dba_extents where segment_name='AUD$' group by owner,tablespace_name;
  2.  
  3. OWNER TABLESPACE_NAME
  4. ------------------------------ ------------------------------
  5. SYS SYSTEM
  6.  
  7. Elapsed: 00:00:00.33

可以发现执行计划对X$KTFBUE已经采用了索引:

  1. 20:30:28 SYS@anonymous> select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));
  2.  
  3. PLAN_TABLE_OUTPUT
  4. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  5. SQL_ID dggb0d96bj8dy, child number 5
  6. -------------------------------------
  7. select owner,tablespace_name from dba_extents where segment_name='AUD$'
  8. group by owner,tablespace_name
  9.  
  10. Plan hash value: 381184789
  11.  
  12. ------------------------------------------------------------------------------------------------------------------------------------------------------
  13. | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem |
  14. ------------------------------------------------------------------------------------------------------------------------------------------------------
  15. | 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.01 | 719 | | | |
  16. | 1 | HASH GROUP BY | | 1 | 729 | 1 |00:00:00.01 | 719 | 1646K| 1646K| 497K (0)|
  17. | 2 | VIEW | DBA_EXTENTS | 1 | 729 | 259 |00:00:00.01 | 719 | | | |
  18. | 3 | UNION-ALL | | 1 | | 259 |00:00:00.01 | 719 | | | |
  19. | 4 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 310 | | | |
  20. | 5 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 310 | | | |
  21. | 6 | TABLE ACCESS FULL | UET$ | 1 | 1 | 0 |00:00:00.01 | 310 | | | |
  22. |* 7 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  23. | 8 | VIEW | SYS_DBA_SEGS | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  24. | 9 | UNION ALL PUSHED PREDICATE | | 0 | | 0 |00:00:00.01 | 0 | | | |
  25. | 10 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  26. | 11 | NESTED LOOPS OUTER | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  27. | 12 | MERGE JOIN CARTESIAN | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  28. | 13 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  29. | 14 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  30. |* 15 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  31. | 16 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  32. |* 17 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  33. |* 18 | TABLE ACCESS CLUSTER | SEG$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  34. |* 19 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  35. | 20 | BUFFER SORT | | 0 | 2 | 0 |00:00:00.01 | 0 | 73728 | 73728 | |
  36. |* 21 | INDEX SKIP SCAN | I_OBJ2 | 0 | 2 | 0 |00:00:00.01 | 0 | | | |
  37. | 22 | TABLE ACCESS CLUSTER | USER$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  38. |* 23 | INDEX UNIQUE SCAN | I_USER# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  39. |* 24 | VIEW | SYS_OBJECTS | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  40. | 25 | UNION ALL PUSHED PREDICATE | | 0 | | 0 |00:00:00.01 | 0 | | | |
  41. |* 26 | TABLE ACCESS CLUSTER | TAB$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  42. |* 27 | INDEX UNIQUE SCAN | I_OBJ# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  43. |* 28 | TABLE ACCESS BY INDEX ROWID | TABPART$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  44. |* 29 | INDEX UNIQUE SCAN | I_TABPART_OBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  45. |* 30 | TABLE ACCESS CLUSTER | CLU$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  46. |* 31 | INDEX UNIQUE SCAN | I_OBJ# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  47. |* 32 | TABLE ACCESS BY INDEX ROWID | IND$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  48. |* 33 | INDEX UNIQUE SCAN | I_IND1 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  49. |* 34 | TABLE ACCESS BY INDEX ROWID | INDPART$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  50. |* 35 | INDEX UNIQUE SCAN | I_INDPART_OBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  51. |* 36 | TABLE ACCESS BY INDEX ROWID | LOB$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  52. |* 37 | INDEX UNIQUE SCAN | I_LOB2 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  53. |* 38 | TABLE ACCESS BY INDEX ROWID | TABSUBPART$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  54. |* 39 | INDEX UNIQUE SCAN | I_TABSUBPART$_OBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  55. |* 40 | TABLE ACCESS BY INDEX ROWID | INDSUBPART$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  56. |* 41 | INDEX UNIQUE SCAN | I_INDSUBPART_OBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  57. |* 42 | TABLE ACCESS BY INDEX ROWID | LOBFRAG$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  58. |* 43 | INDEX UNIQUE SCAN | I_LOBFRAG$_FRAGOBJ$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  59. | 44 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  60. | 45 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  61. | 46 | NESTED LOOPS OUTER | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  62. | 47 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  63. | 48 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  64. |* 49 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  65. | 50 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  66. |* 51 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  67. |* 52 | TABLE ACCESS CLUSTER | SEG$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  68. |* 53 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  69. | 54 | TABLE ACCESS CLUSTER | USER$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  70. |* 55 | INDEX UNIQUE SCAN | I_USER# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  71. |* 56 | INDEX RANGE SCAN | I_UNDO2 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  72. |* 57 | TABLE ACCESS BY INDEX ROWID | UNDO$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  73. | 58 | NESTED LOOPS OUTER | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  74. | 59 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  75. | 60 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  76. | 61 | TABLE ACCESS BY INDEX ROWID | FILE$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  77. |* 62 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  78. | 63 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  79. |* 64 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  80. |* 65 | TABLE ACCESS CLUSTER | SEG$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  81. |* 66 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  82. | 67 | TABLE ACCESS CLUSTER | USER$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  83. |* 68 | INDEX UNIQUE SCAN | I_USER# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  84. |* 69 | HASH JOIN | | 1 | 728 | 259 |00:00:00.01 | 409 | 1969K| 1969K| 1497K (0)|
  85. | 70 | INDEX FULL SCAN | I_FILE2 | 1 | 106 | 108 |00:00:00.01 | 1 | | | |
  86. | 71 | NESTED LOOPS | | 1 | 24769 | 259 |00:00:00.01 | 408 | | | |
  87. | 72 | VIEW | SYS_DBA_SEGS | 1 | 3 | 1 |00:00:00.01 | 401 | | | |
  88. | 73 | UNION-ALL | | 1 | | 1 |00:00:00.01 | 401 | | | |
  89. | 74 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 89 | | | |
  90. | 75 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 87 | | | |
  91. | 76 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 86 | | | |
  92. | 77 | NESTED LOOPS OUTER | | 1 | 1 | 1 |00:00:00.01 | 83 | | | |
  93. | 78 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 81 | | | |
  94. |* 79 | INDEX SKIP SCAN | I_OBJ2 | 1 | 2 | 1 |00:00:00.01 | 65 | | | |
  95. |* 80 | VIEW | SYS_OBJECTS | 1 | 1 | 1 |00:00:00.01 | 16 | | | |
  96. | 81 | UNION ALL PUSHED PREDICATE | | 1 | | 1 |00:00:00.01 | 16 | | | |
  97. |* 82 | TABLE ACCESS CLUSTER | TAB$ | 1 | 1 | 1 |00:00:00.01 | 3 | | | |
  98. |* 83 | INDEX UNIQUE SCAN | I_OBJ# | 1 | 1 | 1 |00:00:00.01 | 2 | | | |
  99. | 84 | TABLE ACCESS BY INDEX ROWID| TABPART$ | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  100. |* 85 | INDEX UNIQUE SCAN | I_TABPART_OBJ$ | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  101. | 86 | TABLE ACCESS CLUSTER | CLU$ | 1 | 1 | 0 |00:00:00.01 | 3 | | | |
  102. |* 87 | INDEX UNIQUE SCAN | I_OBJ# | 1 | 1 | 1 |00:00:00.01 | 2 | | | |
  103. |* 88 | TABLE ACCESS BY INDEX ROWID| IND$ | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  104. |* 89 | INDEX UNIQUE SCAN | I_IND1 | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  105. | 90 | TABLE ACCESS BY INDEX ROWID| INDPART$ | 1 | 1 | 0 |00:00:00.01 | 1 | | | |
  106. |* 91 | INDEX UNIQUE SCAN | I_INDPART_OBJ$ | 1 | 1 | 0 |00:00:00.01 | 1 | | | |
  107. |* 92 | TABLE ACCESS BY INDEX ROWID| LOB$ | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  108. |* 93 | INDEX UNIQUE SCAN | I_LOB2 | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  109. | 94 | TABLE ACCESS BY INDEX ROWID| TABSUBPART$ | 1 | 1 | 0 |00:00:00.01 | 1 | | | |
  110. |* 95 | INDEX UNIQUE SCAN | I_TABSUBPART$_OBJ$ | 1 | 1 | 0 |00:00:00.01 | 1 | | | |
  111. | 96 | TABLE ACCESS BY INDEX ROWID| INDSUBPART$ | 1 | 1 | 0 |00:00:00.01 | 1 | | | |
  112. |* 97 | INDEX UNIQUE SCAN | I_INDSUBPART_OBJ$ | 1 | 1 | 0 |00:00:00.01 | 1 | | | |
  113. | 98 | TABLE ACCESS BY INDEX ROWID| LOBFRAG$ | 1 | 1 | 0 |00:00:00.01 | 1 | | | |
  114. |* 99 | INDEX UNIQUE SCAN | I_LOBFRAG$_FRAGOBJ$ | 1 | 1 | 0 |00:00:00.01 | 1 | | | |
  115. | 100 | TABLE ACCESS CLUSTER | USER$ | 1 | 1 | 1 |00:00:00.01 | 2 | | | |
  116. |*101 | INDEX UNIQUE SCAN | I_USER# | 1 | 1 | 1 |00:00:00.01 | 1 | | | |
  117. |*102 | TABLE ACCESS CLUSTER | SEG$ | 1 | 1 | 1 |00:00:00.01 | 3 | | | |
  118. |*103 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 1 | 1 | 1 |00:00:00.01 | 2 | | | |
  119. |*104 | INDEX UNIQUE SCAN | I_FILE2 | 1 | 1 | 1 |00:00:00.01 | 1 | | | |
  120. | 105 | TABLE ACCESS CLUSTER | TS$ | 1 | 1 | 1 |00:00:00.01 | 2 | | | |
  121. |*106 | INDEX UNIQUE SCAN | I_TS# | 1 | 1 | 1 |00:00:00.01 | 1 | | | |
  122. | 107 | NESTED LOOPS OUTER | | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  123. | 108 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  124. | 109 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  125. | 110 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  126. |*111 | TABLE ACCESS BY INDEX ROWID | UNDO$ | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  127. |*112 | INDEX RANGE SCAN | I_UNDO2 | 1 | 1 | 0 |00:00:00.01 | 2 | | | |
  128. |*113 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  129. |*114 | TABLE ACCESS CLUSTER | SEG$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  130. |*115 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  131. | 116 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  132. |*117 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  133. | 118 | TABLE ACCESS CLUSTER | USER$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  134. |*119 | INDEX UNIQUE SCAN | I_USER# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  135. | 120 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 310 | | | |
  136. | 121 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 310 | | | |
  137. | 122 | NESTED LOOPS OUTER | | 1 | 1 | 0 |00:00:00.01 | 310 | | | |
  138. | 123 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 310 | | | |
  139. |*124 | TABLE ACCESS FULL | SEG$ | 1 | 1 | 0 |00:00:00.01 | 310 | | | |
  140. | 125 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  141. |*126 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  142. | 127 | TABLE ACCESS CLUSTER | USER$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  143. |*128 | INDEX UNIQUE SCAN | I_USER# | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  144. |*129 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  145. |*130 | TABLE ACCESS BY INDEX ROWID | FILE$ | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
  146. |*131 | FIXED TABLE FIXED INDEX | X$KTFBUE (ind:1) | 1 | 8256 | 259 |00:00:00.01 | 7 | | | |
  147. ------------------------------------------------------------------------------------------------------------------------------------------------------
  148.  
  149. Predicate Information (identified by operation id):
  150. ---------------------------------------------------
  151.  
  152. 7 - access("E"."TS#"="F"."TS#" AND "E"."FILE#"="F"."RELFILE#")
  153. 15 - access("F"."TS#"="E"."TS#" AND "F"."RELFILE#"="E"."SEGFILE#")
  154. 17 - access("TS"."TS#"="E"."TS#")
  155. 18 - filter((BITAND(NVL("S"."SPARE1",0),1)=0 AND BITAND(NVL("S"."SPARE1",0),65536)=0))
  156. 19 - access("S"."TS#"="E"."TS#" AND "S"."FILE#"="E"."SEGFILE#" AND "S"."BLOCK#"="E"."SEGBLOCK#")
  157. filter(("S"."TS#"="TS"."TS#" AND "S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#"))
  158. 21 - access("O"."NAME"='AUD$')
  159. filter("O"."NAME"='AUD$')
  160. 23 - access("O"."OWNER#"="U"."USER#")
  161. 24 - filter(("S"."FILE#"="SO"."HEADER_FILE" AND "S"."BLOCK#"="SO"."HEADER_BLOCK" AND "S"."TS#"="SO"."TS_NUMBER" AND
  162. "S"."TYPE#"="SO"."SEGMENT_TYPE_ID" AND "O"."TYPE#"="SO"."OBJECT_TYPE_ID"))
  163. 26 - filter(("T"."BLOCK#"="E"."SEGBLOCK#" AND "T"."FILE#"="E"."SEGFILE#" AND "T"."TS#"="E"."TS#" AND BITAND("T"."PROPERTY",1024)=0))
  164. 27 - access("T"."OBJ#"="O"."OBJ#")
  165. 28 - filter(("TP"."BLOCK#"="E"."SEGBLOCK#" AND "TP"."FILE#"="E"."SEGFILE#" AND "TP"."TS#"="E"."TS#"))
  166. 29 - access("TP"."OBJ#"="O"."OBJ#")
  167. 30 - filter(("C"."BLOCK#"="E"."SEGBLOCK#" AND "C"."FILE#"="E"."SEGFILE#" AND "C"."TS#"="E"."TS#"))
  168. 31 - access("C"."OBJ#"="O"."OBJ#")
  169. 32 - filter(("I"."BLOCK#"="E"."SEGBLOCK#" AND "I"."FILE#"="E"."SEGFILE#" AND "I"."TS#"="E"."TS#" AND INTERNAL_FUNCTION("I"."TYPE#")))
  170. 33 - access("I"."OBJ#"="O"."OBJ#")
  171. 34 - filter(("IP"."BLOCK#"="E"."SEGBLOCK#" AND "IP"."FILE#"="E"."SEGFILE#" AND "IP"."TS#"="E"."TS#"))
  172. 35 - access("IP"."OBJ#"="O"."OBJ#")
  173. 36 - filter(("L"."BLOCK#"="E"."SEGBLOCK#" AND "L"."FILE#"="E"."SEGFILE#" AND "L"."TS#"="E"."TS#" AND (BITAND("L"."PROPERTY",64)=0 OR
  174. BITAND("L"."PROPERTY",128)=128)))
  175. 37 - access("L"."LOBJ#"="O"."OBJ#")
  176. 38 - filter(("TSP"."BLOCK#"="E"."SEGBLOCK#" AND "TSP"."FILE#"="E"."SEGFILE#" AND "TSP"."TS#"="E"."TS#"))
  177. 39 - access("TSP"."OBJ#"="O"."OBJ#")
  178. 40 - filter(("ISP"."FILE#"="E"."SEGFILE#" AND "ISP"."BLOCK#"="E"."SEGBLOCK#" AND "ISP"."TS#"="E"."TS#"))
  179. 41 - access("ISP"."OBJ#"="O"."OBJ#")
  180. 42 - filter(("LF"."BLOCK#"="E"."SEGBLOCK#" AND "LF"."FILE#"="E"."SEGFILE#" AND "LF"."TS#"="E"."TS#"))
  181. 43 - access("LF"."FRAGOBJ#"="O"."OBJ#")
  182. 49 - access("F"."TS#"="E"."TS#" AND "F"."RELFILE#"="E"."SEGFILE#")
  183. 51 - access("TS"."TS#"="E"."TS#")
  184. 52 - filter((INTERNAL_FUNCTION("S"."TYPE#") AND BITAND(NVL("S"."SPARE1",0),1)=0 AND BITAND(NVL("S"."SPARE1",0),65536)=0))
  185. 53 - access("S"."TS#"="E"."TS#" AND "S"."FILE#"="E"."SEGFILE#" AND "S"."BLOCK#"="E"."SEGBLOCK#")
  186. filter("S"."TS#"="TS"."TS#")
  187. 55 - access("S"."USER#"="U"."USER#")
  188. 56 - access("UN"."NAME"='AUD$')
  189. 57 - filter(("UN"."BLOCK#"="E"."SEGBLOCK#" AND "UN"."FILE#"="E"."SEGFILE#" AND "UN"."TS#"="E"."TS#" AND "UN"."STATUS$"<>1 AND
  190. "S"."FILE#"="UN"."FILE#" AND "S"."BLOCK#"="UN"."BLOCK#" AND "S"."TS#"="UN"."TS#" AND "UN"."TS#"="F"."TS#" AND "UN"."FILE#"="F"."RELFILE#"))
  191. 62 - access("F"."TS#"="E"."TS#" AND "F"."RELFILE#"="E"."SEGFILE#")
  192. 64 - access("TS"."TS#"="E"."TS#")
  193. 65 - filter(("S"."TYPE#"<>6 AND "S"."TYPE#"<>5 AND "S"."TYPE#"<>8 AND BITAND(NVL("S"."SPARE1",0),1)=0 AND
  194. BITAND(NVL("S"."SPARE1",0),65536)=0 AND "S"."TYPE#"<>10 AND "S"."TYPE#"<>1))
  195. 66 - access("S"."TS#"="E"."TS#" AND "S"."FILE#"="E"."SEGFILE#" AND "S"."BLOCK#"="E"."SEGBLOCK#")
  196. filter(("S"."TS#"="TS"."TS#" AND "S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#" AND
  197. TO_CHAR("F"."FILE#")||'.'||TO_CHAR("S"."BLOCK#")='AUD$'))
  198. 68 - access("S"."USER#"="U"."USER#")
  199. 69 - access("DS"."TABLESPACE_ID"="F"."TS#" AND "E"."KTFBUEFNO"="F"."RELFILE#")
  200. 79 - access("O"."NAME"='AUD$')
  201. filter("O"."NAME"='AUD$')
  202. 80 - filter("O"."TYPE#"="SO"."OBJECT_TYPE_ID")
  203. 82 - filter(BITAND("T"."PROPERTY",1024)=0)
  204. 83 - access("T"."OBJ#"="O"."OBJ#")
  205. 85 - access("TP"."OBJ#"="O"."OBJ#")
  206. 87 - access("C"."OBJ#"="O"."OBJ#")
  207. 88 - 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
  208. "I"."TYPE#"=9))
  209. 89 - access("I"."OBJ#"="O"."OBJ#")
  210. 91 - access("IP"."OBJ#"="O"."OBJ#")
  211. 92 - filter((BITAND("L"."PROPERTY",64)=0 OR BITAND("L"."PROPERTY",128)=128))
  212. 93 - access("L"."LOBJ#"="O"."OBJ#")
  213. 95 - access("TSP"."OBJ#"="O"."OBJ#")
  214. 97 - access("ISP"."OBJ#"="O"."OBJ#")
  215. 99 - access("LF"."FRAGOBJ#"="O"."OBJ#")
  216. 101 - access("O"."OWNER#"="U"."USER#")
  217. 102 - filter((BITAND(NVL("S"."SPARE1",0),1)=1 AND BITAND(NVL("S"."SPARE1",0),65536)=0 AND "S"."TYPE#"="SO"."SEGMENT_TYPE_ID"))
  218. 103 - access("S"."TS#"="SO"."TS_NUMBER" AND "S"."FILE#"="SO"."HEADER_FILE" AND "S"."BLOCK#"="SO"."HEADER_BLOCK")
  219. 104 - access("S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#")
  220. 106 - access("S"."TS#"="TS"."TS#")
  221. 111 - filter("UN"."STATUS$"<>1)
  222. 112 - access("UN"."NAME"='AUD$')
  223. 113 - access("UN"."TS#"="F"."TS#" AND "UN"."FILE#"="F"."RELFILE#")
  224. 114 - filter((INTERNAL_FUNCTION("S"."TYPE#") AND BITAND(NVL("S"."SPARE1",0),1)=1 AND BITAND(NVL("S"."SPARE1",0),65536)=0))
  225. 115 - access("S"."TS#"="UN"."TS#" AND "S"."FILE#"="UN"."FILE#" AND "S"."BLOCK#"="UN"."BLOCK#")
  226. 117 - access("S"."TS#"="TS"."TS#")
  227. 119 - access("S"."USER#"="U"."USER#")
  228. 124 - filter(("S"."TYPE#"<>6 AND "S"."TYPE#"<>5 AND "S"."TYPE#"<>8 AND BITAND(NVL("S"."SPARE1",0),1)=1 AND
  229. BITAND(NVL("S"."SPARE1",0),65536)=0 AND "S"."TYPE#"<>10 AND "S"."TYPE#"<>1))
  230. 126 - access("S"."TS#"="TS"."TS#")
  231. 128 - access("S"."USER#"="U"."USER#")
  232. 129 - access("S"."TS#"="F"."TS#" AND "S"."FILE#"="F"."RELFILE#")
  233. 130 - filter(TO_CHAR("F"."FILE#")||'.'||TO_CHAR("S"."BLOCK#")='AUD$')
  234. 131 - filter(("E"."KTFBUESEGFNO"="DS"."RELATIVE_FNO" AND "E"."KTFBUESEGBNO"="DS"."HEADER_BLOCK" AND "E"."KTFBUESEGTSN"="DS"."TABLESPACE_ID"))
  235.  
  236. 231 rows selected.
  237.  
  238. Elapsed: 00:00:00.15

在查询表空间的时候,执行alter session set "_FIX_CONTROL" = "11814428:0";后,X$KTFBUE还是走全表扫描:

(表空间名字做处理)

  1. 20:32:05 SYS@eportdbi1> SELECT a.tablespace_name,
  2. 20:32:05 2 ROUND (a.bytes_alloc / 1024 / 1024, 2) megs_alloc,
  3. 20:32:05 3 ROUND (NVL (b.bytes_free, 0) / 1024 / 1024, 2) megs_free,
  4. 20:32:05 4 ROUND ((a.bytes_alloc - NVL (b.bytes_free, 0)) / 1024 / 1024, 2 ) megs_used,
  5. 20:32:05 5 ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_free,
  6. 20:32:05 6 100 - ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_used,
  7. 20:32:05 7 ROUND (maxbytes / 1048576, 2) MAX
  8. 20:32:05 8 FROM
  9. 20:32:05 9 (SELECT f.tablespace_name,
  10. 20:32:05 10 SUM (f.BYTES) bytes_alloc,
  11. 20:32:05 11 SUM (DECODE (f.autoextensible, 'YES', f.maxbytes, 'NO', f.BYTES ) ) maxbytes
  12. 20:32:05 12 FROM dba_data_files f
  13. 20:32:05 13 GROUP BY tablespace_name
  14. 20:32:05 14 ) a,
  15. 20:32:05 15 (SELECT f.tablespace_name,
  16. 20:32:05 16 SUM (f.BYTES) bytes_free
  17. 20:32:05 17 FROM dba_free_space f
  18. 20:32:05 18 GROUP BY tablespace_name
  19. 20:32:05 19 ) b
  20. 20:32:05 20 WHERE a.tablespace_name = b.tablespace_name(+)
  21. 20:32:05 21 UNION ALL
  22. 20:32:05 22 SELECT h.tablespace_name,
  23. 20:32:05 23 ROUND (SUM (h.bytes_free + h.bytes_used) / 1048576, 2) megs_alloc,
  24. 20:32:05 24 ROUND ( SUM ((h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0)) / 1048576, 2 ) megs_free,
  25. 20:32:05 25 ROUND (SUM (NVL (p.bytes_used, 0)) / 1048576, 2) megs_used,
  26. 20:32:05 26 ROUND ( ( SUM ( (h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0) ) / SUM (h.bytes_used + h.bytes_free) ) * 100, 2 ) pct_free,
  27. 20:32:05 27 100 - ROUND ( ( SUM ( (h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0) ) / SUM (h.bytes_used + h.bytes_free) ) * 100, 2 ) pct_used,
  28. 20:32:05 28 ROUND (SUM (f.maxbytes) / 1048576, 2) MAX
  29. 20:32:05 29 FROM SYS.v_$temp_space_header h,
  30. 20:32:05 30 SYS.v_$temp_extent_pool p,
  31. 20:32:05 31 dba_temp_files f
  32. 20:32:05 32 WHERE p.file_id(+) = h.file_id
  33. 20:32:06 33 AND p.tablespace_name(+) = h.tablespace_name
  34. 20:32:06 34 AND f.file_id = h.file_id
  35. 20:32:06 35 AND f.tablespace_name = h.tablespace_name
  36. 20:32:06 36 GROUP BY h.tablespace_name
  37. 20:32:06 37 ORDER BY 1 ;
  38.  
  39. TABLESPACE_NAME MEGS_ALLOC MEGS_FREE MEGS_USED PCT_FREE PCT_USED MAX
  40. ------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
  41. xxxxxxxxxxxxxxxx 4096 4019 77 98.12 1.88 4096
  42. xxxxxxxxxxxxxxxx 8192 2283 5909 27.87 72.13 8192
  43. xxxxxxxxxxxxxxxx 2048 1113 935 54.35 45.65 2048
  44. xxxxxxxxxxxxxxxx 24576 16092 8484 65.48 34.52 24576
  45. xxxxxxxxxxxxxxxx 4096 4095 1 99.98 .02 4096
  46. xxxxxxxxxxxxxxxx 8192 8187 5 99.94 .06 8192
  47. xxxxxxxxxxxxxxxx 4000 3373 627 84.33 15.67 4000
  48. xxxxxxxxxxxxxxxx 546304 346561 199743 63.44 36.56 546304
  49. xxxxxxxxxxxxxxxx 4096 2969 1127 72.49 27.51 4096
  50. xxxxxxxxxxxxxxxx 4096 4086 10 99.76 .24 4096
  51. xxxxxxxxxxxxxxxx 8192 3047 5145 37.19 62.81 8192
  52. xxxxxxxxxxxxxxxx 276608 77078 199530 27.87 72.13 276608
  53. xxxxxxxxxxxxxxxx 16384 8605 7779 52.52 47.48 16384
  54. xxxxxxxxxxxxxxxx 4096 2944 1152 71.88 28.12 4096
  55. xxxxxxxxxxxxxxxx 16384 3575 12809 21.82 78.18 16384
  56. xxxxxxxxxxxxxxxx 4096 1074 3022 26.22 73.78 4096
  57. xxxxxxxxxxxxxxxx 4096 4071 25 99.39 .61 4096
  58. xxxxxxxxxxxxxxxx 4096 3915 181 95.58 4.42 4096
  59. xxxxxxxxxxxxxxxx 16384 15984 400 97.56 2.44 16384
  60. xxxxxxxxxxxxxxxx 32760 8390.88 24369.13 25.61 74.39 32767.98
  61. xxxxxxxxxxxxxxxx 5360 34.13 5325.88 .64 99.36 32767.98
  62. xxxxxxxxxxxxxxxx 4096 2946 1150 71.92 28.08 4096
  63. xxxxxxxxxxxxxxxx 4096 4052 44 98.93 1.07 4096
  64. xxxxxxxxxxxxxxxx 20096 13860 6236 68.97 31.03 20096
  65. xxxxxxxxxxxxxxxx 16384 13068 3316 79.76 20.24 16384
  66. xxxxxxxxxxxxxxxx 208192 40933 167259 19.66 80.34 208192
  67. xxxxxxxxxxxxxxxx 20096 16143 3953 80.33 19.67 20096
  68. xxxxxxxxxxxxxxxx 2048 1898 150 92.68 7.32 2048
  69. xxxxxxxxxxxxxxxx 20096 16138 3958 80.3 19.7 20096
  70. xxxxxxxxxxxxxxxx 68096 13300 54796 19.53 80.47 68096
  71. xxxxxxxxxxxxxxxx 8192 8179 13 99.84 .16 8192
  72. xxxxxxxxxxxxxxxx 32767 31971 796 97.57 2.43 32767.98
  73. xxxxxxxxxxxxxxxx 10240 2371.75 7868.25 23.16 76.84 10240
  74. xxxxxxxxxxxxxxxx 10390 9292.25 1097.75 89.43 10.57 32767.98
  75. xxxxxxxxxxxxxxxx 4356.25 209.38 4146.88 4.81 95.19 32767.98
  76.  
  77. 35 rows selected.
  78.  
  79. Elapsed: 00:01:54.62

执行计划:

  1. 20:34:00 SYS@anonymous> select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));
  2.  
  3. PLAN_TABLE_OUTPUT
  4. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  5. SQL_ID 8ks58zbpgra00, child number 1
  6. -------------------------------------
  7. SELECT a.tablespace_name, ROUND (a.bytes_alloc / 1024 /
  8. 1024, 2) megs_alloc, ROUND (NVL (b.bytes_free, 0) / 1024 / 1024, 2)
  9. megs_free, ROUND ((a.bytes_alloc - NVL (b.bytes_free, 0)) /
  10. 1024 / 1024, 2 ) megs_used, ROUND ((NVL (b.bytes_free, 0) /
  11. a.bytes_alloc) * 100, 2) pct_free, 100 -
  12. ROUND ((NVL (b.bytes_free, 0) / a.bytes_alloc) * 100, 2) pct_used,
  13. ROUND (maxbytes / 1048576, 2) MAX FROM (SELECT
  14. f.tablespace_name, SUM (f.BYTES) bytes_alloc, SUM (DECODE
  15. (f.autoextensible, 'YES', f.maxbytes, 'NO', f.BYTES ) ) maxbytes FROM
  16. dba_data_files f GROUP BY tablespace_name ) a, (SELECT
  17. f.tablespace_name, SUM (f.BYTES) bytes_free FROM dba_free_space f
  18. GROUP BY tablespace_name ) b WHERE a.tablespace_name =
  19. b.tablespace_name(+) UNION ALL SELECT h.tablespace_name, ROUND (SUM
  20. (h.bytes_free + h.bytes_used) / 1048576, 2) megs_alloc,
  21. ROUND ( SUM ((h.bytes_free + h.bytes_used) - NVL (p.b
  22.  
  23. Plan hash value: 2506036241
  24.  
  25. ------------------------------------------------------------------------------------------------------------------------------------------------------------
  26. | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | OMem | 1Mem | Used-Mem |
  27. ------------------------------------------------------------------------------------------------------------------------------------------------------------
  28. | 0 | SELECT STATEMENT | | 1 | | 35 |00:01:54.53 | 53354 | 4865 | | | |
  29. | 1 | SORT ORDER BY | | 1 | 3 | 35 |00:01:54.53 | 53354 | 4865 | 4096 | 4096 | 4096 (0)|
  30. | 2 | UNION-ALL | | 1 | | 35 |00:01:54.53 | 53354 | 4865 | | | |
  31. |* 3 | HASH JOIN OUTER | | 1 | 2 | 34 |00:01:54.18 | 53310 | 4865 | 1229K| 1229K| 1243K (0)|
  32. | 4 | VIEW | | 1 | 2 | 34 |00:00:00.66 | 444 | 0 | | | |
  33. | 5 | HASH GROUP BY | | 1 | 2 | 34 |00:00:00.66 | 444 | 0 | 941K| 941K| 1349K (0)|
  34. | 6 | VIEW | DBA_DATA_FILES | 1 | 2 | 108 |00:00:00.65 | 444 | 0 | | | |
  35. | 7 | UNION-ALL | | 1 | | 108 |00:00:00.65 | 444 | 0 | | | |
  36. | 8 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.57 | 112 | 0 | | | |
  37. | 9 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.57 | 112 | 0 | | | |
  38. | 10 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.57 | 112 | 0 | | | |
  39. |* 11 | FIXED TABLE FULL | X$KCCFN | 1 | 1 | 108 |00:00:00.57 | 0 | 0 | | | |
  40. |* 12 | TABLE ACCESS BY INDEX ROWID| FILE$ | 108 | 1 | 0 |00:00:00.01 | 112 | 0 | | | |
  41. |* 13 | INDEX UNIQUE SCAN | I_FILE1 | 108 | 1 | 108 |00:00:00.01 | 4 | 0 | | | |
  42. |* 14 | FIXED TABLE FIXED INDEX | X$KCCFE (ind:1) | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  43. | 15 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  44. |* 16 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  45. | 17 | NESTED LOOPS | | 1 | 1 | 108 |00:00:00.08 | 332 | 0 | | | |
  46. | 18 | NESTED LOOPS | | 1 | 1 | 108 |00:00:00.08 | 220 | 0 | | | |
  47. | 19 | NESTED LOOPS | | 1 | 1 | 108 |00:00:00.01 | 220 | 0 | | | |
  48. | 20 | NESTED LOOPS | | 1 | 1 | 108 |00:00:00.01 | 108 | 0 | | | |
  49. |* 21 | FIXED TABLE FULL | X$KCCFN | 1 | 1 | 108 |00:00:00.01 | 0 | 0 | | | |
  50. |* 22 | FIXED TABLE FIXED INDEX | X$KTFBHC (ind:1) | 108 | 1 | 108 |00:00:00.01 | 108 | 0 | | | |
  51. |* 23 | TABLE ACCESS BY INDEX ROWID| FILE$ | 108 | 1 | 108 |00:00:00.01 | 112 | 0 | | | |
  52. |* 24 | INDEX UNIQUE SCAN | I_FILE1 | 108 | 1 | 108 |00:00:00.01 | 4 | 0 | | | |
  53. |* 25 | FIXED TABLE FIXED INDEX | X$KCCFE (ind:1) | 108 | 1 | 108 |00:00:00.08 | 0 | 0 | | | |
  54. | 26 | TABLE ACCESS CLUSTER | TS$ | 108 | 1 | 108 |00:00:00.01 | 112 | 0 | | | |
  55. |* 27 | INDEX UNIQUE SCAN | I_TS# | 108 | 1 | 108 |00:00:00.01 | 4 | 0 | | | |
  56. | 28 | VIEW | | 1 | 31 | 34 |00:01:53.52 | 52866 | 4865 | | | |
  57. | 29 | HASH GROUP BY | | 1 | 31 | 34 |00:01:53.52 | 52866 | 4865 | 9291K| 2834K| 1346K (0)|
  58. | 30 | VIEW | DBA_FREE_SPACE | 1 | 140 | 100K|00:01:53.50 | 52866 | 4865 | | | |
  59. | 31 | UNION-ALL | | 1 | | 100K|00:01:53.48 | 52866 | 4865 | | | |
  60. | 32 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 38 | 0 | | | |
  61. | 33 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 38 | 0 | | | |
  62. | 34 | TABLE ACCESS FULL | FET$ | 1 | 1 | 0 |00:00:00.01 | 38 | 0 | | | |
  63. |* 35 | TABLE ACCESS CLUSTER | TS$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  64. |* 36 | INDEX UNIQUE SCAN | I_TS# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  65. |* 37 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  66. | 38 | NESTED LOOPS | | 1 | 88 | 84440 |00:00:00.15 | 394 | 0 | | | |
  67. | 39 | NESTED LOOPS | | 1 | 88 | 84440 |00:00:00.06 | 390 | 0 | | | |
  68. |* 40 | TABLE ACCESS FULL | TS$ | 1 | 31 | 34 |00:00:00.01 | 38 | 0 | | | |
  69. |* 41 | FIXED TABLE FIXED INDEX | X$KTFBFE (ind:1) | 34 | 3 | 84440 |00:00:00.05 | 352 | 0 | | | |
  70. |* 42 | INDEX UNIQUE SCAN | I_FILE2 | 84440 | 1 | 84440 |00:00:00.06 | 4 | 0 | | | |
  71. |* 43 | HASH JOIN | | 1 | 50 | 16133 |00:01:53.30 | 52396 | 4865 | 2297K| 2297K| 2426K (0)|
  72. | 44 | NESTED LOOPS | | 1 | 50 | 16133 |00:01:53.29 | 52358 | 4865 | | | |
  73. |* 45 | HASH JOIN | | 1 | 808 | 16133 |00:01:53.26 | 52354 | 4865 | 1753K| 1753K| 1511K (0)|
  74. |* 46 | TABLE ACCESS FULL | RECYCLEBIN$ | 1 | 152 | 191 |00:00:00.01 | 4 | 0 | | | |
  75. | 47 | FIXED TABLE FULL | X$KTFBUE | 1 | 100K| 723K|00:01:52.95 | 52350 | 4865 | | | |
  76. |* 48 | INDEX UNIQUE SCAN | I_FILE2 | 16133 | 1 | 16133 |00:00:00.01 | 4 | 0 | | | |
  77. |* 49 | TABLE ACCESS FULL | TS$ | 1 | 31 | 34 |00:00:00.01 | 38 | 0 | | | |
  78. | 50 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 38 | 0 | | | |
  79. | 51 | NESTED LOOPS | | 1 | 1 | 0 |00:00:00.01 | 38 | 0 | | | |
  80. | 52 | MERGE JOIN CARTESIAN | | 1 | 425 | 0 |00:00:00.01 | 38 | 0 | | | |
  81. |* 53 | TABLE ACCESS FULL | TS$ | 1 | 3 | 0 |00:00:00.01 | 38 | 0 | | | |
  82. | 54 | BUFFER SORT | | 0 | 152 | 0 |00:00:00.01 | 0 | 0 | 73728 | 73728 | |
  83. |* 55 | TABLE ACCESS FULL | RECYCLEBIN$ | 0 | 152 | 0 |00:00:00.01 | 0 | 0 | | | |
  84. | 56 | TABLE ACCESS CLUSTER | UET$ | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  85. |* 57 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  86. |* 58 | INDEX UNIQUE SCAN | I_FILE2 | 0 | 1 | 0 |00:00:00.01 | 0 | 0 | | | |
  87. | 59 | HASH GROUP BY | | 1 | 1 | 1 |00:00:00.35 | 44 | 0 | 856K| 856K| 463K (0)|
  88. | 60 | NESTED LOOPS OUTER | | 1 | 1 | 1 |00:00:00.35 | 44 | 0 | | | |
  89. |* 61 | HASH JOIN | | 1 | 1 | 1 |00:00:00.35 | 42 | 0 | 1281K| 1281K| 402K (0)|
  90. | 62 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.35 | 3 | 0 | | | |
  91. | 63 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.35 | 1 | 0 | | | |
  92. | 64 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.35 | 0 | 0 | | | |
  93. |* 65 | FIXED TABLE FULL | X$KCCFN | 1 | 1 | 1 |00:00:00.34 | 0 | 0 | | | |
  94. |* 66 | FIXED TABLE FIXED INDEX | X$KCCTF (ind:1) | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | | | |
  95. |* 67 | FIXED TABLE FIXED INDEX | X$KTFTHC (ind:1) | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | |
  96. | 68 | TABLE ACCESS CLUSTER | TS$ | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | |
  97. |* 69 | INDEX UNIQUE SCAN | I_TS# | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | |
  98. | 70 | VIEW | V_$TEMP_SPACE_HEADER | 1 | 1 | 1 |00:00:00.01 | 39 | 0 | | | |
  99. | 71 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 39 | 0 | | | |
  100. |* 72 | TABLE ACCESS FULL | TS$ | 1 | 1 | 1 |00:00:00.01 | 38 | 0 | | | |
  101. |* 73 | FIXED TABLE FIXED INDEX | X$KTFTHC (ind:2) | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | |
  102. |* 74 | VIEW PUSHED PREDICATE | V_$TEMP_EXTENT_POOL | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | |
  103. | 75 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | |
  104. |* 76 | TABLE ACCESS BY INDEX ROWID | TS$ | 1 | 1 | 1 |00:00:00.01 | 2 | 0 | | | |
  105. |* 77 | INDEX UNIQUE SCAN | I_TS1 | 1 | 1 | 1 |00:00:00.01 | 1 | 0 | | | |
  106. |* 78 | FIXED TABLE FIXED INDEX | X$KTSTFC (ind:1) | 1 | 1 | 1 |00:00:00.01 | 0 | 0 | | | |
  107. ------------------------------------------------------------------------------------------------------------------------------------------------------------
  108.  
  109. Predicate Information (identified by operation id):
  110. ---------------------------------------------------
  111.  
  112. 3 - access("A"."TABLESPACE_NAME"="B"."TABLESPACE_NAME")
  113. 11 - filter(("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4))
  114. 12 - filter("F"."SPARE1" IS NULL)
  115. 13 - access("FNFNO"="F"."FILE#")
  116. 14 - filter("FE"."FENUM"="F"."FILE#")
  117. 16 - access("F"."TS#"="TS"."TS#")
  118. 21 - filter(("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4))
  119. 22 - filter("FNFNO"="HC"."KTFBHCAFNO")
  120. 23 - filter("F"."SPARE1" IS NOT NULL)
  121. 24 - access("FNFNO"="F"."FILE#")
  122. 25 - filter("FE"."FENUM"="F"."FILE#")
  123. 27 - access("HC"."KTFBHCTSN"="TS"."TS#")
  124. 35 - filter("TS"."BITMAPPED"=0)
  125. 36 - access("TS"."TS#"="F"."TS#")
  126. 37 - access("F"."TS#"="FI"."TS#" AND "F"."FILE#"="FI"."RELFILE#")
  127. 40 - filter(("TS"."BITMAPPED"<>0 AND "TS"."CONTENTS$"=0 AND INTERNAL_FUNCTION("TS"."ONLINE$")))
  128. 41 - filter("TS"."TS#"="F"."KTFBFETSN")
  129. 42 - access("F"."KTFBFETSN"="FI"."TS#" AND "F"."KTFBFEFNO"="FI"."RELFILE#")
  130. 43 - access("TS"."TS#"="RB"."TS#")
  131. 45 - access("U"."KTFBUESEGTSN"="RB"."TS#" AND "U"."KTFBUESEGFNO"="RB"."FILE#" AND "U"."KTFBUESEGBNO"="RB"."BLOCK#")
  132. 46 - filter(("RB"."TS#" IS NOT NULL AND "RB"."FILE#" IS NOT NULL AND "RB"."BLOCK#" IS NOT NULL))
  133. 48 - access("RB"."TS#"="FI"."TS#" AND "U"."KTFBUEFNO"="FI"."RELFILE#")
  134. 49 - filter(("TS"."BITMAPPED"<>0 AND "TS"."CONTENTS$"=0 AND INTERNAL_FUNCTION("TS"."ONLINE$")))
  135. 53 - filter("TS"."BITMAPPED"=0)
  136. 55 - filter(("RB"."TS#" IS NOT NULL AND "RB"."FILE#" IS NOT NULL AND "RB"."BLOCK#" IS NOT NULL))
  137. 57 - access("U"."TS#"="RB"."TS#" AND "U"."SEGFILE#"="RB"."FILE#" AND "U"."SEGBLOCK#"="RB"."BLOCK#")
  138. filter("TS"."TS#"="U"."TS#")
  139. 58 - access("U"."TS#"="FI"."TS#" AND "U"."SEGFILE#"="FI"."RELFILE#")
  140. 61 - access("HC"."KTFTHCTFNO"="H"."FILE_ID" AND "TS"."NAME"="H"."TABLESPACE_NAME")
  141. 65 - filter(("V"."FNNAM" IS NOT NULL AND "V"."FNTYP"=7))
  142. 66 - filter(("TF"."TFDUP"<>0 AND BITAND("TF"."TFSTA",32)<>32 AND "V"."FNFNO"="TF"."TFNUM" AND "TF"."TFFNH"="V"."FNNUM"))
  143. 67 - filter("V"."FNFNO"="HC"."KTFTHCTFNO")
  144. 69 - access("HC"."KTFTHCTSN"="TS"."TS#")
  145. 72 - filter(("TS"."CONTENTS$"=1 AND "TS"."BITMAPPED"<>0 AND "TS"."ONLINE$"=1))
  146. 73 - filter(("HC"."KTFTHCCVAL"=0 AND "HC"."INST_ID"=USERENV('INSTANCE') AND "TS"."TS#"="HC"."KTFTHCTSN"))
  147. 74 - filter("P"."FILE_ID"="H"."FILE_ID")
  148. 76 - filter(("TS"."CONTENTS$"=1 AND "TS"."BITMAPPED"<>0 AND "TS"."ONLINE$"=1))
  149. 77 - access("TS"."NAME"="H"."TABLESPACE_NAME")
  150. 78 - filter(("FC"."INST_ID"=USERENV('INSTANCE') AND "TS"."TS#"="FC"."KTSTFCTSN"))
  151.  
  152. 147 rows selected.
  153.  
  154. Elapsed: 00:00:00.08

解决可以看我另外一篇博文:Oracle查询表空间使用率很慢

Oracle查询dba_extents视图很慢的更多相关文章

  1. Oracle 查询权限视图

    在Oracle中有很多用于查权限的视图,但很多人在需要查权限时会很困惑,不知道该用哪个视图去查,这里我列出几个常见的用于查权限的视图及其用法: 1DBA_ROLE_PRIVS 该视图主要有以下2个作用 ...

  2. Oracle查询表空间使用率很慢

    Oracle查询表空间使用率很慢 问题描述 执行查询表空间的语句,需要接近2min的时间才能执行完成. 以前也在其他客户的生产库遇到过一样的情况,当时是由于回收站的内容过多引起的. 不过这次的情况却不 ...

  3. 45个很实用的 Oracle 查询语句小结

     这里我们介绍的是 40+ 个很实用的 Oracle 查询语句,主要涵盖了日期操作,获取server信息.获取运行状态.计算数据库大小等等方面的查询. 这些是全部 Oracle 开发人员都必备的技 ...

  4. 45 个非常有用的 Oracle 查询语句

    ​ 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快 ...

  5. Oracle之物化视图

    来源于:http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html 近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于 ...

  6. 《oracle每天一练》Oracle之物化视图

    相关帖子思考和跟踪 本文转自Ronger 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实 ...

  7. 40多个非常有用的Oracle 查询语句

    给大家介绍是40多个非常有用的Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有Oracle 开发者都必备的技能,所以快快收藏吧! 日期 ...

  8. Oracle数据库学习 视图、序列及存储过程

    视图(View) 视图也被称作虚表,也就是虚拟的表,是一组数据的逻辑表示. 视图对应一个select语句,结果集被赋予一个名字,也就是视图的名字. 视图本身不包含任何数据,它只是包含映射到基表的一个查 ...

  9. 45个非常有用的 Oracle 查询语句小结

    45个非常有用的 Oracle 查询语句小结 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 ...

随机推荐

  1. 【Vue】axios封装,更好的管理api接口和使用

    在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...

  2. 借Adobe XD之力,自动生成Flutter代码

    概述 今天,我们来聊聊一个专门为"懒人程序员"准备的工具--Adobe XD.使用它可以快速将原型设计图转换为可执行的Flutter代码, 而由于Flutter自身跨平台的特性,因 ...

  3. svg 贝塞尔曲线图解(记录)

    path路径绘制中,绘制贝塞尔曲线的命令包括: Q 二次贝赛尔曲线 x1,y1 x,y T 平滑二次贝塞尔曲线 x,y C 曲线(curveto) x1,y1 x2,y2 x,y S 平滑曲线 x2, ...

  4. 简谈Java语言的封装

    简谈Java语言的封装 封装的定义 封装将复杂模块或系统的逻辑实现细节隐藏,让使用者只需要关心这个模块或系统怎么使用,而不用关心这个模块或系统是怎么实现的. 在面向对象的的编程中,我们一般通过接口来描 ...

  5. javafx分别设置四个边框

    package border; import javafx.application.Application; import javafx.geometry.Insets; import javafx. ...

  6. oracle使用+简写左关联出现的结果集不一致问题

    这是使用(+)的sql语句(已简写) select a.id,b.num from a,b where a.id=b.id(+) and b.num>10 这是使用left join的sql语句 ...

  7. 7. redux

    1.所有的状态统一放在state中,由store来管理state 2.用户触发一个action行为,由dispatch分发action行为 3.通过store把原有的state的状态值和dispatc ...

  8. 前端JS的服务订阅&服务发布

    var eventCenter = { sub:function(mesName, mesCallback){ this.argus=this.argus||{}; this.argus[mesNam ...

  9. String源码理解之indexOf函数

    1前言 不多说,直接上源码 2源码 我自己的理解,可能表述不清,多看几遍,不行就debug跟一遍代码自然就懂了. /** * Code shared by String and StringBuffe ...

  10. nodejs如何从异步回调函数返回想要的值

    const fs = require('fs') let read=()=>{ fs.readFile("./contents/test.json",(err,data)=& ...