首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 表空間使用率監控與擴充實務:查詢、分析、新增資料檔完整指南

     編輯:Oracle 資料庫基礎

1. 查詢所有表空間使用率

SELECT a.tablespace_name,
       a.bytes/1024/1024 AS "SUM_MB",
       (a.bytes-b.bytes)/1024/1024 AS "USED_MB",
       b.bytes/1024/1024 AS "FREE_MB",
       ROUND(((a.bytes-b.bytes)/a.bytes)*100,2) AS "PCT_USED"
FROM (SELECT tablespace_name, SUM(bytes) bytes FROM dba_data_files GROUP BY tablespace_name) a,
     (SELECT tablespace_name, SUM(bytes) bytes FROM dba_free_space GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
ORDER BY PCT_USED DESC;
  • SUM_MB:表空間所有資料檔在 OS 佔用的總大小。
  • USED_MB:已使用空間。
  • FREE_MB:剩餘可用空間。
  • PCT_USED:使用率百分比。

2. 檢視特定表空間資料檔細節 (是否 AUTOEXTEND、MAXSIZE)

SELECT file_name, tablespace_name,
       bytes/1024/1024 AS "CUR_MB",
       maxbytes/1024/1024 AS "MAX_MB",
       autoextensible
FROM dba_data_files
WHERE tablespace_name = 'MLOG_NORM_SPACE';

3. 取得表空間建立 DDL (供參考調整)

SELECT DBMS_METADATA.GET_DDL('TABLESPACE','MLOG_NORM_SPACE') FROM DUAL;

4. 新增資料檔擴充表空間

ALTER TABLESPACE MLOG_NORM_SPACE
ADD DATAFILE '/oracle/oms/oradata/mlog/Mlog_Norm_data001.dbf'
SIZE 10M AUTOEXTEND ON MAXSIZE 20G;

5. 驗證新增資料檔

SELECT file_name, file_id, tablespace_name
FROM dba_data_files
WHERE tablespace_name = 'MLOG_NORM_SPACE';

6. 移除資料檔 (謹慎操作)

ALTER TABLESPACE MLOG_NORM_SPACE
DROP DATAFILE '/oracle/oms/oradata/mlog/Mlog_Norm_data001.dbf';

注意:資料檔必須為空 (無段) 才能移除,否則會報錯。

作業建議

  • 定期排程執行第 1 條查詢,設定閾值 (如 >85%) 發送告警。
  • 檔案系統層面使用 df -h 確認磁碟剩餘空間再決定擴充大小。
  • 大表空間建議預先規劃多個資料檔分散於不同磁碟,提升 I/O 平行度。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved