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