位置: 文档库 > 数据库 > ASM实例启动报错:ORA-29701、ORA-15110解决方案

ASM实例启动报错:ORA-29701、ORA-15110解决方案

CosmicTide 上传于 2022-12-08 04:26

《ASM实例启动报错:ORA-29701ORA-15110解决方案》

在Oracle数据库环境中,自动存储管理(ASM)作为核心组件,承担着存储磁盘组管理、文件分配与负载均衡等关键任务。然而,ASM实例启动失败时可能触发ORA-29701(无法与集群同步服务通信)和ORA-15110(磁盘组不存在或无法访问)等错误,导致数据库服务中断。本文将深入分析这两个错误的成因,并提供系统性解决方案。

一、错误背景与影响

ORA-29701和ORA-15110通常同时出现,表明ASM实例在启动过程中无法完成以下两个关键步骤:

  1. 集群同步服务(CSS)通信失败:ASM依赖CSS实现节点间协调,若CSS服务未运行或网络配置异常,将导致ORA-29701。
  2. 磁盘组访问失败:ASM无法识别或挂载配置的磁盘组,触发ORA-15110。

此类问题常见于RAC环境或单节点ASM实例重启场景,可能导致数据库无法挂载数据文件,进而引发业务中断。

二、ORA-29701错误详解与解决

1. 错误成因

ORA-29701的直接原因是ASM实例无法与CSS守护进程通信。可能原因包括:

  • CSS服务未启动或崩溃
  • 主机名解析配置错误
  • 网络防火墙拦截CSS通信端口(默认514)
  • Oracle Clusterware资源未正确注册

2. 诊断步骤

步骤1:检查CSS服务状态

# Linux系统
crsctl check css
# 预期输出:CSS daemon is running

# Windows系统
services.msc | 查找OracleCSService

步骤2:验证主机名解析

# 检查/etc/hosts文件(Linux)
cat /etc/hosts
# 确保包含所有节点IP与主机名映射,例如:
192.168.1.10 node1
192.168.1.11 node2

# 测试DNS解析
nslookup node1

步骤3:检查网络连通性

# 使用telnet测试CSS端口(需安装telnet)
telnet node2 514
# 若连接失败,检查防火墙规则
iptables -L | grep 514

3. 解决方案

方案1:重启CSS服务

# 使用crsctl强制重启CSS
crsctl stop css -f
crsctl start css

方案2:修复主机名配置

若发现/etc/hosts文件缺失条目,手动添加后重启网络服务:

# Linux
service network restart

# Windows
ipconfig /flushdns

方案3:调整防火墙规则

# 开放CSS端口(示例为iptables)
iptables -A INPUT -p tcp --dport 514 -j ACCEPT
service iptables save

三、ORA-15110错误详解与解决

1. 错误成因

ORA-15110表明ASM无法找到或访问配置的磁盘组,常见原因包括:

  • 磁盘组名称拼写错误
  • ASM磁盘路径变更(如LUN映射修改)
  • 磁盘头信息损坏
  • 权限不足(OS权限或ASM权限)

2. 诊断步骤

步骤1:验证磁盘组配置

# 查询ASM实例中的磁盘组信息
sqlplus / as sysasm
SQL> SELECT name, state FROM v$asm_diskgroup;
# 若无输出或状态为DISMOUNTED,说明磁盘组未挂载

步骤2:检查物理磁盘

# Linux下识别ASM磁盘
ls -l /dev/oracleasm/disks
# 或使用oracleasm工具
oracleasm listdisks

# Windows下检查磁盘管理器
diskmgmt.msc

步骤3:验证磁盘头信息

# 使用kfdchk工具(需安装Oracle Grid Infrastructure)
kfdchk -g DATA
# 输出应包含磁盘组UUID和成员磁盘

3. 解决方案

方案1:手动挂载磁盘组

SQL> ALTER DISKGROUP DATA MOUNT;
# 若成功,状态将变为MOUNTED

方案2:修复磁盘路径

若磁盘路径变更,需更新ASM磁盘发现路径:

# 修改ASM_DISKSTRING参数
SQL> ALTER SYSTEM SET asm_diskstring='/dev/oracleasm/disks/*' SCOPE=SPFILE;
# 重启ASM实例
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

方案3:恢复磁盘头信息

对于头信息损坏的磁盘,可使用以下步骤:

  1. 将磁盘从磁盘组中删除(谨慎操作)
  2. 使用fsck或厂商工具修复文件系统
  3. 重新添加磁盘到磁盘组
SQL> ALTER DISKGROUP DATA DROP DISK DATA_0001;
# 修复后重新添加
SQL> ALTER DISKGROUP DATA ADD DISK '/dev/oracleasm/disks/DATA_0001';

四、综合解决方案:ORA-29701与ORA-15110并发处理

当两个错误同时出现时,需按以下顺序处理:

  1. 解决CSS通信问题(优先确保集群服务可用)
  2. 验证磁盘组存在性(确认配置文件中的磁盘组名称正确)
  3. 检查磁盘访问权限(确保oracle用户有读写权限)

示例处理流程

# 1. 重启CSS服务
crsctl stop css -f
crsctl start css

# 2. 检查ASM磁盘组状态
sqlplus / as sysasm
SQL> SELECT name, state FROM v$asm_diskgroup;

# 3. 若磁盘组状态为DISMOUNTED,尝试手动挂载
SQL> ALTER DISKGROUP DATA MOUNT;

# 4. 若仍失败,检查磁盘路径
SQL> SHOW PARAMETER asm_diskstring;
# 根据输出调整路径后重启ASM

五、预防措施与最佳实践

为避免类似问题重复发生,建议实施以下措施:

  • 定期检查CSS服务状态:纳入监控系统,设置自动告警
  • 维护一致的磁盘命名规范:避免因磁盘更换导致路径混乱
  • 备份ASM配置:使用以下命令导出磁盘组信息
SQL> SELECT 'ALTER DISKGROUP '||name||' MOUNT;' FROM v$asm_diskgroup;
# 将输出保存为脚本
  • 权限管理:确保oracle用户对ASM磁盘有读写权限
# Linux示例
chown oracle:oinstall /dev/oracleasm/disks/*
chmod 660 /dev/oracleasm/disks/*

六、高级故障排除技巧

技巧1:使用ASMCMD工具

ASMCMD提供更友好的磁盘组管理界面:

# 列出磁盘组
ascmd
ASMCMD> lsdg

# 尝试手动挂载
ASMCMD> mount DATA

技巧2:分析ASM日志

日志文件通常位于$GRID_HOME/log//asm目录下,关键日志包括:

  • alert_.log
  • asm_.trc

使用grep过滤错误信息:

grep -i "ORA-29701\|ORA-15110" alert_.log

技巧3:重建磁盘头(终极方案)

仅在确认磁盘无数据且需重新初始化时使用:

# 使用oracleasm工具标记磁盘为丢失
oracleasm deletedisk DATA_0001
# 重新创建磁盘
oracleasm createdisk DATA_0001 /dev/sdb1
# 在ASM中重新添加
SQL> ALTER DISKGROUP DATA ADD DISK '/dev/oracleasm/disks/DATA_0001';

七、案例研究:某金融企业RAC环境修复

问题描述:某银行RAC环境中的两个节点同时报告ORA-29701和ORA-15110,导致核心业务系统瘫痪。

处理过程

  1. 通过crsctl check css发现节点2的CSS服务未运行
  2. 检查/etc/hosts发现节点2的IP地址配置错误
  3. 修正IP后重启CSS服务,ORA-29701消失
  4. 发现DATA磁盘组状态为DISMOUNTED,尝试手动挂载失败
  5. 使用kfdchk检查发现两块磁盘的UUID不匹配
  6. 从备份恢复磁盘头信息后成功挂载

经验总结

  • RAC环境需确保所有节点时间同步(NTP服务)
  • 磁盘更换操作需记录UUID变更
  • 重要业务系统建议配置ASM冗余磁盘组

关键词:ORA-29701、ORA-15110、ASM实例、集群同步服务、磁盘组挂载Oracle RAC故障排除、CSS服务、ASM日志磁盘头恢复

简介:本文详细分析了Oracle ASM实例启动时常见的ORA-29701(集群同步服务通信失败)和ORA-15110(磁盘组无法访问)错误的成因,提供了从CSS服务检查、网络配置验证到磁盘组修复的系统性解决方案,并结合实际案例阐述了高级故障排除技巧,适用于DBA处理RAC及单节点环境下的ASM启动问题。