Caso 1. Restauración de la base de datos
producción en el mismo servidor.
Esta
restauración asume que la base de datos fonpetp será recuperada en el mismo servidor
usando un juego de copias completo con el mismo nombre de base de datos. A
continuación se enumeran los pasos:
1.
Definir el punto de restauración (PITR) que determinará las piezas de backup
que se necesitan. En caso que sea necesario extraer las piezas de backup desde
cinta deberá realizarse la respectiva actividad desde el gestor de medios.
2.
Una vez definido el punto de restauración e identificadas la piezas de backup
se procede a preparar la base de datos (puede que sea necesario bajar la
instancia).
[oracle@bdprod
~]$ cd
/u02/backups/rman/fonpetp/restaurar
[oracle@bdprod restaurar]$ . oraenv
ORACLE_SID = [fonpetp] ? fonpetp
The Oracle base has been set to /u01/app/oracle
[oracle@bdprod restaurar]$ sqlplus dba_fonpet as sysdba
SYSfonpetp> shutdown abort;
ORACLE instance shut down.
SYS@fonpetp>
exit
3.
Para evitar llenado de disco con la restauración de una segunda base de datos
se procede con la eliminación de archivos existentes
[oracle@bdprod
restaurar]$ . oraenv
ORACLE_SID
= [fonpetp] ? +ASM
The Oracle base remains unchanged with
value /u01/app/oracle
[oracle@bdprod restaurar]$ asmcmd
ASMCMD> rm +DG_DATA/fonpetp/datafile/*
You may delete multiple files and/or
directories.
Are
you sure? (y/n) y
ASMCMD> rm +DG_DATA/fonpetp/controlfile/*
You may delete multiple files and/or
directories.
Are
you sure? (y/n) y
ASMCMD> ls -l DG_DATA/FONPETP/*/*
TEMP.286.816122593
group_1.277.816122561
group_2.275.816122561
group_3.271.816122563
group_4.314.818624373
group_5.315.818624381
group_6.316.818624381
group_7.317.818624381
redo01a.rdo
redo02a.rdo
redo03a.rdo
redolog1.stb
redolog3.stb
redolog4.stb
spfile.284.816123925
spfilefonpetp.ora
temp01.dbf
ASMCMD>
exit
4.
Se prepara la base de datos para la restauración. Se desactiva la traza de
auditoria (audit trail) para evitar que más adelante la base de datos genere un
error de escritura en la auditoria al abrirse en modo solo lectura.
[oracle@bdprod
restaurar]$ export
NLS_DATE_FORMAT="DD/MM/YYYY HH24:MI:SS"
[oracle@bdprod
restaurar]$ . oraenv
ORACLE_SID
= [+ASM] ? fonpetp
The Oracle base remains unchanged with
value /u01/app/oracle
[oracle@bdprod restaurar]$ sqlplus / as sysdba
Connected to an idle instance.
SYS@fonpetp> alter system set standby_file_management=manual;
System altered.
SYS@fonpetp> alter system set audit_trail=none scope=spfile;
System altered.
SYS@fonpetp> startup force nomount;
ORACLE instance started.
Total System Global Area 1.0422E+10
bytes
Fixed Size 2237448 bytes
Variable Size 5670702072 bytes
Database Buffers 4731174912 bytes
Redo Buffers 18120704 bytes
SYS@fonpetp> exit;
5.
Se realiza la restauración del archivo de control. Este archivo debe
corresponder a una fecha levemente posterior al punto de restauración
seleccionado. Se ajusta el parámetro standby_file_management para permitir que
sean conservados los nombres de archivo en la restauración. Nótese la variable
de ambiente NLS_DATE_FORMAT que posteriormente facilitará especificar la fecha
y hora del punto de restauración.
[oracle@bdprod ~]$ rman target /
connected to target database: FONPETP
(not mounted)
RMAN> restore controlfile from '/u03/backups/rman/fonpetp/controlfile_FONPETP_bfp0kn6m_1_1_20140214.bak';
Starting restore at 16/02/2014 08:21:18
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=393 device
type=DISK
channel ORA_DISK_1: copied control file
copy
output file
name=+DG_DATA/fonpetp/controlfile/control01.ctl
output file
name=+DG_FRA/fonpetp/controlfile/control02.ctl
Finished restore at 16/02/2014 08:21:19
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
6.
Hasta este punto la base de datos se encuentra montada, es requerido quitar
piezas inválidas del inventario de backups que se encuentra en el archivo de
control, este procedimiento es conocido como crosscheck.
RMAN> crosscheck backup;
Starting implicit crosscheck backup at
16/02/2014 08:22:08
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=587 device
type=DISK
Crosschecked 30 objects
Finished implicit crosscheck backup at
16/02/2014 08:22:09
Starting implicit crosscheck copy at
16/02/2014 08:22:09
using channel ORA_DISK_1
Crosschecked 15 objects
Finished implicit crosscheck copy at
16/02/2014 08:22:10
searching for all files in the recovery
area
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name:
+dg_fra/FONPETP/AUTOBACKUP/2014_02_14/s_839463387.2125.839467823
File Name: +dg_fra/FONPETP/AUTOBACKUP/2014_02_16/s_839530221.2406.839639325
File Name:
+dg_fra/FONPETP/ARCHIVELOG/2014_02_15/thread_1_seq_1505.2398.839628347
File Name:
+dg_fra/FONPETP/ARCHIVELOG/2014_02_15/thread_1_seq_1508.2401.839633481
...
using channel ORA_DISK_1
crosschecked backup piece: found to be
'EXPIRED'
backup piece
handle=+DG_FRA/fonpetp/autobackup/2014_02_14/s_839533169.1263.839533171
RECID=350 STAMP=839533171
crosschecked backup piece: found to be
'EXPIRED'
backup piece
handle=/u03/backups/rman/fonpetp/full_FONPETP_bdp0kn34_1_1_20140214.bak
RECID=351 STAMP=839539812
crosschecked backup piece: found to be
'EXPIRED'
...
Crosschecked 30 objects
RMAN> crosscheck archivelog all;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=587 device
type=DISK
validation succeeded for archived log
archived log file
name=+DG_FRA/fonpetp/archivelog/2014_02_14/thread_1_seq_240.2144.839470615
RECID=1 STAMP=839665330
validation succeeded for archived log
archived log file
name=+DG_FRA/fonpetp/archivelog/2014_02_14/thread_1_seq_241.2302.839484053
RECID=2 STAMP=839665330
...
archived log file
name=+DG_FRA/fonpetp/archivelog/2014_02_16/thread_1_seq_1516.2128.839664035
RECID=14 STAMP=839665330
Crosschecked
121 objects
7.
Normalmente las piezas de backup de los archivo de datos ya se encuentran
catalogadas en el archivo de control restaurado, en caso que no se encuentren
–ya sea porque se restauró un archivo de control muy posterior al punto
objetivo de restauración o porque las piezas están en otra ruta distinta a
donde fueron respaldadas-, es necesario catalogarlas.
RMAN> catalog start with '/u03/backups/rman/fonpetp/restaurar';
searching for all files that match the
pattern /u03/backups/rman/fonpetp/
List of Files Unknown to the Database
=====================================
File Name:
/u03/backups/rman/fonpetp/archivelog_FONPETP_brp0fseo_1_1_20140213.bak
File Name:
/u03/backups/rman/fonpetp/incr_cdp0m51s_1_1.bak
File Name: /u03/backups/rman/fonpetp/bd_5corellu_1_1.bkp
...
File Name:
/u03/backups/rman/fonpetp/archivelog_FONPETP_c0p0igns_1_1_20140214.bak
Do you really want to catalog the above
files (enter YES or NO)? YES
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name:
/u03/backups/rman/fonpetc/archivelog_FONPETP_brp0fseo_1_1_20140213.bak
File Name:
/u03/backups/rman/fonpetc/incr_cdp0m51s_1_1.bak
File Name:
/u03/backups/rman/fonpetc/bd_5corellu_1_1.bkp
...
File
Name: /u03/backups/rman/fonpetc/al_5horenab_1_1.bkp
8.
Una vez se encuentra restaurado el archivo de control y catalogadas las piezas
requeridas se identifica el punto exacto de restauración. Para este ejemplo se
busca recuperar la base de datos lo más cerca al punto de falla ocurrido el 14
de febrero de 2014 a las 09:40 p.m., que en este caso sería 14/02/2014 21:32:06
o el SCN 47297534. El archivo de control
debe ser también el indicado en el punto objetivo de restauración.
RMAN> list backup of controlfile;
List of Backup Sets
===================
BS Key
Type LV Size Device Type
Elapsed Time Completion Time
------- ---- -- ---------- -----------
------------ -------------------
347
Full 20.52M DISK
00:00:02 14/02/2014 19:39:31
BP Key: 350 Status: EXPIRED Compressed: NO Tag: TAG20140214T193929
Piece Name:
+DG_FRA/fonpetp/autobackup/2014_02_14/s_839533169.1263.839533171
Control File Included: Ckp SCN: 47272578 Ckp time: 14/02/2014 19:39:29
BS Key
Type LV Size Device Type
Elapsed Time Completion Time
------- ---- -- ---------- -----------
------------ -------------------
350
Full 20.48M DISK
00:00:02 14/02/2014 21:32:08
BP Key: 353 Status: EXPIRED Compressed: NO Tag: TAG20140214T213205
Piece Name:
/u03/backups/rman/fonpetp/controlfile_FONPETP_bfp0kn6m_1_1_20140214.bak
Control File Included: Ckp SCN: 47297534 Ckp time: 14/02/2014
21:32:06
Si
se cuenta un controlfile de las 22:00 y sus respectivos archive logs puede
restaurarse la base de datos por completo hasta el momento de la falla. En este
caso que se ilustra, la fecha del archivo de control es de las 21:32
9.
Se procede con la restauración de los archivos de datos. RMAN determina que el
conjunto de copias de seguridad requerido es el más reciente hacia atrás
respecto a la fecha del archivo de control. Al finalizar la restauración de los
archivos de datos debe validarse que estos hayan quedado en la ubicación correcta
y con tamaño mayor a cero bytes.
RMAN> restore database;
Starting restore at 07-JAN-14
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile
backup set restore
channel ORA_DISK_1: specifying
datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile
00003 to +DG_DATA/fonpeta/datafile/undotbs101.dbf
channel ORA_DISK_1: restoring datafile
00005 to +DG_DATA/fonpeta/datafile/indic_fonpet_movim_01.dbf
channel ORA_DISK_1: restoring datafile
00008 to +DG_DATA/fonpeta/datafile/indic_fonpet_movim_reorg0.dbf
channel ORA_DISK_1: restoring datafile
00010 to +DG_DATA/fonpeta/datafile/ts_fonpet_movim_01.dbf
channel ORA_DISK_1: restoring datafile
00011 to +DG_DATA/fonpeta/datafile/indic_fonpet_movim_02.dbf
channel ORA_DISK_1: restoring datafile
00012 to +DG_DATA/fonpeta/datafile/ts_fonpet_movim_02.dbf
channel ORA_DISK_1: restoring datafile
00013 to +DG_DATA/fonpeta/datafile/ts_fonpet_rep.dbf
channel ORA_DISK_1: reading from backup
piece /u02/backup/rman/fonpetp/bd_26eotff00_1_1.bak
channel ORA_DISK_1: piece
handle=/u02/backup/rman/fonpetp/bd_26eotff00_1_1.bak tag=TAG20140107T115231
channel ORA_DISK_1: restored backup
piece 1
channel ORA_DISK_1: restore complete,
elapsed time: 00:10:22
channel ORA_DISK_1: starting datafile
backup set restore
channel ORA_DISK_1: specifying
datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile
00001 to +DG_DATA/fonpeta/datafile/system01.dbf
channel ORA_DISK_1: restoring datafile
00002 to +DG_DATA/fonpeta/datafile/sysaux01.dbf
channel ORA_DISK_1: restoring datafile
00004 to +DG_DATA/fonpeta/datafile/users01.dbf
channel ORA_DISK_1: restoring datafile
00006 to +DG_DATA/fonpeta/datafile/indic_fonpet_param.dbf
channel ORA_DISK_1: restoring datafile
00007 to +DG_DATA/fonpeta/datafile/indic_fonpet_movim.dbf
channel ORA_DISK_1: restoring datafile
00009 to +DG_DATA/fonpeta/datafile/ts_fonpet_param.dbf
channel ORA_DISK_1: restoring datafile
00014 to +DG_DATA/fonpeta/datafile/ts_fonpet_movim.dbf
channel ORA_DISK_1: reading from backup
piece /u02/backup/rman/fonpetp/bd_16dotff00_1_1.bak
channel ORA_DISK_1: piece
handle=/u02/backup/rman/fonpetp/bd_16dotff00_1_1.bak tag=TAG20140107T115231
channel ORA_DISK_1: restored backup
piece 1
channel ORA_DISK_1: restore complete,
elapsed time: 00:16:55
Finished restore at 07-MAR-14
RMAN> sql 'select name, bytes, status from v$datafile';
NAME
BYTES STATUS
------------------------------------------------------------
---------- -------
+DG_DATA/fonpeta/datafile/system01.dbf 1073741824 SYSTEM
+DG_DATA/fonpeta/datafile/sysaux01.dbf 1073741824 ONLINE
+DG_DATA/fonpeta/datafile/undotbs101.dbf 3191865344 ONLINE
+DG_DATA/fonpeta/datafile/users01.dbf 5242880 ONLINE
+DG_DATA/fonpeta/datafile/indic_fonpet_movim_01.dbf 3355443200 ONLINE
+DG_DATA/fonpeta/datafile/indic_fonpet_param.dbf 104857600 ONLINE
+DG_DATA/fonpeta/datafile/indic_fonpet_movim.dbf 2097152000 ONLINE
+DG_DATA/fonpeta/datafile/indic_fonpet_movim_reorg0.dbf 2621440000 ONLINE
+DG_DATA/fonpeta/datafile/ts_fonpet_param.dbf 104857600 ONLINE
+DG_DATA/fonpeta/datafile/ts_fonpet_movim_01.dbf 8388608000 ONLINE
+DG_DATA/fonpeta/datafile/indic_fonpet_movim_02.dbf 3670016000 ONLINE
+DG_DATA/fonpeta/datafile/ts_fonpet_movim_02.dbf 3145728000 ONLINE
+DG_DATA/fonpeta/datafile/ts_fonpet_rep.dbf 5242880000 ONLINE
+DG_DATA/fonpeta/datafile/ts_fonpet_movim.dbf 3.4318E+10 ONLINE
+DG_DATA/fonpeta/datafile/ts_fonpet_movim_2.dbf 5242880000 ONLINE
10.
Se continúa con el recovery hasta la fecha indicada.
RMAN> run
> {
> SET UNTIL TIME '14/02/2014 21:32:06';
> recover database;
> }
Starting recover at 07/03/2014 08:27:40
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=394 device
type=DISK
channel ORA_DISK_1: starting incremental
datafile backup set restore
channel ORA_DISK_1: specifying
datafile(s) to restore from backup set
destination for restore of datafile
00001: +DG_DATA/fonpetc/datafile/system01.dbf
destination for restore of datafile
00002: +DG_DATA/fonpetc/datafile/sysaux01.dbf
destination for restore of datafile
00004: +DG_DATA/fonpetc/datafile/users01.dbf
destination for restore of datafile
00006: +DG_DATA/fonpetc/datafile/indic_fonpet_param.dbf
destination for restore of datafile
00007: +DG_DATA/fonpetc/datafile/indic_fonpet_movim.dbf
destination for restore of datafile
00009: +DG_DATA/fonpetc/datafile/ts_fonpet_param.dbf
destination for restore of datafile
00014: +DG_DATA/fonpetc/datafile/ts_fonpet_movim.dbf
channel ORA_DISK_1: reading from backup
piece /u03/backups/rman/fonpetc/incr_cbp0m3mt_1_1.bak
...
archived log for thread 1 with sequence
9442 is already on disk as file
+DG_FRA/fonpeta/archivelog/2014_02_14/thread_1_seq_9442.1164.836223561
archived log for thread 1 with sequence
1 is already on disk as file +DG_FRA/fonpeta/archivelog/2014_02_14/thread_1_seq_1.1199.836223755
archived log for thread 1 with sequence
2 is already on disk as file
+DG_FRA/fonpeta/archivelog/2014_02_14/thread_1_seq_2.693.836223755
archived log for thread 1 with sequence
3 is already on disk as file +DG_DATA/fonpeta/onlinelog/redo03a.rdo
archived log file
name=+DG_FRA/fonpeta/archivelog/2014_02_14/thread_1_seq_1.1199.836223755
thread=1 sequence=1
archived log file
name=+DG_FRA/fonpeta/archivelog/2014_02_14/thread_1_seq_2.693.836223755
thread=1 sequence=2
archived log file
name=+DG_DATA/fonpeta/onlinelog/redo03a.rdo thread=1 sequence=3
media recovery complete, elapsed time:
00:00:03
Finished recover at 07/03/2014 09:11:12
RMAN>
exit
Alternativamente
puede usarse un solo bloque de comandos para restaurar y realizar recover ya
sea especificando la fecha o el SCN del punto objetivo de recuperación
RMAN> run
{
restore database until scn 47297534;
alter database mount;
recover database until scn 47297534;
alter database open resetlogs;
}
RMAN> exit
11.
Finalmente la base de datos puede abrirse. Es recomendable realizar primero la
apertura en modo solo lectura, para luego abrirla en modo escritura
definitivamente. Nótese que igualmente se restablecen los parámetros
standby_file_management y audit_trail
[oracle@bdprod logs]$ sqlplus dba_fonpet as sysdba
Password:
Connected.
SYS@fonpetp> alter database open read only;
Database altered.
SYS@fonpetp> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@fonpetp> startup mount;
ORACLE instance started.
Total System Global Area 1.0422E+10
bytes
Fixed Size 2237448 bytes
Variable Size 5670702072 bytes
Database Buffers 4731174912 bytes
Redo Buffers 18120704 bytes
Database mounted.
SYS@fonpetp> alter database open resetlogs;
Database opened.
SYS@fonpetp> alter system switch logfile;
System altered.
SYS@fonpetp> alter system set standby_file_management=auto;
System altered.
SYS@fonpetp> alter system set audit_trail=db scope=spfile;
System altered.
SYS@fonpetp> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@fonpetp> startup;
ORACLE instance started.
Total System Global Area 1.0422E+10
bytes
Fixed Size 2237448 bytes
Variable Size 5670702072 bytes
Database Buffers 4731174912 bytes
Redo Buffers 18120704 bytes
Database mounted.
Database opened.