Error setSegmentation Fault (coredump)b en un import

Cuando se exportar datos de la 11g e importarlos en 9iR2. Se tiene que utilizar el export de la 9iR2 para extraer los datos de la 11g. En algunas plataformas la importación da problemas de core:

import done in US7ASCII character set and AL16UTF16 NCHAR character setSegmentation Fault (coredump)

Esto se debe a que el exp de 9iR2u utiliza de forma interna  la vista del diccionario EXU9DEFPSWITCHES para obetern información  de algunos parámetros como PLSQL_COMPILER_FLAGS y NLS_LENGTH_SEMANTICS. El parámetro PLSQL_COMPILER_FLAGS no existe en la 11g y la vista regresa 0 filas.

Solución

1. Conectarse a la base de datos 11g as SYSDBA con SQL*Plus

2. Cambiar la definición de la vista EXU9DEFPSWITCHES de:

CREATE OR REPLACE VIEW exu9defpswitches (
                compflgs, nlslensem ) AS
        SELECT  a.value, b.value
        FROM    sys.v$parameter a, sys.v$parameter b
        WHERE   a.name = 'plsql_compiler_flags' AND
                b.name = 'nls_length_semantics'

A:

 CREATE OR REPLACE VIEW exu9defpswitches (
                compflgs, nlslensem ) AS
        SELECT  a.value, b.value
        FROM    sys.v$parameter a, sys.v$parameter b
        WHERE   a.name = 'plsql_code_type' AND
                b.name = 'nls_length_semantics'

3. Reinicia la versión de exp de 9iR” para extraer datos de 11g

4. Importar el nuevo dump utilizando la versión de import de 9iR2.

 Sacado de la nota de metalink ID 550740.1

Data Pump versus Import Export

Oracle recomienda que a partir de Oracle 10 se utilice data pump en las utilidades de import y export. Data pump soporta todas las nuevas funcionalidades de Oracle 10 excepto los esquemas XML. También el diseño de Data Pump permite mayores prestaciones en el movimiento de datos que el import o export.

De hecho en Oracle 11 los export y imports originales están de soportados. Solo se recomienda la utilización de export original para una migración de datos XMLType a un versión 10g (10.2) o anterior. Es más, Oracle recomienda el uso de Data Pump excepto en las siguientes situaciones:

 • Se necesita importar archives creados con un export.

 • Se quiere importar datos en una versión anterior de la base de datos, para eso deberemos utilizar el export original ya que los archivos generados con el import no son compatible con data pump.

 Componentes de Data Pump.

Oracle Data Pump se compone de tres partes distintas:

• Línea de comandos expdp y impdp

• El paquete PL/SQL DBMS_DATAPUMP (también conocido como la API de Data Pump)

• El paquete de PL/SQL DBMS_METADATA (también conocido como el API de Metadata).

• Los clientes de data pump, expdm y impdp, invoca las utilidades de Data Pump export y data pump import respectivamente. Esta interfaz es muy similar la export e import originales.

• Los clientes expdp y impdp utilizan el procedimiento del paquete PL/SQL DBMS_DATAPUMP para ejecutar los comandos de import y export, utilizando los parámetros que se pasan en la línea de comandos. Esto parámetros permiten exportar e importar datos y metadatos de una base de datos completa o partes de esta

Las nuevas facilidades de Data Pump export e import

Los nuevos ejecutables de Data Pump son muy parecidos a los anteriores import y export, pero son herramientas completamente diferentes. Los archivos .dmp generados por ambas herramientas no son compatibles entre sí. Con lo cual no se puede importar con data pump un archivo generado con el export tradicional, ni viceversa.

Permite especificar un máximo número de threads que ejecutan lo trabajo de Data Pump. Esto permite jugar entre el tiempo que tarda el export y los recursos consumidos.

Permite reanudar los trabajos de Data Pump

Permite hacer import y export a través de la red, la instancia remota es fuente de datos

Permite re mapear los tablespaces en la operación de import

Permite filtrar los metadatas exportados e importados, basándose en objetos y tipos de objetos

Tiene la habilidad de calcular el espacio que consumirá el trabajo de export, sin ejecutar el export previamente.

Permite especificar la versión de los objetos de base de datos a mover.

La mayor parte de las operaciones de export import tienen lugar en el servidor de oracle.

El Data Pump Export y Import trabaja con un grupo de ficheros (“dump file set”) en vez de un único archivo dump.

Data pump Export y Import utiliza ejecuciones paralelas en vez de un sola ejecución, lo que permite mejorar el rendimiento.

Data Pump Exxport y Import incluye los metadatos del archivo dmp como documentos XML, en vez de cómo sentencias DDL. Esto permite más flexibilidad a la hora de transformar los metadatos en la importación.

El objeto directorio

Lo primero que se necesita para utilizar Datapump es un objeto directorio. Este tipo de objeto se corresponde a un directorio de sistema operativo y es donde Datapump dejara todos los ficheros.

Cómo crear un directorio:

sqlplus ‘/ as sysdba’
SQL> create directory prueba as ‘/users/orace/export’;
 Directory created.

 Si no es un usuario con privilegios de DBA, debe tener privilegios de CREATE ANY DIRECTORY

Para conceder los privilegios de lectura y escritura sobre el directorio:

SQL> GRANT READ,WRITE ON DIRECTORY prueba to usuario;
Grant succeeded.

Comprobación de que el directorio existe:

SQL> desc dba_directories;
Name          Null?       Type
—————————————– ——–        —————————-
OWNER          NOT NULL   VARCHAR2(30)
DIRECTORY_NAME NOT NULL   VARCHAR2(30)
DIRECTORY_PATH            VARCHAR2(4000)
SQL> select * from dba_directories where DIRECTORY_NAME like ‘%PRUEBA%’;
OWNER DIRECTORY_NAME DIRECTORY_PAT
—————————— ————————————————————————
SYS    PRUEBA /users/orace/export

Una vez que se ha creado el directorio, se puede utilizar el parámetro DIRECTORY utilizando el nombre del objeto directorio, en vez de la ruta del OS. Si se ha creado el directorio con el nombre por defecto de DATA_PUMP_DIR, no se necesita especificar el parámetro DIRECTORY en el comando export/import Oracle automáticamente buscará el directorio especificado para el valor DATA_PUMP_DIR.

$expdp priya/passwd tables=emp.
$expdp priya/passwd tables=emp dumpfile= prueba:emp.dmp logfile=prueba:emp.log
 

Prueba es el directoio y emp.dmp y emp.log son los nombres de los archivos.

Algunos ejemplos prácticos:

 1) Importar tablas del esquema scott al esquema admunsen:

 Con las antiguas utilidades de export e import se hacia los siguiente:

$imp username/password FILE=scott.dmp FROMUSER=scott TOUSER=admunsen
 

Con el Data Pump Import se hace así:

$impdp username/password DIRECTORY=test_dir1 DUMPFILE=scott.dmp TABLES=scott.emp REMAP_SCHEMA=scott:admunsen
 

Se sustituye fromuser/touser por remap_schema, con lo cual una la Tabla EMP de scott se importará en el esquema admunsen..

 2) Export de toda la base de datos incluidos grants, indices y datos.

 Con la antigua utilidad del export se hacía así:

$exp username/password FULL=y FILE=dba.dmp GRANTS=y INDEXES=y ROWS=y
 

Con la nueva utilidad se hace:

$expdp username/password FULL=y INCLUDE=GRANT INCLUDE= INDEX DIRECTORY=test_dir1 DUMPFILE=dba.dmp CONTENT=ALL
 

El parámetro INCLUDE permite especificar los objetos que queremos export y EXLUDE indica los que queremos excluir. Ambos parámetro no se pueden utilizar ambos parámetros en una misma sentencia de import.

 3). Importar un esquema:

impdp hr SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=expschema.dmp
EXCLUDE=CONSTRAINT,REF_CONSTRAINT,INDEX TABLE_EXISTS_ACTION=REPLACE

 4). Opciónes curiosas:

Permite renombrar el tablespace y los datafiles. Esto permite importar fácilmente las tablas en nuevo tablespace. Aparece a partir de Oracle 10.1.

Ejemplo:

 impdp username/password REMAP_TABLESPACE=data_1:data_2 DIRECTORY=dprueba DUMPFILE=datos.dmp
 

Funcionamiento de DataPump:

Para realizar un trabajo de datapump se utilizan diferentes procesos de background en nuestra base de datos (Master process,worker process,shadow processes)

Master Process:(MCP) El proceso master se puede localicar entre los porceso de base de datos con este nombre _DMnn_. MCP

1) Crea los trabajos y los controlas.

2) Crea y maneja los worker processes

3) Monitorea los jobs y los procesos de log

 4) Mantiene el trabajo de los jobs y restaura la informacion de la table Maestra

 5) Maneja los archivos necesarios, incluido el set de archivos dump.