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

ASM 磁盤組管理實戰:安全移除磁盤、空間預檢、UNDROP 恢復與狀態監控

     編輯:MySQL 綜合教學

ASM 磁盤組管理實戰:安全移除磁盤、空間預檢、UNDROP 恢復與狀態監控

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.

四、 狀態變遷監控

1. 發起後即時狀態

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 將數據遷移至剩餘磁盤。

2. 等待 REBALANCE 完成

-- 監控視圖
SELECT * FROM v$asm_operation WHERE GROUP_NUMBER = 2;
-- STATE 從 RUN 變為 COMPLETED 表示完成

3. 完成後最終狀態

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 已消失)

五、 緊急回滾:UNDROP DISKS

若在 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-

七、 最佳實踐總結

  1. 維護窗口操作:低峰期執行,REBALANCE 佔用 I/O、CPU,影響業務性能
  2. 限制 REBALANCE 功率:ALTER DISKGROUP DATA REBALANCE POWER 2;(默認 1,最大 11gR2 1024),平衡速度與影響
  3. 預留足夠空間:單盤故障、移除後剩餘磁盤使用率 < 85%
  4. 監控腳本化:Nagios/Zabbix 監控 v$asm_operation、STATE=DROPPING 持續時間
  5. 文檔記錄:操作前後 v$asm_diskgroup/v$asm_disk 全量導出存證

八、 總結

ASM 磁盤移除核心風險在於「空間不足導致 REBALANCE 失敗/無限掛起」與「REBALANCE 衝擊業務」。嚴格執行 空間預檢 SQL 驗證 → 限制 POWER → 監控 v$asm_operation → 完成驗證 四步法,配合 UNDROP DISKS 緊急回滾預案,可確保磁盤組縮容操作可控、可逆、零損壞。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved