作者: 何致億, 美商甲骨文公司台湾分公司 特约顾问
Oracle9i数据库除了延续Oracle 8i强大的功能之外,还加入许多革命性的数据处理技术,其目的在成为网际网络应用以及电子商务的最佳数据库平台。究竟我们应该如何来评估一个数据库系统的优劣呢?一般来说,以下几点是重要的参考依据:
数据库可用性(Availability)
数据库延展性(Scalability)
效能表现(Performance)
程序开发环境
管理的难易度
而Oracle9i对于以上各项,均提供了绝佳的解决方案:
Oracle9i数据库之高可用性与稳定性
不管是在任何环境下,Oracle9i都可担任执行关键性任务(mission-critical)之数据库系统。在维持数据库的高可用性与稳定性方面,Oracle9i期望达成三个目标:
Ø 提供零资料遗失之环境
Ø 针对已毁损之数据库,提供快速且精准之修复技术
Ø 尽量减少数据库离线处理的需求
唯有完全符合以上三点之需求,才足以称得上具备高度可运转性与稳定性之数据库系统!所以Oracle提出数项特殊技术,使得Oracle9i在可运转性方面的表现傲视群雄,稳居电子商务应用数据库之领导地位:
利用强化后的备援数据库(Standby database)与Flashback Query机制,提供零资料损失之环境
Oracle9i数据保护方面新增了多项功能,特别是备援数据库的许多运作步骤都可以自动化,例如初始化备援数据库、主从数据库之间的切换,以及错误移转…等。简单的说,主数据库内的所有资料将完整地保留在备援数据库,一但主数据库发生问题,系统将会立即切换至备援数据库,所有资料交易不致停摆,资料的一致性与完整性也不会受到影响。
不过有一点要注意的是:虽然主数据库可搭配备援数据库协同运作,将资料遗失或毁损的情况降到最低,但是身为一个数据库管理者,您绝对无法预防与避免人为性错误!举例来说,业务专员可能不小心删除一笔重要的客户资料;或是程序设计师误删了产品价格文件。诸如此类的人为性错误不胜枚举!也许有些读者心里会想”数据库不是都会做备份吗?既然资料不小心被删除了,再还原回来不就好了?”
没错,这样的想法完全正确!但是您可能不了解一般大型数据库的备份与还原(Backup & Recovery)机制(有机会的话我也会为各位详细介绍Oracle9i数据库的备份机制)。事实上,在进行数据库的修复或是复原动作时,或多或少都会影响到系统的正常运作,这需视您处理的资料量多寡以及采用的备份方式而定。
换句话说,还原数据库也需要耗费”时间”!我所指的时间不仅是DBA花在重建数据库的时间,也包含”数据库因为受影响而停摆的时间”!试想,如果贵公司的数据库因为人为性错误频率过高,导致系统的平均可运转性偏低,这样子的数据库严格来说也不能称为好数据库。(哇!那要是以这个标准来看,岂不是没有一家数据库是可以用的!?请注意,我所探讨的是因为人为因素所产生的问题,跟数据库是哪个厂牌并没有直接关系)
为了将上述问题发生的情况降到最低,Oracle9i新增了一项回溯查询(Flashback query)的功能。经过适当组态之后,如果使用者不小心删除了重要数据,即使删除指令已经被commit,也可以藉由回溯查询回存特定时间点的资料。
强大的数据库修复能力
以数据库的修复功能而言,其实Oracle 8i就已经做的相当不错了。但是Oracle9i提供更精确的资料复原能力。举例来说,如果某一个table所在的磁盘区块发生毁损,Oracle9i全新的磁盘修复功能可以只针对毁损的区块进行修复,同一个资料表的其它资料区块则依旧处于online状态,不会影响其它使用者的存取!
利用快速的资料回写机制,缩短数据库离线时间
万一Oracle9i数据库服务器不幸发生当机情况时,新的资料修复算法(two-pass recovery algorithm)可以寻找出资料文件内哪些区块是需要进行读写修复的,有效地缩短数据库重新上线的时间。此外,Oracle9i也提供一些特殊的参数,例如:FAST_START_MTTR_TARGET可用来限制数据库平均恢复时间(即当机之后多少时间之内必须恢复上线状态)
Oracle9i的高延展性
在数据库系统的延展性方面,Oracle9i Real Application Clusters可搭配适当组态的丛集架构(Clusters),提供企业应用程序高度的延展性与可用性。藉由简单易用的单一系统管理方式,Oracle9i Real Application Clusters可让丛集系统内的多个节点同时存取单一数据库,并利用水平延展的方式有效提升整体数据库系统之效能。此外,Oracle9i Real Application Server还具有自我调整的能力,可将数据库的负载平均分配到丛集系统中的不同节点。
Oracle9i Real Application Clusters 之快取融合(Cache Fusion)功能
Oracle9i之快取融合功能可集合丛集中各节点的高速缓存,以满足数据库之需求。换句话说,查询指令可由本地端的高速缓存或是其它节点的高速缓存获取所需的资料,降低磁盘读取的机会。因为本地端节点可以由丛集数据库中任何节点得到所需的资料,在进行更新资料时将不需要为了同步化资料而产生额外的磁盘读写动作。磁盘读写动作只会发生在高速缓存内找不到所需资料,或是资料交易需被确认(Commit)时。这种建置方式可以有效地扩大数据库高速缓存的工作范围,减少磁盘读写动作,且大幅提升数据库之作业能力。
可延展的连线作业状态管理功能(Session State Management)
Oracle9i新的分享式内存配置功能、Java联机支持能力的改进、以及多执行绪服务器之增强功能等特性,都可以大幅减少每一位Oracle9i数据库使用者所需占用的内存空间。您可预期的是:Oracle9i将允许您在同样的硬件环境上服务更多的数据库使用者,并执行更多的应用程序!
Oracle9i数据库之效能提升
Oracle数据库的效能表现一直以来都是在水准之上,最适合担任企业内部执行关键性任务之数据库服务器。Oracle9i为了在现今网际网络与电子商务环境中能够完成更严苛的数据处理要求,数项特定的数据处理引擎也经过最佳化的调整。
改良后的PL/SQL引擎可针对PL/SQL指令选择最佳的执行计划:
之前版本的PL/SQL引擎利用Cost-Based Optimization的算法来决定执行计划(execution plan),主要是以系统I/O处理资源作为衡量的标准。而在Oracle9i中另加入了CPU-Cost与Memory-Cost的最佳化算法,使得PL/SQL引擎可利用最佳的执行计划处理资料。不仅速度较快,系统资源的使用也更有效率!
先进的资料I/O动作:
在I/O处理方面,Oracle9i使用自我微调式的直接读写方式存取资料(self tuning direct I/O)。在索引上则是利用预先抓取(prefetching)、以及忽略/扫描(skip/scan)的方式进行索引值之搜寻。无论是资料仓储环境或是线上交易系统都可大幅提升资料读写之效能。特别是在超大型资料仓储系统(1000GB以上)的分析环境,Oracle9i 数据库也拥有相当令人激赏的表现。
图1:超大型资料仓储环境下各数据库系统之评比。
资料来源:Transaction Processing Performance Council)。
更佳的Java虚拟机器:
Oracle9i内建的Java虚拟机器拥有下列特点:
Ø 改良后的垃圾回收机制(garbage collection)能够更有效率地管理内存。
Ø 更佳的Java语言原生编译技术可以更快速地编译Java程序。
Ø 增强式对象分享功能可提升Java程序的执行效率。
此外,JDBC与SQLJ的效能提升也同时改善了中介层以及客户端的Java应用程序执行效率。
新增的网络通讯协议可提升联机时之效能:
Oracle9i的网络服务新增了一项虚拟接口(Virtual Interface,VI)通讯协议,对于应用程序服务器与后端Oracle9i数据库之间的联机大约有10%之效能提升。VI与TCP/IP最大的不同点在于:VI是专为丛集运算环境特别设计的精简型通讯协议。其运作原理是利用高速的网络硬设备来分担资料讯息传递之负荷,让CPU可以专注于更重要的资料运算动作。
Oracle9i数据库之开发环境
为了无限提升程序设计师的研发能力,Oracle已将开发企业级应用程序所需具备的一切工具整合在新的开发工具套件(Oracle Internet Developer Suite,Oracle iDS)之内。Oracle iDS包含数种功能强大之开发工具,如Forms Developer、Designer、JDeveloper、Reports Developer、Discover以及Portal。
Oracle iDS具备以下特点:
n 建立在Java、XML以及CORBA等网际网络标准之上。
n 适合各种研发方式,例如商业逻辑组件开发、可视化模型建构。
n 提供轻松建置企业入口网站之解决方案。
例如Oracle Portal就可从企业应用软件的层面整合各式信息,快速建置出具个人化功能的企业入口网站。
而在快速开发应用程序方面,Oracle JDeveloper 9i是一个整合式的可视化Java开发环境,且支持J2EE与XML。可提供Java程序设计师快速开发出Java Applets、JSPs、Servlets、EJB等 Java应用程序。除此之外