Oracle 12c RAC重启后ASM实例无法启动,如何检查ASM磁盘权限与属主信息?

2026-04-29 01:112阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计843个文字,预计阅读时间需要4分钟。

Oracle 12c RAC重启后ASM实例无法启动,如何检查ASM磁盘权限与属主信息?

相关主题

oracle 12c rac重启后asm实例起不来,八成不是asm本身坏了,而是grid用户根本没权限碰磁盘设备——哪怕oracleasm listdisks能列出来,asmcmd lsdg照样报ora-15032: not all alterations performed或直接连不上。

检查/dev/oracleasm/disks/下设备的属主和权限

ASM磁盘设备文件(如/dev/oracleasm/disks/DATA01)必须严格满足:grid:asmadmin属主+组、0660权限。任何偏差都会导致ASM实例启动时无法读取磁盘头,进而挂载失败。

  • ls -l /dev/oracleasm/disks/确认每个设备是否都是grid asmadmin,不是root rootoracle oinstallgrid oinstall
  • 若属主错误,用chown grid:asmadmin /dev/oracleasm/disks/*修复;权限不对则补chmod 0660 /dev/oracleasm/disks/*
  • 注意:仅改设备文件不够,还得同步检查/etc/sysconfig/oracleasmORACLEASM_UID=gridORACLEASM_GID=asmadmin是否匹配当前环境

验证UDEV规则是否强制覆盖了正确权限

如果用了UDEV映射(比如/dev/asm-diskb),规则文件(如/etc/udev/rules.d/99-oracle-asmdevices.rules)里OWNERGROUPMODE三者缺一不可,且值必须与ASM要求一致。常见错误是规则写成了GROUP="asmadmin"但DBCA期望"asmdba"

  • 运行udevadm info --name=/dev/asm-diskb | grep -E "(OWNER|GROUP|MODE)"看实际生效的属性
  • 对比PRVF-9992报错里提示的“Expected = 'asmdba'”,说明CVU检查逻辑已切换分组要求,需统一改为GROUP="asmdba"
  • 改完规则必须执行udevadm control --reload-rules && udevadm trigger,再oracleasm scandisks重刷

确认SELinux未拦截ASM设备访问

RHEL/CentOS上SELinux处于enforcing模式时,会阻止grid进程打开ASM设备节点,现象是oracleasm scandisks报“Unable to instantiate disk”,日志/var/log/oracleasm里出现权限拒绝类报错,但ls -l看着权限又没问题。

  • 执行getenforce确认状态,若返回Enforcing,临时关闭用setenforce 0
  • 永久关闭需编辑/etc/sysconfig/selinux,把SELINUX=enforcing改成disabled,然后重启
  • 不建议只调SELinux布尔值(如setsebool -P oracleasm_exec_disable off),RAC环境下兼容性差,容易反复

排查GRID_HOME/bin/oracle权限被意外修改

重启后ASM起不来,还可能因为$GRID_HOME/bin/oracle文件权限从6751(含setuid/setgid)被改成普通755,导致进程无法以grid身份提升权限访问设备。

  • 检查命令:ls -l $GRID_HOME/bin/oracle,正确输出应含-rwsr-s--x.(注意两个s
  • 修复命令:chmod 6751 $GRID_HOME/bin/oracle,切勿用chown改属主——它必须是grid:oinstall
  • 该问题在执行过root.sh后又被手动chmod -R 777等误操作的环境中高频出现,且只影响本节点

真正麻烦的从来不是单点权限错,而是多个节点间/dev/oracleasm/disks/路径不一致、UDEV规则版本不同、或SELinux策略一个开一个关——这种混合态故障,crsctl stat res -t看起来全绿,asmcmd lsdg却只在一个节点返回结果。

标签:Oracle

本文共计843个文字,预计阅读时间需要4分钟。

Oracle 12c RAC重启后ASM实例无法启动,如何检查ASM磁盘权限与属主信息?

相关主题

oracle 12c rac重启后asm实例起不来,八成不是asm本身坏了,而是grid用户根本没权限碰磁盘设备——哪怕oracleasm listdisks能列出来,asmcmd lsdg照样报ora-15032: not all alterations performed或直接连不上。

检查/dev/oracleasm/disks/下设备的属主和权限

ASM磁盘设备文件(如/dev/oracleasm/disks/DATA01)必须严格满足:grid:asmadmin属主+组、0660权限。任何偏差都会导致ASM实例启动时无法读取磁盘头,进而挂载失败。

  • ls -l /dev/oracleasm/disks/确认每个设备是否都是grid asmadmin,不是root rootoracle oinstallgrid oinstall
  • 若属主错误,用chown grid:asmadmin /dev/oracleasm/disks/*修复;权限不对则补chmod 0660 /dev/oracleasm/disks/*
  • 注意:仅改设备文件不够,还得同步检查/etc/sysconfig/oracleasmORACLEASM_UID=gridORACLEASM_GID=asmadmin是否匹配当前环境

验证UDEV规则是否强制覆盖了正确权限

如果用了UDEV映射(比如/dev/asm-diskb),规则文件(如/etc/udev/rules.d/99-oracle-asmdevices.rules)里OWNERGROUPMODE三者缺一不可,且值必须与ASM要求一致。常见错误是规则写成了GROUP="asmadmin"但DBCA期望"asmdba"

  • 运行udevadm info --name=/dev/asm-diskb | grep -E "(OWNER|GROUP|MODE)"看实际生效的属性
  • 对比PRVF-9992报错里提示的“Expected = 'asmdba'”,说明CVU检查逻辑已切换分组要求,需统一改为GROUP="asmdba"
  • 改完规则必须执行udevadm control --reload-rules && udevadm trigger,再oracleasm scandisks重刷

确认SELinux未拦截ASM设备访问

RHEL/CentOS上SELinux处于enforcing模式时,会阻止grid进程打开ASM设备节点,现象是oracleasm scandisks报“Unable to instantiate disk”,日志/var/log/oracleasm里出现权限拒绝类报错,但ls -l看着权限又没问题。

  • 执行getenforce确认状态,若返回Enforcing,临时关闭用setenforce 0
  • 永久关闭需编辑/etc/sysconfig/selinux,把SELINUX=enforcing改成disabled,然后重启
  • 不建议只调SELinux布尔值(如setsebool -P oracleasm_exec_disable off),RAC环境下兼容性差,容易反复

排查GRID_HOME/bin/oracle权限被意外修改

重启后ASM起不来,还可能因为$GRID_HOME/bin/oracle文件权限从6751(含setuid/setgid)被改成普通755,导致进程无法以grid身份提升权限访问设备。

  • 检查命令:ls -l $GRID_HOME/bin/oracle,正确输出应含-rwsr-s--x.(注意两个s
  • 修复命令:chmod 6751 $GRID_HOME/bin/oracle,切勿用chown改属主——它必须是grid:oinstall
  • 该问题在执行过root.sh后又被手动chmod -R 777等误操作的环境中高频出现,且只影响本节点

真正麻烦的从来不是单点权限错,而是多个节点间/dev/oracleasm/disks/路径不一致、UDEV规则版本不同、或SELinux策略一个开一个关——这种混合态故障,crsctl stat res -t看起来全绿,asmcmd lsdg却只在一个节点返回结果。

标签:Oracle