RespaldoyRecuperacionRMAN

Transcripción

RespaldoyRecuperacionRMAN
El respaldo más correcto y más sencillo usando RMAN para hacer Backup y recovery
En Oracle Database 11g
Autor: Julio Cesar Gonzalez Cervantes
email: [email protected]
Escribo este artículo porque al buscar sobre respaldos de Oracle o son extensas
explicaciones de cómo funciona RMAN, solo hablare de lo mínimo necesario para tener
un respaldo
Respaldo básico y funcional con RMAN:








Los scripts están pensados para implementarse en Unix/linux
Respaldo completo de la base de datos completa respaldando todos los datafiles
Respaldo del controlfile
Respaldo completo de todos los archivelogs, permitiendo la posibilidad de mover
la BD a un punto en el tiempo hacia atrás (definido por el tiempo de retención)
Todos los archivos de respaldos ya se encuentran compresos al nivel más
eficiente
El script configura un tiempo de retención de 7 días, modifica esto dependiendo
del tamaño de la BD
La ubicación donde guarda los archivos de respaldo no sigue las
recomendaciones OFA, los guarda en /Backup/diario por conveniencia de la SAN
Dominando los pasos de recuperación se puede recuperar, mover o clonar la base
de datos en 15-60 min dependiendo del tamaño de la BD
El siguiente script lo guardas dentro de un archivo llamado rmandisco.rman
configure retention policy to recovery window of 7 days;
configure backup optimization on;
configure controlfile autobackup on;
configure default device type to disk;
configure device type disk parallelism 1 backup type to compressed backupset;
configure datafile backup copies for device type disk to 1;
configure maxsetsize to unlimited;
configure snapshot controlfile name to '/backup/snapshot_controlfile/controlfile';
show all;
host 'mkdir /backup/diario/$(date +%Y-%m-%d)';
run {
allocate channel ch1 type Disk maxpiecesize = 2600M;
backup full database noexclude
include current controlfile
format '/backup/diario/%Y-%M-%D/datafile_%s_%p.bak'
tag 'datafile diario';
}
run {
allocate channel ch1 type Disk maxpiecesize = 2600M;
backup archivelog all
format '/backup/diario/%Y-%M-%D/archivelog_%s_%p.bak'
tag 'archivelog diario';
}
run {
allocate channel ch1 type Disk maxpiecesize = 1900M;
backup format '/backup/diario/%Y-%M-%D/controlfile_%s.bak' current controlfile;
}
crosscheck backup;
list backup of database;
El respaldo más correcto y más sencillo usando RMAN para hacer Backup y recovery
En Oracle Database 11g
Autor: Julio Cesar Gonzalez Cervantes
email: [email protected]
report unrecoverable;
report schema;
report need backup;
report obsolete;
#delete noprompt expired backup of database;
#delete noprompt expired backup of controlfile;
#delete noprompt expired backup of archivelog all;
#delete noprompt obsolete recovery window of 7 days;
quit
EOF
Si quieres que al final de la ejecución del script borre los Backup y archivelogs que
excedan el periodo de recuperación, des comenta las últimas líneas (elimina el #)
Una vez teniendo este script hay que generar un archivo SHELL que mande llamar el
RMAN
El siguiente script se encuentra dentro de un archivo llamado rmandisco.sh :
$ORACLE_HOME/bin/rman target / @/export/home/oracle/backupscripts/rmandisco.rman
Luego cuando tengas ambos archivos rmandisco.rman y rmandisco.sh, dale permisos de
ejecución al archivo rmandisco.sh con “ chmod 776 rmandisco.sh “
Listo, ya solo manda llamar el comando ./rmandisco.sh y se creara una carpeta dentro de
/Backup/diario con la fecha y dentro se guardara todo lo necesario para recuperar la base
de datos de cero
Nota: estos scripts no explotan todo lo que es posible de hacer con RMAN como los
respaldos incrementales, respaldos auto programados, respaldo directo a cinta, etc. Pero
es lo mínimamente deseado y de la forma más eficiente
Para recuperar completamente la base de datos utilizando estos respaldos:


En el ejemplo estoy moviendo los archivos de respaldos a un nuevo servidor que
ya tiene Oracle Database instalado, esta versión de Oracle es la misma versión
que el origen y tiene la misma versión de Sistema Operativo.
En el ejemplo estoy dejando la BD con exactamente el mismo nombre y
exactamente las mismas rutas de los datafiles (para hacer el ejercicio lo mas
básico y sencillo posible) luego subiré la manera para migrarla con otro nombre de
instancia y si solo le quieres cambiar el nombre busca en otro de los tutoriales de
la pagina
El respaldo más correcto y más sencillo usando RMAN para hacer Backup y recovery
En Oracle Database 11g
Autor: Julio Cesar Gonzalez Cervantes
email: [email protected]



En el ejemplo estoy realizando todos los movimientos de archivos con el usuario
de sistema operativo “oracle” recomiendo no moverlo con root para evitar
problemas
Para ejemplificar el servidor origen tiene la IP 192.168.1.2 y el servidor destino
tiene 192.168.1.3
Obviamente todas las rutas de Linux asi como las fechas que pongo son
únicamente para ejemplificar, probablemente las rutas de los backups asi como
del HOME de Oracle deben de ser diferente en tu sistema, cambia lo que sea
necesario
Mueve los archivos del servidor origen al servidor destino, para esto puedes usar el
comando scp (secure copy) que sirve para enviar archivos entre servidores Linux a través
del puerto SSH
[email protected]> scp –r /backup/diario/31-12-2013
[email protected]:/backup/diario/
Después de esto confirmas con la tecla Y, y espera que la copia sea completada
Luego copia el archivo de parámetros del servidor origen al servidor destino, también con
sco
[email protected]> scp /app/Oracle/product/11.2.0/home1/dbs/initBD1.ora
[email protected]: /app/Oracle/product/11.2.0/home1/dbs/
Cierra la sesión de terminal del servidor origen para evitar accidentes
En el servidor destino exporta la variable ORACLE_SID al nombre de la BD que vas a
respaldar
[email protected]> export ORACLE_SID=BD1
Luego entra al sqlplus e inicia la base de datos en estado “nomount”
SQL> startup nomount;
Luego recupera el controlfile del Backup
run
{allocate channel c1 device type disk;
restore controlfile from '/backup/diario/2013-12-31/controlfile_2346.bak';
}
despues de escribir esto te despliega algo como
El respaldo más correcto y más sencillo usando RMAN para hacer Backup y recovery
En Oracle Database 11g
Autor: Julio Cesar Gonzalez Cervantes
email: [email protected]
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=753 device type=DISK
Starting restore at 23-JUN-13
channel c1: restoring control file
channel c1: restore complete, elapsed time: 00:00:03
output file name=/u01/oradata/BD1/control01.ctl
output file name=/u02/oradata/BD1/control02.ctl
output file name=/u03/oradata/BD1/control03.ctl
Finished restore at 23-JUN-13
released channel: c1
Luego que te muestre eso, montas la base de datos escribiendo
RMAN> alter database mount;
Te muestra:
database mounted
Hasta aquí vamos bien
Luego tienes que decirle al RMAN donde se encuentran los respaldos que quieres
recuperar, para esto agregas la carpeta de los respaldos al catalogo interno, para esto es
con el comando
RMAN> catalog start with '/backup/diario/2013-12-31/';
Te muestra algo como:
searching for all files that match the pattern /backup/diario/2013-12-31/
List of Files Unknown to the Database
=====================================
File Name: /backup/diario/2013-12-31/archivelog_2343_1.bak
File Name: /backup/diario/2013-12-31/datafile_2337_1.bak
File Name: /backup/diario/2013-12-31/datafile_2338_1.bak
File Name: /backup/diario/2013-12-31/datafile_2341_1.bak
File Name: /backup/diario/2013-12-31/datafile_2339_1.bak
File Name: /backup/diario/2013-12-31/datafile_2340_1.bak
File Name: /backup/diario/2013-12-31/controlfile_2346.bak
File Name: /backup/diario/2013-12-31/archivelog_2344_1.bak
Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
cataloging done
El respaldo más correcto y más sencillo usando RMAN para hacer Backup y recovery
En Oracle Database 11g
Autor: Julio Cesar Gonzalez Cervantes
email: [email protected]
List of Cataloged Files
=======================
File Name: /backup/diario/2013-12-31/archivelog_2343_1.bak
File Name: /backup/diario/2013-12-31/datafile_2337_1.bak
File Name: /backup/diario/2013-12-31/datafile_2338_1.bak
File Name: /backup/diario/2013-12-31/datafile_2341_1.bak
File Name: /backup/diario/2013-12-31/datafile_2339_1.bak
File Name: /backup/diario/2013-12-31/datafile_2340_1.bak
File Name: /backup/diario/2013-12-31/controlfile_2346.bak
File Name: /backup/diario/2013-12-31/archivelog_2344_1.bak
Hasta aqui vamos excelente, ya solo el paso final, (va todo asi como esta escrito el script
se ejecuta solo al recibir } )
RMAN> run
{
allocate channel c1 device type disk;
RESTORE DATABASE;
SWITCH DATAFILE ALL;
RECOVER DATABASE;
}
Este punto va a tardar un rato, esta recreando todos los datafiles
Al final debe de salir un mensaje de error como este:
unable to find archived log
archived log thread=1 sequence=15915
released channel: c1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 06/23/2013 12:27:01
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 15915
and starting SCN of 13028136591
Este mensaje es “normal”
Lo que sigue por hacer es, sal de RMAN y entra al SQLPLUS y escribe:
SQL> recover database using backup controlfile until cancel;
Luego te va a salir una advertencia con ORA-00289 y ORA-00280, cuando esto salga
tienes que escribir textualmente
CANCEL
El respaldo más correcto y más sencillo usando RMAN para hacer Backup y recovery
En Oracle Database 11g
Autor: Julio Cesar Gonzalez Cervantes
email: [email protected]
Luego te indicara : Media recovery cancelled.
Por ultimo paso escribe
SQL> alter database open resetlogs;
Este paso también tomara un tiempo, ten paciencia
Cuando salga Database altered. Ya la Base de datos está funcionando y arriba, de aquí
solo procede configurar los tnsnames y reiniciar el listener y ya.
Si te sale el error al darle recovery o restore:
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06026: some targets not found - RMAN-06024: no backup or copy
of the control file found
Significa que la carpeta de archivelogs NO esta vacía, entra al archivo de parámetros y
modifica la ruta de archive_log_dest y pon otra ruta diferente o borra los archivelogs
anteriores.

Documentos relacionados

Guía rápida para RMAN - Backup de base de datos

Guía rápida para RMAN - Backup de base de datos 7.1 Backup completo de la BBDD (Whole Database Backup) RMAN> backup as copy database spfile plus archivelog; 7.2 Full Backups RMAN> backup database spfile plus archivelog; 7.3. Incremental Backups

Más detalles