读书笔记:用数据泵和SQLLDR轻松搞定Oracle数据迁移

我们的文章会在微信公众号IT民工的龙马人生博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

用数据泵和SQLLDR轻松搞定Oracle数据迁移

在日常的数据库管理中,我们经常需要把数据从一个数据库迁移到另一个数据库。Oracle提供了两种强大的工具来帮我们完成这个任务:数据泵和SQLLDR。

数据泵卸载:数据库的"打包神器"

想象一下,你要搬家,需要把物品打包成箱子。数据泵就是Oracle的"打包神器",它能把数据打包成专门的二进制格式文件。

使用方法超简单:

  1. 准备存储位置
create or replace directory tmp as '/tmp';

这就好比告诉Oracle:"请把打包好的箱子放在/tmp这个文件夹里"

  1. 开始打包数据
create table all_objects_unload
organization external
(
  type oracle_datapump
  default directory TMP
  location('allobjects.dat')
)
as
select * from all_objects;

这个命令的意思是:"请把all_objects视图中的所有数据打包,存成allobjects.dat文件"

数据泵的强大之处:

  • 可以打包任意复杂的数据,包括多表关联的结果
  • 可以添加条件,只打包需要的数据
  • 支持压缩和加密(需要企业版)

安全提醒: 这个功能很强大,但也要注意安全管理,确保只有授权人员才能使用。

  1. 在目标数据库恢复数据
insert /*+ append */ into some_table 
select * from all_objects_unload;

SQLLDR:数据导入的"高速通道"

如果说数据泵是专业的打包工具,那么SQLLDR就是高效的"搬运工",特别擅长处理文本格式的数据。

SQLLDR的两种工作模式:

  • 常规路径:使用标准的SQL插入语句,稳妥可靠
  • 直接路径:绕过SQL引擎,直接操作数据块,速度极快

基础使用方法:

  1. 准备控制文件(比如demo1.ctl)
LOAD DATA
INFILE *
INTO TABLE DEPT
FIELDS TERMINATED BY ','
(DEPTNO, DNAME, LOC)
BEGINDATA
10,Sales,Virginia
20,Accounting,Virginia
30,Consulting,Virginia
40,Finance,Virginia

这个控制文件很好理解:

  • LOAD DATA:我要加载数据啦
  • INFILE *:数据就在本文件内
  • INTO TABLE DEPT:要导入到DEPT表
  • FIELDS TERMINATED BY ',':字段用逗号分隔
  • 后面的就是具体数据了
  1. 执行导入
sqlldr userid=eoda/foo@PDB1 control=demo1.ctl

数据加载的四种策略:

  • INSERT:默认方式,要求表必须是空的
  • APPEND:在现有数据后追加
  • REPLACE:先删除所有现有数据,再插入
  • TRUNCATE:先清空表,再插入(比REPLACE更快)

SQLLDR快速模式:更智能的数据导入

Oracle还提供了更智能的快速模式,它会自动选择最佳导入方式。

自动选择策略:

  • 如果有创建目录的权限,就用外部表方式
  • 如果没有权限,就用直接路径方式

使用方法极其简单:

sqlldr eoda/foo@PDB1 table=dept

系统会自动检测dept.dat文件,并完成整个导入过程。你甚至可以让它只生成导入脚本而不执行:

sqlldr eoda/foo@PDB1 table=dept external_table=generate_only

实践建议

  1. 数据泵适合:数据库之间的数据迁移,特别是大量数据
  2. SQLLDR适合:从文本文件导入数据,特别是CSV格式
  3. 快速模式适合:简单的数据导入任务,让Oracle自动选择最佳方案

无论选择哪种工具,记得每次操作后都要检查日志文件,确保操作成功完成。这些工具虽然强大,但也要谨慎使用,特别是在生产环境中。

------------------作者介绍-----------------------
姓名:黄廷忠
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

posted @ 2025-11-19 16:29  认真就输  阅读(2)  评论(0)    收藏  举报