您的位置:首页 > 数据库 > Oracle

oracle 10g recyclebin引起的dba_free_space性能问题

2014-02-20 10:20 483 查看
oracle 10g recyclebin中数据太多引起的dba_free_space执行非常缓慢。最后通过清理recyclebin进行解决。SQL> select * from V$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64biPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0ProductionTNS for 64-bit Windows: Version 10.2.0.1.0 - ProductionNLSRTL Version 10.2.0.1.0 - Production

SQL如下:

select tablespace_name,sum(bytes) from dba_free_space group by tablespace_name;

原来执行大概需要23s,

优化前的执行计划

详细的执行计划如下:
---------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                        | Name             | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |  OMem |  1Mem | Used-Mem |
---------------------------------------------------------------------------------------------------------------------------------------------------
|   1 |  HASH GROUP BY                   |                  |      1 |    187 |     44 |00:00:22.63 |   20269 |   4693 |       |       |          |
|   2 |   VIEW                           | DBA_FREE_SPACE   |      1 |    187 |   9464 |00:00:22.59 |   20269 |   4693 |       |       |          |
|   3 |    UNION-ALL                     |                  |      1 |        |   9464 |00:00:22.56 |   20269 |   4693 |       |       |          |
|   4 |     NESTED LOOPS                 |                  |      1 |      1 |      0 |00:00:00.01 |      55 |      0 |       |       |          |
|   5 |      NESTED LOOPS                |                  |      1 |      1 |      0 |00:00:00.01 |      55 |      0 |       |       |          |
|   6 |       TABLE ACCESS FULL          | FET$             |      1 |      1 |      0 |00:00:00.01 |      55 |      0 |       |       |          |
|*  7 |       INDEX UNIQUE SCAN          | I_FILE2          |      0 |      1 |      0 |00:00:00.01 |       0 |      0 |       |       |          |
|*  8 |      TABLE ACCESS CLUSTER        | TS$              |      0 |      1 |      0 |00:00:00.01 |       0 |      0 |       |       |          |
|   9 |     NESTED LOOPS                 |                  |      1 |     90 |    362 |00:00:00.02 |     320 |      0 |       |       |          |
|  10 |      NESTED LOOPS                |                  |      1 |     90 |    362 |00:00:00.01 |     318 |      0 |       |       |          |
|* 11 |       TABLE ACCESS FULL          | TS$              |      1 |     44 |     44 |00:00:00.01 |      55 |      0 |       |       |          |
|* 12 |       FIXED TABLE FIXED INDEX    | X$KTFBFE (ind:1) |     44 |      2 |    362 |00:00:00.01 |     263 |      0 |       |       |          |
|* 13 |      INDEX UNIQUE SCAN           | I_FILE2          |    362 |      1 |    362 |00:00:00.01 |       2 |      0 |       |       |          |
|  14 |     NESTED LOOPS                 |                  |      1 |     95 |   9102 |00:00:22.47 |   19240 |   4693 |       |       |          |
|  15 |      NESTED LOOPS                |                  |      1 |     95 |   9102 |00:00:22.33 |   19238 |   4693 |       |       |          |
|* 16 |       HASH JOIN                  |                  |      1 |   4603 |   4693 |00:00:00.05 |     134 |      0 |  1155K|  1155K| 1400K (0)|
|  17 |        TABLE ACCESS FULL         | RECYCLEBIN$      |      1 |   4870 |   4870 |00:00:00.01 |      79 |      0 |       |       |          |
|* 18 |        TABLE ACCESS FULL         | TS$              |      1 |     44 |     44 |00:00:00.01 |      55 |      0 |       |       |          |
|* 19 |       FIXED TABLE FIXED INDEX    | X$KTFBUE (ind:1) |   4693 |      1 |   9102 |00:00:22.22 |   19104 |   4693 |       |       |          |
|* 20 |      INDEX UNIQUE SCAN           | I_FILE2          |   9102 |      1 |   9102 |00:00:00.09 |       2 |      0 |       |       |          |
|  21 |     NESTED LOOPS                 |                  |      1 |      1 |      0 |00:00:00.01 |     654 |      0 |       |       |          |
|  22 |      NESTED LOOPS                |                  |      1 |      1 |      0 |00:00:00.01 |     654 |      0 |       |       |          |
|  23 |       NESTED LOOPS               |                  |      1 |      1 |      0 |00:00:00.01 |     654 |      0 |       |       |          |
|  24 |        TABLE ACCESS FULL         | UET$             |      1 |      1 |      0 |00:00:00.01 |     654 |      0 |       |       |          |
|* 25 |        INDEX UNIQUE SCAN         | I_FILE2          |      0 |      1 |      0 |00:00:00.01 |       0 |      0 |       |       |          |
|* 26 |       TABLE ACCESS BY INDEX ROWID| RECYCLEBIN$      |      0 |      1 |      0 |00:00:00.01 |       0 |      0 |       |       |          |
|* 27 |        INDEX RANGE SCAN          | RECYCLEBIN$_TS   |      0 |    271 |      0 |00:00:00.01 |       0 |      0 |       |       |          |
|* 28 |      TABLE ACCESS CLUSTER        | TS$              |      0 |      1 |      0 |00:00:00.01 |       0 |      0 |       |       |          |
|* 29 |       INDEX UNIQUE SCAN          | I_TS#            |      0 |      1 |      0 |00:00:00.01 |       0 |      0 |       |       |          |
---------------------------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

7 - access("F"."TS#"="FI"."TS#" AND "F"."FILE#"="FI"."RELFILE#")
8 - filter(("TS"."BITMAPPED"=0 AND "TS"."TS#"="F"."TS#"))
11 - filter(("TS"."CONTENTS$"=0 AND INTERNAL_FUNCTION("TS"."ONLINE$") AND "TS"."BITMAPPED"<>0))
12 - filter("TS"."TS#"="F"."KTFBFETSN")
13 - access("F"."KTFBFETSN"="FI"."TS#" AND "F"."KTFBFEFNO"="FI"."RELFILE#")
16 - access("TS"."TS#"="RB"."TS#")
18 - filter(("TS"."CONTENTS$"=0 AND INTERNAL_FUNCTION("TS"."ONLINE$") AND "TS"."BITMAPPED"<>0))
19 - filter(("U"."KTFBUESEGTSN"="RB"."TS#" AND "U"."KTFBUESEGFNO"="RB"."FILE#" AND "U"."KTFBUESEGBNO"="RB"."BLOCK#"))
20 - access("RB"."TS#"="FI"."TS#" AND "RB"."FILE#"="FI"."RELFILE#")
25 - access("U"."TS#"="FI"."TS#" AND "U"."SEGFILE#"="FI"."RELFILE#")
26 - filter(("U"."SEGFILE#"="RB"."FILE#" AND "U"."SEGBLOCK#"="RB"."BLOCK#"))
27 - access("U"."TS#"="RB"."TS#")
28 - filter("TS"."BITMAPPED"=0)
29 - access("TS"."TS#"="U"."TS#")


经查看recyclebin中有大概3500条的记录

解决办法

对回收站进行了清库

SQL>purge dba_recyclebin;

解决后大概需要 0.03秒就可以出结果

清空后的执行计划
------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                        | Name             | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
------------------------------------------------------------------------------------------------------------------------------------------
|   1 |  HASH GROUP BY                   |                  |      1 |    187 |     44 |00:00:00.03 |    1108 |       |       |          |
|   2 |   VIEW                           | DBA_FREE_SPACE   |      1 |    187 |    461 |00:00:00.03 |    1108 |       |       |          |
|   3 |    UNION-ALL                     |                  |      1 |        |    461 |00:00:00.03 |    1108 |       |       |          |
|   4 |     NESTED LOOPS                 |                  |      1 |      1 |      0 |00:00:00.01 |      55 |       |       |          |
|   5 |      NESTED LOOPS                |                  |      1 |      1 |      0 |00:00:00.01 |      55 |       |       |          |
|   6 |       TABLE ACCESS FULL          | FET$             |      1 |      1 |      0 |00:00:00.01 |      55 |       |       |          |
|*  7 |       INDEX UNIQUE SCAN          | I_FILE2          |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|*  8 |      TABLE ACCESS CLUSTER        | TS$              |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|   9 |     NESTED LOOPS                 |                  |      1 |     90 |    461 |00:00:00.02 |     320 |       |       |          |
|  10 |      NESTED LOOPS                |                  |      1 |     90 |    461 |00:00:00.01 |     318 |       |       |          |
|* 11 |       TABLE ACCESS FULL          | TS$              |      1 |     44 |     44 |00:00:00.01 |      55 |       |       |          |
|* 12 |       FIXED TABLE FIXED INDEX    | X$KTFBFE (ind:1) |     44 |      2 |    461 |00:00:00.01 |     263 |       |       |          |
|* 13 |      INDEX UNIQUE SCAN           | I_FILE2          |    461 |      1 |    461 |00:00:00.01 |       2 |       |       |          |
|  14 |     NESTED LOOPS                 |                  |      1 |     95 |      0 |00:00:00.01 |      79 |       |       |          |
|  15 |      NESTED LOOPS                |                  |      1 |     95 |      0 |00:00:00.01 |      79 |       |       |          |
|* 16 |       HASH JOIN                  |                  |      1 |   4603 |      0 |00:00:00.01 |      79 |  1155K|  1155K|  200K (0)|
|  17 |        TABLE ACCESS FULL         | RECYCLEBIN$      |      1 |   4870 |      0 |00:00:00.01 |      79 |       |       |          |
|* 18 |        TABLE ACCESS FULL         | TS$              |      0 |     44 |      0 |00:00:00.01 |       0 |       |       |          |
|* 19 |       FIXED TABLE FIXED INDEX    | X$KTFBUE (ind:1) |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 20 |      INDEX UNIQUE SCAN           | I_FILE2          |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|  21 |     NESTED LOOPS                 |                  |      1 |      1 |      0 |00:00:00.01 |     654 |       |       |          |
|  22 |      NESTED LOOPS                |                  |      1 |      1 |      0 |00:00:00.01 |     654 |       |       |          |
|  23 |       NESTED LOOPS               |                  |      1 |      1 |      0 |00:00:00.01 |     654 |       |       |          |
|  24 |        TABLE ACCESS FULL         | UET$             |      1 |      1 |      0 |00:00:00.01 |     654 |       |       |          |
|* 25 |        INDEX UNIQUE SCAN         | I_FILE2          |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 26 |       TABLE ACCESS BY INDEX ROWID| RECYCLEBIN$      |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 27 |        INDEX RANGE SCAN          | RECYCLEBIN$_TS   |      0 |    271 |      0 |00:00:00.01 |       0 |       |       |          |
|* 28 |      TABLE ACCESS CLUSTER        | TS$              |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
|* 29 |       INDEX UNIQUE SCAN          | I_TS#            |      0 |      1 |      0 |00:00:00.01 |       0 |       |       |          |
------------------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

7 - access("F"."TS#"="FI"."TS#" AND "F"."FILE#"="FI"."RELFILE#")
8 - filter(("TS"."BITMAPPED"=0 AND "TS"."TS#"="F"."TS#"))
11 - filter(("TS"."CONTENTS$"=0 AND INTERNAL_FUNCTION("TS"."ONLINE$") AND "TS"."BITMAPPED"<>0))
12 - filter("TS"."TS#"="F"."KTFBFETSN")
13 - access("F"."KTFBFETSN"="FI"."TS#" AND "F"."KTFBFEFNO"="FI"."RELFILE#")
16 - access("TS"."TS#"="RB"."TS#")
18 - filter(("TS"."CONTENTS$"=0 AND INTERNAL_FUNCTION("TS"."ONLINE$") AND "TS"."BITMAPPED"<>0))
19 - filter(("U"."KTFBUESEGTSN"="RB"."TS#" AND "U"."KTFBUESEGFNO"="RB"."FILE#" AND "U"."KTFBUESEGBNO"="RB"."BLOCK#"))
20 - access("RB"."TS#"="FI"."TS#" AND "RB"."FILE#"="FI"."RELFILE#")
25 - access("U"."TS#"="FI"."TS#" AND "U"."SEGFILE#"="FI"."RELFILE#")
26 - filter(("U"."SEGFILE#"="RB"."FILE#" AND "U"."SEGBLOCK#"="RB"."BLOCK#"))
27 - access("U"."TS#"="RB"."TS#")
28 - filter("TS"."BITMAPPED"=0)
29 - access("TS"."TS#"="U"."TS#")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: