Oracle ASM(Automatic Storage Management)磁盤組縮容操作需嚴格遵循「空間預檢 → 發起 DROP → 監控 REBALANCE → 驗證完成」流程。本文以 DATA 磁盤組移除 DATA2 磁盤為例,完整記錄 SQL 驗證、操作命令、狀態變遷、緊急回滾及最佳實踐。
-- 磁盤組與磁盤信息
GROUP_NUMBER GROUP_NAME NAME PATH STATE TOTAL_MB
------------ ---------- --------- --------------- -------- ----------
0 DATA DATA /dev/raw/raw4 NORMAL 8192
0 DATA DATA2 /dev/raw/raw6 NORMAL 8192
5 FRA FRA /dev/raw/raw5 NORMAL 8192
... (CRS 磁盤組省略)
目標:從 DATA 組移除 DATA2(/dev/raw/raw6),剩餘 DATA 需容納所有數據。
SELECT
a.GROUP_NUMBER,
a.DISK_NUMBER,
a.NAME,
DECODE(SIGN(a.FREE_MB - d.COLD_USED_MB/2), 1, 'Y', -1, 'N', 'N') AS "SPACE_OK"
FROM v$asm_diskgroup d, v$asm_disk a
WHERE a.GROUP_NUMBER = d.GROUP_NUMBER
AND a.GROUP_NUMBER = 2; -- DATA 組編號
邏輯解析:
d.COLD_USED_MB:磁盤組總體已用空間(冷數據)/2:假設兩磁盤數據均勻分布,移除一盤後單盤承擔一半a.FREE_MB:目標移除磁盤剩餘可用空間SIGN(...):剩餘空間 ≥ 需承擔空間 → 'Y' 安全;否則 'N' 拒絕⚠️ 生產建議:使用 ASM 官方預檢腳本或 ASMCMD dsget/lsdg 綜合評估,預留 20% 緩衝。
ALTER DISKGROUP DATA DROP DISK DATA2;
-- Diskgroup altered.
GROUP_NUMBER GROUP_NAME NAME PATH STATE TOTAL_MB
------------ ---------- ----- --------------- -------- ----------
0 DATA DATA2 /dev/raw/raw6 DROPPING 8192
0 DATA DATA /dev/raw/raw4 NORMAL 8192
... (其他組不變)
DROPPING 狀態:磁盤標記為移除中,ASM 啟動 REBALANCE 將數據遷移至剩餘磁盤。
-- 監控視圖
SELECT * FROM v$asm_operation WHERE GROUP_NUMBER = 2;
-- STATE 從 RUN 變為 COMPLETED 表示完成
GROUP_NUMBER GROUP_NAME NAME PATH STATE TOTAL_MB
------------ ---------- ----- --------------- -------- ----------
5 FRA FRA /dev/raw/raw5 NORMAL 8192
0 DATA DATA /dev/raw/raw4 NORMAL 8192
... (DATA2 已消失)
若在 DROPPING 階段業務反對、空間不足報錯、性能影響過大,可立即終止:
ALTER DISKGROUP DATA UNDROP DISKS;
效果:取消移除標記,停止 REBALANCE,磁盤恢復 NORMAL 狀態。僅在 DROPPING 階段有效,完成後不可逆,需 ADD DISK 重新加入。
| 檢查項 | 命令/視圖 | 合格標準 |
|---|---|---|
| 磁盤組狀態 | SELECT STATE FROM v$asm_diskgroup WHERE NAME='DATA'; | MOUNTED |
| 磁盤狀態 | SELECT NAME, STATE FROM v$asm_disk WHERE GROUP_NUMBER=2; | 所有 NORMAL |
| REBALANCE 完成 | SELECT * FROM v$asm_operation WHERE GROUP_NUMBER=2; | 無記錄或 STATE=COMPLETED |
| 可用空間 | SELECT FREE_MB FROM v$asm_diskgroup WHERE NAME='DATA'; | 符合容量規劃 |
| 告警日志 | tail -f $ORACLE_BASE/diag/asm/+asm/+ASM/trace/alert_+ASM.log | 無 ERROR/ORA- |
ALTER DISKGROUP DATA REBALANCE POWER 2;(默認 1,最大 11gR2 1024),平衡速度與影響v$asm_operation、STATE=DROPPING 持續時間v$asm_diskgroup/v$asm_disk 全量導出存證ASM 磁盤移除核心風險在於「空間不足導致 REBALANCE 失敗/無限掛起」與「REBALANCE 衝擊業務」。嚴格執行 空間預檢 SQL 驗證 → 限制 POWER → 監控 v$asm_operation → 完成驗證 四步法,配合 UNDROP DISKS 緊急回滾預案,可確保磁盤組縮容操作可控、可逆、零損壞。