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的一些基本概念。代码结构简洁,有详细的注释,很方便阅读。
这是一个技术含量很高的软件,国内没有几个人写得出来。学习这个软件,你可以了解Oracle数据库启动的源头,数据存储的基本单位-不同块的格式,各个数据字典基础表的作用,
字典表之间的关联关系,空间分配的不同管理模式下的数据格式,聚簇表是怎样存储的,行连接的各个数据片段的连接关系,删除列怎样处理,unused列怎样处理,
删除数据的实质是什么,删除表和截断表有什么区别,为什么要使用LOB字段,传统的BasicFile LOB为什么要被SecureFile LOB替代,它们又是怎样存储的,索引结构是什么样子的,
为什么表最好要创建主键,怎样设计表才能让它的访问速度最快,这些问题都能在这个软件中找到答案。存储结构是数据库最核心的机密,数据库的大部分特性都与它的存储结构相关,
了解了这些,就能对Oracle数据库有一个深层次的认识,就掌握了它的运行机制和原理,这样遇到很多问题就能找到最佳的解决方案。
学会了这些,你自己在设计系统和处理一些复杂问题时,就可以借鉴Oracle的做法,找到更好、更巧妙的解决办法,你的能力也会大幅度提升。
IT人员最有价值的就是自身的技术实力和解决问题的能力,如果你想站在比别人更高的位置上,就要在这两方面超越常人,除了自身的努力,找到提升的方法更为重要。
如果你是个初级的IT从业者,让你的起跑线比别人更靠前,这个软件能让你站在新高度,如果你是一个资深人士,你从这个软件中将会得到更多,到了一定的时候,
一个人需要有个东西能激发你顿悟,就像武侠小说中练功通关一样,这个软件就是一个上乘的武功秘籍,让你达到顶尖高手的程度。还等什么呢?窥探到这个软件中的秘密,
离你梦想中的江湖地位就更近了,而这只需要很小的代价,却可以得到千百倍的回报。