我们的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

