Técnicas para extraer nuestros backups del ASM
- Opción 1: Desde la versión de manejador de base de datos 11g Release1 tenemos disponible el comando cp perteneciente al utilitario asmcmd. Esta opción fue presentada y desarrollada en el articulo: "Protegiendo backups de RMAN contra fallos de la SAN (Parte I)"
- Opción 2: Desde versiones anteriores al manejador de base de datos 11g, tenemos las opciones de: Backup Backupset perteneciente al conjunto de comandos y opciones de RMAN. Esta opción fue presentada y desarrollada en el articulo: "Protegiendo backups de RMAN contra fallos de la SAN (Parte II)"
- Opción 3: Desde la versión de base de datos 10g tenemos la existencia del paquete DBMS_TRANSFER. Esta será la técnica utilizada para el presente artículo.
DBMS_FILE_TRANSFER
The DBMS_FILE_TRANSFER package provides procedures to copy a binary file within a database or to transfer a binary file between databases.Oracle® Database PL/SQL Packages and Types Reference
11g Release 2 (11.2)
http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_ftran.htm
Vamos a realizarlo:
Base de Datos: DB
Diskgroup (DATA): +DATA
Diskgroup (FRA): +FRA
Paso1: Tomar backup full con RMAN estableciendo una etiqueta que nos pueda ayudar a identificar unívocamente las piezas pertenecientes a este:
rman_backup_full.sh export ORACLE_SID=MYDB export V_DATE=`date +%d%m%Y_%H%M` export V_LOGFILE=En el caso presente estamos tomando un backup full de la BBDD y el elemento que nos ayudara a identificar de forma univoca el mismo será el TAG aplicado en la sentencia de backup full./BKFULL_MYDB_RMAN_$V_DATE.log rman target / @ /run.rcv log=$V_LOGFILE run.rcv run { backup database tag='FULL_WEEKLY'; } exit
Una vez tomado el backup, visualizamos la piezas generadas del mismo:
RMAN> List Backup;
using target database control file instead of recovery catalog
List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 5 Full 1019.86M DISK 00:01:15 10-NOV-11 BP Key: 5 Status: AVAILABLE Compressed: NO Tag: FULL_WEEKLY Piece Name: +FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 List of Datafiles in backup set 5 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 Full 1072131 09-NOV-11 +DATA/mydb/datafile/system.256.766584645 2 Full 1072131 09-NOV-11 +DATA/mydb/datafile/sysaux.257.766584645 3 Full 1072131 09-NOV-11 +DATA/mydb/datafile/undotbs1.258.766584647 4 Full 1072131 09-NOV-11 +DATA/mydb/datafile/users.259.766584647 5 Full 1072131 09-NOV-11 +DATA/mydb/datafile/example.276.766585261 BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 6 Full 9.58M DISK 00:00:01 10-NOV-11 BP Key: 6 Status: AVAILABLE Compressed: NO Tag: FULL_WEEKLY Piece Name: +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431 SPFILE Included: Modification time: 09-NOV-11 SPFILE db_unique_name: mydb Control File Included: Ckp SCN: 1072131 Ckp time: 09-NOV-11 RMAN> En el log presentado se puede apreciar la generación de 2 piezas +FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 & +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431).Cada pieza posee atributos únicos, en esta ocasión determinaremos las mismas a transferir mediante los atributos TAG & BS KEY. Ambas piezas representan el objetivo para transferir a una localización de disco diversa al FRA.
Paso2: Visualizando localizaciones de piezas generadas en el FRA
Visualicemos las especificaciones de las piezas generadas a través de las vistas de diccionario de datos de nuestra base de datos.
SQL> select HANDLE from v$backup_piece 2 where TAG='FULL_WEEKLY'; HANDLE ----------------------------------------------------------------- +FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431 SQL>Paso3: Creación del paquete DBMS_FILE_TRANSFER.
Una vez divisadas las piezas a transferir externamente de nuestro almacenamiento ASM. Procederemos a verificar si el paquete DBMS_FILE_TRANSFER esta creado.
SQL> desc dbms_file_transfer PROCEDURE COPY_FILE Argument Name Type In/Out Default? ------------------------------ ------------------ ------ -------- SOURCE_DIRECTORY_OBJECT VARCHAR2 IN SOURCE_FILE_NAME VARCHAR2 IN DESTINATION_DIRECTORY_OBJECT VARCHAR2 IN DESTINATION_FILE_NAME VARCHAR2 IN PROCEDURE GET_FILE Argument Name Type In/Out Default? ------------------------------ ------------------ ------ -------- SOURCE_DIRECTORY_OBJECT VARCHAR2 IN SOURCE_FILE_NAME VARCHAR2 IN SOURCE_DATABASE VARCHAR2 IN DESTINATION_DIRECTORY_OBJECT VARCHAR2 IN DESTINATION_FILE_NAME VARCHAR2 IN PROCEDURE PUT_FILE Argument Name Type In/Out Default? ------------------------------ ------------------ ------ -------- SOURCE_DIRECTORY_OBJECT VARCHAR2 IN SOURCE_FILE_NAME VARCHAR2 IN DESTINATION_DIRECTORY_OBJECT VARCHAR2 IN DESTINATION_FILE_NAME VARCHAR2 IN DESTINATION_DATABASE VARCHAR2 IN SQL>Si el mismo no esta creado, podremos crearlo con el siguiente script:
{ORACLE_HOME}/rdbms/admin/dbmsxfr.sql
Si algún usuario diferente de sys necesita acceso al mismo, podemos otorgar el privilegio de la siguiente manera:
GRANT EXECUTE ON dbms_file_transfer TO DBO
Paso4: Creación de directorios origen y destino para la transferencia
SQL> create directory source_dir as 2 '+FRA/mydb/backupset/2011_11_10'; Directory created. SQL> create directory target_dir as 2 '/home/oracle/MyExternalFileSystem'; Directory created.Para cualquier usuario que necesite acceder a estos directorios se deberá otorgar los permisos necesarios:
SQL> grant read, write on directory source_dir toPaso5: Llevando a cabo las transferencias:; Grant succeeded. SQL> grant read, write on directory target_dir to ; Grant succeeded. SQL>
BEGIN sys.dbms_file_transfer.copy_file(source_directory_object => 'SOURCE_DIR', source_file_name => 'nnndf0_full_weekly_0.271.766859353', destination_directory_object => 'TARGET_DIR' , destination_file_name => 'MyFullBackupPiece01.bkp'); END; / PL/SQL procedure successfully completed. BEGIN sys.dbms_file_transfer.copy_file(source_directory_object => 'SOURCE_DIR', source_file_name => 'ncsnf0_full_weekly_0.269.766859431', destination_directory_object => 'TARGET_DIR' , destination_file_name => 'MyFullBackupPiece02.bkp'); END; / PL/SQL procedure successfully completed.Visualizacion de archivos (piezas de RMAN) generadas en el sistema operativo
[oracle@MYSERVER-mydb MyExternalFileSystem]$ ls -lt total 1057452 -rw-r----- 1 oracle dba 10059776 Nov 10 18:08 MyFullBackupPiece01.bkp -rw-r----- 1 oracle dba 1071702016 Nov 10 18:07 MyFullBackupPiece02.bkp [oracle@MYSERVER-mydb MyExternalFileSystem]$Para utilizar las piezas generadas en recuperaciones de nuestra base de datos, debemos catalogar las mismas. Esto se podrá llevar a cabo a través del comando CATALOG de RMAN.
RMAN> catalog start with '/home/oracle/MyExternalFileSystem';
Aplicaciones y uso
Las posibles aplicaciones reales que podemos realizar con transferencias de piezas o archivos desde ASM hacia otros destinos son variadas. Listamos algunas:- Transferencia de Archived Redo Logs para resolver casos de GAP para Manual Standby Databases o Data Guard en versiones 10g/11g.
- Extraer RMAN backups (full, archives, controlfiles, etc...) para procedimientos tales como: RMAN Duplicate, Instanciación de Standby o Data Guard Databases, etc... y otros.
- Transferencias de ASM a ASM para replicación de BBDDs
- Y muchas otras mas
No hay comentarios:
Publicar un comentario