出现这种情况一般都是以下几种原因导致的
1) gi家目录或者其子目录权限错误
2)asm磁盘的权限错误
3)asm实例未启动或者asm磁盘组没有mount上
4)asm磁盘组资源没有在线
5)oracle用户的权限错误 (这个可能性最大)
6)oracle($ORACLE_HOME/bin)可执行文件的权限错误
OK,那我就按照上面的分析结果进行逐一排查:
1) gi家目录或者其子目录权限错误
[root@testrac1 lib]# ls -ld /u01/app/11.2.0/grid/
drwxrwxr-x 68 root oinstall 4096 Nov 3 14:01 /u01/app/11.2.0/grid/
[root@testrac1 lib]# ls -ld /home/grid/
drwxr-xr-x 6 grid oinstall 4096 Nov 3 15:57 /home/grid/
我先简单查看了GI的家目录权限,这是正常的。这里想要提醒大家,有些DBA有意无意中看到这样的目录权限,发现所属主是root,以为出了问题,理所应当地通过命令去更改,如果只更改该目录权限问题也不大,回退方法很简单,但一旦加上-R参数递归方式把子目录、子文件的权限一并更改,那故障就发生了。所以,大家在操作的时候不要盲目去做没有把握的事情,掌握每个操作后面的原理以及其带来的后果,以至于充分准备好回退方法.
有次就无意-R更改了整个目录权限,因此导致无法识别asm磁盘组。
按照正常RAC对应更改目录权限,还是无法识别,主要问题如下:
[root@testrac1 lib]# find / -name oracle
/var/spool/mail/oracle
/etc/oracle
/u01/app/11.2.0/grid/bin/oracle
/u01/app/11.2.0/grid/oc4j/j2ee/home/applications/JMXSoapAdapter-web/WEB-INF/classes/oracle
/u01/app/11.2.0/grid/oc4j/j2ee/home/applications/jmsrouter/oracle
/u01/app/11.2.0/grid/oc4j/j2ee/home/applications/javasso/javasso-web/WEB-INF/classes/oracle
/u01/app/11.2.0/grid/oc4j/j2ee/home/database/webservices/reliability/oracle
/u01/app/11.2.0/grid/oc4j/j2ee/home/database/j2ee/jta/oracle
/u01/app/oracle
/u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
/u01/app/oracle/product/11.2.0/dbhome_1/owb/wf/java/oracle
/u01/app/oracle/product/11.2.0/dbhome_1/owb/rtp/jrtaudit/oracle
/u01/app/oracle/product/11.2.0/dbhome_1/owb/jrt/default-web-app/WEB-INF/classes/com/oracle
/u01/app/oracle/product/11.2.0/dbhome_1/owb/rtasst/jrtaudit/oracle
/u01/app/oracle/product/11.2.0/dbhome_1/apex/utilities/oracle
/u01/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/home/database/webservices/reliability/oracle
/u01/app/oracle/product/11.2.0/dbhome_1/oc4j/j2ee/home/database/j2ee/jta/oracle
/home/oracle
/opt/oracle
[root@testrac2 bin]# ls -ltr /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
-rwsr-s--x 1 oracle asmadmin 239626641 Nov 2 03:17 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@testrac2 bin]# ls -ltr /u01/app/11.2.0/grid/bin/oracle
-rwsr-s--x 1 grid oinstall 209914479 Nov 2 02:38 /u01/app/11.2.0/grid/bin/oracle
注意这两个oracle文件的权限,应该是-rwsr-s--x
2)asm磁盘的权限错误
[root@testrac1 bin]# ls -l /dev/oracleasm/disks/
total 0
brw-rw---- 1 grid asmadmin 253, 20 Nov 3 16:15 DATA1
brw-rw---- 1 grid asmadmin 253, 5 Nov 2 14:59 DATA2
brw-rw---- 1 grid asmadmin 253, 16 Nov 2 14:59 DATA3
brw-rw---- 1 grid asmadmin 253, 12 Nov 3 16:15 FRA
brw-rw---- 1 grid asmadmin 253, 8 Nov 3 16:15 OCR
如果发现权限不对,通过如下命令修改:
oracleasm configure -i
修改之后查看:
oracleasm configure
3)asm实例未启动或者asm磁盘组没有mount上
4) asm磁盘组资源没有在线:
[grid@testrac1 ~]$ crsctl stat res -t
5) oracle用户的权限错误
[grid@testrac1 ~]$ id oracle
uid=1101(oracle) gid=1000(oinstall) groups=1000(oinstall),1200(asmadmin),1201(asmdba),1300(dba),1301(oper)
oracle用户需要加入到asmdba组,如果发现没有加入,进行如下操作:
gpasswd -a oracle asmdba
6)oracle($ORACLE_HOME/bin)可执行文件的权限错误
[root@testrac1 lib]# su - oracle
[oracle@testrac1 ~]$ cd $ORACLE_HOME/bin
[oracle@testrac1 bin]$
[oracle@testrac1 bin]$ ls -l oracle
-rwxrwsr-x 1 oracle asmadmin 239626641 Nov 2 15:14 oracle*
oracle可执行文件的权限不正确:
属组必须是oracle asmadmin
如果不是需要修改:
chown oracle:asmadmin oracle
执行权限必须是-rwsr-s--x
节点1错误:
节点2正确"
修改
[root@testrac1 bin]# chmod 755 oracle
[root@testrac1 bin]# ls -l oracle
-rwxr-xr-x 1 oracle asmadmin 239626641 Nov 2 15:14 oracle
[root@testrac1 bin]# chmod +s oracle
[root@testrac1 bin]# ls -l oracle
-rwsr-sr-x 1 oracle asmadmin 239626641 Nov 2 15:14 oracle