Skip to main content

Command Palette

Search for a command to run...

Backup não é Data Pump: Como Estruturar uma Rotina RMAN de Verdade

Updated
Backup não é Data Pump: Como Estruturar uma Rotina RMAN de Verdade

Recentemente, precisei implementar uma rotina de backup em um ambiente onde o cliente utilizava apenas uma exportação via Data Pump, executada diariamente às 23h. Nem preciso dizer que essa abordagem é totalmente inadequada como estratégia de backup.

O mais impressionante é que, mesmo com a enorme quantidade de conteúdo técnico disponível hoje, ainda encontramos cenários com alto nível de desinformação e baixa maturidade em práticas essenciais dentro de ambientes corporativos.

2 pontos que eu gostaria de salientar :

1- Backup

2-Observabilidade

Esses dois pontos precisam caminhar juntos: não adianta ter uma rotina de backup se você não sabe, de fato, se ela está funcionando corretamente. Faz sentido, não é?

Com isso em mente, agora podemos avançar para a parte prática.

A Tal Rotina de data pump

#!/bin/bash

export ORACLE_PDB_SID=PDB_APP01 
export ORACLE_BASE=/u01/app/oracle 
export ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1 export ORACLE_HOSTNAME=DBSERVER01 
export PATH=\(PATH:\)ORACLE_HOME/bin

#
cd /backup/datapump

/bin/mv /backup/datapump/*APP01*.gz /backup/datapump_old 2>/dev/null

DATA=$(date +%Y-%m-%d)

expdp system/SenhaFicticia123@PDB_APP01 
schemas=APP,APP_AUDIT 
directory=DP_DIR_APP01 
flashback_time=systimestamp 
dumpfile=EXPDP_APP01_${DATA}.dmp 
logfile=EXPDP_APP01_${DATA}.log

/bin/gzip *APP01*
/bin/chmod 644 *.gz *.log

Até aqui, nada além do básico — uma rotina simples e funcional.

Optei por mantê-la como estava, pois, apesar de existirem diversas oportunidades de melhoria, ela cumpria seu papel. E, naquele momento, o foco da atividade não era evoluir essa rotina, mas atuar em pontos mais críticos do ambiente.

Rotina Backup Contrab

#rotina arc - a cada 30m 
*/30 * * * * /backup/scripts_bkp/bkp_arc.sh > /backup/scripts_bkp/log_err_arc 2>&1

#inc - segunda a sabado as 21:15h
15 21 * * 1-6 /backup/scripts_bkp/bkp_inc.sh > /backup/scripts_bkp/log_err_inc 2>&1

#full - Domingo as 21h
0 21 * * 0 /backup/scripts_bkp/bkp_full.sh > /backup/scripts_bkp/log_err_full 2>&1

Com essa estratégia, conseguimos cobrir a base de dados com backups ao longo de uma semana.

Os parâmetros adotados foram definidos com base nas limitações de espaço do ambiente. Considerando a rotina de backup de archivelogs a cada 30 minutos, temos um RPO aproximado de 30 minutos — desde que todos os backups estejam íntegros e disponíveis para recuperação.

Os scripts utilizados estão disponibilizados abaixo, devidamente documentados, incluindo regras de notificação por e-mail tanto para sucesso quanto para falhas. É uma abordagem simples, mas que atende bem ao objetivo proposto.

O ambiente em questão utilizava Oracle Standard Edition e apresentava diversas limitações. Ainda assim, isso não justifica a ausência de uma estratégia de backup confiável e funcional — pelo contrário, torna essa necessidade ainda mais crítica.

Configurações Essenciais RMAN

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK;

Todas as rotinas documentas e com envio de e-mail diretamente nos scripts para facilitar a Observability quando uma rotina falhar ou finalizar com sucesso.

Script Backup Full

https://github.com/francois-fiorino/Advanced-Scripts/blob/344dc099fa1c545ca3af29c45aafe5cb7db6b3f6/oracle/bkp-full

Script Backup Archive

https://github.com/francois-fiorino/Advanced-Scripts/blob/344dc099fa1c545ca3af29c45aafe5cb7db6b3f6/oracle/bkp-archive

Script Backup Incremental

https://github.com/francois-fiorino/Advanced-Scripts/blob/de12df01eb0d081218b175e30bde60552cd9ddb4/oracle/bkp-incr

Conclusão

É isso galera, nem sempre temos disponíveis as melhores condições no cliente, as melhores features ou recursos, mas o básico deve ser atendido, pelo menos é desta forma que eu penso.

Até a próxima ...

21 views