data pump方式导入与导出(impdp,expdp)

简介:

 一、data pump概述:

data pump方式的导入和导出对应命令行impdp和expdp,这两个命令与imp、exp非常类似,但功能和效率差异巨大,或者说基本没什么相似的地方,并且exp命令生成的dump文件与expdp命令生成的dump文件也不兼容。

主要特性:

*  支持并行处理导入、导出任务。

*  支持暂停和重启动导入、导出任务

*  支持通过Database Link方式导出或导入远端数据库中对象。

*  支持在导入时通过REMAP_SCHEMA、REMAP_DATAFILE、REMAP_TABLESPACE几个参数实现导入过程中自动修改对象性属主、数据文件或所在表空间。

*  导入/导出时提供了非常细粒度的对象控制。

Data Pump 导入/导出工具是一个服务器端的工具,该工具一般在目标服务器上执行,导出或导入本地的对象(唯一的例外是通过IMPDP/EXPDP)的NETWORK_LINK参数,能够处理远端数据,不过这仍需要通过本地的Database Link对象)到本地磁盘,并且通过DUMPFILE参数指定Dump文件,并不是指定本地的详细文件路径,而只是指定文件名,另一参数DIRECTORY用来指定dump文件所在路径。注意directory参数也并非直接指定本地磁盘路径,而是指定oracle数据库的Directory对象。

二、Data Pump有以下几种方式导入或导出数据:

 * 直接路径方式  (默认使用此方式处理数据)

 * 外部表方式

 *  复制数据文件方式

 *  网络链接方式。

三、调用方式:

1、命令方式调用,类似imp、exp使用

如:expdp scott/tiger dumpfile=

2、参数文件方式调用

如:expdp username/password@tnsname parfile=parameter.dat logfile=log.log

3、交互方式调用

四、操作模式:

1、整库模式,对应参数FULL

2、schema模式,对应参数SCHEMA,中对应多个对象

3、表模式,对应参数tables

4、表空间模式,对应参数tablespaces

5、传输表空间模式,对应参数:transport_tablespaces

五、过滤数据:

Data Pump实现对表中记录的过滤依赖于QUERY和SAMPLE两个参数,

query参数与exp命令下使用相似,如,表a仅导出所有ID>5的记录,表b导出所有ID<30的记录:query=A:"WHERE ID>5",B:"WHERE ID<30"

SAMPLE :用来指定导出数据的百分比,可指定值的范围从0.000001到99.999999

语法如下:

SAMPLE =[[schema_name.]table_name:]sample_percent

指定该参数后,expdp导出将自动控制导出的记录量。如导出a表中50%的记录,设置sample参数如下:

sample=a:50

 六、过滤对象

data pump 中过滤对象也是两个参数:EXCLUDE和INCLUDE  (排除与包含)

1、exclude 反规则

指定不被包含的对象类型或对象名称,exclude=object_type[:name_clause][,...]

如:exclude=index:"like 'idx_table%'",constraint:"like 'ckc_tblb%'",grant

 

2、include 正规则

指定包含的对象类型或对象名称。使用与exclude一样

 ============================================================

以下操作示例:

在使用impdp/expdp命令前,首先需创建相关directory对象,并授予相应用户读写权限

查看系统目录对象:select * from dba_directaries;

注意上述路径:如是在linux下指定路径为/   例如:

create directory dump_file_dir as '/u02/oradata/dmp'

1、以下导出emp、dept表,并指定只导出emp表中sal>1500的数据:

上述语句需注意的是,在使用query参数时,转义字符需注意,windows传说是使用双引号转义,但实验好像不是传说那样子的,也跟linux下一样使用“\”来转义。为了避免转义字符问题,可以使用指定parfile来执行。

 建立相对应该的parfile文件如下,并保存为par1.par:

directory=dump_file_dir
dumpfile=expdp_20120522.dmp
logfile=expdp_201205.log
tables=(emp,dept)
query=emp:"where sal>1500"

在linux服务器端执行:

 2、高级过滤示例:

建立如下par2.par:

directory=dump_file_dir
dumpfile=expdp_20120522_02.dmp
logfile=expdp_201205_02.log
include=table:"like 'EMP%'"
query=emp:"where sal>1500"

 注意:上述like条件里面的大小写

执行结果:

 3、跨数据库链接方式导出数据:

4、并行方式导出提高效率:

 以下为导出ming对象,不加任何参数:

导出数据大小为:1.67G, 用时为:2分40秒,由于数据量较小,所以体现不了expdp效率。

除了默认参数外,expdp真正提高效率的参数是parallel,即指并行度。需要注意的是,使用parallel参数同时需使用filesize参数,以下示例:

 parallel=4时效果也不是很明显。

parallel=2时,也是差不多,

由于数据量不大,所以体现不了expdp的效率。

但同时需要注意的效率是否真正提升,并不是只增加并行参数,具体要视情况而定。

 

七、导入对象到目标SCHEMA:

需求:导出a服务器中scott用户下的对象,到b服务器中同名用户,用户名和默认表空间均相同。

        在imp命令环境下,如果想只导入对象定义而不导入数据,可以通过参数ROWS=n来实现,而impdp没有提供rows参数,不过它提供了一个更专业的参数:content,该参数有三个属性值:

*  ALL:导入对象定义和数据,该参数的默认值就是all

*  DATA_ONLY:只导入数据

*  METADATA_ONLY: 只导入对象定义

示例:只导入对象定义。

 *************************************

近段时间工作较忙,后续有时间继续更新……

















本文转自pimg200551CTO博客,原文链接: http://blog.51cto.com/pimg2005/863341,如需转载请自行联系原作者


相关文章
|
SQL Oracle 关系型数据库
oracle导入的dmp文件
oracle导入的dmp文件
oracle导入的dmp文件
|
Oracle 关系型数据库 数据库
Oracle expdp impdp导出导入命令及数据库备份
Oracle expdp impdp导出导入命令及数据库备份
290 0
|
Oracle 关系型数据库
PLSQL_数据泵导入进度查看Impdp/Expdp Status(案例)
20150701 Created By BaoXinjian 一、摘要 查看EXPDP/IMPDP的进度,当你当如导出的时候,如果数据量比较大,中途有些人会着急,不免想看看进度如何 1. 两个视图 DBA_DATAPUMP_JOBS; DBA_DATAPUMP_SESSIONS; 2.
3309 0
|
SQL Oracle 关系型数据库
oracle学习91-Oracle导出导入表(.sql、.dmp文件)两种方法
oracle学习91-Oracle导出导入表(.sql、.dmp文件)两种方法
654 0
|
Oracle 关系型数据库 数据安全/隐私保护
oracle 创建用户 以及创建表空间 和导出导入dmp
oracle 创建用户 以及创建表空间 和导出导入dmp
|
机器学习/深度学习 Oracle 关系型数据库
【expdp】10g数据泵expdp工具选项详解及应用示例
理解expdp各个选项的含义最好的途径就是逐一的进行测试,这样可以在感性上有一个真实的体验。 1.数据泵expdp导出工具与传统的exp导出工具的区别 1)exp是客户端程序,既可以在客户端使用,也可以在服务器端使用; 2)expdp是服务器端工具,只能在ORACLE服务器端使用,不能在客户端使用; 3)这两个工具生成的备份文件不能被对方与之对应的导入工具使用; 4)expdp在灵活性和功能性上与exp相比,有质上的飞跃。 2.expdp命令行选项列表 使用“-help”选项获得expdp命令可用的选项列表和简单的注释信息。 ora10g@linux5 /expdp$ expdp help
345 0
|
SQL 负载均衡 Oracle
使用datapump 导出导入同义词(export and import synonym using datapump)
      对于同义词的备份我们有多种方式来实现,如直接通过脚本生成同义词的创建脚本,或者使用dbms_metadata.get_ddl来提取同义词的定义脚本。
1801 1