COMO REALIZAR UN EXPORT DE BASE DE DATOS USANDO DBMS_DATAPUMP PACKAGE
Objetivo
Mostraremos varios ejemplos de cómo realizar un export de una base de datos oracle usando dbms_datapump.
Export Full con dbms_datapump
Para ello podemos utilizar la siguiente sintaxis
set serverout on
declare
dp_handle NUMBER;
job_status VARCHAR2(30);
begin
dp_handle := dbms_datapump.open (operation => 'EXPORT',
job_mode => 'FULL');
dbms_datapump.add_file (handle => dp_handle,
filename => 'dba11g.dmp',
directory => 'EXPORT',
filetype => SYS.DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE);
dbms_datapump.add_file (handle => dp_handle,
filename => 'dba11g.log',
directory => 'EXPORT',
filetype => SYS.DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
dbms_datapump.start_job (dp_handle);
dbms_datapump.wait_for_job (handle => dp_handle,
job_state => job_status);
dbms_output.put_line('DataPump Export - '||to_char(sysdate,'DD/MM/YYYY HH24:MI:SS ')||
'Status '||job_status);
dbms_datapump.detach (handle => dp_handle);
end;
/
Algunas notas sobre el procedimiento
job_mode: Indica el tipo de export que se va a realizar. En el caso de un export completo de base de datos se indica full.
filename: El nombre que va a tener el fichero de export o log
directory: Directorio donde se va a dejar el export o el fichero de log. Este directorio tiene que estar previamente creado y tener permisos para escribir en él.
Filetype: Tipo de fichero que se va a escribir
SYS.DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE en caso de ser un fichero de dmp.
SYS.DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE en caso de ser un fichero de log.
Export schema con dbms_datapump
En este caso crearemos un procedimiento como el siguiente:
set serverout on
declare
dp_handle NUMBER;
job_status VARCHAR2(30);
begin
dp_handle := dbms_datapump.open (operation => 'EXPORT',
job_mode => 'SCHEMA');
dbms_datapump.add_file (handle => dp_handle,
filename => 'bea.exp',
directory => 'EXPORT',
filetype => SYS.DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE);
dbms_datapump.add_file (handle => dp_handle,
filename => 'bea.log',
directory => 'EXPORT',
filetype => SYS.DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
dbms_datapump.metadata_filter (handle => dp_handle,
name => 'SCHEMA_EXPR',
value => 'IN (''BEA'')');
dbms_datapump.start_job (dp_handle);
dbms_datapump.wait_for_job (handle => dp_handle,
job_state => job_status);
dbms_output.put_line ('DataPump Export - '||to_char(sysdate,'DD/MM/YYYY HH24:MI:SS ')||
'Status '||job_status);
dbms_datapump.detach (handle => dp_handle);
end;
/
Algunas notas sobre el procedimiento
job_mode: en este caso indicamos que queremos realizar el export de un esquema (SCHEMA)
con dbms_datapump.metadata_filter filtramos el esquema sobre el que queremos tener un backup. En este caso hacemos un export del esquema Bea
Monitorizar los procesos datapump
Para ver los procesos datapump que se están ejecutando en la base datos o para ver si ha existido algún problema con alguno de ellos podemos realizar una consulta a la tabla DBA_DATAPUMP_JOBS.
select * from DBA_DATAPUMP_JOBS;