Database

Oracle Data Pump: Export e Import con expdp e impdp

Oracle Data Pump: Export e Import con expdp e impdp

Cuando se habla de gestión de datos en entornos Oracle, dos herramientas emergen a menudo para las operaciones de copia de seguridad, restauración y migración: Data Pump y RMAN. Aunque ambos son fundamentales, sus finalidades y modos operativos son distintos. Data Pump, con sus utilidades expdp e impdp, es la elección privilegiada para las operaciones lógicas, permitiendo exportar e importar esquemas, tablas o bases de datos completas a nivel de objeto, ideal para migraciones entre diferentes versiones de Oracle o para la creación de entornos de prueba. He utilizado Data Pump para migrar esquemas complejos entre servidores, reduciendo drásticamente los tiempos de inactividad y simplificando la gestión de datos para una organización sanitaria pública con cientos de gigabytes de bases de datos.

Probado en: Oracle Database 19c · Oracle Linux 8 · Octubre 2026

Data Pump o RMAN: para qué sirve cada uno

Comprender la diferencia entre Oracle Data Pump y RMAN (Recovery Manager) es crucial para elegir la herramienta adecuada para la tarea. RMAN es una utilidad de copia de seguridad y recuperación a nivel físico. Opera sobre los archivos de datos, los archivos de control y los archivelogs de la base de datos. Es la herramienta principal para la copia de seguridad completa o incremental de toda la base de datos, para la recuperación ante desastres y para la duplicación de bases de datos (clonación). RMAN es consistente con las transacciones y garantiza la integridad de los datos a nivel de bloque.

Data Pump, por otro lado, es una herramienta para la descarga y carga lógica de datos. Trabaja a nivel de objetos de la base de datos (esquemas, tablas, índices, procedimientos almacenados, etc.). Es ideal para:

  • Migración de esquemas o tablas: Mover objetos de una base de datos a otra, incluso entre diferentes versiones de Oracle.
  • Creación de entornos de desarrollo/prueba: Duplicar un subconjunto de la base de datos de producción.
  • Copias de seguridad lógicas: Crear copias de seguridad de datos específicos que luego se pueden importar en un entorno diferente.
  • Consolidación de bases de datos: Unir múltiples esquemas de diferentes bases de datos en un único destino.

La elección depende de la naturaleza de la operación: si necesitas una copia de seguridad física para la recuperación ante desastres, usa RMAN; si necesitas mover o duplicar datos a nivel lógico, Data Pump es la solución.

Crear la directory Oracle y otorgar permisos

Antes de poder utilizar expdp o impdp, es necesario definir un directorio lógico dentro de la base de datos Oracle que apunte a un directorio físico en el sistema de archivos del servidor. Este directorio es donde Data Pump escribirá los archivos de volcado y los logs durante la exportación, o desde donde leerá los archivos de volcado durante la importación. No es posible especificar rutas arbitrarias directamente en los comandos expdp/impdp; siempre se debe hacer referencia a un directorio Oracle predefinido.

Para crear un directorio, conéctate como usuario con privilegios SYSDBA o CREATE ANY DIRECTORY (por ejemplo, system):

CREATE DIRECTORY dp_dir AS '/u01/export';

Este comando crea un directorio lógico llamado DP_DIR que apunta a la ruta /u01/export en el sistema de archivos del servidor de la base de datos. Asegúrate de que la ruta física exista y que el usuario del sistema operativo que ejecuta el proceso Oracle tenga permisos de lectura y escritura en ese directorio.

Posteriormente, debes conceder permisos de lectura y escritura en este directorio al usuario o usuarios que ejecutarán las operaciones expdp/impdp. Por ejemplo, para el usuario SYSTEM:

GRANT READ, WRITE ON DIRECTORY dp_dir TO system;

Sin estos permisos, cualquier intento de ejecutar expdp o impdp fallará con errores relacionados con el acceso al directorio. Lee también: Oracle DBA: Controles Diarios con Outputs Reales

Exportar un esquema

La exportación de un esquema completo es una de las operaciones más comunes con Data Pump. Esto incluye todas las tablas, índices, vistas, triggers, procedimientos almacenados y otros objetos asociados a ese esquema. El comando expdp ofrece muchas opciones para personalizar la exportación.

Aquí tienes un ejemplo para exportar el esquema APP al directorio dp_dir, generando archivos de volcado con nombres basados en un patrón (app_%U.dmp) y un archivo de log, utilizando 4 procesos paralelos para acelerar la operación:

expdp system/password@ORCLDB schemas=APP directory=dp_dir dumpfile=app_%U.dmp logfile=app_exp.log parallel=4
  • system/password@ORCLDB: Credenciales del usuario con privilegios suficientes.
  • schemas=APP: Especifica el esquema a exportar.
  • directory=dp_dir: El directorio Oracle definido previamente.
  • dumpfile=app_%U.dmp: El nombre del archivo de volcado. %U es un marcador de posición que Data Pump reemplaza con un número secuencial si se usa el paralelismo, creando app_01.dmp, app_02.dmp, etc.
  • logfile=app_exp.log: El archivo donde se registran todas las informaciones sobre la exportación.
  • parallel=4: Indica a Data Pump que utilice 4 procesos worker para la exportación, mejorando el rendimiento en bases de datos grandes o con muchos objetos.

Exportar solo algunas tablas o solo los metadatos

Data Pump ofrece una alta granularidad, permitiéndote exportar solo objetos específicos o solo su estructura (metadatos) sin los datos. Esto es útil para crear esquemas vacíos o para mover solo un subconjunto de tablas.

Para exportar solo algunas tablas de un esquema, usa la opción tables:

exdp system/password@ORCLDB tables=APP.ORDENES,APP.PRODUCTOS directory=dp_dir dumpfile=ordenes_productos.dmp logfile=ordenes_productos_exp.log

Si en cambio necesitas solo la estructura de los objetos (por ejemplo, para replicar el esquema de una base de datos sin los datos), puedes usar la opción content=METADATA_ONLY:

expdp system/password@ORCLDB schemas=APP directory=dp_dir dumpfile=app_metadata.dmp content=METADATA_ONLY logfile=app_metadata_exp.log

La opción content=DATA_ONLY haría lo opuesto: exportar solo los datos, sin la estructura de los objetos. La configuración predeterminada es content=ALL, que exporta tanto metadatos como datos.

Importar en otro esquema (remap_schema)

Una de las funcionalidades más potentes de impdp es la posibilidad de remapear los objetos durante la importación. Esto es fundamental cuando se mueven esquemas de un entorno a otro y se desea que el esquema de origen se cree con un nombre diferente en la base de datos de destino, o cuando se unen múltiples esquemas.

La opción remap_schema te permite especificar que todos los objetos pertenecientes a un esquema de origen se importen en un nuevo esquema de destino. Por ejemplo, para importar el esquema APP desde el archivo de volcado y crearlo como APP_TEST en la base de datos de destino:

impdp system/password@ORCLDB directory=dp_dir dumpfile=app_%U.dmp remap_schema=APP:APP_TEST logfile=app_imp.log

Este comando tomará todos los objetos originalmente en el esquema APP y los creará en el esquema APP_TEST en la base de datos actual. Si APP_TEST no existe, impdp lo creará (si el usuario que ejecuta la importación tiene los privilegios necesarios).

Mover entre tablespaces (remap_tablespace)

De manera similar a remap_schema, la opción remap_tablespace permite redirigir los objetos de un tablespace de origen a un tablespace de destino durante la importación. Esto es muy útil para optimizar la asignación de espacio o para adaptar el esquema importado a la configuración de la base de datos de destino, que podría tener nombres de tablespace diferentes o una estrategia de almacenamiento distinta.

Para remapear los objetos que originalmente residían en TABLESPACE_OLD a TABLESPACE_NEW durante la importación:

impdp system/password@ORCLDB directory=dp_dir dumpfile=app_%U.dmp remap_tablespace=TABLESPACE_OLD:TABLESPACE_NEW logfile=app_imp_ts.log

Es posible combinar remap_schema y remap_tablespace en un único comando, ofreciendo la máxima flexibilidad para las migraciones complejas:

impdp system/password@ORCLDB directory=dp_dir dumpfile=app_%U.dmp remap_schema=APP:APP_TEST remap_tablespace=USERS:APP_DATA logfile=app_imp_full.log

Este comando importará el esquema APP como APP_TEST y moverá todos los objetos que estaban en el tablespace USERS al nuevo tablespace APP_DATA.

Paralelismo y compresión

El rendimiento es crítico, especialmente con bases de datos grandes. Data Pump ofrece dos opciones clave para optimizar la velocidad y el espacio: paralelismo y compresión.

Paralelismo (parallel): La opción parallel (ya vista en el ejemplo expdp) permite a Data Pump utilizar múltiples procesos worker simultáneamente para ejecutar las operaciones de exportación/importación. Esto reduce significativamente el tiempo total requerido. El número de procesos paralelos debe equilibrarse con los recursos del servidor (CPU, I/O) y el número de archivos de volcado. Si especificas parallel=4 y dumpfile=app_%U.dmp, Data Pump creará 4 archivos de volcado y usará 4 procesos para escribirlos.

Compresión (compression): La opción compression reduce el tamaño de los archivos de volcado, ahorrando espacio en disco y reduciendo los tiempos de transferencia. Es particularmente útil para copias de seguridad remotas o para archivar grandes cantidades de datos. Las opciones de compresión incluyen ALL (predeterminado), DATA_ONLY, METADATA_ONLY, NONE, ENABLE. ALL comprime tanto los datos como los metadatos.

expdp system/password@ORCLDB schemas=APP directory=dp_dir dumpfile=app_comp.dmp logfile=app_comp_exp.log parallel=4 compression=ALL

Esta combinación puede acelerar una exportación/importación de terabytes de días a horas. Lee también: Oracle RMAN: Recuperar Base de Datos Tras Fallo

Leer el log y los errores ORA- más frecuentes

El archivo de log generado por expdp e impdp es tu recurso principal para monitorear el estado de la operación y diagnosticar posibles problemas. Es fundamental leerlo atentamente, especialmente en caso de errores.

El log contiene:

  • Detalles sobre el inicio de la utilidad (versión, parámetros).
  • Lista de los objetos procesados (tablas, índices, etc.).
  • Estadísticas de rendimiento y resumen final.
  • Cualquier error ORA- o advertencia WARNING que se haya producido.

Errores ORA- comunes y resolución de problemas:

  • ORA-31626: job does not exist / ORA-31633: unable to create master table: A menudo causado por problemas de permisos en el directorio Oracle o por problemas de espacio en el tablespace SYSTEM (donde se crea la tabla maestra del job Data Pump).
  • Verifica los permisos READ, WRITE en el directorio.
  • Controla el espacio libre en el tablespace SYSTEM.
  • ORA-39002: invalid operation / ORA-39070: Unable to open the log file: Generalmente indica que la ruta física del directorio no existe o que el usuario Oracle no tiene permisos de escritura en el directorio físico del sistema operativo.
  • Asegúrate de que /u01/export exista y que el usuario oracle (o el usuario que ejecuta la base de datos) tenga rwx en él.
  • ORA-01031: insufficient privileges: El usuario especificado para expdp/impdp no tiene los privilegios necesarios para exportar/importar los objetos solicitados o para acceder al directorio Oracle.
  • Concede los privilegios EXP_FULL_DATABASE e IMP_FULL_DATABASE (para importación/exportación a nivel de base de datos completa), o los permisos READ, WRITE en el directorio específico al usuario.
  • ORA-31693: Table data object "SCHEMA"."TABLA" failed to load/unload and is being skipped due to error:: Un problema específico con una tabla. Revisa el log para el error ORA- detallado asociado a esta línea. Podría ser un problema de constraint, tipo de dato o trigger.

Cuando ocurre un error, el log es tu mejor amigo. Busca los mensajes ORA- y consulta la documentación Oracle para el código específico.

Errores comunes y resolución de problemas

Además de los errores ORA- específicos, hay algunas problemáticas recurrentes con Data Pump:

  1. Falta de espacio en disco: Los archivos de volcado pueden ser muy grandes. Asegúrate de que el sistema de archivos donde reside el directorio Oracle tenga suficiente espacio. Una exportación de una base de datos de 1TB puede generar un volcado de cientos de GB incluso con compresión.
  2. Problemas de rendimiento de I/O: En sistemas con I/O lento, incluso con alto paralelismo, las operaciones de Data Pump pueden ser lentas. Monitorea el I/O del disco durante la ejecución.
  3. Codificación de caracteres: Si el entorno de origen y el de destino tienen conjuntos de caracteres diferentes, podrías encontrar problemas de corrupción de datos o errores durante la importación. Verifica NLS_CHARACTERSET en ambas bases de datos.
  4. Versiones diferentes de Oracle: Aunque Data Pump puede gestionar migraciones entre versiones diferentes, existen limitaciones. Generalmente, un volcado creado con una versión N puede importarse en una versión N o N+1, pero no en N-1. Verifica siempre la compatibilidad en la documentación oficial de Oracle.

FAQ — Preguntas Frecuentes

¿Puedo usar Data Pump para hacer una copia de seguridad completa de la base de datos para recuperación ante desastres?

No, Data Pump realiza una copia de seguridad lógica. No es adecuado para la recuperación ante desastres a nivel de base de datos. Para eso, debes usar RMAN, que gestiona las copias de seguridad físicas y permite la restauración de toda la base de datos, incluidos los archivos de control y los redo logs, garantizando la consistencia a nivel de bloque y la posibilidad de recuperación a un punto en el tiempo.

¿Es posible reanudar una operación Data Pump interrumpida?

Sí, Data Pump soporta el reinicio de trabajos interrumpidos. Cada trabajo de Data Pump tiene un nombre. Puedes usar el comando ATTACH para reconectarte a un trabajo existente y reanudar la operación desde donde se interrumpió, tanto en caso de interrupción accidental como voluntaria. Esta es una gran ventaja en comparación con las antiguas utilidades exp/imp.

¿Cuál es la diferencia entre FULL y SCHEMAS en expdp?

FULL=Y exporta toda la base de datos, incluidos todos los esquemas, tablespaces, roles y perfiles. Requiere los privilegios EXP_FULL_DATABASE. SCHEMAS=nombre_esquema exporta solo los objetos dentro del esquema especificado. Es más granular y a menudo preferido para migraciones o copias de seguridad de aplicaciones individuales.

¿Puedo excluir objetos específicos de la exportación/importación?

Sí, Data Pump ofrece las opciones EXCLUDE e INCLUDE que te permiten especificar qué tipos de objetos (por ejemplo, EXCLUDE=TABLE:"IN ('LOG_TABLE')") o qué objetos específicos (por ejemplo, INCLUDE=TABLE:"IN ('ORDER_ITEMS', 'CUSTOMERS')") deseas incluir o excluir de la operación. Esto es extremadamente útil para filtrar datos innecesarios o sensibles.

¿Es necesario reiniciar el servicio después de la modificación?

No, las operaciones de Data Pump (expdp e impdp) no requieren el reinicio del servicio de la base de datos. Son utilidades cliente que interactúan con la base de datos a través de sesiones normales. Los cambios en los datos o esquemas ocurren en tiempo real y están inmediatamente disponibles, sin necesidad de reinicios.

Conclusiones con puntos clave operativos

Oracle Data Pump es una herramienta potente y flexible para la gestión lógica de datos en entornos Oracle. Su capacidad para gestionar grandes volúmenes de datos con paralelismo y compresión lo hace indispensable para DBAs y arquitectos de bases de datos. Recuerda siempre definir correctamente los directorios Oracle, asignar los permisos adecuados y aprovechar las opciones de remap_schema y remap_tablespace para migraciones sin problemas. El log es tu brújula para la resolución de problemas. Dominar expdp e impdp significa reducir los tiempos de inactividad, simplificar las operaciones de migración y mejorar la robustez de las estrategias de copia de seguridad lógica, una habilidad crucial en cualquier entorno empresarial.

Fuentes

Comparte este artículo:

Escrito por

Rosario Giordano

Rosario Giordano es administrador de sistemas y consultor de TI especializado en c iberseguridad y cloud, con más de 20 años de experiencia en la gestión de infraestructuras Linux empresariales. Sus áreas de especialización incluyen el hardening de SSH, plataformas Kubernetes , bases de datos PostgreSQL, virtualización con VMware/Proxmox y el cumplimiento de los marcos de seguridad NIS2 e ISO 27001.