記錄一次生產環境 ASM DATA 磁碟組剩餘空間僅 238 MB,導致表空間擴容失敗 ORA-15041: DISKGROUP "DATA" space exhausted 的完整處理過程:從緊急騰空、階段性回饋,到發現未使用儲存裝置並永久擴容。
巡檢發現照片業務表空間已滿,擴容報錯 ORA-15041。查詢 ASM 磁碟組狀態:
SQL> select group_number, name, total_mb, free_mb from v$ASM_DISKGROUP; GROUP_NUMBER NAME TOTAL_MB FREE_MB ------------ ---- -------- ------- 1 ARCH 860159 405817 2 CRS 30717 29791 3 DATA 1638394 238 <-- 極度不足
DATA 磁碟組僅剩 238 MB(約 1.6 TB 中),兩顆 DATA 磁碟各剩 112/126 MB。
UNDO、TEMP 及數個 GB 級表空間僅存幾 MB 資料。ALTER DATABASE TEMPFILE '...' RESIZE 1024M; 等縮減指令。臨時方案風險:UNDO/TEMP 縮減可能影響長交易與大排序,屬權宜之計。
photo_info47.dbf。[root@gzxkdb1 ~]# fdisk -l Disk /dev/emcpoweree: 2147.4 GB, 2147483648000 bytes ... doesn't contain a valid partition table <-- 未分區、未使用
[root@gzxkdb1 ~]# fdisk /dev/emcpoweree Command (m for help): n → p → 1 → +500G Command (m for help): n → p → 2 → +500G Command (m for help): n → p → 3 → +500G Command (m for help): n → p → 4 → (剩餘) Command (m for help): w
[root@gzxkdb1 ~]# service oracleasm createdisk DATA3 /dev/emcpoweree1 [root@gzxkdb1 ~]# service oracleasm createdisk DATA4 /dev/emcpoweree2 [root@gzxkdb1 ~]# service oracleasm createdisk DATA5 /dev/emcpoweree3 [root@gzxkdb1 ~]# service oracleasm createdisk DATA6 /dev/emcpoweree4 # 節點 2 執行 scandisks 同步磁碟清單
SQL> alter diskgroup DATA add disk '/dev/oracleasm/disks/DATA3' rebalance power 10; SQL> alter diskgroup DATA add disk '/dev/oracleasm/disks/DATA4' rebalance power 10; SQL> alter diskgroup DATA add disk '/dev/oracleasm/disks/DATA5' rebalance power 10; SQL> alter diskgroup DATA add disk '/dev/oracleasm/disks/DATA6' rebalance power 10;
監控 v$asm_operation,待 SOFAR = EST_WORK 且查無記錄表示 Rebalance 完成。
ASMCMD> lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Name MOUNTED EXTERN N ... 1638394 49590 ... DATA/ <-- 縮減後 MOUNTED EXTERN Y ... 3686390 2097561 ... DATA/ <-- 加入 4 顆磁碟後,近 2 TB 可用
DATA 磁碟組總容量從 1.6 TB 擴充至 3.6 TB,可用空間從 < 1 GB 飆升至 2.1 TB,滿足長期業務增長。
fdisk -l、lsblk、儲存陣列管理介面三方核對。ADD DISK ... REBALANCE POWER 線上重平衡,業務無感知。