回收站引发ORACLE查询表空间使用缓慢

 

一个哥们问我 ,他们查询 表空间使用率 跑了一个多小时,这个太坑爹了,让我 帮忙优化一下。

SQL语句如下

select * from 
    (
      select ts.tablespace_name,ts.contents "TABLESPACE_TYPE",
             to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') monitor_date,
             datafiles,total_gb  "TOTAL_SIZE_GB",
            (total_gb-free_gb) "USED_SIZE_GB",
             free_gb "FREE_SIZE_GB",
             round((100-free_gb/total_gb*100),2) "USED_PCT",
             round(free_gb/total_gb*100,2) "FREE_PCT" 
      from  dba_tablespaces ts,
            (select tablespace_name,round(sum(bytes)/1024/1024/1024,2) free_gb 
             from dba_free_space group by tablespace_name) fr1,
            (select tablespace_name,round(sum(bytes)/1024/1024/1024,2) total_gb,count(*) datafiles  
             from dba_data_files group by tablespace_name) df1 
      where ts.tablespace_name=fr1.tablespace_name and ts.tablespace_name=df1.tablespace_name order by "FREE_PCT"
    ) 
union all
select 'TOTAL SUMMARY:','ALL',to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') monitor_date,datafiles,
       total_gb "TOTAL_SIZE_GB",
       round(total_gb-free_gb,2) "USED_SIZE_GB",
       free_gb "FREE_SIZE_GB",
       round((100-free_gb/total_gb*100),2) "USED_PCT",
       round(free_gb/total_gb*100,2) "FREE_PCT" 
from  (select round(sum(bytes)/1024/1024/1024,2) free_gb from dba_free_space) fr2,
      (select count(*) datafiles,round(sum(bytes)/1024/1024/1024,2) total_gb from dba_data_files) df2
union all
select null,null,null,null,null,null,null,null,null from dual;


这个SQL挺简单的, 就是访问几个数据字典而已,执行计划如下

 

SQL> set autotrace traceonly;
SQL>       select * from 
  2            (
  3              select ts.tablespace_name,ts.contents "TABLESPACE_TYPE",
  4                     to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') monitor_date,
  5                     datafiles,total_gb  "TOTAL_SIZE_GB",
  6                    (total_gb-free_gb) "USED_SIZE_GB",
  7                     free_gb "FREE_SIZE_GB",
  8                     round((100-free_gb/total_gb*100),2) "USED_PCT",
  9                     round(free_gb/total_gb*100,2) "FREE_PCT" 
            from  dba_tablespaces ts,
 10   11                    (select tablespace_name,round(sum(bytes)/1024/1024/1024,2) free_gb 
 12                     from dba_free_space group by tablespace_name) fr1,
 13                    (select tablespace_name,round(sum(bytes)/1024/1024/1024,2) total_gb,count(*) datafiles  
 14                     from dba_data_files group by tablespace_name) df1 
 15              where ts.tablespace_name=fr1.tablespace_name and ts.tablespace_name=df1.tablespace_name order by "FREE_PCT"
 16            ) 
 17        union all
 18        select 'TOTAL SUMMARY:','ALL',to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') monitor_date,datafiles,
 19               total_gb "TOTAL_SIZE_GB",
 20               round(total_gb-free_gb,2) "USED_SIZE_GB",
 21               free_gb "FREE_SIZE_GB",
 22               round((100-free_gb/total_gb*100),2) "USED_PCT",
 23               round(free_gb/total_gb*100,2) "FREE_PCT" 
 24        from  (select round(sum(bytes)/1024/1024/1024,2) free_gb from dba_free_space) fr2,
 25              (select count(*) datafiles,round(sum(bytes)/1024/1024/1024,2) total_gb from dba_data_files) df2
 26        union all
 27        select null,null,null,null,null,null,null,null,null from dual;




31 rows selected.

Elapsed: 00:50:32.18

Execution Plan
----------------------------------------------------------
Plan hash value: 3463738489

--------------------------------------------------------------------------------------------------------------------
| Id  | Operation                               | Name             | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                        |                  |   140 | 15495 |       |  5104K(100)| 17:00:53 |
|   1 |  UNION-ALL                              |                  |       |       |       |            |          |
|   2 |   VIEW                                  |                  |   138 | 15456 |       |  2552K(100)| 08:30:27 |
|   3 |    SORT ORDER BY                        |                  |   138 | 13248 |       |  2552K(100)| 08:30:27 |
|*  4 |     HASH JOIN                           |                  |   138 | 13248 |       |  2552K(100)| 08:30:27 |
|   5 |      NESTED LOOPS                       |                  |     2 |   132 |       |     7  (15)| 00:00:01 |
|   6 |       VIEW                              |                  |     2 |    86 |       |     5  (20)| 00:00:01 |
|   7 |        HASH GROUP BY                    |                  |     2 |    60 |       |     5  (20)| 00:00:01 |
|   8 |         VIEW                            | DBA_DATA_FILES   |     2 |    60 |       |     4   (0)| 00:00:01 |
|   9 |          UNION-ALL                      |                  |       |       |       |            |          |
|  10 |           NESTED LOOPS                  |                  |     1 |   236 |       |     2   (0)| 00:00:01 |
|  11 |            NESTED LOOPS                 |                  |     1 |   215 |       |     1   (0)| 00:00:01 |
|  12 |             NESTED LOOPS                |                  |     1 |   202 |       |     1   (0)| 00:00:01 |
|* 13 |              FIXED TABLE FULL           | X$KCCFN          |     1 |   182 |       |     0   (0)| 00:00:01 |
|* 14 |              TABLE ACCESS BY INDEX ROWID| FILE$            |     1 |    20 |       |     1   (0)| 00:00:01 |
|* 15 |               INDEX UNIQUE SCAN         | I_FILE1          |     1 |       |       |     0   (0)| 00:00:01 |
|* 16 |             FIXED TABLE FIXED INDEX     | X$KCCFE (ind:1)  |     1 |    13 |       |     0   (0)| 00:00:01 |
|  17 |            TABLE ACCESS CLUSTER         | TS$              |     1 |    21 |       |     1   (0)| 00:00:01 |
|* 18 |             INDEX UNIQUE SCAN           | I_TS#            |     1 |       |       |     0   (0)| 00:00:01 |
|  19 |           NESTED LOOPS                  |                  |     1 |   279 |       |     2   (0)| 00:00:01 |
|  20 |            NESTED LOOPS                 |                  |     1 |   258 |       |     1   (0)| 00:00:01 |
|  21 |             NESTED LOOPS                |                  |     1 |   245 |       |     1   (0)| 00:00:01 |
|  22 |              NESTED LOOPS               |                  |     1 |   234 |       |     0   (0)| 00:00:01 |
|* 23 |               FIXED TABLE FULL          | X$KCCFN          |     1 |   182 |       |     0   (0)| 00:00:01 |
|* 24 |               FIXED TABLE FIXED INDEX   | X$KTFBHC (ind:1) |     1 |    52 |       |     0   (0)| 00:00:01 |
|* 25 |              TABLE ACCESS BY INDEX ROWID| FILE$            |     1 |    11 |       |     1   (0)| 00:00:01 |
|* 26 |               INDEX UNIQUE SCAN         | I_FILE1          |     1 |       |       |     0   (0)| 00:00:01 |
|* 27 |             FIXED TABLE FIXED INDEX     | X$KCCFE (ind:1)  |     1 |    13 |       |     0   (0)| 00:00:01 |
|  28 |            TABLE ACCESS CLUSTER         | TS$              |     1 |    21 |       |     1   (0)| 00:00:01 |
|* 29 |             INDEX UNIQUE SCAN           | I_TS#            |     1 |       |       |     0   (0)| 00:00:01 |
|* 30 |       TABLE ACCESS BY INDEX ROWID       | TS$              |     1 |    23 |       |     1   (0)| 00:00:01 |
|* 31 |        INDEX UNIQUE SCAN                | I_TS1            |     1 |       |       |     0   (0)| 00:00:01 |
|  32 |      VIEW                               |                  |  3507 |   102K|       |  2552K(100)| 08:30:27 |
|  33 |       HASH GROUP BY                     |                  |  3507 |   102K|       |  2552K(100)| 08:30:27 |
|  34 |        VIEW                             | DBA_FREE_SPACE   |  3507 |   102K|       |  2552K(100)| 08:30:27 |
|  35 |         UNION-ALL                       |                  |       |       |       |            |          |
|  36 |          NESTED LOOPS                   |                  |     1 |    71 |       |     4   (0)| 00:00:01 |
|  37 |           NESTED LOOPS                  |                  |     1 |    46 |       |     3   (0)| 00:00:01 |
|  38 |            TABLE ACCESS FULL            | FET$             |     1 |    39 |       |     3   (0)| 00:00:01 |
|* 39 |            INDEX UNIQUE SCAN            | I_FILE2          |     1 |     7 |       |     0   (0)| 00:00:01 |
|* 40 |           TABLE ACCESS CLUSTER          | TS$              |     1 |    25 |       |     1   (0)| 00:00:01 |
|  41 |          NESTED LOOPS                   |                  |    70 |  5390 |       |    11   (0)| 00:00:01 |
|  42 |           NESTED LOOPS                  |                  |    70 |  4900 |       |    11   (0)| 00:00:01 |
|* 43 |            TABLE ACCESS FULL            | TS$              |    29 |   899 |       |    11   (0)| 00:00:01 |
|* 44 |            FIXED TABLE FIXED INDEX      | X$KTFBFE (ind:1) |     2 |    78 |       |     0   (0)| 00:00:01 |
|* 45 |           INDEX UNIQUE SCAN             | I_FILE2          |     1 |     7 |       |     0   (0)| 00:00:01 |
|  46 |          NESTED LOOPS                   |                  |  3435 |   385K|       |  2552K(100)| 08:30:26 |
|  47 |           NESTED LOOPS                  |                  | 96156 |     9M|       |  2552K(100)| 08:30:26 |
|* 48 |            HASH JOIN                    |                  |   354K|    14M|  8632K|  1538   (1)| 00:00:19 |
|  49 |             TABLE ACCESS FULL           | RECYCLEBIN$      |   368K|  4314K|       |  1103   (1)| 00:00:14 |
|* 50 |             TABLE ACCESS FULL           | TS$              |    29 |   899 |       |    11   (0)| 00:00:01 |
|* 51 |            FIXED TABLE FIXED INDEX      | X$KTFBUE (ind:1) |     1 |    65 |       |     7 (100)| 00:00:01 |
|* 52 |           INDEX UNIQUE SCAN             | I_FILE2          |     1 |     7 |       |     0   (0)| 00:00:01 |
|* 53 |          TABLE ACCESS BY INDEX ROWID    | RECYCLEBIN$      |     1 |    12 |       |     2   (0)| 00:00:01 |
|  54 |           NESTED LOOPS                  |                  |     1 |    96 |       |    17   (0)| 00:00:01 |
|  55 |            NESTED LOOPS                 |                  |     1 |    84 |       |    15   (0)| 00:00:01 |
|  56 |             NESTED LOOPS                |                  |     1 |    59 |       |    14   (0)| 00:00:01 |
|  57 |              TABLE ACCESS FULL          | UET$             |     1 |    52 |       |    14   (0)| 00:00:01 |
|* 58 |              INDEX UNIQUE SCAN          | I_FILE2          |     1 |     7 |       |     0   (0)| 00:00:01 |
|* 59 |             TABLE ACCESS CLUSTER        | TS$              |     1 |    25 |       |     1   (0)| 00:00:01 |
|* 60 |              INDEX UNIQUE SCAN          | I_TS#            |     1 |       |       |     0   (0)| 00:00:01 |
|* 61 |            INDEX RANGE SCAN             | RECYCLEBIN$_TS   | 61368 |       |       |     2   (0)| 00:00:01 |
|  62 |   NESTED LOOPS                          |                  |     1 |    39 |       |  2552K(100)| 08:30:27 |
|  63 |    VIEW                                 |                  |     1 |    13 |       |  2552K(100)| 08:30:27 |
|  64 |     SORT AGGREGATE                      |                  |     1 |    13 |       |            |          |
|  65 |      VIEW                               | DBA_FREE_SPACE   |  3507 | 45591 |       |  2552K(100)| 08:30:27 |
|  66 |       UNION-ALL                         |                  |       |       |       |            |          |
|  67 |        NESTED LOOPS                     |                  |     1 |    57 |       |     4   (0)| 00:00:01 |
|  68 |         NESTED LOOPS                    |                  |     1 |    46 |       |     3   (0)| 00:00:01 |
|  69 |          TABLE ACCESS FULL              | FET$             |     1 |    39 |       |     3   (0)| 00:00:01 |
|* 70 |          INDEX UNIQUE SCAN              | I_FILE2          |     1 |     7 |       |     0   (0)| 00:00:01 |
|* 71 |         TABLE ACCESS CLUSTER            | TS$              |     1 |    11 |       |     1   (0)| 00:00:01 |
|  72 |        NESTED LOOPS                     |                  |    70 |  4410 |       |    11   (0)| 00:00:01 |
|  73 |         NESTED LOOPS                    |                  |    70 |  3920 |       |    11   (0)| 00:00:01 |
|* 74 |          TABLE ACCESS FULL              | TS$              |    29 |   493 |       |    11   (0)| 00:00:01 |
|* 75 |          FIXED TABLE FIXED INDEX        | X$KTFBFE (ind:1) |     2 |    78 |       |     0   (0)| 00:00:01 |
|* 76 |         INDEX UNIQUE SCAN               | I_FILE2          |     1 |     7 |       |     0   (0)| 00:00:01 |
|  77 |        NESTED LOOPS                     |                  |  3435 |   338K|       |  2552K(100)| 08:30:26 |
|  78 |         NESTED LOOPS                    |                  | 96156 |  8826K|       |  2552K(100)| 08:30:26 |
|* 79 |          HASH JOIN                      |                  |   354K|     9M|  8632K|  1538   (1)| 00:00:19 |
|  80 |           TABLE ACCESS FULL             | RECYCLEBIN$      |   368K|  4314K|       |  1103   (1)| 00:00:14 |
|* 81 |           TABLE ACCESS FULL             | TS$              |    29 |   493 |       |    11   (0)| 00:00:01 |
|* 82 |          FIXED TABLE FIXED INDEX        | X$KTFBUE (ind:1) |     1 |    65 |       |     7 (100)| 00:00:01 |
|* 83 |         INDEX UNIQUE SCAN               | I_FILE2          |     1 |     7 |       |     0   (0)| 00:00:01 |
|* 84 |        TABLE ACCESS BY INDEX ROWID      | RECYCLEBIN$      |     1 |    12 |       |     2   (0)| 00:00:01 |
|  85 |         NESTED LOOPS                    |                  |     1 |    82 |       |    17   (0)| 00:00:01 |
|  86 |          NESTED LOOPS                   |                  |     1 |    70 |       |    15   (0)| 00:00:01 |
|  87 |           NESTED LOOPS                  |                  |     1 |    59 |       |    14   (0)| 00:00:01 |
|  88 |            TABLE ACCESS FULL            | UET$             |     1 |    52 |       |    14   (0)| 00:00:01 |
|* 89 |            INDEX UNIQUE SCAN            | I_FILE2          |     1 |     7 |       |     0   (0)| 00:00:01 |
|* 90 |           TABLE ACCESS CLUSTER          | TS$              |     1 |    11 |       |     1   (0)| 00:00:01 |
|* 91 |            INDEX UNIQUE SCAN            | I_TS#            |     1 |       |       |     0   (0)| 00:00:01 |
|* 92 |          INDEX RANGE SCAN               | RECYCLEBIN$_TS   | 61368 |       |       |     2   (0)| 00:00:01 |
|  93 |    VIEW                                 |                  |     1 |    26 |       |     4   (0)| 00:00:01 |
|  94 |     SORT AGGREGATE                      |                  |     1 |    13 |       |            |          |
|  95 |      VIEW                               | DBA_DATA_FILES   |     2 |    26 |       |     4   (0)| 00:00:01 |
|  96 |       UNION-ALL                         |                  |       |       |       |            |          |
|  97 |        NESTED LOOPS                     |                  |     1 |   222 |       |     2   (0)| 00:00:01 |
|  98 |         NESTED LOOPS                    |                  |     1 |   215 |       |     1   (0)| 00:00:01 |
|  99 |          NESTED LOOPS                   |                  |     1 |   202 |       |     1   (0)| 00:00:01 |
|*100 |           FIXED TABLE FULL              | X$KCCFN          |     1 |   182 |       |     0   (0)| 00:00:01 |
|*101 |           TABLE ACCESS BY INDEX ROWID   | FILE$            |     1 |    20 |       |     1   (0)| 00:00:01 |
|*102 |            INDEX UNIQUE SCAN            | I_FILE1          |     1 |       |       |     0   (0)| 00:00:01 |
|*103 |          FIXED TABLE FIXED INDEX        | X$KCCFE (ind:1)  |     1 |    13 |       |     0   (0)| 00:00:01 |
| 104 |         TABLE ACCESS CLUSTER            | TS$              |     1 |     7 |       |     1   (0)| 00:00:01 |
|*105 |          INDEX UNIQUE SCAN              | I_TS#            |     1 |       |       |     0   (0)| 00:00:01 |
| 106 |        NESTED LOOPS                     |                  |     1 |   265 |       |     2   (0)| 00:00:01 |
| 107 |         NESTED LOOPS                    |                  |     1 |   258 |       |     1   (0)| 00:00:01 |
| 108 |          NESTED LOOPS                   |                  |     1 |   245 |       |     1   (0)| 00:00:01 |
| 109 |           NESTED LOOPS                  |                  |     1 |   234 |       |     0   (0)| 00:00:01 |
|*110 |            FIXED TABLE FULL             | X$KCCFN          |     1 |   182 |       |     0   (0)| 00:00:01 |
|*111 |            FIXED TABLE FIXED INDEX      | X$KTFBHC (ind:1) |     1 |    52 |       |     0   (0)| 00:00:01 |
|*112 |           TABLE ACCESS BY INDEX ROWID   | FILE$            |     1 |    11 |       |     1   (0)| 00:00:01 |
|*113 |            INDEX UNIQUE SCAN            | I_FILE1          |     1 |       |       |     0   (0)| 00:00:01 |
|*114 |          FIXED TABLE FIXED INDEX        | X$KCCFE (ind:1)  |     1 |    13 |       |     0   (0)| 00:00:01 |
| 115 |         TABLE ACCESS CLUSTER            | TS$              |     1 |     7 |       |     1   (0)| 00:00:01 |
|*116 |          INDEX UNIQUE SCAN              | I_TS#            |     1 |       |       |     0   (0)| 00:00:01 |
| 117 |   FAST DUAL                             |                  |     1 |       |       |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------------------------

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

   4 - access("TS"."NAME"="FR1"."TABLESPACE_NAME")
  13 - filter("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4)
  14 - filter("F"."SPARE1" IS NULL)
  15 - access("FNFNO"="F"."FILE#")
  16 - filter("FE"."FENUM"="F"."FILE#")
  18 - access("F"."TS#"="TS"."TS#")
  23 - filter("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4)
  24 - filter("FNFNO"="HC"."KTFBHCAFNO")
  25 - filter("F"."SPARE1" IS NOT NULL)
  26 - access("FNFNO"="F"."FILE#")
  27 - filter("FE"."FENUM"="F"."FILE#")
  29 - access("HC"."KTFBHCTSN"="TS"."TS#")
  30 - filter("TS"."ONLINE$"<>3 AND BITAND("FLAGS",2048)<>2048)
  31 - access("TS"."NAME"="DF1"."TABLESPACE_NAME")
  39 - access("F"."TS#"="FI"."TS#" AND "F"."FILE#"="FI"."RELFILE#")
  40 - filter("TS"."BITMAPPED"=0 AND "TS"."TS#"="F"."TS#")
  43 - filter(("TS"."ONLINE$"=1 OR "TS"."ONLINE$"=4) AND "TS"."CONTENTS$"=0 AND "TS"."BITMAPPED"<>0)
  44 - filter("TS"."TS#"="F"."KTFBFETSN")
  45 - access("F"."KTFBFETSN"="FI"."TS#" AND "F"."KTFBFEFNO"="FI"."RELFILE#")
  48 - access("TS"."TS#"="RB"."TS#")
  50 - filter(("TS"."ONLINE$"=1 OR "TS"."ONLINE$"=4) AND "TS"."CONTENTS$"=0 AND "TS"."BITMAPPED"<>0)
  51 - filter("U"."KTFBUESEGTSN"="RB"."TS#" AND "U"."KTFBUESEGFNO"="RB"."FILE#" AND
              "U"."KTFBUESEGBNO"="RB"."BLOCK#")
  52 - access("RB"."TS#"="FI"."TS#" AND "U"."KTFBUEFNO"="FI"."RELFILE#")
  53 - filter("U"."SEGFILE#"="RB"."FILE#" AND "U"."SEGBLOCK#"="RB"."BLOCK#")
  58 - access("U"."TS#"="FI"."TS#" AND "U"."SEGFILE#"="FI"."RELFILE#")
  59 - filter("TS"."BITMAPPED"=0)
  60 - access("TS"."TS#"="U"."TS#")
  61 - access("U"."TS#"="RB"."TS#")
  70 - access("F"."TS#"="FI"."TS#" AND "F"."FILE#"="FI"."RELFILE#")
  71 - filter("TS"."BITMAPPED"=0 AND "TS"."TS#"="F"."TS#")
  74 - filter(("TS"."ONLINE$"=1 OR "TS"."ONLINE$"=4) AND "TS"."CONTENTS$"=0 AND "TS"."BITMAPPED"<>0)
  75 - filter("TS"."TS#"="F"."KTFBFETSN")
  76 - access("F"."KTFBFETSN"="FI"."TS#" AND "F"."KTFBFEFNO"="FI"."RELFILE#")
  79 - access("TS"."TS#"="RB"."TS#")
  81 - filter(("TS"."ONLINE$"=1 OR "TS"."ONLINE$"=4) AND "TS"."CONTENTS$"=0 AND "TS"."BITMAPPED"<>0)
  82 - filter("U"."KTFBUESEGTSN"="RB"."TS#" AND "U"."KTFBUESEGFNO"="RB"."FILE#" AND
              "U"."KTFBUESEGBNO"="RB"."BLOCK#")
  83 - access("RB"."TS#"="FI"."TS#" AND "U"."KTFBUEFNO"="FI"."RELFILE#")
  84 - filter("U"."SEGFILE#"="RB"."FILE#" AND "U"."SEGBLOCK#"="RB"."BLOCK#")
  89 - access("U"."TS#"="FI"."TS#" AND "U"."SEGFILE#"="FI"."RELFILE#")
  90 - filter("TS"."BITMAPPED"=0)
  91 - access("TS"."TS#"="U"."TS#")
  92 - access("U"."TS#"="RB"."TS#")
 100 - filter("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4)
 101 - filter("F"."SPARE1" IS NULL)
 102 - access("FNFNO"="F"."FILE#")
 103 - filter("FE"."FENUM"="F"."FILE#")
 105 - access("F"."TS#"="TS"."TS#")
 110 - filter("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4)
 111 - filter("FNFNO"="HC"."KTFBHCAFNO")
 112 - filter("F"."SPARE1" IS NOT NULL)
 113 - access("FNFNO"="F"."FILE#")
 114 - filter("FE"."FENUM"="F"."FILE#")
 116 - access("HC"."KTFBHCTSN"="TS"."TS#")


Statistics
----------------------------------------------------------
   18098002  recursive calls         1800W 的递归调用
       7676  db block gets
    3986596  consistent gets         398W 逻辑读
     790235  physical reads          79W 物理读
          0  redo size
       2730  bytes sent via SQL*Net to client
        514  bytes received via SQL*Net from client
          4  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
         31  rows processed
         


这一次他跑了 50分钟,不过这个也太坑爹了,查询一个表空间使用率居然都这么久 ,抓狂去吧

我们来看一下执行计划, 看到 关键东西没, RECYCLEBIN$ ----这玩儿368K

于是让他 purge dba_recyclebin   --这个操作执行了13个小时左右  ,可见他们系统 回收站表只多。。。。

清理完之后,执行SQL

SQL> set timing on
SQL>       col tablespace_name format a30;
SQL>       col monitor_date format a20;      
SQL>       select * from 
  2            (
  3              select ts.tablespace_name,ts.contents "TABLESPACE_TYPE",
  4                     to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') monitor_date,
  5                     datafiles,total_gb  "TOTAL_SIZE_GB",
  6                    (total_gb-free_gb) "USED_SIZE_GB",
  7                     free_gb "FREE_SIZE_GB",
  8                     round((100-free_gb/total_gb*100),2) "USED_PCT",
  9                     round(free_gb/total_gb*100,2) "FREE_PCT" 
 10              from  dba_tablespaces ts,
 11                    (select tablespace_name,round(sum(bytes)/1024/1024/1024,2) free_gb 
 12                     from dba_free_space group by tablespace_name) fr1,
 13                    (select tablespace_name,round(sum(bytes)/1024/1024/1024,2) total_gb,count(*) datafiles  
 14                     from dba_data_files group by tablespace_name) df1 
 15              where ts.tablespace_name=fr1.tablespace_name and ts.tablespace_name=df1.tablespace_name order by "FREE_PCT"
 16            ) 
 17        union all
 18        select 'TOTAL SUMMARY:','ALL',to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') monitor_date,datafiles,
 19               total_gb "TOTAL_SIZE_GB",
 20               round(total_gb-free_gb,2) "USED_SIZE_GB",
 21               free_gb "FREE_SIZE_GB",
 22               round((100-free_gb/total_gb*100),2) "USED_PCT",
 23               round(free_gb/total_gb*100,2) "FREE_PCT" 
 24        from  (select round(sum(bytes)/1024/1024/1024,2) free_gb from dba_free_space) fr2,
 25              (select count(*) datafiles,round(sum(bytes)/1024/1024/1024,2) total_gb from dba_data_files) df2
 26        union all
 27        select null,null,null,null,null,null,null,null,null from dual;

 
 
   ......



31 rows selected.

Elapsed: 00:00:14.28    --14.28S 神啊!!



SQL> select * from table(dbms_xplan.display_cursor);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID  22d5kxqss44ws, child number 0
-------------------------------------
      select * from           (             select ts.tablespace_name,ts.contents "TABLESPACE_TYPE",
            to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') monitor_date,                    datafiles,total_gb
"TOTAL_SIZE_GB",                   (total_gb-free_gb) "USED_SIZE_GB",                    free_gb
"FREE_SIZE_GB",                    round((100-free_gb/total_gb*100),2) "USED_PCT",
round(free_gb/total_gb*100,2) "FREE_PCT"             from  dba_tablespaces ts,                   (select
tablespace_name,round(sum(bytes)/1024/1024/1024,2) free_gb                    from dba_free_space group by
tablespace_name) fr1,                   (select tablespace_name,round(sum(bytes)/1024/1024/1024,2)
total_gb,count(*) datafiles                    from dba_data_files group by tablespace_name) df1
 where ts.tablespace_name=fr1.tablespace_name and ts.tablespace_name=df1.tablespace_name order by
"FREE_PCT"           )       union all       select 'TOTAL SUMMARY:','

Plan hash value: 3463738489

--------------------------------------------------------------------------------------------------------------------
| Id  | Operation                               | Name             | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                        |                  |       |       |       |  3804K(100)|          |
|   1 |  UNION-ALL                              |                  |       |       |       |            |          |
|   2 |   VIEW                                  |                  |   138 | 15456 |       |  1902K(100)| 06:20:27 |
|   3 |    SORT ORDER BY                        |                  |   138 | 13248 |       |  1902K(100)| 06:20:27 |
|*  4 |     HASH JOIN                           |                  |   138 | 13248 |       |  1902K(100)| 06:20:27 |
|   5 |      NESTED LOOPS                       |                  |     2 |   132 |       |     7  (15)| 00:00:01 |
|   6 |       VIEW                              |                  |     2 |    86 |       |     5  (20)| 00:00:01 |
|   7 |        HASH GROUP BY                    |                  |     2 |    60 |       |     5  (20)| 00:00:01 |
|   8 |         VIEW                            | DBA_DATA_FILES   |     2 |    60 |       |     4   (0)| 00:00:01 |
|   9 |          UNION-ALL                      |                  |       |       |       |            |          |
|  10 |           NESTED LOOPS                  |                  |     1 |   236 |       |     2   (0)| 00:00:01 |
|  11 |            NESTED LOOPS                 |                  |     1 |   215 |       |     1   (0)| 00:00:01 |
|  12 |             NESTED LOOPS                |                  |     1 |   202 |       |     1   (0)| 00:00:01 |
|* 13 |              FIXED TABLE FULL           | X$KCCFN          |     1 |   182 |       |     0   (0)|          |
|* 14 |              TABLE ACCESS BY INDEX ROWID| FILE$            |     1 |    20 |       |     1   (0)| 00:00:01 |
|* 15 |               INDEX UNIQUE SCAN         | I_FILE1          |     1 |       |       |     0   (0)|          |
|* 16 |             FIXED TABLE FIXED INDEX     | X$KCCFE (ind:1)  |     1 |    13 |       |     0   (0)|          |
|  17 |            TABLE ACCESS CLUSTER         | TS$              |     1 |    21 |       |     1   (0)| 00:00:01 |
|* 18 |             INDEX UNIQUE SCAN           | I_TS#            |     1 |       |       |     0   (0)|          |
|  19 |           NESTED LOOPS                  |                  |     1 |   279 |       |     2   (0)| 00:00:01 |
|  20 |            NESTED LOOPS                 |                  |     1 |   258 |       |     1   (0)| 00:00:01 |
|  21 |             NESTED LOOPS                |                  |     1 |   245 |       |     1   (0)| 00:00:01 |
|  22 |              NESTED LOOPS               |                  |     1 |   234 |       |     0   (0)|          |
|* 23 |               FIXED TABLE FULL          | X$KCCFN          |     1 |   182 |       |     0   (0)|          |
|* 24 |               FIXED TABLE FIXED INDEX   | X$KTFBHC (ind:1) |     1 |    52 |       |     0   (0)|          |
|* 25 |              TABLE ACCESS BY INDEX ROWID| FILE$            |     1 |    11 |       |     1   (0)| 00:00:01 |
|* 26 |               INDEX UNIQUE SCAN         | I_FILE1          |     1 |       |       |     0   (0)|          |
|* 27 |             FIXED TABLE FIXED INDEX     | X$KCCFE (ind:1)  |     1 |    13 |       |     0   (0)|          |
|  28 |            TABLE ACCESS CLUSTER         | TS$              |     1 |    21 |       |     1   (0)| 00:00:01 |
|* 29 |             INDEX UNIQUE SCAN           | I_TS#            |     1 |       |       |     0   (0)|          |
|* 30 |       TABLE ACCESS BY INDEX ROWID       | TS$              |     1 |    23 |       |     1   (0)| 00:00:01 |
|* 31 |        INDEX UNIQUE SCAN                | I_TS1            |     1 |       |       |     0   (0)|          |
|  32 |      VIEW                               |                  |  3501 |   102K|       |  1902K(100)| 06:20:27 |
|  33 |       HASH GROUP BY                     |                  |  3501 |   102K|       |  1902K(100)| 06:20:27 |
|  34 |        VIEW                             | DBA_FREE_SPACE   |  3501 |   102K|       |  1902K(100)| 06:20:27 |
|  35 |         UNION-ALL                       |                  |       |       |       |            |          |
|  36 |          NESTED LOOPS                   |                  |     1 |    71 |       |     4   (0)| 00:00:01 |
|  37 |           NESTED LOOPS                  |                  |     1 |    46 |       |     3   (0)| 00:00:01 |
|  38 |            TABLE ACCESS FULL            | FET$             |     1 |    39 |       |     3   (0)| 00:00:01 |
|* 39 |            INDEX UNIQUE SCAN            | I_FILE2          |     1 |     7 |       |     0   (0)|          |
|* 40 |           TABLE ACCESS CLUSTER          | TS$              |     1 |    25 |       |     1   (0)| 00:00:01 |
|  41 |          NESTED LOOPS                   |                  |    70 |  5390 |       |    11   (0)| 00:00:01 |
|  42 |           NESTED LOOPS                  |                  |    70 |  4900 |       |    11   (0)| 00:00:01 |
|* 43 |            TABLE ACCESS FULL            | TS$              |    29 |   899 |       |    11   (0)| 00:00:01 |
|* 44 |            FIXED TABLE FIXED INDEX      | X$KTFBFE (ind:1) |     2 |    78 |       |     0   (0)|          |
|* 45 |           INDEX UNIQUE SCAN             | I_FILE2          |     1 |     7 |       |     0   (0)|          |
|  46 |          NESTED LOOPS                   |                  |  3429 |   385K|       |  1902K(100)| 06:20:27 |
|  47 |           NESTED LOOPS                  |                  | 96108 |     9M|       |  1902K(100)| 06:20:27 |
|* 48 |            HASH JOIN                    |                  |   263K|    10M|  6440K|  1531   (1)| 00:00:19 |
|  49 |             TABLE ACCESS FULL           | RECYCLEBIN$      |   274K|  3216K|       |  1204   (1)| 00:00:15 |
|* 50 |             TABLE ACCESS FULL           | TS$              |    29 |   899 |       |    11   (0)| 00:00:01 |
|* 51 |            FIXED TABLE FIXED INDEX      | X$KTFBUE (ind:1) |     1 |    65 |       |     7 (100)| 00:00:01 |
|* 52 |           INDEX UNIQUE SCAN             | I_FILE2          |     1 |     7 |       |     0   (0)|          |
|* 53 |          TABLE ACCESS BY INDEX ROWID    | RECYCLEBIN$      |     1 |    12 |       |     2   (0)| 00:00:01 |
|  54 |           NESTED LOOPS                  |                  |     1 |    96 |       |    17   (0)| 00:00:01 |
|  55 |            NESTED LOOPS                 |                  |     1 |    84 |       |    15   (0)| 00:00:01 |
|  56 |             NESTED LOOPS                |                  |     1 |    59 |       |    14   (0)| 00:00:01 |
|  57 |              TABLE ACCESS FULL          | UET$             |     1 |    52 |       |    14   (0)| 00:00:01 |
|* 58 |              INDEX UNIQUE SCAN          | I_FILE2          |     1 |     7 |       |     0   (0)|          |
|* 59 |             TABLE ACCESS CLUSTER        | TS$              |     1 |    25 |       |     1   (0)| 00:00:01 |
|* 60 |              INDEX UNIQUE SCAN          | I_TS#            |     1 |       |       |     0   (0)|          |
|* 61 |            INDEX RANGE SCAN             | RECYCLEBIN$_TS   | 54903 |       |       |     2   (0)| 00:00:01 |
|  62 |   NESTED LOOPS                          |                  |     1 |    39 |       |  1902K(100)| 06:20:27 |
|  63 |    VIEW                                 |                  |     1 |    13 |       |  1902K(100)| 06:20:27 |
|  64 |     SORT AGGREGATE                      |                  |     1 |    13 |       |            |          |
|  65 |      VIEW                               | DBA_FREE_SPACE   |  3501 | 45513 |       |  1902K(100)| 06:20:27 |
|  66 |       UNION-ALL                         |                  |       |       |       |            |          |
|  67 |        NESTED LOOPS                     |                  |     1 |    57 |       |     4   (0)| 00:00:01 |
|  68 |         NESTED LOOPS                    |                  |     1 |    46 |       |     3   (0)| 00:00:01 |
|  69 |          TABLE ACCESS FULL              | FET$             |     1 |    39 |       |     3   (0)| 00:00:01 |
|* 70 |          INDEX UNIQUE SCAN              | I_FILE2          |     1 |     7 |       |     0   (0)|          |
|* 71 |         TABLE ACCESS CLUSTER            | TS$              |     1 |    11 |       |     1   (0)| 00:00:01 |
|  72 |        NESTED LOOPS                     |                  |    70 |  4410 |       |    11   (0)| 00:00:01 |
|  73 |         NESTED LOOPS                    |                  |    70 |  3920 |       |    11   (0)| 00:00:01 |
|* 74 |          TABLE ACCESS FULL              | TS$              |    29 |   493 |       |    11   (0)| 00:00:01 |
|* 75 |          FIXED TABLE FIXED INDEX        | X$KTFBFE (ind:1) |     2 |    78 |       |     0   (0)|          |
|* 76 |         INDEX UNIQUE SCAN               | I_FILE2          |     1 |     7 |       |     0   (0)|          |
|  77 |        NESTED LOOPS                     |                  |  3429 |   338K|       |  1902K(100)| 06:20:27 |
|  78 |         NESTED LOOPS                    |                  | 96108 |  8822K|       |  1902K(100)| 06:20:27 |
|* 79 |          HASH JOIN                      |                  |   263K|  7471K|  6440K|  1531   (1)| 00:00:19 |
|  80 |           TABLE ACCESS FULL             | RECYCLEBIN$      |   274K|  3216K|       |  1204   (1)| 00:00:15 |
|* 81 |           TABLE ACCESS FULL             | TS$              |    29 |   493 |       |    11   (0)| 00:00:01 |
|* 82 |          FIXED TABLE FIXED INDEX        | X$KTFBUE (ind:1) |     1 |    65 |       |     7 (100)| 00:00:01 |
|* 83 |         INDEX UNIQUE SCAN               | I_FILE2          |     1 |     7 |       |     0   (0)|          |
|* 84 |        TABLE ACCESS BY INDEX ROWID      | RECYCLEBIN$      |     1 |    12 |       |     2   (0)| 00:00:01 |
|  85 |         NESTED LOOPS                    |                  |     1 |    82 |       |    17   (0)| 00:00:01 |
|  86 |          NESTED LOOPS                   |                  |     1 |    70 |       |    15   (0)| 00:00:01 |
|  87 |           NESTED LOOPS                  |                  |     1 |    59 |       |    14   (0)| 00:00:01 |
|  88 |            TABLE ACCESS FULL            | UET$             |     1 |    52 |       |    14   (0)| 00:00:01 |
|* 89 |            INDEX UNIQUE SCAN            | I_FILE2          |     1 |     7 |       |     0   (0)|          |
|* 90 |           TABLE ACCESS CLUSTER          | TS$              |     1 |    11 |       |     1   (0)| 00:00:01 |
|* 91 |            INDEX UNIQUE SCAN            | I_TS#            |     1 |       |       |     0   (0)|          |
|* 92 |          INDEX RANGE SCAN               | RECYCLEBIN$_TS   | 54903 |       |       |     2   (0)| 00:00:01 |
|  93 |    VIEW                                 |                  |     1 |    26 |       |     4   (0)| 00:00:01 |
|  94 |     SORT AGGREGATE                      |                  |     1 |    13 |       |            |          |
|  95 |      VIEW                               | DBA_DATA_FILES   |     2 |    26 |       |     4   (0)| 00:00:01 |
|  96 |       UNION-ALL                         |                  |       |       |       |            |          |
|  97 |        NESTED LOOPS                     |                  |     1 |   222 |       |     2   (0)| 00:00:01 |
|  98 |         NESTED LOOPS                    |                  |     1 |   215 |       |     1   (0)| 00:00:01 |
|  99 |          NESTED LOOPS                   |                  |     1 |   202 |       |     1   (0)| 00:00:01 |
|*100 |           FIXED TABLE FULL              | X$KCCFN          |     1 |   182 |       |     0   (0)|          |
|*101 |           TABLE ACCESS BY INDEX ROWID   | FILE$            |     1 |    20 |       |     1   (0)| 00:00:01 |
|*102 |            INDEX UNIQUE SCAN            | I_FILE1          |     1 |       |       |     0   (0)|          |
|*103 |          FIXED TABLE FIXED INDEX        | X$KCCFE (ind:1)  |     1 |    13 |       |     0   (0)|          |
| 104 |         TABLE ACCESS CLUSTER            | TS$              |     1 |     7 |       |     1   (0)| 00:00:01 |
|*105 |          INDEX UNIQUE SCAN              | I_TS#            |     1 |       |       |     0   (0)|          |
| 106 |        NESTED LOOPS                     |                  |     1 |   265 |       |     2   (0)| 00:00:01 |
| 107 |         NESTED LOOPS                    |                  |     1 |   258 |       |     1   (0)| 00:00:01 |
| 108 |          NESTED LOOPS                   |                  |     1 |   245 |       |     1   (0)| 00:00:01 |
| 109 |           NESTED LOOPS                  |                  |     1 |   234 |       |     0   (0)|          |
|*110 |            FIXED TABLE FULL             | X$KCCFN          |     1 |   182 |       |     0   (0)|          |
|*111 |            FIXED TABLE FIXED INDEX      | X$KTFBHC (ind:1) |     1 |    52 |       |     0   (0)|          |
|*112 |           TABLE ACCESS BY INDEX ROWID   | FILE$            |     1 |    11 |       |     1   (0)| 00:00:01 |
|*113 |            INDEX UNIQUE SCAN            | I_FILE1          |     1 |       |       |     0   (0)|          |
|*114 |          FIXED TABLE FIXED INDEX        | X$KCCFE (ind:1)  |     1 |    13 |       |     0   (0)|          |
| 115 |         TABLE ACCESS CLUSTER            | TS$              |     1 |     7 |       |     1   (0)| 00:00:01 |
|*116 |          INDEX UNIQUE SCAN              | I_TS#            |     1 |       |       |     0   (0)|          |
| 117 |   FAST DUAL                             |                  |     1 |       |       |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------------------------

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

   4 - access("TS"."NAME"="FR1"."TABLESPACE_NAME")
  13 - filter(("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND
              BITAND("FNFLG",4)<>4))
  14 - filter("F"."SPARE1" IS NULL)
  15 - access("FNFNO"="F"."FILE#")
  16 - filter("FE"."FENUM"="F"."FILE#")
  18 - access("F"."TS#"="TS"."TS#")
  23 - filter(("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND
              BITAND("FNFLG",4)<>4))
  24 - filter("FNFNO"="HC"."KTFBHCAFNO")
  25 - filter("F"."SPARE1" IS NOT NULL)
  26 - access("FNFNO"="F"."FILE#")
  27 - filter("FE"."FENUM"="F"."FILE#")
  29 - access("HC"."KTFBHCTSN"="TS"."TS#")
  30 - filter(("TS"."ONLINE$"<>3 AND BITAND("FLAGS",2048)<>2048))
  31 - access("TS"."NAME"="DF1"."TABLESPACE_NAME")
  39 - access("F"."TS#"="FI"."TS#" AND "F"."FILE#"="FI"."RELFILE#")
  40 - filter(("TS"."BITMAPPED"=0 AND "TS"."TS#"="F"."TS#"))
  43 - filter((INTERNAL_FUNCTION("TS"."ONLINE$") AND "TS"."CONTENTS$"=0 AND "TS"."BITMAPPED"<>0))
  44 - filter("TS"."TS#"="F"."KTFBFETSN")
  45 - access("F"."KTFBFETSN"="FI"."TS#" AND "F"."KTFBFEFNO"="FI"."RELFILE#")
  48 - access("TS"."TS#"="RB"."TS#")
  50 - filter((INTERNAL_FUNCTION("TS"."ONLINE$") AND "TS"."CONTENTS$"=0 AND "TS"."BITMAPPED"<>0))
  51 - filter(("U"."KTFBUESEGTSN"="RB"."TS#" AND "U"."KTFBUESEGFNO"="RB"."FILE#" AND
              "U"."KTFBUESEGBNO"="RB"."BLOCK#"))
  52 - access("RB"."TS#"="FI"."TS#" AND "U"."KTFBUEFNO"="FI"."RELFILE#")
  53 - filter(("U"."SEGFILE#"="RB"."FILE#" AND "U"."SEGBLOCK#"="RB"."BLOCK#"))
  58 - access("U"."TS#"="FI"."TS#" AND "U"."SEGFILE#"="FI"."RELFILE#")
  59 - filter("TS"."BITMAPPED"=0)
  60 - access("TS"."TS#"="U"."TS#")
  61 - access("U"."TS#"="RB"."TS#")
  70 - access("F"."TS#"="FI"."TS#" AND "F"."FILE#"="FI"."RELFILE#")
  71 - filter(("TS"."BITMAPPED"=0 AND "TS"."TS#"="F"."TS#"))
  74 - filter((INTERNAL_FUNCTION("TS"."ONLINE$") AND "TS"."CONTENTS$"=0 AND "TS"."BITMAPPED"<>0))
  75 - filter("TS"."TS#"="F"."KTFBFETSN")
  76 - access("F"."KTFBFETSN"="FI"."TS#" AND "F"."KTFBFEFNO"="FI"."RELFILE#")
  79 - access("TS"."TS#"="RB"."TS#")
  81 - filter((INTERNAL_FUNCTION("TS"."ONLINE$") AND "TS"."CONTENTS$"=0 AND "TS"."BITMAPPED"<>0))
  82 - filter(("U"."KTFBUESEGTSN"="RB"."TS#" AND "U"."KTFBUESEGFNO"="RB"."FILE#" AND
              "U"."KTFBUESEGBNO"="RB"."BLOCK#"))
  83 - access("RB"."TS#"="FI"."TS#" AND "U"."KTFBUEFNO"="FI"."RELFILE#")
  84 - filter(("U"."SEGFILE#"="RB"."FILE#" AND "U"."SEGBLOCK#"="RB"."BLOCK#"))
  89 - access("U"."TS#"="FI"."TS#" AND "U"."SEGFILE#"="FI"."RELFILE#")
  90 - filter("TS"."BITMAPPED"=0)
  91 - access("TS"."TS#"="U"."TS#")
  92 - access("U"."TS#"="RB"."TS#")
 100 - filter(("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND
              BITAND("FNFLG",4)<>4))
 101 - filter("F"."SPARE1" IS NULL)
 102 - access("FNFNO"="F"."FILE#")
 103 - filter("FE"."FENUM"="F"."FILE#")
 105 - access("F"."TS#"="TS"."TS#")
 110 - filter(("FNNAM" IS NOT NULL AND "FNTYP"=4 AND "INST_ID"=USERENV('INSTANCE') AND
              BITAND("FNFLG",4)<>4))
 111 - filter("FNFNO"="HC"."KTFBHCAFNO")
 112 - filter("F"."SPARE1" IS NOT NULL)
 113 - access("FNFNO"="F"."FILE#")
 114 - filter("FE"."FENUM"="F"."FILE#")
 116 - access("HC"."KTFBHCTSN"="TS"."TS#")


201 rows selected.
 


现在14秒了,之前 50分钟啊。。。 也许你会问 为啥现在 RECYCLEBIN$还是有276K呢,这个别管了,不准确,你要想准确重新收集 数据字典统计信息吧。

运维DBA们,回收站还是要经常清理得好。

 

有系统需要优化的 加QQ群 220761024 有SQL 需要优化的 加我 QQ 692162374 注明 来自CSDN

posted on 2013-07-12 16:44  如果蜗牛有爱情  阅读(267)  评论(0编辑  收藏  举报

导航