Para um ORACLE_SID (serviço?) existe um backup utilizando RMAN configurado e agendado. No SID existem vários bancos de dados, mas apenas um deles precisa de backup dos dados. Para o resto, o backup das definições e configurações é suficiente. Essa configuração do RMAN é possível?
Estou trabalhando em um banco de dados Oracle11gR2. O banco de dados está no modo DataGuard, mesmo que o dataguard esteja configurado para DEFER.
Desejo excluir todos os logs de arquivo dos quais foi feito backup pelo menos 2 vezes em fita.
rman> list archivelog all backed up 2 times to device type sbt_tape;
mostra uma lista de logs de arquivo que correspondem aos critérios
No entanto, quando mais tarde tento executar
rman> delete force noprompt archivelog all backed up 2 times to device type sbt_tape;
nenhum arquivo é excluído.
Todos os parâmetros são definidos com valores padrão, exceto a política de retenção, que é definida para uma janela de 370 dias
Uma olhada no trace que gerei mostra, entre outras coisas, essa mensagem para cada um dos arquivos que foram reportados pelo list
comando
DBGMISC: Matching archived log has 0 backups
que não sei interpretar.
Quaisquer ideias sobre como investigar melhor o problema seriam muito apreciadas
a configuração do rman é a seguinte
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORACLE are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 370 DAYS;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DEVICE TYPE SBT_TAPE PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/opt/tivoli/tsm/client/oracle/bin64/libobk.so';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+ASMARCHIVES/oracle/snap_orcld.f';
Sou novo no RMAN e estou tentando recuperar um banco de dados conectável comrecover pluggable database <pdbname>
Antes de emitir o recover pluggable database
comando, executo as seguintes etapas:
- Faça backup do banco de dados conectável com backup incremental + backup automático
- Desligar o banco de dados
- Excluir arquivo de controle do CDB e todos os arquivos do PDB que quero recuperar (porque quero simular a restauração de um PDB quando os arquivos de controle estiverem ausentes)
- Destino e problema do RMAN
STARTUP NOMOUNT
- Restaurar o arquivo de controle do autobackup (que gerou quando eu faço um backup incremental no PDB)
- Monte o banco de dados e emita
restore pluggable database <pdbname>
- Depois que todos os arquivos para PDB e arquivo de controle no CDB são restaurados, eu corro
recover pluggable database <pdbname>
.
Mas quando eu executo este último comando, esse erro acontece
RMAN> recover pluggable database pdb;
Starting recover at 23-JAN-22
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/23/2022 23:59:47
RMAN-06067: RECOVER DATABASE required with a backup or created control file
O que está causando esse erro e como corrigi-lo? Já restaurei o arquivo de controle do backup e esse erro ainda ocorreu. Preciso fazer backup do CDB e do PDB para recuperar o PDB quando o arquivo de controle estiver ausente?
Desde já, obrigado!
Temos Oracle 18c e RMAN com:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '+FRA';
Temos backups incrementais também. Não havia 'backup current controlfile' em um script de backup, mas o arquivo de controle era copiado toda vez que fazíamos backup. Alguém poderia dizer por que "DELETE OBSOLETE" exclui todas as cópias dos arquivos de controle de backup automático (exceto o último) quando ainda são necessários para a recuperação do banco de dados? Tipo, WTF? Se controlfile for redundante, por que o RMAN não exclui o conjunto de backup relacionado, por exemplo. Não consigo. E sim - temos toneladas dos chamados "backups" sem controlfile.
TSPITR falha com:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 10/29/2020 17:39:13
RMAN-03015: error occurred in stored script Memory Script
RMAN-06026: some targets not found - aborting restore
RMAN-06024: no backup or copy of the control file found to restore
Eu sei que o padrão do RMAN é adicionar a data no seguinte formato: TAGYYYYMMDDTHHMMSS
, Mas se eu quisesse algo assim: BKP_FULL_11112019
. Como eu faço isso? Tentei usar %T
mas não funciona.
Eu quero fazer algo assim:
backup as compressed backupset incremental level 0 database tag = 'BKP_FULL_current_date_here'
Qual current_date_here deve ser a data atual.
Novo no DB. Interessado em Oracle Data Guard. Novo trabalhando com RMAN.
Tudo isso é apenas para teste e não envolve nenhum tipo de env de produção.
Fazendo uso da documentação ORACLE:
- Guia passo a passo sobre como criar espera física usando RMAN DUPLICATE...FROM ACTIVE DATABASE (Doc ID 1075908.1)
. .================================================= =========================. .
O banco de dados primário:
[oracle@ol12c pridb]$ env | grep ORA
ORACLE_UNQNAME=cdb1
ORACLE_SID=pridb
ORACLE_BASE=/u01/app/oracle
ORACLE_HOSTNAME=ol12c.localdomain
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1
SQL> startup pfile=/u01/app/oracle/product/12.1.0.2/db_1/dbs/initpridb.ora;
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/fast_recovery_
area
db_recovery_file_dest_size big integer 2G
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 12
Next log sequence to archive 13
Current log sequence 13
. .================================================= =========================. .
2. A Espera:
[oracle@ol12c stbdb]$ env | grep ORA
ORACLE_UNQNAME=cdb1
ORACLE_SID=stbdb
ORACLE_BASE=/u01/app/oracle
ORACLE_HOSTNAME=ol12c.localdomain
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1
SQL> startup nomount pfile='/u01/app/oracle/product/12.1.0.2/db_1/dbs/initstbdb.ora'
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/fast_recovery_
area/stbdb
db_recovery_file_dest_size big integer 2G
. .================================================= =========================. .
3. RMAN (no banco de dados primário):
[oracle@ol12c pridb]$ rman
RMAN> connect target sys/oracle@pridb
connected to target database: PRIDB (DBID=1212094364)
RMAN> connect auxiliary sys/oracle@stbdb
connected to auxiliary database: PRIDB (not mounted)
. .================================================= =========================. .
4. Erro:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "db_unique_name": expecting one of: "archivelog, autobackup, auxiliary, auxname, backup, catalog, command, compression, controlfile, database, dbid, decryption, default, echo, encryption, high, incarnation, incremental, long, maxcorrupt, maxseq, newname, nocfau, numwidth, restore, snapshot, to restore point, until restore point, until, "
RMAN-01007: at line 1 column 1 file: standard input
E
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "identifier": expecting one of: "archivelog, autobackup, auxiliary, auxname, backup, catalog, command, compression, controlfile, database, dbid, decryption, default, echo, encryption, high, incarnation, incremental, long, maxcorrupt, maxseq, newname, nocfau, numwidth, restore, snapshot, to restore point, until restore point, until, "
RMAN-01008: the bad identifier was: log_archive_dest_2
RMAN-01007: at line 1 column 7 file: standard input
Recebo o erro RMAN-01008 para todos os parâmetros especificados no comando a partir de log_file_name_convert.
. .================================================= =========================. .
5. Minha entrada:
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate auxiliary channel aux type disk;
duplicate target database for standby from active database
parameter_value_convert'pridb','stbdb'
set db_unique_name='stbdb'
set db_file_name_convert='pridb','stbdb'
set log_file_name_convert='pridb','stbdb'
set control_files='/u01/app/oracle/oradata/stbdb/stbdb_control1.ctl'
set standby_file_management='AUTO'
set log_archive_max_processes='10'
set fal_client='stbdb'
set fal_server='pridb'
set standby_file_management='AUTO'
set log_archive_config='dg_config=(pridb,stbdb)'
set log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=stbdb'
set log_archive_dest_2='service=testdb ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=stbdb'
;
}
Primeiro eu peguei:
RMAN-05557 : A instância de destino não foi iniciada com o arquivo de parâmetro do servidor
Porque eu estava tentando: duplicate target database for standby from active database spfile
e não estou iniciando de um spfile, mas diretamente do pfile.
De acordo com minha pesquisa, devo ser capaz de não especificar o SPfile:
Assim mudei de duplicate target database for standby from active database spfile
para duplicate target database for standby from active database
qual deveria funcionar conforme mencionado nos links que verifiquei.
--> Mas quais parâmetros estou atualizando agora? Para mim, isso não parece lógico. .
O código acima foi executado uma vez com sucesso na alocação dos canais, mas depois parou e começou a gerar erros.
Atualmente estou executando o script rman checksyntax
apenas para ter certeza de não quebrar nada .. :)
. .================================================= =========================. .
Você pode por favor me ajudar com:
Eu tentando entender melhor o RMAN.
Descobrir o que estou fazendo de errado na situação acima. (+ Por quê!)
Eu tenho mais interesse em entender o que está acontecendo etc do que fazer isso funcionar rapidamente.
(Mesmo que funcionasse seria ótimo, claro! :) O objetivo neste momento é aprender)
Agradeço antecipadamente por sua ajuda!
. .================================================= =========================. .
SOLUÇÃO
UM SPFILE É NECESSÁRIO
No banco de dados primário:
SQL> create spfile from pfile='/u01/app/oracle/product/12.1.0.2/db_1/dbs/initpridb.ora';
File created.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 1073741824 bytes
Fixed Size 2932632 bytes
Variable Size 671088744 bytes
Database Buffers 394264576 bytes
Redo Buffers 5455872 bytes
Database mounted.
Database opened.
Então iniciei o RMAN e executei o script está rodando enquanto falamos! :) - SIM!
seguinte erro:
RMAN-05537: DUPLICATE sem conexão TARGET quando a instância auxiliar é iniciada com spfile não pode usar a cláusula SPFILE
Resolvido atualizando os valores do script e reconectando o dbs.
Roteiro final usado:
RMAN> run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate auxiliary channel aux type disk;
duplicate target database for standby from active database
spfile
parameter_value_convert'pridb','stbdb'
set db_unique_name='stbdb'
set db_file_name_convert='/u01/app/oracle/oradata/pridb/PRIDB/datafile/','/u01/app/oracle/oradata/stbdb/STBDB/datafile/'
set log_file_name_convert='/u01/app/oracle/oradata/pridb/PRIDB/onlinelog/','/u01/app/oracle/oradata/stbdb/STBDB/onlinelog/'
set control_files='/u01/app/oracle/oradata/stbdb/stbdb_control1.ctl'
set standby_file_management='AUTO'
set log_archive_max_processes='10'
set fal_client='stbdb'
set fal_server='pridb'
set standby_file_management='AUTO'
set log_archive_config='dg_config=(pridb,stbdb)'
set log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=stbdb'
set log_archive_dest_2='service=testdb ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=stbdb'
;
}
Oracle 11.2.0.3 com backup completo diário e backup de archivelog de hora em hora. RMAN com um catálogo.
Se eu fizer um backup às 23h da noite e terminar às 5h do dia seguinte e quiser restaurar um backup em um sistema diferente, como posso identificar um horário para 'definir até' ou um SCN que exigirá a menor quantidade de archivelogs a serem reproduzidos? 23h? Depois das 5 da manhã? RMAN é a minha parte menos compreendida do banco de dados.
Restauramos backups para nossos sistemas de teste a partir da produção por meio de um RMAN Duplicate pontual com um backup completo on-line e registro de arquivo por hora. A cada lua azul algo dá errado (trabalhando para resolver isso separadamente) e acabo não tendo um log de arquivo. Ele passa horas restaurando os arquivos de dados, chega aos archives e depois bombardeia.
Como posso verificar se o RMAN tem todos os archives e arquivos de dados corretos para restaurar antes de começar a enviar os dados de forma significativa?
Estou usando o Oracle Release 12.2.0.1.0 Standard Edition no ODA (Oracle Database Appliance, executando linux). Minha instância "xyz" está sendo executada no modo archivelog. O RMAN executa o backup e os arquivos de dados desnecessários são excluídos automaticamente do conjunto de backup.
[oracle@oda ~]$ rman TARGET /
Recovery Manager: Release 12.2.0.1.0 - Production on Fr Aug 31 16:50:05 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Mit Zieldatenbank verbunden: XYZ (DBID=4079461799)
RMAN> show all;
Kontrolldatei der Zieldatenbank wird anstelle des Recovery-Katalogs verwendet
RMAN-Konfigurationsparameter für Datenbank mit db_unique_name XYZ sind:
CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/mnt/backup/rman/xyz/%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/mnt/backup/rman/xyz/%U';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/app/oracle/fast_recovery_area/XYZ/controlfile/snapcf_xyz.f';
Quando eu verifico o diretório, tudo parece bem - exceto os arquivos de controle que continuam se acumulando
[oracle@oda1 xyz]$ pwd
/mnt/backup/rman/xyz
[oracle@oda1 xyz]$ l
total 4144832
drwxr-xr-x 2 oracle oinstall 4096 Aug 31 11:00 .
drwxr-xr-x 7 oracle oinstall 4096 Jul 4 14:38 ..
-rw-r----- 1 oracle asmadmin 1072447488 Aug 29 01:02 6ntbnscr_1_1
-rw-r----- 1 oracle asmadmin 943104 Aug 29 01:02 6otbnshm_1_1
-rw-r----- 1 oracle asmadmin 18115072 Aug 29 11:00 6qtbovhi_1_1
-rw-r----- 1 oracle asmadmin 62260224 Aug 30 01:00 6stbqgoj_1_1
-rw-r----- 1 oracle asmadmin 1072734208 Aug 30 01:05 6ttbqgq1_1_1
-rw-r----- 1 oracle asmadmin 1159680 Aug 30 01:05 6utbqh2k_1_1
-rw-r----- 1 oracle asmadmin 10599424 Aug 30 11:00 70tbrjtj_1_1
-rw-r----- 1 oracle asmadmin 42828288 Aug 31 01:00 72tbt54i_1_1
-rw-r----- 1 oracle asmadmin 1073242112 Aug 31 01:02 73tbt54q_1_1
-rw-r----- 1 oracle asmadmin 2316288 Aug 31 01:02 74tbt59l_1_1
-rw-r----- 1 oracle asmadmin 17406976 Aug 31 11:00 76tbu89j_1_1
-rw-r----- 1 oracle asmadmin 10698752 Jun 20 11:11 c-4079461799-20180620-00
-rw-r----- 1 oracle asmadmin 10698752 Jun 20 11:25 c-4079461799-20180620-01
-rw-r----- 1 oracle asmadmin 10698752 Jun 20 13:03 c-4079461799-20180620-02
-rw-r----- 1 oracle asmadmin 10698752 Jun 20 13:48 c-4079461799-20180620-03
-rw-r----- 1 oracle asmadmin 10698752 Jun 20 14:03 c-4079461799-20180620-04
-rw-r----- 1 oracle asmadmin 10698752 Jul 16 10:22 c-4079461799-20180716-00
-rw-r----- 1 oracle asmadmin 10698752 Jul 26 17:32 c-4079461799-20180726-00
-rw-r----- 1 oracle asmadmin 10698752 Jul 27 01:02 c-4079461799-20180727-00
-rw-r----- 1 oracle asmadmin 10698752 Jul 27 11:00 c-4079461799-20180727-01
..
Os arquivos que começam com "c" são os arquivos de controle.
Pergunta : O que posso fazer para excluir esses arquivos também automaticamente?
Obrigado por sua percepção!
Após a recuperação incompleta e a abertura de um banco de dados 9i resetlogs
, executamos um backup completo que foi concluído com sucesso. O backup inclui um comando para excluir backups obsoletos após a conclusão:
delete noprompt obsolete device type sbt;
O RMAN está configurado para usar REDUNDÂNCIA 2:
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
No entanto, todos os backups da versão antiga foram imediatamente marcados como obsoletos e excluídos sem levar em consideração a redundância.
- Esse comportamento teria sido diferente se tivéssemos um
RECOVERY WINDOW
configurado em vez deREDUNDANCY 2
? - Esse comportamento é o mesmo em versões posteriores do Oracle?
edit: saída adicionada de LIST INCARNATION
:
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID CUR Reset SCN Reset Time
------- ------- -------- ---------------- --- -------------- ----------
1 1 LIVE 3494832994 NO 1 19-JAN-04
2 2 LIVE 3494832994 NO 11966702870498 01-JAN-14
3 3 LIVE 3494832994 YES 12041003378277 04-JUL-18