RMAN – Several duplicates forms using RMAN and DBCA
Um banco de dados duplicado, que é uma cópia do banco de dados de origem (ou um subconjunto do banco de dados de origem) com um DBID exclusivo. Como um banco de dados duplicado possui um DBID exclusivo, ele é independente do banco de dados de origem e pode ser registrado no mesmo catálogo de recuperação. Normalmente, bancos de dados duplicados são usados para teste.
Já um banco de dados STANDBY, é uma cópia especial do banco de dados de origem (chamado banco de dados primário em um ambiente DataGuard) atualizado pela aplicação de dados de redo do banco de dados primário.
Pré Requisitos para todo duplicate:
• orapwd
• Instancia nomount
• Tnsnames configurado
• Listener Estático (não necessariamente em todos os cenarios mas é uma boa prática)
1. Duplicação baseada em backup com uma conexão de destino:
O RMAN cria arquivos duplicados de backups e cópias RMAN pré-existentes
rman target sys/oracle@WINT auxiliary sys/oracle@TESTE run { DUPLICATE DATABASE TO TESTE SPFILE parameter_value_convert ('WINT','TESTE') set db_file_name_convert='/u01/oradata/WINT/','/u01/oradata/TESTE/' set log_file_name_convert='/u01/oradata/WINT/','/u01/oradata/TESTE/' set control_files='/u01/oradata/TESTE/control01.ctl','/u01/oradata/TESTE/control02.ctl' set db_name='TESTE' set log_archive_dest_1='location=/u01/oradata/TESTE/arch' BACKUP LOCATION '/u01/app/oracle/fast_recovery_area/WINT' NOFILENAMECHECK; } OR run { DUPLICATE DATABASE TO TESTE BACKUP LOCATION '/u01/app/oracle/fast_recovery_area/WINT' NOFILENAMECHECK; }
2. Duplicação baseada em backup sem uma conexão de destino
• O RMAN cria arquivos duplicados de backups e cópias RMAN pré-existentes.
• O comando DUPLICATE deve ter sido emitido com a cláusula DATABASE.
• Este formulário requer uma conexão com uma instância auxiliar e um catálogo de recuperação.(Rman auxiliar sys/senha@orclclonecatalogrcat/rcat@rcat)
• Este modo é útil quando o banco de dados de destino não está disponível ou uma conexão com ele não é desejável (conforme exigido pelas restrições da política de segurança ou um firewall).
.rman auxiliary sys/Oracle123@TESTE catalog rcat/rcat@rcat run { allocate auxiliary channel ch1 type disk; duplicate database WINT dbid 1758308928 to TESTE until scn 274615 db_file_name_convert 'WINT','TESTE' spfile parameter_value_convert 'WINT','TESTE' set log_file_name_convert 'WINT','TESTE'; }
3. Duplicação baseada em backup sem conexão ao catálogo de destino e recuperação (somente auxiliar)
• O RMAN cria arquivos duplicados de backups e cópias do RMAN que foram colocados em um LOCAL DE BACKUP designado.
• O NOFILENAMECHECK instrui o RMAN a não verificar se os nomes dos arquivos de dados são idênticos do destino ao auxiliar.
• Se seu destino e auxiliar estiverem no mesmo servidor, você NÃO deve incluir o NOFILENAMECHECK, pois deseja que o RMAN garanta que você não tente restaurar um arquivo de dados auxiliar sobre um arquivo de dados de banco de dados de destino ativo.
rman auxiliary sys/Oracle123@MYCLONE run { {DUPLICATE DATABASE TO <auxiliary DB name> UNTIL TIME "TO_DATE('29-MAY-2010 14:16:42','DD-MON-YYYYHH24:MI:SS')" SPFILE set control_files='D:\<aux path>\c1.ctl' set db_file_name_convert='D:<target path>','D:<aux path>' set log_file_name_convert='D:<target path>','D:<aux path>' BACKUP LOCATION 'D:\<location of backup on disk>'; } or rman auxiliary / RMAN> DUPLICATE TARGET DATABASE TO DUP BACKUP LOCATION '/u01/rman/TRG' SPFILE PARAMETER_VALUE_CONVERT '/u01/dbfile/TRG', '/u01/dbfile/DUP’. — new location for controlfiles SET DB_FILE_NAME_CONVERT '/u01/dbfile/TRG', '/u01/dbfile/DUP’ — new location for data files SET LOG_FILE_NAME_CONVERT '/u01/oraredo/TRG', '/u01/oraredo/DUP’; — new location for log files
Nota 1: Ao usar o comando duplicado, não há opção para forçar o RMAN a restaurar arquivos que foram restaurados com sucesso anteriormente. Se você precisar forçar o RMAN, primeiro será necessário excluí-lo.
Nota 2: Na duplicação de bancos de dados baseada em backup com uma conexão com o banco de dados de destino e no modo NOARCHIVELOG, a recuperação de mídia usa a opção NOREDO. Assim, se houver backups incrementais, o RMAN aplicará apenas esses backups incrementais aos arquivos restaurados durante a recuperação.
Para duplicação de bancos de dados baseada em backup sem uma conexão com o banco de dados de destino, o RMAN não pode determinar se o banco de dados de origem estava no modo NOARCHIVELOG. Portanto, você deve usar a opção NOREDO quando o banco de dados de origem estava no modo NOARCHIVELOG quando os backups foram feitos. Você também pode usar a opção NOREDO quando não quiser aplicar arquivos de redo log arquivados a um backup consistente.
Nota 3: Se você duplicar um subconjunto de tablespaces e se o banco de dados de origem não estiver aberto e não houver conexão com o catálogo, quaisquer tablespaces duplicados com segmentos de desfazer deverão ser listados na cláusula UNDO TABLESPACE. Resumindo: Só preciso da cláusula UNDO TABLESPACE se sem acesso ao target (not open or not connection) e sem acesso ao catalog.
Nota 4: Duplicar usando backup baseado com conexão ao destino, o diretório de arquivos de backup deve ser o mesmo. Portanto, há algumas considerações quando ASM para não ASM.
Exemplos de cenários de Duplicate para outra máquina utilizando backup
1. Duplicar para um banco de dados com o mesmo nome e estrutura de diretórios usando a duplicação sem destino
• BD Target:
db_name: TRG
Data file dir: /u01/oradata/TRG
Backup dir: /u01/rman/TRG
• BD AUXILIARY (Destino)
db_name: TRG
Data file dir: /u01/oradata/TRG
--> Target Steps rman target / rman> backup database plus archivelog; Copy RMAN backups to auxiliary Copy init file to auxiliary --> Auxiliary Steps SQL> startup nomount; rman auxiliary / RMAN> duplicate target database to TRG backup location '/u01/rman/TRG' nofilenamecheck;
2. Duplicar para um banco de dados alterando o nome
• BD Target:
db_name: TRG
Data file dir: /u01/oradata/TRG
Backup dir: /u01/rman/TRG
• BD AUXILIARY (Destino)
db_name: DUP
Data file dir: /u01/oradata/TRG
Backup dir: /u01/rman/TRG
--> Target Steps rman target / rman> backup database plus archivelog; Copy RMAN backups to auxiliary Copy init file to auxiliary --> Auxiliary Steps SQL> startup nomount; rman auxiliary / RMAN> duplicate target database to DUP backup location '/u01/rman/TRG' nofilenamecheck; set spfileDUP.ora and ORACLE_SID
3. Duplicar para um banco de dados alterando o nome e a estrutura
• BD Target:
db_name: TRG
Data file dir: /u01/oradata/TRG
Backup dir: /u01/rman/TRG
• BD AUXILIARY (Destino)
db_name: DUP
Data file dir: /u01/oradata/DUP
Backup dir: /u01/rman/TRG
--> Target Steps rman target / rman> backup database plus archivelog; Copy RMAN backups to auxiliary Copy init file to auxiliary --> Auxiliary Steps SQL> startup nomount; rman auxiliary / RMAN> duplicate target database to DUP backup location '/u01/rman/TRG' SPFILE PARAMETER_VALUE_CONVERT '/u01/oradata/TRG','/u01/oradata/DUP' SET DB_FILE_NAME_CONVERT '/u01/oradata/TRG','/u01/oradata/DUP' SET LOG_FILE_NAME_CONVERT '/u01/oradata/TRG','/u01/oradata/DUP'; set spfileDUP.ora and ORACLE_SID
Duplicate de banco de dados ativo:
- O Rman faz a cópia através da rede, não fez 11g de modo que não é necessário backup no banco de origem
- O Rman duplica os arquivos diretamente de um banco de dados aberto ou montado.
- A duplicação ativa pode usar cópias de imagem ou conjuntos de backup. Os conjuntos de backup oferecem várias vantagens, incluindo compactação de blocos não utilizados, criptografia, ignorar blocos não utilizados, ignorar blocos de desfazer confirmados, o que leva a um banco de dados menor e desempenho rápido.
◦ MÉTODO BASEADO EM PUSH: Use cópias de imagem e pode exigir recursos adicionais no banco de dados de origem. Nenhum canal auxiliar alocado ou quando o número de canais auxiliares alocados é menor que o número de canais de destino.
◦ MÉTODO PULL BASED: Usando backupset, usando backupset compactado ou cláusula multi section (SECTION SIZE). O número de canais auxiliares alocados é igual ou maior que o número de canais de destino alocados. - A partir de 12c foi lançado o pull based para reduzir a carga no servidor principal
- Ao usar o formato do conjunto de backup, o RMAN cria o equivalente a um conjunto de backup na memória e transfere o conjunto de backup pela rede para o banco de dados auxiliar, onde restaura e recupera os arquivos de dados. Ao usar cópias de imagem, o RMAN copia byte a byte os arquivos de dados ativos pela rede para o banco de dados auxiliar.
Formas de uso ou pull based:
◦ Canal auxiliar para mais que o alvo (Ex: 2 auxiliares e 1 alvo)
◦ USANDO BACKUPSET, USANDO COMPRESSED BACKUPSET, USANDO SET ENCRYPTION, SECTION SIZE cláusula utilizada com o comando DUPLICATE … FROM ACTIVE DATABASE
- Ao usar o duplicado do ativo o banco de dados abre em modo open e faz resetlogs, caso não queira, basta usar a clausular “NOOPEN”
- Ao conectar o RMAN ao banco de dados de origem como TARGET, você deve especificar um nome de usuário e uma senha, mesmo que o RMAN use autenticação do sistema operacional. A conexão com a instância auxiliar deve usar o mesmo nome de usuário e senha da conexão do banco de dados de origem. O banco de dados de origem deve ser montado ou aberto. Se o banco de dados de origem estiver aberto, o arquivamento deverá ser ativado. Se o banco de dados de origem não estiver aberto, ele deve ter sido encerrado de forma consistente.
- Ao conectar o RMAN à instância auxiliar, as seguintes regras se aplicam:
◦ Ao executar o RMAN no mesmo host da instância auxiliar, você pode se conectar localmente sem um nome de serviço de rede, desde que se conecte usando um nome de usuário e senha e que seu comando DUPLICATE não inclua a cláusula PASSWORD FILE. O usuário conectado deve ter o privilégio SYSDBA ou SYSBACKUP.
◦ Ao conectar remotamente ou ao usar a cláusula PASSWORD FILE no comando DUPLICATE, você deve se conectar usando um nome de serviço de rede. Você deve primeiro criar um arquivo de senha para a instância auxiliar. - O banco de dados de origem e as instâncias auxiliares devem usar a mesma senha SYS e SYSBACKUP, o que significa que ambas as instâncias devem ter arquivos de senha. O arquivo de senha deve conter pelo menos duas senhas, para os usuários SYS e SYSBACKUP.
Você pode iniciar a instância auxiliar e habilitar o banco de dados de origem para se conectar a ela. - O comportamento DUPLICADO para arquivos de senha varia dependendo se o banco de dados duplicado atuará como um banco de dados em espera. Se você criar um banco de dados duplicado que não seja um banco de dados em espera, o RMAN não copiará o arquivo de senha por padrão. Você pode especificar a opção PASSWORD FILE para indicar que o RMAN pode substituir o arquivo de senha existente na instância auxiliar. Se você criar um banco de dados em espera, o RMAN copiará o arquivo de senha para o host em espera por padrão, substituindo o arquivo de senha existente. Nesse caso, a cláusula PASSWORD FILE não é necessária.
- Nota: Com a duplicação ativa, o RMAN não permite restaurar para um ponto no tempo no passado. se você tentar uma operação de duplicação pontual, o RMAN lançará um erro RMAN-05600 indicando que você não pode especificar a cláusula UNTIL ao duplicar do banco de dados ativo.
- Ao duplicar um todo (CDB) ou um ou mais (PDBs), você deve criar a instância auxiliar como um CDB e conectar-se à raiz das instâncias de destino e auxiliares. Lembre-se de criar uma instância auxiliar como um CDB, enable_pluggable_database=TRUE deve ser configurado no arquivo de parâmetros.
Exemplos de cenários de Active Duplicate
1. Active Duplicate banco de dados na mesma máquina
• BD Target:
db_name: WINT
Data file dir: /u01/oradata/WINT
Host: srv01
• BD AUXILIARY (Destino)
db_name: TESTE
Data file dir: /u01/oradata/TESTE
Host: srv01
--> Target Steps Listener Services (WINT, TESTE) --> Auxiliary Steps Create init.ora for auxiliary Modify init and create OS directories export ORACLE_SID Create a password file for the auxiliary SQL> startup nomount; rman target sys/oracle@WINT auxiliary sys/oracle rman> DUPLICATE TARGET DATABASE TO TESTE FROM ACTIVE DATABASE SPFILE PARAMETER_VALUE_CONVERT '/u01/oradata/WINT','/u01/oradata/TESTE' SET DB_FILE_NAME_CONVERT '/u01/oradata/WINT','/u01/oradata/TESTE' SET LOG_FILE_NAME_CONVERT '/u01/oradata/WINT','/u01/oradata/TESTE' ;
2. Active Duplicate banco de dados em máquina diferente usando cópias de imagem
• BD Target:
db_name: WINT
Data file dir: /u01/oradata/WIT
Host: srv01
• BD AUXILIARY (Destino)
db_name: WINT
Data file dir: /u01/oradata/WINT
Host: srv02
--> Target Steps Listener Services (WINT) --> Auxiliary Steps Listener Services (WINT) Copy init.ora, password file for auxiliary export ORACLE_SID SQL> startup nomount; rman target sys/oracle@srv01:1521/WINT auxiliary sys/oracle@srv02:1521/WINT rman> DUPLICATE TARGET DATABASE TO WINT FROM ACTIVE DATABASE USING COPY NOFILENAMECHECK;
3. Active duplicate com um banco de dados usando o formato de conjunto de backup compactado
• BD Target:
db_name: TRG
Data filective dir: /u01/oradata/TRG
Host: srv01
• BD AUXILIARY (Destino)
db_name: TRG
Data file dir: /u01/oradata/TRG
Host: srv02
--> Target Steps Listener Services (TRG) --> Auxiliary Steps Listener Services (TRG) Copy init.ora, password file for auxiliary export ORACLE_SID SQL> startup nomount; rman target sys/foo@srv01:1521/TRG auxiliary sys/foo@srv02:1521/TRG rman> DUPLICATE TARGET DATABASE TO TRG FROM ACTIVE DATABASE USING COMPRESSED BACKUPSET NOFILENAMECHECK;
Duplicate para PDBS
rman target sys/Oracle123@ORCL auxiliary sys/Oracle123@MYCLONE run { allocate channel c1 device type disk; allocate auxiliary channel a1 device type disk; allocate auxiliary channel a2 device type disk; duplicate target database to CDBDUP from active database using backupse nofilenamecheck; }
Duplicate CDBs usando DBCA no modo silencioso (19c Feature)
Req: Oracle Database 19c installed A CDB: ORCL with PDB1 in archivelog mode. 1. Using DBCA to duplicate a CDB dbca -silent -createDuplicateDB -gdbName CDB19 -sid CDB19 -primaryDBConnectionString hostname:1521/ORCL -databaseConfigType SI - initParams db_unique_name=CDB19 -sysPassword password -datafileDestination /u02/app/oracle/oradata 2. Using DBCA to Duplicate a CDB with OMF dbca -silent -createDuplicateDB -gdbName CDBOMF19 -sid CDBOMF19 -primaryDBConnectionString hostname:1521/ORCL - databaseConfigType SI -initParams db_unique_name=CDBOMF19 -sysPassword password -datafileDestination /u02/app/oracle/oradata – useOMF=TRUE
Duplicar banco de dados como banco de dados em espera usando DBCA no modo silencioso(From 12.2)
dbca -silent -createDuplicateDB -gdbName ORCLB -sid ORCLB -sysPassword "Ach1z0#d" -primaryDBConnectionString ORCLA -createAsStandby - dbUniquename ORCLB