暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
浅谈Oracle Exp与Expdp工具导出DMP文件格式的差别
390
6页
0次
2022-10-14
10墨值下载
浅析 Oracle Exp/Expdp 实用工具导出的 DMP 文件格式的不同之处
近日,因实际工作需要,笔者对 Exp/Expdp 导出的 DMP 文件进行了初步研究,现记录
如下,一防遗忘,二来或可供 DBA 同行们参阅与指正。
Oracle 10g 以来,在原有 Exp 数据导出工具之外,新增加了 ExpdpOracle 称其为
DataPump 数据泵)工具,效率号称提升了好几个数量级。或许是为了便于 DBA 的了解,
两个工具导出的文件名后缀默认都是 DMP这样一来,无形中造成了不必要的误解与麻烦:
一是“粗心”的 DBA 误以为这两个 DMP 文件格式兼容Oracle 许在某个 Concept
有专门介绍)
二是这两个“美猴王”单从外观上看实在有点“傻傻分不清楚”,除非用 Hex 编辑器
打开它;
三是作为 DMP 文件核心信息的、Oracle 数据库“最复杂而犯晕”的数据库字符集信息
的记录方式很让人挠头。
下面是本人的浅见,错误之处,恳请各位不吝赐教!
() Exp 导出格式 DMP 文件
该格式的 DMP 文件在文件头区记录了两个重要信息:一是数据库版本、一是数据库字
符集;数据库版本格式为 Vxx.xx.xx,下图为 08.01.07 Oracle8.1.7 版,数据库字符集为该
文件的第 23 字节(注意:偏移从 0 位起算, 23 字节即是 00000000h 12 号位)
本例为 00 01,即 US7ASCII03 54 即为 CHS16GBK,修改此 2 字节可手工修改 Exp 导出文
件的字符集。需要特别提醒注意的是:修改 DMP 文件推荐使用 WinHEXUltraEdit 等编辑
工具,确保在 HEX16 进制,下同)修改模式下进行,误修改可能会导致文件永久损坏!!!
此外,Exp 工具的导出日志文件中详细记录了数据库字符集信息,如需查询字符集,
需查看该日志即可。以下是 Exp 工具的 LOG 日志文件格式示例:
可见,数据库版本、数据库字符集、国家字符集已经在日志中有记录了。
() Expdp 格式的 DMP 文件
该工具导出的 DMP 文件在文件头区记录的信息更多,有平台版本,见下图标记 1
IBMPC/WINNT64-9.1.0,有数据库实例名,下图标记 2,为 oracle980zd,数据库字
符集,下图标记 3,为 CHS16GBK数据库版本,下图标记 4格式为 xx.xx.xx.xx.xx,本
例为 11.02.00. 04.00,即为版本 11.2.0.4.0
打算手工修改 Expdp 导出 DMP 文件字符集的朋友们要当心,笔者不能冒猜是否
强制修改 120130h 段就可以达到目的!!在没有实验证实的情况下,不建议强制修
改此 DMP 文件的数据库字符集,强烈建议按照导出时的字符集导入目标库,再对目标
库的字符集进行修改,这是最安全、保险的操作。
作为一名 DBA,建议 Oracle 在将 DMP 导入目标库时由用户选择是否做字符集转
换。显然,这得有一个前提,那就是目标数据库字符集必须是源 DMP 文件字符集的超
集!而且,用户必须同意 Oracle 对源库的表定义进行目标库字符集适配的调整权限,
如果目标库字符集不兼容源 DMP 数据库字符集,导入的数据自然会变成乱码。
此外,该文件的头区信息与 Exp DMP 格式有明显的不同。首先,该文件的 2
3 字节不表示字符集了,01 91 已不是字符集内码了,修改此代码肯定会造成文件损坏;
其次,此文件的 4050h 偏移段与 Exp 导出的 DMP 格式完全不同,Exp 的恒为 20,即
空白,Expdp 的为“SYS_EXPORT”等字样。笔者以为,此段或可成为两种格式的判断
依据。
同样地,下面是 Expdp 工具 LOG 日志文件格式示例,数据库字符集信息居然被 Oracle
省去了,好在 DMP 文件头记录的信息已经足够多了。
of 6
10墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜