Olá, nesse artigo iremos abordar os passos necessários para listar os detalhes de um DUMP FILE existente, gerado com o expdp via DATA PUMP.
Vamos gerar um arquivo de dump simples:
1 - Criar o diretório no sistema operacional:
mkdir -p /backup/DATA_PUMP
2 - Listar os diretórios atuais no banco de dados:
export ORACLE_PDB_SID=PDBHERO
sqlplus / AS sysdba
SET LINES 200 pages 2000 col owner FOR a30 col directory_name FOR a30 col directory_path FOR a90 SELECT * FROM dba_directories;
3 - Criar novo diretório no banco de dados:
CREATE OR REPLACE DIRECTORY DP_DIR AS '/backup/DATA_PUMP';
4 - Criar uma tabela de teste e inserir alguns registros:
CREATE TABLE HERO.TESTE (id NUMBER, nome varchar2(50));
INSERT INTO HERO.TESTE (id, nome) VALUES (1, 'HERO'); INSERT INTO HERO.TESTE (id, nome) VALUES (2, 'DBAHERO'); commit;
5 - Realizar o export do schema:
expdp \"/ as sysdba\" SCHEMAS=HERO DIRECTORY=DP_DIR DUMPFILE=expdp_HERO_20250421_%U.dmp LOGFILE=expdp_HERO_20250421.log
Abaixo o log da execução do export:
[oracle@oracledb19c DATA_PUMP]$ expdp \"/ as sysdba\" SCHEMAS=HERO DIRECTORY=DP_DIR DUMPFILE=expdp_HERO_20250421_%U.dmp LOGFILE=expdp_HERO_20250421.log Export: Release 19.0.0.0.0 - Production on Mon Apr 21 16:38:28 2025 Version 19.25.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Starting "SYS"."SYS_EXPORT_SCHEMA_01": "/******** AS SYSDBA" SCHEMAS=HERO DIRECTORY=DP_DIR DUMPFILE=expdp_HERO_20250421_%U.dmp LOGFILE=expdp_HERO_20250421.log Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Processing object type SCHEMA_EXPORT/STATISTICS/MARKER Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE . . exported "HERO"."TESTE" 5.492 KB 2 rows Master table "SYS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is: /backup/DATA_PUMP/expdp_HERO_20250421_01.dmp Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Apr 21 16:39:32 2025 elapsed 0 00:00:56
7 - Vamos listar os metadados desse dump file:
sqlplus / as sysdba
SET LINES 200 PAGES 2000 SET LONG 9999999 SET SERVEROUTPUT ON DECLARE -- parameters p_dir VARCHAR2(128) := 'DP_DIR'; p_file VARCHAR2(128) := 'expdp_HERO_20250421_01.dmp'; v_separator VARCHAR2(80) := '--------------------------------------' || '--------------------------------------'; v_path all_directories.directory_path%TYPE := '?'; v_filetype NUMBER; v_fileversion VARCHAR2(15); v_info_table sys.ku$_dumpfile_info; TYPE valtype IS VARRAY(23) OF VARCHAR2(2048); var_values valtype := valtype(); no_file_found EXCEPTION; PRAGMA exception_init(no_file_found, -39211); BEGIN -- Dump file details DBMS_OUTPUT.PUT_LINE(v_separator); DBMS_OUTPUT.PUT_LINE('Purpose..: Obtain details about export dumpfile. Version: 18-DEC-2013'); DBMS_OUTPUT.PUT_LINE('Required.: RDBMS version: 10.2.0.1.0 or higher'); DBMS_OUTPUT.PUT_LINE('. Export dumpfile version: 7.3.4.0.0 or higher'); DBMS_OUTPUT.PUT_LINE('. Export Data Pump dumpfile version: 10.1.0.1.0 or higher'); DBMS_OUTPUT.PUT_LINE('Usage....: Execute this block with directory and dumpfile name'); DBMS_OUTPUT.PUT_LINE('Example..: Set p_dir := ''MY_DIR'' and p_file := ''expdp_s.dmp'''); DBMS_OUTPUT.PUT_LINE(v_separator); DBMS_OUTPUT.PUT_LINE('Filename.: ' || p_file); DBMS_OUTPUT.PUT_LINE('Directory: ' || p_dir); -- Retrieve directory path SELECT directory_path INTO v_path FROM all_directories WHERE directory_name = UPPER(p_dir); -- Retrieve export dumpfile info DBMS_DATAPUMP.GET_DUMPFILE_INFO( filename => p_file, directory => UPPER(p_dir), info_table => v_info_table, filetype => v_filetype ); var_values.EXTEND(23); FOR i IN 1 .. 23 LOOP BEGIN SELECT VALUE INTO var_values(i) FROM TABLE(v_info_table) WHERE item_code = i; EXCEPTION WHEN OTHERS THEN var_values(i) := ''; END; END LOOP; DBMS_OUTPUT.PUT_LINE('Disk Path: ' || v_path); IF v_filetype >= 1 THEN -- Charset ID to name BEGIN SELECT var_values(5) || ' (' || NLS_CHARSET_NAME(var_values(5)) || ')' INTO var_values(5) FROM dual; EXCEPTION WHEN OTHERS THEN NULL; END; IF v_filetype = 2 THEN DBMS_OUTPUT.PUT_LINE('Filetype.: ' || v_filetype || ' (Original Export dumpfile)'); DBMS_OUTPUT.PUT_LINE(v_separator); SELECT DECODE(var_values(13), '0', '0 (Conventional Path)', '1', '1 (Direct Path)', var_values(13)) INTO var_values(13) FROM dual; DBMS_OUTPUT.PUT_LINE('...Characterset ID of source db..: ' || var_values(5)); DBMS_OUTPUT.PUT_LINE('...Direct Path Export Mode.......: ' || var_values(13)); DBMS_OUTPUT.PUT_LINE('...Export Version................: ' || var_values(15)); ELSIF v_filetype = 1 OR v_filetype = 3 THEN SELECT SUBSTR(var_values(1), 1, 15) INTO v_fileversion FROM dual; SELECT DECODE(var_values(1), '0.1', '0.1 (Oracle10g Release 1: 10.1.0.x)', '1.1', '1.1 (Oracle10g Release 2: 10.2.0.x)', '2.1', '2.1 (Oracle11g Release 1: 11.1.0.x)', '3.1', '3.1 (Oracle11g Release 2: 11.2.0.x)', '4.1', '4.1 (Oracle12c Release 1: 12.1.0.x)', var_values(1)) INTO var_values(1) FROM dual; SELECT DECODE(var_values(2), '0', '0 (No)', '1', '1 (Yes)', var_values(2)) INTO var_values(2) FROM dual; SELECT DECODE(var_values(14), '0', '0 (No)', '1', '1 (Yes)', var_values(14)) INTO var_values(14) FROM dual; SELECT DECODE(var_values(18), '0', '0 (No)', '1', '1 (Yes)', var_values(18)) INTO var_values(18) FROM dual; SELECT DECODE(var_values(19), '0', '0 (No)', '1', '1 (Yes)', var_values(19)) INTO var_values(19) FROM dual; SELECT DECODE(var_values(20), '0', '0 (No)', '1', '1 (Yes)', var_values(20)) INTO var_values(20) FROM dual; SELECT DECODE(var_values(21), '0', '0 (No)', '1', '1 (Yes)', var_values(21)) INTO var_values(21) FROM dual; SELECT DECODE(var_values(22), '1', '1 (Unknown)', '2', '2 (None)', '3', '3 (Password)', '4', '4 (Password and Wallet)', '5', '5 (Wallet)', var_values(22)) INTO var_values(22) FROM dual; SELECT DECODE(var_values(23), '2', '2 (None)', '3', '3 (Basic)', '4', '4 (Low)', '5', '5 (Medium)', '6', '6 (High)', var_values(23)) INTO var_values(23) FROM dual; IF v_filetype = 1 THEN DBMS_OUTPUT.PUT_LINE('Filetype.: ' || v_filetype || ' (Export Data Pump dumpfile)'); DBMS_OUTPUT.PUT_LINE(v_separator); DBMS_OUTPUT.PUT_LINE('...Database Job Version..........: ' || var_values(15)); DBMS_OUTPUT.PUT_LINE('...Internal Dump File Version....: ' || var_values(1)); DBMS_OUTPUT.PUT_LINE('...Creation Date.................: ' || var_values(6)); DBMS_OUTPUT.PUT_LINE('...File Number (in dump file set): ' || var_values(4)); DBMS_OUTPUT.PUT_LINE('...Master Present in dump file...: ' || var_values(2)); IF DBMS_DATAPUMP.KU$_DFHDR_MAX_ITEM_CODE > 15 AND v_fileversion >= '2.1' THEN DBMS_OUTPUT.PUT_LINE('...Master in how many dump files.: ' || var_values(16)); DBMS_OUTPUT.PUT_LINE('...Master Piece Number in file...: ' || var_values(17)); END IF; DBMS_OUTPUT.PUT_LINE('...Operating System of source db.: ' || var_values(9)); IF v_fileversion >= '2.1' THEN DBMS_OUTPUT.PUT_LINE('...Instance Name of source db....: ' || var_values(10)); END IF; DBMS_OUTPUT.PUT_LINE('...Characterset ID of source db..: ' || var_values(5)); DBMS_OUTPUT.PUT_LINE('...Language Name of characterset.: ' || var_values(11)); DBMS_OUTPUT.PUT_LINE('...Job Name......................: ' || var_values(8)); DBMS_OUTPUT.PUT_LINE('...GUID (unique job identifier)..: ' || var_values(3)); DBMS_OUTPUT.PUT_LINE('...Block size dump file (bytes)..: ' || var_values(12)); DBMS_OUTPUT.PUT_LINE('...Metadata Compressed...........: ' || var_values(14)); IF DBMS_DATAPUMP.KU$_DFHDR_MAX_ITEM_CODE > 15 THEN DBMS_OUTPUT.PUT_LINE('...Data Compressed...............: ' || var_values(18)); IF DBMS_DATAPUMP.KU$_DFHDR_MAX_ITEM_CODE > 22 AND v_fileversion >= '4.1' THEN DBMS_OUTPUT.PUT_LINE('...Compression Algorithm.........: ' || var_values(23)); END IF; DBMS_OUTPUT.PUT_LINE('...Metadata Encrypted............: ' || var_values(19)); DBMS_OUTPUT.PUT_LINE('...Table Data Encrypted..........: ' || var_values(20)); DBMS_OUTPUT.PUT_LINE('...Column Data Encrypted.........: ' || var_values(21)); DBMS_OUTPUT.PUT_LINE('...Encryption Mode...............: ' || var_values(22)); END IF; ELSE DBMS_OUTPUT.PUT_LINE('Filetype.: ' || v_filetype || ' (External Table dumpfile)'); DBMS_OUTPUT.PUT_LINE(v_separator); DBMS_OUTPUT.PUT_LINE('...Database Job Version..........: ' || var_values(15)); DBMS_OUTPUT.PUT_LINE('...Internal Dump File Version....: ' || var_values(1)); DBMS_OUTPUT.PUT_LINE('...Creation Date.................: ' || var_values(6)); DBMS_OUTPUT.PUT_LINE('...File Number (in dump file set): ' || var_values(4)); DBMS_OUTPUT.PUT_LINE('...Operating System of source db.: ' || var_values(9)); IF v_fileversion >= '2.1' THEN DBMS_OUTPUT.PUT_LINE('...Instance Name of source db....: ' || var_values(10)); END IF; DBMS_OUTPUT.PUT_LINE('...Characterset ID of source db..: ' || var_values(5)); DBMS_OUTPUT.PUT_LINE('...Language Name of characterset.: ' || var_values(11)); DBMS_OUTPUT.PUT_LINE('...GUID (unique job identifier)..: ' || var_values(3)); DBMS_OUTPUT.PUT_LINE('...Block size dump file (bytes)..: ' || var_values(12)); IF DBMS_DATAPUMP.KU$_DFHDR_MAX_ITEM_CODE > 15 THEN DBMS_OUTPUT.PUT_LINE('...Data Compressed...............: ' || var_values(18)); IF DBMS_DATAPUMP.KU$_DFHDR_MAX_ITEM_CODE > 22 AND v_fileversion >= '4.1' THEN DBMS_OUTPUT.PUT_LINE('...Compression Algorithm.........: ' || var_values(23)); END IF; DBMS_OUTPUT.PUT_LINE('...Table Data Encrypted..........: ' || var_values(20)); DBMS_OUTPUT.PUT_LINE('...Encryption Mode...............: ' || var_values(22)); END IF; END IF; DBMS_OUTPUT.PUT_LINE('...Internal Flag Values..........: ' || var_values(7)); DBMS_OUTPUT.PUT_LINE('...Max Items Code (Info Items)...: ' || DBMS_DATAPUMP.KU$_DFHDR_MAX_ITEM_CODE); END IF; ELSE DBMS_OUTPUT.PUT_LINE('Filetype.: ' || v_filetype); DBMS_OUTPUT.PUT_LINE(v_separator); DBMS_OUTPUT.PUT_LINE('ERROR....: Not an export dumpfile.'); END IF; DBMS_OUTPUT.PUT_LINE(v_separator); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Disk Path: ?'); DBMS_OUTPUT.PUT_LINE('Filetype.: ?'); DBMS_OUTPUT.PUT_LINE(v_separator); DBMS_OUTPUT.PUT_LINE('ERROR....: Directory Object does not exist.'); DBMS_OUTPUT.PUT_LINE(v_separator); WHEN no_file_found THEN DBMS_OUTPUT.PUT_LINE('Disk Path: ' || v_path); DBMS_OUTPUT.PUT_LINE('Filetype.: ?'); DBMS_OUTPUT.PUT_LINE(v_separator); DBMS_OUTPUT.PUT_LINE('ERROR....: File does not exist.'); DBMS_OUTPUT.PUT_LINE(v_separator); END; /
Resultado:
---------------------------------------------------------------------------- Purpose..: Obtain details about export dumpfile.Version: 18-DEC-2013 Required.: RDBMS version: 10.2.0.1.0 or higher . Export dumpfile version: 7.3.4.0.0 or higher . Export Data Pump dumpfile version: 10.1.0.1.0 or higher Usage....: Execute this block with directory and dumpfile name Example..: Set p_dir := 'MY_DIR' and p_file := 'expdp_s.dmp' ---------------------------------------------------------------------------- Filename.: expdp_HERO_20250421_01.dmp Directory: DP_DIR Disk Path: /backup/DATA_PUMP Filetype.: 1 (Export Data Pump dumpfile) ---------------------------------------------------------------------------- ...Database Job Version..........: 19.00.00.00.00 ...Internal Dump File Version....: 5.1 ...Creation Date.................: Mon Apr 21 16:39:32 2025 ...File Number (in dump file set): 1 ...Master Present in dump file...: 1 (Yes) ...Master in how many dump files.: 1 ...Master Piece Number in file...: 1 ...Operating System of source db.: x86_64/Linux 2.4.xx ...Instance Name of source db....: CDB1 ...Characterset ID of source db..: 873 (AL32UTF8) ...Language Name of characterset.: AL32UTF8 ...Job Name......................: "SYS"."SYS_EXPORT_SCHEMA_01" ...GUID (unique job identifier)..: 334BD2746E7617D7E063060A0A0AECE8 ...Block size dump file (bytes)..: 4096 ...Metadata Compressed...........: 1 (Yes) ...Data Compressed...............: 0 (No) ...Compression Algorithm.........: 3 (Basic) ...Metadata Encrypted............: 0 (No) ...Table Data Encrypted..........: 0 (No) ...Column Data Encrypted.........: 0 (No) ...Encryption Mode...............: 2 (None) ...Internal Flag Values..........: 514 ...Max Items Code (Info Items)...: 25 ---------------------------------------------------------------------------- PL/SQL procedure successfully completed.
O bloco anônimo é uma adaptação do script encontrado no seguinte artigo:
- Até a próxima.
— Autor: Leonardo Lopes 21/04/2025 12H:32