第一范文网 - 专业文章范例文档资料分享平台

Oracle 数据泵导出和导入

来源:用户分享 时间:2026/9/3 12:09:13 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

简介

Oracle 10g引入了DATA PUMP提供的是一种基于服务器的数据提取和恢复的实用程序,DATA PUMP在体系结构和功能上与传统的EXPORT和IMPORT实用程序相比有了显著的提升。DATA PUMP允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制。

注意:数据泵文件与传统的EXP/IMP数据转储文件是不兼容的。 以下是DATA PUMP的几个优点介绍:

1.数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。

2.通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。

3.数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改

创建DIRECTORY

DATA PUMP要求为将要创建和读取 的数据文件及日志文件创建目录,这个参数是用来定义一个目录,前面已经提到数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server端的目录。将要访问数据泵文件的用户必须要拥有该目录的读/写权限。

注意:在开始操作之前要验证外部目录是否存在,并且下达create directory命令的用户需要拥有create any directory的系统权限。

下面给出一个创建名为TEST_EXPDP的目录并授予hs_user,hs_his用户访问此目录读/写权限。

SQL> Create directory TEST_EXPDP as '/u03/expdpdump'; SQL> Grant read,write on directory TEST_EXPDP to hs_user,hs_his; 查看数据库中已创建的directory的两个视图: SELECT * FROM ALL_DIRECTORIES; SELECT * FROM dba_DIRECTORIES;

数据泵导出

[oracle@LinuxRedHat u03]$ expdp system/mingyue@HS2008 schemas=hs_his,hs_futures dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP;

Export: Release 10.2.0.1.0 - Production on 星期三, 10 11月, 2010 0:16:04 Copyright (c) 2003, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options Starting

\\

dumpfile

system/********@HS2008

logfile=expdp_test.log

schemas=hs_his,hs_futures directory=TEST_EXPDP

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 1.714 GB 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/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

=expdp_test.dmp

如上面的清单所显示的只是罗列出来即将导出来的所有数据库对象,在导出过程中,DATA DUMP创建并使用了一个名为SYS_EXPORT_SCHEMA_01的对象,此对象就是DATA DUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现,如下: [oracle@LinuxRedHat u03]$ expdp system/mingyue@HS2008 schemas=hs_his dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisjob; Export: Release 10.2.0.1.0 - Production on 星期三, 10 11月, 2010 0:36:56 Copyright (c) 2003, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options Starting \: system/********@HS2008 schemas=hs_his dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisjob Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 1.315 GB 在执行过程中,可以按Ctrl+C组合键退出当前交互模式,退出之后,导出操作不会停止,这不同于Oracle以前的EXP。以前的EXP,如果退出交互式模式,就会出错终止导出任务。由于EXPDP是数据库内部定义的任务,已经与客户端无关,退出交互之后会进入export的命令行模式,此时支持status等查看命令:

Export> status --查看当前JOB的状态及相关信息

DATA PUMP与传统的EXP/IMP相比它还可以对正在运行的JOB进行停止和启动:

Export> stop_job --暂停JOB

此时通过status命令查看到这时JOB的状态值是UNDEFINED Export> start_job --重启暂停的JOB

Export> kill_job --取消当前的JOB并释放相关客户会话 Export> continue_client --通过此命令查看已连接JOB的日志 Export> exit_client --通过此命令退出export模式 --已退出export模式后再次连接去查看JOB的状态用以下命令: [oracle@LinuxRedHat expdpdump]$ expdp system/mingyue attach; [oracle@LinuxRedHat expdpdump]$ expdp system/mingyue attach=system. HS_HISJOB; 导出模式罗列: 按表模式导出:

expdp system/mingyue@HS2008 tables=hs_his.hisholdsinfo,hs_his.hisfundjour dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisjob1;

按查询条件导出:

expdp system/mingyue@HS2008 tables=hs_his.hisfuassettot dumpfile =expdp_test.dmp logfile=expdp_test.log

directory=TEST_EXPDP

job_name=hs_hisjob2

query='\

init_date between 20080501 and 20080701\

注意:如果QUERY条件写得有问题那么下面总是会报以下的错误 ORA-39001: invalid argument value

ORA-39035: Data filter SUBQUERY has already been specified.

按表空间导出:

Expdp

system/mingyue@HS2008

dumpfile=tablespace_test.dmp

logfile=tablespace_test.log

tablespaces=HS_HIS_DATA,HS_HIS_IDX directory=TEST_EXPDP job_name=hs_hisjob6;

导出整个数据库:

expdp

directory=TEST_EXPDP job_name=hs_hisjob6;

system/mingyue@HS2008

dumpfile

=full.dmp

full=y

logfile=full.log

使用exclude,include导出数据

Include导出用户中指定类型的指定对象

仅导出hs_his用户下以HISFU开头的所有表包含与表相关的索引,备注等不包含过程等其它对象类型:

expdp

hs_his/handsome@HS2008

dumpfile=include_1.dmp

logfile=include_1.log

directory=TEST_EXPDP job_name=job_hisjob7 include=TABLE:\\\

导出hs_his用户下排除HISFU开头的所有表:

expdp

system/mingyue@HS2008

schemas=hs_his

dumpfile=include_1.dmp

logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 include=TABLE:\\\LIKE \\'HISFU%\\'\\\

仅导出hs_his用户下的所有存储过程:

expdp

system/mingyue@HS2008

schemas=hs_his

dumpfile=include_1.dmp

logfile=include_1.log directory=TEST_EXPDP job_name=job_hisjob7 include=PROCEDURE;

Exclude导出用户中指定类型的指定对象

导出hs_his用户下除出TABLE类型以外的所有对象,如果表不导出那么与表相关的索引,约束等与表有关联的对象类型也不会被导出:

expdp

system/mingyue@HS2008

schemas=hs_his

dumpfile=exclude_1.dmp

logfile=exclude_1.log directory=TEST_EXPDP job_name=job_hisjob7 exclude=TABLE;

导出hs_his用户下排除HISFU开头的所有表:

expdp

hs_his/handsome@HS2008

dumpfile=include_1.dmp

logfile=include_1.log

directory=TEST_EXPDP job_name=job_hisjob7 exclude=TABLE:\\\

导出hs_his用户下的所有对象,但是对于表类型只导出以HISFU开头的表:

expdp

hs_his/handsome@HS2008

dumpfile=include_1.dmp

logfile=include_1.log

directory=TEST_EXPDP job_name=job_hisjob7 exclude=TABLE:\\\

注意:

1. 如果content=data_only那么导出时就不能使用exclude,include 2. LINUX及UNIX对于特殊字符都要加一个转义字符如’ ( )等这些字符在

EXPDP中都要加上一个”\\”进行转义,否则会有如下错误出现: [oracle@LinuxRedHat dumpfile=include_1.dmp Export: Release 10.2.0.1.0 - Production on 星期六, 13 11月, 2010 17:54:42 Copyright (c) 2003, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options ORA-39001: invalid argument value expdpdump]$ expdp hs_his/handsome@HS2008 directory=TEST_EXPDP logfile=include_1.log job_name=job_hisjob7 include=table:\ORA-39000: bad dump file specification ORA-31641: unable to create dump file \ORA-27038: created file already exists Additional information: 1 数据泵导入 按表导入:

导入expdp_test.dmp文件中的表,此文件是以system用户按schemas=hs_his导出的:

impdp hs_his/handsome@HS2008 dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_histb1;

tables=hs_his.hisholdsinfo,hs_his.hisfundjour

按用户导入:

这种直接按用户导入的方法与EXP,IMP相比是用户可以不用存在可以直接导入因为EXPDP导出的时候会将用户相关的信息全部导出来,比如用户原来使用的密码,表空间,系统与操作权限等基本上保持用户与删除前的权限一致如下图: impdp system/mingyue@HS2008 schemas=hs_fund,hs_futures dumpfile =expdp_test.dmp logfile=expdp_test.log directory=TEST_EXPDP job_name=hs_hisut;

搜索更多关于: Oracle 数据泵导出和导入 的文档
Oracle 数据泵导出和导入.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6z3ui6tmib553972zwrm_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top