Oracle 查詢各個 “表空間/資料檔案” 的空間使用比情況
本部落格寫於2014-08-28,後續完善的部落格為:Oracle 查詢各表空間使用情況--完善篇
註釋:
綠色部分SQL:庫中各個 '資料檔案' 的空間使用比情況;
藍色部分SQL:庫中各個 '表空間' 的空間使用比情況的2中方案;
用到檢視對應意義 最下文有官方解釋.
SQL:
--查詢 表空間 空間使用比情況
SELECT C.TABLESPACE_NAME,
SUM(DATAFILE_TOTAL_GB) TABLESPACE_TOTAL_GB,
SUM(DATAFILE_FREE_GB) TABLESPACE_FREE_GB,
SUM(DATAFILE_USER_GB) TABLESPACE_USER_GB,
ROUND(SUM ("DATAFILE_USER%") / COUNT( 1), 2 ) "TABLESPACE_USER%"
/*表空間使用比
解釋:按照TABLESPACE分組 ‘SUM使用比’/'COUNT(1)'資料檔案個數才是表空間使用比率
方案2) ROUND(SUM(USER_GB) / SUM(TOTAL_GB) * 100, 2)...因 子查詢USER_GB有用到ROUND四捨五入函式...沒上一種方式那麼準..*/
FROM ( SELECT DD.FILE_NAME, ---資料檔名
DD.TABLESPACE_NAME, ---表空間
ROUND(SUM (DD.DATAFILE_TOTAL_GB), 2) DATAFILE_TOTAL_GB,
ROUND(SUM (DF.DATAFILE_FREE_GB), 2) DATAFILE_FREE_GB,
ROUND(SUM (DD.DATAFILE_TOTAL_GB - DF.DATAFILE_FREE_GB), 2) DATAFILE_USER_GB,
--DATAFILE_USER_GB=DATAFILE_TOTAL_GB-DATAFILE_FREE_GB ..
--沒直接使用 DBA_DATA_FILES.USER_BYTES欄位的原因:
--該欄位記錄 資料檔案 使用到 的大小(包括TRUNCATE/DROP..釋放的空間)
ROUND((SUM (DD.DATAFILE_TOTAL_GB - DF.DATAFILE_FREE_GB) /
SUM(DD.DATAFILE_TOTAL_GB) * 100 ),
2) "DATAFILE_USER%" --USER%=DATAFILE_USER_GB/DATAFILE_TOTAL_GB
FROM (SELECT FILE_ID,
TABLESPACE_NAME,
FILE_NAME,
SUM(BYTES / 1024 / 1024 / 1024) DATAFILE_TOTAL_GB
FROM DBA_DATA_FILES DD
GROUP BY FILE_ID, FILE_NAME, TABLESPACE_NAME) DD
JOIN (SELECT SUM(D.BYTES / 1024 / 1024 / 1024) DATAFILE_FREE_GB,
--該處用ROUND'四捨五入'函式,而DATAFILE_TOTAL_GB沒用ROUND,可能導致外層結果集出現負'-'
--為了得到的USER% 更準確 子查詢不用ROUND '四捨五入'函式
FILE_ID,
D.TABLESPACE_NAME
FROM DBA_FREE_SPACE D
GROUP BY FILE_ID, D.TABLESPACE_NAME) DF
ON DD.FILE_ID = DF.FILE_ID
AND DD.TABLESPACE_NAME = DF.TABLESPACE_NAME
GROUP BY DD.FILE_NAME, DD.TABLESPACE_NAME
UNION ALL (SELECT F.FILE_NAME,
TF.TABLESPACE_NAME,
ROUND(TF.TABLESPACE_SIZE / 1024 / 1024 / 1024, 2),
ROUND(TF.FREE_SPACE / 1024 / 1024 / 1024, 2 ),
ROUND((TF.TABLESPACE_SIZE - TF.FREE_SPACE) / 1024 / 1024 / 1024,
2),
ROUND((TF.TABLESPACE_SIZE - TF.FREE_SPACE) /
TF.TABLESPACE_SIZE * 100,
2)
FROM DBA_TEMP_FREE_SPACE TF --臨時表空間 的空間分配情況
JOIN DBA_TEMP_FILES F --臨時表空間檔案屬性
ON F.TABLESPACE_NAME = TF.TABLESPACE_NAME)) C
GROUP BY C.TABLESPACE_NAME
ORDER BY TABLESPACE_NAME DESC ;
|
SQL:
--查詢 表空間 空間使用比情況 的第二種方案
--上一方案有相關解釋..在此不再介紹
SELECT DD.TABLESPACE_NAME,
ROUND (DD.TOTAL_GB, 2 ),
ROUND (DF.FREE_GB, 2 ),
ROUND ((DD.TOTAL_GB - DF.FREE_GB), 2 ) USER_GB,
ROUND ((DD.TOTAL_GB - DF.FREE_GB) / DD.TOTAL_GB * 100, 2 ) "USER%"
FROM ( SELECT TABLESPACE_NAME, SUM (BYTES / 1024 / 1024 / 1024 ) TOTAL_GB
FROM DBA_DATA_FILES DD
GROUP BY TABLESPACE_NAME) DD
JOIN ( SELECT A.TABLESPACE_NAME, SUM (A.BYTES / 1024 / 1024 / 1024 ) FREE_GB
FROM DBA_FREE_SPACE A
GROUP BY A.TABLESPACE_NAME) DF
ON DD.TABLESPACE_NAME = DF.TABLESPACE_NAME
UNION ALL ( SELECT TABLESPACE_NAME,
ROUND (TF.TABLESPACE_SIZE / 1024 / 1024 / 1024 , 2 ),
ROUND (TF.FREE_SPACE / 1024 / 1024 / 1024 , 2 ),
ROUND ((TF.TABLESPACE_SIZE - TF.FREE_SPACE) / 1024 / 1024 / 1024 ,
2 ),
ROUND ((TF.TABLESPACE_SIZE - TF.FREE_SPACE) /
TF.TABLESPACE_SIZE * 100 ,
2 )
FROM DBA_TEMP_FREE_SPACE TF);
|
檢視的解釋:
DBA_DATA_FILES = SHOWS FILES( DATA FILES) BELONGING TO TABLESPACES.
DBA_FREE_SPACE = INFORMATION ABOUT FREE EXTENTS WITHIN ALL TABLESPACES.
DBA_TEMP_FREE_SPACE = DISPLAYS THE TOTAL ALLOCATED AND FREE SPACE IN EACH TEMPORARY TABLESPACE.
DBA_TEMP_FILES = SHOWS FILES(TEMP FILES) BELONGING TO TEMPORARY TABLESPACES. FILES) BELONGING TO TEMPORARY TABLESPACES.
|
|
祝好~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-1266643/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle查詢表空間的空間佔用情況Oracle
- Oracle查詢表空間使用情況Oracle
- 臨時表空間的空間使用情況查詢
- ORACLE查詢所有表空間使用情況Oracle
- 查詢表空間使用情況
- 水煮orale22——查詢表空間使用資訊以及表空間中的每個資料檔案資訊
- oracle 表空間,臨時表空間使用率查詢Oracle
- Oracle查詢表空間使用情況(經典篇)Oracle
- oracle表空間查詢Oracle
- Oracle根據表名查詢表空間及資料檔案的地址Oracle
- 查詢表空間使用情況的指令碼指令碼
- Oracle 表空間與資料檔案Oracle
- oracle 資料檔案表空間管理Oracle
- 查詢表的大小及表空間的使用情況
- oracle表空間使用率查詢Oracle
- 檢查表空間、資料檔案、OS空間使用情況的指令碼指令碼
- 表空間使用情況查詢慢的處理
- 查詢表空間已使用空間和空閒空間的簡單檢視
- Oracle 查詢各表空間使用情況--完善篇Oracle
- 如何檢視Oracle資料庫表空間大小(空閒、已使用),是否要增加表空間的資料檔案...Oracle資料庫
- mysql 資料庫或者表空間使用查詢MySql資料庫
- oracle 表空間 資料檔案 筆記Oracle筆記
- Oracle 表空間資料檔案遷移Oracle
- oracle 回收表空間的資料檔案大小Oracle
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- Oracle查詢表佔磁碟空間大小及移動表空間Oracle
- 查詢表空間使用情況的簡單檢視
- oracle表及表空間使用情況Oracle
- MySQL innodb共享表空間新增表空間資料檔案方法MySql
- 移動資料檔案、系統表空間檔案、臨時表空間檔案
- Oracle各種表空間Oracle
- 表空間使用量查詢
- 查詢表空間的使用率
- oracle 普通表空間資料檔案壞塊Oracle
- 誤刪oracle資料庫表空間檔案Oracle資料庫
- Oracle 表空間增加檔案Oracle
- oracle誤刪除表空間的資料檔案Oracle
- Oracle 查詢表大小以及表空間使用率Oracle