Script de backup online do Oracle com RMAN

Para configurar o backup online de um banco Oracle através do uso do RMAN, eu uso o script abaixo:

#!/bin/bash
#
# Script de backup incremental do banco de dados Oracle, conforme indicado em:
#    "Oracle Database 2 Day DBA"
#    "Oracle Database Backup and Recovery User's Guide"
# Acrescentei o backup do init.ora e o backup trace do controlfile.
#
# Por Abrantes Araújo Silva Filho
#
# ANTES DE EXECUTAR A ROTINA DE BACKUP, configure o RMAN com os seguintes
# parâmetros (dependentes da versão do database e se enterprise ou standard):
# (atenção com os PATHs também!):
#
# Oracle 12c (12.1.0.1.0) Standard Edition One:
#   - CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
#   - CONFIGURE BACKUP OPTIMIZATION ON;
#   - CONFIGURE DEFAULT DEVICE TYPE TO DISK;
#   - CONFIGURE CONTROLFILE AUTOBACKUP ON;
#   - CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u09/fast_recovery_area/ORACLE1/controlfile_autobackup/%F';
#   - CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
#   - CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
#   - CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
#   - CONFIGURE MAXSETSIZE TO UNLIMITED;
#   - CONFIGURE ENCRYPTION FOR DATABASE OFF;
#   - CONFIGURE ENCRYPTION ALGORITHM 'AES128';
#   - CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
#   - CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS;
#   - CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DISK;
#   - CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u09/fast_recovery_area/ORACLE1/controlfile_snapshot/snapcf_oracle.f'; 
#
# Depois de tudo pronto, crie um crontab para o usuário oracle:
#    # Endereço de e-mail do log do crontab:
#    MAILTO=abrantesasf@gmail.com
#
#    # Roda o backup incremental diário, 19:00h.
#    00 19 * * * /home/oracle/bin/backup_oracle.sh
#
#
# Não altere este script se não souber o que está fazendo!


# Variáveis de ambiente
#######################
export ORACLE_HOME=/u01/app/oracle/product/12.1.0.1.0/db
export ORACLE_SID=oracle1
export PATH=$ORACLE_HOME/bin:$PATH


# Roda RMAN
###########
rman <<EOF
connect target /
RUN {
 ALLOCATE CHANNEL disco_de_backup DEVICE TYPE DISK;
 RECOVER COPY OF DATABASE WITH TAG backup_incremental_diario UNTIL TIME "SYSDATE-3";
 BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG backup_incremental_diario DATABASE PLUS ARCHIVELOG;
 CROSSCHECK BACKUP;
 DELETE NOPROMPT OBSOLETE;
}
exit
EOF


# Cria backup do init.ora e backup trace do controlfile:
########################################################
# Backup do init.ora antigo:
if [ -a /u09/fast_recovery_area/ORACLE1/outros/initoracle1.ora.bak ] ; then
 rm /u09/fast_recovery_area/ORACLE1/outros/initoracle1.ora.bak
 mv /u09/fast_recovery_area/ORACLE1/outros/initoracle1.ora /u09/fast_recovery_area/ORACLE1/outros/initoracle1.ora.bak
else
 if [ -a /u09/fast_recovery_area/ORACLE1/outros/initoracle1.ora ] ; then
 mv /u09/fast_recovery_area/ORACLE1/outros/initoracle1.ora /u09/fast_recovery_area/ORACLE1/outros/initoracle1.ora.bak
 fi
fi

# Backup do controlfile antigo:
if [ -a /u09/fast_recovery_area/ORACLE1/outros/control_file.txt.bak ] ; then
 rm /u09/fast_recovery_area/ORACLE1/outros/control_file.txt.bak
 mv /u09/fast_recovery_area/ORACLE1/outros/control_file.txt /u09/fast_recovery_area/ORACLE1/outros/control_file.txt.bak
else
 if [ -a /u09/fast_recovery_area/ORACLE1/outros/control_file.txt ] ; then
 mv /u09/fast_recovery_area/ORACLE1/outros/control_file.txt /u09/fast_recovery_area/ORACLE1/outros/control_file.txt.bak
 fi
fi

# Backup do init.ora novo e do controlfile novo:
sqlplus /nolog << EOF
connect / as sysdba
create pfile='/u09/fast_recovery_area/ORACLE1/outros/initoracle1.ora'
from spfile='/u01/app/oracle/product/12.1.0.1.0/db/dbs/spfileoracle1.ora';
alter database backup controlfile to trace as '/u09/fast_recovery_area/ORACLE1/outros/control_file.txt';
exit
EOF

OK, a listagem acima está MUITO CONFUSA pois a apresentação em tela é horrível. Baixe o script neste link então!

Salve o script em um diretório que possa ser encontrado pelo PATH e agende um crontab.

SIGA AS INSTRUÇÕES NO COMEÇO DO ARQUIVO para configurar o RMAN!!!!

4 thoughts on “Script de backup online do Oracle com RMAN”

  1. Pingback: malydomeczek
  2. Pingback: Knights Templar
  3. Pingback: Holiness
  4. Pingback: grind

Leave a Reply