Administracion II – Modulo 3
Objetivos
Crear, configurar y sincronizar un recovery catalog
Crear y usar scripts de RMAN almacenados
Backupear el recovery catalog
Crear un virtual private catalog
Alocar canales
Configurar seteos y optimización de backups
Repositorio del RMAN(metadata)
Almacenado “siempre” en el controlfile de la base target
Opcionalmente se puede configurar el recovery catalog
para que el RMAN replique la data del controlfile
(RMAN)
METADATA
Estructura física
Target database Archived redo logs Recovery catalog
control file Backups realizados database
Seteos de configuración
del RMAN
Razones para usar Recovery Catalog
RMAN utiliza una sección reciclable del controlfile(uso circular)
CONTROL_FILE_RECORD_KEEP_TIME determina la cant. de días de
permanencia de la data dentro del controlfile
Recovery Catalog almacena mayor cant. de información histórica ya
que la del controlfile se va sobreescribiendo
Almacenar scripts de RMAN Catalog
database
Centralizar la metadata de RMAN de múltiples targets
Backups con la cláusula KEEP FOREVER(nunca expiran)
Listar datafiles y tablespace actuales o que existieron en la target
DB en un tiempo dado(comando REPORT SCHEMA)
Creación del Recovery Catalog:
Tres pasos
Configurar base
Crear usuario
que almacenará Crear recovery
owner del
el recovery catalog
recovery catalog
catalog
Configurar Base para el Recovery
Catalog
Estimar espacio para el catálogo, considerar:
− N° de bases target monitoreas en el recovery catalog
− N° de archived redos logs y backups a registrar
− Uso de scripts de RMAN almacenados
− Requerimiento típico 15MB por base a registrar
Crear el tablespace para el catálogo, es default
tablespace del esquema owner
SQL> CREATE TABLESPACE rcat_ts DATAFILE SIZE 15M;
Crear usuario Owner del Recovery
Catalog
Crear el usuario owner de catálogo
Grantearle el role
RECOVERY_CATALOG_OWNER
SQL> CREATE USER rcowner IDENTIFIED BY rcpass
2 TEMPORARY TABLESPACE temp
3 DEFAULT TABLESPACE rcat_ts
4 QUOTA UNLIMITED ON rcat_ts;
SQL> GRANT recovery_catalog_owner TO rcowner;
Crear el Recovery Catalog
Conectarse con usuario owner a la base que
almacenará el catálogo:
$ rman
RMAN> CONNECT CATALOG rcowner/rcpass@rcat
Ejecutar el comando RMAN CREATE CATALOG:
RMAN> CREATE CATALOG;
Registrar Base Target en el Recovery
Catalog
Backup y recovery con RMAN utilizando catálogo requiere
registrar la base target
La registración se realiza con comando REGISTER:
Crea registros dentro de las tablas de catálogo
Copia data desde el controlfile de la base target hacia las
tablas del catálogo
Sincroniza el catálogo con el controlfile de la base target
$ ORACLE_SID=DB01; export ORACLE_SID
$ rman TARGET system/manager CATALOG rcowner/rcpass@rcat
RMAN> REGISTER DATABASE;
Registrar una Base Duplicada
Si se registra una base duplicada(clonada) en el mismo
catálogo se recibirá un error:
$ rman TARGET / CATALOG username/password@clone_service_name
RMAN> REGISTER DATABASE;
starting full resync of recovery catalog
full resync complete
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of register command on default channel at 08/13/2007
23:20:0 4
RMAN-20002: target database already registered in recovery catalog
No es posible tener 2 target con el mismo DBID registradas
en el mismo catálogo
SQL> select dbid from v$database;
DBID
----------
1157170067
Como cambiar el DBID de una base
Usar utility DBNEWID para cambiar el DBID:
TARGET es la conexión a la base a modificar
Opcionalmente es posible cambiar nombre de la base
especificando NEWNAME
Base debe estar en estado MOUNT
Luego del cambio levantar base con opción
RESETLOGS
$ nid TARGET=user/password@svc_name [DBNAME=new_dbname]
Desregistrar Base Target del
Recovery Catalog
Se realiza con el comando UNREGISTER
Automáticamente se elimina del catálogo la data
correspondiente a la base target
Realizar esta acción cuando ya no se desea tener
registrada la base target dentro del catálogo
$ ORACLE_SID=DB01; export ORACLE_SID
$ rman TARGET system/manager CATALOG rcowner/rcpass@rcat
RMAN> UNREGISTER DATABASE;
Catalogar información adicional en
Recovery Catalog
Comando CATALOG:
Permite agregar manualmente backup metadata dentro del
catálogo
Cuando utilizarlo:
Para agregar metadata de backups no existentes en
controlfile al momento de la registración de la target
Se realizan backups fuera del RMAN(OS backups)
Catalogar archived redo logs anteriores a la registración
Comando CATALOG:
Tipos de Backup Files a catalogar
Comando CATALOG permite agregar al catálogo los siguientes
tipos de backup files:
Control file copies
Data file copies
Backup pieces (RMAN)
Archived redo log files
Comando CATALOG: ejemplos
RMAN> CATALOG CONTROLFILECOPY
'/disk1/controlfile_bkup/2006_01_01/control01.ctl';
RMAN> CATALOG DATAFILECOPY
'/disk1/datafile_bkup/2006_01_01/users01.dbf';
RMAN> CATALOG ARCHIVELOG '/disk1/arch_logs/archive1_731.log',
'/disk1/arch_logs/archive1_732.log';
RMAN> CATALOG BACKUPPIECE '/disk1/backups/backup_820.bkp';
RMAN> CATALOG RECOVERY AREA NOPROMPT;
Resincronizar manualmente el
Recovery Catalog
Manualmente resincronizar el catálogo en las
siguiente situaciones:
Indisponibilidad del catálogo en el momento
de hacer backups(ej: problemas Target database
control file
de red, catálogo bajo, etc)
Luego de realizar cambios en la estructura
física de la base target
Cuando se ejecutan comandos BACKUP Recovery
catalog
el catálogo se resincroniza automáticamente
RMAN> RESYNC CATALOG;
Scripts RMAN almacenados dentro del
Catálogo
Almacenar scripts RMAN dentro del catálogo como
alternativa a tenerlos en el SO
Scripts centralizados y disponibles para todo cliente
RMAN que se conecte al catálogo
Tipos de scripts RMAN almacenados:
− Local: Creado para ser ejecutado en una base
target específica
− Global: Puede ser ejecutado contra cualquier base
registrada en el catálogo
Creación de Scripts RMAN almacenados
Creación de script local(conectado a una target):
CREATE SCRIPT script_name
{
<RMAN commands>
}
Creación de script global:
CREATE GLOBAL SCRIPT script_name
{
<RMAN commands>
}
Creación de scripts a partir de un archivo de texto:
CREATE SCRIPT script_name FROM FILE 'file_name';
Creación de Scripts RMAN almacenados:
ejemplos
Creación de script global:
RMAN> CREATE GLOBAL SCRIPT
2> global_backup_db { BACKUP DATABASE PLUS ARCHIVELOG; }
Creación de scripts a partir de un archivo de texto:
RMAN> CREATE GLOBAL SCRIPT global_backup_db from file
2> '/home/rjb/dbscripts/global_bak.rman';
Ejecución de Scripts RMAN almacenados
Ejecución de script local:
RUN { EXECUTE SCRIPT script_name; }
Ejecución de script global:
Ejemplo:
RUN { EXECUTE GLOBAL SCRIPT script_name; }
RUN { EXECUTE GLOBAL SCRIPT global_backup_db; }
Consultar los Scripts RMAN almacenados
Mostrar un script:
PRINT [GLOBAL] SCRIPT script_name;
Enviar script como salida a un archivo:
PRINT [GLOBAL] SCRIPT script_name
TO FILE 'file_name';
Mostrar nombres de scripts definidos:
LIST [GLOBAL] SCRIPT NAMES;
Ejemplo:
RMAN> print global script global_backup_db;
printing stored global script: global_backup_db
{ BACKUP DATABASE PLUS ARCHIVELOG; }
RMAN>
Actualizar y borrar Scripts RMAN
almacenados
Actualizar un script:
REPLACE [GLOBAL] SCRIPT script_name
{
<RMAN commands> ;
}
Actualizar un script desde un archivo:
REPLACE [GLOBAL] SCRIPT script_name
FROM FILE 'file_name';
Borrar un script:
DELETE SCRIPT script_name;
Backupear el Recovery Catalog
Como configurar el backup y recovery de una base de
catálogo:
Base de catálogo en modo ARCHIVELOG
Setear política de retención del tipo REDUNDANCY
Backup base con RMAN a disco o cinta
Usar comando BACKUP DATABASE PLUS ARCHIVELOG para
realizar backup
Usar como repositorio de RMAN el control file únicamente
(NOCATALOG)
Configurar control file autobackup ON
Recovery
Manager
(RMAN)
Recovery catalog
Exportar/Importar el Recovery
Catalog
Usar Export/Import o Data Pump para:
Mover el catálogo de una base a otra
Crear un backup lógico del catálogo
Borrado del Recovery Catalog
Usar comando DROP CATALOG para borrar
catálogo
RMAN> DROP CATALOG;
Catálogo RMAN Virtual Privado:
Conceptos
Catálogo Usuario
virtual Owner
privado 1 1
Base
recovery Usuario
catalog Catálogo
virtual Owner
privado 2 2
Como crear un catálogo de RMAN
Virtual Privado
1. Crear catálogo base:
RMAN> CONNECT CATALOG catowner/oracle@catdb;
RMAN> CREATE CATALOG;
2. Grantear rol RECOVERY_CATALOG_OWNER al VPC owner:
SQL> CONNECT SYS/oracle@catdb AS SYSDBA
SQL> GRANT RECOVERY_CATALOG_OWNER to vpcowner
3. Grantear REGISTER al VPC owner:
SQL> CONNECT CATALOG catowner/oracle@catdb;
SQL> GRANT REGISTER DATABASE TO vpcowner;
O, grantear CATALOG FOR DATABASE al VPC owner:
SQL> GRANT CATALOG FOR DATABASE prod1 TO vpcowner;
Como crear un catálogo de RMAN
Virtual Privado
4. Crear un catálogo virtual:
RMAN> CONNECT CATALOG vpcowner/oracle@catdb;
RMAN> CREATE VIRTUAL CATALOG;
5. Registrar una base en catálogo virtual que ya está
catalogada:
RMAN> CONNECT TARGET / CATALOG vpcowner/oracle@catdb;
RMAN> REGISTER DATABASE;
6. Usar el catálogo virtual:
RMAN> CONNECT TARGET / CATALOG vpcowner/oracle@catdb;
RMAN> BACKUP DATABASE;
Backups creados con RMAN: Formato
Output
Los archivos de salida generados por un backup RMAN
pueden tener 2 formatos distintos:
Image copy:
− Copia bit-a-bit de los archivos, similar a un cp de SO
− Se realiza con el comando BACKUP AS COPY
− Solo puede escribirse en disco
Backup set
− Formato exclusivo de RMAN
− Una colección de uno o mas archivos comprimidos
− Se realiza con el comando BACKUP AS BACKUPSET
Backups creados con RMAN: Images
Copies
RMAN> BACKUP AS COPY
2> DATAFILE '/ORADATA/users_01_db01.dbf'
3> FORMAT '/BACKUP/users01.dbf';
RMAN> BACKUP AS COPY
4> ARCHIVELOG LIKE '/arch%'
5> FORMAT 'arch_%U.bak';
Copy of datafile 3
Datafile 3 Datafile 3
Copy of archived log
Archived Archived
log file log file
Backups creados con RMAN: Backup
Set
RMAN> BACKUP AS BACKUPSET
2> FORMAT '/BACKUP/df_%d_%s_%p.bus'
3> TABLESPACE hr_data;
Datafile Datafile
1 1
Datafile Datafile
2 2
Datafile Datafile
3 3
Tablespace Backup
HR_DATA set
Tipos de BACKUP RMAN
Backup Full: copia todos los datafile Full, or "level 0
blocks que tienen datos incremental backup"
Backup Incremental: copia todos los
blocks modificados desde el último
backup incremental realizado
Cumulative
− Level 0: Es equivalente a un full incremental backup
backup, se toma como backup base
− Level 1:
Acumulativo :
Contiene solo los blocks
modificados desde el último level 0 Differential
incremental backup
Diferencial: contiene todos
los
blocks modificados desde el
último backup incremental
Incremental Backup: Ejemplo
Diferencial: contiene todos los bloques modificados
desde el último backup incremental
Acumulativo: contiene todos los bloques modificados
desde el último backup incremental level 0
Level 0 Level 0
Lvl 0 1 1 1c 1 1c 1 0
Day Sun Mon Tue Wed Thu Fri Sat Sun
32
Incremental Backup: Ejemplo
Realizar backup incremental level 0:
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
Realizar un backup incremental diferencial:
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
Realizar un backup incremental acumulativo:
RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE
DATABASE;
Configurar seteos persistentes para
RMAN
Usar comando CONFIGURE para setear configuraciones default
para el RMAN a nivel de la target:
Seteos se guardan en el controlfile target y en el catálogo
Configurar canales
Especificar la política de retención de backups
Especificar el nro de backup copies por tipo de archivo
Default backup type(salida): BACKUPSET o COPY
Limitar el tamaño de backup pieces
Excluir un tablespace del backup
Habilitar o deshabilitar optimización de backups
Configurar backups automáticos de controlfiles
Definir políticas de borrado de archivelog
Especificar paralelismo para un device
Setear encriptación y compresión de backups
Seteos de RMAN Persistentes
Usar comando SHOW para listar los seteos actuales
RMAN> show all;
RMAN configuration parameters for database with db_unique_name DW are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
# default
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO
COMPRESSED BACKUPSET PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BZIP2'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO
'/u01/app/oracle/product/11.1.0/db_1/dbs/snapcf_dw.f'; # default
RMAN>
Seteos de RMAN recomendados
Configurar backup de controlfile automático(se backupea
cada vez que se hace cualquier backup)
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
Habilitar optimización de backups, el comando BACKUP
ignora aquellos archivos que encuentra idénticos a los ya
backupeados
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
Configurar Devices para el Backup
Usar comando CONFIGURE DEVICE TYPE para configurar
el/los devices a utilizar por el RMAN durante el backup:
Ejemplos:
RMAN> CONFIGURE DEVICE TYPE <device> PARALLELISM <n>;
where <n> is the parallelism value.
RMAN> CONFIGURE DEVICE TYPE sbt PARALLELISM 3;
RMAN> CONFIGURE DEVICE TYPE disk BACKUP TYPE TO copy;
RMAN> CONFIGURE DEVICE TYPE disk BACKUP TYPE TO compressed backupset;
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO sbt;
Alocación de Canales para ejecutar
Backup y Recovery
Server Channel
RMAN
Session (DISK)
BACKUP
Target RESTORE
database RECOVER
Server Channel
Session (SBT)
Canales son procesos que utiliza el RMAN para comunicar la
base target con el device
Coordinan la lectura/escritura hacia el device destino (backup/recovery)
Todo backup o recovery requiere al menos 1 canal alocado
Alocación Automática y Manual de
Canales
Usar comando CONFIGURE para pre-configurar la
alocación de los canales automáticamente:
RMAN> CONFIGURE DEVICE TYPE sbt PARALLELISM 1;
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO sbt;
RMAN> CONFIGURE CHANNEL DEVICE TYPE sbt
parms='ENV=(<vendor specific arguments>)';
RMAN> BACKUP DATABASE;
Alocación Manual de canales dentro de un job(deja sin
efecto la preconfiguración de canales):
RMAN> RUN {
2> ALLOCATE CHANNEL c1 DEVICE TYPE disk;
3> BACKUP DATAFILE '/u01/oradata/user01.dbf';
4> }
Ejercicios
Crear un recovery catalog
Autoexamen