pump parallel impdp exportar expdp examples español datos data 12c 11g oracle import

parallel - impdp oracle 12c



Cómo determinar los esquemas dentro de un archivo Oracle Data Pump Export (8)

  • Tengo un archivo de copia de seguridad de la base de datos de Oracle (.dmp) que se creó con expdp.
  • El archivo .dmp era una exportación de una base de datos completa.
  • Necesito restaurar 1 de los esquemas desde este archivo de volcado.
  • No sé los nombres de los esquemas dentro de este archivo de volcado.
  • Para usar impdp para importar los datos, necesito el nombre del esquema para cargar.

Entonces, necesito inspeccionar el archivo .dmp y enumerar todos los esquemas, ¿cómo hago eso?

Actualización (2008-09-18 13:02) - Información más detallada:

El comando impdp que uso actualmente es:

impdp user/password@database directory=DPUMP_DIR dumpfile=EXPORT.DMP logfile=IMPORT.LOG

Y el DPUMP_DIR está configurado correctamente.

SQL> SELECT directory_path 2 FROM dba_directories 3 WHERE directory_name = ''DPUMP_DIR''; DIRECTORY_PATH ------------------------- D:/directory_path/dpump_dir/

Y sí, el archivo EXPORT.DMP está de hecho en esa carpeta.

El mensaje de error que recibo cuando ejecuto el comando impdp es:

Connected to: Oracle Database 10g Enterprise Edition ... ORA-31655: no data or metadata objects selected for job ORA-39154: Objects from foreign schemas have been removed from import

Este mensaje de error es principalmente esperado. Necesito el comando impdp ser:

impdp user/password@database directory=DPUMP_DIR dumpfile=EXPORT.DMP SCHEMAS=SOURCE_SCHEMA REMAP_SCHEMA=SOURCE_SCHEMA:MY_SCHEMA

Pero para hacer eso, necesito el esquema fuente.


Al ejecutar el comando impdp para generar un archivo sqlfile, deberá ejecutarlo como un usuario que tenga la función DATAPUMP_IMP_FULL_DATABASE.

O ... ejecútelo como un usuario con privilegios bajos y use la opción MASTER_ONLY = YES, luego inspeccione la tabla maestra. p.ej

select value_t from SYS_IMPORT_TABLE_01 where name = ''CLIENT_COMMAND'' and process_order = -59; col object_name for a30 col processing_status head STATUS for a6 col processing_state head STATE for a5 select distinct object_schema, object_name, object_type, object_tablespace, process_order, duplicate, processing_status, processing_state from sys_import_table_01 where process_order > 0 and object_name is not null order by object_schema, object_name /

http://download.oracle.com/otndocs/products/database/enterprise_edition/utilities/pdf/oow2011_dp_mastering.pdf


Debes buscar OWNER_NAME.

cat -v dumpfile.dmp | grep -o ''<OWNER_NAME>.*</OWNER_NAME>'' | uniq -u

cat -v convierte el archivo de volcado en texto visible.

grep -o solo muestra la coincidencia por lo que no vemos líneas realmente largas

uniq -u elimina las líneas duplicadas para que veas menos resultados.

Esto funciona bastante bien, incluso en archivos de volcado grandes, y podría modificarse para su uso en un script.


Mi solución (similar a la respuesta de KyleLanser) (en un recuadro de Unix):

strings dumpfile.dmp | grep SCHEMA_LIST


Paso 1: Aquí hay un ejemplo simple. SQLFILE crear un archivo SQL desde el archivo de volcado utilizando la opción SQLFILE .

Paso 2: Grep para CREATE USER en el archivo SQL generado (aquí tables.sql)

Ejemplo aquí:

$ impdp directory=exp_dir dumpfile=exp_user1_all_tab.dmp logfile=imp_exp_user1_tab sqlfile=tables.sql

Importación: lanzamiento 11.2.0.3.0 - producción el vie 26 de abril 08:29:06 2013

Copyright (c) 1982, 2011, Oracle y / o sus afiliados. Todos los derechos reservados.

Nombre de usuario: / como sysdba

Tipo de objeto de procesamiento SCHEMA_EXPORT / PRE_SCHEMA / PROCACT_SCHEMA Trabajo "SYS". "SYS_SQL_FILE_FULL_01" completado con éxito a las 08:29:12

$ grep "CREATE USER" tables.sql

CREAR USUARIO "USUARIO1" IDENTIFICADO POR VALORES ''S: 270D559F9B97C05EA50F78507CD6EAC6AD63969E5E; BBE7786A5F9103''

Muchas opciones de bombas de datos explicadas aquí http://www.acehints.com/p/site-map.html


Si abre el archivo DMP con un editor que puede manejar archivos grandes, es posible que pueda ubicar las áreas donde se mencionan los nombres de los esquemas. Solo asegúrate de no cambiar nada. Sería mejor si abre una copia del volcado original.


Suponiendo que no tiene el archivo de registro del trabajo expdp que generó el archivo en primer lugar, la opción más fácil sería usar el parámetro SQLFILE para que impdp genere un archivo de DDL (basado en una importación completa). Luego puede tomar los nombres de esquema de ese archivo. No es ideal, por supuesto, ya que impdp tiene que leer todo el archivo de volcado para extraer el DDL y luego nuevamente para llegar al esquema que le interesa, y tiene que hacer un poco de archivo de texto buscando las distintas instrucciones CREATE USER , pero debería ser factible.


impdp exporta el DDL de una copia de seguridad dmp a un archivo si usa el parámetro SQLFILE . Por ejemplo, pon esto en un archivo de texto

impdp ''/ as sysdba'' dumpfile=<your .dmp file> logfile=import_log.txt sqlfile=ddl_dump.txt

Luego, consulte ddl_dump.txt para ver los ddl_dump.txt de tabla, los usuarios y los esquemas en la copia de seguridad.

De acuerdo con la documentación, esto en realidad no modifica la base de datos:

El SQL no se ejecuta en realidad, y el sistema de destino permanece sin cambios.


Actualización (2008-09-19 10:05) - Solución:

Mi solución: Ingeniería social, cavé muy duro y encontré a alguien que conocía el nombre del esquema.
Solución técnica: al buscar en el archivo .dmp se obtuvo el nombre del esquema.
Una vez que supe el nombre del esquema, busqué en el archivo de volcado y descubrí dónde encontrarlo.

Coloca el nombre de Schemas visto en el archivo .dmp:

  • <OWNER_NAME>SOURCE_SCHEMA</OWNER_NAME> Esto se vio antes de cada nombre / definición de tabla.

  • SCHEMA_LIST ''SOURCE_SCHEMA'' Esto se vio cerca del final de .dmp.

Curiosamente, alrededor de la SCHEMA_LIST ''SOURCE_SCHEMA'' , también tenía la línea de comando utilizada para crear el volcado, los directorios utilizados, los archivos par utilizados, la versión de Windows en la que se ejecutó y la configuración de la sesión de exportación (idioma, formatos de fecha).

Entonces, problema resuelto :)