环境:Vmware Redhat linux AS4双机
数据库:Oracle 10.2.0.1.0
在其中一台机器上启动ASM实例时,发生如下错误:
$ export ORACLE_SID=+ASM
$ sqlplus "/ as sysdba"
Connected to an idle instance.
SQL> startup
ASM instance started
Total System Global Area 83886080 bytes
Fixed Size 1217836 bytes
Variable Size 57502420 bytes
ASM Cache 25165824 bytes
ORA-15032: not all alterations performed
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DG2"
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DG1"
这个错误是由于ASM实例无法装载硬盘组的所有磁盘而引起的,有可能是权限问题,导致ORACLE用户没有权限访问该设备。
检查该节点上/dev/oracleasm/disks的权限,发现是root:root,改为oracle:dba后ASM启动正常。
但是机器重启后发现又恢复成了root:root,于是检查/etc/udev/permissions.d/50-udev.permissions这个文件中的其中一行“raw/*:oracle:dba:0660”,没有任何问题。
(备注:50-udev.permissions是用来设置系统启动后祼设备的属主)
后来想起来由于是双机,可能是忘了在这个节点执行:
#/etc/init.d/oracleasm configure(执行的时候会有相应的提示,回答oracle,dba,y,y就可以了,分别对应默认用户,默认组,随系统自启动,启动时设置权限。)
执行完重启Linux后,果然解决了问题。