Cómo determinar los Esquemas dentro de un archivo de exportación de Oracle Data Pump


  • Tengo un archivo de copia de seguridad de Oracle database (.dmp) que fue creado con expdp.
  • El.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 a cargar.

Por lo tanto, necesito inspeccionar el .archivo dmp y una lista de todos los esquemas en él, ¿cómo lo hago ¿eso?


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

El comando impdp que estoy usando 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í, la EXPORTACIÓN.El archivo DMP está de hecho en esa carpeta.

El mensaje de error que recibo al ejecutar 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 se espera principalmente. Necesito que el comando impdp sea:

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

Pero para hacer eso, necesito la fuente esquema.

Author: KyleLanser, 2008-09-18

8 answers

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

 11
Author: Petros,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 06:25:02

impdp exporta el DDL de una copia de seguridad dmp a un archivo si utiliza SQLFILE parámetro . 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 marque ddl_dump.txt para los espacios de tablas, usuarios y esquemas en la copia de seguridad.

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

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

 74
Author: Factor Mystic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-30 19:21:57

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

Mi solución: Ingeniería social, cavé muy duro y encontré a alguien que sabía el nombre del esquema.
Solución técnica: Buscando el.el archivo dmp produjo el nombre del esquema.
Una vez que supe el nombre del esquema, busqué en el archivo de volcado y aprendí dónde encontrarlo.

Coloca el nombre de Esquemas fueron vistos, en el .archivo dmp:

  • <OWNER_NAME>SOURCE_SCHEMA</OWNER_NAME> Esto fue visto antes de cada mesa nombre/definición.

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

Curiosamente, alrededor de la sección SCHEMA_LIST 'SOURCE_SCHEMA', también tenía la línea de comandos 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:)

 9
Author: KyleLanser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 16:27:05

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 probablemente sería usar el parámetro SQLFILE para que impdp genere un archivo de DDL (basado en una importación completa). A continuación, 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 de nuevo para llegar al esquema que le interesa, y tiene que hacer un poco de búsqueda de archivos de texto para las diversas instrucciones CREATE USER, pero debería ser factible.

 5
Author: Justin Cave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-04 17:22:57

La ejecución del comando impdp para producir un sqlfile, tendrá que ejecutarlo como un usuario que tenga el rol 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. por ejemplo,

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

 4
Author: Peter Wiseman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-22 03:23:41

Paso 1: Aquí hay un ejemplo simple. Debe crear un archivo SQL a partir del archivo de volcado utilizando la opción SQLFILE.

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

Ejemplo aquí:

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

Importación: Versión 11.2.0.3.0-Producción el viernes abril 26 08:29:06 2013

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

Nombre de usuario: / como sysdba

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

$ grep "CREATE USER" tables.sql

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

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

 4
Author: DBA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-26 06:54:32

Mi solución (similar a la respuesta de KyleLanser) (en una caja Unix):

strings dumpfile.dmp | grep SCHEMA_LIST
 2
Author: slafs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-24 13:10:01

Necesita buscar OWNER_NAME.

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

Cat-v convierte el archivo de descarga en texto visible.

Grep-o muestra solo el partido, por lo que no vemos líneas realmente largas

Uniq-u elimina las líneas duplicadas para que vea menos salida.

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

 0
Author: Aldur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-21 17:41:52