martes, 15 de marzo de 2011

Restaurar una base de datos usando RMAN y el control file

Pues el día de hoy se perdieron datos en la empresa, por lo cual fue necesario restaurar la base de datos a un punto anterior.

NOTA:Se contaba con respaldos generados por RMAN usando el control file.

1.-Primero se accede a la Base de datos y se verifican en donde estan los data_files, tan fácil como:

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
/u031/data/oracle/OPROD/users01.dbf
/u031/data/oracle/OPROD/undotbs01.dbf
/u031/data/oracle/OPROD/sysaux01.dbf
/u031/data/oracle/OPROD/system01.dbf
/u030/data/oracle/OPROD/data01.dbf
/u030/data/oracle/OPROD/data02.dbf
/u030/data/oracle/OPROD/indexes01.dbf
/u030/data/oracle/OPROD/indexes02.dbf
/u031/data/oracle/OPROD/rman_ts.dbf


En este caso se tenian los data files en diferentes directorios,regularmente es uno mismo.

Lo recomendable es mover las data files a otro directorio antes de restaurar la base de datos por si las moscas de que no salga bien.

Si se va a mover de directorio o renombrar se debe de verificar el espacio disponible y el tamaño de la base de datos

SQL> select sum(bytes)/1024/1024/1024 from dba_data_files;

SUM(BYTES)/1024/1024/1024
-------------------------
3.76098633

oracle@schnitzler:~$ df -h
/dev/sdb6 74G 2.1G 68G 3% /u030
/dev/sda7 73G 8.3G 61G 12% /u031

Vemos que si hay suficiente espacio, asi que seguimos XD

Como comentamos antes, necesitamos mover los data files a otro directorio :

Primero damos de baja la base de datos
SQL> shutdown immediate;

ahora renombramos los directorios con mv

mv /u031/data/oracle/OPROD /u031/data/oracle/OPROD_bk
mv /u030/data/oracle/OPROD /u030/data/oracle/OPROD_bk

y creamos los directorios para que no tengas problemas

mkdir /u031/data/oracle/OPROD
mkdir /u030/data/oracle/OPROD

NOTA:estos estarán vacios

Listo, ahora nos conectamos a RMAN y restauramos usando el control file

rman target / nocatalog
RMAN> startup nomount;

RMAN> restore controlfile from '/u050/respaldos_rman/backups/03_10_2011/OPROD.ctl';

Bien, en este momento se creo en control file, apartir de el crearemos la base de datos

RMAN> alter database mount;
RMAN> restore database;

Aqui se tardará un ratin dependiendo del tamaño de la base de datos, una vez terminado continuamos:

RMAN> recover database until sequence 380;
RMAN> alter database open resetlogs;
Y listo!!!! si se verifican los directorios ahi se verán los data_files XD

Bien ahora damos de baja la base de datos desde RMAN:

RMAN> shutdown immediate;

Ahora nos conectamos a Oracle y lo iniciamos podrán ver que todo esta super mega bien.

Por último no olviden reiniciar el listener!

1 comentario: