Como fazer backup em RMAN com Paralelismo em Oracle Standard

Não é bonito, não é simples, mas funciona.

Crie um script que vai chamar vários outros scripts, com a opção “&” ao final, que significa que eles serão executados em background. Cada um destes vários outros scripts fará o BACKUP de um único DATAFILE.

No script principal, entre a execução dos scripts (ou seja, entre cada backup de DATAFILE) coloque um “sleep”. Quanto menor o tempo do “sleep”, maior será o paralelismo. Para 100 DATAFILEs, um sleep de 0 significa utilizar 100 processos paralelos. Adeque de acordo com a capacidade de seu ambiente. O mais comum é que você vá testando com tempos maiores ou menores, até encontrar o ponto ideal – como normalmente acontece com o próprio uso do paralelismo real.

No final deste script principal de backup, eu executo um DELETE NOPROMPT OBSOLETE (apaga os backups que estão além da RETENTION configurada) e logo depois um REPORT NEED BACKUP. Este último é fundamental para saber se há algum DATAFILE novo que eu ainda não faço BACKUP. Portanto, é fundamental que a saída do script seja monitorada (bem, você já faz isso, certo?).

Além do “REPORT NEED BACKUP”, se adicionar o comando “BACKUP NOT BACKED UP SINCE TIME ‘SYSDATE-1’ DATABASE” serão feitos backups de todos os DATAFILEs que não tiveram backup nas últimas 24 horas, para não arriscar ficar sem BACKUP de algum DATAFILE.

Este abaixo é o script principal.

[oracle@localhost ~]$ cat /home/oracle/RADM-Oracle-Diario.sh
#!/bin/bash

/home/oracle/RADM-Oracle-Diario-ORCL-Datafile001.sh &
sleep 60
/home/oracle/RADM-Oracle-Diario-ORCL-Datafile002.sh &
sleep 60
...
...
...
/home/oracle/RADM-Oracle-Diario-ORCL-Datafile097.sh &
sleep 60
/home/oracle/RADM-Oracle-Diario-ORCL-Datafile098.sh &
sleep 60
/home/oracle/RADM-Oracle-Diario-ORCL-Datafile099.sh &

[oracle@localhost ~]$

E abaixo está um dos N scrpts mencionados no script principal, que executa o backup de um único DATAFILE.

[oracle@localhost ~]$ cat /home/oracle/RADM-Oracle-Diario-ORCL-Datafile001.sh
#!/bin/bash

source /home/oracle/.bash_profile
export ORACLE_SID=ORCL1
$ORACLE_HOME/bin/rman TARGET / EOF
BACKUP DATAFILE 1 FORMAT '/backup/ORCL/Database/Database-%d___DBID-%I___Date-%T___Set-%s___Piece-%p.BKP';
EXIT;
EOF

[oracle@localhost ~]$

6 comments

    1. Sim, também funciona.
      Com o Catálogo não muda nada, mas lembre-se que para o TSM, o grau de paralelismo utilizado vai depender da quantidade de canais liberados pelo administrador do TSM.

  1. Esse é o tipo de informação que salva a janela de backup.
    Estou usando esse recurso a algum tempo em uma base de 3TB na Standard.
    Fica a dica, segue um exemplo que uso para o controle de threads em shell script no linux:

    #!/bin/bash
    IFS=”

    for line in $(cat datafiles.txt); do
    v_datafile=$(echo $line | awk {‘print $1’})
    THREADS=8
    FLAG_PROCESSADO=0
    while [ $FLAG_PROCESSADO = 0 ]
    do
    jobs > /dev/null
    if [ $(jobs | wc -l) -lt $THREADS ]; then
    ./core.sh $v_datafile &
    FLAG_PROCESSADO=1
    else
    sleep 1
    fi
    done
    done

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *