Resolvendo o RMAN-05624 durante o duplicate for standby
Recentemente durante a criação de um standby físico através de um duplicate for standby, recebi o RMAN-05624, e neste post vou mostrar como resolvê-lo.
Cenário
A técnica que escolhi utilizar para criar o standby foi um duplicate a partir do backup, onde eu me conecto à instância auxiliar, que se tornará o standby físico, e ao catálogo que contém os metadados do backup que vou usar.

Fonte: Oracle
Decidi usar essa abordagem pois a base em questão era muito grande (mais de 40TB), e um duplicate from active database acarretaria em um impacto no ambiente produtivo durante um longo período de tempo.
Esta base já conta com um standby físico, que é utilizado para tirar os backups da base (ponto importante para entender o problema).
Para a realização do duplicate, foi realizada a conexão do RMAN com o catálogo e à instância auxiliar:
rman auxiliary sys@AUXILIARY_DGMGRL catalog rco@CATALOG
Em seguida, foi executado o bloco run abaixo, setando o DBID do banco que seria duplicado, e o SCN alvo da operação:
run {
allocate auxiliary channel ch1 type 'sbt_tape' PARMS="...";
allocate auxiliary channel ch2 type 'sbt_tape' PARMS="...";
set dbid 123456789;
set until scn 12345678912345;
duplicate target database for standby
dorecover
nofilenamecheck;
}
Passados alguns segundos, o erro RMAN-05624 foi retornado:
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of Duplicate Db command at 10/07/2025 00:47:30 RMAN-05501: aborting duplication of target database RMAN-05624: data file name not found in the repository for data file number=59
Causa
Conforme a mensagem do erro RMAN-05624 aponta, o RMAN não conseguiu encontrar o nome do data file número 59 no catálogo.
Isso ocorre porque quando um data file é adicionado ao banco primário, ocorre um resync dele com o catálogo, e é feita a associação do data file com o db_unique_name do primário. Para os standbys, esse file name tem o valor NULL até que seja feito um resync do standby com o catálogo.
A seguinte consulta pode ser feita diretamente no catálogo para verificar o problema:
SELECT S.DB_UNIQUE_NAME, D.NAME AS "DATA FILE NAME" FROM RC_DATAFILE D JOIN RC_SITE S ON D.DB_KEY = S.DB_KEY WHERE D.FILE# = 59 AND D.DB_NAME = 'ORCL'; DB_UNIQUE_NAME DATA FILE NAME ------------------------------ ------------------------------------------------------------------------------------------- ORCLSTBY ORCLPRIM +DATA/ORCLPRIM/A0D1562261378916I1978F2AB80A3233/DATAFILE/sysaux.341.1200911001
Solução
Para resolver o problema pode ser feito o resync do standby, que vai adicionar as informações sobre os data files ao catálogo, ou também pode ser contornado através de um SET NEWNAME FOR DATABASE, apontando para o diskgroup ASM de destino, no bloco run do RMAN:
run {
allocate auxiliary channel ch1 type 'sbt_tape' PARMS="...";
allocate auxiliary channel ch2 type 'sbt_tape' PARMS="...";
set newname for database to '+DATA';
set dbid 123456789;
set until scn 12345678912345;
duplicate target database for standby
dorecover
nofilenamecheck;
}
Conclusão
Caso você não tenha um catálogo, também é possível realizar o duplicate a partir de um backup utilizando apenas a instância auxiliar. O processo é descrito no post Duplicação baseada em backup usando RMAN.
Abaixo a referência usada:
Publicar comentário