Los tradicionales exp e imp corren del lado del cliente (client-side) mientras que expdp e impdp lo hacen del lado del servidor (server-side), lo que hace que sea más manejable.
Procesos involucrados en los trabajos de datapump:
Client process: este proceso es iniciado por la utilidad del cliente, llamando a la API datapump. Una vez que se inicia el datapump, este proceso no es necesario para el resto del trabajo.
Shadow process: cuando el cliente se loguea en la BD, se crea el proceso foreground que atiende las solicitudes de la API. Este proceso crea la master table y las colas utilizadas para la comunicación. Una vez que el proceso del cliente termina, shadow process también.
Master control process: este proceso controla la ejecución de los trabajos de datapump. Existe un MCP por cada trabajo de datapump. MCP divide el trabajo de datapump en varios sub-trabajos de carga y descarga de metadatos y los transfiere a los worker processes.
Worker process: MCP crea los worker process basado en el valor del parámetro PARALLEL. El worker process realiza la tarea solicitada por el MCP.
Ventajas de datapump:
* 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.
Ejemplos de sintaxis:
En estos ejemplos se utilizan parfiles (archivos plano de texto) para especificar los parámetros a utilizar en el expdp e impdp. Para ejecutar un expdp o impdp utilizando un parfile: expdp parfile=archivo_parfile.txt o impdp parfile=archivo_parfile.txt.
En los diferentes escenarios se muestra el contenido de cada parfile en particular.
El parámetro directory, especifica donde quedará el dmp exportado, o de donde se toma el dmp de origen para realizar una importación. La ubicación data_pump_dir, en una instalación por default, apunta a la ubicación $ORACLE_BASE/admin/
Escenario 1:
Exportar la base ORCL completa.
userid=system/password@ORCL
dumpfile=completadp.dmp
logfile=completadp.log
full=y
directory=data_pump_dir
Escenario 2:
Exportar schema SCOTT de la base ORCL.
userid=system/password@ORCL
dumpfile=scottdp.dmp
logfile=scottdp.log
schemas=SCOTT
directory=data_pump_dir
Escenario 3:
Exportar las tablas PAISES y CIUDADES del esquema SCOTT.
userid=system/password@ORCL
dumpfile=scott_paisyciuddp.dmp
logfile=scott_paisyciuddp.log
tables=(SCOTT.PAISES,SCOTT.CIUDADES)
directory=data_pump_dir
Escenario 4:
Exportar la tabla EMPLEADOS del schema SCOTT de la base ORCL e importarla sobre la base ORCL_NEW.
*expdp parfile
userid=system/password@ORCL
dumpfile=scott_empdp.dmp
logfile=scott_empdp.log
tables=SCOTT.EMPLEADOS
directory=data_pump_dir
*impdp parfile
userid=system/password@ORCL_NEW
dumpfile=scott_empdp.dmp -- se utiliza el dmp creado en el paso anterior --
logfile=imp_scott_empdp.log
directory=data_pump_dir
table_exists_action=replace -- en caso de que la tabla exista en el destino, se reemplazará --
Escenario 5:
Exportar solamente la estructura, sin incluir datos, del esquema SCOTT.
userid=system/password@ORCL
dumpfile=scott_metadata.dmp
logfile=scott_metadata.log
content=metadata_only -- solamente la estructura --
schemas=SCOTT
directory=data_pump_dir
Escenario 6:
Exportar del esquema SCOTT, los registros de las tablas PAISES y CIUDADES cuyo nombre comience con letra A.
userid=system/password@ORCL
dumpfile=scott_soloA.dmp
logfile=scott_soloA.log
content=data_only
schemas=SCOTT
include=table:"in('PAISES','CIUDADES')"
query="where nombre like 'A%'"
directory=data_pump_dir
como es la sintaxis para ejecutar un expdp y un impdp??
ResponderEliminarEn caso de que estes queriendo hacer un expdp desde tu base local la sintaxis sería:
ResponderEliminarexpdp user/pass dumpfile=nombrearchivodestino.dp directory=data_pump_dir logfile=archivolog.log schemas=nombreesquemaexportar
En este expdp particular estamos haciendo la exportación de un schema puntual; podrías querer hacer de toda la BD u otras modalidades.
impdp user/pass dumpfile=nombrearchivoorigen.dp directory=data_pump_dir logfile=archivolog.log
remap_schema=schemaorigen:schemadestino
En este impdp particular estamos haciendo la importación desde un archivo .dp ya exportado desde otro origen (schema@base) y lo estamos importando desde el schema origen hacia un schema destino.
El impdp más básico donde no utilizamos remap_schema sería:
impdp user/pass dumpfile=nombrearchivoorigen.dp directory=data_pump_dir logfile=archivolog.log
Hola, tengo un gran problema, al tener en mi parfile el remap_schema=schemaorigen:schemadestino. Me genera el siguiente error: LRM-00101: unknown parameter name 'remap_schemas'.
ResponderEliminarLlevo medio día leyendo pero nada que doy con la solución ... Gracias por la respuesta !! :(
Se ve que esta bien escrito, tal vez se quedo alguna letra pegada y seria cosa de escribir nuevamente el comando con la línea completa en el archivo parfile o ejecutar esta en una sola línea para probar
EliminarDani, estás seguro que estás utilizando el parámetro remap_schema? Por lo que puedo ver el error hace referencia al parámetro remap_schemas (con letra s al final)... quizás por eso te esté reportando el error.
ResponderEliminarGracias.
Este comentario ha sido eliminado por el autor.
ResponderEliminaral hacer un impdp hay alguna forma de que reinicie la secuencia?
ResponderEliminarMás vale tarde que nunca...
EliminarPor lo que he visto no hay forma automática para reiniciar la secuencia en el import. Lo que sí puedes hacer es por ejemplo hacer un impdp de las secuencias a un archivo.sql...
$impdp user/pass dumpfile=test.dmp directory=DIR include=SEQUENCE sqlfile=archivo.sql
Si abres ese archivo.sql tendrás todas las sentencias de creación de las secuencias, de este tipo...
CREATE SEQUENCE "USER"."SEQ_NAME" MINVALUE 1 MAXVALUE 99999999 INCREMENT BY 1 START WITH 2587 CACHE 20 ORDER CYCLE ;
Lo que te queda es usar buscar y reemplazar, para cambiar el START WITH XXXX por START WITH 1; y ejecutar!
Espero que sea de alguna utilidad...
Excelente articulo me saco de apuros, muy bien documentado y con muy buenos ejemplos, gracias!!
ResponderEliminarCómo cambiaría las rutas de los datafiles y ctls? Tengo una BD en un server, quiero copiarla a otro servidor que alojará rutas distintas.
ResponderEliminarHola! No has probado utilizar remap_datafile para cambiar la ruta de estos archivos?
EliminarExcelente el articulo.
ResponderEliminarUna consulta estimado, yo tengo en mi poder una respaldo full generado por el comando EXP de un oracle 9i, y necesito llevar (importar) estos datos a un ORACLE 11g, sera asi de trasparente el hacer el import con el comando impdp o hay que hacer algun proceso intermedio?
soy nuevo en esto de las Bases de datos...
desde ya muchas gracias
Hola! La versión 11 no soporta imp/exp... por lo tanto lo creo bastante difícil (por no decir imposible) de subir ese dump a la nueva versión. Eso sí, si tienes disponible la versión 9 del motor, puedas intentar subirlo utilizando los binarios de esa versión. Suerte!
ResponderEliminarLa versión 11g tiene también los binarios exp e imp (por aquello de la compatibilidad hacia atrás) y puedes importar tu BD de 9i a 11g. Esto ya lo realicé para unas pruebas de migración y funciona correctamente. Solo como nota, los parametros de región y juego de caracteres deben ser los mismos en ambas.
ResponderEliminarGracias por tu aporte! Todo suma!
ResponderEliminarExcelente
ResponderEliminarHola, quisera consultarles si alguno no a tenido problemas al importa esquemas de mas de 300 GB y en la parte de Indixes y statistics a podido lograr mejor el tiempo de respuesta sobre la importacion del esquema.
ResponderEliminarProcessing object type SCHEMA_EXPORT/TABLE/COMMENT
ResponderEliminarProcessing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Processing object type SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
hola, cuando quiero hacer impdp me sale el siguiente error: ORA-31684: El tipo de objeto USUARIO: ya existe. Como lo soluciono? Gracias.
ResponderEliminarPrevio a importar borra el usuario ya que si hiciste un export completo de un esquema este te inclurye la creación del usuario.
EliminarPara borrarlo corre previamente la instruccion DROP USER pepe CASCADE
hola tengo una duda para hacer el import. Si hago el import y hago que toda la BD se importe completa directamente a un usuario, es posible ver esas tablas, relaciones, etc, desde el Oracl Sql Developer? o solo desde la termina, en mi caso el archivo DMP esta en un servidor de redhat y lo quiero impotar pero tengo esa duda. Seria de mucha ayuda que me respondan lo mas pronto ya que es para mi trabajo
ResponderEliminarExcelente publicación
ResponderEliminarBuenas noches, por favor necesito ayuda, deseo tener en una misma base de datos dos esquemas con la misma información pero obviamente con distinto nombre de esquema y distinto tablespace. Ya tengo creado el nuevo esqueme y nuevo tablespace. No estoy segura que ahi es donde debo colocar en el impdp los comando remap_schemas=origen:destino y remap_tablespace=origen:destino. Si es asi el esquema origen no sufre ninguna modificacion? Espero que me puedan ayudar....Muchas Gracias.
imp system/xx@BD file=D:\BASE_DATOS_ORACLE\FUNDACION_CERREJON\Archivo.DMP fromuser=usuario a cargar touser=usuario donde quedara
EliminarEs asi de facil
Hola, tengo una pregunta
ResponderEliminarAl momento de ejecutar el export genera el siguiente mensaje
"
;;;
Export: Release 10.2.0.3.0 - 64bit Production on Friday, 25 October, 2013 16:24:47
Copyright (c) 2003, 2005, Oracle. All rights reserved.
;;;
Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
Starting "SYSTEM"."SYS_EXPORT_FULL_01": system/********@conxx directory=expdp_backup_dir dumpfile=fullexpdp.dmp logfile=fullexpdp.log full=y
"
y se queda hay mucho tiempo y no genera ninguna accion. que puedo hacer ????
Hola! Seria bueno saber qué parámetros le estas pasando al export al momento de hacer la exportación.
Eliminarcomo hago para importar informacion a un squema que ya tiene informacion vieja y quiero dejarle caer un impdp con informacion actualizada , pero no quiero truncar la table ni borar la table para que se cree con datos nuevos , quiero que la imformacion se actualice
ResponderEliminar[3:05:59 PM] benjamin: yo hago esto pero se me duplica la informacion es decir la informacion que ya estaba me la duplica :
C:\Users\si_bgutierrez>impdp user/pasDUMPFILE=RESPALDO04.DMP LOGFIL=restauraciontest.log content=data_only directory=RESDIARIOS
Hola,
ResponderEliminarEstoy haciendo un exp full de una base de datos con la siguiente sentencia "exp system/clave@orcl file=c:\system.dmp full=y buffer=10000 log=c:\syste,log pero solo me respalda la tablas que tengo datos, las tablas que no tienen registro las omite. Alguien sabe por que puede suceder esto ??
tengo un Oracle 11g
muchas gracias
Saludos