ORACLE 10G Recuperación de instancias CON RMAN

13
Isabel Terrero Gómez Recuperación de instancias con RMAN Recuperación de instancias dañadas usando RMAN Isabel Terrero Gómez SGBD 1

Transcript of ORACLE 10G Recuperación de instancias CON RMAN

Page 1: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

Recuperación de instancias dañadas usando RMAN

Isabel Terrero Gómez

SGBD 1

Page 2: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

Herramientas de recuperación :

­Ficheros redo­logs: ● Ficheros de cambio de almacenamiento en la BD (Recovery).● Se almacenan los cambios realizados y no realizados, actualiza la bd a partir 

del fallo:○ Online   redo   log:  proceso  LGWR,  cada   registro   contiene  el  valor 

antiguo y el nuevo.○ Archived redo log: almacenaje de archive de redo log antes de su 

reutilización(modo arcrivelog).

­Ficheros de control: ● Almacena el estado de la estructura física de la BD.● Contiene:

○ Nombre de la BD○ Localización de los ficheros de datos y redo log○ Nombre de los Tablespaces○ Número de secuencia de log actual○ Log histórico○ Información de las copias de seguridad (backup)

● Es necesario para montar, abrir y mantener la BD● Guían la recuperación. Sin este fichero la BD no podrá ser montada y la

recuperación sería dificultosa.● Se recomienda como mínimo dos ficheros de control en discos diferentes.

­Rollback segments: ● Almacenan las últimas sentencias realizadas sobre la BD.● Almacena las transacciones que no se han validado.● Problemas con segmentos de Rollback.

­Backups de la BD: ● Copias de Seguridad de los datos. Copias de la información de la BD

necesaria para reconstruir la BD a partir de un estado no utilizable de lamisma.

     Del SO     Físicos:      En Frío

● Clasificación. Tipos de      En CalienteBackups

      Lógicos: Import/Export

● La copia de seguridad puede convertirse en la única oportunidad contrafallo de del sistema.

SGBD 2

Page 3: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

­Copias de seguridad del backup:

● Backup Físicos: Copian físicamente los datos de la BD.○ Backup en frío: Hay que parar las BD en modo normal y copiar 

losficheros sobre los que se asienta. Una vez realizada la copia se puede volver a arrancar.

○ Backup en caliente: Se hace la copia mientras la BD está abierta yfuncionando en modo ARCHIVELOG. Consiste en copiar todos los ficheros correspondientes a un tablespace determinado, para todos los tablespace de la BD.

○ Backup del SO: Consume mucho tiempo y se hace inaccesible alsistema mientras se lleva a cabo. Aprovecha el backup del SO para hacer el de la BD.

● Los backups lógicos se hacen con la herramienta export que copia los datos y la definición de la BD en un fichero en un formato Oracle. Copian el contenido de la BD pero sin almacenar de los datos.

○  Esta utilidad permiten al administrador de la base de copias de determinados objetos de la BD, así como restaurarlos moverlos de una BD a otra.

● Desde archivos de comandos y OEM/utilidades:○  Export (EXP)○  Data Pump Export (EXPDP). (nuevo de Oracle10g)

­ Catálogo de RMAN y las vistas dinámicas de la base de datos.

El catálogo de  RMAN  es donde se almacena este repositorio y aunque existe la posibilidad de almacenar parte de esta información en el control file de la base de datos de la cual se obtienen los backups   (target   database),   esta   opción   se   recomienda   únicamente   para   bases   de   datos   muy pequeñas. De igual forma al utilizar al control file para almacenar el repositorio de RMAN ciertas opciones   estan   restringidas,   como  por   ejemplo   el   almacenamiento  de   scripts   para   automatizar procesos de backups. Las vistas dinámicas registran el flujo de la actividad de la bd.

Activar archive log :1.­Modificamos el init.oralog_archive_start=truelog_archive_dest_1=“location=/database/archivelog/bbdd REOPEN=5″log_archive_format = arch_%t_%s.arc 

SGBD 3

Page 4: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

2.­Si la bd esta arrancada la paramos: (sql plus)shutdown immediate ;

3.­Montamos la bd:(sql plus)startup mount;

4.­Despues ejecutamos lo siguiente:alter database archivelog;

5.­Despues abrimos la bd y activamos el archivado automaticoalter database open;

alter system archive log start;

SGBD 4

Page 5: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

ya debe estar activado el modo archivelog, lo puedes comprobar en el enterprise manager:

Si por algun caso concreto debemos desactivar el modo archivelog seria de la siguiente forma :­ Nos conectamos a la base de datos y la paramos, despues de pararla la montamos

shutdown immediate

startup mount

­ Desactivamos el modo archivelog

alter database noarchivelog

­ Abrimos la base de datos

alter database open

­ Desactivamos el archivado automático

alter system archive log stop;

SGBD 5

Page 6: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

Copias de seguridad con rman:

1.­ Nos conectamos a rman mediante la ventana de comandos de windows poniendo el comando rman y nos conectamos como connect target nombre_usuario/contraseña@Nombre_Base_Datos 

2.­Vamos a realizar una copia de seguridad mediante un script:A continuación ejecutaremos el siguiente script, tal y como os explicamos:

run {

allocate channel C1 device type DISK format 'c:/temp/csbd_%d_%u_%t.bak';

backup database include current controlfile plus archivelog delete all input;

}

• "C:/temp" será la carpeta de destino de la copia (debe existir previamente).

• %d: le indicamos con este parámetro que nos incluya en el nombre del fichero el nombre de la base de datos.

• %u: le indicamos que incluya el identificador de la base de datos.

• %t: le indicamos que incluya la fecha y hora de creación del fichero.

SGBD 6

Page 7: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

Con ese script tan sencillo iniciaremos una copia de seguridad en el sitio indicado anteriormente, una vez haya finalizado comprobamos que realmente ha creado la copia de seguridad:

Cómo recuperar un fichero corrupto/dañado/eliminado de un tablespace de Oracle:1.­ Vamos a comprobar los tablespaces y el estado en el que se encuentran.Lo ejecutaremos mediante la interfaz de comandos de windows:

­sqlplus /nolog

2.­ Nos conectamos a Oracle utilizando el usuario del sistema operativo :

­connect /as sysdba

Tambien tenemos la opcion de conectarnos con un usuario concreto a una base de datos concreta :

­connect usuario/contraseña@base_datos as sysdba

SGBD 7

Page 8: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

3.­ Para mostrar los tablespaces y el estado ejecutamos la siguiente sentecia:

­select tablespace_name, status from dba_tablespaces;

Con ese comando obtenemos lo siguiente:

Para mostrar los ficheros de los tablespaces, la ubicación y el estado dejecutaremos la sentencia SQL:

­ select file#, status, enabled, name from v$datafile;

SGBD 8

Page 9: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

4.­ A continuación voy a parar la BD para comenzar a simular una pérdida de un tablespace users01.dbf 

­ shutdown immediate;

5.­ Después elimino el tablespace  manualmente

6.­ Si intentamos inciar la base de datos ahora con el comando:

­ startup;

Nos aparecerá el siguiente mensaje de error:

SGBD 9

Page 10: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

Indica que falta un fichero de datos y que la base de datos no se ha podido abrir. Para comprobar el estado de la base de datos ejecutaremos:

­ select status from v$instance;

Nos devolverá:

STATUS­­­­­­­­­­­­MOUNTED

 Ahora procederemos a recuperar el tablespace borrado  mediante RMAN. Para ello abriremos una ventana de comandos de windows y ejecutamos los siguientes comandos:

­ RMAN

Nos conectaremos a la base de datos :

Para mostrar las copias de seguridad actuales ejecutamos el comando:

SGBD 10

Page 11: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

­ list backup;

En la imagen observamos  que el tablespace que hemos borrado se encuentra en el archivo de control 4 de catálogo de recuperación, entonces ejecutamos el siguiente comando:

­ recover datafile 4;

El resultado de este comando será:

Iniciando recover en 14/02/10usando el canal ORA_DISK_1iniciando la recuperación del medio físicorecuperación del medio físico terminada, tiempo transcurrido: 00:00:01recover terminado en 14/02/10

Por último abriremos la base de datos con el comando:

­ alter database open;

SGBD 11

Page 12: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

Recuperar el fichero init.ora:Buscamos una copia del init.ora que tengamos, si no la tenemos podemos crearlo de la siguiente manera:

1.-Nos conectamos al SQLPLUS desde la ventana de comandos de windows:

C:\> sqlplus /nologSQL> conn sys/sys as sysdbaSQL> startup nomount;

SQL> create pfile='c:\init.ora' from spfile;

2.-La desconectamos y la volvemos a levantar y ya tenemos el fichero init.ora.

Cambiar de ubicación los ficheros de controlAntes de empezar, para cambiar el nombre o cambiar de ubicación a los redo logs, debemos tener el privilegio ALTER DATABASE. Además, necesitamos privilegios del sistema operativo para copiar los archivos a la ubicación deseada y privilegios para abrir y respaldar la base de datos.

1.­ Desconectamos la base de datos:

­shutdown 

2.­ Copiar los redo redo log files a la nueva localización manualmente.

3.­ Levantamos la BD:

­ startup mount;

4.­ Utilizando la sentencia ALTER DATABASE con la cláusula RENAME FILE renombramos los 

SGBD 12

Page 13: ORACLE 10G Recuperación de instancias CON RMAN

Isabel Terrero Gómez Recuperación de instancias con RMAN

redo logs:

­ALTER DATABASERENAME FILE ‘/origen/log1a.rdo’, ‘/origen/log2a.rdo’TO ‘/destino/log1c.rdo’, ‘/destino/log2c.rdo’;

5.­ Por último abrimos la base de datos  y ya esta finalizado el proceso de reubicación del redolog:

ALTER DATABASE OPEN; 

SGBD 13