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
Se desejar, baixe o script e salve em um diretório que esteja no PATH e agende o crontab.