miércoles, 27 de mayo de 2015

Recuperacion de una tabla a partir de un backup de RMAN

Recuperacion de una tabla a partir de un backup de RMAN


Esta característica de DB 12c me llamó mucho la atención a mí personalmente. Si bien se podía realizar en versiones anteriores, en 12c se siguen los mismos pasos, pero esta vez RMAN se hace cargo de todo.

Estos son los pasos, desde cómo poner la base de datos en modo archive hasta la recuperación de la tabla:
  1. Conectarse a la base de datos como sysdba
  2. sqlplus / as sysdba

  3. Verificar si la base de datos está en modo Archive
  4. archive log list

  5. Si no está en modo archive, bajar la base de datos, subirla en modo mount y ponerla en modo archivelog.
  6. shutdown immediate  -- a los
    startup mount  --just one node3
    alter database archivelog;
    alter database open
    archive log list
    exit

  7. Conectarse a RMAN
  8. rman target=/

  9. Generar un backup de la base de datos:
  10. Backup database

  11. En una ventana conectarse como sys o system
  12. select timestamp_to_scn(sysdate) from v$database;

  13. En otra ventana conectarse a la base de datos con el usuario y realizar una transacción u operación que afecte una tabla
  14. Y volver a revisar el timestamp en la ventana de system
  15. Prerrequisitos para la recuperación:
    • Base de datos en modo archive
    • Contar con el backup del que se quiere restaurar los datos
    • Tener espacio para restaurar system, sysaux, temporal, undo y el tablespace donde estaba la tabla, se necesita este espacio de manera temporal, los archivos se borran automáticamente cuando se termina la restauración
    • Tener espacio para recuperar la tabla en la base de datos
    • En el caso de generar export , tener espacio para este archivo
    • Tener el punto en el tiempo en que se quiere recueprar una tabla
  16. NOTA: También se pueden recuperar particiones
  17. Conectarse a RMAN, y recuperar al punto previo al update
  18. RECOVER TABLE 'SCOTT'.'EMP'
    UNTIL SCN 1759715
    AUXILIARY DESTINATION '/u01/aux'  
    REMAP TABLE 'SCOTT'.'EMP':'REC_EMP';
    
    
  19. Notar que se hace el procedimiento, verificar el directorio de destino de base de datos auxiliar
  20. Otra forma de restaurar la tabla es generando un export de la tabla
  21. RECOVER TABLE 'SCOTT'.'EMP'
    UNTIL SCN 1759715
    AUXILIARY DESTINATION '/u01/aux'
    DATAPUMP DESTINATION '/u01/exp'
    DUMP FILE 'scott_emp_prev.dmp'
    NOTABLEIMPORT;
    
    
  22. Notar que se hace el procedimiento, verificar directorio del destino de base de datos auxiliar, y al final del proceso que el export se haya generado
  23. Pasos  ejecutados:
    • Crea base de datos auxiliar
    • Recupera los datafiles de system, sysaux, undo hasta el punto en el tiempo que se requiere
    • Abre la base de datos auxiliar en modo lectura e identfica el tablespace donde está la tabla o las particiones y lo restaura y recupera
    • Abre la base de datos
    • Exporta los datos
    • Importa los datos
  24. También podemos hacer recuperación en el tiempo:
  25. RECOVER TABLE 'SCOTT'.'EMP'
    UNTIL TIME to_date('08/17/2014 21:01:15','mm/dd/yyyy hh24:mi:ss')"
    AUXILIARY DESTINATION '/u01/aux'  
    REMAP TABLE 'SCOTT'.'EMP':'REC_EMP';
    
    
    Limitaciones:
    • No se restauran tablas de SYS
    • Tablas y particiones en tablespaces SYSTEM Y SYSAUX no se recuperan
    • Las particiones de una tabla se pueden recuperar sólo para bases de datos desde 11g R1
    • Tablas con contraints not null no se pueden recuperar con la opción de REMAP
    • Si la tabla tienen índices solo se recupera si los tablespaces donde están los índices están incluidos en el backup
    • Borrar la base de datos auxiliar y sus datafiles. 

Más información en :
https://docs.oracle.com/database/121/BRADV/rcmresind.htm#BRADV686