首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle ASM 磁盤頭損壞災難恢復實錄:fdisk 误操作導致 ORA-15196 的根因分析與異地容災救援

     編輯:Oracle 資料庫相關知識

事故現場還原

故障現象:11.2.0.3 RAC 生產庫突然宕機,Alert 日志報錯:
ORA-15196: invalid ASM block header [kfc.c:26076] [endian_kfbh] [256] [0 != 1]
詭異點:主庫與 Data Guard 物理備庫**同時**報相同錯誤,排除存儲單點故障。

根因深度溯源

時間線重構

  1. SA 操作:發現主機上一塊磁盤「未使用」,在**主備雙邊**執行 fdisk 分區 + mkfs 格式化
  2. 破壞後果:ASM 磁盤頭(第 0-1 個 AU,含磁盤組元數據)被覆寫,導致磁盤組無法掛載
  3. 連鎖反應:主庫寫入掛起 → 心跳失效 → 節點驅逐 → 備庫同步中斷 → 雙雙不可用

為什麼備庫也壞了?

Data Guard 物理備庫通過 Redo Apply 同步,**不複製 ASM 元數據結構**。但 SA 在備庫側**同樣執行了 fdisk/mkfs**,直接破壞了備庫 ASM 磁盤頭。這是人為操作同步,非數據同步導致。

恢復實戰過程

方案評估

方案可行性RTORPO風險
ASM 磁盤頭修復工具極低不可控數據損失元數據覆寫不可逆
重建主庫 + DG 重搭中8-12h最後備份點業務長時間中斷
異地容災庫切換高< 30min近乎零最低

容災切換實施步驟

  1. 確認容災庫狀態:驗證異地庫數據完整性、SCN 差距、應用連通性
  2. 業務流量切換:修改 DNS/SCAN VIP 指向容災庫,或應用層連接串切換
  3. 角色轉換:ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;(如為物理備庫)
  4. 服務驗證:核心業務煙霧測試、數據一致性抽查
  5. 事後重建:原主庫環境重建,重新搭建 DG 架構

教訓總結與防範體系

核心教訓

  1. DBA 與 SA 必須建立強溝通機制:任何存儲層變更(磁盤分區、文件系統、LUN 映射)需 DBA 審批簽字
  2. 「未使用」≠「可隨意使用」:ASM 磁盤無文件系統特徵,SA 工具顯示為「空閒」,實則為 ASM 托管原始設備
  3. 異地容災是最後防線:同城雙活防存儲故障,異地容災防邏輯錯誤/人為破壞/區域性災難

技術防範措施

層面措施實施要點
權限控制收回 SA 對數據庫服務器 root/sudo 權限通過堡壘機審計、命令白名單管控
設備標識ASM 磁盤綁定 udev 規則 + 清晰命名/dev/oracleasm/disk_DG_DATA_01,禁止使用 /dev/sd* 直接操作
監控告警ASM 磁盤組狀態、磁盤在線數監控Grid Infrastructure 內建監控 + 自定義腳本秒級告警
操作審計關鍵命令審計auditd 監控 fdisk/mkfs/dd/wipefs 等破壞性命令
備份驗證定期恢復演練季度級異地容災切換演練,驗證 RTO/RPO

ASM 磁盤保護最佳實踐

# 1. udev 規則示例(/etc/udev/rules.d/99-oracle-asm.rules)
KERNEL=="sd*", SUBSYSTEM=="block", ENV{ID_SERIAL}=="36000d310000000000000000000000001", \
  SYMLINK+="oracleasm/disk_DG_DATA_01", OWNER="grid", GROUP="asmadmin", MODE="0660"

# 2. ASMLib 標籤化(推薦)
oracleasm createdisk DG_DATA_01 /dev/sdb1

# 3. 定期驗證磁盤頭完整性
kfed read /dev/oracleasm/disk_DG_DATA_01 | grep -E "kfdhdb.magic|kfdhdb.chksum|kfdhdb.grpname"

事後複盤清單

  • ☐ 確認 SA 操作授權流程缺失,建立變更管理制度
  • ☐ 全環境梳理 ASM 磁盤設備映射,建立 CMDB 資產台賬
  • ☐ 部署存儲層操作審計,關鍵命令實時告警 DBA 群
  • ☐ 更新災難恢復預案,明確異地容災切換 SOP 與決策鏈
  • ☐ 組織全員事故複盤會議,產出《事故分析報告》歸檔
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved