緣起
由於工作上的需求, 需評估目前 Oracle 資料庫的磁碟空間使用狀況, 故 Google 了一下資料, 留作日後查詢之用.在執行時, 請以 Oracle DBA 的身份登入
sqlplus sys/password@MyOracle as sysdba
以下主要用到 DBA_DATA_FILES 和 DBA_FREE_SPACE這兩個View, 會呈現整個資料庫所有 tablespace 的使用狀況; 如果只想查某個 tablespace, 請將以下 -- WHERE TABLESPACE_NAME='My_Tablespace_Name' , 解除註解, 同時置換為實際的 tablespace name 即可.
SELECT A.TABLESPACE_NAME, A.FILE_NAME,
ROUND(B.FREE_GB,2) AS FREE_GB ,
ROUND(A.TOTAL_GB - b.FREE_GB) AS USED_GB ,
ROUND(A.TOTAL_GB,2) AS TOTAL_GB ,
ROUND(((A.TOTAL_GB - B.FREE_GB)/ A.TOTAL_GB )*100,2) AS USED_PERCENT,
ROUND((B.FREE_GB/ A.TOTAL_GB )*100,2) AS FREE_PERCENT
FROM
(
SELECT TABLESPACE_NAME, FILE_NAME,
SUM(BYTES)/ (1024*1024*1024) AS TOTAL_GB
FROM DBA_DATA_FILES
-- WHERE TABLESPACE_NAME='My_TableSpace_Name'
GROUP BY TABLESPACE_NAME, FILE_NAME
)A,
(
SELECT TABLESPACE_NAME,
SUM(BYTES) / (1024*1024*1024) AS FREE_GB
FROM DBA_FREE_SPACE
-- WHERE TABLESPACE_NAME='My_TableSpace_Name'
GROUP BY TABLESPACE_NAME
) B
WHERE A.TABLESPACE_NAME= B.TABLESPACE_NAME
;
以下為執行結果截圖

沒有留言:
張貼留言