Tipo de backup: cópia de imagem.
Cenário: Eu quero 1 db completo + 6 backups incrementais e manter os últimos 7 dias de backup no armazenamento.
Aqui está o meu roteiro:
RUN {
allocate channel c1 device type disk format '/path/%U';
allocate channel c2 device type disk format '/path/%U';
allocate channel c3 device type disk format '/path/%U';
allocate channel c4 device type disk format '/path/%U';
allocate channel c5 device type disk format '/path/%U';
allocate channel c6 device type disk format '/path/%U';
allocate channel c7 device type disk format '/path/%U';
allocate channel c8 device type disk format '/path/%U';
CROSSCHECK ARCHIVELOG ALL;
CROSSCHECK BACKUP;
CROSSCHECK BACKUPSET;
CROSSCHECK COPY;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED BACKUP;
DELETE NOPROMPT EXPIRED BACKUPSET;
DELETE NOPROMPT EXPIRED COPY;
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'my_tag_01' DATABASE;
RECOVER COPY OF DATABASE WITH TAG 'my_tag_01';
DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-3';
BACKUP SPFILE FORMAT '/path/spfile_%T_%U';
BACKUP CURRENT CONTROLFILE FORMAT '/path/cfile_%T_%U';
}
exit
Como posso projetar meu script de acordo com meu cenário?
Muito obrigado.
Atenciosamente,
Suponho que você queira algo assim :
A primeira execução leva um backup de nível 0 (mesmo que a instrução de backup tenha
level 1
) Todos os backups a seguir sãolevel 1
backups que contêm apenas as diferenças em relação aos backups anteriores. A instrução de recuperação recupera atéSYSDATE-7
, ou seja, até uma semana atrás. Após excluir todos os backups desnecessários, você terá os seguintes backups em disco:Eu nunca tentei essa estratégia, mas acho que uma janela de recuperação de 7 dias é a política apropriada.
Para arquivos de controle, o seguinte pode ser encontrado no Guia do Usuário de Backup e Recuperação de Banco de Dados
Fazemos um backup de todo o banco de dados que contém um backup do arquivo de dados 1, para que também contenha um backup de um arquivo de controle. Mas eu recomendo habilitar o backup automático do arquivo de controle também.
ou
Você quer ser capaz de recuperar todos os pontos no tempo nos últimos 7 dias, então você deve configurar
Essa política de exclusão também inclui os backups do log de arquivamento.
Você também pode configurar a política de exclusão do log de arquivo:
Essa política de exclusão está relacionada aos destinos de arquivamento oog, não aos backups de log de arquivamento. Normalmente, o arquivamento é feito no "recovery_file_dest".
Então, finalmente, você tem os seguintes scripts:
Um script de configuração que você precisa executar uma vez:
um script para o backup diário:
e o script a seguir para o backup frequente dos logs do arquivo morto . Talvez você queira usar menos canais para os logs de arquivo.
Se você não deseja a recuperação após cada backup, de outra forma é a seguinte estratégia usando backups incrementais
Uma vez por semana, execute o seguinte script para obter um backup de nível 0
Em dias alternados, faça um backup de nível 1
ou você pode fazer um
Novamente, você deve especificar uma janela de recuperação por 7 dias e fazer backups de log de arquivo com frequência.
Você evita a recuperação da cópia do banco de dados após cada backup, mas agora você precisa de mais espaço para seu backup porque agora você sempre tem dois backups completos em seu espaço de backup. Além disso, o número de backups de nível 1 é superior a 6.
Suponha que sua política de retenção seja de 7 dias e você faça seu backup de nível 0 sempre no mesmo dia e no mesmo horário (é assim que normalmente se faz), por exemplo, você inicia seu backup sempre no domingo às 12:00. Agora temos domingo, dia 29 , 12:00 . Já temos dois backups de nível 0 em disco, um iniciado no dia 22 às 12:00 e um iniciado no dia 15 às 12:00 . Se você deseja restaurar o banco de dados agora para o momento 22 , 12:00 , isso deve ser possível, pois sua política de retenção é de 7 dias. Mas para esta restauração você precisa do backup do dia 15 dia pois o backup não foi finalizado (ou mesmo não iniciado) no dia 22 às 12:00. Então, se você emitir um comando 'DELETE OBSOLETE' no dia 29, 12:00, isso não excluirá o backup de nível 0 iniciado em 15 th , 12:00. E se você iniciar um backup de nível 0 agora, terá três backups de nível 0 em disco. Se você quiser evitar isso para economizar espaço, pode pensar em usar uma janela de recuperação de 6 dias em vez de 7 dias. Então você pode emitir uma
DELETE OBSOLETE
declaração no dia 29 , 12:00, antes de iniciar o backup e o backup feito no dia 15 será removido .Então, finalmente, você terá esses scripts:
Um script de configuração que você precisa executar uma vez:
Um script para o backup semanal de nível 0
um script diário (exceto para o dia em que o nível 0 é executado) para os backups de nível 1:
e script para os backups de log de arquivo