Importar un DMP

Secuencia de comandos comunes para importar un archivo DMP en una nueva base de datos de Oracle.

Código de caracteres

Verificar que los códigos de caracteres son los adecuados, para no tener problemas al momento de visualizar caracteres especiales.

select * from v$nls_parameters;

Ejemplo de salida

\"\"

Verificar la versión de Oracle

select * from v$version where banner like \'Oracle%\';

Ejemplo de salida

\"\"

Configurar el directorio para tomar los archivos DMP

CREATE DIRECTORY DATAPUMP AS \'/home/oracle/dmp\';

Crear usuarios sin contenedor

Para crear usuarios tipo 11g, sin crear bases de datos de contenedor y sin alterar a nivel del sistema. Si se presenta el error:

SQL Error: ORA-65096: invalid common user or role name
65096. 00000 -  \"invalid common user or role name\"
*Cause:  An attempt was made to create a common user or role with a name
         that was not valid for common users or roles.  In addition to
         the usual rules for user and role names, common user and role
         names must start with C## or c## and consist only of ASCII
         characters.
*Action: Specify a valid common user or role name.
$ sqlplus as sysdba
SQL> alter session set \"_ORACLE_SCRIPT\"=true;
SQL> create user miUsuario identified by bar;
SQL> exit

Creación/Borrado de los Tablespace

Si es necesario borrar los tablesspaces anteriores:

DROP TABLESPACE miTableSpace INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE miTableSpace_ndx INX INCLUDING CONTENTS AND DATAFILES;

Creación de tablespace

CREATE TABLESPACE miTableSpace DATAFILE \'miTableSpace.dbf\' SIZE 10G AUTOEXTEND ON NEXT 5G;
CREATE TABLESPACE miTableSpace_ndx DATAFILE \'miTableSpace_ndx.dbf\' SIZE 10G AUTOEXTEND ON NEXT 5G;

Creación de roles

Para corregir algunos errores de importación, algunas veces será necesario crear roles que están configurados en el esquema origen.

create role \"ROL_USUARIO_SISTEMA1\";

Comandos para importar el archivo DMP

Los archivos DMP debe colocarse en el directorio que se configuró en pasos anteriores, no deben estar comprimidos (zip, gz).

Ejemplo Windows

impdp \'SYS/SYS AS SYSDBA\' DIRECTORY=DATAPUMP file=\'EXPDP_SISTEMA_20190129-0001\' full=yes logfile=\'EXPDP_SISTEMA_20190129-0001.log\'

Ejemplo Azure:

impdp \\\"SYS AS SYSDBA\\\" DIRECTORY=DATAPUMP file=\'EXPDP_SISTEMA_20190129-0001\' full=yes logfile=\'EXPDP_SISTEMA_20190129-0001.log\'

Ajustar características del usuario

$ sqlplus as sysdba
SQL> CREATE USER usuario IDENTIFIED BY usuario_pass;
SQL> ALTER USER usuario DEFAULT TABLESPACE miTableSpace TEMPORARY TABLESPACE \"TEMP\" ACCOUNT UNLOCK ;
SQL> ALTER USER usuario IDENTIFIED BY usuario_pass;

Borrar triggers obsoletos

Si la base de datos trae triggers que ya no son funcionales, se pueden eliminar con la aisguiente instrucción:

DROP TRIGGER esquema.tu_trigger; 

Crear enlaces de datos a otros esquemas locales o remotos:

Error presentado:

ORA-31685: El tipo de objeto DB_LINK:\"NOMBRE_LINK\".\"ESQUEMA\" ha fallado debido a privilegios insuficientes. El sql que ha fallado es:

Solución

CREATE DATABASE LINK \"NOMBRE_LINK\"  CONNECT TO \"ESQUEMA\" IDENTIFIED BY VALUES \'058BCA33E53EBD672495A3F9D322EB9855B86D50628D4881F8\'  USING \'(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 172.1.1.1)(PORT = 1521)) (CONNECT_DATA = (SID = orcl)))\'

Error presentado:

ORA-31685: El tipo de objeto DB_LINK:\"NOMBRE_LINK\".\"ESQUEMA\"  ha fallado debido a privilegios insuficientes. El sql que ha fallado es:

Solución:

CREATE DATABASE LINK \"NOMBRE_LINK\"  CONNECT TO \"ESQUEMA\" IDENTIFIED BY VALUES \'0580FF67A1A466A205E5026B6CC9FD803411ED02C647ECD48C\'  USING \'(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 172.1.1.1)(PORT = 1521)) (CONNECT_DATA = (SID = orcl)))\'

Algunos errores se corrigen creando previamente los roles y usuarios que se usan en el import.

Creación de los DBLINK\’s

create public database link
  BD_FUENTE
connect to
  USUARIO_BD
identified by
  PASSWORD_BD
using \'ip_base_datos:1521/orcl\';

Fuentes consultadas

https://docs.oracle.com/cd/B28359_01/server.111/b28319/exp_imp.htm