磁盘流转:19C RAC 环境下 + Normal ASM盘的 “旧去新来”

来源:这里教程网 时间:2026-03-03 22:25:25 作者:

 核心结论

Oracle 12.1.0.2 及以上版本中,若 ASM 磁盘组为 Normal 冗余模式,移除磁盘时需确保操作后仍有至少 3 块磁盘存活,否则可能触发报错并导致异常。

  背景与操作过程

本次操作环境为 Oracle 19.12 版本 RAC 数据库, +DATA 磁盘组采用 Normal 冗余模式。初始状态下,该磁盘组包含 2 块原有磁盘( `data1` `data2` ),计划通过新增 2 块磁盘( `newdata1` `newdata2` )完成替换。

1.  新增磁盘操作  

    首先顺利完成新磁盘添加,执行命令如下:  

   sql

   alter diskgroup data add disk '/dev/mapper/newdata1';

   alter diskgroup data add disk '/dev/mapper/newdata2';

     

    磁盘添加后, ASM 自动触发 rebalance (重平衡),过程无异常。

2.  移除原有磁盘操作  

   -  第一步移除 `data2` 时,磁盘组总磁盘数为 4 块,移除后剩余 3 块,符合 “Normal 模式下至少 3 块存活 的要求,操作成功。  

   -  第二步移除 `data1` 时,因剩余磁盘数将降至 2 块(不足 3 块),执行失败并触发报错 `ORA-59048`   

      此时检查发现: `data1` 仍在磁盘组中,但状态变为 `offline` ,且磁盘路径丢失; `v$asm_disk` 视图中其挂载状态显示为 `MISSING` ,文件头状态为 `UNKNOWN` ;通过 `kfod` 命令检查,磁盘头标记仍为 `member` (成员),同时 `data1` `total_mb` `free_mb` 数值不匹配,状态异常。

编辑

检查磁盘使用情况发现data1的total_mb与free_mb不相等

编辑

检查v$asm_disk视图发现data1挂载状态为“MISSING”,文件头状态为“UNKNOWN”

编辑

使用kfod命令检查磁盘发现data1的Header是member 

编辑

  故障排查与处理 1.  原因定位  

    针对 `ORA-59048` 报错,通过 MOS My%20Oracle%20Support )文档( Doc%20ID%202594359.1 )确认: Normal 模式下磁盘组需保持至少 3 块磁盘以维持冗余,移除后磁盘数量不足是导致报错的直接原因,且异常状态下磁盘头信息未自动修正,进一步引发状态不一致。

编辑

2.  临时恢复操作  

    为满足磁盘数量要求,向客户申请新增 1 400G 磁盘( `newdata3` )并加入磁盘组:  

   sql

   alter diskgroup data add disk '/dev/mapper/newdata3';

     

    新增后 ASM 重平衡正常完成, `v$asm_operation` 中报错消失,磁盘组核心功能恢复,但 `kfod` 检查显示 `data1` 的磁盘头仍为 `member` 状态,需进一步处理。

编辑

  彻底解决与验证

考虑到生产环境业务连续性,先将业务切换至容灾库,再执行以下修复操作:

1.  尝试常规修复(未成功)  

   -  执行磁盘组校验: `alter diskgroup data check all;`  

   -  卸载磁盘组后修复磁盘头: `alter diskgroup DATA dismount;`  并通过 `kfed repair /dev/mapper/data1` 操作  

   -  重启集群: `crsctl stop cluster -n all;`   `crsctl start cluster -n all;`  

    以上操作均未修正 `data1` 的磁盘头状态。

2.  最终解决方案  

    卸载 +DATA 磁盘组后,将 `/dev/mapper/data1` 的权限修改为 `root` 独占(确保 ASM 无法访问),随后重启集群。操作后:  

   - +DATA 磁盘组正常挂载, `v$asm_disk` 等视图无异常提示  

   - `data1` 因权限限制无法被 ASM 识别,彻底排除对磁盘组的影响

3.  根因分析  

   `kfod` 工具依赖磁盘头信息判断状态,本次故障中 `data1` 因移除失败未自动更新磁盘头标记(仍为 `member` ),而修改权限可从物理层面阻断其与 ASM 的交互,避免状态干扰。

  经验总结

1.  操作前提: Normal 模式磁盘组移除磁盘前,需先确认 剩余磁盘数 ≥3” ,可通过新增磁盘补足数量后再执行移除。  

2.  异常处理:若出现磁盘头信息异常,常规修复无效时,可通过限制磁盘访问权限(如修改属主、权限)彻底隔离无效磁盘。  

3.  风险规避:生产环境操作前需备份关键信息,复杂操作建议切换至容灾库后执行,降低业务影响。

相关推荐