Oracle Datapump – Importando un Schema con Distinto Nombre

En ora10gR2 poseemos una nueva herramienta de exportación e importación mucho mas perfomante que el viejo y querido imp exp.
Una de las caracteristicas que podemos utilizar con impdp y expdp es poder exportar un schema y poder :

  1. Importarlo bajo un nuevo nombre.
  2. Importarlo en un nuevo schema con nuevos tablespaces.

En el ejemplo que nos sigue a continuación vamos a importar desde un schema originario distinto al nuestro, con distintos tablespaces.

Mediante el parametro de impdp remap_schema, logramos mappear el usuario MANUTS01 , hacia el usuario MANUDEV , sabiendo que ambos usuarios residen en diferentes tablespaces.

Con el seteo del parametro remap_tablespace le decimos al proceso de importación que mapee los tablespaces originales, ya sean de datos o de indices hacia los nuevos, donde ahora importaremos los objetos y sus correspondientes datos.

Por Ejemplo:

Para los tablespace de Datos.

remap_tablespace=MANUTS01_DAT:MANUDEV MANUDEV

Para los tablespace de Indices.

remap_tablespace=MANUTS01_DAT:MANUDEV

Verificar Directorios Datapump

Antes de comenzar tenemos que verificar que existan los directorios donde dejamremos nuestros archivos a importar , tanto en la base como en el filesystem del SO.

Como lo obtenemos ?

Primero ejecutamos la siguiente query que nos dira que directorios existen y a que paths están asociados.

set line 150 select * from dba_directories

En el caso de no existir un directorio acorde, recomendamos leer AQUI

Comenzamos con la importación

Primero vamos a eliminar los tablespaces en caso de que existieran , para que se pierda por completo los datos viejos.

SQL> drop tablespace MANUDEV_DAT including contents and datafiles;
Tablespace dropped.

SQL> drop tablespace MANUDEV_IDX including contents and datafiles;
Tablespace dropped.

Ahora podemos dropear el usuario. Por haber eliminado los datafiles este procedimiento sera veloz.

SQL> drop user MANUDEV cascade;
User dropped.

Ahora vamos a crear los tablespaces que nos serviran para la importacion del nuevo schema.

SQL> CREATE BIGFILE TABLESPACE "MANUDEV_DAT";
Tablespace created.

SQL> CREATE BIGFILE TABLESPACE "MANUDEV_IDX";
Tablespace created.

Creamos el usuario que sera dueño del schema.

SQL> CREATE USER "MANUDEV" PROFILE "DEFAULT" 
IDENTIFIED BY MANUDEV 
DEFAULT TABLESPACE "MANUDEV_DAT" 
TEMPORARY TABLESPACE "TEMP" 
QUOTA UNLIMITED ON "MANUDEV_DAT" 
QUOTA UNLIMITED ON "MANUDEV_IDX" 
ACCOUNT UNLOCK;  2    3    4    5    6    7    8User created.

Les asignamos los privilegios necesarios.

SQL> GRANT ALTER ANY INDEX TO "MANUDEV"; 
GRANT CREATE ANY INDEX TO "MANUDEV"; 
GRANT CREATE ANY TABLE TO "MANUDEV"; 
GRANT CREATE ANY VIEW TO "MANUDEV"; 
GRANT CREATE SYNONYM TO "MANUDEV"; 
GRANT DELETE ANY TABLE TO "MANUDEV"; 
GRANT DROP ANY INDEX TO "MANUDEV"; 
GRANT DROP ANY PROCEDURE TO "MANUDEV"; 
\GRANT DROP ANY TABLE TO "MANUDEV"; 
GRANT DROP ANY VIEW TO "MANUDEV"; 
GRANT INSERT ANY TABLE TO "MANUDEV"; 
GRANT QUERY REWRITE TO "MANUDEV"; 
GRANT SELECT ANY TABLE TO "MANUDEV"; 
GRANT UNLIMITED TABLESPACE TO "MANUDEV"; 
GRANT UPDATE ANY TABLE TO "MANUDEV"; 
GRANT "CONNECT" TO "MANUDEV"; 
GRANT "RESOURCE" TO "MANUDEV"; 
GRANT "SELECT_CATALOG_ROLE" TO "MANUDEV";

Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.

Ya estamos en condiciones de importar nuestros datos en un nuevo schema.
Ahora ejecutemos el comando impdp con sus correspondientes parametros.

impdp system directory=DB_BACKUP dumpfile=EXPORT_MANUTS01_DIARIO_090514.dmp 
logfile=impdp_EXP_MANUTS01_DIARIO_090514 
remap_schema=MANUTS01:MANUDEV 
remap_tablespace=MANUTS01_DAT:MANUDEV 
remap_tablespace=MANUTS01_IDX:MANUDEV_IDX

About Juan Andres
Consultant | Oracle DBA & IT Specialist | LinuxUnix Administrator | Father | Musician | Farmer | Environmentalist | Writer | Builder | Buenos Aires · burzaco.wordpress.com

One Response to Oracle Datapump – Importando un Schema con Distinto Nombre

  1. Jose says:

    Gracias es algo que necesitaba.
    Te consulto si sabes algo del viejo imp. Yo baje con exp un esquema de una base y la importe con imp en otra base(de un linux a otro linux) con distinto nombre de esquema.
    Me funciona bien la base el imp me dijo no soy el owner pero me agrega importando datos del esquema Uno al Dos y lo hizo.
    El problema que tengo es que perdi en la parte izquierda del SqlDeveloper el despliegue de los objetos, no veo tablas, vistas nada, pero con un select puedo ver todo y modificar o sea esta todo funcionando solo que no veo el despliegue.
    Que pudo haber pasado tenes idea? Reconstrui el diccionario de datos con los 3 queries que recomienada oracle pero no hubo cambio. Yo solo trunque tablas e importe.
    Si uso este nuevo procedimiento impdp podria recuperarme el despliegue de los objetos en SqlDeveloper?
    Hay algo en especial que necesita el SqlDeveloper para hacer el despliuegue? Que es lo que deberia transferir de una base a otra para recuperar el despliegue?
    O directamente uso este procedimiento y listo no queda otra?
    Perdon por la extension.
    Saludos y gracias.

%d bloggers like this: