img-feed img-feed-email

Data Pump Export (expdp) and Data Pump Import (impdp) Parte.2

Ahora vamos  a dar un pequeño repaso al Data Pump,  que podemos usar  a partir de la versión Oracle Database 10g.  Esta nueva tecnología permite a los DBAs trasferir gran volumen de datos entre bases de datos Oracle y con muy alta velocidad comparada con las anteriores herramientas export/import.



Principales ventajas de Data pump

  Podemos exportar en paralelo, escribiendo en múltiples archivos en diferentes discos. Por ejemplo, especificando el parámetro PARALLEL=2 y dos directorios con los nombres de archivos destino, DUMPFILE=dir1:/file1.dp, dir2:/file2.dp.

  Posibilidad de realizar attach y dettach del trabajo, monitoreando el trabajo remotamente.

  Más opciones para filtrado de metadatos (parámetros EXCLUDE e INCLUDE).

  Podemos estimar los requerimientos de espacio en disco con el parámetro ESTIMATE_ONLY, antes de ejecutar la tarea.

  Los datos pueden ser exportados desde una BD remota utilizando un DB link.

  Puede especificarse la versión de la BD y exportar solo los objetos compatibles con dicha versión.

  Durante la tarea de impdp podemos cambiar el destino de los datafiles, esquemas y tablespaces (REMAP_DATAFILES, REMAP_SCHEMA, REMAP_TABLESPACE).

  Nos permite filtrar los datos durante la ejecución de impdp.

  Puede importarse desde una BD hacia otra sin escribir a un archivo de dump, especificando el parámetro NETWORK_LINK.

  El status de los trabajos pueden ser consultados directamente desde el data dictionary. Por ejemplo, dba_datapump_jobs, dba_datapump_sessions, etc




Introducción
Oracle Data Dump dispone de dos utilidades para efectuar las operaciones de exportación o importación:
  • Data Dump Export que se invoca con expdp.
  •  Data Dump Import que se invoca con impdp.
Data Pump export crea archivos conocidos como dumps files los cuales tiene un formato propietario que solo Data Pump Import puede entender.

Data Pump  es una tecnología servidor. Por esto, los ficheros dump y log son generados en directorios  del servidor oracle. Data Pump requiere objetos directorios que para poder acceder al directorio donde se exportará o importarán los datos.

Por ejemplo para crear un objeto directorio llamado expdp_dir  localizado en  /u01/backup/exports  se ejecutaremos la siguiente instrucción SQL:

SQL> create directory expdp_dir as '/u01/backup/exports';

Una vez creado le daremos permisos de lectura y escritura a los usuarios que usen data pump export y import:

SQL> grant read,write on directory expdp_dir to system, user1, user2;



Invocar Data Pump Export
Data pump export se llama desde la línea de comandos.  Los parámetros de exportación puede se especificados directamente en la línea de comandos o a través  un ficheros de parámetros creado previamente y llamado con el parámetro PARFILE=mifichero.par.
Modo ‘Full Export’
A full export se especifica usando el parámetro FULL y de este modo la base de datos completa es  exportada. Este modo requiere que tengas asignado el rol EXP_FULL_DATABASE. Ejemplo:
$ expdp system/ DIRECTORY=expdp_dir DUMPFILE=expfull.dmp FULL=y LOGFILE=expfull.og

Modo ‘Schema Export’
Se invoca usando  el parametro SCHEMAS. Si no tiene el rol EXP_FULL_DATABASE, solo podrás importar de tu propio esquema. Se tienes el rol EXP_FULL_DATABASE  podrás exportar de cualquier esquema.
$ expdp hr/hr DIRECTORY=expdp_dir DUMPFILE=schema_exp.dmp SCHEMAS=hr,sh,oe

Modo ‘Table Export’
Este modo se especifica usando el parámetro TABLES. En este modo, solo las tablas especificadas y sus dependencias serán exportadas. Si no tienes el rol EXP_FULL_DATABASE, solo podrás exportar tablas de tu propio esquema.
$ expdp hr/hr DIRECTORY=expdp_dir DUMPFILE=tables_exp.dmp TABLES=employees,jobs,departments

Invocar Data Pump ImportData pump Import se llama desde la línea de comandos.  Los parámetros de exportación puede se especificados directamente en la línea de comandos
Modo Full Import
Carga el contenido completo del fichero dump origen (creado con expdp) en la base de datos destino. Sin embargo, debes tener permisos como IMP_FULL_DATABASE rol  y especificar el parámetro FULL=y.

$ impdp system/ DIRECTORY=expdp_dir DUMPFILE=expfull.dmp FULL=y LOGFILE=impfull.og
Schema Import Mode
Se invoca usando el parámetro SCHEMAS. Solo los contenidos del esquema especificado son incorporados en la base de datos. El fichero del ‘dump file’  pueder ser  a full, schema-mode, table, o tablespace.  Si posees el rol IMP_FULL_DATABASE role, podrás especificar una lista de esquemas a importar en la base de datos destino.

$ impdp hr/hr DIRECTORY=expdp_dir DUMPFILE=expfull.dmp SCHEMAS=hr,sh,oe

Table Import Mode
Es especifica usando el parámetro TABLES. En este modo solo las tablas indicadas y sus dependencias  son importadas. Si no tienes el rol IMP_FULL_DATABASE solo podrás importar tablas de tu propio esquema.
$ impdp hr/hr DIRECTORY=expdp_dir DUMPFILE=expfull.dmp TABLES=employees,jobs,departments



Uso de Fichero de Parámetros con DATA DUMP

Es aconsejable especificar los parámetros dentro de un fichero parámetros, sobre todo cuando se usan en procedimientos repetitivos, complejos o por simple comodidad.

Primer paso ello crear el fichero de texto con una línea por cada parámetro a usar. Por ejemplo creamos el fichero exp.par con el siguiente contenido:

DIRECTORY=DP01
DUMPFILE=HR_dataonly-3.dmp
CONTENT=DATA_ONLY
SCHEMAS=HR,OE
EXCLUDE=TABLE:"IN ('COUNTRIES','LOCATIONS', 'REGIONS')"
QUERY=hr.EMPLOYEES:"WHERE Department_id !=20 ORDER BY employee_id"
FLASHBACK_TIME="TO_TIMESTAMP('15-09-2010 17:22:00', 'DD-MM-YYYY-HH24:MI:SS')

Ahora podemos ejecutar el comando usando el fichero de parámetros que hemos creado:
$ expdp hr/hr PARFILE=exp.par



Párametros para Filtrar los Datos

Para filtrar los datos en las operaciones con Data Pump disponemos de las opciones CONTENT, EXCLUDE/INCLUDE y QUERY.

Aqui un pequeño resumen con ejemplos:

CONTENT. Permite filtra el contenido a exportar en el fichero dump. Puede tener e valores: ALL, DATA_ONLY, METADATA_ONLY.



$ impdp hr/hr DIRECTORY=expdp_dir DUMPFILE=expfull.dmp CONTENT=DATA_ONLY;


EXCLUDE y INCLUDE

EXCLUDE permite omitir los objetos especificados en la operación de exportación/exportación.

Format del parámetro EXCLUDE=objete_type:[name_clause]. Ejemplo:

$ impdp hr/hr DIRECTORY=expdp_dir DUMPFILE=expfull.dmp EXCLUDE=TABLE:"LIKE ‘EMP%’";



INCLUDE fuerza la inclusión de solo los objetos especificados. Ejemplos:

INCLUDE=TABLE:"IN (‘EMPLOYEES’, ‘DEPARTMENTS’)";


INCLUDE=PROCEDURE



QUERY

Este parámetro selecciona las filas que se quiere exportar o importar. Ejemplo:

QUERY=OE.ORDERS: "WHERE order_id >10000"





Monotorizar Trabajos DATA


El uso de dos vistas son cruciales para monotorizar DATA DUMP:

1- DBA_DATAPUMP_JOBS: esta vista muestra un resumen de los trabajos Data Pump que estan corriendo. Ejemplo:

SQL> SELECT * FROM dba_datapump_jobs;

2- DBA_DATAPUMP_SESSIONS: Identifica las secciones de usuario que estab abiertas con trabjos de Data Pump Export o Import.

SQL> SELECT sid, serial# FROM V$session s,
       dba_datapump_jobs d 
       WHERE s.saddr=d.saddr;



Visualizar el progreso de trabajos DataPump.

Con la vista V$session_longops usaremos las siguientes columnas para monotorizar el progreso de los trabajos de exportación o importación:

- TOTALWORK: muestra una estimación total tamaño en megabytes.

- SOFAR: megasbytes trasferidos hasta ahora en el trabajo.

- OPNAME: nombre del trabajo.

Ejemplo:

SQL>  SELECT opname, target_desc, sofar, totalwork FROM  V$session_longops;

 
▲ ARRIBA▲