Mantain Recovery Catalogs

1. Documentación en Tahiti -> Masters Book List -> Backup and Recovery User’s Guide -> 13 Managing a Recovery Catalog

2. Una de las prioridades de un DBA consiste en NO perder datos. Por lo que los ejercicios que practicaremos en esta sección (Managing Database Availibility) son vitales para tener éxito en el examen de OCM. Os recuerdo que uno de los objetivos del examen es poder recuperar el entorno en todo momento. De hecho se específica literalmente que los participantes no recibirán puntuación alguna cuando sean incapaces de recuperar el entorno en alguno de los escenarios en los que se provocan fallos. No perdamos más tiempo y empecemos a prácticar.

3. En este objetivo nos piden saber cómo crear y mantener el Recovery Catalog. Este repositorio de metadatos se utiliza para centralizar la información contenida en el CONTROLFILE de todas nuestras bases de datos. De esta forma tenemos redudancia de la información de los Backups con un histórico mayor del que se guarda en el CONTROLFILE (parámetro CONTROL_FILE_RECORD_KEEP_TIME). Además, el catálogo de RMAN nos permite tener un histórico de la estructura de la BD en el tiempo y guardar scripts almacenados (STORED SCRIPTS).

Vamos a utilizar la BD de OEM para guardar el catálogo de recuperación de RMAN.

4. Lo primero de todo es comprobar que tenemos la BD de OCM perfectamente configurada para realizar todos los ejercicios posteriores.

-- Comprobamos que la BD está en modo ARCHIVELOG
ARCHIVE LOG LIST;

-- Comprobamos que tenemos activado el modo FLASHBACK
SELECT FLASHBACK_ON FROM V$DATABASE;
-- En caso de que no esté activado, revisamos la configuración de FRA y lo activamos
SHOW PARAMETER RECOVERY_FILE
ALTER DATABASE FLASHBACK ON;

-- Activamos la funcionalidad de BLOCK CHANGE TRACKING para los Backups Incrementales
-- Por defecto se crea en la ubicación especificada por el parámetro DB_CREATE_FILE_DEST
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u02/app/oracle/oradata/OCM/block_change_tracking.f' REUSE;
-- Comprobamos que se ha creado correctamente
SELECT * FROM V$BLOCK_CHANGE_TRACKING;

Añadimos la siguiente entrada al fichero TNSNAMES.ORA de OCM.

vi $ORACLE_HOME/network/admin/tnsnames.ora
# Añadimos la entrada de la BD de OEM
OEM =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oem.dbajunior.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = OEM)
    )
  )

5. Creamos el Recovery Catalog.

-- Creamos el TABLESPACE necesario para alojar el RECOVERY CATALOG
CREATE TABLESPACE RCAT DATAFILE '/u01/app/oracle/oradata/OEM/rcat.dbf'
SIZE 100M AUTOEXTEND ON NEXT 1M MAXSIZE 1G EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

-- Creamos el usuario propietario del Recovery Catalog con los permisos necesarios
CREATE USER rman IDENTIFIED BY rman DEFAULT TABLESPACE RCAT TEMPORARY TABLESPACE TEMP;
ALTER USER rman QUOTA UNLIMITED ON RCAT;
GRANT RECOVERY_CATALOG_OWNER TO rman;

Nos conectamos con RMAN al catálogo para crear el catálogo.

rman catalog rman/rman@oem

CREATE CATALOG;

6. Registramos la BD de OCM en el Recovery Catalog.

# Editamos el fichero TNSNAMES.ORA
vi $ORACLE_HOME/network/admin/tnsnames.ora

#Añadimos las siguientes entradas al fichero tnsnames.ora de la BD de OEM.
OCM=
(DESCRIPTION=
  (ADDRESS=(PROTOCOL=tcp)(HOST=ocm.dbajunior.com)(PORT=1521))
  (CONNECT_DATA=
     (SERVICE_NAME=OCM)))

# Registramos la BD en el catálogo.
rman target sys@ocm catalog rman/rman@oem

REGISTER DATABASE;

7. Al registrar la BD ya se ha realizado una resincronización implícita (RESYNC), pero lanzamos una manualmente para que veáis el procedimiento.

RESYNC CATALOG;

8. Podríamos realizar bastantes ejercicios con el Recovery Catalog, pero nos saldríamos de la intención principal de este objetivo, que es preparar el entorno para realizar Backups y Restore con RMAN. Aún así, dejo una lista abierta de posibles ejercicios a practicar.

· Catalogar Backups en el catálogo de recuperación
· Crear y Mantener un Virtual Private Catalog
· Scripts almacenados
· Eliminar BD del catálogo (UNREGISTER)
· Reseteo de la encarnación de una BD
· Upgrade del catálogo
· Importación de un catálogo en otro
· Borrado del catálogo

9. Sí me parece interesante mostrar como se catalogan backups realizados a disco. Esto es útil para aquellos backups, archivelogs, …; que hemos realizado y queremos catalogar.

Realizamos un backup de un datafile de ejemplo y probamos el comando CATALOG.

BACKUP DATAFILE '/u01/app/oracle/oradata/OCM/users01.dbf' FORMAT '/tmp/backup/test.bkp';
CATALOG BACKUPPIECE '/tmp/backup/test.bkp';

Si quisieramos catalogar varias piezas de un mismo directorio, podemos utilizar la siguiente instrucción.

CATALOG START WITH '/tmp/backup/';

Además. podemos indicar a RMAN que catalogue todos los objetos que haya en la Fast Recovery Area.

CATALOG RECOVERY AREA;

Borramos el backup que hemos realizado.

DELETE BACKUPPIECE '/tmp/backup/test.bkp';