天天看点

oracle home/bin 下的oracle权限导致ORA-01078和Linux-x86_64 Error故障

1.具体故障现象

[[email protected] bin]# ./crsctl stat res -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.BAK01.dg
               ONLINE  ONLINE       rac01                                        
               ONLINE  ONLINE       rac02                                        
ora.DATA01.dg
               ONLINE  ONLINE       rac01                                        
               ONLINE  ONLINE       rac02                                        
ora.GBF1_ARC.dg
               ONLINE  ONLINE       rac01                                        
               ONLINE  ONLINE       rac02                                        
ora.GBF2_ARC.dg
               ONLINE  ONLINE       rac01                                        
               ONLINE  ONLINE       rac02                                        
ora.LISTENER.lsnr
               ONLINE  ONLINE       rac01                                        
               ONLINE  ONLINE       rac02                                        
ora.OCRVDISK.dg
               ONLINE  ONLINE       rac01                                        
               ONLINE  ONLINE       rac02                                        
ora.YWDB_ARC.dg
               ONLINE  ONLINE       rac01                                        
               ONLINE  ONLINE       rac02                                        
ora.asm
               ONLINE  ONLINE       rac01                    Started             
               ONLINE  ONLINE       rac02                    Started             
ora.gsd
               OFFLINE OFFLINE      rac01                                        
               OFFLINE OFFLINE      rac02                                        
ora.net1.network
               ONLINE  ONLINE       rac01                                        
               ONLINE  ONLINE       rac02                                        
ora.ons
               ONLINE  ONLINE       rac01                                        
               ONLINE  ONLINE       rac02                                        
ora.registry.acfs
               ONLINE  ONLINE       rac01                                        
               ONLINE  ONLINE       rac02                                        
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
              ONLINE  ONLINE       rac02                                        
ora.cvu
              ONLINE  ONLINE       rac02                                        
ora.gbf1.db
              ONLINE  OFFLINE                               Instance Shutdown   
              ONLINE  ONLINE       rac02                    Open                
ora.gbf2.db
              ONLINE  OFFLINE                               Instance Shutdown   
              ONLINE  ONLINE       rac02                    Open                
ora.oc4j
              ONLINE  ONLINE       rac02                                        
ora.rac01.vip
              ONLINE  ONLINE       rac01                                        
ora.rac02.vip
              ONLINE  ONLINE       rac02                                        
ora.scan1.vip
              ONLINE  ONLINE       rac02                                        
ora.ywdb.db
              ONLINE  OFFLINE                               Instance Shutdown   
              ONLINE  ONLINE       rac02                    Open  
           

2.尝试在rac01上直接拉起数据库

SQL> startup
ORA-: failure in processing system parameters
ORA-: error in identifying file '+DATA01/GBF1/spfileGBF1.ora'
ORA-: ksfdopn: Failed to open file +DATA01/GBF1/spfileGBF1.ora
ORA-: ORACLE not available
ORA-: unable to attach to shared memory segment
Linux-x86_64 Error: : Permission denied
Additional information: 
Additional information: 
           

初步分析:spfileGBF1.ora这个参数文件问题

3.确认参数文件

root@rac01 grid]# su - grid
grid@rac01 ~]$ asmcmd
ASMCMD> ls       
BAK01/
DATA01/
GBF1_ARC/
GBF2_ARC/
OCRVDISK/
YWDB_ARC/
ASMCMD> cd GBF1
ASMCMD-: diskgroup 'GBF1' does not exist or is not mounted
ASMCMD> cd DATA01
ASMCMD> ls    
GBF1/
GBF2/
YWDB/
ASMCMD> cd GBF1
ASMCMD> ls    
CONTROLFILE/
DATAFILE/
ONLINELOG/
           

分析:参数文件存在,初步估计是权限的问题

4.检查rac01和rac02 下列信息或文件是否一致

su - oracle
ulimit -a  检查两边ulimit
su - root
grep Huge /proc/meminfo
cat /etc/security/limits.conf
cat /etc/sysctl.conf
echo $ORACLE_HOME --->/u01/app/oracle/product//db_1
cat /u01/app/oracle/product//db_1/dbs/initGBF11.ora 值为:
SPFILE='+DATA01/GBF1/spfileGBF1.ora'
SQL> create pfile='/home/oracle/rac01-gbf11.ora' from spfile='+DATA01/GBF1/spfileGBF1.ora';
ERROR at line :
ORA-: error in identifying file '+DATA01/GBF1/spfileGBF1.ora'
ORA-: ksfdopn: Failed to open file +DATA01/GBF1/spfileGBF1.ora
ORA-: ORACLE not available
ORA-: unable to attach to shared memory segment
Linux-x86_64 Error: : Permission denied
Additional information: 
Additional information: 
           

分析:磁盘组是grid用户 而数据库实例是oracle用户,所以oracle可能没权限操作磁盘组

检查 gird用户下

su - grid
echo  $GRID_HOME --->/u01/app//grid/
cd /u01/app//grid/bin/oracle
ls -ald oracle
./setasmgidwrap o=/u01/app/oracle/product//db_1/bin/oracle
           

5.再次对比rac01和rac02的oracle文件权限

su - oracle
cd /u01/app/oracle/product//db_1/bin
chmod  oracle
ls -ald oracle
rac01 -rwsr-x--x  oracle asmadmin  Mar    oracle*
rac02 -rwsr-s--x  oracle asmadmin  Mar    oracle*
su - oracle
cd /u01/app/oracle/product//db_1/bin
chmod g+s oracle
ls -ald oracle
rac01 -rwsr-x--x  oracle asmadmin  Mar    oracle*
su - oracle
cd /u01/app/oracle/product//db_1/bin
chmod  oracle
rac01 -rwsr-x--x  oracle asmadmin  Mar    oracle*
           

6.备份rac01和rac02的

su - oracle

备份 /u01/app/oracle/product/11.2.0/db_1/bin/oracle

7.操作目标:将/u01/app/oracle/product/11.2.0/db_1/bin/oracle的文件属性rac01 -rwsr-x–x 1 oracle asmadmin 239627031 Mar 10 2015 oracle*改为rac01 -rwsr-s–x 1 oracle asmadmin 239627031 Mar 10 2015 oracle*

共享磁盘属于gird用户,必须要有s权限

8.尝试停止gird软件,然后再修改文件属性

su - root
cd /u01/app/./grid/bin
./crsctl stop has
su - grid
echo $GRID_HOME  --->/u01/app/./grid/
cd /u01/app/./grid/bin
chmod  oracle
./setasmgidwrap o=/u01/app/oracle/product/./db_1/bin/oracle
再次比对
ls -ald oracle
su - oracle
echo $ORACLE_HOME --->/u01/app/oracle/product/./db_1
cd /u01/app/oracle/product/./db_1/bin
chmod  oracle
           

再次比对

ls -ald oracle
           

9.再次启动has

su - root
cd /u01/app/./grid/bin
./crsctl start has  等待几分钟
./crsctl stat res -t 
           

10.故障处理成功。