查詢表空間及已使用的SQL語句
語句一:
select f.tablespace_name tablespace_name,
round((d.sumbytes / 1024 / 1024 / 1024), 2) total_g,
round(f.sumbytes / 1024 / 1024 / 1024, 2) free_g,
round((d.sumbytes - f.sumbytes) / 1024 / 1024 / 1024, 2) used_g,
round((d.sumbytes - f.sumbytes) * 100 / d.sumbytes, 2) used_percent
from
(select tablespace_name, sum(bytes) sumbytes from dba_free_space group by tablespace_name) f,
(select tablespace_name, sum(bytes) sumbytes from dba_data_files group by tablespace_name) d
where f.tablespace_name = d.tablespace_name
order by used_percent desc,d.tablespace_name;
語句二:
SELECT a.tablespace_name,
round(a.bytes/1024/1024/1024,2) total,
round(b.bytes/1024/1024/1024,2) used,
round(c.bytes/1024/1024/1024,2) free,
round((b.bytes * 100) / a.bytes,2) "% USED ",
round((c.bytes * 100) / a.bytes,2) "% FREE "
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c
WHERE a.tablespace_name = b.tablespace_name
AND a.tablespace_name = c.tablespace_name;
語句一:使用到的檢視有
dba_free_space
dba_data_files
語句二:使用到的檢視
檢視:SYS.SM$TS_AVAIL是由dba_data_files而來的
檢視:SYS.SM$TS_USED是由dba_segments而來的
檢視:SYS.SM$TS_FREE是由dba_free_space而來的
SELECT * FROM DBA_TABLESPACES -- 記錄各個表空間的詳細資訊
SELECT * FROM DBA_TABLESPACE_USAGE_METRICS -- 記錄各個表空間的使用狀況
SELECT * FROM DBA_DATA_FILES -- 記錄各個資料檔案的詳細資訊
SELECT * FROM DBA_SEGMENTS -- 記錄各個段的詳細資訊,與 DBA_TABLES,DBA_INDEXES,DBA_LOBS,DBA_PART_TABLES,DBA_PART_INDEXES,DBA_PART_LOBS,DBA_OBJECTS 搭配使用
SELECT * FROM DBA_LOBS --BLOB 欄位所對應的欄位名稱
SELECT * FROM DBA_INDEXES -- 分割槽索引需要通過 DBA_INDEXS 來找到對應的表名
SELECT * FROM DBA_EXTENTS -- 記錄各個區間物件的詳細資訊