Oracle Dumpdir – Import, Export y el uso de Directorios.

Air University Library's Index to Military Per...

Image via Wikipedia

Cuando tenemos diferentes objetos de la base, ya sea una tabla, datos, etc y queremos transportalos a otra base, existe en oracle una utilidad llamada  expdp, con la cual nos llevaremos los datos y los objetos de nuestra base a otra donde tenga la misma estructura de datafiles y usuarios o no. El proceso generará un archivo con extención .dmp

Con impdp podremos importar datos facilmente generados mediante una exportación, que generalmente es un archivo .dmp

Cuando tenemos que exportar datos de la base o importarlos mediante impdp y expdp tenemos que tener en cuenta:

  1. Que exista un usuario con privilegios para realizar el export, en el caso de no ser sys o system.
  2. Que exista en la base de datos un DIRECTORY, con su relación en el SO.
  3. Que haya espacio suficiente en el filesystem.

Es que por ello que basados en los puntos anteriores daremos un breve ejemplo:

1. Creamos el Usuario y asignamos privilegios

SQL> create user DANADMIN
identified by XXXXXXX
default tablespace USERS;

SQL> grant connect, resource to DANADMIN;
SQL> SELECT * FROM DBA_DIRECTORIES;
SQL> alter user DANADMIN quota 100M on USERS;

Con esto podemos decir que tenemos el usuario creado, entonces ahora habria que darle los privilegios para que el usuario pueda exportar e importar los datos.

Como a mi me gusta tener todo en orden, en mi caso particular voy a crear un ROL y voy a Grantear ese ROL al Usuario.

Nos es preciso hacer esto, ya que podemos Grantear los permisos diractamente al Usuario, pero pienso que en el futuro podría existir otros usuarios con algunos con este tipo de privilegios.

1.1 Creamos el ROL.

SQL>create rol ROL_EXP_IMP;

1.2 Asignamos los permisos al ROL y luego al Usuario.

SQL> grant EXP_FULL_DATABASE to ROL_EXP_IMP;
SQL> grant IMP_FULL_DATABASE to ROL_EXP_IMP;
SQL> grant ROL_EXP_IMP to DANADMIN;

1.3 Consultamos si los cambios se aplicaron

SQL> SELECT grantee, granted_role, default_role
FROM dba_role_privs
WHERE grantee IN ('DANADMIN', 'PUBLIC') ORDER BY 1,2;
GRANTEE          GRANTED_ROLE          DEF
---------------- --------------------  ------
DANADMIN         CONNECT                YES
DANADMIN         RESOURCE               YES
DANADMIN         ROL_EXP_IMP            YES

2. Consultamos los directorios existentes.

SQL> col OWNWER format a20
SQL> col OWNWER format a10
SQL> col DIRECTORY_NAME format a20
SQL> col DIRECTORY_PATH format a65
SQL> select * from dba_directories;
OWNER          DIRECTORY_NAME         DIRECTORY_PATH
-------------- ---------------------- ----------------------------------------------------------------
SYS            DUMPDIR_MANU           /u03/rman_database_backup/manu
SYS            DATA_PUMP_DIR          /u01/app/oracle/product/10.2.0/db_asm/rdbms/log/
SYS            XMLDIR                 /u01/app/oracle/product/10.2.0/db_asm/demo/schema/order_entry/
SYS            DUMPDIR_T2             /u03/rman_database_backup
SYS            MEDIA_DIR              /u01/app/oracle/product/10.2.0/db_asm/demo/schema/product_media/
SYS            LOG_FILE_DIR           /u01/app/oracle/product/10.2.0/db_asm/demo/schema/log/
SYS            WORK_DIR               /ade/aime_10.2_lnx_push/oracle/work
SYS            DATA_FILE_DIR          /u01/app/oracle/product/10.2.0/db_asm/demo/schema/sales_history/
SYS            ADMIN_DIR              /ade/aime_10.2_lnx_push/oracle/md/admin
9 rows selected.

2.1 En el caso que el directorio que nos asignaron en el filesytem no esta en la lista, donde tenemos permisos de lectura escritura podriamos crearlo.

SQL> create directory DUMPDIR_DESA as '/u03/DUMPDIR/DESA';
Directory created.

SQL> grant read,write on directory DUMPDIR_DESA to DANADMIN;
Grant succeeded.

3. Podemos Realizar el export o el import.

expdp danadmin/passwd directory=DUMPDIR_DESA tables=JAM.COMPRAS_EXTERIOR dumpfile=COMPRAS_EXTERIOR_20090101
impdp danadmin/passwd directory=DUMPDIR_DESA dumpfile=COMPRAS_EXTERIOR_20090101 tables=COMPRAS_EXTERIOR table_exists_action=truncate

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 Dumpdir – Import, Export y el uso de Directorios.

  1. Pingback: Importando desde un schema con distinto nombre « Tecnología Informática Buenos Aires

%d bloggers like this: