Duplicação baseada em backup usando RMAN
O Oracle Database nos possibilita diversas maneiras de duplicação de um banco de dados utilizando a ferramenta RMAN. A mais comum é a duplicação ativa, onde conectamos o banco que será duplicado como target no client RMAN e um banco auxiliar, que será o clone do banco original.
Entretanto, podem existir cenários onde os recursos computacionais disponíveis não possibilitam duas instâncias de banco de dados executarem ao mesmo tempo, ou ainda, hosts que não possuem uma comunicação entre si, o que impossibilita o cenário de duplicação ativa. Neste cenário, podemos estar criando o nosso banco de dados clone partindo dos backups do banco de origem.
Conceituando a duplicação baseada em backup
A duplicação baseada em backup nos possibilita criar um clone de um banco de dados sem a necessidade da conexão com um banco target ou com um recovery catalog.

Para que a operação seja possível, uma instância em modo NOMOUNT, que será o clone do banco de origem, deve existir. Geralmente usamos o PFILE exportado do banco de origem como base de configuração do banco clone, e o utilizamos na inicialização da nova instância.
Com a instância do banco clone rodando, instruímos o RMAN a duplicar o banco de dados, usando os dados dos arquivos de backup do banco de origem. Para que isso seja possível, apontamos a localização dos backups durante o comando de duplicação.
Duplicando um banco teste
A fim de demonstrar a duplicação baseada em backup, iremos duplicar o banco de dados “ORCLSRC” para o banco “ORCLDUP”. Neste cenário, estamos considerando que o banco “ORCLSRC” já possui um backup completo do banco de dados feito.
Inicialmente exportamos um PFILE do banco de origem:
CREATE PFILE='/home/oracle/pfile_orcl.ora' FROM SPFILE;
Agora precisamos fazer algumas alterações neste PFILE para que possamos utilizá-lo para subir o nosso banco clone:
- Alteração do caminho dos control files: é preciso alterar o caminho dos control files do banco clone, a fim de evitar a sobrescrita dos control files do banco de origem;
- Alteração do audit_file_dest: caminho onde os arquivos de auditoria do banco ficarão. Caso o diretório especificado não exista, é necessário criá-lo manualmente antes de proceder com a duplicação;
- Alteração do db_name: definimos aqui qual será o nome do nosso banco clone. No caso desta prática, alterei para “orcldup”;
Neste ponto, caso o banco de dados clone venha a residir em um host diferente, precisamos copiar o PFILE e os arquivos de backup para o novo host.
Por uma questão de praticidade, podemos adicionar um novo registro no arquivo /etc/oratab, para que eu possa setar as variáveis de ambiente através do comando oraenv. O registro adicionado foi:
orcldup:/u01/app/oracle/product/19.0.0/dbhome_1:N
Com o PFILE configurado e as variáveis de ambiente setadas, podemos iniciar o banco em modo NOMOUNT, através do SQL*Plus:
STARTUP NOMOUNT PFILE='/home/oracle/pfile_orcl.ora'
Em seguida iniciamos o RMAN, usando a instância iniciada como auxiliar:
rman auxiliary /
Para que a duplicação ocorra, precisamos executar o comando DUPLICATE juntamente com a cláusula BACKUP LOCATION, na qual especificamos o diretório onde os backups se encontram:
DUPLICATE DATABASE TO 'ORCLDUP' BACKUP LOCATION '/u02/fast_recovery_area/ORCLSRC/';
Por padrão, o RMAN cria o banco duplicado e o abre em modo RESETLOGS. Caso esse comportamento não seja desejado, podemos adicionar a cláusula NOOPEN ao comando.
Conclusão
Neste artigo vimos como fazer a duplicação de um banco de dados sem a necessidade de uma conexão com um banco target ou com um recovery catalog, utilizando para isso os backups do banco de origem para a geração do banco clone.
Um grande abraço a todos!
Publicar comentário