Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

como recuperar o banco de dados em espera de um log de arquivo ausente


Um banco de dados em espera física depende da aplicação contínua de logs de arquivo de um banco de dados primário para estar em sincronia com ele. Nas versões do Oracle Database anteriores a 10g, no caso de um log de arquivo estar ausente ou corrompido, era necessário reconstruir o banco de dados em espera a partir do zero. A partir de 10g, você pode usar um backup incremental do SCN e recuperar o standby usando o mesmo para compensar os logs de arquivo ausentes.

Então, aqui estão as etapas de como recuperar o banco de dados em espera de um log de arquivo ausente

Etapa 1:

No banco de dados em espera, verifique o SCN atual
sqlplus "/ as sysdba"
SQL>set numwidth 30;
SQL>select current_scn from v$database;
CURRENT_SCN
-----------
6746747647647

Etapa 2 :

No banco de dados primário, crie o backup incremental necessário do SCN acima
rman target /
RMAN> {
allocate channel c1 type disk;
BACKUP INCREMENTAL FROM SCN 6746747647647 DATABASE
FORMAT /tmp/inc_standby_%U';
}

Podemos usar trabalhadores paralelos para acelerar a criação do backup se o banco de dados tiver gerado muitas alterações
run
{allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
allocate channel d4 type disk;
allocate channel d5 type disk;
allocate channel d6 type disk;
allocate channel d7 type disk;
allocate channel d8 type disk;
allocate channel d9 type disk;
allocate channel d10 type disk;
BACKUP INCREMENTAL FROM SCN 6746747647647 DATABASE
FORMAT /tmp/inc_standby_%U';
}

Etapa 3:

Cancelar a recuperação gerenciada no banco de dados em espera
sqlplus "/ as sysdba"
SQL>alter database recover managed standby database cancel;
Media recovery complete.

Etapa 4:
  • scp os arquivos de backup para o servidor em espera para a pasta /tmp.
  • Catalogar os arquivos de backup incremental no banco de dados em espera
rman target /
RMAN> CATALOG START WITH '/tmp/';
searching for all files that match the pattern /tmp/
List of Files Unknown to the Database
=====================================……
Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files…
cataloging done

Etapa 5:

Aplique o backup incremental ao banco de dados em espera
rman target /
RMAN>RECOVER DATABASE NOREDO;

Etapa 6:

Coloque o banco de dados em espera de volta ao modo de recuperação gerenciado.
sqlplus "/ as sysdba"
SQL>recover managed standby database disconnect;
Media recovery complete.

No alert.log você notará que o banco de dados em espera ainda está procurando os arquivos de log antigos
FAL[client]: Failed to request gap sequence
GAP - thread 1 sequence ….

Isso ocorre porque o controlfile não foi atualizado. Portanto, o arquivo de controle em espera deve ser recriado

Etapa 7:

No primário, crie um novo arquivo de controle em espera
sqlplus "/ as sysdba"
SQL> alter database create standby controlfile as ‘/tmp/standby01.ctl’;
System altered.

Etapa 8:

Capture as informações do arquivo de dados no banco de dados STANDBY.
O arquivo de controle em espera precisará ser atualizado a partir do backup feito na etapa 7. Como os nomes dos arquivos de dados provavelmente são diferentes dos principais, salve os nomes dos nomes dos arquivos de dados em espera para referência após restaurar o arquivo de controle do backup primário. Execute a consulta abaixo no banco de dados em espera e salve os resultados para uso posterior.
spool standby_datafile_names.txt
set pagesize 1000;
set lines 200
col name format a60
select file#, name from v$datafile order by file# ;
spool off

Etapa 9:

Copie o arquivo de controle de espera para o site de espera. Encerre o banco de dados em espera e substitua os arquivos de controle em espera e reinicie o banco de dados em espera no modo de recuperação gerenciada usando o comando abaixo
RMAN> SHUTDOWN IMMEDIATE ;
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/standby01.ctl';

Etapa 10:

Monte o modo de espera
RMAN> ALTER DATABASE MOUNT;

Etapa 11:

Esta etapa é necessária se a localização dos arquivos de dados for diferente em standby e Primary

Se o primário e o de espera tiverem nomes de arquivo de dados e estrutura idênticos, esta etapa poderá ser ignorada.

A Oracle recomenda verificar a encarnação para primário e standby antes de concluir esta etapa.
example:  
RMAN> list incarnation; 

Como restauramos o arquivo de controle do PRIMARY, os nomes dos locais dos arquivos de dados neste arquivo de controle STANDBY restaurado serão os mesmos do banco de dados PRIMARY. Se a estrutura de diretórios for diferente entre os bancos de dados de reserva e primário ou se você estiver usando nomes de arquivos gerenciados pelo Oracle OMF, ele não poderá identificar os arquivos de espera. Assim podemos catalogar os arquivos de dados STANDBY com o RMAN para executar a operação de renomeação.

Execute a etapa abaixo em STANDBY para cada grupo de discos (ou diretório) em que os arquivos de dados em espera residem.
RMAN> CATALOG START WITH '+DATA/STBY/datafile/';

Se algum arquivo de dados tiver sido adicionado ao primário APÓS o SCN de backup (no nosso exemplo, scn 6746747647647), esses arquivos de dados não serão criados no servidor em espera automaticamente, independentemente da configuração do parâmetro standby_file_management. Os arquivos de dados adicionados terão que ser restaurados para o servidor em espera. Para determinar se algum arquivo foi adicionado ao Primário desde o SCN atual em espera
SQL>SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > 6746747647647

Se ele retornar alguma linha, teremos que restaurar esses arquivos do primário para o modo de espera
RMAN> backup datafile <missing-1>,<missing-2> ,<missing-3> , format '/tmp/ForStandby_%U' tag 'FORSTANDBY';

Copie-os para o modo de espera e, em seguida, catalogue-os e restaure-os
CATALOG START WITH '/tmp/ForStandby';
run
{
set newname for datafile X to '+DISKGROUP';
set newname for datafile Y to '+DISKGROUP';
set newname for datafile Z to '+DISKGROUP';
etc.
restore datafile x,y,z,….;
}

Agora podemos mudar o banco de dados para copiar
RMAN> SWITCH DATABASE TO COPY;

Se a consulta acima retornar com 0 zero linhas
RMAN> SWITCH DATABASE TO COPY;

Etapa 11

Em ESPERA  banco de dados, limpe todos os grupos de redo logs de espera:

SQL> selecione GROUP# de v$logfile onde TYPE='STANDBY' group by GROUP#;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;
….

Etapa 12

Agora você pode iniciar o MRP
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

Espero que você goste dessas etapas detalhadas sobre como recuperar um banco de dados em espera de um log de arquivo ausente. Por favor, forneça o feedback. Pode haver um erro.

Também lê
Não ASM para ASM
como encontrar o número de sequência de log de arquivo no oracle
como verificar erros de log de alerta no oracle
Comandos de backup do RMAN
RMAN Listar comandos de backup
Etapas a serem executadas para Rolling Forward um banco de dados de espera física usando o backup incremental do RMAN. (Doc ID 836986.1)