Oracle Dump文件格式

程序简介
这是一个把Oracle exp导出的dump文件导入到Oracle数据库的工具。

前一段时间,有一个项目需要从Oracle导出的dump文件中提取数据,但是dump文件格式并不清楚,在网上也没有找到解释,只知道这是Oracle内部使用的不公开格式。 没有可参考的资料,只能自己研究了,通过考察二进制dump文件,结合Oracle数据存储格式的经验,基本清楚了dump文件的格式。 略去一些不需要的信息,终于可以把数据从文件中提取出来了。
现在把dump文件格式总结一下,并开发了一个模拟Oracle imp的程序,把数据重新导入到数据库中。

这里提供的是一份完整的dump数据导入程序的源代码,还包含一份Oracle exp导出的dump文件格式说明。
所需知识
这个软件是在Linux下用C语言调用OCI接口开发的,在阅读源代码时需要熟悉C语言、OCI编程技术和Oracle的一些基本概念。代码有详细注释, OCI调用的流程都是标准的,很容易看懂。
你能得到什么
阅读这个软件的源代码,能够让你掌握Oracle导出数据的格式,当文件不能用imp程序导入时,你能清楚哪一部分出了问题,用这个程序还能挽救数据。 同时你能学会怎样用C语言处理大文件,学会OCI中怎样更快的插入数据,学会OCI的基本编程格式。

当你告诉你的同事或领导,你能从Oracle的dump文件中抽取需要的数据,他们一定认为你掌握了一项高级技能。改造一下这个程序,可以不必导入数据库 就能查看dump文件中的数据,就能检查dump文件是否完整,目前还没有方法在不导入数据库的情况下检查dump文件的完整性,也有很多时候,imp程序不能 导入dump文件,这时你学到的技术就能派上大用场了。花一顿饭的钱就能学到这么棒的技术,你不想看看吗?如果哪天你换了公司,告诉面试你的技术官, 你精通Oracle的导出格式,并给他演示用自己的方法查看dump文件,他一定会对你刮目相看的。
源码列表
这里把源代码中的C语言文件列在下面,也可管中窥豹。

./source/import_table.c
./source/show_before.c
./source/import.c
./source/create_table.c
./source/put_column.c
./source/charset.c
./source/commit_work.c
./source/show_head.c
./source/bind_array.c
./source/complete_row.c
./source/copyright.c
./source/complete_table.c
./source/file_io.c
./source/is_character_type.c
./source/oci/checkerr.c
./source/oci/connect_db.c
./source/oci/disconnect_db.c
./source/prepare_insert.c

运行环境
下载的测试代码在64位 CentOS 5.6
Oracle 11.2.0.1上测试通过

Linux内核版本 2.6.18
在这个版本以上的Linux x86_64环境都可以运行
下载测试