Todos hemos usado alguna vez los utilitarios export e import, pero con la aparición de Oracle10g vino como novedad Data Pump. Aún muchos no se han animado a usarlo, pero eventualmente tendrán que hacerlo ya que Oracle ha anunciado que en futuras versiones sólo se proporcionará import.
Pues bien, la verdad es que si investigamos un poco y empezamos a usarlo, notaremos que mucho de los problemas por lo que pasamos al tratar de hacer algunas cosas medio rebuscadas con export e import, ahora son posibles con Data Pump y se los iré mostrando poco a poco, pero para empezar veamos cómo ahora es posible exportar los datos de un base de datos e importarlos en otra remota sin necesidad de crear un dump, e incluso crear allí el usuario destino si es que éste aún no existe, a ver ¡traten de hacer eso con export e import!
Para hacer esta demostración contaremos con una base de datos 10.2 bajo Solaris 10 como origen, y otra base de datos 11.1 bajo RHEL 4.7 como destino. Debemos empezar por crear un database link en la base de datos destino que nos permita comunicarnos con la base de datos origen.
SYSTEM@orcl> create database link solaris
connect to system identified by oracle
using 'solaris';
Database link created.
SYSTEM@orcl> select banner from v$version@solaris;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Prod
PL/SQL Release 10.2.0.2.0 - Production
CORE 10.2.0.2.0 Production
TNS for Solaris: Version 10.2.0.2.0 - Production
NLSRTL Version 10.2.0.2.0 - Production
SYSTEM@orcl> drop user scott cascade;
User dropped.
[oracle@linux ~]$ impdp system/oracle nologfile=y network_link=solaris schemas=scott
Import: Release 11.1.0.6.0 - Production on Tuesday, 11 November, 2008 9:58:03
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SYSTEM"."SYS_IMPORT_SCHEMA_01": system/******** nologfile=y network_link=solaris schemas=scott
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 192 KB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
. . imported "SCOTT"."DEPT" 4 rows
. . imported "SCOTT"."EMP" 14 rows
. . imported "SCOTT"."SALGRADE" 5 rows
. . imported "SCOTT"."BONUS" 0 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully completed at 09:58:17
[oracle@linux ~]$ sqlplus scott/tiger
SQL*Plus: Release 11.1.0.6.0 - Production on Tue Nov 11 09:58:23 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SCOTT@orcl> select table_name, num_rows
from user_tables;
TABLE_NAME NUM_ROWS
------------------------------ ----------
SALGRADE 5
BONUS 0
EMP 14
DEPT 4
- Usar un cliente de una versión superior (11g) para extraer datos de una versión inferior (10gR2), algo que con export usualmente nos daría algunos errores de compatibilidad.
- Creación del usuario receptor de los datos, esto es posible porque hemos empleado un usuario privilegiado, system en este caso, de otra forma el usuario debe existir previamente.
- Transferir los datos desde una base de datos remota sin necesidad de generar un archivo dump como paso intermedio, gracias a la inclusión del parámetro network_link.