oracle的底层,探秘Oracle数据库底层存储-前言

博主分享了一年研究Oracle数据库底层存储的经历,通过不断尝试、分析数据块,成功解析包括复杂Lob字段在内的多种数据类型。文章提到,理解数据库底层存储有助于解决许多Oracle问题,比如dbname长度限制的原因。Dbseeker作为作者的成果,现能支持大部分常见字段类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

探秘Oracle数据库底层存储-前言

前言

经过一年的努力,Dbseeker for Oracle Database终于主要功能都已经开发完成。从2.5版本开始,已经开始支持ASM的存储文件。

回顾这一年,可谓困难重重。Oracle数据库不是开源的数据库,无法查看软件的源代码。官方能查到的文档也相当有限,这些关于数据库底层存储的结构,关系到Oracle的核心技术秘密,也不可能公开。我能做的只有不断尝试建立各种不同类型的表,不同类型的字段,模拟各种场景然后Dump各种数据块,用Winhex之类的工具查看十六进制数据,猜想出Oracle存储数据的规律,用Java编写实现读取数据代码,不断地重复前面的过程,不停的Try,,Try,Try。整个过程相当枯燥乏味,刚开始坚持了一个星期就开始后悔了,我天生性格倔强,半途而废也不是我做事的风格,还有在各种实验的过程中 ,也慢慢的找到了一点成就感,一步步坚持到最后。

刚开始Dbseeker只支持一些简单的字段类型比如number,varchar2,date,慢慢的功能完善,现在已经能支持90%以上的常见字段类型。这么多字段类型里面,Lob是最令我头疼的,Lob在数据文件的存储方式实在是太复杂了,Lob字段的研究花费我大量的时间。我曾试着把Oracle的一个大安装文件zip文件(1G以上),分别丢到BasicFile和SecureFile的Blob字段里,Dbseeker能顺利读出Lob字段,导出文件后能正常解压,一个字节也没有少。

自古中医诊断病人时,都是采用望,闻,问,切的方法,有经验的中医能通过古老的方法来确诊病人身体哪里出了毛病,开出药方,但自从西医解剖学出现以后,中医开始大大的落后于西医,西医通过大量对组织、细胞、胞器的解剖经验能确定病人的病因。话题好像有点扯远了,其实数据库也是一样,通过解剖数据块,以前的那些想不通的Oracle问题好像都迎刃而解了。比如为什么Oracle的dbname最大只有8位呢?因为Oracle里一些限制大都是和它的存储空间有关,在数据文件头块只有8个字节来存储dbname。Oracle的大部分命令和SQL语句,都是为了读写数据块,数据块的结构清楚了,命令的参数变来变去,那都是有道理的,能帮助理解大部分问题。

本连载《探秘Oracle数据库底层存储》将和大家一起学习Oracle的底层存储知识,探秘数据表成千上万条记录是如何保持在数据块里。本连载并不介绍Oracle数据库的各种命令和Sql语句,要理解Oracle的底层存储知识,需要一些计算机进制的知识和Oracle数据库的一些基础知识。

本连载内容均为作者原创,有部分插图来自于Oracle官方网站,如需转载,请注明出处。

Dbseeker作者  龙庆

2015.12.06 于深圳

发表评论:

昵称

邮件地址 (选填)

个人主页 (选填)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值