Archivar paraAbril, 2008

Rman en Oracle

Anteriormente explique como activar el modo archivelog para poder realizar las copias de nuestra base de datos en caliente mediante RMAN, pues ahora iremos paso por paso para explicar como realizar estas copias.

Para comenza con RMAN abriremos una consola de ms-dos en nuestro equipo: Inicio –> Ejecutar y escribimos cmd y aceptamos.

Para comenzar escribiremos

  • rman

A continuación debemos de conectarnos a la base de datos a la cual queremos realizar nuestra copia de seguirdad

  • connect target nombre_usuario/contraseña@nombre_base_datos;

Este comando nos devolverá lo siguiente

  • conectado a la base de datos destino: XE (DBID=2475292301)

Pues realizados estos pasos, pulsamos intro para dejar una línea en blanco y comenzar a introducir comandos para realizar nuestra copia de seguridad en caliente

Comenzamos

run {

Introduciremos la siguiente línea y pulsaremos INTRO:

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

donde

  • “C:/temp” será la carpeta de destino de la copia (debe existir previamente).
  • %d: le indicamos con este parámetro que nos incluya 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.

Introduciremos la siguiente línea y volvemos a darle al INTRO:

backup database include current controlfile plus archivelog delete all input;

Introduciremos la siguiente línea y pulsaremos INTRO, tras realizar este ultimo INTRO nuestra copia de seguiridad se iniciará:

}

El script en nuestra pantalla de comandos quedará así:

run {
2> allocate channel C1 device type DISK format ‘c:/temp/csbd_%d_%u_%t.bak’;
3> backup database include current controlfile plus archivelog delete all input;

4> }

Al comenzar, Oracle nos devolverá el resultado de haber introducido este comando

Al finalizar nos aseguramos que la copia a sido correcta viendo si en la carpeta de destino a la que le hemos dicho que vayan nuestro ficheros aparecen estos allí.

Activar/Desactivar Archivelog de Oracle

El tener activado el Archivelog es el primer paso para poder realizar una copia en caliente de nuestra Base de Datos mediante Rman, a continuación explicaremos como activar/desactivar esta opción para tener otra opción más de realizar copias de seguridad de nuestra Base de Datos, aquí una pequeña explicación del modo archivelog.

El modo archivelog de una base de datos Oracle protege contra la pérdida de datos cuando se produce un fallo en el medio físico.

  1. Se puede realizar una copia de seguridad mientras la base de datos está levantada.
  2. Con este modo de base de datos se puede restaurar una copia de seguridad de los archivos dañados utilizando estos archivos para actualizar los archivos mientras nuestra base de datos está levantada.
  3. Se puede recuperar la base de datos en un número de cambio del sistema específico.
  4. Se puede restaurar la base de datos en un punto específico en el tiempo.
  5. Teniendo en cuenta estas características básicas del modo archivelog de base de datos ORACLE, vamos a exponer en este documento cómo se activa y cómo se desactiva.

Alguna de las consecuencias que tiene desactivarlo son las siguientes:

  1. Las copias de seguridad ya no se pueden hacer on-line (habría que aplicar otro tipo de copias de seguridad).
  2. No se podrá recuperar la base de datos en un tiempo concreto.

Lo primero que tenemos que saber si nuestra base de dato tiene activo o no el Archivelog, para verlo:

- Entramos en la consola de sqlplus e introducimos el siguiente comando  archive log list, lo que nos dirá si tenemos o no activado el archivelog y si el archivado automático está funcionando

ACTIVACIÓN DEL ARCHIVELOG

- Para activar el modo archivelog, el init.ora debe de estar arrancado con los siguientes parámetros.

log_archive_start = true
log_archive_dest_1 = “location=/database/archivelog/bbdd REOPEN=5″
log_archive_format = arch_%t_%s.arc

- Si la base de datos está funcionando y esos parámetros están en el init.ora, nos conectamos a la base de datos y la paramos con un

shutdown immediate

- A continuación montamos la base de datos:

startup mount

- Cuando montamos la base de datos ejecutamos el siguiente comando:

alter database archivelog

- Despues abrimos nuestra base de datos y activamos el archivado automático

alter database open

alter system archive log start

DESACTIVACIÓN DEL MODO ARCHIVELOG

Para desactivar el modo archivelog, realizamos los siguientes pasos:

- 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

Export e Import en Oracle

A continuación describiremos la forma de realizar un Export/Import en nuestro Oracle, probado en la versión 9i y a funcionado sin problemas ninguna, ante todo tendremos que saber que es esto de Export/Import

¿Que es un export/import en Oracle?

Export/Import es una utilidad de Oracle para realizar backups lógicos de Oracle ( y luego poderlos restaurar ). Esto significa que copian el contenido de la BD pero sin almacenar la posición física de los datos. Para realizar estas operaciones la base de datos tiene que estar abierta.

Para crear el fichero de backup se utiliza la utilidad export y para importar el contenido o recuperar la base de datos se realiza import.

Se realiza en los siguientes casos:

  1. Para realizar backups de bases de datos
  2. Para corregir “Row Migration & Row Chaining”
  3. Detectar alguna corrupción en la base de datos, puesto que al hacer el export se lee toda la bd.
  4. Para “migrar” una base de datos a otro servidor

EXPORT

Comenzemos a ver como se realizaria un export para nuestra base de datos.

- Podemos realizar una copia completa de la base de datos mediante la siguiente orden

$exp file=/oracle9/export_orasite.dmp full=yes log=/oracle9/log/export_orasite.log buffer=1000000

file=/oracle9/export_orasite.dmp > Nombre y ubicación del archivo del export ( el usuario oracle tiene que tener permisos para escribir ahi. La extensión de este archivo es dmp.

full=yes –> Con esto indicamos que el export es completo, todos los esquemas de la base de datos y sus datos permisos, privilegios ..

log=/oracle9/log/export_orasite.log –> fichero para tener el log del export, el usuario oracle también tiene que tener permisos en ese directorio para escribir.

buffer=1000000 –> reservamos buffer para la operación.

- Copiando las tablas especificas de un usuario

$exp scott/tiger file=orasitescott.dmp tables=(emp,dept) buffer=1000000

Realizando el export de las tablas que tiene el usuario scott

- Copiando tablas de un usuario con una condición especifica

$exp scott/tiger file=c:\orasitempleados.dmp tables=emp query=\”where deptno=10\”

Con query espeficificamos una condición para realizar el export de esa tabla

IMPORT

- Importar todo el archivo exportado

$imp system/manager file=c:\orasitefull.dmp full=yes ignore=yes log=c:\orasite\log\import_log.log buffer=1000000

Importamos con el usuario system que tiene permisos para importar el archivo orasitefull.dmp dejando un log de dicha importación en import_log.log reservando un buffer de 100000

- Importar una tabla de un usuario concreto

$imp scott/tiger file=orasitempleados.dmp fromuser=scott touser=scott tables=dept

Importamos del archivo orasitempleados.dmp sólo del usuario scott de ese archivo al esquema del usuario scott la tabla departamento

Existe la opcion de realizar import y export interactivo, esto es que en la consola introducimos el comando imp (para import) o exp (para export) y nos irá pidiendo parámetros para la acción a realizar, usuarios, tablas, permisos……