Ao checar o alert.log do banco de dados de homologação me deparei com a seguinte mensagem: ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora ! Um erro claro, que diz quenão foi possível abrir o arquivo spfilevs06.ora no diretório /u01/app/oracle/product/11.2.0.4/db_1/dbs.
Naveguei até a pasta /u01/app/oracle/diag/rdbms/vs06/vs06/trace para checar o alert log e o erro apresentado era recorrente:
[root@server01 trace]# cd /u01/app/oracle/diag/rdbms/vs06/vs06/trace
[root@server01 trace]#
[root@server01 trace]# ls
alert_vs06.log
root@anvsdbdf003 trace:]# tail -f alert_vs06.log
ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora.
ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora.
ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora.
ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora.
ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora.
ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora.
ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora.
ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora.
ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora.
ORA-01565: Unable to open Spfile /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora.
Checagem no caminho informado no erro para verificar se o arquivo existia, se estava sem permissão, etc:
[root@server01 dbs]# ls -l spfilevs06.ora
ls: cannot access spfilevs06.ora: No such file or directory
Bingo! O arquivo de fato não existe, porém no parâmetro SPFILE do meu banco de dados ele diz que sim, que existe:
Ao tentar criar um SPFILE o seguinte erro é retornado:
SYS@vs06 AS SYSDBA> create spfile from pfile;
create spfile from pfile
*
ERROR at line 1:
ORA-32002: cannot create SPFILE already being used by the instance
E dentro da instância o arquivo está indicando no parâmetro SPFILE! Loucura rs
SYS@vs06 AS SYSDBA> show parameter spfile;
NAME TYPE VALUE
———————————— ——————————– ——————————
spfile string /u01/app/oracle/product/11.2.0.4/db_1/dbs/spfilevs06.ora
Solução: É preciso reiniciar a instância para que esse parâmetro seja “limpo” e em seguida recriar o spfile, para enfim, reiniciar novamente e fazer com que o erro pare de acontecer, isso pode ser feito em 3 simples passos:
1º – Desligar e iniciar a instância através dos comandos: shutdown abort e startup, respectivamente. Essa operação fará com que o Oracle busque o arquivo initvs06.ora no $ORACLE_HOME/dbs e inicie a instância sem o parâmetro spfile. Esse arquivo initvs06.ora é conhecido como PFILE.
SYS@vs06 AS SYSDBA> shut abort;
ORACLE instance shut down.
SYS@vs06 AS SYSDBA> startup
ORACLE instance started.
Total System Global Area 2.1379E+10 bytes
Fixed Size 2262656 bytes
Variable Size 1.0469E+10 bytes
Database Buffers 1.0603E+10 bytes
Redo Buffers 304508928 bytes
Database mounted.
Database opened.
2º – Criar o spfile:
SYS@vs06 AS SYSDBA> create spfile from pfile;
File created.
3º – Desligar e iniciar a instância através dos comandos: shutdown abort e startup, respectivamente.
SYS@vs06 AS SYSDBA> shut abort;
ORACLE instance shut down.
SYS@vs06 AS SYSDBA> startup
ORACLE instance started.
Total System Global Area 2.1379E+10 bytes
Fixed Size 2262656 bytes
Variable Size 1.0469E+10 bytes
Database Buffers 1.0603E+10 bytes
Redo Buffers 304508928 bytes
Database mounted.
Database opened.
Pronto, dessa forma você criou seu arquivo SPFILE através do PFILE existente e corrigiu o erro do alert.log que fazia uma referência incorreta ao arquivo, gerando inúmeras mensagens e poluindo o arquivo de log do Oracle.