模仿Oracle exp/imp的工具

程序简介
模仿Oracle的 exp/imp utilities开发的Oracle数据库导出/导入工具。

有一个项目中希望集成一个Oracle数据备份的工具,很多解决方案是通过脚本调用Oracle的exp命令实现的。 这是一个简单易行的办法,但也有缺点,数据库用户密码和连接信息都在脚本中,如果其他地方修改了密码, 而在脚本中忽略了,程序就不能备份了。还有如果导出过程有错误,也不能及时发现。
基于上述的考虑,决定自己写一个Oracle数据备份工具,可以模仿exp/imp来开发。 工具中只是模仿了exp/imp的命令行参数,其他都是自己设计开发的。 如果希望用在项目中,修改参数传递方式和错误输出方式就可以轻松与自己的项目集成在一起。

这里提供的是一份完整的Oracle数据导出/导入程序的源代码,还包含一份详细的设计说明,包括设计思路和技术实现要点。
所需知识
这个软件是在Linux下用C语言调用OCI接口开发的,因此在阅读源代码前需要熟悉C语言、OCI编程技术和Oracle的一些基本概念。
源码列表
这里把源代码中的C语言文件列在下面,也可管中窥豹。

./source/check_error.c
./source/convert_sqlt.c
./source/exp/write_head.c
./source/exp/single_export.c
./source/exp/export_create_table.c
./source/exp/write_table_info.c
./source/exp/export_create_constraint.c
./source/exp/fetch_lob.c
./source/exp/multiple_export.c
./source/exp/export_table_info.c
./source/exp/free_lob_locator.c
./source/exp/fetch_long.c
./source/exp/export_create_index.c
./source/exp/export_table.c
./source/exp/export_column_info.c
./source/exp/convert_type.c
./source/exp/export.c
./source/exp/write_cache.c
./source/exp/prepare_select.c
./source/imp/import_table.c
./source/imp/multiple_insert.c
./source/imp/insert_lob.c
./source/imp/import.c
./source/imp/create_table.c
./source/imp/execute_insert.c
./source/imp/free_lob_locator.c
./source/imp/read_head.c
./source/imp/read_table_info.c
./source/imp/read_file.c
./source/imp/create_index_constraint.c
./source/imp/insert_long.c
./source/imp/set_current_schema.c
./source/imp/single_insert.c
./source/imp/prepare_insert.c
./source/copyright.c
./source/connect_db.c
./source/disconnect_db.c

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

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