Oracle 12c RAC重启后ASM实例无法启动,如何检查ASM磁盘权限与属主信息?
- 内容介绍
- 文章标签
- 相关推荐
本文共计843个文字,预计阅读时间需要4分钟。
相关主题
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 root、oracle oinstall或grid oinstall - 若属主错误,用
chown grid:asmadmin /dev/oracleasm/disks/*修复;权限不对则补chmod 0660 /dev/oracleasm/disks/* - 注意:仅改设备文件不够,还得同步检查
/etc/sysconfig/oracleasm中ORACLEASM_UID=grid和ORACLEASM_GID=asmadmin是否匹配当前环境
验证UDEV规则是否强制覆盖了正确权限
如果用了UDEV映射(比如/dev/asm-diskb),规则文件(如/etc/udev/rules.d/99-oracle-asmdevices.rules)里OWNER、GROUP、MODE三者缺一不可,且值必须与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却只在一个节点返回结果。
本文共计843个文字,预计阅读时间需要4分钟。
相关主题
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 root、oracle oinstall或grid oinstall - 若属主错误,用
chown grid:asmadmin /dev/oracleasm/disks/*修复;权限不对则补chmod 0660 /dev/oracleasm/disks/* - 注意:仅改设备文件不够,还得同步检查
/etc/sysconfig/oracleasm中ORACLEASM_UID=grid和ORACLEASM_GID=asmadmin是否匹配当前环境
验证UDEV规则是否强制覆盖了正确权限
如果用了UDEV映射(比如/dev/asm-diskb),规则文件(如/etc/udev/rules.d/99-oracle-asmdevices.rules)里OWNER、GROUP、MODE三者缺一不可,且值必须与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却只在一个节点返回结果。

