You are on page 1of 7

c  c 

 c  c

  CASO 1: MODO NOARCHIVELOG Y RECUPERACIÓN CASO 2: BORRADO DE DATAFILES SIN DATOS EN NOARCHIVELOG CASO 3: PÉRDIDA DE UN DATAFILE DE SYSTEM EN ARCHIVELOG CASO 4: PÉRDIDA DE UN DATAFILE QUE NO ES DEL SYSTEM Y SIN SEGMENTOS DE ROLLBACK. EN ARCHIVELOG CASO 5: PÉRDIDA DE UN DATAFILE QUE NO ES DEL SYSTEM PERO CONTIENE SEGMENTOS DE ROLLBACK ACTIVOS EN ARCHIVELOG CASO 6: PÉRDIDA DE UN ARCHIVO DE LOG ONLINE NO ARCHIVADO CASO 7: FALLO DE LA BD DURANTE BACKUPS EN CALIENTE CASO 8: RECUPERACIÓN CON UN CONTROLFILE DE UN BACKUP  c.

 Se puede crear directamente la BD en modo Archivelog. Si se ha creado en NoArchivelog la forma de activar este modo con archivado automático es cambiar los siguientes parámetros del init.ora (también se puede hacer con alter system): `    .

.

 .

.

`   .

.

 .

  .

.

 .

.

.

.

.

.

.

`    .

.

  .

 .

   .

usar el comando: Archive log all c  c. Esto activa el archivado automático y fija el directorio y formato de los nombres de los ficheros archived logs. Se puede usar el comando: archive log list para comprobarlo. para ello usar el comando: Alter database archivelog. Para forzar el archivado de todos los redo logs online que aún no hayan sido archivados hasta el momento de la activación. Volver a comprobarlo con archive log list. Aún falta activar el modo Archivelog. (teniendo la BD en modo mount).

  c  c.

 Sólo se recupera al momento del backup.ora y controlfiles. Recuperación: 1. redo logs online. Backup: Hacer backup de todos los datafiles. init.

2. Hacer backup de la bd actual por si el backup que vamos a aplicar está mal.

3. redo logs online e init.ora actuales. controlfiles. Borrar todos los datafiles.

4. Restablecer todos los ficheros del backup.

.. Nota 1: Si el datafile no contiene ningún dato. se puede arrancar la BD poniendo offline el datafile y reconstruyendo posteriormente el tablespace: alter database datafile µ. por ejemplo es del tablespace temporary. (es el siguiente caso de estudio). ..¶ offline drop. Arrancar la BD.

c    .

.

  c.

Ejemplo: Se pierde un datafile del tablespace temporal. Solución: Borrar el datafile con:  . En este caso se puede salvar el problema sin pérdida de datos.

  .

  .

.

 .

  después de abrir de nuevo la BD el tablespace y el resto de sus ficheros están online por lo que pueden seguir siendo utilizados. Prueba desde el svrmgrl: !   . pero el datafile eliminado está offline y Oracle recomienda volver a crear el tablespace.

  "  .

  # .

 .

 .

.

 .

.

$.

.

   # .

  .

    # .

  .

  # .

% .

& .

  .

 '   # .

% .

& .

  "  &.

  .

  ( .

 .

)  .

  .

  .

 .

  .

  "  .

  .

# .

  .

  .

  *.

 .

  .

.

   # .

  .

  .

 )  .

 .

  *.

 .

$.

.

   # .

  .

  .

 )  .

 .

  # .

  .

  + .

  .

.

.

   !  .

  .

.

ya que siempre se puede arrancar la BD con la opción resetlogs para crearlos nuevos aunque se pierdan las modificaciones que estaban en los redo logs online. c   . Nota: Si sucede esto con un tablespace de datos. Con uno de índices: volver a crear los índices. Nota 2: Oracle recomienda no hacer backup de los redo logs online ni en backups en frío ni en caliente. recrearlo con todos sus objetos.

   .

  c.

. salvo en el caso de un datafile del system. Hace falta recuperar el/los ficheros dañados de un backup online anterior y realizar la recuperación sobre ellos. Antes de que se pueda abrir la BD. Es posible poner un datafile offline y luego arrancar la BD. es necesario que esté montada y después se tiene que ejecutar el comando recover database.

c   .

   .

  .

   c c.

. Prueba desde el svrmgrl: !   .recover database: con la BD montada pero no abierta. por tanto es una recuperación offline. 2.recover datafile: con la BD montada o abierta y el datafile offline.recover tablespace: con la BD abierta y el tablespace offline. 3. por tanto es una recuperación online. por tanto es una recuperación online. Existen 3 opciones: 1...

  !  .

 .

 .

).

 .

  .

  -  .

 .

 .

 .

) .

-  .

 .

 .

 .

. .

!  # .

% .

& .

  "  &.

  ( .

.

 )  .

 .

  .

  .

.

  .

.

.

 ( .  .

.

/'/ )  .

  .

 .

 .

 .

.

'.

 .

.

  "  .

  0.

1 .

    .

2 .

.

   .

   .

 .

.

'.

%.

 .

.

  3 Métodos de Recuperación: 1.Con Recover database:  ..

  .

   .

  .

   .

 .

  .

  .

 .

.

  .

  .

    .

4.

 .

. .

 .

   .

).

%.

.. 2.Con Recover datafile:  .

  .

 .

  .

  .

    .

  .

  .

 )  .

  .

  .

  .

     .

  .

 )     .

4.

 .

. .

  .

 2 .

.

  .

$.

 *.

    .

  .

  .

 )  .

   .

4.

 .

. .

   .

).

%.

..Con Recover tablespace:  . 3.

   .

  .

  .

    .

  .

  .

 )  .

 .

.

.

 .

 .

 .

  .

2 .

   .

  .

  .

   .

  .

  .

    .

  .

    .

4.

 .

. .

  0.

  .

%.

  .

   .

  .

  .

 .

  .

4.

 .

. .

   .

).

%.

 ..

c   .

   .

    c.

  c c.

 c.

y da el siguiente error: el fichero n no puede ser leido en este momento (n es el número de datafile donde estaba el segmento de rollback asignado a dicha transacción). Se pretende hacer una recuperación online: después de poner offline todos los datafiles y abrir la BD. Esto es porque mientras se realiza la recuperación de los datafiles no se puede acceder a ninguna fila implicada en transacciones activas que apunten a segmentos de rollback. se lanza una consulta de una tabla sobre la que existía una transacción activa antes del fallo. hay que crear unos cuantos segmentos de rollback adicionales que permitan el procesamiento de las nuevas transacciones. Prueba desde el svrmgrl: !   . Ejemplo: Fallan todos los datafiles que contienen los segmentos de rollback de la BD. Hasta que se recuperen los datafiles.

  !  .

 .

 5.

).

 .

  .

  " .

   .

 .

 '.

  .

) -  .

 .

 5.

 .

5 "  &.

  ( .

.

 )  .

6.

 .

 .

  .

 .

 ' ( .

.

' 7)  .

  .

 .

 .

 .

  .

 .

.

'.

 .

.

"  . si no durante la apertura de la BD intentará poner online los segmentos de rollback privados indicados en este parámetro y fallará ya que no están accesibles.ora.    Ahora comentar (#) el parámetro rollback_segments del init.

  # .

  .

  .

 )  .

 # .

  .

  "   .

4.

 .

 5 .

  0.

.

  .

 .

$.

 .

%.

.

.

   .

  3 "   .

   *   .

 .

 '  .

  .

   % Crear segmentos de rollback para ser usados temporalmente hasta finalizar la recuperación (después los borraremos): !  .

 '.

  .

 ).

  .

%  !  .

 '.

  .

 .

  .

%  # .

 '.

  .

 ).

 # .

 '.

  .

 .

 "   .

4.

 .

 5 .

  .

 .

.

  .

  8   .

  .

 "   .

4.

 .

 5 .

  0.

.

  .

$.

  # .

  .

 .

 "   .

4.

 .

 5 .

 *.

.

 3.

.

.

   .

%.

 .

  .

  "   .

   *   .

 .

 '  .

  .

   % Poner esos segmentos online de nuevo y los temporales que hemos creado ponerlos offline y borrarlos. .

c   .

  c.

.

 c.

Si se intenta forzar la apertura de la BD puede haber inconsistencias. Se hacen backups online 2 veces por semana y una export completa de la BD 1 vez a la semana. no se pueden usar porque no se puede hacer recuperación automática de instancia ya que se han perdido los redo logs online. los datafiles y controlfiles están intactos. no se puede hacer recuperación por datafiles o tablespaces. Al tratarse de una recuperación incompleta. hay que hacer una recuperación de dispositivo. Solución: Aunque los datafiles están bien después del fallo. Para ello se restablecerán todos los datafiles de un backup completo online u offline y se aplicarán los cambios almacenados en los archived redo logs hasta el último redo log archivado disponible. Prueba con el svrmgrl: "  &. Debido a un corte de luz se pierden todos los redo logs online. se debe usar recover database.  Ejemplo: Se tiene una BD en Archivelog con 3 grupos de redo log no multiplexados (1 miembro cada uno).

  .

9.

 .

.

:+ ( .

.

4 .

  .

.

6.

 .

  .

  .

  ( .

.

4.

   .

'.

 .

   "  .

  8   .

  .

 .

  .

 .

.

.

.  .

 .

  # .

  .

 .

   .

 .

 .

  .

.

< *.

.

 .

< .

 .

  Nota: Se podrían haber usado recover database until time ó until change si se hubiera querido rehacer hasta un punto en el tiempo o hasta un SCN determinado. c      c c .

Hasta la versión 7. Cuando se intenta arrancar de nuevo la BD pide una recuperación de dispositivo sugiriendo el número de secuencia 2300 y el redo log online actual tiene secuencia 2335. pero a partir de esa versión se puede finalizar el backup de los datafiles que están en modo backup online mediante el comando  . Ejemplo: Se estropea la máquina mientras se está haciendo un backup online.2 de Oracle había que hacer este tipo de recuperación. lo que supone aplicar unos 35 ficheros archivados antes de que se pueda abrir la BD.

  .

  .

.

.

Prueba desde el svrmgrl: !   .' .

  "   # .

 .

 .

  5=* < .

%.

  55 # .

  .

 .

 .

' ( .

.

 7)  .

'.

'.

 .

 .

   .

!  .

 .

 >).

 .

  .

  -  .

 .

 >.

 .

> !  # .

% .

& .

  "  &.

  .

  .

:+ Ahora se van a hacer 2 pruebas. la 1ª trata de abrir la BD con el datafile actual. la 2ª trata de reemplazarlo por su backup intentando engañar a Oracle para que crea que es el fichero actual: Prueba 1: utilización del datafile actual: "  .

  # .

  .

  # .

  .

  .

 7)  .

.

' # .

  .

  "   .

4.

 .

 > .

?@.

> Prueba 2: utilización del backup del datafile: ( .

.

 7)   ( .

.

' 7)  .

 7)   "  .

  # .

  .

  .

1 .

.

2 .

.

  .

.

 .

.

'.

 .

 .

2 .

.

  .

  3 # .

  .

  .

 7)  .

.

' .

1 .

  .

2 .

.

 .

.

'.

   .

  .

?@.

  .

.

   .

  .

  "   .

4.

  .

 > .

?@.

> Nota: Se puede consultar la v$backup para saber qué datafiles están en modo backup: "   .

 A*.

  .

 .

c ! c  c.B' los que estén active están en modo backup.

cc .

siempre que sea posible intentar la recuperación con el controlfile actual. una vez realizada la recuperación se debe arrancar la BD con la opción resetlogs y hacer un backup completo (mejor la 1ª solución). además Oracle forzará a usar la opción using backup controlfile. . La 2ª es utilizar el backup del controlfile. si no se puede crear un nuevo controlfile. Ejemplo: Se tiene una BD de la que se hacen backups en frío copiando datafiles. la utilización del backup del controlfile debe ser la última opción a utilizar ya que es necesario abrir la BD con resetlogs. redo logs online y controlfiles. con lo que se deberá realizar una recuperación de dispositivo. c Hacer una recuperación con un backup de un fichero de control puede ser difícil. Solución: Hay 2 opciones: la 1ª es crear un controlfile con create controlfile (ya que los datafiles y redo logs están bien). al intentar arrancar de nuevo la BD Oracle indica que se trata de un fichero antiguo. Se borra accidentamente el controlfile y se restaura su copia. realizar la recuperación si fuera necesario y arrancar la BD.

Prueba con el svrmgrl: !   .

  "  .

  "   .

 *.

  *.

 .

 .

B  !  .

 .

 C.

).

 .

  .

    -  .

 .

 C.

 .

C !  # .

% .

& .

  # .

% .

& .

  # .

% .

& .

  "  &.

  ( .

.

'   4 .

.

  .

.

    .

 .

' "  .

  # .

  .

  .

 .

 .

 .

2 .

.

    .

.

  8   .

  .

?@.

 < .

    8   .

  .

 .

'.

    1º poner offline los datafiles de los tablespaces de solo lectura: # .

  .

  .

.

 8   .

  .

 .

'.

    # .

  .

  .

  ?@   # .

  .

 .

    .

  ?@   # .

  .

 .

   # .

 .

 "   .

 *.

  *.

 .

 .

B  Poner el tablespace de sólo lectura online con sus datafiles: # .

  .

.

 "   .

4.

 .

 C .

?@C .

.