Recuperación de Una Tabla Desde un Respaldo RMAN en Oracle
Transcripción
Recuperación de Una Tabla Desde un Respaldo RMAN en Oracle
Newsletter – Diciembre 2013 Contenido Página: Recuperación de Una Tabla Desde un Respaldo RMAN en Oracle Database 12c Por Ing. Luis Fernando Alonzo [email protected] 1 Recuperación de Una Tabla Desde un Respaldo RMAN en Oracle Database 12c 3 Migración de Base de Datos Hacia ASM En diferentes escenarios y con diversos clientes, se ha visto la necesidad de restaurar una base de datos completa o parcial, únicamente para recuperar una tabla, o un pequeño grupo de tablas. Para quienes lo han realizado, saben que el proceso puede ser largo, propenso a errores, y en ciertos escenarios complicado de recuperar, además que requiere conocimientos sólidos del utilitario RMAN (Recovery Manager). 5 Instalación de Swingbench La solución ideal para un escenario de recuperación de una tabla o un objeto de la base de datos, es utilizar un respaldo realizado con Export Data Pump. Por falla en el archivo dmp, porque no existe dmp para una fecha en que se desea restaurar el Editores Generales entre otras razones, es necesario recurrir a un respaldo RMAN para 5a. Ave. 5-55 Zona14,Edificio Euro Plaza Torreobjeto, II, Nivel 12 recuperar uno o varios objetos. Francisco Barrundia Teléfono: (502)2364-5300Fax: (502)2364-5311 Alejandro Lau [email protected] Debbie Morán Veamos la restauración de una tabla, en versión 11gR2 o inferior de Pagina base de1/10 datos Oracle, a través de un respaldo RMAN. Luego comparemos la nueva característica disponible en 12c para el mismo escenario. Autores Contribuyentes Luis Alonzo Alejandro Lau Manuel Carrillo Restauración de tabla en 11gR2 con respaldo RMAN 1. Obtener respaldo RMAN de la base de datos, la cual debe estar en modo ARCHIVELOG. Se requerirán archivelogs para recuperar el objeto, a una fecha y hora específica. 2. Es posible restaurar en el mismo servidor origen, pero el procedimiento es propenso a errores. Para reducir el riesgo en un ambiente de producción, se recomienda realizarse en un servidor alterno con la misma plataforma y versión de Oracle Database. 3. Crear una instancia de base de datos temporal, que servirá únicamente para restaurar los tablespaces SYSTEM, SYSAUX, UNDO y el que contiene el objeto a restaurar. 5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12 PBX (502) 2364-5300 Fax (502) 2364-5311 [email protected] Página 1 4. Una vez configurados correctamente los parámetros de la instancia temporal y definidas las rutas donde se restaurarán el control file, datafiles y online logs, se inicia la instancia en modo NOMOUNT y se restaura el control file con RMAN. Luego se monta la base de datos. 5. Colocar OFFLINE todos los datafiles que no se van a restaurar. 6. Definir fecha y hora a la que se desea realizar la recuperación, con la cláusula SET UNTIL TIME en un bloque de RMAN. Realizar la restauración y recuperación. 7. Verificar que existan las rutas y que hay espacio para crear los online logs. En este punto ya podemos abrir la base de datos en modo lectura/escritura con la opción RESETLOGS. 8. Realizar export de la tabla que deseamos recuperar. Con este archivo, ya podemos realizar un import en la base de datos origen, con la opción REMAP_SCHEMA. Restauración de tabla en 12c con respaldo RMAN Se realiza con la instrucción RECOVER TABLE de RMAN, la cual permite recuperar una o varias tablas o particiones, utilizando una instancia auxiliar. El proceso es el mismo que en versiones previas, pero de forma automatizada. Esto reduce la posibilidad de errores. Se deben cumplir los requisitos siguientes: 1. La base de datos origen debe estar abierta en modo de escritura y en modo ARCHIVELOG. 2. Deben estar disponibles los respaldos RMAN y archivelogs necesarios para la recuperación a la fecha y hora requerida. En 12c se requiere un tablespace adicional: SYSTEXT. 3. Espacio disponible en ruta auxiliar para la restauración de tablespaces. El procedimiento es el siguiente: rman target sys/oracle@t12ccdb log recover_table.log RMAN> RECOVER TABLE HR."EMPLOYEES" OF PLUGGABLE DATABASE T12CPDB1 UNTIL SEQUENCE 64 thread 1 AUXILIARY DESTINATION '/testcases/SR3-6629539201/rectbl' REMAP TABLE 'HR'.'EMPLOYEES':'EMPLOYEES2'; En este ejemplo se crea una instancia auxiliar en la ruta indicada, donde se restaurarán únicamente los datafiles necesarios para la tabla EMPLOYEES en la PLUGGABLE DATABASE T12CPDB1. Una vez restaurada la base de datos auxiliar, se realiza un export con Data Pump, se elimina la base de datos auxiliar y se realiza un import a la base de datos indicada. Para bases de datos que no pertenecen a un Container Database, únicamente se puede generar un export de la tabla; no es posible importarlo directamente. Lo anterior se logra utilizando las cláusulas DATAPUMP DESTINATION y DUMPFILE. En resumen, hay varias mejoras a RMAN en 12c; la presentada en este artículo permite reducir el tiempo de recuperación y el riesgo a errores humanos. 5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12 PBX (502) 2364-5300 Fax (502) 2364-5311 [email protected] Página 2 Migración de Base de Datos Hacia ASM Por Ing. Alejandro Lau [email protected] En instalaciones de Oracle Database previas a la versión 10g solo tenemos dos opciones para ubicar los datafiles: filesystem y raw devices. Los filesystems nos brindan mucha flexibilidad en la administración. Los raw devices ofrecen un rendimiento óptimo para el acceso a los datos, pero la administración es muy complicada. A partir de 10g surge una nueva alternativa, Automatic Storage Management o ASM, que ofrece un rendimiento casi igual a los raw devices, pero sin la complejidad de administración. ASM es un tipo especial de filesystem que no se puede ver desde el sistema operativo, pero sí desde el Enterprise Manager, desde el utilitario asmcmd y desde el Recovery Manager (RMAN). Si contamos con una instalación Oracle Database previa a 10g o 10g sobre filesystem, tenemos la opción de migrar hacia 10g con ASM. Se recomienda como mínimo contar con un diskgroup para datos (por ejemplo DATA) y un diskgroup para archivelogs y respaldos (por ejemplo RECO). El diskgroup RECO se recomienda al menos dos veces más grande que el diskgroup DATA. En algún caso podríamos necesitar mover la base de datos desde ASM hacia filesystem. Por ejemplo, si queremos cambiar los discos asociados al ASM, pero tomará varios días y no queremos una interrupción de servicio tan prolongada. Moviendo la base de datos hacia ASM Si tenemos una base de datos 10g ya existente sobre filesystems y queremos moverla completamente hacia ASM, el procedimiento es sencillo. Asumamos que la base de datos se llama orcl10g: 1. Crear los diskgroups con la redundancia deseada. SQL> create diskgroup DATA external redundancy disk 'disk1_name'; SQL> create diskgroup DATA external redundancy disk 'disk1_name'; 2. Mover el controlfile con RMAN: SQL> select name from v$controlfile; NAME ------------------------------------------------------------------/u01/oradata/orcl10g/control01.ctl' SQL> shutdown immediate SQL> startup nomount $ rman target / nocatalog RMAN> restore controlfile '/u01/oradata/orcl10g/control01.ctl'; to '+DATA' from Identificar el nombre del controlfile nuevo con ASMCMD: $asmcmd ASMCMD> ls DATA/ORCL10G/CONTROLFILE current.261.639419131 Modificar el parámetro control_files: SQL>startup nomount 5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12 PBX (502) 2364-5300 Fax (502) 2364-5311 [email protected] Página 3 SQL>alter system set control_files='+DATA/ORCL10G/CONTROLFILE/current.261.639419131' scope=spfile; SQL>shutdown immediate 3. Mover la base de datos (datafiles): RMAN> startup mount; RMAN> backup as copy database format '+DATA'; RMAN> switch database to copy; Una vez realizado el comando switch database to copy, los archivos originales quedan como copias y los nuevos archivos pasan a ser utilizados por la base de datos. 4. Agregar un nuevo archivo temporal y botar el anterior: RMAN> alter database open; SQL> alter tablespace TEMP add tempfile '+DATA' SIZE 100M; SQL> alter database tempfile '/u01/oradata/orcl10g/temp01.dbf' drop; 5. Crear nuevos miembros de logs y botar los anteriores. Supongamos que hay 3 grupos actualmente: SQL> alter database add logfile member '+DATA' to group 1; SQL> alter database add logfile member '+DATA' to group 2; SQL> alter database add logfile member '+DATA' to group 3; SQL> alter database drop logfile member 'nombre completo grupo1'; SQL> alter database drop logfile member 'nombre completo grupo2'; SQL> alter database drop logfile member 'nombre completo grupo3'; 6. Verificar que todos los archivos han sido movidos hacia ASM: SQL> select name from v$controlfile union select name from v$datafile union select name from v$tempfile union select member name from v$logfile; Para mover la base de datos de ASM hacia filesystem se realiza el mismo procedimiento, cambiando las ubicaciones fuente y destino. Tip Técnico del Mes Parametros EXCLUDE e INCLUDE en DataPump Los parametros EXCLUDE e INCLUDE están disponibles con DataPump (expdp, impdp), los mismos pueden ser utilizados para limitar lo que se importa o exporta, ya sean tablas, índices, triggers, funciones… La sintaxis de estos parámetros es la siguiente: EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause] INCLUDE=[object_type]:[name_clause],[object_type]:[name_clause] Por Lic. Francisco Barrundia [email protected] 5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12 PBX (502) 2364-5300 Fax (502) 2364-5311 [email protected] Página 4 Instalación de Swingbench Por Ing. Manuel Carrillo [email protected] 1. Instalar JDK 6: Editar $JAVA_HOME y ejecutar "datagenerator": Abrir archivo de datos de muestra: 5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12 PBX (502) 2364-5300 Fax (502) 2364-5311 [email protected] Página 5 Seleccionamos la opción "insertar datos directamente a oracle", se presenta la siguiente ventana: 5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12 PBX (502) 2364-5300 Fax (502) 2364-5311 [email protected] Página 6 select sum(order_total) from orders union select count(1) from (select c.customer_id, cust_first_name, cust_last_name c, order_date, order_mode, order_total t, t.order_id, unit_price, quantity o, a.product_id, product_name a, d.language_id, translated_name, translated_description d, i.quantity_on_hand,i.warehouse_id i, w.warehouse_name, location_id w from customers c, orders t, order_items o, product_information a, product_descriptions d, inventories i, warehouses w where c.customer_id=t.customer_id and t.order_id=o.order_id and o.product_id=a.product_id and a.product_id=d.product_id and i.product_id=a.product_id and i.warehouse_id=w.warehouse_id) 5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12 PBX (502) 2364-5300 Fax (502) 2364-5311 [email protected] Página 7 Con paralelismo (6 CPUs) Compressión for Query Con archivelog Compresión Tiempo (minutos) Nula sin paralelismo 75 Nula con paralelismo 21 For Query con paralelismo 19 For Archive con paralelismo 20 5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12 PBX (502) 2364-5300 Fax (502) 2364-5311 [email protected] Página 8 Tiempo (minutos) 80 60 40 20 0 Tiempo (minutos) Eventos mostrados en Enterprise Manager: Pruebas con base de datos en filesystem local Con paralelismo 5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12 PBX (502) 2364-5300 Fax (502) 2364-5311 [email protected] Página 9 Sin paralelismo 5a Av. 5-55 Zona14, Europlaza World Business Center, Torre II, Nivel 12 PBX (502) 2364-5300 Fax (502) 2364-5311 [email protected] Página 10