En este ejemplo, vamos a eliminar el archivo de datos de SYSTEM y recuperar la base de datos.

 

En la vida real, si llegara a presentarse la perdida del datafile, la base de datos se caería y si por alguna razón sigue arriba, es posible que cuando se lleve a cabo el checkpoint la base de datos se caiga. Revisemos primero la ruta de nuestros archivos de datos, para poder eliminar el archivo correspondiente a SYSTEM y simular una falla en la base de datos.

 
sys@ORCL> select file_name from dba_data_files; 

FILE_NAME 
---------------------------------------------------------------------------------------------------- 
/u01/app/oracle/oradata/orcl/users01.dbf 
/u01/app/oracle/oradata/orcl/undotbs01.dbf 
/u01/app/oracle/oradata/orcl/sysaux01.dbf 
/u01/app/oracle/oradata/orcl/system01.dbf 
/u01/app/oracle/oradata/orcl/example01.dbf 
/u01/app/oracle/oradata/orcl/dba.dbf 

6 rows selected. 

Una ves localizado, podemos proceder a eliminarlos.

 
sys@ORCL> host mv /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/oradata/orcl/system01.dbf2 

Ahora los pasos para llevar a cabo la recuperación es la siguiente: 1. Si la base de datos se encuentra todavía arriba, intentemos forzar un checkpoint y posteriormente dar de baja la base de datos. Recordemos que es posible que al realizar el checkpoint la base de datos se caiga.

 
sys@ORCL> alter system checkpoint; 

System altered. 

sys@ORCL> shutdown immediate; 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 

2. Montar la base de datos. En este ejemplo, como demostración, quiero mostrar el error que nos arrojaría al tratar de levantar la base de datos. Ya no voy a montarla posteriormente, ya que en este caso se quedaría montada al no poder abrirla. Para montarla, se ejecuta el comando startup mount.

 
sys@ORCL> startup 
ORACLE instance started. 

Total System Global Area  627732480 bytes 
Fixed Size		    1338336 bytes 
Variable Size		  469763104 bytes 
Database Buffers	  150994944 bytes 
Redo Buffers		    5636096 bytes 
Database mounted. 
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file 
ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf' 

3. Es momento de usar RMAN, si perdimos solo un datafile podemos ejecutar restore datafile, pero si perdimos mas de uno, podemos ejecutar restore tablespace. Aunque en mi caso solo fue un datafile, ejecute restore tablespace ya que mi tablespace solo esta formado por un datafile.

 
[oracle@atom ~]$ rman target / 

Recovery Manager: Release 11.2.0.1.0 - Production on Mon May 16 11:15:17 2011 

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved. 

connected to target database: ORCL (DBID=1276134796, not open) 

RMAN> restore tablespace system; 

Starting restore at 16-MAY-11 
using target database control file instead of recovery catalog 
allocated channel: ORA_DISK_1 
channel ORA_DISK_1: SID=63 device type=DISK 

channel ORA_DISK_1: restoring datafile 00001 
input datafile copy RECID=2 STAMP=750940890 file 
name=/u01/app/oracle/flash_recovery_area/ORCL/datafile/o1_mf_system_6wqzwxmn_.dbf 
destination for restore of datafile 00001: /u01/app/oracle/oradata/orcl/system01.dbf 
channel ORA_DISK_1: copied datafile copy of datafile 00001 
output file name=/u01/app/oracle/oradata/orcl/system01.dbf RECID=0 STAMP=0 
Finished restore at 16-MAY-11 

4. Ahora necesitamos recuperar la base de datos. Esto, aplicara respaldos incrementales y los archive redo logs necesarios para recuperar SYSTEM. Si utilizamos restore datafile, entonces debemos ejecutar recover datafile.

 
RMAN> recover tablespace system; 

Starting recover at 16-MAY-11 
using channel ORA_DISK_1 

starting media recovery 

archived log for thread 1 with sequence 34 is already on disk as file 
/u01/app/oracle/arch/ORCL_0001_034_0748962428.arc 
archived log for thread 1 with sequence 35 is already on disk as file 
/u01/app/oracle/arch/ORCL_0001_035_0748962428.arc 
archived log for thread 1 with sequence 36 is already on disk as file 
/u01/app/oracle/arch/ORCL_0001_036_0748962428.arc 
archived log for thread 1 with sequence 37 is already on disk as file 
/u01/app/oracle/arch/ORCL_0001_037_0748962428.arc 
archived log for thread 1 with sequence 38 is already on disk as file 
/u01/app/oracle/arch/ORCL_0001_038_0748962428.arc 
archived log for thread 1 with sequence 39 is already on disk as file 
/u01/app/oracle/arch/ORCL_0001_039_0748962428.arc 
archived log for thread 1 with sequence 40 is already on disk as file 
/u01/app/oracle/arch/ORCL_0001_040_0748962428.arc 
archived log for thread 1 with sequence 41 is already on disk as file 
/u01/app/oracle/arch/ORCL_0001_041_0748962428.arc 
archived log for thread 1 with sequence 42 is already on disk as file 
/u01/app/oracle/arch/ORCL_0001_042_0748962428.arc 
archived log for thread 1 with sequence 43 is already on disk as file 
/u01/app/oracle/arch/ORCL_0001_043_0748962428.arc 
archived log file name=/u01/app/oracle/arch/ORCL_0001_0000000034_0748962428.arc thread=1 sequence=34 
archived log file name=/u01/app/oracle/arch/ORCL_0001_0000000035_0748962428.arc thread=1 sequence=35 
archived log file name=/u01/app/oracle/arch/ORCL_0001_0000000036_0748962428.arc thread=1 sequence=36 
archived log file name=/u01/app/oracle/arch/ORCL_0001_0000000037_0748962428.arc thread=1 sequence=37 
archived log file name=/u01/app/oracle/arch/ORCL_0001_0000000038_0748962428.arc thread=1 sequence=38 
archived log file name=/u01/app/oracle/arch/ORCL_0001_0000000039_0748962428.arc thread=1 sequence=39 
archived log file name=/u01/app/oracle/arch/ORCL_0001_0000000040_0748962428.arc thread=1 sequence=40 
archived log file name=/u01/app/oracle/arch/ORCL_0001_0000000041_0748962428.arc thread=1 sequence=41 
media recovery complete, elapsed time: 00:01:09 
Finished recover at 16-MAY-11 

5. Para concluir, abramos la base de datos, si restauramos también el controlfile, sera necesario abrir la base de datos con resetlogs, pero en este ejemplo no es el caso.

 
RMAN> alter database open; 

database opened 

Si revisamos de nuevo el directorio donde se encuentra SYSTEM, podemos observar que el archivo de restauro nuevamente. RMAN>

 
[oracle@atom ~]$ ls -l /u01/app/oracle/oradata/orcl/system01.db* 
-rw-r----- 1 oracle oinstall 723525632 May 16 11:26 /u01/app/oracle/oradata/orcl/system01.dbf 
-rw-r----- 1 oracle oinstall 723525632 May 16 11:14 /u01/app/oracle/oradata/orcl/system01.dbf2 

Por ultimo, quisiera comentar que también hubiera sido posible recuperarnos restaurando toda la base de datos, pero nos llevaría demasiado tiempo. Restaurando solamente SYSTEM, es mucho mas rápido, y seguramente nuestros usuarios no están dispuestos a esperar tanto tiempo.

TIP: Se puede usar el comando report schema para ver los datafiles de nuestra base de datos cuando solo es posible montarla.

RMAN> report schema;

Report of database schema for database with db_unique_name ORCL

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    690      SYSTEM               ***     /u01/app/oracle/oradata/orcl/system01.dbf
2    620      SYSAUX               ***     /u01/app/oracle/oradata/orcl/sysaux01.dbf
3    275      UNDOTBS1             ***     /u01/app/oracle/oradata/orcl/undotbs01.dbf
4    5        USERS                ***     /u01/app/oracle/oradata/orcl/users01.dbf
5    100      EXAMPLE              ***     /u01/app/oracle/oradata/orcl/example01.dbf
6    580      DBA                  ***     /u01/app/oracle/oradata/orcl/dba.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    96       TEMP                 32767       /u01/app/oracle/oradata/orcl/temp01.dbf
 

 

You are not authorised to post comments.

Comments powered by CComment

DBASupport - Foro

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 5 years ago.
  • 5 years ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
URGE AYUDA
  • Topic started by
  • in General
  • 18 years ago.
  • 18 years ago.
  • 30 replies
HOLA ESPERO ME PUEDAN AYUDAR. TEN GO UNA TABLA CON una estructura similar a la siguiente: id_mov cargo subtotal total...

Duada de Memoria de SQL Server 2005
  • Topic started by Erzengel
  • in General
  • 14 years ago.
  • 13 years ago.
  • 30 replies
Buen Día Recurro nuevamente a su sabiduría. Quiero saber el porque tiene un tope SQL Serever de 2GB en Windows server 2003 de 32 bit y si alguien...

SqlDateTime overflow
  • Topic started by
  • in General
  • 17 years ago.
  • 17 years ago.
  • 11 replies
Alguno de ustedes ha tenido este problema: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.' Les...

problemas para iniciar el agente sql
  • Topic started by acgch
  • in General
  • 17 years ago.
  • 17 years ago.
  • 11 replies
Recientemente para asegurar el sql server 2005, cree una cuenta sql con derechos de sysadmin y borre el grupo BUILTIN\Administradores para evitar...

Puerto de Enterprise Manager
  • Topic started by
  • in General
  • 16 years ago.
  • 16 years ago.
  • 12 replies
Hola, estoy tratando de acceder a mi enterprise manager de un oracle 10G, donde puedo ver en que puerto esta levantando para entrar desde mi...
Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 5 years ago.
  • 5 years ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
Deshabilitar todos los jobs
  • Topic started by agamez
  • in Jobs
  • 6 years ago.
  • 6 years ago.
  • 1 reply
Buenos días, alguien sabe como puedo deshabilitar rapidamente todos los jobs de SQL Server, gracias.

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 5 years ago.
  • 5 years ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...