当前位置:网站首页 > 技术博客 > 正文

oracle数据泵详解



Oracle Data Pump(以下简称数据泵)是Oracle 10g开始提供的一种数据迁移工具,同时也被广大DBA用来作为数据库的逻辑备份工具和体量较小的数据迁移工具。与传统的数据导出/导入工具,即exp/imp工具相比,数据泵更为高效和安全,数据泵主要包含以下三个部分:

  1. 操作系统命令行客户端,expdpimpdp
  2. DBMS_DATAPUMP PL/SQL包(也被认为是Data Pump API);
  3. DBMS_METADATA PL/SQL包(也被认为是Metadata API)。

DBMS_DATAPUMP包主要执行实际数据的导出和导入工作,expdp和impdp命令也是通过命令行调用该包当中的存储过程实现数据导出导入功能,这个包是数据泵当中最核心的部分;
DBMS_METADATA包主要提供当数据导出导入用于元数据移动时,对元数据内容的提取、修改和重新创建的功能。

本文主要讨论的是命令行工具expdpimpdp。关于数据泵更详细的内容可以参考官方文档说明:Overview of Oracle Data Pump

数据泵操作系统命令行分为导出工具expdp,导入工具impdp,对比早期版本的数据导出导入工具而且有着较大的效率性能提高,主要包含以下优点:

  1. 支持并行地进行数据导出和导入任务;
  2. 支持暂停、重启动任务;
  3. 支持更多的对象类型的过滤;
  4. 支持导入任务中元数据对象的修改、重映射;
  5. 支持预估导出任务所需的空间大小需求,以便合理规划存储导出任务数据的路径。
  1. 操作系统(OS):CentOS Linux release 7.5.1804 (Core)
  2. 数据库版本(Oracle Database):Oracle Database 11g R2(11.2.0.4.0)

同时配置了示例SCHEMA和解锁了用户SCOTTHR

  • 创建数据泵导出导入目录
 
  
  • 授予用户读写目录权限
 
  
  • 授予用户DATAPUMP_EXP_FULL_DATABASE角色和DATAPUMP_IMP_FULL_DATABASE角色权限
    为了使scott和hr用户有导出/导入全库的权限,所以授予这两个用户DATAPUMP_EXP_FULL_DATABASE角色和DATAPUMP_IMP_FULL_DATABASE角色权限

 
  

Oracle Data Pump Export(以下简称为export)是数据泵用于将数据和元数据从数据库中导出并存储在操作系统上一组转储文件集的工具(对应操作系统命令为expdp)。导出的转储文件集只能通过数据泵导入工具impdp进行导入,文件集可以在本系统进行导入同时也支持在其他系统上进行导入。文件集包含一个或多个文件,这些文件分别存储了表实际数据、对象元数据和控制信息,文件集存储格式为专有的二进制格式。

由于expdp工具是服务端而非客户端工具,因此DBA必须为导出操作用户指定目录对象来存储转储文件集,目录对象是数据库对象,在操作系统层面对应的文件路径。

expdp命令行工具主要有三种工作方式:

  • 命令行方式(Command-Line Interface)
    通过命令行方式直接为expdp指定相应的参数文件进行导出任务。


  • 参数文件方式(Parameter File Interface)
    将命令行参数写入参数文件,通过指定参数parfile来指定要读取的参数文件,如果指定参数涉及引号,建议使用参数文件方式。


  • 命令交互方式(Interactive-Command Interface)
    停止写入日志文件,并显示Export>提示符,可以在提示符当中输入相应的命令。可以在命令行方式和参数文件方式开始之后输入Ctrl+C调用命令交互方式,命令交互方式也可以连接到正在执行或者已停止的任务。


通过执行如下命令可以得出expdp主要参数用法说明:

 
  
 
  
  • 全导出模式
    需要导出全部数据库数据。通过指定参数FULL,必须有DATAPUMP_EXP_FULL_DATABASE权限。


  • SCHEMA导出模式
    需要导出指定SCHEMA的所有数据。默认的导出模式,要导出非导出用户SCHEMA数据必须有DATAPUMP_EXP_FULL_DATABASE权限。


  • 表空间模式
    需要导出属于表空间的所有数据。


  • 表导出模式
    需要导出指定的表。


  • 可传输表空间模式
    需要导出指定表或者指定表空间的元数据信息,便于表或表空间的数据迁移。详见参数TRANSPORTABLETRANSPORTABLE_TABLESPACES说明。


  • 导出整个数据库
 
  
  • 导出SCHEMA
 
  
  • 导出表空间
 
  
  • 导出表数据(包含表的对象)
 
  
  • 只导出表(或多张)数据(不包含其它表对象)
 
  
  • 只导出表索引(不包含其它对象)
 
  
  • 导出表中部分数据
 
  
  • 指定导出为多个文件
 
  
  • 压缩导出文件
 
  
  • 加密导出文件
 
  
  • 预估导出所需空间大小
 
  

Oracle Data Pump Import(以下简称为import)是数据泵用于将数据和元数据从expdp导出文件集中导入目标数据库的工具(对应操作系统命令为impdp)。

expdp工具相似,impdp命令行工具也有三种工作方式:

  • 命令行方式(Command-Line Interface)
    通过命令行方式直接为impdp指定相应的参数文件进行导入任务。


  • 参数文件方式(Parameter File Interface)
    将命令行参数写入参数文件,通过指定参数parfile来指定要读取的参数文件,如果指定参数涉及引号,建议使用参数文件方式。


  • 命令交互方式(Interactive-Command Interface)
    停止写入日志文件,并显示Ixport>提示符,可以在提示符当中输入相应的命令。可以在命令行方式和参数文件方式开始之后输入Ctrl+C调用命令交互方式,命令交互方式也可以连接到正在执行或者已停止的任务。


通过执行如下命令可以得出impdp主要参数用法说明:

 
  

因为impdp大部分命令与expdp相同,以下只说明不同的部分:

 
  
  • 全导入模式
    需要导入全部数据库数据。通过指定参数FULL,必须有DATAPUMP_IMP_FULL_DATABASE权限,这是基于文件导入的默认模式。


  • SCHEMA导入模式
    需要导入指定SCHEMA的所有数据。导入源可以是FULL、表、表空间或SCHEMA模式导出转储文件集或其他数据库,要导入非导入用户SCHEMA数据必须有DATAPUMP_IMP_FULL_DATABASE权限。


  • 表空间模式
    需要导入属于表空间的所有数据,导入源可以是FULL、表、表空间或SCHEMA模式导出转储文件集或其他数据库。


  • 表导入模式
    需要导入指定的表,导入源可以是FULL、表、表空间或SCHEMA模式导出转储文件集或其他数据库,如果要导入不属于导入用户SCHEMA的表,则必须有DATAPUMP_IMP_FULL_DATABASE权限。


  • 可传输表空间模式
    需要导入指定表或者指定表空间的元数据信息,便于表或表空间的数据迁移,必须有DATAPUMP_IMP_FULL_DATABASE权限。详见参数TRANSPORTABLE_TABLESPACESTRANSPORT_DATAFILES说明。


  • 数据准备

先使用SYS用户通过expdp执行一次FULL模式的导出:

 
  
  • 导入整个数据库
 
  
  • 导入SCHEMA
 
  
  • 导入表数据(包含表的对象)
 
  
  • 只导入表数据(不包含其它表对象)
 
  
  • 导入转换分区表为非分区表
 
  
  • 导入表空间
 
  

以上对Oracle Data Pump(数据泵)命令行工具expdp和impdp主要参数选项进行解析说明,同时也列举了部分常见的使用方式。数据泵工具对于不同系统平台的数据迁移是十强大的工具,在数据量较小的情况效率很高,除此之外也可以作为数据库逻辑备份的主要工具。当然,本文没有对工具中可传输(transportable)部分进行演示,只是进行参数的说明,这个留待以后再进一步总结。

https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_overview.htm#SUTIL801
https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL200
https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_import.htm#SUTIL300




☆〖本人水平有限,文中如有错误还请留言批评指正!〗☆

  • 上一篇: c语言b!=0
  • 下一篇: nginx最全教程
  • 版权声明


    相关文章:

  • c语言b!=02025-07-03 09:30:00
  • as400 ovrdbf2025-07-03 09:30:00
  • 同步非阻塞2025-07-03 09:30:00
  • usb v2.02025-07-03 09:30:00
  • c语言中指针函数的用法2025-07-03 09:30:00
  • nginx最全教程2025-07-03 09:30:00
  • win10自动检查并修复2025-07-03 09:30:00
  • 国内最快的DNS2025-07-03 09:30:00
  • jsp el表达式foreach2025-07-03 09:30:00
  • mysql 数据表设计应注意的事项2025-07-03 09:30:00