Oracle Datapump

download Oracle Datapump

of 5

Transcript of Oracle Datapump

ORACLE DATAPUMPDATAPUMP es una utilidad que aparece en la versin 10G de Oracle Database. Es una alternativa nueva, ms flexible y rpida que las utilidades imp y exp de anteriores versiones de ORACLE DATABASE. Datapump provee una API PL/SQL y soporte para tablas externas.EXPORT/IMPORT DE TABLASEl parmetro TABLES es utilizado para especificar las tablas que sern exportadasSintaxis:expdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log

impdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log

EXPORT/IMPORT DE ESQUEMASEl parmetro SCHEMAS es utilizado para especificar los esquemas a exportar.Sintaxis:expdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

impdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=impdpSCOTT.log

EXPORT/IMPORT DE BASE DE DATOSEl parmetro FULL indica que se va a exportar una base de datos completa.Sintaxisexpdp system/password@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=expdpDB10G.log

impdp system/password@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=impdpDB10G.log

INCLUDE y EXCLUDEEstos parmetros pueden ser usados para limitar los objetos que sern importados o exportados. Cuando el parmetro INCLUDE es usado solo esos objetos sern importados o exportados. Cuando el parmetro EXCLUDE es usado todos los objetos sern importados o exportados a excepcin de aquellos que fueron especificados en el exclude.Sintaxis:INCLUDE=object_type [:name_clause] [, ...]EXCLUDE=object_type[:name_clause] [, ...]

El siguiente cdigo muestra como pueden ser usados estos parmetros en lnea de comandos.Sintaxis:expdp scott/tiger@db10g schemas=SCOTT include=TABLE:"IN ('EMP', 'DEPT')" directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

expdp scott/tiger@db10g schemas=SCOTT exclude=TABLE:"= 'BONUS'" directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

Un simple export/import puede incluir mltiples referencias a los parmetros asi como para exportar tablas, vistas y algunos packages. Se puede utilizar la siguiente sintaxis:Sintaxis:INCLUDE=TABLE, VIEW, PACKAGE:"LIKE '%API'"

O

INCLUDE=TABLEINCLUDE=VIEWINCLUDE=PACKAGE:"LIKE '%API'"

Mltiples objetos pueden ser apuntados en un comando usando los operadores LIKE e IN.

EXCLUDE=SCHEMA:"LIKE 'SYS%'"

EXCLUDE=SCHEMA:"IN ('OUTLN','SYSTEM','SYSMAN','FLOWS_FILES','APEX_030200','APEX_PUBLIC_USER','ANONYMOUS')"

EXPORT/IMPORT POR REDEl parmetro NETWORK_LINK indica un link a una base de datos que ser usada como el origen del export/import. El siguiente cdigo indica la manera de usar este parmetro:CONN / AS SYSDBAGRANT CREATE DATABASE LINK TO test;

CONN test/testCREATE DATABASE LINK remote_scott CONNECT TO scott IDENTIFIED BY tiger USING 'DEV';

En el caso de los exports, el parmetro NETWORK_LINK identifica el link de la base de datos apuntando al servidor de origen. Los objetos son exportados desde el servidor de origen de la manera normal, pero son escritos en un objeto directorio en el servidor local. Ambos servidores requieren tener el asignado el rol EXP_FULL_DATABASE.expdp test/test@db10g tables=SCOTT.EMP network_link=REMOTE_SCOTT directory=TEST_DIR dumpfile=EMP.dmp logfile=expdpEMP.log

En el caso de los imports el parmetro NETWORK_LINK trabaja de la misma manera que en el export a diferencia que en este caso los objetos son importados directamente desde el origen en el servidor local sin ser escritos en un archivo dump. No es necesario especificar un archivo para dump pero si es necesario crear un objeto directorio para los logs asociados con la operacin. Ambos servidores requieren tener el asignado el rol EXP_FULL_DATABASE.

Impdp test/test@db10g tables=SCOTT.EMP network_link=REMOTE_SCOTT directory=TEST_DIR logfile=impdpSCOTT.log remap_schema=SCOTT:TEST

EXPORTS FLASHBACKAl usar el parmetro CONSISTENT=Y se indica que el export debe ser consistente en un punto de tiempo especfico. Por defecto los exports de la utilidad son consistentes en algunas tablas base, por lo que si se desea que todas las tablas exportadas lo hagan de manera consistente, se debe usar el parmetro FLASHBACK_SCN o FLASHBACK_TIME.

expdp ..... flashback_time=systimestamp

# in parameter file.flashback_time="to_timestamp('09-05-2011 09:00:00', 'DD-MM-YYYY HH24:MI:SS')"

# Escaped on command line.expdp ..... flashback_time=\"to_timestamp\(\'09-05-2011 09:00:00\', \'DD-MM-YYYY HH24:MI:SS\'\)\"

Se puede monitorear los Jobs de DATAPUMP mediante el uso de la siguiente vista:system@db10g> select * from dba_datapump_jobs;

OWNER_NAME JOB_NAME OPERATION------------------------------ ------------------------------ ------------------------------JOB_MODE STATE DEGREE ATTACHED_SESSIONS------------------------------ ------------------------------ ---------- -----------------SYSTEM SYS_EXPORT_FULL_01 EXPORTFULL EXECUTING 1 1

Data Pump APIJunto con las utilidades datapump Oracle provee una API PL/SQL. El siguiente es un ejemplo como esta API puede ser usada para realizar un export de esquema.SET SERVEROUTPUT ON SIZE 1000000DECLARE l_dp_handle NUMBER; l_last_job_state VARCHAR2(30) := 'UNDEFINED'; l_job_state VARCHAR2(30) := 'UNDEFINED'; l_sts KU$_STATUS;BEGIN l_dp_handle := DBMS_DATAPUMP.open( operation => 'EXPORT', job_mode => 'SCHEMA', remote_link => NULL, job_name => 'EMP_EXPORT', version => 'LATEST');

DBMS_DATAPUMP.add_file( handle => l_dp_handle, filename => 'SCOTT.dmp', directory => 'TEST_DIR');

DBMS_DATAPUMP.add_file( handle => l_dp_handle, filename => 'SCOTT.log', directory => 'TEST_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);

DBMS_DATAPUMP.metadata_filter( handle => l_dp_handle, name => 'SCHEMA_EXPR', value => '= ''SCOTT''');

DBMS_DATAPUMP.start_job(l_dp_handle);

DBMS_DATAPUMP.detach(l_dp_handle);END;/