Este script es muy útil cuando se requiere realizar una copia de la base de datos a otro servidor.
La manera de utilizar este script es escribiendo la fecha y hora en que se quiere restaurar la base de datos con el formato 'YYYYMMDD HH:MM:SS'
Por ejemplo si queremos restaurar un respaldo al día 1 de mayo a las 9:25:07 se ejecutaría de la siguiente manera:
rman_scp '20120501 09:25:07'
El script pasaría los archivos necesario para realizar el restore en el servidor a donde se realiza la copia. Los único que tendrían que cambiar del script son las rutas. Es posible modificarlo para pasarle como parámetro las rutas y el servidor destino.
export NLS_DATE_FORMAT='dd-MON-YYYY hh24:mi:ss';
# Ruta a donde deja el archivo que se va a utilizar por el script
INFILE="/sbclocal/app/oracle/rman_scp_out.txt"
OUTFILE=writefile.out
THIS_SCRIPT=$(basename $0)
function lee_salida
{
# Zero out the $OUTFILE
>$OUTFILE
# Associate standard output with file descriptor 4
# and redirect standard output to $OUTFILE
#exec 4<&1
#exec 1> $OUTFILE
while read LINE
do
echo "$LINE" | grep /app | awk '{print $1}' \
| while read UNO
do
if [ $UNO = Piece ]
then
BACKUPSET=$(echo "$LINE" | awk '{print $3}')
#Ruta del servidor a donde se van a copar los archivos
echo "SCP $BACKUPSET server1:/db/dump/instancia/dumprman"
scp $BACKUPSET server1:/db/dump/instancia/dumprman/deprod
else
ARCHIVE=$(echo "$LINE" | awk '{print $7}')
echo "SCP $ARCHIVE server1:/db/instancia/LUMINAD3/dumprman"
scp $ARCHIVE server1r:/db/instancia/dumprman/deprod
fi
done
done < $INFILE
# Restore standard output and close file
# descriptor 4
#exec 1<&4
#exec 4>&-
}
######################################
########### START OF MAIN ############
######################################
echo "Inicia copia a servidor X-->/db/dump/instancia/dumprman/deprod"
> /sbclocal/app/oracle/rman_scp_out.txt
rman target / < /sbclocal/app/oracle/rman_scp_out.txt
run {
RESTORE DATABASE UNTIL TIME "to_date('$1','YYYYMMDD HH24:MI:SS')" preview;
}
exit;
EOF
rman target / /sbclocal/app/oracle/ubsdriver/oracle/rman_scp_out.txt
LIST BACKUP OF CONTROLFILE COMPLETED AFTER 'SYSDATE-1';
exit;
EOF
lee_salida