Corrigindo o erro ORA-01565: Unable to open Spfile

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.

Leonardo Pedroso

Leonardo Pedroso

Profissional de TI experiência em administração de banco de dados: SQL Server 2000 a 2019, Oracle 11g a 19c, PostgreSQL, MySQL, MongoDB, Cassandra. Atua realizando análise de desempenho, DR e HA, implantação, administração de banco de dados em cluster e implementação de projetos de banco de dados NoSQL (MongoDB, Cassandra), bem como automação de processos utilizando Shell script, Powershell (dbatools), e players de Cloud: Azure e Aws.