最近因为学校开了DB2的课,接触了一些DB2的知识,发现其中有些东西与Oracle的区别联系相当有意思,于是做了一个初级对比,第一篇就是这篇关于体系结构的对比,打算学到哪里就把哪里的区别写出来,希望可以坚持下去吧。
下面是两个数据库的体系结构图,单只是看就知道区别很大的,下面我说说我看到的。
图1. Oracle on Linux, UNIX, and Windows的系统结构
fig1.gif (26.92 KB, 下载次数: 14)
2012-3-15 10:33 上传图2. DB2 on Linux, UNIX, and Windows的系统结构
fig2.gif (31.34 KB, 下载次数: 16)
2012-3-15 10:33 上传
第一点, 也是最明显的一点,DB2下一个实例可以包含多个数据库。在Oracle下,一个实例对应一个数据库,或者多个实例对应一个数据库(RAC),而在DB2下,一个实例对应多个数据库。这直接导致两个数据库在多种实现上区别极大。
第二点, Oracle客户端访问数据库需要通过OracleNet,而DB2则不需要,直接就可以连接。
第三点, Oracle里面有Undo表空间,而DB2完全没有对应的功能,这直接导致DB2的锁机制与Oracle极其巨大的区别(我首次接触多数据库比较的时候就是一篇关于锁机制比较的文章,映像非常深刻,Undo的存在使Oracle的并发性得到了极大的增强,虽然也带来了一些问题,但大部分可以避免)。
第四点, 控制文件的控制范围,明显可以看出,Oracle的控制文件是实例数据库全部控制,参数文件控制实例。在DB2里面,与Oracle参数文件类似的是DBM控制文件,但DBM控制文件完全控制实例,而数据库内部包含的控制文件则用来控制数据库,实例与数据库分开控制,这其实是前面数据库与实例的对应关系带来的问题(关于这点也许是我个人的学习问题,初学Oracle的时候参数文件与控制文件的概念总是有一些搞不清楚,如果控制文件只用来控制数据库,参数文件控制实例,当初很多概念的区别一下就出来了)。
一些名词上的区别:我认为这些都是名词上的区别,因为这些都是数据库共同的概念,其列表如下:OracleDB2注释
数据块页DB2 支持以下几种页大小:4k、8k、16k 和 32k。一个行必须能够装入其中一种数据页中。它不能像在 Oracle 中那样跨多个页。
数据文件DMS 表空间容器用于 DMS 表空间的容器可以是原始设备,也可以是文件
重做日志文件,归档日志文件事务日志文件DB2把日志统一叫做事务日志,但内部分两类,循环日志与归档日志,其中循环对应重做,归档就是归档,但其实现机制与Oracle有所区别
数据缓冲区缓冲区池DB2 没有预定义的缓冲区池,但是可以根据需要创建任意数量的缓冲区池。在创建具有给定页大小的表空间时,必须预先存在一个具有给定页大小的缓冲区池。这点在Oracle中类似但具体实现差别很大。
SGA实例共享内存和数据库共享内存同样是一个实例对应多个数据库带来的差别
数据词典编目
库缓存包缓存
大型池实用程序堆
数据词典缓存编目缓存
SYSTEM 表空间SYSCATSPACE表空间下一篇打算写表空间的实现区别。
PS:单就图形操作界面来说,Oracle的EM感觉就是比DB2的控制中心有感觉啊,DB2的界面还停留在上个世纪来着,不过图形界面也就是用来生成忘了语法的语句,真跑开的话,还是命令行更方便监视。