Neste tutorial, vamos explorar como realizar uma exportação de dados utilizando o Datapump Export via a API DBMS_DATAPUMP no Oracle Database. Este método é altamente flexível e permite exportar dados de forma eficiente e controlada.
Etapa 1: Configurando a Exportação
Antes de iniciar a exportação, certifique-se de executar este código no banco de dados de origem, onde deseja realizar o export:
DECLARE
Bkp NUMBER;
s VARCHAR2(30000);
BEGIN
-- Abrindo um job de exportação no Data Pump
Bkp := DBMS_DATAPUMP.OPEN(
operation => 'EXPORT',
job_mode => 'SCHEMA',
job_name => NULL
);
-- Adicionando arquivo de exportação
DBMS_DATAPUMP.ADD_FILE(
handle => Bkp,
filename => 'datapump_source_DATA_F.dmp',
directory => 'DATA_PUMP_DIR',
filetype => dbms_datapump.ku$_file_type_dump_file,
reusefile => 1
);
-- Adicionando arquivo de log
DBMS_DATAPUMP.ADD_FILE(
handle => Bkp,
filename => 'datapump_source_DATA_F.log',
directory => 'DATA_PUMP_DIR',
filetype => dbms_datapump.ku$_file_type_log_file
);
-- Selecionando owners para exportação
SELECT LISTAGG('''' || owner || '''', ', ') WITHIN GROUP (ORDER BY owner)
INTO s
FROM (
SELECT username AS owner
FROM dba_users
WHERE username NOT IN (
'ANONYMOUS', 'SYS', 'SYSTEM', 'SYSAUX',
'APPQOSSYS', 'AUDSYS', 'CTXSYS', 'DBSNMP',
'DIP', 'GSMADMIN_INTERNAL', 'GSMCATUSER', 'GSMUSER',
'ORACLE_OCM', 'SYSBACKUP', 'SYSDG', 'SYSKM',
'XDB', 'XS$NULL', 'RDSADMIN', 'SYSRAC',
'SYS$UMF', 'REMOTE_SCHEDULER_AGENT', 'GGSYS',
'DBSFWUSER'
)
);
-- Aplicando filtro para exportação dos schemas selecionados
DBMS_DATAPUMP.METADATA_FILTER(Bkp, 'SCHEMA_LIST', s);
-- Iniciando o job de exportação
DBMS_DATAPUMP.START_JOB(Bkp);
END;
/
Etapa 2: Acompanhando o Progresso da Exportação
Para verificar o progresso da exportação, execute o seguinte comando no banco de dados de origem:
SELECT text
FROM TABLE(rdsadmin.rds_file_util.Read_text_file (
p_directory => 'DATA_PUMP_DIR',
p_filename => 'datapump_source_DATA_F.log'
));
Etapa 3: Verificando o Arquivo Gerado
Para verificar o arquivo gerado no diretório, utilize o seguinte comando no banco de dados de origem:
SET LINES 200 PAGES 200
COL filename FORMAT A100
SELECT filename,
ROUND(filesize / 1024 / 1024 / 1024) AS SIZE_GB
FROM TABLE(rdsadmin.rds_file_util.Listdir('DATA_PUMP_DIR'))
WHERE filename LIKE 'datapump_source_DATA_F%'
ORDER BY mtime;
Para as próximas etapas sobre transferência para o ambiente de destino e criação de DBLINK e DIRECTORY, sugiro verificá-las diretamente na documentação oficial da Oracle , pois podem variar dependendo da configuração e políticas de segurança do ambiente.
Criado por : Carlos Furushima