搜档网
当前位置:搜档网 › 涂抹ORACLE-第1章-ORACLE传奇

涂抹ORACLE-第1章-ORACLE传奇

涂抹ORACLE-第1章-ORACLE传奇
涂抹ORACLE-第1章-ORACLE传奇

第1章

Oracle传奇

与其他知名软件公司创业者多是技术精湛的开发高手不同,Oracle创始人Larry Ellison 并非在技术上有什么独特创新或者过人之处,这和微软的Bill Gates、Google的Larry Page,

国内知名公司如百度的李彦宏、网易的丁磊有差异,但这并不影响Oracle成为一家伟大的

公司,甚至一度是大型数据库的代名词。

1.1 起源

如今Oracle数据库占据着整个数据库软件领域近一半的市场份额,在大型数据库领域更是影响力巨大。关于Oracle数据库的故事要从1970年的6月,IBM公司Edgar F. Codd

发表的那篇论文“大型共享数据库的关系模型”(A Relational Model of Data for Large Shared

Data Banks)谈起,正是这篇论文拉开了关系型数据库的大幕。当时在行业中受欢迎的还是

层次型数据库软件,并且最著名也最典型的层次型数据库系统就是IBM公司的Information

Management System(IMS),有意思的是,当时IBM并没有预见到职员Edgar F. Codd发

表论文后会带来一股新的潮流,这股潮流虽然不会将其彻底葬送,但是却直接导致其数据

库领域第一的宝座不保。

话说1977年6月,Larry Ellison跟合伙人Bob Miner和Edward Oates(这两个人也是Larry一生中最重要的合作伙伴,其中Bob Miner还曾是Larry的老领导,这位仁兄绝对是

位技术天才)一起在美国硅谷创建了一家计算机公司——Software Development Laboratories

(SDL)。公司创立之初,Bob Miner任总裁(还是Larry Ellison的领导,虽然Larry持有

新公司60%的股份),Edward Oates任副总裁,时年已经32岁的Larry依然默默无名(读

了三所大学都没能毕业),只是一个普通的软件工程师,并且因为受限于合同问题还在另

一家公司上班。

不过,没过多久他们就招来了第一名员工Bruce Scott,这可是一个重量级人物,拥有着纪念意义的名字,所以必须在这里提及。接触过Oracle数据库的朋友是否还记得Oracle

数据库中的一个默认用户SCOTT,没错,就是这个Bruce Scott,而SCOTT用户的密码tiger,

是当时Scott养的一只猫的名字。你看看,谁说程序员不懂得生活。Scott那真是相当有艺

术、有品味、有激情、有爱心哪,用本山大叔的话讲,那是相当有才。

创建初期,他们主要与其他公司合作进行开发(按照今天的流行词汇,叫外包),哥几个在三十年前就预见到这行不好干,费时费力还不一定挣得着钱。他们觉着最省事的方

式就是只开发一套程序,然后在市场上反复卖、反复数钱就行了,因此他们决定从事通用

软件的开发。不过,此时他们还没有想好具体做哪方面软件,直到他们看到了Edgar F. Codd

的那篇论文,以及其他几篇与关系型数据库相关的文章。

PDF created with pdfFactory Pro trial version https://www.sodocs.net/doc/077554267.html,

第1章 Oracle 传奇

3

型计算机和操作系统都不一样,因此大的机构通常更愿意购买一种能通用的数据库(如果有的话)。此时的Larry Ellison 绝对算得上大话王,这哥们完全将市场放在第一位,坚信较早占领大块的市场份额才是最重要的,因此虽然早期版本的Oracle 几乎无法正常工作,到处是Bug ,程序错误很多,用户也抱怨不断,但有意思的是Oracle 公司的早期用户似乎不在意损失金钱和数据(FBI 都没意见),Larry Ellison 也只管持续不断吹嘘,同他们描述产品将能达到的美好功能(虽然现在没有)。如果Larry Ellison 拥有匹诺曹血统的话,美国就不用研制航天飞机、宇宙飞船、运载火箭了,想去月球的话顺着他的鼻子向上爬就行了。几年后,Ellison 总结了公司早期对待客户的态度:“喏!这是我们的软件,拿去用吧!敢不敢?” 1.2 发展

Oracle 的第三个版本(实际是第二版,后面再说到版本号就不再强调,大家知道是怎么回事儿就行了)在1983年3月推出,除了增加了可移值性的特性外,在软件方面最重要的改进是引入事务的概念,即SQL 要么成功、要么失败,取决于事务是否提交;同时还引入了另一关键特性——写不阻塞读(通过回滚段中的数据实现查询和回滚事务,避免了读锁定),对于大访问量、高并发的应用,这点非常重要。因为这一特性,想要在Oracle 中实现读锁是非常麻烦的(即使你主动希望实现这一功能,不过,应该不会有这样BT 需求吧)。

时隔一年多,Oracle 于1984年10月推出了第4版。在这一版本,稳定性有不小的提升,用Miner 的话说就是达到了“工业强度”,Miner 的话还是靠谱的,起码比Ellison 靠谱,不过尽管如此,还不足以达到令人满意的地步。这一版最重大的改进是增加了读一致性(Read Consistency )的特性(即一个会话修改数据时,只要不提交,其他的会话就看不到这项修改,要记住这个概念,这是Oracle 极重要的特性之一)。虽然说产品始终不够健壮,但销售人员表现出色,这一年Oracle 公司总收入达到1270万美元,其中表现最出色的自然是Larry Ellison (确实能吹),比如有一次Ellison 听说其当时最大的竞争对手Ingres 发明了一种新技术——分布式查询,没过几天Oracle 就刊登广告发布了SQL 之星:第一个分布式查询数据库(其实并没有这样的产品)。

Ellison 就是这样,想象着产品应该怎么样,然后再去实现,因此在宣传Oracle 的时候总是夸大其词(貌似至今未改),但他就是能把软件卖出去,而且还卖得不错,这点实在让人惊奇。中国有句古话说的是“男怕入错行”,Larry Ellison 大师亲身向我们证实了这句中国古老谚语的正确性,比起之前干软件开发时的惨淡,他做销售可谓风生水起。

1985年4月,Oracle 发布了第5版,据称这也是首批支持Client/Server 模式运行的RDBMS 产品,而且一年后发布的5.1升级版,终于新增了分布式查询功能(还算不错,最终还是实现了的,虽然晚了两年),即一次查询、访问存储于多个位置上的数据。当时Oracle 主要竞争对手是Ingres 数据库,由Berkeley 大学的Michael Stonebraker 教授负责设计,当时Ingres 数据库的市场份额增长速度甚至比Oracle 还要快。幸运的是,关键时刻又是IBM 伸手拉了Ellison 一把,这回也不是主动的。

PDF created with pdfFactory Pro trial version https://www.sodocs.net/doc/077554267.html,

第1章 Oracle 传奇

5

船,再想下来可就难了)。还有一点要注意,Oracle 6.2版首先在DEC VAX 平台上引入了Oracle Parallel Server (OPS )的选项,即RAC 的前身(另外,Oracle 公司从未正式对外发行6.1版)。

软件本身质量问题只是一方面,更严重的问题是Oracle 公司内部管理混乱。从1977年创立到1990年,Oracle 销售额几乎都保持了每年1倍以上的增长,但公司的财务和销售管理十分混乱,销售人员为了完成任务得到提成,大量签订无法收款的合同,甚至有人弄虚作假,合同执行情况也无人过问,以至于现金流量是负值。Larry Ellison 高薪聘请高级管理人员整顿公司时发现,1990年第三财政季度有1500万美元的销售合同无法执行。这样一来,季度销售额虽达到创记录的2.36亿美元,但利润只增长了1%,距离预期相差甚远。消息公布第二天,Oracle 的股票从25.38元跌到了17.5元,损失了30%的市值。

为了度过危机,Oracle 解雇了10%的员工。但随后的两个季度情况变得更糟,Oracle 股票价值一落千丈,10月底的收盘价仅为5.38美元,公司的前景暗淡甚至面临破产。在最艰难的时期,Ellison 几乎放弃不变卖股票的信心,事实上他一度是靠贷款维持自己的奢侈生活(要知道,春天的时候,Ellison 拥有的股票价值还近10亿美元,但入了冬之后市值就只剩下1.6亿美元)。当然,Ellison 最终还是没有卖掉自己手里的股票,这也足以证明他确实热爱自己的公司并一直怀有信心。

1991年,Oracle 中国公司正式成立,公司名称为“北京甲骨文软件系统有限公司”。从这天开始,如果你碰到某人自我介绍说“我是甲骨文的”,千万别以为是某研究机构出来的,或者是碰到了现实版的穿越时空的人物,对方有可能只是某家数据库软件公司的外企机构职员。 1.4 兴旺

1992年6月,Oracle 终于发布了第7版,这是一个功能完备的关系型数据库管理系统,让Ellison 有了真正的王牌(好几年前,Ellison 就已经在宣扬此版本中的一些特性)。更为聪明的是,第7版在上市前多方面听取了用户意见,并重点进行了大量而细致的测试,避免了重蹈上一版本的覆辙。此外,这一版及后续升级的小版本中增加了很多对后来版本影响巨大的特性,下面列举几个三思认为较重大的修改:

l 基于成本的优化器(CBO ),即Oracle 数据库在执行查询前,会自动根据查询对象

的统计信息进行计算,生成最佳的执行计划(理论上的最佳),而之前都是基于规

则(RBO )的优化器来生成执行计划(关于执行计划的部分你现在可能有点儿糊

涂,没关系,在第四部分我们将会详细介绍)。在后续的几个版本中,Oracle 工程

师不断对这一优化器进行改进并最终在Oracle 9i 版本中取代RBO 成为系统默认

优化器。

l

完整性约束(包括主键、外键、CHECK 约束等)。 l 支持包、函数、存储过程、触发器的创建和用户自定义函数。

PDF created with pdfFactory Pro trial version https://www.sodocs.net/doc/077554267.html,

第1章 Oracle 传奇

7

起码其管理成本应该能降低不少;但反对者也不是没有,微软就更是表现得不屑一顾(老板都发话了,底下的人也得赶紧出声响应啊),微软负责技术的副总裁就表示:“人们想要电脑提供越多的功能,而不是越少。网络计算机根本不值一提”。

没过多久Oracle 就联合IBM 、Sun 、Apple 和Netscape 制定了网络计算机的标准。微软一看情形不对,也迅速发表了一个名为SIPC (Simply Interactive Personal Computer )的标准进行反击。SIPC 基本上和网络计算机一样,只有一点不同:它需要用Windows 操作系统。而事实上,直到现在,也没有一台真正的网络计算机面世,随着AMD 和英特尔的竞争,个人计算机价格不断下降已经成为电脑行业趋势(千万不能忽视摩尔定律),网络计算机已经失去了能提供足够养分的土壤。

1997年6月,Oracle 推出了第8版,从这一版本开始引入Object Relational Database (ORDBMS )的概念,即所谓的面向对象的关系型数据库管理系统。在功能方面也增强不少,比如引入对索引组织表的支持(Index Organized Tables ),备份恢复特性的功能也有所提升,开始支持表空间时间点恢复,增量备份等功能,RMAN 也是从这一版本开始提供(关于备份恢复的内容我们将在第三部分详细介绍)。同时,这一版本开始具有同时处理大量用户和海量数据的特性,也为支持Internet 、网格计算(后来的i 和g )等奠定了基础。如果与7.0之前的版本相比,这个版本也称的上是一款非常不错的产品,可惜它被夹在经典的第7版和更加经典的Oracle 8i 之间,其光芒必然要被掩盖,只有当你我回顾历史的时候才能够记起,在8i 之前,也曾有过一个版本号叫做8的Oracle 产品! 1.5 革新

虽然网络计算机最终流产,但Ellison 还是敏锐地发现了Internet 的巨大魅力和前景:“Oracle 将只会做一件事情,我们管理海量的数据并通过网络提供这些数据”。

1999年2月,Oracle 正式发布了Oracle 8i 的第一个版本8.1.5,i 代表Internet ,这一版本中添加了大量为支持Internet 而设置的特性,比如iFS 、SQLj 、WebDB 、interMedia 等特性,以及与Oracle 的Java 开发工具Jdeveloper 的集成应用等。同时,本地也完整集成了一个Java 运行时环境(Java 也是微软的对头,Ellison 在打击微软方面可谓不遗余力),内部又引入了对Java 存储过程的支持,作为对PL/SQL 标准过程的补充;在数据库管理方面引入了Log Miner 特性(一种可用来读取Redolog 的工具,Oracle 后续版本中提供的一些高级特性,如逻辑Standby 、Streams 等也都是借助类似方式实现);分区功能也有所增强,如提供了对Hash 分区和复合分区的支持,以及一些分区的管理操作;传输表空间的特性也是从这一版本开始提供;同时本地管理表空间也首次出现于这一版本,但表空间在创建时默认仍然是字典管理方式(如果你对此存在疑问,别着急,相关内容将会在第五部分详细介绍);其操作的易用性较之前版本有非常明显的提升,主要体现在Oracle EM 使用上;高级复制的特性已经非常完善;Standby 的特性也基本成熟,备库已经支持自动应用,并且在暂停应用时能够以只读模式打开,当作查询服务器来分担主库压力。

8i 的最终版本是2000年8月发布的8.1.7,不仅对整个数据库行业影响巨大,用户使PDF created with pdfFactory Pro trial version https://www.sodocs.net/doc/077554267.html,

第1章 Oracle 传奇

9 比较,8i 及8i 之前的版本,有十多个与内存空间分配相关的参数需要设置(如果设置不当,对性能影响极大,甚至做某些工作的时候,DBA 必须重新设置某些初始化参数),9i 时减少到5个内存相关参数;10g 只需要设置2个;到了11g ,只需要设置1个,就是MEMORY_TARGET ,对于其他参数,在默认情况下Oracle 都会在运行过程中自动进行调整。所以,仅从这个发展过程上也能看出,Oracle 每一个新的版本,都会在易用性上做出很大改进,DBA 终于能够闲下来了啊(好事?坏事?)。

看看Oracle 公司官网的这篇文章吧“Oracle 数据库 10g :为 DBA 提供的最重要的 20

个特性”(https://www.sodocs.net/doc/077554267.html,/technology/global/cn/pub/articles/10gdba/index.html

)。

2007年7月,Oracle 公司正式发布了11g ,我个人认为这一版在整个Oracle 数据库版本历史中足以与1992年发布的Oracle 7媲美,这一版提供了很多激动人心的特性。比如RAT (Real Application Testing )终于步入实用阶段,该特性允许你将生产环境中数据库的真实负载记录下来,拿到测试库中重演(最佳搭配自然是Standby 数据库),这将有助于测试某些应用程序修改后对数据库的真实影响;结果集缓存(Result Cache )则能更有效地利用内存,其实质相当于将查询的结果集保存于内存中,当再有新的相同查询需求时,就不需要再解析、执行、读取I/O 等操作,直接就可以从内存中获得查询结果,大大提高查询效率(如果应用得好的话);以及高级压缩(Advanced Compression )等。

同时,原来的一些特性在功能上也增强不少,比如分区方面,自5.0以来无数用户盼星星盼月亮一样期待的interval 分区终于推出(Oracle 将根据设定的条件自动添加新分区,再也不需要DBA 自己写脚本来管理分区了);Data Guard 方面,物理Standby 终于能够在只读打开模式时应用REDO 数据,实用性和可用性均大增;内存管理方面,新提供的MEMORY_TARGET 参数能够更有效地管理Oracle 内存空间,其他还包括压缩特性的增强,SQL 、PL/SQL 方面新增加了数据类型和更强大的编译方法等。

另外,如果你足够敏感,这条信息也许能给你一些其他方面的启示,11g 的首发平台是Linux ,打破了一直以来首发平台都是Solaris 的传统,从某种层面上,也表明了服务器领域主流操作系统的变迁。你想说什么时候首发平台会是Windows ?貌似短期内都不太可能啊:)

另外,在本书写作过程中,Sun 公司已被Oracle 公司收购,Solaris 现在是Oracle 公司自己的产品了。

说到这里,三思也想引申一下关于数据库新版本及是否升级的问题。信息爆炸的时代,软件更新频繁,新版本不一定是好版本(比如11g 发布了不到三个月就推出了Release1),当然新版本也不一定是不好的版本(比如Oracle 7,发布之后好评如潮,用户哭着喊着要升级,也可能是Oracle 6太差,两相对比太强烈)。

但这些都不重要,DBA 需要关注的重点是,要升级的版本是否是适合你的版本。如果要归结成一句话,我认为“稳定是第一位”。新版本固然提供了很多新的功能,但是有一

PDF created with pdfFactory Pro trial version https://www.sodocs.net/doc/077554267.html,

相关主题