︿
Top

2014年7月25日 星期五

Oracle Tablespace 使用狀況查詢

緣起

由於工作上的需求, 需評估目前 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 
;

以下為執行結果截圖

總結

當您在作 Oracle 資料庫移植前, 需要了解目前 Tablespace 的使用狀況, 才能在另一台主機, 預先配置磁碟空間; 此時可以用到這個指令.

參考文件

沒有留言:

張貼留言