Category: RMAN (Recovery Manager)

¿Qué es un Snapshot Controlfile?



¿Qué es un Snapshot controlfile? . Yo creo que está pregunta ha aparecido en nuestras mentes desde el inicio de los días, pero la verdad ....es bastante sencillo, he acá la explicación






Esto es para alegrar la lectura :>

Tal cual como lo dice la documentación de Oracle
https://docs.oracle.com/cd/E11882_01/rac.112/e41960/rman.htm#RACAD851

Un Snapshot controlfile es simplemente una copia del controlfile de una base de datos , que se crea en el sistema operativo en una ruta en partícular, la cual está dada por un seteo a nivel de RMAN, que se puede ver si ejecutamos el comando SHOW ALL dentro de RMAN

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:\APP\LIGARIUS\PRODUCT\12.1.0\DBHOME_1\DATABASE\SNCFPROD12C.ORA';

PD : Se que es horrible, pero tenía a mano Windows para elaborar la nota :'(


Esta copia de controlfile (Snapshot) sirve para cuando se hace la resincronización con el catálogo RMAN (entre el encabezado del controlfile y le base de datos catálogo) o para cuando se respalda el mismísimo controlfile, con esta copia a disco se mantiene la consistencia en la Lectura (READ-CONSISTENT) y es este propio archivo el que se lee para geenerar la copia de RMAN.

La gran diferencia con el seteo del AUTOBACKUP del CONTROLFILE (CONFIGURE AUTOBACKUP ON) a nivel de RMAN , es que el Snapshot Controlfile se genera antes del respaldo (comandos BACKUP o COPY) y el AUTOBACKUP del controlfile se genera después de haberse ejecutado el respaldo (comandos BACKUP o COPY), aunque ambos sirven para por ejemplo llevar a cabo una restauración de base de datos.

Para un ambiente Stand Alone, el Snapshot COntrolfile debe estar seteado en una ruta cualquiera, para un ambiente de RAC , la ruta del Snapshot COntrolfile debe estar seteada en un dispositivo compartido (por ejemplos discos en CLUSTER) que sea visualizado por los nodos que comparten el RAC, esto es obligación desde Oracle RAC 11gr2 (11.2.0.2).

Espero les sirva

by Ligarius
09.11.15. 08:05:30. 331 words, 2242 views. Categories: Base de datos, RMAN (Recovery Manager) ,

Oracle 12c New Features : Comando VALIDATE de RMAN



En Oracle 12c existe un comando que nos puede hacer la vida muy sencilla, o ayudar en que sea más placentera.



El comando VALIDATE para RMAN (Recovery Manager), este comando puede hacer variadas cosas de utilidad para realizar chequeo de corrupción a nivel lógico de bloques (intrablock, o internamente de un sólo bloque) , como a nivel físico de bloques (interblock, o entre bloques).

Cada vez que se ejecuta el comando VALIDATE se chequea de forma manual alguna corrupción lógica o física , cada vez que ejecutamos una validación de por lo menos un datafile, RMAN chequea cada uno de los bloques del archivo y si en este análisis encuentra un bloque corrupto lógica o físicamente , se procede a actualizar la vista V$DATABASE_BLOCK_CORRUPTION, en esta vista queda inscrito el bloque que presenta problemas.

Lo que contiene el presente post.

  • Validación de datafiles
  • Validación de algún bloque en partícular de una datafile
  • Validación de base de datos completa
  • Validación de backupsets
  • Validación por secciones de datafiles

    El detalle de lo comentado :

  • Validación de datafiles : Para realizar el chequeo completo de un datafile, se ejecuta el siguiente comando, el cual arroja entre otras cosas la cantidad de bloques examinados y el valor del SCN más alto encontrado.

    VALIDATE DATAFILE "número datafile";

    Salida del comando :

    RMAN> validate datafile 1;

    Starting validate at 30/05/15
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting validation of datafile
    channel ORA_DISK_1: specifying datafile(s) for validation
    input datafile file number=00001 name=C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\O1_MF_SYSTEM_BDONOH43_.DBF
    channel ORA_DISK_1: validation complete, elapsed time: 00:00:15

    List of Datafiles
    =================
    File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
    ---- ------ -------------- ------------ --------------- ----------
    1    OK     0              18958        104974          18064429
      File Name: C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\O1_MF_SYSTEM_BDONOH43_.DBF
      Block Type Blocks Failing Blocks Processed
      ---------- -------------- ----------------
      Data       0              68354
      Index      0              13822
      Other      0              3826

    channel ORA_DISK_1: starting validation of datafile
    channel ORA_DISK_1: specifying datafile(s) for validation
    including current control file for validation
    including current SPFILE in backup set
    channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
    List of Control File and SPFILE
    ===============================
    File Type Status Blocks Failing Blocks Examined
    ------------ ------ -------------- ---------------
    SPFILE OK 0 2
    Control File OK 0 612
    Finished validate at 30/05/15

    RMAN>



  • Validación de algún bloque en partícular de una datafile : También se puede realizar el chequeo de un sólo bloque dentro de un datafile, quizás por que en el archivo de alertas o un aplicativo nos indico que allí existe una corrupción.

    VALIDATE DATAFILE "número datafile" block "número de bloque";

    Salida del comando :

    RMAN> validate datafile 7 block 1;

    Starting validate at 30/05/15
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting validation of datafile
    channel ORA_DISK_1: specifying datafile(s) for validation
    input datafile file number=00007 name=C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
    channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
    List of Datafiles
    =================

    
    File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
    ---- ------ -------------- ------------ --------------- ----------
    7    OK     0              0            1               0
      File Name: C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
      Block Type Blocks Failing Blocks Processed
      ---------- -------------- ----------------
      Data       0              0
      Index      0              0
      Other      0              1
    

    Finished validate at 30/05/15





  • Validación de base de datos completa : En la validación de la base de datos completa, simplemente se le indica que el VALIDATE será a nivel de base y el genera un informe con todos los bloques que ha recorrido y a que datafile corresponde.

    VALIDATE DATABASE;

    Salida del comando :

    RMAN> validate database;

    Starting validate at 30/05/15
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting validation of datafile
    channel ORA_DISK_1: specifying datafile(s) for validation
    input datafile file number=00007 name=C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
    ****Muestra todos los datafiles que están siendo analizados

    channel ORA_DISK_1: validation complete, elapsed time: 00:01:05

    **** Muestra un resumen por cada uno de los datafiles que han sido analizados, mostrando la cantidad de bloques procesados, con problemas y el tipo de bloques.


    List of Datafiles
    =================
    File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
    ---- ------ -------------- ------------ --------------- ----------
    7 OK 0 129369 131072 18061221
    File Name: C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
    Block Type Blocks Failing Blocks Processed
    ---------- -------------- ----------------
    Data 0 1542
    Index 0 0
    Other 0 161



  • Validación de backupsets : Se le puede indicar un número de backupsets para que sea analizado y nos muestra la misma información que los comandos anteriores, por ejemplo, la cantidad de bloques que ha leído y el máximo SCN que posee el datafile, con esto podemos validar que nuestro backupset es válido para realizar una restauración.

    VALIDATE BACKUPSET "número backupset" ;

    Salida del comando :

    RMAN> validate backupset 1;

    Starting validate at 31/05/15
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting validation of datafile backup set
    channel ORA_DISK_1: reading from backup piece C:\ORACLE12C\FAST_RECOVERY_AREA\PROD12C\BACKUPSET\2015_05_30\O1_MF_NNNDF_TAG20150530T205937_BPNMQ9WG_.BKP
    channel ORA_DISK_1: piece handle=C:\ORACLE12C\FAST_RECOVERY_AREA\PROD12C\BACKUPSET\2015_05_30\O1_MF_NNNDF_TAG20150530T205937_BPNMQ9WG_.BKP tag=TAG20150530
    7
    channel ORA_DISK_1: restored backup piece 1
    channel ORA_DISK_1: validation complete, elapsed time: 00:00:15
    Finished validate at 31/05/15

    RMAN>



  • Validación por secciones de datafiles : Podemos realizar la validación de un datafile , pero si este es muy grande , podemos dividir el trabajo en canales por paralelo, simplemente indicando un número o tamaño de sección para el datafile. Imaginense que poseen un sólo datafile de 100GB, pues bien un sólo canal será capaz de tomarlo y procesarlo, pero si lo dividimos en secciones de 10Gb, podríamos tener hasta 10 canales procesando las 10 partes de nuestro gran datafile.

    RUN
    {
    *** Se declaran los canales que serán utilizados para que en paralelo se tome un sólo datafile
    ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
    ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
    ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

    *** Se le indica el tamaño de la sección a analizar por cada canal generado
    VALIDATE DATAFILE 7 SECTION SIZE 200M;
    }

    Salida del comando :

    RMAN> run
    2> {
    3> allocate channel c1 device type disk;
    4> allocate channel c2 device type disk;
    5> allocate channel c3 device type disk;
    6> validate datafile 7 section size 200m;
    7> }

    released channel: ORA_DISK_1
    allocated channel: c1
    channel c1: SID=7 device type=DISK

    allocated channel: c2
    channel c2: SID=367 device type=DISK

    allocated channel: c3
    channel c3: SID=6 device type=DISK

    *** Se muestran todas las secciones que serán analizadas por cada canal declarado en RMAN
    Starting validate at 30/05/15
    channel c1: starting validation of datafile
    channel c1: specifying datafile(s) for validation
    input datafile file number=00007 name=C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
    validating blocks 1 through 25600
    channel c2: starting validation of datafile
    channel c2: specifying datafile(s) for validation
    input datafile file number=00007 name=C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
    validating blocks 25601 through 51200
    channel c3: starting validation of datafile
    channel c3: specifying datafile(s) for validation
    input datafile file number=00007 name=C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
    validating blocks 51201 through 76800
    channel c1: validation complete, elapsed time: 00:00:08
    channel c1: starting validation of datafile
    channel c1: specifying datafile(s) for validation
    input datafile file number=00007 name=C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
    validating blocks 76801 through 102400
    channel c2: validation complete, elapsed time: 00:00:09
    channel c2: starting validation of datafile
    channel c2: specifying datafile(s) for validation
    input datafile file number=00007 name=C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
    validating blocks 102401 through 128000
    channel c1: validation complete, elapsed time: 00:00:03
    channel c1: starting validation of datafile
    channel c1: specifying datafile(s) for validation
    input datafile file number=00007 name=C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
    validating blocks 128001 through 131072
    channel c3: validation complete, elapsed time: 00:00:11
    channel c2: validation complete, elapsed time: 00:00:04
    channel c1: validation complete, elapsed time: 00:00:01
    List of Datafiles
    =================

    File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
    ---- ------ -------------- ------------ --------------- ----------
    7    OK     0              129369       131067          18061221
      File Name: C:\ORACLE12C\ORADATA\PROD12C\DATAFILE\DATOS01_01.DBF
      Block Type Blocks Failing Blocks Processed
      ---------- -------------- ----------------
      Data       0              1542
      Index      0              0
      Other      0              156

    Finished validate at 30/05/15
    released channel: c1
    released channel: c2
    released channel: c3




    En definitiva, el comando VALIDATE es muy poderoso para realizas chequeos rápidos y certeros sobre las condiciones de nuestros respaldos y de nuestras bases de datos, buscando de manera óptima los posibles bloques corruptos, ya sea , física como lógicamente.

    Documentación del comando VALIDATE
    https://docs.oracle.com/database/121/BRADV/rcmvalid.htm#BRADV90063
    https://docs.oracle.com/database/121/RCMRF/rcmsynta2025.htm#RCMRF162

  • by Ligarius
    30.05.15. 21:24:20. 1427 words, 5603 views. Categories: Oracle 12c, RMAN (Recovery Manager) ,

    ORA-01180: can not create datafile 1



    Oracle y la reencarnación



    Hola... estoy haciendo una restauración de base de datos en versión 10.2.0.5 , desde un respaldo en disco hacía otro servidor mediante RMAN, pues bien al momento de ejecutar el restore database , me aparece el siguiente error

    released channel: c10
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of restore command at 03/09/2015 20:42:44
    ORA-01180: can not create datafile 1
    ORA-01110: data file 1: '+DATA7/prodstb/datafile/system.261.864565123'



    No entendía muy bien lo que sucedía por ende comencé a chequear permisos en el ASM, espacios disponibles, etc. pero nada de eso funcionó.

    Y leyendo en algunos foros, me encontré con que se debía revisar la encarnación de la base de datos.

    Por ende ejecute lo siguiente :

    RMAN> list incarnation;

    using target database control file instead of recovery catalog

    List of Database Incarnations
    DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
    ------- ------- -------- ---------------- --- ---------- ----------
    1 1 FABAN9I 657905531 PARENT 1 29-SEP-11
    2 2 FABAN9I 657905531 PARENT 10527080885702 22-NOV-14
    3 3 FABAN9I 657905531 CURRENT 10554962866540 17-FEB-15


    Y se resetea la encarnación a la anterior de a la actual, este comando se utiliza para cuando se necesita hacer un restore de una base de datos a un SCN anterior que el actual

    RMAN> reset database to incarnation 2;

    database reset to incarnation 2


    Y al momento de consultarla nuevamente

    RMAN> list incarnation;

    List of Database Incarnations
    DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
    ------- ------- -------- ---------------- --- ---------- ----------
    1 1 FABAN9I 657905531 PARENT 1 29-SEP-11
    2 2 FABAN9I 657905531 CURRENT 10527080885702 22-NOV-14
    3 3 FABAN9I 657905531 ORPHAN 10554962866540 17-FEB-15


    La encarnación con errores quedo como ORPHAN y la que reseteamos , quedo como CURRENT

    La restauración en estos momentos se está ejecutando sin problemas...

    Cosas de Oracle ;)

    Documentación
    http://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsynta2007.htm#RCMRF148

    by Ligarius
    09.03.15. 18:33:04. 305 words, 6079 views. Categories: Base de datos, RMAN (Recovery Manager) , • Send a trackback »

    Oracle 12c New Features : Ejecución de sentencias SQL a través de RMAN



    Una nueva característica de RMAN es la posibilidad de ejecutar las sentencias SQL a través del mismo PROMPT de RMAN.


    Simplemente una escena de culto :)

    Antes de Oracle 12c , las sentencias SQL se tenían que ejecutar ocupando el string sql y no todas las sentencias podían ser ejecutadas , un ejemplo de ello.

    sql 'alter system checkpoint';


    Pues bien , desde ahora no es necesario ocupar el string sql , se puede colocar la sentencia directamente , algunos ejemplos de las sentencias que se pueden ejecutar .

    Podemos realizar un Switch logfile

    RMAN> alter system switch logfile;

    Statement processed


    Crear tablas

    RMAN> create table b (campo1 number);

    Statement processed


    Insertarle valores o ejecutar cualquier DML

    RMAN> insert into b values (1);

    Statement processed


    Terminar las transacciones

    RMAN> commit;

    Statement processed


    Crear usuarios

    RMAN> create user test identified by test;

    Statement processed


    Consultar el diccionario de datos

    RMAN> select * from v$instance;


    O simplemente bajar y subir nuestra base de datos (Esto depende de los privilegios que posea el usuario)

    RMAN> startup force

    Oracle instance started
    database mounted
    database opened

    Total System Global Area 521936896 bytes

    Fixed Size 2404552 bytes
    Variable Size 415239992 bytes
    Database Buffers 96468992 bytes
    Redo Buffers 7823360 bytes


    La ejecución de un script mediante rman se puede hacer de la siguiente forma :

    rman target usuario/password@string_de_conexion @script_a_ejecutar


    Donde script_a_ejecutar puede ser lo que ustedes quieran y el resultado de ese script, lo pueden ver realizando la siguiente consulta

    select * from v$rman_output;


    Espero les sirva...

    by Ligarius
    23.08.13. 06:43:18. 250 words, 3743 views. Categories: Oracle 12c, RMAN (Recovery Manager) ,

    Oracle 12c New Features : Restauración de tablas con RMAN



    A partir de Oracle12c se agrega una funcionalidad que hace mucho la estábamos pidiendo, el poder recuperar sólo una tabla desde un respaldo RMAN.



    Imagínense ustedes que yo elimino una tabla , o que se produce una corrupción lógica o simplemente borro registros y que ni siquiera con FlashBack puedo recuperar, pues ante eso puedo tomar un respaldo de mi base de datos y cargarlo completamente en una máquina y posterior a eso sacar la tabla con un expdp , pues eso es bien engorroso y muchas veces inviable, pero es lo que hay.

    Desde ahora eso se hace , pero de forma automática con el comando RECOVER TABLE dentro de RMAN :)




    Algunas cosas a tener en cuenta :

  • Antes de hacer una recuperación de una tabla , debe existir un respaldo full de la base con RMAN, incluído el UNDO, SYSTEM, SYSAUX y el tablespace donde reside la tabla
  • Se pueden recuperar una o más tablas desde distintos usuarios, incluso se pueden recuperar particiones de una tabla
  • Sólo se pueden recuperar tablas dentro del mismo usuario dueño, no se pueden redireccionar tablas a otros usuarios
  • Si se quiere remapear la tabla a otro tablespace, el nuevo tablespace debe estar generado
  • Las tablas y particiones de las cuales SYS es el dueño no se pueden recuperar
  • Las tablas y particiones que se encuentran en los tablespaces SYSTEM y SYSAUX , no pueden ser recuperadas desde respaldo
  • Al restaurar una tabla Oracle genera una instancia de paso, pero está última posee valores asociados a sus parámetros los cuales deben ser chequeados, por ejemplo para el tamaño de la SGA
  • Se pueden recuperar tablas y particiones desde un respaldo RMAN de una base de datos cuya versión es igual o superior a la 11gr1
  • Tablas y particiones de tables no pueden ser recuperadas en una base de datos Standby
    La base de datos debe estar en modo READ-WRITE
  • La base de datos debe estar en modo ARCHIVELOG
  • Se pueden recuperar tablas según un número de SCN , según un número de secuencia o según una fecha (TIME)
  • Se pueden hacer recuperaciones de tables en una base de datos PDB (Nuevo concepto de Cloud Oracle)


    Cuando se ejecuta el comando RECOVER TABLE se ejecutan las siguientes actividades de forma automática :

    1) Se determina de forma automática que backup es el que contiene la tabla , dado el punto en el tiempo donde deseo recuperar la tabla
    2) RMAN levanta una instancia auxiliar con un SID , con valores estandar para su archivo de inicialización
    3) Se lee el backupset que contiene la tabla
    4) Se carga el controlfile desde el respaldo a una ruta creada según el parámetro "AUXILIARY DESTINATION"
    5) Se restaura el tablespace de UNDO , SYSAUX, SYSTEM y el tablespace que contiene la data de la tabla o tablas
    6) Se aplican las transacciones desde los archives respaldados hacía la tabla
    7) Se crea un directorio para dejar un respaldo expdp de las tablas a restaurar, este directorio está bajo la ruta definida en el parámetro "DATAPUMP DESTINATION"
    8) Se realiza un expdp de las tablas a restaurar en el directorio generado en el punto anterior
    9) Se genera un impdp de la tabla que está contenida en el archivo generado en el punto anterior
    10) Se hace una bajada de la instancia temporal
    11) Se borran los datafiles temporales generados
    12) Se elimina el respaldo generado en el punto (8)


    He acá algunos ejemplos del comando RESTORE

    RECOVER TABLE prod1.objetos1
    UNTIL TIME "to_date('13-07-2013 00:40:00','dd-mm-yyyy hh24:mi:ss')"
    AUXILIARY DESTINATION 'c:\'
    DATAPUMP DESTINATION 'c:\data'
    DUMP FILE 'prod1_objetos1_exp_dump.dat'
    ;

    NOTA : Con este comando se hace una recuperación de la tabla PROD1.OBJETOS1 , se generarán los datafiles temporales en la ruta "c:\" , se generará el respaldo de export datapump en la ruta "c:\data" y desde la misma ruta se hará el import , y el nombre del archivo se llamará "prod1_objetos1_exp_dump.dat"


    RECOVER TABLE prod1.objetos1 , prod2.objetos2
    UNTIL SEQUENCE 221
    AUXILIARY DESTINATION 'c:\'
    DATAPUMP DESTINATION 'c:\data'
    DUMP FILE 'prod1_objetos1_exp_dump.dat'
    REMAP TABLE 'PROD1'.'OBJETOS1':'NUEVA_TABLA4','PROD2'.'OBJETOS2':'NUEVA_TABLA3'
    ;

    Nota : Con este comando realizamos la recuperación de las tablas PROD1.OBJETOS1 y PROD2.OBJETOS2, se realizará la recuperación de la tabla hasta la secuencia 221, se dejarán los respaldos de export datapump en el directorio "c:\data", se dejan los datafiles temporales en la ruta "c:\", la tabla original se llamaba PROD1.OBJETOS1 se llamará ahora PROD1.NUEVA_TABLA4 y la tabla llamada PROD2.OBJETOS2 se llamará NUEVA_TABLA3


    RECOVER TABLE prod1.objetos1 , prod2.objetos2
    UNTIL SEQUENCE 435
    AUXILIARY DESTINATION 'c:\'
    DATAPUMP DESTINATION 'c:\data'
    DUMP FILE 'prod1_objetos1_exp_dump.dat'
    NOTABLEIMPORT
    ;

    Nota : Con este comando realizamos la recuperación de las tablas PROD1.OBJETOS1 y PROD2.OBJETOS2, se realizará la recuperación de la tabla hasta la secuencia 435, se dejarán los respaldos de export datapump en el directorio "c:\data", se dejan los datafiles temporales en la ruta "c:\", y sólo se llevará a cabo el export de la tabla y no el import



    Claúsulas importantes :

  • AUXILIARY DESTINATION : Es la ruta donde Oracle va a dejar los datafiles recuperados (UNDO, SYSTEM, SYSAUX y los datafiles del tablespace donde estaba la tabla al momento del respaldo)
  • SET NEWNAME : Esta es la nueva ruta que se le puede asignar a cada datafile que se va a recuperar para levantar la base de datos auxiliar
  • UNTIL TIME : Fecha hasta la cual será recuperada la tabla
  • REMAP TABLE : Con esta claúsula se puede restaurar la tabla con otro nombre, pero siempre en el mismo esquema, cuando se usa esta claúsula no se restauran ni las constraints ni los índices que haya poseído la tabla
  • REMAP TABLESPACE : Con esta claúsula se puede recuperar la tabla en otro tablespace, este último tablespace debe estar generado
  • DATAPUMP DESTINATION : , si se omite está claúsula el archivo datapump generado quedará enla ruta "AUXILIARY DESTINATION" , si está última ruta no se ha generado, el archivo datapump será generado en $ORACLE_HOME/dbs
  • DUMP FILE : Este es el nombre de mi archivo export datapump, si se omite esta claúsula , Oracle le asigna un nombre propio
  • NOTABLEIMPORT : Con esta claúsula se le indica a Oracle que no importe la tabla, sólo que deje disponible en disco el archivo de expdp


    He aquí un ejemplo práctico de una recuperación de tablas en RMAN

    ** Nos conectamos con RMAN
    C:\Users\Inmetrics-Hector>rman

    Recovery Manager: Release 12.1.0.1.0 - Production on Sßb Jul 13 00:28:57 2013

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

    ** Acá nos conectamos a la base de datos target con el rol SYSBACKUP
    RMAN> connect target "rmanuser/rmanuser@prod12c as sysbackup";

    connected to target database: PROD (DBID=232315537)

    ** Ejecutamos la recuperación de la tabla
    RECOVER TABLE prod1.objetos1
    UNTIL TIME "to_date('13-07-2013 00:40:00','dd-mm-yyyy hh24:mi:ss')"
    AUXILIARY DESTINATION 'c:\'
    DATAPUMP DESTINATION 'c:\'
    DUMP FILE 'prod1_objetos1_exp_dump.dat'
    ;

    Starting recover at 13/07/13
    using channel ORA_DISK_1
    RMAN-05026: WARNING: presuming following set of tablespaces applies to specified Point-in-Time

    List of tablespaces expected to have UNDO segments
    Tablespace SYSTEM
    Tablespace UNDOTBS1

    ** Se levanta la instancia de forma automática con un SID creado por Oracle
    Creating automatic instance, with SID='hkbC'

    ** Inicialización de la instancia , se muestran los parámetros
    initialization parameters used for automatic instance:
    db_name=PROD
    db_unique_name=hkbC_pitr_PROD
    compatible=12.1.0.0.0
    db_block_size=8192
    db_files=200
    sga_target=1G
    processes=80
    diagnostic_dest=C:\APP\INMETRICS-HECTOR
    db_create_file_dest=c:\
    log_archive_dest_1='location=c:\'
    #No auxiliary parameter file used

    ** Se levanta la instancia
    starting up automatic instance PROD

    Oracle instance started

    Total System Global Area 1068937216 bytes

    Fixed Size 2410864 bytes
    Variable Size 281020048 bytes
    Database Buffers 780140544 bytes
    Redo Buffers 5365760 bytes
    Automatic instance created

    contents of Memory Script:
    {
    # set requested point in time
    set until time "to_date('13-07-2013 00:40:00','dd-mm-yyyy hh24:mi:ss')";
    # restore the controlfile
    restore clone controlfile;
    # mount the controlfile
    sql clone 'alter database mount clone database';
    # archive current online log
    sql 'alter system archive log current';
    }
    executing Memory Script

    executing command: SET until clause

    ** Comienza la restauración
    Starting restore at 13/07/13
    allocated channel: ORA_AUX_DISK_1
    channel ORA_AUX_DISK_1: SID=11 device type=DISK

    channel ORA_AUX_DISK_1: starting datafile backup set restore
    channel ORA_AUX_DISK_1: restoring control file
    channel ORA_AUX_DISK_1: reading from backup piece C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\BACKUPSET\2013_07_13\O1_MF_NCSNF_TAG201307
    13T003700_8Y1PHZ61_.BKP
    channel ORA_AUX_DISK_1: piece handle=C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\BACKUPSET\2013_07_13\O1_MF_NCSNF_TAG20130713T003700_8Y1
    PHZ61_.BKP tag=TAG20130713T003700
    channel ORA_AUX_DISK_1: restored backup piece 1
    channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
    output file name=C:\PROD\CONTROLFILE\O1_MF_8Y1VL6PM_.CTL
    Finished restore at 13/07/13

    sql statement: alter database mount clone database

    sql statement: alter system archive log current

    ** Se redireccionan los nuevos datafiles a la ruta especificada en el parámetro AUXILIARY DESTINATION
    contents of Memory Script:
    {
    # set requested point in time
    set until time "to_date('13-07-2013 00:40:00','dd-mm-yyyy hh24:mi:ss')";
    # set destinations for recovery set and auxiliary set datafiles
    set newname for clone datafile 1 to new;
    set newname for clone datafile 5 to new;
    set newname for clone datafile 3 to new;
    set newname for clone tempfile 1 to new;
    # switch all tempfiles
    switch clone tempfile all;
    # restore the tablespaces in the recovery set and the auxiliary set
    restore clone datafile 1, 5, 3;
    switch clone datafile all;
    }
    executing Memory Script

    executing command: SET until clause

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    renamed tempfile 1 to C:\PROD\DATAFILE\O1_MF_TEMP_%U_.TMP in control file

    Starting restore at 13/07/13
    using channel ORA_AUX_DISK_1

    channel ORA_AUX_DISK_1: starting datafile backup set restore
    channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
    channel ORA_AUX_DISK_1: restoring datafile 00001 to C:\PROD\DATAFILE\O1_MF_SYSTEM_%U_.DBF
    channel ORA_AUX_DISK_1: restoring datafile 00005 to C:\PROD\DATAFILE\O1_MF_UNDOTBS1_%U_.DBF
    channel ORA_AUX_DISK_1: restoring datafile 00003 to C:\PROD\DATAFILE\O1_MF_SYSAUX_%U_.DBF
    channel ORA_AUX_DISK_1: reading from backup piece C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\BACKUPSET\2013_07_13\O1_MF_NNNDF_TAG201307
    13T003700_8Y1PCFB4_.BKP
    channel ORA_AUX_DISK_1: piece handle=C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\BACKUPSET\2013_07_13\O1_MF_NNNDF_TAG20130713T003700_8Y1
    PCFB4_.BKP tag=TAG20130713T003700
    channel ORA_AUX_DISK_1: restored backup piece 1
    channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:02:35
    Finished restore at 13/07/13

    datafile 1 switched to datafile copy
    input datafile copy RECID=4 STAMP=820634924 file name=C:\PROD\DATAFILE\O1_MF_SYSTEM_8Y1VLK6X_.DBF
    datafile 5 switched to datafile copy
    input datafile copy RECID=5 STAMP=820634924 file name=C:\PROD\DATAFILE\O1_MF_UNDOTBS1_8Y1VLK9F_.DBF
    datafile 3 switched to datafile copy
    input datafile copy RECID=6 STAMP=820634924 file name=C:\PROD\DATAFILE\O1_MF_SYSAUX_8Y1VLK86_.DBF

    contents of Memory Script:
    {
    # set requested point in time
    set until time "to_date('13-07-2013 00:40:00','dd-mm-yyyy hh24:mi:ss')";
    # online the datafiles restored or switched
    sql clone "alter database datafile 1 online";
    sql clone "alter database datafile 5 online";
    sql clone "alter database datafile 3 online";
    # recover and open database read only
    recover clone database tablespace "SYSTEM", "UNDOTBS1", "SYSAUX";
    sql clone 'alter database open read only';
    }
    executing Memory Script

    executing command: SET until clause

    sql statement: alter database datafile 1 online

    sql statement: alter database datafile 5 online

    sql statement: alter database datafile 3 online

    Starting recover at 13/07/13
    using channel ORA_AUX_DISK_1

    starting media recovery

    archived log for thread 1 with sequence 18 is already on disk as file C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\ARCHIVELOG\2013_07_13\
    O1_MF_1_18_8Y1PJ2G8_.ARC
    archived log for thread 1 with sequence 19 is already on disk as file C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\ARCHIVELOG\2013_07_13\
    O1_MF_1_19_8Y1TDNO6_.ARC
    archived log file name=C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\ARCHIVELOG\2013_07_13\O1_MF_1_18_8Y1PJ2G8_.ARC thread=1 sequence=18
    archived log file name=C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\ARCHIVELOG\2013_07_13\O1_MF_1_19_8Y1TDNO6_.ARC thread=1 sequence=19
    media recovery complete, elapsed time: 00:00:02
    Finished recover at 13/07/13

    sql statement: alter database open read only

    contents of Memory Script:
    {
    sql clone "create spfile from memory";
    shutdown clone immediate;
    startup clone nomount;
    sql clone "alter system set control_files =
    ''C:\PROD\CONTROLFILE\O1_MF_8Y1VL6PM_.CTL'' comment=
    ''RMAN set'' scope=spfile";
    shutdown clone immediate;
    startup clone nomount;
    # mount database
    sql clone 'alter database mount clone database';
    }
    executing Memory Script

    sql statement: create spfile from memory

    database closed
    database dismounted
    Oracle instance shut down

    connected to auxiliary database (not started)
    Oracle instance started

    Total System Global Area 1068937216 bytes

    Fixed Size 2410864 bytes
    Variable Size 285214352 bytes
    Database Buffers 775946240 bytes
    Redo Buffers 5365760 bytes

    sql statement: alter system set control_files = ''C:\PROD\CONTROLFILE\O1_MF_8Y1VL6PM_.CTL'' comment= ''RMAN set'' scope=spfile

    Oracle instance shut down

    connected to auxiliary database (not started)
    Oracle instance started

    Total System Global Area 1068937216 bytes

    Fixed Size 2410864 bytes
    Variable Size 285214352 bytes
    Database Buffers 775946240 bytes
    Redo Buffers 5365760 bytes

    sql statement: alter database mount clone database

    contents of Memory Script:
    {
    # set requested point in time
    set until time "to_date('13-07-2013 00:40:00','dd-mm-yyyy hh24:mi:ss')";
    # set destinations for recovery set and auxiliary set datafiles
    set newname for datafile 6 to new;
    # restore the tablespaces in the recovery set and the auxiliary set
    restore clone datafile 6;
    switch clone datafile all;
    }
    executing Memory Script

    executing command: SET until clause

    executing command: SET NEWNAME

    Starting restore at 13/07/13
    allocated channel: ORA_AUX_DISK_1
    channel ORA_AUX_DISK_1: SID=11 device type=DISK

    channel ORA_AUX_DISK_1: starting datafile backup set restore
    channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
    channel ORA_AUX_DISK_1: restoring datafile 00006 to C:\HKBC_PITR_PROD\DATAFILE\O1_MF_USERS_%U_.DBF
    channel ORA_AUX_DISK_1: reading from backup piece C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\BACKUPSET\2013_07_13\O1_MF_NNNDF_TAG201307
    13T003700_8Y1PCFB4_.BKP
    channel ORA_AUX_DISK_1: piece handle=C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\BACKUPSET\2013_07_13\O1_MF_NNNDF_TAG20130713T003700_8Y1
    PCFB4_.BKP tag=TAG20130713T003700
    channel ORA_AUX_DISK_1: restored backup piece 1
    channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:07
    Finished restore at 13/07/13

    datafile 6 switched to datafile copy
    input datafile copy RECID=8 STAMP=820635020 file name=C:\HKBC_PITR_PROD\DATAFILE\O1_MF_USERS_8Y1VT5JJ_.DBF

    contents of Memory Script:
    {
    # set requested point in time
    set until time "to_date('13-07-2013 00:40:00','dd-mm-yyyy hh24:mi:ss')";
    # online the datafiles restored or switched
    sql clone "alter database datafile 6 online";
    # recover and open resetlogs
    recover clone database tablespace "USERS", "SYSTEM", "UNDOTBS1", "SYSAUX" delete archivelog;
    alter clone database open resetlogs;
    }
    executing Memory Script

    executing command: SET until clause

    sql statement: alter database datafile 6 online

    Starting recover at 13/07/13
    using channel ORA_AUX_DISK_1

    starting media recovery

    archived log for thread 1 with sequence 18 is already on disk as file C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\ARCHIVELOG\2013_07_13\
    O1_MF_1_18_8Y1PJ2G8_.ARC
    archived log for thread 1 with sequence 19 is already on disk as file C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\ARCHIVELOG\2013_07_13\
    O1_MF_1_19_8Y1TDNO6_.ARC
    archived log file name=C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\ARCHIVELOG\2013_07_13\O1_MF_1_18_8Y1PJ2G8_.ARC thread=1 sequence=18
    archived log file name=C:\APP\INMETRICS-HECTOR\FAST_RECOVERY_AREA\PROD\ARCHIVELOG\2013_07_13\O1_MF_1_19_8Y1TDNO6_.ARC thread=1 sequence=19
    media recovery complete, elapsed time: 00:00:01
    Finished recover at 13/07/13

    database opened

    ** Una vez restaurada y abierta la base de datos se comienza con la generación del export datapump de las tablas que vamos a restaurar
    contents of Memory Script:

    ** Se crea el directorio donde irá el respaldo efectuado con export datapump, esto es dado por el DATAPUMP DESTINATION
    {
    # create directory for datapump import
    sql "create or replace directory TSPITR_DIROBJ_DPDIR as ''
    c:\''";
    # create directory for datapump export
    sql clone "create or replace directory TSPITR_DIROBJ_DPDIR as ''
    c:\''";
    }
    executing Memory Script

    sql statement: create or replace directory TSPITR_DIROBJ_DPDIR as ''c:\''

    sql statement: create or replace directory TSPITR_DIROBJ_DPDIR as ''c:\''

    ** Se lleva a cabo el export datapump desde las tablas que están en la base de datos auxiliar
    Performing export of tables...
    EXPDP> Iniciando "SYS"."TSPITR_EXP_hkbC_jcnA":
    EXPDP> Estimaci¾n en curso mediante el mÚtodo BLOCKS...
    EXPDP> Procesando el tipo de objeto TABLE_EXPORT/TABLE/TABLE_DATA
    EXPDP> Estimaci¾n total mediante el mÚtodo BLOCKS: 13 MB
    EXPDP> Procesando el tipo de objeto TABLE_EXPORT/TABLE/TABLE
    EXPDP> Procesando el tipo de objeto TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
    EXPDP> Procesando el tipo de objeto TABLE_EXPORT/TABLE/STATISTICS/MARKER
    EXPDP> . . "PROD1"."OBJETOS1" 10.35 MB 90785 filas exportadas
    EXPDP> La tabla maestra "SYS"."TSPITR_EXP_hkbC_jcnA" se ha cargado/descargado correctamente
    EXPDP> ******************************************************************************
    EXPDP> El juego de archivos de volcado para SYS.TSPITR_EXP_hkbC_jcnA es:
    EXPDP> C:\PROD1_OBJETOS1_EXP_DUMP.DAT
    EXPDP> El trabajo "SYS"."TSPITR_EXP_hkbC_jcnA" ha terminado correctamente en Sßb Jul 13 02:12:52 2013 elapsed 0 00:00:44
    Export completed

    contents of Memory Script:
    {
    # shutdown clone before import
    shutdown clone abort
    }
    executing Memory Script

    Oracle instance shut down

    ** Acá se lleva a cabo el import de las tablas
    Performing import of tables...
    IMPDP> La tabla maestra "SYSBACKUP"."TSPITR_IMP_hkbC_Eykg" se ha cargado/descargado correctamente
    IMPDP> Iniciando "SYSBACKUP"."TSPITR_IMP_hkbC_Eykg":
    IMPDP> Procesando el tipo de objeto TABLE_EXPORT/TABLE/TABLE
    IMPDP> Procesando el tipo de objeto TABLE_EXPORT/TABLE/TABLE_DATA
    IMPDP> . . "PROD1"."OBJETOS1" 10.35 MB 90785 filas importadas
    IMPDP> Procesando el tipo de objeto TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
    IMPDP> Procesando el tipo de objeto TABLE_EXPORT/TABLE/STATISTICS/MARKER
    IMPDP> El trabajo "SYSBACKUP"."TSPITR_IMP_hkbC_Eykg" ha terminado correctamente en Sßb Jul 13 02:13:49 2013 elapsed 0 00:00:31
    Import completed

    ** Una vez que termina la restauración, se eliminan todos los datafiles temporales generados, más los respaldos de datapump
    Removing automatic instance
    Automatic instance removed
    auxiliary instance file C:\PROD\DATAFILE\O1_MF_TEMP_8Y1VQS7J_.TMP deleted
    auxiliary instance file C:\HKBC_PITR_PROD\ONLINELOG\O1_MF_3_8Y1VTP20_.LOG deleted
    auxiliary instance file C:\HKBC_PITR_PROD\ONLINELOG\O1_MF_2_8Y1VTNKX_.LOG deleted
    auxiliary instance file C:\HKBC_PITR_PROD\ONLINELOG\O1_MF_1_8Y1VTLNT_.LOG deleted
    auxiliary instance file C:\HKBC_PITR_PROD\DATAFILE\O1_MF_USERS_8Y1VT5JJ_.DBF deleted
    auxiliary instance file C:\PROD\DATAFILE\O1_MF_SYSAUX_8Y1VLK86_.DBF deleted
    auxiliary instance file C:\PROD\DATAFILE\O1_MF_UNDOTBS1_8Y1VLK9F_.DBF deleted
    auxiliary instance file C:\PROD\DATAFILE\O1_MF_SYSTEM_8Y1VLK6X_.DBF deleted
    auxiliary instance file C:\PROD\CONTROLFILE\O1_MF_8Y1VL6PM_.CTL deleted
    auxiliary instance file prod1_objetos1_exp_dump.dat deleted
    Finished recover at 13/07/13


    Espero les sirva...

  • by Ligarius
    14.07.13. 21:29:26. 3161 words, 3614 views. Categories: Oracle 12c, RMAN (Recovery Manager) ,

    1 2 >>