Oracle DUL工具标准版

程序简介

Oracle DUL是一个导出数据的终极工具,在数据库损坏不能启动的情况下,可以直接从数据文件中读取数据,作为恢复数据的最后手段。它的强大功能这儿就不介绍了,在网上搜一下就可看到。我们的这款软件就是为了实现这些功能设计开发的。

我们的DUL工具能在数据库不启动的情况下,从系统表空间中导出Oracle的数据字典,保存成格式化文件,能够通过命令查看用户和用户下的对象,以及用户表的定义。通过命令导出一个用户下的所有表数据,或者单独导出一个表的数据,存储成自定义个格式的文件,并提供一个导入工具把这个文件的数据装载到其他Oracle数据库中,实现数据的恢复。

这个软件分为几个版本,按从易到难的规则分为迷你版,标准版,企业版,专业版,对行连接数据,LONG类型,BasicFile LOB,SecureFile LOB有不同的支持。随同软件一起的还有一份详细的Oracle数据存储文件块的描述文档,解密了Block 0,Block 1的格式,普通数据块的格式,ASSM和MSSM段管理的区别,详细介绍了一些字段的含义,描述了extent map的存储格式,还解密了B*Tree索引的数据块结构,详细分析了BasicFile LOB的存储结构,描述了通过LOB Index读取LOB数据的过程,也详细分析了最新的SecureFile LOB的存储结构,还分析的当LOB数据比较大时,用于索引的LHB和itree结构。对于行数据格式,详细分析了Cluster数据的存储格式,行连接和行迁移的格式及处理方式,还有Row Dependencies的行头结构。

国内也有个人或公司开发了类似的软件,如AUL,ODU,PRM-DUL等,这些都是商业软件,专用于数据恢复。我们的软件与它们的目的不同,只为学习交流使用,所以去除了其中繁杂的成分,能够简洁的看到数据导出的过程,并且有源代码参照,你可以跟踪进去,慢慢体会数据的结构,对文档中的解释加深理解,上面提到的软件可不会提供源代码,所以这是一个学习的好机会。

支持的数据类型有:
  NUMBER
  CHAR,NCHAR
  VARCHAR2,NVARCHAR2
  RAW
  LONG,LONG RAW
  BINARY_FLOAT
  BINARY_DOUBLE
  DATE
  TIMESTAMP
  TIMESTAMP WITH TIME ZONE
  TIMESTAMP WITH LOCAL TIME ZONE
  INTERVAL YEAR TO MONTH
  INTERVAL DAY TO SECOND
  CLOB,NCLOB
  BLOB
          
所需知识
这个软件是在Linux下用C语言开发的,因此在阅读源代码前需要熟悉C语言和Linux的系统调用,尤其是文件的操作。数据导入工具是用OCI编写的,所以也要熟悉OCI编程技术和Oracle的一些基本概念。
各版本支持的功能
标准版专业版
基本内建数据类型
大文件表空间
ASSM段管理
MSSM段管理
国际字符集支持
中文支持
Row Dependencies
unused column
hidden column
dropped column
系统表空间读取数据字典
Cluster表
行连接和行迁移读取
LONG数据类型支持
BasicFile LOB支持
SecureFile LOB支持
文档截图
Oracle数据文件结构文档图



Oracle DUL程序设计文档图


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

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