天天看点

如何校验dmp文件为exp导出还是expdp导出

在Oracle数据库当中DBMS_DATAPUMP.GET_DUMPFILE_INFO()存储过程可以从dump文件中获取信息

Filetype返回以下文件类型:

0: unknown

1: Data Pump dump file

2: original Export dump file

可以通过DBMS_DATAPUMP.GET_DUMPFILE_INFO()存储过程来判断dmp文件是通过exp导出还是expdp导出;

首先创建一个directory目录用于保存dmp文件

SQL> create or replace directory cmpa  as '/tmp/****';

Directory created.           
如何校验dmp文件为exp导出还是expdp导出

然后在sqlplus当中执行如下代码:

set serveroutput on
declare
 v_filetype    NUMBER; 
 v_info_table  sys.ku$_dumpfile_info; 
begin
 dbms_datapump.get_dumpfile_info(
  filename => 'woner_****_20191204.dmp',
  directory => upper('****'), --****就是directory目录的名称
  info_table => v_info_table, filetype => v_filetype);
  dbms_output.put_line('Filetype : ' || v_filetype);
end;           
如何校验dmp文件为exp导出还是expdp导出

本示例输出filetype为2,表示导出的文件是exp导出的;

还有其他的方式比如通过string或者用文本工具强行打开查看文件头也可以识别,但是这种的更官方一些;