Recuperación de instancias dañadas usando RMAN

Anuncio
Isabel Terrero Gómez
Recuperación de instancias con RMAN
Recuperación de instancias dañadas usando RMAN
Isabel Terrero Gómez
SGBD
1
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 la
misma.
Del SO
Físicos: En Frío
● Clasificación. Tipos de
En Caliente
Backups
Lógicos: Import/Export
●
SGBD
La copia de seguridad puede convertirse en la única oportunidad contra
fallo de del sistema.
2
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 y
funcionando 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 al
sistema 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.ora
log_archive_start=true
log_archive_dest_1=“location=/database/archivelog/bbdd REOPEN=5″
log_archive_format = arch_%t_%s.arc SGBD
3
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 automatico
alter database open;
alter system archive log start;
SGBD
4
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
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
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
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
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
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
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/10
usando el canal ORA_DISK_1
iniciando la recuperación del medio físico
recuperación del medio físico terminada, tiempo transcurrido: 00:00:01
recover terminado en 14/02/10
Por último abriremos la base de datos con el comando:
­ alter database open;
SGBD
11
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 /nolog
SQL> conn sys/sys as sysdba
SQL> 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 control
Antes 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
Isabel Terrero Gómez
Recuperación de instancias con RMAN
redo logs:
­ALTER DATABASE
RENAME 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
Descargar