Restoring the Control File to a Default location: Subset is Lost

Este artigo simulará a recuperação de control file em um banco de dados com os arquivos multiplexados, além de preservar o seu local de origem. Em suma, ao menos 1 control file deve estar disponível e intacto para que possamos fazer o procedimento.

Reconhecendo o nosso laboratório:

[oracle@oel8 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 18.0.0.0.0 - Production on Tue Aug 17 19:57:30 2021
Version 18.13.0.0.0
 
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.13.0.0.0
 
SQL> SELECT NAME,OPEN_MODE,LOG_MODE FROM V$DATABASE;
 
NAME      OPEN_MODE            LOG_MODE
--------- -------------------- ------------
RMANDB    READ WRITE           ARCHIVELOG
 
SQL> SHO PARAMETER CONTROL_FILES;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /oracle/dados/RMANDB/controlfi
                                                 le/o1_mf_h8nytrhd_.ctl, /oracl
                                                 e/fra/RMANDB/controlfile/o1_mf
                                                 _h8nytrty_.ctl

Para simular a perda, faremos a remoção do arquivo conforme abaixo, preservando ainda 1 control file:

SQL> !rm /oracle/dados/RMANDB/controlfile/o1_mf_h8nytrhd_.ctl
 
SQL>

Depois de pouco tempo, o Alert.log já reporta o problema:

2021-08-17T20:02:53.169969-03:00
Errors in file /oracle/18.0.0/base/diag/rdbms/rmandb/RMANDB/trace/RMANDB_mz00_3395.trc:
ORA-00202: control file: '/oracle/dados/RMANDB/controlfile/o1_mf_h8nytrhd_.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

Em certas ocasiões, a instância pode abortar ou pode continuar funcionando. Em meu caso, ao tentar rodar alguns comandos, o erro já é reportado:

SQL> SELECT NAME FROM V$DATABASE;
SELECT NAME FROM V$DATABASE
                 *
ERROR at line 1:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/dados/RMANDB/controlfile/o1_mf_h8nytrhd_.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

Para iniciar o processo de recuperação, abortamos a instância, pois não é possível realizar um shutdown limpo se um control file está indisponível:

SQL> SHU ABORT;
ORACLE instance shut down.
SQL>

Agora basta copiarmos um control file intacto para o arquivo perdido:

SQL> !cp /oracle/fra/RMANDB/controlfile/o1_mf_h8nytrty_.ctl /oracle/dados/RMANDB/controlfile/o1_mf_h8nytrhd_.ctl
 
SQL> !ls -lthr /oracle/dados/RMANDB/controlfile/o1_mf_h8nytrhd_.ctl
-rw-r-----. 1 oracle oinstall 12M Aug 17 20:23 /oracle/dados/RMANDB/controlfile/o1_mf_h8nytrhd_.ctl

Agora é só subir o banco de dados:

SQL> STARTUP;
ORACLE instance started.
 
Total System Global Area 1610612016 bytes
Fixed Size                  8658224 bytes
Variable Size             520093696 bytes
Database Buffers         1073741824 bytes
Redo Buffers                8118272 bytes
Database mounted.
Database opened.
SQL> SELECT NAME FROM V$DATABASE;
 
NAME
---------
RMANDB

Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laboratório pessoal para fins de aprendizado.

Leave a Comment

Your email address will not be published.