表空间查询
/*now后缀的是当前的状态,max后缀的是自动扩展后所能达到的状态。*/ SELECT tablespace_name, --max_m, --count_blocks free_blk_cnt, sum_m - sum_free_m sum_used_m, sum_free_m sum_free_m_now, (sum_free_m + decode(sum_m_max, 0, sum_m, sum_m_max) - sum_m) sum_free_max, sum_m sum_m_now, decode(sum_m_max, 0, sum_m, sum_m_max) AS sum_m_max, to_char(100 * sum_free_m / sum_m, '99999.99') || '%' AS pct_free_now, to_char(100 * (sum_free_m + decode(sum_m_max, 0, sum_m, sum_m_max) - sum_m) / decode(sum_m_max, 0, sum_m, sum_m_max), '99999.99') || '%' AS pct_free_max FROM (SELECT tablespace_name, sum(bytes) / 1024 / 1024 AS sum_m, sum(decode(autoextensible, 'YES', decode(sign(bytes - maxbytes), '1', bytes, maxbytes), bytes)) / 1024 / 1024 AS sum_m_max FROM dba_data_files GROUP BY tablespace_name), (SELECT tablespace_name AS fs_ts_name, --max(bytes) / 1024 / 1024 AS max_m, --count(blocks) AS count_blocks, sum(bytes / 1024 / 1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name) WHERE tablespace_name = fs_ts_name(+) -- AND tablespace_name not like 'APPS%' ORDER BY 8; --表空间使用情况的查询sql。
SELECT a.tablespace_name , SUM(a.tots /1048576) Tot_Size, SUM(a.sumb /1048576) Tot_Free, SUM(a.sumb) *100/SUM(a.tots) Percent_Free, SUM(a.largest/1024) Max_Free, SUM(a.chunks) Chunks_Free FROM ( SELECT tablespace_name, 0 tots , SUM(bytes) sumb , MAX(bytes) largest , COUNT(*) chunks FROM dba_free_space a GROUP BY tablespace_name UNION SELECT tablespace_name, SUM(bytes) tots, 0,0,0 FROM dba_data_files GROUP BY tablespace_name ) a GROUP BY a.tablespace_name ORDER BY pct_free;
Script 1: Tablespace information SET linesize 150 column tablespace_name format a20 heading 'Tablespace' column sumb format 999,999,999 column extents format 9999 column bytes format 999,999,999,999 column largest format 999,999,999,999 column Tot_Size format 999,999 Heading 'Total| Size(Mb)' column Tot_Free format 999,999,999 heading 'Total Free(MB)' column Pct_Free format 999.99 heading '% Free' column Chunks_Free format 9999 heading 'No Of Ext.' column Max_Free format 999,999,999 heading 'Max Free(Kb)' SET echo OFF PROMPT FREE SPACE AVAILABLE IN TABLESPACES SELECT a.tablespace_name , SUM(a.tots /1048576) Tot_Size, SUM(a.sumb /1048576) Tot_Free, SUM(a.sumb) *100/SUM(a.tots) Percent_Free, SUM(a.largest/1024) Max_Free, SUM(a.chunks) Chunks_Free FROM ( SELECT tablespace_name, 0 tots , SUM(bytes) sumb , MAX(bytes) largest , COUNT(*) chunks FROM dba_free_space a GROUP BY tablespace_name UNION SELECT tablespace_name, SUM(bytes) tots, 0,0,0 FROM dba_data_files GROUP BY tablespace_name ) a GROUP BY a.tablespace_name ORDER BY pct_free; Output like: Total Tablespace Size(Mb) Total Free(MB) % Free Max Free(Kb) No Of Ext. -------------------- --------- -------------- ------- ------------ ---------- SYSTEM 790 3 .38 3,008 2 SYSAUX 752 52 6.86 32,768 132 USERS 5 1 11.25 576 1 MGMT_ECM_DEPOT_TS 100 43 43.25 43,968 2 MGMT_TABLESPACE 13,940 8,388 60.17 155,200 1594 UNDOTBS1 605 491 81.07 311,360 44 PATROL 1 1 93.75 960 1 Script 2: Tablespaces With Less Than 10% Free Space set pagesize 300 set linesize 100 column tablespace_name format a15 heading 'Tablespace' column sumb format 999,999,999 column extents format 9999 column bytes format 999,999,999,999 column largest format 999,999,999,999 column Tot_Size format 999,999 Heading 'Total Size(Mb)' column Tot_Free format 999,999,999 heading 'Total Free(Kb)' column Pct_Free format 999.99 heading '% Free' column Max_Free format 999,999,999 heading 'Max Free(Kb)' column Min_Add format 999,999,999 heading 'Min space add (MB)' ttitle center 'Tablespaces With Less Than 10% Free Space' skip 2 set echo off select a.tablespace_name,sum(a.tots/1048576) Tot_Size, sum(a.sumb/1024) Tot_Free, sum(a.sumb)*100/sum(a.tots) Pct_Free, ceil((((sum(a.tots) * 15) - (sum(a.sumb)*100))/85 )/1048576) Min_Add from ( select tablespace_name,0 tots,sum(bytes) sumb from dba_free_space a group by tablespace_name union select tablespace_name,sum(bytes) tots,0 from dba_data_files group by tablespace_name) a group by a.tablespace_name having sum(a.sumb)*100/sum(a.tots) < 10 order by pct_free;