Oracle Dumpdir
Import, Export y el uso de Directorios.
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:
- Que exista un usuario con privilegios para realizar el export, en el caso de no ser sys o system.
- Que exista en la base de datos un DIRECTORY, con su relación en el SO.
- 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 tab
Tomado de juanmercadoit
0 comentarios:
Publicar un comentario