一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何处理Oracle 19c RAC中由于磁盘组REBALANCE失败导致的停机:增加ASM内存

时间:2026-06-19 08:44:03 编辑:袖梨 来源:一聚教程网

REBALANCE失败本身不会直接导致RAC停机,但若卡在关键路径(如DROP DISK后无法重建或新磁盘加入后无响应),会引发连锁反应:磁盘组冗余受损→ASM实例拒绝挂载→CRS资源启动失败→数据库无法打开;真正卡点在I/O阻塞、元数据异常或硬件故障,而非内存不足。
REBALANCE 失败本身不会直接导致 RAC 停机,但若它卡在关键路径上(比如 DROP DISK 后无法完成重建、或新磁盘加入后 REBALANCE 无响应),会引发连锁反应:磁盘组冗余受损 → ASM 实例拒绝挂载 → CRS 资源启动失败 → 数据库无法打开。此时加内存不是解法,**真正卡点在 I/O 阻塞、元数据异常或底层硬件故障**。

为什么给ASM实例加内存对REBALANCE失败没用

asm 实例的内存(sga_targetlarge_pool_size)主要用于缓存元数据(如 disk header、allocation table)、协调 rebalance 任务队列,不参与 au 迁移的实际读写。实测表明:rebalance 卡住时,v$asm_operationsofarest_work 长期不变,gv$session_longops 无进展,top -hp 显示 asm_server_process cpu 占用极低——说明不是内存不足,而是 i/o 层被阻塞。

  • 增大 large_pool_size 只影响 extent map 缓存容量,对坏道盘重试、HBA 超时、CSSD 心跳抖动等根本问题无效
  • Oracle 官方文档明确指出:asm_power_limit 控制并发迁移线程数,asm_diskstring 决定扫描范围,这两项才直接影响 rebalance 行为
  • 盲目加内存反而可能挤占 OS 缓冲区,加剧存储层延迟感知

REBALANCE卡在WAITING/EXECUTING且EST_MINUTES不更新,先查底层I/O健康

这不是配置问题,是硬件在“假死”。90% 的挂起案例中,v$asm_disk 仍显示 STATE = 'NORMAL',但 smartctl -a /dev/sdX 已暴露风险:

  • Reallocated_Sector_Ct > 0 或 Current_Pending_Sector > 0 → 物理扇区已损坏,ASM 读取 AU 时反复 timeout
  • /var/log/messages 出现 end_request: I/O error on device sdX,时间戳与 rebalance 启动时间吻合
  • dd if=/dev/zero of=/dev/sdX bs=1M count=1024 oflag=direct 单次耗时 > 500ms 或报 Input/output error
  • 别信 asmcmd lsdsk ——它只校验设备节点存在,不校验可写性

确认是否因DROP DISK残留导致REBALANCE无法启动

当磁盘被 FORCE DROP 后未清理干净,或 rebalance 被手动中断多次,v$asm_disk 中可能出现状态异常的“幽灵磁盘”:

  • 执行 SELECT name, state, header_status, mode_status FROM v$asm_disk WHERE group_number = (SELECT group_number FROM v$asm_diskgroup WHERE name = 'DATADG');
  • 若某盘 state = 'DROPPING'repair_timer = 0,说明 ASM 已放弃但元数据未释放,后续 ADD DISKREBALANCE 全部被阻塞
  • 此时必须用 ALTER DISKGROUP DATADG DROP DISK 'ORCL:OLDISK' FORCE; 强制清除(注意:仅限物理盘已不可见)
  • FORCE 后立即执行 ALTER DISKGROUP DATADG REBALANCE POWER 5;,否则磁盘组持续处于非冗余状态

ASMFD启用后REBALANCE仍失败,检查AFD磁盘状态和权限一致性

Oracle 19c RAC 强制使用 asmfd,若初始化不彻底,会导致 rebalance 在跨节点阶段静默失败:

  • 所有节点运行 asmcmd afd_lsdsk,输出必须完全一致(磁盘名、状态 af);若有节点返回空,说明 AFD 未接管该设备
  • 检查 ls -l /dev/mapper/asm-data9:属主必须是 grid:asmadmin,权限必须是 brw-rw----,major/minor 号跨节点一致
  • 验证 WWN 是否匹配:scsi_id -g -u -d /dev/sda 输出需与 /etc/multipath.confwwid 字段**逐字符一致**(含大小写、空格)
  • 切勿混用 oracleasm ——19c 中它已被移除,残留配置会导致 KFED-00322ORA-15077
REBALANCE 故障排查最易被忽略的一点:**不要在 rebalance 过程中修改同一磁盘组的任何其他属性**。哪怕只是执行一次 ALTER DISKGROUP ... SET ATTRIBUTE,都可能触发二次 rebalance 并中断当前流程,而这个中断不会报错,只会让 v$asm_operation 停滞。

热门栏目