Olá pessoal,

Tudo bem?

Há alguns dias me chamaram para tentar resolver um problema com o startup de uma instância RAC 19.17.

O ambiente é um cluster de dois nós, com segregração de usuários, sendo o usuário grid dono do Grid Infrastructure/Cluster e o usuário oracle dono do Banco de Dados.

Ao tentar inicializar a instância, recebíamos o erro abaixo:

[oracle@DROBDDBRL02 ~]$ srvctl start instance -db OBD_RAC -instance OBD2
PRCR-1013 : Failed to start resource ora.obd_rac.db
PRCR-1064 : Failed to start resource ora.obd_rac.db on node drobddbrl02
CRS-5017: The resource action "ora.obd_rac.db start" encountered the following error:
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file '+OBD_DATA/OBD_RAC/spfileobd.ora'
ORA-17503: ksfdopn:10 Failed to open file +OBD_DATA/OBD_RAC/spfileobd.ora
ORA-01034: ORACLE not available
ORA-27121: unable to determine size of shared memory segment
Linux-x86_64 Error: 13: Permission denied
Additional information: 8702
Additional information: 57
. For details refer to "(:CLSN00107:)" in "/oracle/app/grid/diag/crs/drobddbrl02/crs/trace/crsd_oraagent_oracle.trc".
CRS-2674: Start of 'ora.obd_rac.db' on 'drobddbrl02' failed

Aparentemente o startup não está conseaguindo ler o SPFILE, certo?

Ao tentar fazer o start manual via SQL*Plus, obtemos o erro abaixo:

Total System Global Area 4294963272 bytes
Fixed Size 8904776 bytes
Variable Size 1308622848 bytes
Database Buffers 2952790016 bytes
Redo Buffers 24645632 bytes
ORA-00205: error in identifying control file, check alert log for more info

Humm, a instância não está conseguindo ler o controlfile, por esse motivo, o MOUNT falhou.

OK, temos dois sintomas:

  • SPFILE não é lido;
  • Control File não é lido.

Isso nos leva a acreditar que seja um problema no ASM, já que os arquivos estão hospedados no ASM.

Vamos checar o ASM:

SQL> select name,state from v$asm_diskgroup;

USERNAME        OSUSER
--------------- ----------
OBD_DATA        MOUNTED
OBD_FRA         MOUNTED
OBD_REDO1       MOUNTED
OBD_REDO2       MOUNTED

OK, o ASM está funcionando normalmente.

Fui verificar se o binário oracle que fica no GRID_HOME estava com as permissões corretas:

No Node 1, onde a instância de DB funciona normalmente:

[root@DROBDDBRL01 ~]# ls -l $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 grid oinstall 427363064 Mar 8 04:33 /oracle/app/193/grid/bin/oracle

No Node 2, onde a instância de DB não está sendo inicializada:

[root@DROBDDBRL02 ~]# ls -l $ORACLE_HOME/bin/oracle
-rwxrwxrwx 1 grid oinstall 427363064 Mar 8 04:33 /oracle/app/193/grid/bin/oracle

Bingo! Alguém alterou a permissão do binário para 777.

Vamos corrigir a permissão do binário, reiniciar o cluster e tentar novamente:

[root@DROBDDBRL02 ~]# chmod 6751 $ORACLE_HOME/bin/oracle
[root@DROBDDBRL02 ~]# ls -l $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 grid oinstall 427363064 Mar 8 04:33 /oracle/app/193/grid/bin/oracle

Reiniciamos o cluster:

[root@DROBDDBRL02 ~]# crsctl stop crs -f
[root@DROBDDBRL02 ~]# crsctl start crs

Problema resolvido.

[oracle@DROBDDBRL01 ~]$ srvctl status database -db OBD_RAC
Instance OBD1 is running on node drobddbrl01
Instance OBD2 is running on node drobddbrl02

Apesar de não ter havido patch de GI, a nota abaixo explica sobre isso e a solução aplicada:

Database Not Started with ORA-00205 After Applying GI PSU (Doc ID 1487382.1)

Espero que seja útil.

Um abraço,

Vinicius