oracle與DB2

一、體系結構,DB2的實例和數據庫分開的作法,我我的仍是比較喜歡的,由於實例能夠建立多個,數據庫的恢復直接恢復到實例下就能夠了,相對ORACLE簡單多了。 二、管理工具,DB2的管理工具作得太簡陋了,控制中心只能說能用而已,並且還有好多BUG,不如ORACLE的企業管理器作得好,連WEB版都沒有。 三、備份管理,DB2的備份只能說是簡陋了,沒有備份集的管理功能,沒有恢復預覽和校驗功能,不能寫到網絡驅動器上,唉太多的沒有了,ORACLE的RMAN確實強大; 四、DB2的命令執行方式,我很喜歡,能夠在命令行上執行SQL,也能夠在命令窗口上執行SQL,相對SQLPLUS靈活多了; 五、DB2的自動維護功能作的很好,能夠按期自動整理數據庫碎片和重建索引,惟一不大理想的是自動維護的備份功能不能指定壓縮備份,相對而言ORACLE的自動維護功能就很通常了; 六、DB2的運行情況的功能我也很喜歡,ORACLE也有相似的AHM,可是 DB2的運行情況更爲直接,能夠一下就看出數據庫目前有啥問題,DB2還給出瞭如何處理的建議顧問程序; 七、DB2的內存情況監控功能原本我也很喜歡,能夠直接在內存情況監控上直接改相應的參數,可是發現一個巨大BUG後,我就很不喜歡了,若是你一直點刷新,發現內存佔用量會不斷上升,我有次爲了監控一個內存參數,讓這個工具運行了一天一晚上,結果回來一看,暈倒,全部的內存參數增加到數百G,我想看的歷史變化狀況竟然沒有。 八、DB2的遠程網絡鏈接採用的編目方式描述鏈接串的方式我感受很不爽,爲了改個客戶端的鏈接服務器的IP地址,全部的客戶端都須要將編目刪除,而後從新編目鏈接地址,暈倒100多臺PC機搞下來,儘管能夠使用腳本,可是仍是把人都快搞瘋了。ORACLE採用的用文件來配置遠程服務器的方式,全部的PC機都經過更新服務器直接更新本機的TNSNAME,1分鐘搞定。 九、DB2的數據庫建立若是要手工管理容器,竟然沒有指定缺省的系統表空間數據文件名,你要建立一堆相應的文件名,沒辦法,只好照抄oracle的OFA體系結構的文件名。 十、DB2的鏈接配置圖形工具實在是差了,在上面配置一步步配出的鏈接竟然不能用!只好使用腳本,這點ORACLE比DB2強多了。 十一、DB2在WINDOWS 平臺的可靠性不怎麼樣,3個多星期平白無故DOWN了4次機,ORACLE配好了應該沒有這麼悲慘吧。 十二、DB2的鎖自動管理機制,我比較喜歡,打開後,互鎖的機率大大下降,相同的程序,在DB2下鎖明顯少量多,可是不爽的是DB2的select命令也是加鎖的。 1三、DB2 9.7的ORACLE兼容模式,我也很喜歡,遷移麻煩少了許多許多。 1四、DEB2 的自動內存管理我看要比ORACLE 要強一些,幾乎全部的內存參數都能自動管理,ORACLE11G貌似也能夠所有自動管理了。 1五、DB2的導出數據的工具實在太簡陋了,連oracle的EXP/IMP 都不如,更不要說expdp/impdp 1六、DB2的SQL語句運行速度明顯快於ORACLE,5-6段相同的代碼,同一臺機器,參數都是缺省參數,我的測試DB2執行速度大約要快10%-15%,也許和DB2缺省的參數調優有關,ORACLE10g調優後,仍是還有5-10%左右的差別。

1 做者: 

Jacqueline Bloemen 

Jacqueline(電子郵件:jacqueline.bloemen@pass-consulting.com)1980年開始進入IT業, 1986年成爲顧問。從1988年開始,她致力於關係和數據管理技術,並主要關注異構DBMS和平臺上的數據倉庫和決策支持系統。當前研究的主題包括分析CRM和知識管理(Knowledge Management)。她是IBM數據管理金牌顧問團隊的成員。 

Guido Brunner 

Guido(電子郵件:Guido.Brunner@partner-pass-consulting.com)從1982年開始從事IT行業 – 已經在PASS工做了9年。他的主要領域是爲主要分佈在銀行領域中的不一樣的客戶進行數據倉庫和數據管理的諮詢。他在主流DBMS方面有着豐富的經驗,例如Sybase,Informix,Microsoft SQL Server,DB2(OS390和NT)和Oracle – 在最近的12個月中他主要研究DB2 UDB 7.1和Oracle 8.1.6。 

William Miller 

在過去12年中,William一直是許多大型的德國和國際公司的DB2顧問。他熟悉DB2的方方面面 - 從概念數據庫設計到底層的性能監控和調整。他是IBM DB2 金牌顧問的成員,常常在全球的DB2 會議上講演。 

Bjarne Nelson 

Bjame的專業領域是DB2,尤爲是性能和分佈式方面。他已經爲DB2全時工做了15年,主要在北歐和中歐工做,偶爾在澳大利亞、加拿大、拉丁美洲以及 遠東。在1996年和1997年,他是歐洲IDUG的會議主席,並做爲IBM金牌顧問項目數據管理的獨立顧問。Bjarne按期編寫有關DB2的文章和報 告,主要經過倫敦的Xephon出版。從1992年開始,Bjarne已經在衆多會議上針對DB2的性能和分佈式問題進行了演示,例如 IDUG,PRDUC,CMG和Xephon Briefings。他的經驗涉及到整個DB2系列,但主要是利用DB2 UDB EEE實現大型數據倉庫,並且他仍然致力於DB2 for OS/390,參與了衆多數據共享的實現。 

Steffen Oliver Schulz 

Steffen擁有商業管理碩士學位(專業是計算機科學)。從1987年進入IT行業以來,曾爲多家公司工做,包括Microsoft(領導PM數據庫 DACH)。從1995年開始他做爲一個獨立的顧問,致力於銀行、工業行業和衛生環境的數據庫和數據挖掘項目。他曾經做爲從Informix到Sybase/MS SQL Server到Oracle數據庫的開發者和管理員,瞭解衆多的DBMS。他從Oracle 版本7開始使用Oracle – 如今正在管理8.1.7 Parallel Server。 

Bernd Strohle 

Bernd擁有數學的碩士學位,到如今爲止,已在IT業工做了近25年。他從1997年開始做爲獨立顧問,爲IBM工做,當時是APPC開發小組的一員。從平常工做中,他了解了主要DBMS系統的工做 – 從主機上的IMS DB到不一樣平臺上的DB2和Oracle。他從Oracle 6.0版開始使用Oracle,致力於複雜環境下,主要是銀行和保險公司的Oracle數據倉庫項目。 

2 概要說明 

分析人士傳達了一個明確信息:只有3個DBMS會從近幾年的市場競爭中勝出:Oracle,IBM的DB2 和Microsoft的SQL Server。由於MS SQL Server限制在Windows平臺上,所以,競爭者將剩下Oracle和IBM,目前激烈的市場競爭也很好地證實了這一點。 

在2001年6月,Oracle和IBM都發布了最新的DBMS版本:Oracle9i和DB2 通用數據庫 V7.2 for Unix, Windows, Linux and OS/2。 

本文從技術角度講述了這些新版本中採用的數據庫技術,爲數據庫專業人員提供它們的特性、功能和實現體系的概述。在簡要講述版本概要以後,本文將從如下10 個方面來描述和比較這兩種產品:性能,可擴展性,易管理性,可用性,意外故障,備份和恢復,鏈接性,安全性,符合標準性,集成。接下來,咱們將從更爲詳細 的技術角度來總結。可是,在咱們總結優點和弱點時,重要的是要理解這些差異僅僅是因爲技術成熟度不一樣而形成,並在之後可能會彌補的,仍是根本上因爲不一樣的 體系或概念形成的。Oracle9i和DB2 UDB的不一樣主要體如今並行體系、查詢優化功能和異構數據集成戰略方面。這些方面將在下面進行講述。 

從可擴展性、可用性和意外故障的角度來看,Oracle9i和DB2 UDB的不一樣主要體如今它們的並行體系方面。Oracle支持「共享磁盤」的方法,相似於DB2 UDB for OS/390,而DB2 UDB for UWO(以及提供的其它DBMS實現)採用的是「非共享」的解決方案。它們不一樣的體系是致使在擴展性和可用性/意外故障領域出現最相關差別的決定性因素。由於「非共享」在可擴展性方面具備明顯的優點,而「共享磁盤」彷佛在可用性方面有領先優點。 

從性能的角度來看,DB2仍然具備領先優點。DB2的優化器和靜態SQL的概念都要比Oracle的實現具備明顯的優點。DB2優化器保持對應用程序徹底透明,所以無需優化「提示」,甚至不容許使用「提示」,優化器將在須要時重寫接收到的查詢。DB2 還提供多個嚮導和其它的工具來簡化性能的調整。可是,儘管新的DB2 V7.2基準測試結果已經公佈,但到目前爲止,咱們尚未發現任何能夠相比較的9i的基準結果。 

日益提升的DBMS的複雜性致使人們對極端高效的易管理解決方案(其前景是DBMS自治管理)的需求不斷提升。在DB2之前的版本中已經解決了這個問題,並進一步在版本7內的後續版本中繼續加強。Oracle在這一點上有點落後,可是在9i產品中加強了它的產品。 

備份和恢復是兩種DBMS都已經成熟並具備豐富的功能的領域。 

IBM將DB2 定位於做爲任何數據源的聯合網關,無論這些數據是存儲在DB2內部仍是外部。鏈接性是DB2 UDB V7.2頗有說服力的特點之一,並將進一步獲得增強。儘管Oracle具備一個相似的概念,但其實現的深度沒法相比。尤爲是DB2優化器集成了對異構數據源的支持,在這一點上兩者的差別表現得很是明顯。 

DB2的安全概念採用的是握手的方法,利用相應的操做系統和它的用戶/組的實現。Oracle的解決方案沒有集成這一特性。可是,Oracle9i引入了一個頗有前途的新概念,用於實現記錄行等級的安全性,做爲對視圖安全性的替代方案。 

在標準化和集成方面,DB2具備至關大的優點。儘管Oracle支持最新的SQL標準,但Oracle仍是優選本身的專用實現。對於其它功能的集成(即:BI,電子商務,消息,應用),Oracle採用了一個集成但封閉的方法,在本身的「工廠」提供每一個部件。IBM 採用的是相反的策略。IBM將本身定位在中間件提供商的位置,鼓勵與其它軟件提供商創建戰略聯盟。這種方式使得DB2最近成爲許多標準軟件提供商的首選開發平臺。 

總之,咱們獲得了以下各個方面的勝利者分別是誰: 

性能:DB2 UDB V7.2 

可擴展性:DB2 UDB V7.2 

易管理性:DB2 UDB V7.2 

可用性:Oracle9i 

意外故障:Oracle9i 

備份和恢復:平手 

鏈接性/互操做性:DB2 UDB V7.2 

安全性:DB2 UDB V7.2 

符合標準性:DB2 UDB V7.2 

集成:DB2 UDB V7.2 

3 範圍 

Oracle和IBM在2001年6月都發布了最新的DBMS版本:Oracle9i和DB2 通用數據庫 V7.2 for Unix, Windows, Linux and OS/2。 

本文從技術的角度講述了數據庫技術,目的是爲數據庫管理員提供一份對DBMS效率的評估。所以,本報告中的主題集中在擴展性、可用性、(自治)管理、性能/VLDB領域。其它的主題,例如應用問題,商業智能,數據挖掘,電子商務等,將只提供概述。 

本文的做者們對Oracle8i和DB2 UDB V7.1都有實際使用經驗,可是,Oracle9i和DB2 UDB V7.2的加強只是理論上了解。本比較不是基於實際的基準和測試,只是從理論上對特性和功能進行比較。 

這裏所使用的信息的來源包括手冊,提供商網頁,直接與提供商聯繫以及其它在Internet上的與DBMS相關的信息。 

本報告主要針對UNIX、NT和OS/2平臺。 

爲了能在接近兩種新的DBMS版本可得到日期的時間提供本文檔,咱們盡力在極短的時間內掌握信息。咱們的目標是提供精確的信息,以便使讀者高效閱讀本文檔。 

儘管有一章專門針對集成,可是有一點很重要,那就是集成的一個很重要的方面,電子商務集成,沒有詳細地進行討論。要想評測電子商務集成性能,須要詳細地處 理應用服務器以及消息體系和產品,以及相關的標準(例如EJB)。儘管咱們相信這很是重要,但它不包含在本文檔的範圍以內。 

4 新特性概述 

4.1 IBM DB2 通用數據庫7版 

前言:DB2 產品系列 

DB2 產品系列含蓋了從手持設備到主機等衆多的異構平臺。 

DB2 通用數據庫 for Unix, Windows, Linux and OS/2 (DB2 UDB for UWO)分爲4個版本: 

DB2 通用數據庫我的版,用於單用戶模式(DB2 UDB PE) 

DB2 通用數據庫工做組版,用於工做組或部門的應用和數據共享(DB2 UDB WE) 

DB2 通用數據庫企業版,用於從單處理器到最大型的SMP須要的複雜配置和大型數據庫(DB2 UDB EE) 

DB2 通用數據庫企業版 – 擴展版,在大型並行處理器(MPP)或羣集環境中的大型數據庫(DB2 UDB EEE) 

DB2 通用數據庫 for AS/400(DB2 UDB for AS/400) 

DB2 通用數據庫 for OS/390(DB2 UDB for OS/390) 

DB2 for VSE & VM 

DB2 Everyplace 用於手持設備運行環境。 

正如前面所述,本文主要針對的是DB2 UDB for UWO。 

UNIX、Windows和OS/2環境下的IBM DB2 通用數據庫7.2版 

IBM的發行戰略是每18個月推出主要的版本(即,Vx變爲Vx.1)。同時,每3到4個月,發佈一個FixPak,修改已經發現的錯誤,並向引擎中添加新的功能。若是功能的變化很大,IBM將發佈一個發行版(即Vx.2),將小數點後面的數字加一。 

DB2 UDB 7.1在2000年6月發佈。DB2 UDB 7.2在2001年6月發佈,僅從數據庫引擎來講,它與7版FixPak 3相同 – 可是引擎以外的全部加強(例如新的鏈接器,對倉庫管理器的改進)只在V7.2中提供。 

DB2 版本7(7.1 和7.2)關注集成: 

集成商業智能功能 

數據倉庫中心(Data Warehouse Center)將之前的「Visual Warehouse」集成到DB2 控制中心(Control Center)中,提供了一個單一的用戶界面。它提供了內置的功能來建立、生成、存儲和維護數據倉庫和OLAP立方體(cube)。 

OLAP Starter Kit提供了集成在覈心數據庫引擎中的OLAP服務器功能。 

新的預先定義的倉庫管理器(Warehouse Manager)鏈接器擴展了對SAP R/3,i2 TradeMatrix BPI等應用的訪問。其它新的數據源將點擊流(clickstream)數據、OLE DB對象和MQSeries隊列引入到倉庫中。 

7.2 DB2 如今支持OMG的通用倉庫模型(Common Warehouse Model,CWM) 

集成XML文檔 

將XML文檔做爲新的列數據類型來存儲 

將XML文檔分解、存儲到不一樣的表中的 

支持基於XML/SOAP/UDDI的Web服務 

DB2 數據或存儲過程以Web服務的形式對外提供 

經過SQL訪問來自Web服務的數據 

與IBM MQSeries集成 

內置了經過SQL來訪問或寫入MQSeries隊列的功能 

MQSeries做爲倉庫管理器的數據源 

經過MQSeries隊列的XML文檔 

與DB2打包在一塊兒的MQSeries 

集成IBM DataJoiner與通用數據庫 

訪問全部存放於DB2系列DBMS的數據 

訪問來自其它支持OLE DB標準的數據庫提供商的數據 

訪問位於Oracle、Sybase、Informix和MS SQL Server中的數據 

在存儲過程當中訪問異構數據源 

DB2 生命科學數據鏈接(Life Sciences Data Connect) 

透明訪問生物技術數據源 

DB2 文本信息擴展器(Text Information Extender) 

加強的文本文檔搜索功能 

與Windows 2000 Active Directory和Kerberos集成 



可是,引擎中並不只僅添加了集成功能。其它方面還有: 

存儲過程 

支持嵌套(nested)存儲過程 

遵循 ANSI SQL99標準,用戶如今能夠建立存儲過程,函數和觸發器,做爲「永久存儲模塊」 – 在DB2中稱爲「SQL存儲過程」 

支持以Visual Basic編寫的存儲過程 

在全部使用相同的操做系統的服務器上運行已經編譯的存儲過程 

各類數據管理加強 

加強了對Identity列的支持,包括LOAD工具 

將日誌的限制提升到32GB 

支持外部保存點(savepoint) 

從新命名錶空間 

在AIX,HP-UX和Solaris上支持64位 – 在Windows 2000上使用AWE 

加強了Unicode 

加密和解密字符串數據 

備份/恢復功能加強:雙份日誌/並行恢復/從分離(split)的映象備份/分離映象處理/命名管道支持/漸進式和增量備份/交叉平臺備份和恢復 

按需日誌存檔 

在日誌目錄滿以後,封鎖事務處理 

語句級隔離等級 

DB2 Everyplace 這一產品,IBM將其定位爲手持設備的DBMS,例如PDA(我的數字助理)和HPC(手持我的計算機) 

UserID支持超過8個字符 

動態組合SQL語句 

觸發器和SQL函數中的變量和控制流程 

可更新的分區鍵 

下一版本的DB2 UDB將包括衆多的改善和加強,這些加強主要是在高可用性(減小計劃內和意外故障的次數)、易管理性(減小管理工做)、性能和可擴展性(包括大型SMP和羣集環境)等領域,併爲應用軟件開發者提供更好的支持。 

Informix和IBM最近簽署了一份協議,IBM收購了Informix 數據庫業務。IBM計劃將Informix的關鍵技術集成到DB2的將來版本中。
4.2 
Oracle9i 
Oracle的產品戰略是每12到18個月發佈一個主要版本。主要發行版本所遵循的命名戰略在PC領域中更爲常見,它再也不採用一般的版本編號方法,而是採用市「奼競牛ò奼8.1變成8i,以反映Oracle在Internet上的重點)。下一個主要版本是Oracle 9i,這在之前稱爲Oracle 8.2 。 
Oracle 9i不是數據庫服務器的版本名稱,而是圍繞核心服務器的一整套產品套件的家族名稱。這些產品包括: 
Oracle9i 應用服務器 
Oracle9i DBMS 
Oracle9i 開發者套件 
Oracle9i 的官方發佈是在2001年6月在歐洲的Oracle Open World上公佈的,此後當即開始供貨。由於本報告僅僅是比較DBMS產品,所以只考慮了Oracle9i DBMS。 
Oracle9i的核心方法是強調Oracle對Internet和電子商務的專一。它將加強Oracle在關鍵事務計算領域中的地位。爲了確認這一方法,Oracle9i在以下領域提供了新的或加強的功能: 
可用性加強 
備份(stand-by)數據庫支持,例如初始化實例,故障恢復,主從相互切換,日誌應用延遲。 
加強了徹底的在線重組織和重定義體系,使得更多的管理動做能夠在線完成,例如更改表或列的屬性,將表移動到一個新的位置,或是分區一個表,動態增減內存的分佈(SGA) 
面向數據塊的表恢復能夠在恢復損壞的塊的同時能夠保持表的其它塊在線 
LogMiner容許損壞點以後的重做(redo)項被獲取和應用 
查詢歷史和SQL等級上的撤銷功能使用了多版本讀取一致性 
擴展性和性能改進 
提升Oracle9i Real Application Clusters的交易吞吐量 
減小了每一個用戶佔用的空間,容許更多的用戶使用 
精心優化的消費者組等級上的自動資源管理 
多項性能加強,例如預取,自調節直接I/O,虛擬接口(Virtual Interface, VI)支持,等 
安全性加強 
強壯的三層安全性,包括X.509認證,並與LDAP集成 
基於標準的公開密鑰體系(PKI) 
精心細化的審計功能 
n 加強的用戶和安全策略管理 
n 數據加密和標籤加密(Label Security) 
? 開發平臺 
n 企業Java引擎(之前是JServer) 
n XML類型和XDK 
n SQL加強,例如支持CASE,兼容ANSI的聯接,滾動遊標 
n PL/SQL支持全部的SQL語法 
? 管理性 
n DBMS管理撤銷(undo)表空間中的回滾段 
n 動態內存管理 
n Oracle管理的文件 
n 可恢復運行的語句 
n 一個數據庫中存在多種大小的塊 
n 恢復管理器支持自動管理備份 
n 企業管理器(Enterprise Manager)中綜合了基於Web的管理工具 
? 集成Windows 2000(Active Directory,PKI,OLE DB提供者) 
? 商業智能 
n 完整的商業智能平臺:集成ETL,OLAP分析和個性化功能 
n OLAP Server,Oracle新的OLAP計算引擎 
n 支持外部表 
n 核心引擎中的ETL功能 
n 核心引擎中的數據挖掘功能(基於Darwin) 
? 電子商務加強 
n 支持經過XML和Advanced Queuing在Internet上傳輸消息 
n 與其它專用消息系統的網關,例如MQSeries,Tibco和MSMQ 
n 改進的分佈式環境 
? 全球化 
n 對UTF-8和UTF-16的Unicode支持 
n 新的支持時區的日期時間格式 
n Locale Builder能夠查看、更改和定義各類與地區相關的數據 
? Internet 內容管理 
n 存儲、管理和搜索各類類型的內容 – 文件,多媒體,電子郵件 … 
n 適於Internet應用的內容聯合(Content Syndication) 
n 適於協做型項目的內容組織 
n 支持各個位置、面向移動的內容 

5 比較 
比較DBMS通常不是一項簡單的任務,這是由於: 
? 數據庫的功能和複雜度很是普遍,所以深刻的比較極端耗時 
? 一些特性的價值只能經過實際的經驗和基準測試才能判斷(即,性能的影響) 
? 由於潛在上不一樣的實現深度以及體系方法與產品哲學的廣泛不一樣,致使從特性上進行比較很困難 
? 詳盡的特性每每很難直接比較 
咱們肯定了會影響到管理員的平常工做的10個主要領域。對於每一個領域,都簡要並分別給出兩種產品的體系方法和實現特性。 
接下來,對兩種產品進行直接比較,明確二者的不一樣點、共同點、優點和劣勢。可是,咱們不作任何評分。這裏描述的一些特性都是新的,須要進行基準測定,並可能須要進一步成熟。咱們認爲沒有一個評分模型可以合理地含蓋了這些方面。 
這10個領域分別以單獨的章節描述,它們的順序是以從技術DBA的角度來看的重要性進行排列的。重要的是要意識到根據商業實例和角度的不一樣,這種排列也可 能不一樣。可是正如在第三章(做者)中提到的,本文主要是從DBA技術的角度上進行評價。這也解釋了本文中將「集成」(第5.10章)做爲最不重要的角度的 緣由,儘管在衆多其它場合,這個角度多是最重要的。 


5.1 性能 
引用IBM Almaden 研究中心的Burce Lindsay的話來講,對於一個有效的數據庫系統來講,有三個因素很是關鍵。它們是性能,性能,和性能。儘管咱們認爲可靠性、可擴展性、易管理性、使用性和功能一塊兒構成了第二個關鍵因素,但無疑性能是數據庫處理中最爲重要的。 
性能是對處理數據庫請求的效率的衡量。應用軟件須要高的數據庫性能來確保他們的用戶的滿意度。數據倉庫用戶須要高的效率,在可接受的時間內獲取他們的複雜 的查詢的結果。爲了在完成數據庫維護時能不影響應用或用戶,數據庫管理員須要高的性能。在本節中,咱們不討論性能的這最後一個方面,它更適合於可用性,我 們主要集中於討論性能,由於它與完成數據請求相關。 
DB2 UDB V7.2 
DB2性能的核心組成部分是SQL編譯器。在接收到SQL並確認它的有效性以後,SQL編譯器使用衆多先進的技術將接收到的查詢轉換爲能夠進行更好優化的等價格式 – 即查詢重寫工具。在操做合併(Operation Merging)(視圖合併,共享彙集以及其它)中,DB2經過合併,減小了對數據進行的操做的數量。操做轉移(Operatino Movement)的查詢重寫功能經過從新定位或消除(消除DISTINCT操做符,通用謂詞pushdown,消除相關)操做,來最小化操做的數量。查詢重寫的最後一個主要的類別是謂詞轉換(Predicate Translation)。在這些技術中,添加了隱含的謂詞,以便更好地考慮聯接的策略,並將OR謂詞轉換爲IN。 
優化器接收到重寫的查詢,並使用保存在編目(catalog)中的信息(例如數據分佈,約束,索引)和系統資源(例如CPU速度和可用的內存)來計算最優的訪問路徑。爲了評估是否能夠使用並行機制,優化器構建分段部分(subsection pieces,SSP)。 SSP是一組能夠並行執行的操做。SSP的成本(cost)也被用於肯定訪問路徑。DB2的優化器老是以成本爲基礎的;根據全部能夠被用來知足查詢的資源 來分析候選訪問路徑,最後選擇最爲有效的路徑。DB2具備衆多的掃描方法、索引訪問策略、謂詞評價選擇、聯接技術和並行技術。 
從最開始,DB2就支持靜態SQL。在準備程序時,SQL編譯器計算訪問路徑,並將路徑保存下來。對於之後的SQL,將利用預先計算的訪問路徑執行。經過這種方法消除了動態SQL的開銷。也能夠經過包緩存(Package cache)特性來消除動態SQL的開銷。當重複執行SQL時,訪問路徑從內存中讀出,並執行。CLI,ODBC和JDBC編程模型從本質上說就是動態的。利用DB2,你能夠使用Static Profiling將動態的SQL轉換爲靜態的SQL。DB2具備一個特殊的工具,使您能夠在應用軟件運行時捕捉SQL語句。而後這些語句傳送到SQL編譯器中。DB2將識別動態的CLI/ODBC/JDBC SQL調用,並找到存儲的訪問路徑。DB2使您能夠利用您最喜歡的編程工具輕鬆編程,同時還您還將擁有靜態SQL的性能。 
性能的一個很重要的影響因素是並行機制。DB2 能夠並行執行全部的SQL。查詢內並行機制(Intra-query parallelism) 能將單個的查詢或數據庫操做分解爲多個部分,這些部分能夠在一個數據庫分區內並行執行。分段部分能夠本身複製本身,也就是說它們能夠執行相同的操做,但卻 針對不一樣部分的數據。SSP是SMP並行機制的基礎。在EEE環境中,每一個分區都具備一部分數據。SSP能夠在每一個分區上使用,從而能夠在MPP並行機制 中使用SMP並行機制。 
使用複雜SQL語句的數據倉庫應用能夠利用被稱爲自動摘要表(automatic summary table)的高級特性。您能夠定義一個摘要表,它包含一個大型事實表(fact table)中的多個角度的摘要信息。它能夠包括聯接、累計和高級分組。優化器就能夠識別SQL請求的事實表中的摘要信息,使用摘要表中預先計算的結果。CUBE或ROLLUP的的高級分組功能使得DB2 能夠使用1個表,而不是利用多個表來獲取多維的摘要信息。摘要表能夠與基礎數據保持同步,這種同步能夠利用REFRESH IMMEDIATE(使得DB2 老是保持摘要表與基」淼耐劍部梢嶽肈EFERRED:DB2將根據一個命令優化生成全部的摘要信息。所以一個大型的事實表的12個摘要表的刷新只須要掃描一遍數據。 
DB2 擁有全局優化功能。在多個數據庫聯合查詢中(其中涉及了多個數據庫系統,例如Oracle),DB2能夠根據數據的位置以及涉及的數據庫系統優化查詢。DB2 將 分解查詢,並將要完成的工做發送到成本最小的地點,其中要考慮的因素包括CPU的相對速度,通信成本以及其它系統的功能。DB2能夠補充數據源不支持的功 能。DB2的全局優化很完全,使對其它數據庫系統的查詢將獲得更好的優化,以致於經過DB2運行查詢時甚至比在其它數據庫系統的本地執行查詢性能還要 好。 
Oracle9i 
Oracle9i除了具備基於成本的優化器的標準特性以外,它還精心優化了查詢優化器,能夠動態收集訪問時間以便在實際系統條件下定製成本的計算。此外, 加強的優化器還將更多的因素考慮在內,例如CPU成本和網絡傳輸的成本,以儘可能提供最快的響應速度。在支持全部現代的方法來加強性能(例如視圖合併、謂詞 推進,子查詢解除嵌套,利用實例化視圖重寫查詢)以外,它還可以更多地利用現有的索引。9i引入了新的開發現有索引的途徑,例如使用索引跳躍掃描能夠略過 沒有在where條件中但在索引中的列。在這項技術中,之前沒有使用的索引如今能夠集成到訪問路徑中。新的索引類型,例如容許跨表索引的位圖聯合索引(或 實例化聯合)(位圖是根據外鍵引用的其它表的值建立的),如今能夠高性能的執行商業規則。Oracle對動態和永久位圖索引的支持使用這種類型的索引。在 調整很差的SQL性能時,管理員將特別喜歡歷史訪問路徑的可用性,這些訪問路徑顯示了上一個語句執行時的準確路徑,並在SQLTRACE中提供全部的信 息。 
除了範圍和散列分區外(二者聯合在一塊兒稱做組合分區),Oracle引入了一種新的分區類型,稱做列表分區,它容許在必定的範圍內(例如A-K)分區數據,或是在不一致的範圍內分區(例如TX,NM,AZ,CA)。 
在將數據插入到表中時,多表插入(根據定義的標準,一個select語句中的全部的記錄將插入到多個表中)因爲僅收集數據一次,從而節省了開發人員構建的時間,省去了沒必要要的開發,並提供總體的性能。 
儘管實例化視圖(materialized views)能夠節省查詢的時間,但有時刷新很耗時。在9i中,引入了增量刷新功能,減輕了這種權 衡的考慮。爲實例化視圖添加索引能夠進一步加速查詢的性能。優化器的查詢重寫功能使用在實例化視圖中存儲的結果,加速獲」磺肭蟮氖藎苊飭酥馗脣懈吆姆訓牧 踊蚓酆稀_sina_nbsp_word__
不只數據收集自己與查詢的性能相關,數據倉庫領域(CUBE,ROLLUP,RANK和其它)中的分析函數也能幫助下降獲得最終結果的時間,它將之前在客戶端完成的工做發送到最適於完成這一任務的服務器。 
能夠將處理密集型的PL/SQL包編譯爲高性能的本地代碼,這也是向着得到高速響應所邁出的一步。 
之前,要區分已有記錄(須要更新)和新記錄(插入時不會出現主鍵衝突)區別開來,須要進行2步操做,新的MERGE操做符將能夠在1步中完成這一功能。 
爲了穩定執行所選擇的計劃,Oracle能夠存儲訪問路徑,並複用存儲的概要來保證穩定的性能。 
結論 
性能是數據庫的一個屬性,兩家提供商都嚴肅地對待這一特性。性能的範圍很寬。由於數據庫的用途以及對性能的需求相差很大,應避免空洞的結論。在這種狀況下,咱們在一些場景(scenario)中比較性能的組成部分。 
索引對於性能來講相當重要。Oracle擁有多個索引類型 – 索引的選擇依據是所指望的處理的類型,若是處理模式發生變化,索引可能成爲性能的拖累。DB2 只具備一種索引類型 – 但也能夠在查詢執行須要時動態建立位圖和散列聯接(hash-join)索引。 
在線、面向事務的應用場合中,SQL必須能快速生成一個結果集(每每相對較小)。索引和緩衝區是主要組成部分。DB2和Oracle都提供了相應技術,表現良好的性能。DB2由於長期支持靜態SQL,所以稍稍具備優點。 
數據倉庫是的性能表現與事務處理系統相反。對於數據倉庫或數據中心,複雜的SQL通常會須要掃描、搜索和比較大量的數據,並返回至關巨大的結果集。部分結果集能夠自動計算並透明地在DB2(自動摘要表 – 從版本5開始提供)和Oracle(實例化視圖 – 在 Oracle8i中首次引入)中使用。用於訪問數據倉庫的查詢能夠很是複雜。報表工具所生成的查詢不能被手工優化。所以優秀性能的關鍵是基於成本的優化 器,由於可能的訪問路徑不少,並且還要考慮到並行機制。儘管Oracle在它的查詢優化器中集成了以成本爲基礎的模型,在這一方面邁出了一大步,但DB2 仍然具備優點。此外,DB2利用Static Profiling也取得的更好的性能,這一自動特性能夠將動態SQL轉變爲靜態SQL。 
DB2的這一出色的優化器功能,使它在事務型和數據倉庫環境中都領先。 


5.2 可擴展性 
可擴展性指的是DBMS在不一樣的硬件平臺上,從手持設備到具備TB級數據和數千用戶,無需應用從新設計或其它根本上的變化就能提供可相比較的服務的能力。可擴展性也包括在給定環境中根據構建者的業務須要進行擴展的靈活性等級。 
DB2 UDB V7.2 
DB2 產品系列涵蓋了異構平臺,從手持設備到大型主機。家族成員並不老是採用相同的代碼,以便可以利用各類平臺的特性更好地運行。儘管在在特 性的提供方面有所差別,可是共同的特性通常相同,確保移植性。IBM的戰略是根據客戶的優先級實現特性,這些優先級在不一樣的平臺上多是不一樣的,從而致使 針對每種代碼具備不一樣的實施計劃。有關產品家族成員的更爲相信的信息,參看「前言:DB2產品系列」一章。 
本文所關注的是DB2 UDB for UWO V7.2。在中型平臺上,擴展所面臨的一個主要問題是可以面對伴隨OLTP和電子商務類型應用的數據倉庫所提出的挑戰。DB2 UDB 企業擴展版(即EEE)被認爲是UWO系列中的「擴展型」,主要支持MPP,但也支持SMP和Numa。DB2 UDB企業版(即EE)支持SMP體系。 
DB2 UDB EEE在SMP、Numa以及MPP上擴展。對它不少的研究成果被用於加強引擎自己,並且全部的操做或多或少是並行完成的。這並非僅僅針對select操做,並且全部的insert、update和delete以及命令和實用工具也都是並行完成的。 
DB2 UDB EEE在不一樣硬件體系上的擴展性的關鍵是數據庫在一個非共享的環境中被分解爲獨立的分區。在一個非共享的羣集中,每一個分區都具備本身的資源,例如內存,CPU和磁盤。分區能夠存在於SMP內,Numa內,以及羣集內的服務器中。DB2 UDB EEE爲一個羣集添加節點的數量限制在1000個節點以內。 

數據將經過散列分佈到分區內。添加新的分區將經過數據從新分佈來處理。分佈是經過一個很是有效的散列的方法完成的 – 比關鍵範圍查找方法更爲有效。 
除了在DB2 UDB EEE內的分區內提供系統之間的並行機制以外,DB2還在每一個數據庫分區內提供系統內並行機制。 
當分區是在兩個系統中間創建時,它們被認爲是物理分區,通信和數據傳輸是經過高速通信連接(能夠是RS/6000高性能交換機,共享內存通信或基於VI的 設備)完成的。當分區是在一個SMP環境中創建時,分區被認爲是邏輯分區,通信和數據傳輸是經過共享內存完成的。儘管其中涉及到多個DB2實例,但它們被 看做是一個單一的數據庫,它們共享相同的DB2編目。 
爲了在OLTP環境中支持大量的用戶,DB2提供鏈接池、本地旁路和負載均衡功能。 
DB2可以很好擴展的必要條件(也是關鍵的研究成果),是查詢優化器。它能夠逐個分析全部可能的檢索方法,以便提供最快的答案。另外一個關鍵領域是大規模的分析:引擎具備內置的、複雜的能夠並行執行的SQL OLAP擴展以及經過自動摘要表提供的內置的聚合。 
基準,例如TPC-C(OLTP)和TPC-H(Ad-Hoc Query),顯示了DB2在擴展性方面的能力。在MPP和NUMA環境中,能夠提供95%的擴展比,在SMP環境中,經SUN在64 CPU E1000上的測量,可達到90%的擴展性(詳細信息參見 www.tpc.org)。 
Oracle9i 
Oracle9i支持從手持設備到超級計算機的擴展。這是由於,根據Oracle的說法,除Oracle Mobile for handhelds以外(由於它的規模要小),全部的產品在全部的操做系統上和全部的家族成員中(從標準版,到企業版,到Real Application Cluster – 之前稱爲Oracle 並 行服務器)都使用相同的基礎代碼。共同的代碼使得Oracle能夠在全部平臺上提供近乎相同的功能,使得開發者能夠將他們的應用縮放到適用於任何OS平 臺,並且沒必要進行應用的從新設計。通常說來,在實施一個多平臺戰略時,您能夠使用Oracle的全部特性。採用共同的代碼的另外一個優點是能夠在很短的時間 內在最具吸引力的硬件平臺上提供產品。 
Oracle9i縮減了每一個用戶所佔用的空間,從而能夠在相同的硬件上,尤爲是咱大型系統中能夠提供更使人滿意的響應時間。 
爲了實現這種擴展性,Oracle並行處理的實現與數據的分發無關(有時也稱爲數據分區分佈)。這就意味着全部的實例都經過一個分佈式鎖管理器來訪問全部 的數據和同步數據的變化,從而能夠無需應用分區便可透明擴展。由於全部的處理器均可以訪問在共享磁盤環境中的全部數據,每一個處理器均可以用來運行一個查詢 從進程。此外,對行或語句緩存的共同訪問能夠加速系統的訪問,這是由於能夠複用已經被另一個資源(處理器或磁盤)完成的工做,避免了沒必要要的浪費資源。 在使用來自不一樣應用分區的數據時,這種方法尤爲有效。在DML的讀寫操做中均可以使用並行機制。此外,Oracle能夠並行化DDL語句,例如 CREATE TABLE表或CREATE INDEX。 
在Oracle9i中,Oracle發佈了第二代的「緩存融合(cache fusion)」,即Real Application Cluster(RAC)。RAC的目標是使得DBMS能夠在多個節點之間擴展,這一特性每每不能被Oracle共享磁盤體系提供。RAC依賴於與操做系統相關的羣件(Cluster Manager和進程間通信),對於UNIX操縱系統,由OS-vendor提供,對於Windows NT和Windows 2000,由Oracle和Oracle OSD羣件提供。羣件中節點數量的限制取決於所使用的羣件,當前在大多數狀況下不超過8個節點。不幸的是,當前只針對Compaq Alpha和Compaq Linux具備一個認證 – 當前尚未公佈其它的認證。 
在RAC環境中,Oracle隨附了共享磁盤體系。這一體系容許訪問來自羣集中每一個節點的數據 – 無需爲了優化性能而複製或從新配置數據。RAC的運行帶有這一方式所固有的弱點 – 基於磁盤的並行控制 – 經過全局緩存服務和全局隊列服務。這些服務放置在每一個節點的內存中,能夠經過消息進行進程間的通信。 
Oracle建議針對RAC仔細調整數據庫和應用設計,以便達到最佳性能。這就意味着在向羣集中添加節點的時候建議從新檢查設計。 
Oracle9i還引入了一個通過改善的動態內存的特性,它容許數據庫引擎動態爲進行分配內存,無需DBA的干涉。Oracle對行級鎖的實現不會將鎖升 級到其它等級(塊,表),配合多版本讀取模型,能夠支持擴展性,由於與重寫無關的讀進程將不會阻塞一個寫進程。
 
 

概述
   Oracle 數據庫10g(Oracle Database 10g)是第一個專門爲企業網格計算設計的數據庫。Oracle Database 10g下降了數據管理成本,同時能夠提供最優質的服務,可以使IT迅速知足業務需求的變化並最大限度下降風險。系統易於部署和管理,這一點一樣具備十分重 要的意義。
html

  經過不斷推出先進的創新技術,Oracle在競爭中始終保持領先地位。Oracle Database 10g的推出,進一步拉大了用於Linux, Unix和Windows的IBM DB2 UDB v8.1在這一領域的技術差距。就性能、擴展能力、可用性、安全性及價格等方面而言,Oracle Database是當之無愧的領先產品,這已經是Oracle客戶的共識,媒體、分析人士和業界專家也對此給予積極的迴應。Oracle 不斷推出的先進創新技術,使各種規模的企業可以花更少的錢,辦更多的事。 java

  本文將對Oracle 數據庫10g與用於Linux, Unix和Windows的IBM DB2 UDB v8.1的技術性能進行對比,論證Oracle「功能成本俱佳」的體系結構較之非共享的數據庫在性能、擴展能力、資源利用、管理、可用性及知足技術發展趨 勢等方面所具備的強大優點。mysql

網格計算
   Oracle 10g是第一個,也是惟一一個專門爲網格計算開發的基礎架構軟 件。Oracle 數據庫10g和應用服務器10g爲靈活、動態的網格計算提供了徹底集羣、工做負載管理和數據中心自動化技術,使用Oracle網格的客戶能夠實現高的資源 利用率並顯著下降成本。他們還能夠經過Oracle系統在可移植性、可用性、安全和擴展能力等方面獲得全面提高。Oracle系統的可移植性可保證您在所 有運行平臺環境下一樣受益,包括Linux 和常規集羣系統。目前,只有Oracle能以低成本集羣產品爲基礎,實現真正的擴展,提供高可用性,而且能夠動態配置資源。Oracle使網格牢不可破, 您即不能斷開網格,也不能侵入網格。
linux

  Oracle還在網格技術方 面實現重要突破,如推出了Oracle真正應用集羣(Oracle Real Application Clusters)、Oracle流(Oracle Streams)、Oracle 可傳輸表空間(Oracle Transportable Tablespaces)等。最重要的,Oracle長期以來一直成功地爲領先的平臺和系統運行環境提供軟件產品。Oracle網格客戶對投資 Oracle技術的信心有助於推進網格技術的應用。web

  Hartford在多個應用 之間共享Oracle數據庫資源,包括記賬、會計合併、現金賬戶、應收賬戶,從而使企業能夠花更少的錢,辦更多的事。Oracle技術,包括Oracle 資源管理器和Oracle Streams,爲Hartford管理工做負載,在全部應用之間合理配置資源提供了必要的功能。正則表達式

  CERN(歐洲核研究組織) 創建了Large Hadron Collider(LHC)計算網格,用以管理LHC實驗數據。每一年,該組織大型實驗生成的數據量高達一千萬億字節。這些實驗數據供2000多用戶和 150多個機構應用分析。CERN決定LHC計算網格採用Oracle系統。數據庫和應用服務器是這一解決方案的重要套件。Oracle數據庫和 Oracle應用服務器可以知足LHC計算網格的技術要求。Oracle具備擴展性、信息共享和VLDB功能,可供幾千個用戶在LHC計算網格中共享和訪 問數據。可傳輸表空間能夠快速移動大量數據,對數據量沒有限制。同時,Oracle真正應用集羣以Linux集羣產品爲基礎,爲CERN提供了具備高可用 性和強大擴展能力的數據庫。算法


   去年,IBM極力打造「隨需應變計算」的品牌形象。IBM的產品包括一體化託管服務、基於開放式標準的模塊和由業務諮詢服務部進行的專用軟件開發。其核心 是集成(DB2信息集成器)、自動化(SMART)和可視化(經過硬件產品)。IBM經過CPU硬件劃分和處理器按需按期許可的方式銷售大型SMP服務 器。這又回到了大型主機業務模式的老路,帶來成本和限制等方面的一系列問題。隨需應變是以WebSphere爲粘合劑拼湊成這樣一個運行環境。IBM在網 格產品中配置的軟件是DB2信息集成器、DB2內容管理服務器和WebSphere。IBM可能有大量關於網格計算的學術論文,但卻沒有專門針對網格開發 的軟件產品。sql

  有充分依據證實,Oracle系統更適合用於網格計算:
1. Oracle徹底在常規硬件環境下運行。IBM則建議在高檔SMP環境下運行他們的數據庫。他們的集羣數據庫不支持實際應用(如SAP、PeopleSoft、Siebel等)。 
2. Oracle RAC能夠動態添加或刪除數據庫實例,無需停機。這意味着,您能夠根據負載與管理優先級的要求,改變不一樣數據庫的資源配置。IBM集羣數據庫不共享任何資 源。若是須要添加節點,您必須從新劃分數據,因此不得不停機。所以,您不得不爲知足高峯期間的須要去規劃一個非共享的數據庫,利用率極差。
3. 若是您須要在刀片服務器與SMP之間分割軟件,需首先肯定配置決策。在刀片上運行的軟件不能利用空閒的SMP,而在SMP上運行的軟件也不能利用空閒的刀 片。所以,異構硬件組合也限制了您的系統應有的利用率。爲了最大限度利用資源,對優先級和負載作出最佳響應,您須要創建同類硬件環境。徹底同類的刀片環境 能夠大大下降成本,而可以徹底在刀片環境下運行的只有Oracle軟件集。
4. Oracle 數據庫 10g包括自動存儲管理(ASM),用以垂直集成專門爲Oracle數據庫文件開發的文件系統和卷管理器。ASM將I/O負載分佈到全部可用資源中,從而 優化系統性能,沒必要進行人工I/O調整。ASM可以使DBA在不中斷系統運行的狀況下調整存儲配置,增長數據庫的尺寸,幫助他們動態地管理數據庫運行環境。
5. Oracle Streams能夠經過統一的基礎結構實現異步信息共享。這一真正意義上的統一架構,將信息隊列、複製、事件、數據倉庫加載、通告、發佈/訂閱所有結合在 一套技術中。您能夠根據須要,隨着變化逐漸增長共享信息。您沒必要安裝、管理、集成大量不一樣的產品。IBM不能以這樣的方式共享信息,除非組合不一樣的產品, 編寫許多代碼,並對各類組件進行管理。
6. Oracle可傳輸表空間可用來傳輸整塊數據庫。Oracle Streams是隨着變化逐漸增長共享信息,而可傳輸表空間則可迅速地成批移動數據,即便在不一樣的平臺之間。固然,這兩個套件能夠結合使用。
7. 有時,共享和集成信息的最好方法其實只是在須要的時候,可以進行遠程訪問。Oracle已經內置了分佈式SQL、遠過程調用和分佈式事務。您能夠查詢其餘 數據庫所需的信息,在必要時更新這些信息,訪問其餘服務器的程序邏輯。經過Oracle通用網關,或採用咱們的透明網關,還能夠訪問其餘數據庫管理系統中 的數據。您能夠組合Oracle與非Oracle數據,一樣,您能夠使用Oracle Streams經過咱們的網關共享非Oracle信息。而若是您想更新非DB2數據庫的話,IBM則要求您購買DataJoiner,他們沒有通用網關或 Streams之類的產品。
8. Oracle 產品集爲網格計算提供所需的高可用性。Oracle RAC 與Oracle 數據保護(Oracle Data Guard)可避免集羣內部,以及集羣之間的運行中斷。這種保護包括計劃停機(打補丁,升級)及非計劃運行中斷(服務器故障、災難)。計算不具有可用性 時,計算效用也就無從談起。IBM採用備用數據庫技術,但除非主數據庫癱瘓,不然沒法使用備用數據庫,這無疑會形成資源利用率很低的問題。
9. Oracle系統性能和擴展能力優於世界上任何數據庫產品。這一點對於網格計算是很重要的。咱們的讀取一致性模型可保證系統最高吞吐量,不會發生在IMB 和微軟系統中遇到的鎖定問題。咱們大量客戶運行的數據庫容量高達萬億字節以上。咱們的RAC技術對於支持的節點數量不存在結構性的侷限。Oracle是當 前TPC-C、TPC-H@1000GB、TPC-H@3000GB和TPC-R@100GB的領導者,並保持基於Linux的 4路、16路和64路系統TPC-C世界記錄。除TPC基準測試外,Oracle還支持真實環境企業級應用基準測試,如運行Oracle應用和SAP的基準測試2。在這方面的公開評比中:
a. Oracle 位居2層定貨組裝ATO基準測試前三名,每小時34 260訂單。
b. Oracle位居3層定貨組裝ATO基準測試前兩名。
c. Oracle保持SAP SD 2層測試結果的前兩名。
10. Oracle將安全放在首位。Oracle致力於在其每一種產品中設計安全的功能和解決方案,尤爲是用於存儲數據的數據庫服務器。對於設計Oracle數 據庫的開發人員來講,安全是編碼工做的核心,以保證推出安全的產品。Oracle安全機制已獲得17家獨立安全評估機構的承認。IBM是在數據庫以外解決 安全問題,依靠操做系統或Tivoli的產品線來保證DB2及其餘IBM產品的安全。IBM沒有「虛擬專用數據庫」(Virtual Private Database)和「標籤安全」(Label Security)之類的功能。並且,IBM系統也未接受獨立的安全評估。
11. Oracle具備操做系統及硬件之間的兼容性,所以能夠支持異構網格。IBM的DB2沒有各平臺之間一致的代碼庫,所以DB2應用不具有移植能力。 Oracle可在全部主要的操做系統上運行,並且在不一樣的操做系統環境下具備相同的功能和性能,由於咱們採用單一代碼庫。Oracle的移植性意味着,無 論網格如何發展,以何種操做系統爲主,Oracle均可以對其加以支持。
12. 根據表空間頁面大小,DB2對行的大小有限制。一行記錄不能跨過多頁,所以行的尺寸必須小於頁面尺寸,同時還要考慮到頁面的開銷(最多32677字節)。 Oracle能夠一行跨過多頁,Oracle術語稱爲塊,所以能夠徹底避免這種複雜性。Oracle數據庫10g的最大數據庫尺寸爲8艾字節(1018字節),而DB2 UDB的最大尺寸僅爲8太字節(1012字節)。Oracle的無限尺寸使您的網格具備極爲強大的靈活性。
13. Oracle經過獨立的集成產品爲您提供上述所有功能。咱們的理念是銷售集成式軟件,不管是電子商務套件,仍是網格基礎設施。除系統開放,支持全部相關標 準外,Oracle還提供全面集成。IBM和微軟提供的組件需組裝後才能部分支持網格計算。您要麼裝配組件,要麼購買裝配組件的諮詢服務。而Oracle 則經過最佳集成軟件對網格計算加以全面支持。
14. Oracle將推出專門針對Oracle產品集的Globus 工具包。Globus 工具包是一組用以支持資源管理、安全和發現的模型。IBM的Globus工具包已開始供貨,但卻未開發網格計算版軟件,而咱們已開發了這樣的軟件。所以, 若想以IBM技術採用Globus軟件,您必須購買IBM服務,或投入至關的時間和費用將兩者加以集成。
數據庫

管理能力
   今天,業務環境的競爭日趨激烈,如何以最低的成本,同時不以下降服務水平爲代價,管理信息技術(IT)基礎設施是企業目前面臨的挑戰。目前,這種狀況正陷 入兩難的境地,當系統提供愈來愈豐富的功能時,複雜性必然提升,於是也就加大了系統維護和管理的成本。今天,但願取得良好效益的企業不只須要可靠、高性能 的應用爲客戶服務,並且必須下降運營成本,最大限度地擴大贏利空間。這種狀況加之這方面技術能力的短缺使得管理成本迅速攀升,甚至對企業的競爭能力構成潛 在威脅。針對上述狀況,Oracle數據庫10g推出了先進的自我管理數據庫,它能夠自動地對自身進行監控、適應和調整。Oracle簡化了數據庫各個管 理環節,從而提升了管理人員的生產能力,可將客戶的運營成本下降50%。在簡化數據庫管理方面,Oracle數據庫10g大大優於IBM DB2 UDB。2003年4月,Rauch協會對整體管理成本進行了對比:Oracle9i數據庫第二版與IBM DB2 v8.1的比較結果顯示,Oracle9i數據庫第二版明顯比IBM DB2 v8.1易於管理:
1. Oracle9i數據庫第二版的管理步驟僅爲DB2 v8.1 的41%;
2. 執行相同的管理任務,Oracle9i數據庫第二版所需 的時間比後者短54%;
3. 在同等管理工做負荷下,Oracle9i數據庫第二版所 需的管理人員數量僅爲DB2的55%;
4. 因爲Oracle9i管理人員工做效率的提升,每一個管理 人員在系統創建後的前五年可節省管理費用 37 054美圓,並且從此這一數字還將進一步增長。
編程

  自我調試、簡化複雜的管理功 能、提升平常管理工做的自動化水平和更先進的管理工具是Oracle系統管理能力始終保持領先水平的主要因素。Oracle管理體系創建在管理做業多,測 試人員少的基礎上。DB2 v8.1作了許多改進,特別是在存儲器配置、調試和健康監控等方面。DB2新型健康中心和配置嚮導主要用於縮小與Oracle在時間(或效率)方面的差 距。與此同時,Oracle也對Oracle數據庫10g的可管理性作了進一步提高,這樣一來,兩種系統再次拉開了技術差距。

自我管理數據庫
   Oracle數據庫10g自我管理基礎設施由四大套件組成:自動工做負載儲存庫、自動維護任務基礎架構、服務器生成告警和顧問框架。自動工做負載儲存庫 (AWR)是一個內置信息庫,包含特定數據庫運行統計等方面的信息。在按期的時間間隔中,數據庫製做全部關鍵統計數據及工做負載信息的快照,將其存儲到 AWR。自動維護任務基礎架構可供數據庫自動執行平常維護,如優化器統計刷新、重建索引等。這一套件能夠利用Oracle數據庫10g 提供豐富的時間安排功能(經過稱爲進度表的新功能),在一個預約義的「維護窗口」中運行這些任務。

  採用DB2系統時,DBA需 要決定刷新何種統計,以及刷新的方法和時間,數據庫不會在這方面提供任何幫助。換句話說,DB2 DBA必須人工跟蹤前一次統計生成後發生變化的表,密切掌握數據分佈,以肯定發生變化的數值,還要經過反覆嘗試的過程肯定分析數據的合適的採樣量。不只如 此,他們還必須從新綁定全部的應用程序包,才能利用新的統計數據。根據DB2管理指導手冊:性能「運行統計後,最好從新綁定應用程序。若是有新的統計數 據,查詢優化器能夠選擇不一樣的訪問計劃。」3 採集統計變得像DB2這樣複雜時,會妨礙DBA根據須要隨時進行採集,所以致使執行計劃不力。這也許是爲何DB2管理員認爲查詢優化是最耗時工做的又一 個緣由。

  對於不能自動解決,須要通知 管理員的問題(如超空間運行),Oracle數據庫10g能夠自行監控併發出告警,以及時有效的方式通知DBA尚待解決的問題。在AWR獲取數據的基礎 上,Oracle數據庫10g配置了自動診斷引擎,稱做「自動數據庫診斷監測」(ADDM)。ADDM能夠使數據庫診斷自身性能,肯定如何解決識別出來的 問題,量化預期指標。

  Oracle數據庫10g提供數據在位重組功能,可經過壓縮數據優化空間利用率。段壓縮功能能夠使可用空間被表空間中的其餘段重用,提升查詢和DML操做的性能。

  Oracle表或索引識別功 能還使其複雜性大大低於IBM DB2。Oracle管理員能夠對數據庫進行分析,經過一個工具肯定須要識別的對象並完成識別。DB2則至少須要兩個工具,REORCHK和REORG。 因爲耗用大量資源,所以識別一般安排在非峯值期間進行。採用企業管理器(Enterprise Manager)工具,能夠很容易地將識別安排在維護窗口期間執行,無需值守。並且,EM還能夠自動提示管理員識別開始、發生故障或成功。在DB2中,任 何識別做業都要由人工程序來完成,須要開發定製腳本並始終由管理員監控。

  Oracle識別程序還採用了先進的錯誤-處理功能。若是識別期間發生錯誤,管理員能夠取消操做,或修復問題後重試。DB2系統識別期間發生錯誤時,一般必須回滾或恢復數據庫來改變。

  DB2還在許多方面落後於 Oracle,包括管理能力。DB2管理員仍需調試多達12個參數才能合理配置SQL執行存儲器。而Oracle管理員只需用一個參數便可指定一個實例可 用的查詢執行存儲器,而後令Oracle自動管理,進而保證系統的最佳運行性能。一樣,Oracle可恢復空間分配功能爲管理員提供了目前急需的工具,他 們用其修復錯誤空間,避免數據庫運行發生故障。對比之下,若是未能準確估算出執行平常管理任務所需的空間,如建立新索引、裝載大量數據等,DB2管理員還 得半夜起來進行處理。與V7同樣,DB2 V8仍然採用基於鎖的讀取一致性模型,所以,他們仍是須要花費大量時間經過監控死鎖,解決鎖衝突來應付DB2的結構性缺陷。Oracle採用基於普遍承認 的讀取一致性模型,所以Oracle DBA甚至根本沒必要考慮這些任務!大部分DB2配置參數仍然不能在數據庫/實例不中止運行的狀況下加以改變,所以會形成應用中斷。如下是另一些DB2尚 不能知足的基本管理要求:
1. 動態配置參數
2. 限定緊急事故恢復時間
3. 恢復時間建議
4. SQL訪問外部文件存儲的數據
5. 可恢復備份與重建
6. 自動識別佔用大量資源的查詢
7. 自動識別須要優化器刷新統計的表
8. 自動肯定優化器刷新統計的抽樣尺寸
9. 自動建立直方圖
10. 可傳輸的表空間
12. 服務質量報告

應用/SQL調整
   應用設計問題是形成系統性能問題的最主要根源。開發人員、DBA和系統管理員的全部調整才智,都不能彌補應用結構和設計方面的缺陷。所以,SQL語句的調整是數據庫系統性能調優的一個重要組成部分。

  查詢優化器能夠對查詢性能產 生重要影響,如是否採用索引;當查詢涉及鏈接多個表時採用何種鏈接技術等。Oracle投入大量人力物力開發出基於成本的優化器,這是業內最早進、最成熟 並通過全面測試驗證的查詢優化器。基於成本的優化器已被Oracle應用、SAP、PeopleSoft等重要應用套件所普遍採用。因爲Oracle數據 庫已成爲廣大客戶使用這些應用的平臺,從而證實Oracle優化器在大量的實際應用設置中取得了極大成功。

  儘管Oracle數據庫提供 了最佳查詢優化技術,在大部分狀況下無需管理員介入,最大限度地提升了應用/查詢的性能,但在一些個別的狀況下,因應用性質或數據分佈獨特性有可能形成 SQL語句佔用較高系統整體資源。ADDM能夠自動識別佔用較大資源的SQL語句。而後,Oracle數據庫10g對其進行分析,經過查詢優化器新增長的 自動調整功能(稱之爲自動調整優化器)提出解決方案。在此請特別注意的是,這種解決方案徹底是由優化器給出的,而不是任何外部工具採用某些預約義的試探方 法生成的。

  自動調整優化器檢驗自身的估 算,而後採集輔助信息修正估算偏差。這一系統還能根據過去SQL語句的執行記錄,以定製的優化器設置方式採集輔助信息(如第一行或全部行)。經過輔助信息 創建SQL Profile,並提出建立它的建議。SQL Profile建立以後,查詢優化器(在常規模式下)能夠生成通過準確調試的方案,而不改變應用代碼。這種獨特的功能在DBA支持第三方應用時很是實用。 這時,他們沒必要訪問代碼,不然當代碼發生變化時,可能會使支持協議失效。

管理企業
   經過Oracle企業管理器10g網格控制(Oracle Enterprise Manager 10g Grid Control),Oracle推出了真正基於Web的管理控制檯,DBA能夠從任何位置進行訪問,且實現零客戶端程序安裝,徹底防火牆兼容。性能管理 (Performance Management)功能包括經過web瀏覽器進行實時圖形數據庫性能監控。爲了簡化Oracle軟件的管理任務,網格控制配置了完整的軟件庫存清單, 包括硬件、操做系統、操做系統補丁、已裝Oracle軟件、已裝Oracle補丁。網格控制跟蹤硬件和軟件的安裝變化,便於出現問題時查明「哪些部分發生 變動?」

  網格控制經過 Metalink直接與Oracle支持(Oracle Support)鏈接,能夠快速查詢企業內部已裝Oracle產品的相關補丁。補丁能夠在特定目標的上下文中查找,也能夠在必要時,由管理員查詢特定的路 徑。肯定所需補丁的位置後,網格控制可由Oracle Metalink下載補丁,將其粘貼到相應的目標主機中。

  複製軟件安裝用於開發或QA 是許多數據中心的平常工做。對於Oracle軟件來講,網格控制使這類克隆安裝工做變得至關容易。網格控制的克隆嚮導能夠自動複製數據庫和應用服務器安裝 (特別是Oracle本地安裝目錄)。因爲具備「多播」功能,所以,即便多個目標主機的多個克隆也一樣能夠在一次操做中完成。網格控制的本地克隆已實現智 能化:主機名、IP地址及其餘環境設置均可以在新克隆的主機上自動進行調整。

  DB2控制中心在一個終端上 提供了通用和集成的成套工具,用於管理跨越不一樣軟件和客戶機硬件平臺的本地及遠程數據庫。DB2的這種新功能,Oracle早在1994年就已經應用到 Oracle企業管理器框架中了。在DB2 Version 8.1中,您也能夠選擇採用Web 健康中心(Web Health Center)經過Web瀏覽器訪問健康監測信息,執行新的DB2命令。

高可用性
   在今天快速發展的經濟環境下,構建高可用性的IT基礎設施對於各種企業成功運做顯得相當重要。關鍵的應用服務器或數據一旦出現問題會危及到整個企業,收入 受損、客戶丟失、致使賠償,不良的形象會在客戶中產生持久影響,破壞企業的聲譽。故障停機的損失每每不大容易用直接成原本衡量。據Standish集團的 DARTS調查4,系統故障停機一分鐘給企業形成的損失大約爲每分鐘2 500至10 000美圓。按照這一指標計算,即便數據可用性達到99.9%,企業每一年也要付出500萬美圓的代價。在設計具有容錯和恢復能力的IT基礎設施時,考慮到 非計劃停機和計劃停機因素是很是重要的。非計劃停機主要是因爲計算機故障或數據問題形成的(損壞、人爲錯誤)。計劃停機主要是因爲數據變化或系統變動,必 須對生產系統作相應調整。計劃停機能夠使運行中斷,特別是支持多個時區用戶的跨國企業。這種狀況下,對系統進行設計,最大限度減小有計劃的停機是很重要 的。計劃停機包括平常管理、按期維護和執行新部署。

數據庫事故恢復能力
Oracle和DB2都具備聯機和脫機備份與恢復基本功能。儘管能夠提早制定並實施備份方案,但很難對全部恢復狀況作出預測。Oracle綜合備份與恢復能力大大優於DB2。所以,Oracle幾乎能夠知足全部備份和恢復要求。

Oracle數據庫10g恢復管 理器(RMAN)採用首創設計,具備關鍵Oracle數據最佳恢復功能。在不增長成本和安裝附加設備的狀況下,徹底能夠由RMAN來管理Oracle數據 庫文件的備份和恢復。因爲與Oracle內核緊密集成,所以RMAN達到了具備洞察力和智能化的水平,能夠有效恢復Oracle數據庫。Oracle數據 庫10g RMAN具有許多先進的功能,例如:
1. 快速恢復區 - 組織管理恢復的相關文件
2. 優化增量備份 - 僅對須要備份的變化塊直接備份
3. 增量更新備份 - 合併數據庫映像拷貝和增量備份,提供快速有效的數據庫恢復
4. 企業管理器與RMAN - 提供點擊備份與恢復嚮導

Oracle數據庫10g 備份與恢復還推出了許多創新功能,如:
1. 備份壓縮
2. 當重建發現丟失或損壞的備份時自動恢復前一備份
3. 自前次恢復時間點恢復-經過復位日誌恢復
4. 恢復期間自動建立新文件
5. 在備份或恢復中自動實現通道故障轉移
6. 自動錶空間時間點恢復
7. 全DB「開始備份」命令加速鏡像分割
8. 通過改進的恢復並行操做(2至4倍)
9. 表空間重命名
10. 存檔日誌代理(第三方)備份
11. 基於時間窗口的加速備份
12. 跨平臺可傳輸表空間

  因爲可以生成即時備份,所以分割鏡像備份很是實用。Oracle和DB2都具有分割鏡像備份功能。不過,Oracle能夠在數據庫運行和磁盤寫入的同時分割鏡像。而DB2鏡像分割時必須掛起數據庫I/O,所以操做過程當中,數據庫是不能寫入的。

  若是存檔日誌文件損壞,Oracle可以經過LogMiner工具翻閱損壞的日誌文件,恢復日誌文件中記錄的交易。對於DB2來講,存檔日誌文件損壞意味着不只特定日誌文件中的交易所有丟失,並且損壞日誌文件以後建立的存檔日誌文件也會丟失。

  採用Oracle的塊級介質恢復功能,當只有一個塊損壞時,只是這個塊須要恢復,文件的其他部分,即含有這個塊的表仍然能夠在線訪問,從而提升了數據的可用性。DB2不能以塊爲單位恢復數據,所以須要將整個文件脫機、重建、恢復。

人爲錯誤恢復
   大量調查結果顯示,40%的應用中斷是操做者或用戶錯誤形成的。這些都屬於人爲操做不當。但這類錯誤很難避免,並且沒有先進的計劃工具和相應的技術很難恢復。

  Oracle數據庫10g提供了人爲錯誤修正技術,稱爲Flashback。Flashback配置了SQL接口,能夠迅速分析修復人爲錯誤。Flashback是Oracle數據庫10g的首創技術,能夠任何粒度級別進行恢復,包括行、事務、表和整個數據庫。

1. Flashback查詢可供用戶查詢過去某一時間點的數據,重建被意外刪除或更改的數據。
2. Flashback版本查詢可按行查看數據庫一段時間內發生的變化。
3. Flashback事務查詢可按事務查看數據庫的變化。
4. Flashback數據庫是一種按時間點進行恢復的新戰略,能夠快速將Oracle數據庫倒回至之前的時間,以修復邏輯數據損壞或用戶錯誤形成的問題。
5. Flashback表可方便快捷地恢復過去時間某一點的表或一組表。
6. Flashback刪除爲刪除對象提供安全保證,您能夠簡便快速地恢復刪除的表及其相關的對象。

增量磁盤備份及Flashback技術不須要分割鏡像備份。DBA從備份到修正錯誤沒必要通過漫長的重建過程,在不採用費用很高的磁盤鏡像技術的狀況下,能夠顯著提升恢復速度。

在線維護
理想環境下,DBA應該可以在線執行全部維護工做,即在操做過程當中能夠繼續全部業務交易。Oracle不只在線執行交易的能力強於DB2,並且顯著提升了 執行的控制能力。幾乎每一種重組操做在Oracle中均可以在線執行,建立新索引、合併或刪除現有索引,或對錶進行各類改變,包括加減字段。而DB2只能 在線合併索引。DB2中的全部其餘操做都須要中止數據庫交易,釋放全部的鎖5。

  Oracle數據庫大量維護 工做能夠在數據庫運行、用戶更新或訪問數據不中斷的狀況下進行。索引能夠在數據庫運行狀態下,最終用戶讀取或更新數據的同時添加、重建或整理。一樣,表也 能夠在線從新定位或整理。在不中斷最終用戶查看或更新基礎數據的狀況下,還能夠對錶從新定義,改變表類型,加減、重命名列和改變存儲參數。Oracle數 據庫10g這種功能強化後,能夠:
1. 支持快速克隆表索引、受權、限制及其餘特性;
2. 在線將Long數據類型轉換爲LOB數據類型;
3. 創建惟一索引,而不須要使用關鍵字。

  Java?和PL/SQL?存儲程序能夠動態更新,Oracle管理全部從屬關係,在數據庫中正確集成新程序,對最終用戶的運行不構成影響。Oracle數據庫10g中強化了這種功能,從而能夠在相關存儲程序不進行從新編譯的狀況下,對錶作各類變動。

數據中心災難
   Oracle Data Guard是在業內推出的最全面、最可靠的災難恢復解決方案,能夠:
1. 防止人爲錯誤致使的運行中斷和系統災難
2. 零數據丟失保護
3. 近乎實時的數據同步
4. 集成基於GUI的管理框架

  Oracle Data Guard能夠在各類系統災難下對客戶加以保護。Data Guard能夠自動完成複雜的任務,爲維護備用系統提供監控、告警和控制功能。同時,除報告外,Data Guard還利用備用服務器進行維護、更新(硬件、操做系統和數據庫軟件)和平常管理,從而減小了計劃停機。

  IBM沒有與Oracle Data Guard至關的產品。採用DB2,每一個備用數據庫都是一項定製做業,向備用站點發送重複日誌之類的基礎工做都須要依靠用戶編寫日誌傳送標註。DB2用戶建立的備用數據庫「解決方案」可靠性差,且實施成本高。

數據倉庫與商務智能
   商務智能系統的良好運行創建在數據倉庫的基礎上,這種數據倉庫要求可以知足日益擴大的受衆對信息不斷增加的要求。不管數據存儲在何處,要爲客戶提供即時信 息。不管是大企業,仍是中小企業,也不管是傳統企業或.com公司,商務智能系統都要面臨上述兩方面的要求。事實上,AMR調查結果顯示,在爲不斷增加的 用戶提供即時信息和透明支持大量數據源的推進下,數據庫正逐漸演變爲數據倉庫,這種合併過程目前正在以每一年40%的速度發展。這意味着,數據倉庫可以儲存 更多數據,支持更多用戶,運行速度更快,並且不下降服務質量。數據倉庫的核心要求:性能、擴展能力和管理能力還是成功部署數據倉庫的關鍵因素。

  Oracle數據庫10g是一個基於標準的獨立平臺,可知足服務器一側商務智能和數據倉庫的各類要求,包括提取、轉換和裝載(ETL),在線分析處理(OLAP)和數據挖掘。在商務智能環境下,Oracle數據庫的功能不須要多個引擎。這種商務智能架構具備許多優勢:
1. 快速部署:部署商務智能系統時不須要整合多個服務器組件;
2. 下降管理成本:一個服務器意味着全部數據都存儲 在一個位置,經過一個工具進行管理。並且,不需 要管理各服務器存儲數據的同步流程。當Oracle 數據庫10g裝載新數據時,可供全部商務智能使 用。
3. 有利於制定決策:採用一個數據庫,全部商務智能用戶均可以迅速訪問商務智能系統中的數據,由於 不須要從一個服務器到另外一個服務器過濾數據。
4. 安全:所有數據存儲在一個數據庫中,不管採用何 種方法訪問,IT管理員均可以保證商務智能數據的安全。
5. 可用性:Oracle數據庫10g具備出色的可用性,遠 遠高於其餘智能產品的可用性水平。

擴展性
   長期以來,Oracle一直支持各類平臺和操做系統,爲客戶提供了靈活的選擇和協商的餘地。Oracle支持當前擴展能力最強的64位對稱多處理 (SMP)系統和非統一存儲器訪問(NUMA)系統,而且一直在支持90年代中期以來的同類系統結構。Oracle和IBM支持的大規模並行處理 (MPP)系統,因爲須要管理多個操做系統和數據庫實例,所以對維護有比較高的要求。IBM SP是針對採用分區技術的IMB DB2 UDB ESE(之前稱EEE)設計的MPP 平臺。IBM解決方案依靠散列分區技術,在MPP合成系統中提供理論上對稱的數據分佈。這種方法須要進行MPP管理和調試,以最大限度減小實際業務查詢中 的數據變形問題,這些在Oracle真正應用集羣的非共享/共享磁盤系統中獲得顯著改善。

  IBM的VLDB實例仍是以IBM平臺爲主,儘管IBM DB2推出了基於其餘平臺的產品(HP, Sun, Linux, Windows),但系統在這些平臺上的性能和擴展能力幾乎沒有實例加以證明。

如下是部分Oracle數TB(數據)客戶:
1. Amazon.com,13TB數據,運行在HP Superdome
2. Acxiom,6TB數據,運行在HP AlphaServer集 羣
3. AtosEuronext,1.5TB數據,運行在RedHat Linux 集羣
4. Best Buy,1.5TB數據,運行在Sun e-1000
5. 高露潔,2.6TB數據,運行於基於IMB P690的 SAP BW Financial Institute,
6. 5TB數據,運行在多節點206 CPU IBM SP
7. 法國電信,21+TB數據,運行在HP V-2500
8. 意大利移動電信,9.6TB數據,運行在HP AlphaServer集羣

並行機制
   Oracle可擴展的、並行決策支持戰略以動態並行機制爲核心。這種方法能夠實現徹底透明的並行,不須要靜態表分區,大大減小了數據管理工做,最大限度地 利用硬件的潛在能力。O在racle用於數據維護的分區選項中,也增長了分區間的並行處理支持,包括並行DML。Oracle還支持每一個分區內查詢和插入 的並行處理。

  對比之下,IBM(DB2 UDB EEE)最初選擇分區做爲並行處理手段。IBM提出了「UNION ALL」工做區的建議。有趣的是,IBM基於OS/390(Z/OS)的DB2卻並未選擇這種方法,而是採用了Sysplex共享磁盤,分區(範圍)的方 法只是用於管理。

  Oracle8i的優化器增 加了「物化視圖」,這是RDBMS中的一種分層彙總表,查詢能夠透明地轉至彙總層,從而極大地提升了查詢性能。Oracle對事實表和維表實現了這種功 能。IBM在DB2 UDB中採用了相似方法,但僅支持事實表(Version 7以上版本)。

  如今,Oracle基於成本的查詢優化器成本計算功能可應用於Oracle的數據庫資源管理器,用以給不一樣的用戶組(或「查詢用戶」)配置成本限制,防止不夠完善的查詢干擾一樣有性能要求的其餘用戶的查詢。 而IBM則是經過工具由數據庫外部解決這一問題。

  有必要指出,Oracle還在數據庫中嵌入了OLAP選項和數據挖掘選項,所以能夠在數據存儲位置,而不是商務智能工具中進行高級分析,從而提升了系統的性能。OLPA選項可經過SQL或Java API訪問。數據挖掘選項可經過Java API訪問。

分區
   分區能夠將大型數據庫結構(表、索引等)分解爲比較小的,更加易於管理的結構單位,同時,能夠提升查詢的性能和資源利用率。

  DB2僅支持散列分區方法, 與Oracle分區方法相比存在很大的侷限性和明顯的弱點。因爲只能進行散列分區,所以DB2不支持「滾動窗口」,就管理性而言,這是一種嚴重的不足。 「滾動窗口」能夠使規按期間的數據(如一週、一個月)持續地由最新數據在線替換舊數據。DB2散列分區在加載新數據時,要求全部分區的數據從新分佈,所以 延長了加載時間,下降了數據的可用性,由於數據從新分佈過程當中,表呈鎖定狀態。一樣,當舊數據存檔或刪除時會涉及到全部分區。這樣會干擾常規的插入操做, 形成空間碎片。

  DB2的另外一個缺點是要求表 與索引之間均衡分區。這意味着,不能建立全局索引,包括分區的或非分區的。對於一般須要採用全局索引有效訪問某個記錄的OLAP環境來講,這是一個嚴重的 問題。採用DB2,應用設計人員沒法靈活地定義在分區中的索引策略。 DB2分區方法存在的這些侷限,使得管理大量數據的工做變得十分複雜。在這方面,Oracle提供了豐富的選擇方法,不只提升了可管理性,並且改善了系統 的性能。

數據加載與存檔
   Oracle數據庫10g採用了Oracle數據泵(Data Pump),這是一種基於服務器的統一框架,可用於Oracle數據庫系統之間快速傳送批數據和元數據。利用直接路徑API,Oracle數據泵能夠最快 速地完成Oracle系統的數據加載和卸載。Oracle數據泵是企業級服務器基礎架構,具有加載和卸載全並行功能、重啓功能和監控功能。Oracle數 據泵的全部接口所有外置,所以您能夠編寫本身的數據傳送工具。利用數據泵輸出(Export)和輸入(Import)工具,能夠在目標平臺上卸載或從新加 載任何數據對象的子集。若是在文件系統不一樣語法的平臺間傳送數據,如今能夠改變某些對象輸入時建立的定義,數據不會發生丟失。

  DB2輸出功能一次僅容許傳 送一個表的數據。所以,假如模型中有20個表,就須要執行20次輸出做業,一次完成一個表。除浪費時間和人力外,還會因爲表的依賴關係在不一樣時間傳送形成 輸出數據不一致。所以,若是模型中含有ORDERS和ORDER_ITEMS兩個表,因爲ORDER_ITEMS在ORDERS表以後輸 出,ORDER_ITEMS的輸出數據中可能含有ORDERS表的輸出文件中不存在的項。這種不一致會形成輸出文件根本沒法使用,由於這樣的文件不能用來 重建徹底一致的數據快照。而Oracle不只可讓管理員在模型、表和數據庫層輸出數據,並且可在輸出做業開始後,保證輸出數據相對於時間點的一致性,不 必考慮給定表的輸出時間。所以,在上例中,管理員只需執行一次做業,輸出完整的模型,沒必要擔憂輸出數據出現不一致的問題。

  第二,因爲DB2輸出文件不 能提取某些表和模型屬性,所以根本沒法用來邏輯建立模型或數據庫。據「DB2數據傳送指南與參考」介紹,DB2 輸出不支持帶有類型列的表單,不能保留參照完整性約束、檢驗約束、物理空間分配設置、默認列、外部關鍵字定義和觸發器等屬性。同時,也不支持任何非表的其 他數據庫對象,如視圖、存儲過程等。所以,與隨時用來執行邏輯備份、重建模型或數據庫的Oracle輸出/輸入工具不一樣,DB2工具僅用於表輸入輸出數 據。即便這種用途也不是隨即可以執行,由於DB2輸入不能用於重建LOB列定義大於1GB以上的表7。

  Oracle SQL 加載器(Oracle SQL Loader)是另外一種由外部文件向Oracle數據庫表加載數據的有力工具。與DB2 Load不一樣,SQL Loader能夠在同一次加載會話中,將數據裝入多個表,從而使採用SQL函數操縱數據成爲可能,數據在加載過程結束後能夠進行訪問。這對於DB2來講是 沒法實現的,除非管理員備份表空間,啓動完整性約束8。除簡單數據加載外,Oracle數據庫10g還配備了成套服務器功能,可知足ETL處理要求(提 取、轉換、加載)。採用Oracle外部表功能,平面文件等外部源數據能夠配置在數據庫中,如同正常數據庫表同樣。這些「外部表」可經過SQL存取。這 樣,外部數據能夠採用SQL、PL/SQL和Java直接查詢,並行裝入數據庫。外部表在一個步驟中完成數據轉換和裝載,從而大大簡化了ETL處理過程。 DB2則須要採用多我的工步驟。DB2首先須要將外部數據裝入「分級表」,而後進行SQL轉換,最後才能進行處理。所以,增長了DBA的工做量,延長了 ETL的週期!

  操做影響
   在許多組織中,一個Oracle DBA能夠管理多個數據庫。對於大規模決策支持,如下實例能夠有力地證實Oracle系統如何精減實際須要的的DBA人員數量:
1. Acxiom,16TB數據庫,2 DBAs
2. Acxiom,6TB數據庫(RAC),2 DBAs
3. Amazon.com,16TB數據庫,2 DBAs
4. 法國電信,21+TB數據庫,2 DBAs
5. 意大利移動電信,12TB數據庫(OPS),3 DBAs
6. WestPac,2.3TB數據庫,2 DBAs

  影響操做的另外一個考慮因素是 技術能力問題。Oracle的技術支持能力遠不止數據倉庫/決策支持實施(大多數分析人士認爲這隻佔其技術支持的30-50%),也並不只限於 Oracle現有經驗老道的顧問和設計師。通常狀況下,Oracle客戶利用內部技術力量完成部署工做。須要諮詢幫助的客戶可找Oracle,四大諮詢公 司及大量二級專業諮詢機構。所以,Oracle項目經理能夠在豐富的技術資源和靈活的價位中進行選擇。例如,最近「Monster.com」的 Oracle技能調查顯示,初步掌握Oracle技能的人員達到5000人,而掌握「DB2 UDB」技術的人不多(不到200人)。

應用開發
   每一個企業都正在開發基於互聯網的應用,以充分利用互聯網無處不在、廉價和開放式標準的優點。不過,開發這類應用面臨嚴峻的挑戰,對開發平臺也提出了更高的 要求。選擇正確的平臺是成功開發應用的必要條件。Oracle數據庫10g爲開發用於網格計算的靈活、可擴展、高性能的數據庫應用,提供了最爲全面的功 能。

  調查顯示,大部分紅套應用軟件主流供應商首先支持Oracle。這是各種軟件中的廣泛現象,包括ERP、CRM、採購和供應鏈。因爲Oracle系統已具備至關大的使用規模,具備基於Oracle部署成套應用豐富經驗的實施提供商也至關多。

  大部分應用都要涉及某種類型的文本操做,SQL和PL/SQL所固有的對於正則表達式操做的支持可對這些應用提供有力幫助,它完全改進了在數據庫中進行文本搜索和處理的能力。在DB2中,正則表達式支持由PCRE庫軟件提供,這是一種數據庫外部的開放源代碼軟件。
   ANSI SQL多重集操做能夠使數據挖掘應用在數據庫內部處理市場分類信息(market basket information)。Oracle現已支持基於嵌套表(Nested Tables)的SQL多重集操做。DB2根本不支持彙集類型!

  Oracle數據庫10g有兩種新排序方法,一種是大小寫不敏感型排序,另外一種是音調不敏感型排序。這樣便於應用處理例如姓名和地址這樣的數據,他們能夠使用音調和混合大小寫存儲。IBM DB2不支持大小寫不敏感型操做。

  實行最新Unicode標準後,Oracle字符集ATL32UTF8和AL16UTF16(gb2312和UTF-16)現已支持Unicode 3.2,加4字節補充字符。IBM DB2支持Unicode 3.0,但不支持補充字符。

  大型對象塊(LOB)用於存儲非結構數據,如視頻、音頻和文檔。Oracle數據庫10g能夠存儲檢索最高128 TB的LOB,IBM DB2最多僅能存儲2GB LOB。
 
   Oracle數據庫10g的SQL Model子句可將查詢結果做爲多維數組集合,導出精細的相互關係公式。這些公式可用於複雜數字運算應用,如預算和預測,不須要提取數據組成電子數據表,或執行復雜的鏈接與合併操做。

  對於Microsoft .Net開發人員,Oracle推出了專門用於.Net的高性能Oracle數據供應器ODP.NET (Oracle Data Provider),這一工具符合ADO.Net標準。ODP.Net支持Oracle固有的數據類型,如REF光標和LOBS。DB2只有DB2數據供應器的開發版,僅提供至關於ODBC.Net的一個普通接口。

  Web服務正在滲透到企業計 算的各個層面,從成套電子商務應用(如ERP,CRM)到中間層(如J2EE,.NET),直至數據庫基礎設施。數據庫中結構數據、非結構數據和數據邏輯 的激增,XML正在被愈來愈多地用做數據交換格式,以及HTTP做爲異構環境下廣泛採用的傳輸機制獲得事實上的承認,引發人們對數據庫Web服務的普遍興 趣。數據庫Web服務是雙向的:數據庫做爲服務供應方,即由外向內調用時,客戶機應用能夠經過Web服務機制訪問數據庫;數據庫做爲服務消費方時,即由內 向外調用時,數據庫會話中的SQL查詢或應用模塊使用外部 Web 服務。Oracle能夠幫助您將數據庫變爲服務供應方。這樣,您能夠在企業內部網中共享數據和元數據,經過SOAP請求訪問數據庫操做,如觸發器。同 樣,Oracle也能夠幫助您將數據庫變爲服務消費方訪問動態數據。這種功能自Oracle 8i開始推出,Oracle數據庫10g對這一功能進一步正規化,在JPublisher中添加了新應用,支持數據庫成爲Web服務供應方(數據庫中配置 SQL查詢、SQL DML、Java),並使JPublisher支持數據庫成爲Web服務消費方。DB2的Version 8也提供Web 服務供應方和消費方支持,但因爲DB2未與JavaVM集成,所以必須依靠手工處理靜態SOAP信息,或非SOAP程序庫。

基於Web的開發工具
   Oracle HTML DB是專門爲Oracle數據庫10g開發的,基於瀏覽器的web開發部署框架。這一工具將易用、高效的我的數據庫與具備可用性、可擴展和安全的企業數據 庫加以整合。Oracle HTML DB是一種說明性開發工具和開發部署面向數據庫web應用的框架。Oracle HTML DB內置功能提升了應用開發速度,如設計主題、導航控制、模式處理器和靈活的報表。您只需經過 web瀏覽器,便可快速組裝數據庫驅動的先進web應用。

  許多組織採用電子數據表和個 人數據庫管理信息,所以浪費了大量寶貴時間。這些產品雖然易用,但不能適於在 web環境下部署,也不能逐漸加以擴展支持多用戶數據更新。將大量小的工做組級數據庫,包括電子數據表整合在Oracle數據庫之下,免去了開發人員控制 方面的麻煩,使得Oracle HTML DB在如下方面表現出明顯的優點:
1. 當前電子數據表和我的數據庫中鎖定的數據部 署在web環境下,能夠進行多用戶並行更新,從而 提升了存取能力。
2. 電子數據表再也不以附件形式經過電子郵件傳送,合併和清除多個數據拷貝,從而節省時間。
3. 將分散的信息合併到安全、可靠、可擴展的Oracle數據庫中,提升了安全性和可用性。
5. 構建您從未有過的應用,即便是「快速而又隨性」(quick and dirty)的應用也能夠當即爲企業用戶部署在web環境下。

全球化
   Oracle全球化開發包(GDK)包括成套Java API,爲應用開發人員採用Oracle設計的最佳的全球化實踐和功能開發全球互聯網應用提供了基礎框架。

  DB2還沒有提供Java全球 化API。不過,IBM能夠提供Java 全球化庫,稱做ICU(Unicode國際組件),這是一種開放源碼,可提供GDK的子集功能。與GDK類似之處在於,ICU能夠提供低端API,用於語 言分類、數字格式化、補充字符支持等。但與GDK不一樣的是,這一工具不能提供構建全球互聯網應用的高端API,如用戶地區檢測、預翻譯地區名、全球應用配 置文件、語言和字符集檢測、自動轉移、撤消本地化內容等。

管理您的全部數據
非結構數據

   結構數據只是組織中關鍵數據的一部分。電子數據表、字處理文檔、視頻剪輯、報紙文章、新聞稿和地圖等,也僅是能夠在中央庫中集中管理的一小部分非結構對 象。Oracle數據庫10g以其現有的強大功能,能夠集成的方式管理您的所有數據,關係型數據、電子郵件、文檔、多媒體、XML和專用數據。具體產品包 括:
1. interMedia
  a.圖像擴展功能,可存儲檢索圖像
b.音頻擴展功能,可存儲檢索音頻剪輯
c.視頻擴展功能,可存儲檢索視頻剪輯
d.位置擴展功能,可檢索與座標相關的數據
2. Text
a.文本擴展功能,可檢索文檔及文檔摘要
3. 本機XML存儲
4. 空間數據選項
a.提供數據與座標的連接
b.地理信息系統(GIS)夥伴供應商的典型支持

IBM一直採用「擴展器」做爲處 理這類數據的方法。IBM將全部媒體和元數據存儲在關係數據相關的各個表中,所以處理的工做量大,媒體訪問的I/O開銷大,管理費用高。Oracle數據 庫10g採用先進的技術能夠對元數據進行自動化處理。而IBM DB2若想使DB2表空間接收元數據,則須要DBA手工處理各個流程。因爲IBM採用觸發器,每建立一個媒體對象需觸發一次觸發器來更新含有元數據對象和 元數據的管理表,大大增長了處理成本。若是採用媒體數據類型的Java對象方法,IBM不能提供用於媒體訪問的Java類庫,也不能爲JSP應用開發人員 提供JSP Tag庫。客戶必須本身編碼。大量須要開發維護的代碼使得應用成本大大高於開發維護費用。

XML
   Oracle XML DB是Oracle9i數據庫第二版推出的一種高性能的XML存儲檢索技術。這一技術在Oracle服務器中全面結合W3CXML數據模型,爲導航和查詢 XML提供了新的標準訪問方法。採用XML DB,您能夠同時利用關係數據庫技術和XML技術。XML DB還在數據庫中添加了XML庫。Oracle數據庫10g Intermedia 現已與XML DB 集成,能夠使圖像等含有媒體的XML文檔具備這些圖像分析過的元數據,從而能夠標註索引,便於圖像和母XML文件的定位。

  IBM在DB2 v8.1 XML擴展器中提供數據庫XML技術。擴展器是一種鬆散耦合掛件,沒法與Oracle固有XML支持相比。IBM在其信息集成器 8.1(Information Integrator)中採用了XML封裝數據集成技術。與Oracle不一樣,DB2必須採用單獨軟件XML擴展器(XML Extender)和文本擴展器(Text Extender)經「擴展」後支持XML。這三個產品是由全球不一樣組織分別開發的,彼此之間每每互不協調。這種系統的用戶不只受到產品集成度差帶來的管 理方面的問題,並且鬆散耦合給功能和性能也形成不利的影響。

  Oracle的XML DB技術優於IBM的方法,具體表如今:
1. 自己支持XML數據模型及其餘XML標準
2. 集成SQL、XML、Java和Text處理,不須要添加 部件,提升了擴展能力
3. 先進豐富的編程存取功能
4. 成套XML產品,包括支持面向內容XML的XML 庫

Butler Group在對主要XML數據管理技術進行比較後的報告中總結道:「IBM DB2使人感到失望…整體來看,這一系統缺少Oracle 9i那樣豐富的支持功能…在編寫本報告以前,咱們徵求了專業人士的意見,你們一致期待着如何給這兩套系統打分…一種可怕的意見認爲,能夠將Oracle和 IBM並列第一。這不只是不可能的,並且兩個系統幾乎不可同日而語…」

結論
   Oracle 數據庫10g是第一個專門爲企業網格計算設計的數據庫。Oracle 數據庫10g在系統性能、擴展能力、資源利用率、管理性、可用性及知足新興技術發展方面繼續保持業內領先水平。Oracle使網格技術真正成爲企業的解決方案。

  Oracle數據庫以其25年的技術優點和專業經驗爲基礎,始終是市場上首選的數據庫產品。採用Oracle數據庫不只能夠當即實現經濟效益,並且這種投資也能夠保證知足您將來的需求。

系統結構概述

首先,咱們須要理解 Oracle 使用的架構,並理解它與 DB2 的不一樣之處。圖 1 展現了 Oracle 的系統結構。將該圖與 圖 2 進行比較,後者顯示了 DB2 的系統結構。在閱讀本文的時候,爲便於理解,能夠參照這兩個圖。


圖 1. Oracle on Linux, UNIX, and Windows Version 10.2 的系統結構
圖 1. Oracle on Linux, UNIX, and Windows Version 10.2 的系統結構

圖 2. DB2 on Linux, UNIX, and Windows 系統結構
圖 2. DB2 on Linux, UNIX, and Windows 系統結構



回頁首


實例

在 Oracle 和 DB2 中,實例 的概念是相似的。在這二者之中,實例都是指後臺進程與共享內存的組合。二者之間的主要差異在於,在 Oracle 中每一個實例只能有一個數據庫,而在 DB2 中多個數據庫能夠共享一個實例。

在 Oracle 中,因爲數據庫與實例是一對一的關係,所以用 CREATE DATABASE 命令建立一個數據庫的同時便隱式地建立了一個實例。或者,爲了在計算機上建立一個 Oracle 實例,也能夠使用 Database Configuration Assistant,或者使用 ORADIM 實用程序,後者是 Oracle 9i 經過 NEW 選項提供的。另外還必須提供某些信息,包括系統標識符(System Identifier,SID)或一個服務名稱、實例密碼、最大用戶數、啓動模式等等。相似地,爲了刪除實例,能夠使用 ORADIM 實用程序加 DELETE 選項。這裏須要提供 SID 或服務名稱。除非在安裝過程當中建立一個新的數據庫,不然在以 fresh 方式安裝 Oracle 的時候,不會建立缺省的實例。

在 DB2 中,當在 Windows 平臺上安裝了該產品以後,便缺省地建立了一個實例 "DB2"。在 Linux 和 UNIX 中,缺省的實例名稱爲 "db2inst1"。若要在同一臺計算機上建立另外一個實例,只需執行命令 de>db2icrt de>。

圖 3 展現了缺省的 DB2 實例 「DB2」(在 Windows 中)和從 DB2 Control Center GUI 中用 db2icrt 命令建立的另外兩個實例。


圖 3. 顯示 DB2 實例的 DB2 Control Center GUI
圖 3. 顯示 DB2 實例的 DB2 Control Center GUI

若要在命令行接口中引用給定的 DB2 實例,能夠使用環境變量 DB2INSTANCE。經過這個變量,能夠指定當前活動實例,全部命令將應用到此實例。例如,若是 DB2INSTANCE 被設置爲 PROD,而後您執行了命令 de>create database MYDB1de>, 將建立一個與實例 PROD 關聯的數據庫。若是要在實例 DB2 上建立該數據庫,那麼必須首先將 DB2INSTANCE 變量的值改成 DB2。這相似於 ORACLE_SID (System Identifier),當用戶想要在不一樣實例之間進行切換時,也是使用 ORACLE_SID。

還有一種標識要使用的實例的簡單方法,那就是使用 DB2 Control Center GUI,如 圖 3 所示。要在該工具中看到對應於新實例的條目,須要經過右擊 Instances 並選擇 Add 來將該實例添加到此工具中。要刪除 DB2 中的一個實例,能夠執行命令 de>db2idrop de>。

總 之,在 Oracle 中,能夠使用 Database Configuration Assistant 來建立、修改、啓動、中止和刪除實例,而在 DB2 中則能夠使用 Control Center GUI 作一樣的事情。並且,Oracle 實例與數據庫只能是一對一的關係,而在 DB2 中卻不是這樣。一個 DB2 實例中能夠同時存在多個數據庫,而且能夠併發地使用這些數據庫。




回頁首


數據庫

在 Oracle 中,能夠用 CREATE DATABASE 命令手動建立數據庫,也能夠用 Database Configuration Assistant 建立數據庫。手動建立數據庫時,在執行 CREATE DATABASE 命令以前,須要執行一系列的步驟,包括設置 OS 變量,準備參數文件,以及建立密碼文件。

元數據信息在 Data Dictionary 中存儲和管理,由基本表和相應的視圖組成。基本表是在數據庫建立過程當中自動建立的,而視圖則是經過運行 catalog.sql 和 catproc.sql 腳本構造的。

所以,Oracle 數據庫可看做包含 3 種類型的文件的一個集合:

  1. 數據文件(Data File):包含實際的數據,數據庫的物理實現。(相似於 DB2 中的容器。)
  2. 重作文件(Redo File):至關於 DB2 中的事務日誌(Transaction Log)。
  3. 控制文件(Control File):包含用於維護和驗證數據庫完整性的信息。

在 DB2 中,一個實例能夠包含多個數據庫,如 圖 2 所示。每一個數據庫都是一個封閉的、真正獨立的單元。每一個數據庫有其本身的編目表空間、臨時表空間和用戶表空間,這些表空間是在建立數據庫時缺省建立的。DB2 包含一個稱爲系統數據庫目錄(system database directory) 的二進制文件,其中包含可從 DB2 機器上鍊接的全部數據庫的條目。這個目錄保存在實例級。

當建立一個實例時,缺省狀況下不會建立數據庫,您須要使用 create database 命令顯式地建立一個數據庫。此外還能夠用 Control Center 建立數據庫,如 圖 4圖 5 所示。


圖 4. 使用 Control Center GUI 建立 DB2 數據庫
圖 4. 使用 Control Center GUI 建立 DB2 數據庫

圖 5. 使用 Control Center GUI 建立 DB2 數據庫(續)
圖 5. 使用 Control Center GUI 建立 DB2 數據庫(續)

圖 5 中,您也能夠看看單擊 Show Command 時會出現什麼狀況。全部的 DB2 Control Center GUI 屏幕都會顯示實際上在後臺執行的 SQL 語句或命令。這些命 令能夠保存在一個腳本中,以便在之後執行,或者也能夠將它們複製到 Command Line Processor(CLP)或 Command Center GUI 工具中,在這些工具中執行。這些工具分別至關於 Oracle 的 SQL*Plus 和 iSQL *Plus。

能夠使用 'DROP DATABASE' 命令或者在 DB2 Control Center GUI 中刪除一個 DB2 數據庫。而在 Oracle 中卻不是使用這樣的命令。數據庫的刪除是經過刪除全部相關數據文件來完成的。

同一個實例中的數據庫一般不會相互進行交互。然而,若是應用程序須要與多個數據庫交互,那麼經過啓用聯邦(federation) 支持能夠知足這一需求。在 參考資料 小節中有一篇關於聯邦的文章。




回頁首


容器、表空間、緩衝池和頁

在 Oracle 中,在物理上數據是存儲在被稱做數據文件(Data File)的文件中的。這相似於 DB2 的容器(container),DB2 的容器也是數據實際存儲的地方。每一個 Oracle 數據庫包含一個名爲 SYSTEM 的表空間,這是在建立數據庫時由 Oracle 自動建立的。其餘用於用戶數據、臨時數據和索引數據的表空間則須要在建立數據庫以後另行建立,而且在使用這些表空間以前,還須要爲之指定一個用戶。

在 DB2 中,表空間 是邏輯對象,做爲邏輯表和物理容器之間的一層。當建立一個表空間時,能夠將它與一個特定的緩衝池(數據庫緩存)關聯起來,並關聯到特定的容器。這爲性能管 理帶來了靈活性。例如,若是有一個 "hot" 表,那麼能夠在一個單獨的表空間中定義它,而這個表空間又與一個獨立的緩衝池相關聯。這有助於確保此表中的數據連續地緩存在內存中。

在 DB2 中,使用 CREATE DATABASE 命令及其缺省值建立數據庫時,同時也會自動建立三個缺省的表空間。表 1 描述了缺省的 DB2 表空間:

表 1. 用缺省值建立數據庫時,缺省建立的 DB2 表空間
表空間名稱 描述
SYSCATSPACE 包含元數據的編目表空間
TEMPSPACE1 用於執行鏈接和排序等操做的系統臨時表空間。這個表空間的名稱能夠更改
USERSPACE1 這個表空間是可選的,若是在建立表的時候沒有顯式地指定表空間,那麼能夠用這個表空間來存儲用戶表

在 DB2 中,因爲數據庫是獨立的單元,所以表空間不能跨數據庫共享。因爲表空間只在一個數據庫中是可知的,所以兩個不一樣的數據庫能夠有具備相同名稱的表空間。在 圖 2 中能夠看到這一點,其中數據庫 MYDB1 有一個名爲 MYTBLS 的表空間,而數據庫 MYDB2 也有一個同名的表空間。

DB2 表空間能夠分爲 SMS(系統管理的表空間)與 DMS(數據庫管理的表空間)兩類。SMS 表空間由操做系統管理,它們只能是目錄。SMS 表空間可根據須要自動增加,所以 SMS 能夠提供很好的性能,而且須要的管理也不多。DMS 表空間由 DB2 管理,既能夠是文件,也能夠是原始設備。這種類型的表空間能夠提供最佳性能,可是須要進行一些管理。例如,須要預先指定想要爲這個表空間分配多大的空間, 由於這種表空間不能自動增加。

Oracle 的存儲模型中沒有 SMS 的概念,可是它的數據文件相似於 DB2 DMS 表空間。也就是說,能夠經過增長數據文件的大小,或爲表空間添加數據文件,或者經過添加一個新的表空間,來增長數據庫的大小。

表 2 顯示了 Oracle 數據庫或表空間與 DB2 數據庫或表空間的對應關係。

表 2. Oracle 數據庫與 DB2 數據庫和表空間的對應關係
Oracle 數據庫或表空間 DB2 數據庫或表空間
SYSTEM 是存放編目(數據字典)信息的表空間 SYSCATSPACE(編目表空間);和在 Oracle 中同樣,僅在數據庫級保存該信息
Data Dictionary(包含表和視圖形式的元數據),駐留在 SYSTEM 表空間中 系統編目表(由 SYSIBM 模式標識),系統視圖(由 SYSCAT 或 SYSSTAT 模式標識),駐留在 SYSCATSPACE 表空間中
SCOTT 數據庫 SAMPLE 數據庫
TEMP 表空間 System Temporary 表空間(缺省狀況下名爲 tempspace1)
UNDO 表空間 N/A
USER 表空間 用戶表空間。缺省狀況下,USERSPACE1 通常是在數據庫建立以後才建立的

前面已指出,Oracle 的數據緩衝區概念至關於 DB2 的緩衝池。可是,DB2 容許多個緩衝池存在。在 DB2 中不須要預先定義可建立的緩衝池的數量,緩衝池的名稱能夠是任意的。

Oracle 中塊(block) 的概念與 DB2 中的頁最爲類似。一個 DB2 頁的大小能夠爲 4k、8k、16k 或 32k。表中的一個行只能放在一個頁中,而不能像 Oracle 中那樣跨多個頁。




回頁首


對象名稱

Oracle 中的對象名稱形式以下:

de>[Schema_name.]object_name[@database]de>

在 DB2 中,對象名稱也是由兩部分組成的結構:

de>Schema_name.object_namede>

和 在 Oracle 中同樣,DB2 模式名稱用於在邏輯上組織對象。可是二者之間一個重要差別是,在 DB2 中,模式名稱不必定與一個用戶 id 相匹配。任何擁有 IMPLICIT_SCHEMA 權限的用戶均可以用一個不存在的模式建立對象。例如,假設 「Peter」 具備 IMPLICIT_SCHEMA 權限,他執行如下命令:

de>CREATE TABLE WORLD.TABLEA (lastname char(10))de>

該命令建立表 WORLD.TABLEA,其中 WORLD 是新建立的模式。若是 Peter 沒有顯式地指定模式,那麼該命令就會建立表 PETER.TABLEA,由於缺省狀況下是使用鏈接 ID。

在 DB2 中,在發出與數據庫相關的命令以前,老是要鏈接到數據庫。所以,在這種架構下,對象名稱不須要包括數據庫名稱。




回頁首


表、視圖和索引

在 Oracle 和 DB2 中,表、視圖和索引基本上是同樣的。

DB2 提供了一個名爲 Design Advisor 的實用程序,能夠用它來爲特定的查詢或工做負載推薦索引。Design Advisor 能夠從 DB2 Control Center 中調用,也能夠從 DB2 CLP 中使用 db2advis 命令來調用。在 DB2 中,索引是直接與表定義綁定的。例如,當使用 DMS 表空間時,能夠用下面的語句指定索引存放在哪一個表空間:

de>CREATE TABLE mytable (col1 integer, col2 char(10)) in tbls1 index in tbls2de>

上面的例子代表,表中的數據將存儲在表空間 'tbls1' 中,而索引頁將存儲在表空間 'tbls2' 中。但在 Oracle 語法中,CREATE INDEX 語句有一個選項來指定索引存放在哪一個表空間。

此外,在 DB2 中,索引一旦建立好,便不能修改索引定義中的任何子句。爲了進行更改,須要刪除索引,而後從新建立索引。

和在 Oracle 中同樣,不一樣數據庫中的 DB2 表、視圖和索引能夠有相同的名稱。相同數據庫中的表和視圖則必須使用不一樣的名稱,可是容許使用與已有的表或視圖相同的名稱建立索引。




回頁首


存儲過程、觸發器和用戶定義函數(UDF)

在 Oracle 環境中,有不少方法來建立和訪問存儲過程、觸發器和函數。PL/SQL 是 SQL 的面向對象(OO)過程擴展,支持數據操縱(DML)、流控制、變量和常量的聲明、過程和函數定義以及 OO 數據類型,例如嵌套表和變長數組(varray)。Oracle 還將 JVM 併入到它的引擎中。在 Oracle 數據庫中,能夠使用 SQLJ 將存儲過程、函數和觸發器,做爲類來建立、存儲和執行。Oracle 還支持 Type 1 至 4 的 JDBC 驅動程序。

DB2 存儲過程能夠用 DB2 預編譯器支持的任何語言編寫,包括 Java、C、C++、REXX、Fortran 和 COBOL。可是,咱們推薦您使用 SQL Procedural Language(SQL PL),這種語言很是相似於 Oracle 的 PL/SQL。在開發 SQL PL 存儲過程時,須要一個 C 編譯器,由於這種存儲過程首先要轉換成 C。存儲過程的 C 實現能夠提供性能優點,由於代碼只需編譯一次(在 unfenced 模式下性能優勢尤爲明顯)。可是,在開發這種存儲過程時,開發系統上須要一個額外的 C 編譯器。在 DB2 未來的版本中,有望出現不需 C 編譯器支持的 SQL PL 存儲過程。DB2 存儲過程開發還利用 Type 1 至 4 的 JDBC 驅動程序來支持 SQLJ 和 Java。

觸發器和函數的開發能夠使用內聯 SQL/PL,這種方法不須要 C 編譯器。這種方法支持 SQL PL 語句的一個子集。另外還能夠使用 DB2 Development Center Tool 來簡化 DB2 存儲過程和用戶定義函數的建立、構建、調試和部署。




回頁首


配置文件

傳 統上,Oracle 將全部與會話和系統相關的參數存儲在一個文本文件中,這種文件一般被稱作 initSID.ora。可是,因爲這種文本文件不具備持久性,從 Oracle 9i 開始,Oracle 引入了 Server Parameter File(SPFILE),這是一種存儲在服務器上的二進制參數文件。它在實例中止以後到啓動以前這個過程當中是持久存在的。不過,當 SPFILE 不可用的時候,仍然使用 initSID.ora 文件。引入 SPFILE 以前,任何對參數有影響的 ALTER SYSTEM 和 ALTER SESSION 命令都只能在實例或會話活動期間持久。每當數據庫實例須要回彈(rebound)時,DBA 都必須手動修改 initSID.ora 文本文件。對於偵聽器,網絡訪問配置一般存儲在 listener.ora 中;對於客戶機訪問,網絡訪問配置一般存儲在 tnsnames.ora 中。

在 DB2 中,配置參數也是存儲在實例級和數據庫級,在實例級是數據庫管理器(database manager) 配置文件,在數據庫級是數據庫配置文件。這些參數大多數均可以動態地更改,也就是說,不須要爲了使對參數值的更改生效而中止並重啓實例或者重連全部鏈接。

若是想在 CLP 中手動更改特定的數據庫管理器配置參數,能夠使用命令 de>UPDATE DBM CFG USING de>。

若是想在 CLP 中手動更改特定的數據庫參數,能夠使用命令 de>UPDATE DB CFG FOR USING de>。

這兩個命令分別至關於 Oracle 的 ALTER SYSTEM 和 ALTER SESSION。或者,也能夠使用 Control Center 查看和修改這些參數的值。若是右鍵單擊一個給定的實例,並選擇 Configure Parameters,那麼能夠看到 圖 6 中顯示的窗口。


圖 6. DB2 Database Manager 配置參數(實例級)
圖 6. DB2 Database Manager 配置參數(實例級)

在數據庫級,右擊一個給定的數據庫,並選擇 Configure Parameters,則能夠看到 圖 7 中顯示的窗口。


圖 7. 數據庫配置參數(數據庫級)
圖 7. 數據庫配置參數(數據庫級)

DB2 提供了不少用於配置系統的參數。可是,若是想經過一種容易的方法自動配置系統,那麼能夠使用 de>autoconfigurede> 命令(或者 Configuration Advisor GUI),它會根據您提供的一些信息將數據庫管理器配置參數和數據庫配置參數設置成最佳值。圖 8 顯示了 Configuration Advisor。


圖 8. DB2 Configuration Advisor
圖 8. DB2 Configuration Advisor

除了配置文件外,DB2 一般還爲與平臺相關的配置使用 DB2 註冊表變量。注意,DB2 註冊表變量與 Windows 註冊表沒有任何關係。能夠使用命令 db2set 查看和更改這些變量。

鏈接(網絡訪問)信息存儲在 System 數據庫目錄、本地數據庫目錄和節點目錄中。這些都是二進制文件,只能用 CATALOG 和 UNCATALOG 命令修改。




回頁首


內存架構和後臺進程

接下來,咱們來看看內存架構和後臺進程,而且比較一下 Oracle 和 DB2 中內存架構和後臺進程的不一樣之處。


圖 9. Oracle 內存架構和後臺進程
圖 9. Oracle 內存架構和後臺進程

Oracle 中的 System Global Area(SGA)是一組共享內存塊,用於存儲與實例有關的信息。其中包括語句緩存、重作日誌緩衝區和數據緩衝區緩存。Program Global Area(PGA)和 User Global Area(UGA)共享內存塊,包含用於服務器進程和用戶會話的數據和控制信息。

Oracle 支持在同一臺計算機上存在多個實例,但不容許共享後臺進程。例如,同一臺計算機上的三個實例就須要三組後臺進程。所以建議在一臺計算機上包含一個數據庫、一個實例和多個模式。


圖 10. DB2 內存架構和後臺進程
圖 10. DB2 內存架構和後臺進程

DB2 和 Oracle 都使用共享內存塊,可是 DB2 與 Oracle 內存架構的實現方式略有不一樣。因爲 DB2 實例能夠包含多個數據庫,所以存在兩個級別的配置。在前一節已經提到,實例級的配置能夠在 DBM CFG 文件中完成,而數據庫級的配置則能夠在 DB CFG 文件中完成。這兩個級別上的配置參數均可以進行調整,以調優內存使用狀況。後文將更詳細地闡述 DB2 的內存結構和不一樣的後臺進程。

Oracle 是在實例和數據庫啓動時將內存分配給它們的,而 DB2 則是在不一樣級別上分配內存。這主要是由於 DB2 實例能夠包含多個數據庫。DB2 中主要有三種內存結構:

  • 實例共享內存:這是數據庫管理器全局共享內存,是在使用 de>db2startde> 命令啓動實例時分配給實例的,而且在發出 de>db2stopde> 命令中止實例以前,一直處於已分配狀態。
  • 數據庫共享內存:這是數據庫全局內存,是在激活數據庫或者第一次鏈接到數據庫時分配的。分配的內存包括緩衝池、鎖列表、數據庫堆、實用程序堆、包緩存和編目緩存。
  • 應用程序共享內存:這是在應用程序鏈接到一個數據庫時分配的內存,由處理鏈接到數據庫的客戶機所請求的工做的代理使用。每一個鏈接到數據庫的應用程序都會被分配內存;所以,對會影響應用程序共享內存的參數的正確配置就很是重要。

在 DB2 for Windows 中,服務器活動是以線程的形式進行的,而在 Linux 和 UNIX 環境中,這些活動是之後臺進程的形式來實現的。DB2 有如下幾種級別的進程:

  • 實例級:這些進程是在實例啓動時初始化的:
    1. DB2 Daemon Spawner(db2gds):全局守護處理程序,每一個實例都對應一個這樣的進程(僅在 UNIX 中)
    2. DB2 System Controller(db2sysc):DB2 主進程。
    3. DB2 Watchdog(db2wdog):全部其餘進程的父進程。
    4. DB2 Format Log(db2fmtlg):相似於 Oracle 中的 ARCn 進程,爲日誌路徑中的日誌文件預先分配空間。

  • 數據庫級:這些進程是在創建到數據庫的鏈接時初始化的:
    1. DB2 Log Reader(db2loggr):相似於 Oracle 的 PMON 進程的一個子集。該進程在回滾、重啓恢復和前滾期間讀取日誌文件。
    2. DB2 Log Writer(db2logw):將日誌從日誌緩衝區刷新到磁盤上的事務日誌文件中。至關於 Oracle 中的 LGWR 進程。
    3. DB2 Page Cleaner(db2pclnr):至關於 Oracle 中的 DBWR 進程,該進程在將頁從磁盤上轉移到 BP 中以前,清理緩衝池。
    4. DB2 Prefetcher(db2pfchr):將須要用到的頁預先從磁盤取出到緩衝池中。
    5. DB2 Deadlock Detector(db2dlock):死鎖檢測器進程。

  • 應用程序級:每一個鏈接到數據庫的應用程序,都具備屬於它本身的應用程序級後臺進程與之相關聯。這些進程有:
    1. DB2 Communication Manager(db2ipccm):進程間通訊進程,用於每一個本地鏈接的客戶機。
    2. DB2 TCP Manager(db2tcpcm):TCP 通訊管理器進程,用於使用 TCP/IP 鏈接數據庫的遠程客戶機。
    3. DB2 Coordinating Agent(db2agent):表明應用程序處理全部請求的進程。
    4. DB2 Subagent(db2agnta):空閒子代理。
    5. Active Subagent(db2agntp):在啓用了 SMP 並行的狀況下使用的活動子代理,它使一個任務能夠使用多個進程。

要得到對 DB2 進程的完整解釋,請參考文章 「DB2 通用數據庫進程全接觸」。




回頁首


鎖機制

Oracle 中的鎖能夠是手動的,也能夠是自動的。Oracle Lock Manager 能夠在行級隱式地鎖定表數據,此外也能夠使用如下 SQL 語句在事務或會話級覆蓋缺省的鎖:
de>1. SET TRANSACTION ISOLATION LEVELde>
de>2. LOCK TABLEde>
de>3. SELECT FOR UPDATEde>

Oracle 支持一種稱爲 Multi-Version Read Consistency 的機制,這是用 undo 段中的 undo 數據實現的。

DB2 實現 ANSI 標準隔離(Isolation)級別,例如未提交讀(Uncommitted Read)、遊標穩定性(Cursor stability)、讀穩定性(Read stability)和可重複讀(Repeatable Read)。除非使用未提交讀隔離級別,不然用戶只能看到已提交的數據。行鎖是根據隔離級別隱式地得到的。可鎖定的數據庫對象有表空間、表和行,可是,只 有表和表空間能夠顯式鎖定。可以使用 de>LOCK TABLEde> 命令來鎖定一個表,而不是使用缺省的行鎖定。

與 Oracle 不一樣,在 DB2 中,鎖是存儲在內存中的,而不是存儲在數據頁中。能夠使用 LOCKLIST 數據庫配置參數來配置鎖可用的內存,而 MAXLOCKS 配置參數則定義用於一個特定應用程序的鎖的最大內存。




回頁首


安全性

Oracle 和 DB2 都是具備基本的和高級的安全特性的安全數據庫。Oracle 中有 4 種不一樣的用戶身份驗證方法:

  • 數據庫:數據庫執行對用戶的識別和身份驗證。
  • 外部:操做系統或網絡服務執行身份驗證。
  • 全局身份驗證和受權:由 SSL 對用戶進行全局身份驗證。
  • 代理身份驗證和受權:中間層服務器執行身份驗證。

身份驗證方法是在使用 de>CREATE USERde> 命令建立用戶時指定的。Oracle 中有一些 Data Dictionary 視圖,其中包含了關於這些用戶的信息。

在 DB2 中,用戶不是存在於數據庫中,而是由操做系統來管理。沒有數據庫登陸信息存放在數據庫表中。任何操做系統用戶都有可能訪問 DB2;可是,除非他們被授予了給定的 DB2 權限或特權,不然他們能作的事情很少。經過 Control Center GUI 很容易授予和撤銷權限和特權。不過首先須要將可用操做系統用戶或組中的一個用戶或組添加到 Control Center。

在 DB2 中沒有 「角色(role)」 這個術語。相反,DB2 使用術語 「權限(authority)」,它相似於 Oracle 的數據庫角色,DB2 經過權限將特權授予某些組或用戶。DB2 支持的權限有:SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD。

不能使用 GRANT SQL 語句授予 SYSADM、SYSCTRL 和 SYSMAINT 權限。這些特殊的權限只能在數據庫管理器配置文件中設置。

DB2 還使用術語 「特權(privilege)」,它相似於 Oracle 的系統和模式對象特權。DB2 中有數據庫特權(鏈接、建立表等)和數據庫對象特權(模式、表、視圖等)。圖 11 顯示了從 Control Center GUI 得到的 DB2 安全性信息。Change User 窗口中顯示的大部分選項卡對應了 DB2 所支持的特權。


圖 11. DB2 安全性
圖 11. DB2 安全性

Oracle 10g 的安全性大致上沒有變化,只有部分加強。下面是 Oracle 10g 中的加強的列表:

  • FGA 的 DML 支持 —— 細粒度審計(fine-grained auditing,FGA)的 SQL 支持獲得了加強,如今支持查詢和 UPDATE、INSERT 和 DELETE 操做這些粒度上的審計。
  • SASL 上的通訊 —— 該特性爲 Oracle Internet Directory(OID)與數據庫之間或者兩個數據庫之間的通訊提供了一種安全通道。若是您的企業部署經過密碼進行身份驗證的用戶,那麼也就再也不須要 在公共密鑰基礎設施(PKI)方面投入資金和管理工做。SASL(Simple Authentication and Security Layer)通訊提供了等價的安全通道。
  • 統一用戶模型 —— 目錄中定義的單點登陸(single sign)用戶如今能夠使用 Enterprise User Security 提供的特性。不須要爲供應和憑證管理而執行附加的任務。此外,Enterprise User Security 的管理組如今能夠指派一個全部者,這促進了總體上更有力的安全性。
  • 輕鬆的數據庫註冊 —— 該特性消除了對 RDBMS_SERVER_DN 參數的須要,使得企業用戶的配置更爲輕鬆。
  • 擴展的、統一的審計跟蹤 —— 該特性以標準的、細粒度的審計表的形式,爲 RDBMS 審計提供了一致的審計跟蹤,改進了安全性管理。事務和 SQL 信息也被添加到審計表中,以便進一步提升全部用戶的可問責性(accountability)。
  • Oracle 標籤安全性目錄集成 —— 如今能夠在一箇中央 OID/LDAP 儲存庫中管理 Oracle Label Security 策略和用戶標籤受權。這節約了管理成本,同時也消除了多個管理點,從而增長了安全性。

DB2 中的身份驗證不只涉及對用戶名和密碼進行加密,還容許對客戶機與服務器之間傳輸的數據進行加密。身份驗證的位置由數據庫管理器配置參數 AUTHENTICATION 的值決定。

下面是用於啓用 DB2 的身份驗證的有效選項:

  • SERVER_ENCRYPT —— 這個值規定身份驗證發生在服務器上。首先加密鏈接期間指定的用戶 id 和密碼,而後將它們發送到服務器,在服務器上將它們與服務器端的用戶和密碼進行比較。若是匹配成功,那麼用戶就被容許訪問數據庫。
  • KRB_SERVER_ENCRYPT —— 規定服務器接受 KERBEROS 身份驗證或加密的 SERVER 身份驗證模式。
  • DATA_ENCRYPT —— 規定服務器容許 SERVER 身份驗證,而且對客戶機與服務器之間經過網絡傳輸的數據進行加密。
  • DATA_ENCRYPT_CMP —— 規定服務器接受加密的 SERVER 身份驗證模式和用戶數據的加密。 這種身份驗證類型能與不支持 DATA_ENCRYPT 身份驗證類型的下級產品兼容。
  • GSS_SERVER_ENCRYPT —— 規定服務器接受基於 GSS API 的插件身份驗證或加密的服務器身份驗證模式。

若要更新 AUTHENTICATION 實例參數,例如將它的值設置爲 DATA_ENCRYPT,能夠使用如下命令:


清單 1. 更新 AUTHENTICATION 實例參數
     
UPDATE DBM CFG USING AUTHENTICATION DATA_ENCRYPT
db2stop
db2start

DB2 提供了基於標籤的訪問控制(Label Based Access Control,LBAC)機制,從而進一步擴展了安全性。 LBAC 特性爲控制對各行和各列的讀寫訪問提供了更大的粒度。 DB2 中提供了一種新的安全管理員角色(SECADM),用於操縱 LBAC 對象。

試圖訪問一個對象的用戶必須被授予該對象的安全標籤。若是安全標籤匹配,則容許訪問;若是不匹配,則拒絕訪問。 實現 DB2 中的 LBAC 安全性基本上有三個步驟:

  • 建立安全策略。
    安全策略描述用於決定誰能夠訪問特定數據的憑證。任何一個表只能由一個安全策略來保護,可是不一樣表能夠由不一樣的安全策略來保護。這是經過使用 CREATE SECURITY POLICY 語句來實現的。安全策略的全部管理都是經過使用 SQL 語句來完成的。
  • 建立安全標籤。
    一共有三種類型的安全標籤:
    • 行安全標籤。與數據庫表中的一個數據行或記錄相關聯的安全標籤。
    • 列安全標籤。與數據庫表中一個列相關聯的安全標籤。
    • 用戶安全標籤。爲數據庫用戶授予的安全標籤。
    安全標籤由 SECADM 建立,做爲策略的一部分。 建立好一個安全標籤以後,能夠將其與表中各個列和行相關聯,以保護存放在那裏的數據。
  • 爲用戶授予安全標籤,使他們能夠訪問數據。 安全管理員經過爲用戶授予安全標籤來容許他們訪問受保護的數據。 當一個用戶試圖訪問受保護的數據時,DB2 將那個用戶的安全標籤與保護數據的安全標籤進行比較。

除了特權和權限外,數據庫安全性還包含其餘方面。簡單地說,Oracle 與 DB2 之間既有不一樣點,也有相同點:

用戶身份驗證和受權

Oracle 在建立用戶以後,使用存儲在目錄中的加密密碼。DB2 支持用於用戶身份驗證的密碼,並使用底層的操做用戶進行身份驗證。Oracle 和 DB2 都支持 LDAP (Oracle Internet Directory 與 IBM Directory Server)。Oracle 和 DB2 都支持單點登陸(SSO)。

數據加密

Oracle 支持數據加密,它能夠對敏感數據,例如信用卡號和一些高度敏感的商業數據進行加密。DB2 容許列級的數據加密。

網絡加密

Oracle 經過它的 Oracle Advanced Security 提供網絡加密。Oracle 使用 DES、3DES 和 RC4 業界標準加密。DB2 自己不進行網絡加密。但能夠使用附帶的 Tivoli SecureWay 實現網絡加密。

審計跟蹤

Oracle 容許審計跟蹤用戶和對象。還能夠使用日誌挖掘程序調查和分析有疑問的查詢。DB2 也提供了相似的審計設施。在 DB2 中,能夠使用 db2audit 實用程序進行審計跟蹤。




回頁首


DB2 9 pureXML 特性

在本節中,咱們將 Oracle 對 XML 的支持與 DB2 對 XML 的支持進行比較。 Oracle XML DB 特性隨 Oracle 9i Release 2 一塊兒發佈,藉助該特性,經過定義 XMLTYPE 表和列,將它們存儲爲 CLOB 或拆分(分解)到關係表中,能夠實現對 XML 存儲、檢索和模式的管理。 Oracle 10g 爲管理 XML 文檔提供了一些加強。例如,經過映射已有的數據,能夠動態地反映模式的更改,而沒必要從新導入。Oracle 10g 包括一些工具包,例如:

  • XML-SQL Util(XSU) —— 爲 PL/SQL 和 Java 提供的接口。
  • XML Developer's kits(XDK) —— 用於受支持的語言,例如 PL/SQL、C++ 和 Java。

Oracle 10g 仍然是一種 支持 XML 的 數據庫。它提供的全部接口、API 和包,都是爲了減輕 XML 與關係表之間的相互轉換和映射所帶來的負擔、複雜性和維護。支持 XML 的數據庫,無論是使用 CLOB 仍是分解方法,都不能提供良好的性能。例如,在使用 CLOB 的狀況下,XML 文檔做爲鏡像文件存儲在數據庫中。您可能已經知道,鏡像文件的管理是很麻煩的。分解方法在性能方面也不如人意。將一個 XML 文檔分解成小塊並存儲在多個表中以後,當須要將 XML 文檔組合成原樣時,就不得不使用一個 SQL JOIN 操做。SQL 中的 JOIN 是開銷很大的,特別是表的數量較多時這一點尤爲明顯。保持數字簽名的保真度一樣也是一個挑戰。

另外一方面,DB2 9 pureXML 技術則是原生存儲 XML 文檔,也就是說,在內部以樹型格式存儲 XML 文檔。它還容許同時使用 SQL 和 XML 擴展,即 Xquery 和 Xpath 來訪問關係數據和 XML 數據。原生存儲 XML 文檔是一種更好的方法,IBM 的研究代表,使用該方法在 XML 文檔的搜索和檢索方面能夠取得更好的性能,而且能減小某些程序中代碼的行數。

要在數據庫中使用 pureXML 特性,在建立數據庫時要使用 UNICODE(例如使用編碼集 UTF-8)。在建立一個表以前,若是沒能建立一個 UNICODE 數據庫,則會產生以下所示的錯誤:

SQL1239N  XML features can only be used in a Unicode database with a single database partition.  SQLSTATE=42997

DB2 與以前版本同樣存儲關係數據。可是,XML 數據是以分層格式存儲的(做爲使用 Xquery 數據模型的一棵樹)。XML 與關係服務之間是緊密集成的。爲了存儲 XML 文檔,用戶須要建立一個表,並指定一個列使用一種新的數據類型,即 XML,以下面的例子所示。


清單 2. 用 XML 數據類型建立表
     
create table T (i int, doc xml)

下圖展現了這兩列的顯示效果:


圖 12. DB2 存儲模型
DB2 存儲模型

因爲 XML 文檔是以解析的分層格式存儲在 XQuery Data Model (XDM) 中的,所以不須要進行轉換或映射。用於存儲 XML 文檔的格式就是用於處理 XML 文檔的格式。這樣能夠提供更好的性能。

備份、恢復、導入等實用程序對含 XML 列的表的做用與其餘表是同樣的。能夠使用 INSERT 語句或 IMPORT 實用程序(注意:DB2 LOAD 實用程序還不支持 XML)將 XML 數據插入 XML 列。在導入來自第三方的 XML 文檔以前,最好根據一個預約義的 XML 模式驗證這些文檔。 爲了註冊一個 XML 模式,DBA 須要執行 REGISTER XML SCHEMA 命令,並以 COMPLETE XML SCHEMA 結束,以完成註冊過程。 DB2 9 還支持在一個 XML 文檔的子集或整個文檔上建立索引。在建立索引時,須要指定 XPATH,它將指向被建索引的特定元素/屬性。

在 DB2 9 中,有四種方法來訪問關係數據和 XML 數據,如 圖 13 所示:

  • 純 SQL(不涉及 XQuery)
  • SQL/XML,也就是說嵌入在 SQL 中的 XQuery
  • XQuery 做爲獨立的語言(不涉及 SQL)
  • 帶嵌入式 SQL 的 Xquery

圖 13. 可能的 PureXML 查詢
可能的 PureXML 查詢

表 3 比較了 DB2 9 與 Oracle 10g 的 XML 功能。

表 3. XML 特性比較
XML 功能 Oracle 10g IBM DB2 9 for Linux, Unix and Windows
支持 XML 的存儲 不適用
XML 原生存儲 ×
大環境的易維護性 ×
高度可伸縮性 ×
將 XML 文檔存儲爲 CLOB √。可是從長遠看,鼓勵使用 XML 原生存儲
分解 √。可是從長遠看,鼓勵使用 XML 原生存儲

要看到更深刻的討論,能夠在 developerWorks 上找到更多關於 IBM pureXML 功能的文章,例如 使用 XQuery 查詢 DB2 XML 數據使用 SQL 查詢 DB2 XML 數據




回頁首


表分區

DB2 的表分區(即區域分區)相似於 Oracle 的分區。它基本上容許將一個邏輯表拆分紅跨一個或多個表空間的多個物理存儲對象。每一個對象對應於一個 「分區」,容許每一個表空間包含必定範圍的、很容易訪問的數據。

在 DB2 中,有多種方法對數據進行分區,您能夠同時將這些方法應用於相同的數據。爲了不讀者感到困惑,下面簡單地解釋一下提供這種分區的各類不一樣方法:

  • DATABASE PARTITIONING —— 按照鍵散列將數據分佈在數據庫的多個邏輯節點上(DPF)。
  • RANGE/TABLE PARTITIONING(DB2 9 提供) —— 根據鍵區域將數據劃分到一個邏輯數據庫分區中的多個物理對象上。
  • MULTI DIMENSIONAL CLUSTERING(MDC) —— 根據多個鍵值組織表(或一個表中的區域)中的數據。

利用 DB2 9 中新引入的表分區特性,能夠根據一個或多個表列中的特定值將表數據劃分到不一樣的表空間。 這些分區能夠獨立地進行備份和恢復,能夠提升某些查詢的性能,由於 DB2 優化器知道這些分區的存在,而且能夠避免對查詢中不須要的分區進行掃描。例如,若是按一年的四個季度對錶進行分區,而且查詢只須要第 4 季度的數據,那麼 DB2 將不解析前三個季度,而是直接找到第 4 個季度並解析之。這被稱做分區排除(partition elimination)。

如前所述,在 DB2 9 中,數據組織的三種方法,即數據庫分區(Database Partitioning)、表分區(Table Partitioning)和多維集羣(Multi Dimensional Clustering)可同時使用。

下面的例子建立一個 customer 表,其中 l_shipdate >= '01/01/2006' 且 l_shipdate <= '03/31/2006' 的行存儲在表空間 ts1 中,l_shipdate >= '04/01/2006' 且 l_shipdate <= '06/30/2006' 的行存儲在表空間 ts2 中,依此類推。更詳盡的解釋能夠參閱 developerWorks 文章 Table partitioning in DB2 9
清單 3. 將一個表按區域分區

     
CREATE TABLE customer (l_shipdate, l_name CHAR(30))
IN ts1, ts2, ts3, ts4, ts5
PARTITION BY RANGE(l_shipdate)
(STARTING FROM ('01/01/2006')
ENDING AT ('12/31/2006')
EVERY (3 MONTHS))




回頁首


行壓縮特性

Oracle 提供了兩種壓縮特性:一種是索引級壓縮,另外一種是表級壓縮。若是對這些特性沒有適當的規劃,就會對性能產生不良影響。

Oracle 從版本 8i 開始就引入了索引壓縮。能夠壓縮的索引有 bitmap、btree 和索引組織的表。索引壓縮使用起來很簡單。例如,要用壓縮特性建立一個索引,能夠使用以下代碼:
清單 4. 用壓縮特性建立索引

     
CREATE INDEX ord_customer_ix_demo
ON orders (customer_id, sales_rep_id)
COMPRESS 1;

對於不是在內部用壓縮特性建立的索引,能夠經過修改它們將它們轉換成壓縮索引。下面顯示了一個示例,這個示例展現瞭如何修改索引,以使其變成壓縮索引。
清單 5. 用壓縮特性修改索引
     
alter index ord_customer_ix_demo rebuild compress

目前,Oracle 沒有提供任何自動化的建議者程序來指出哪些索引應該被壓縮。大多數經過索引壓縮得到的好處,都須要擁有嫺熟的 Oracle CBO 知識的資深 DBA 通過適當規劃才能得到。

另外一方面,表壓縮是在 Oracle 9i release 2 中引入的。它能夠用於壓縮整個表、表分區和具體視圖。壓縮可應用於全部分區或部分分區。 雖然表壓縮也能夠用於未分區的表,可是在 OLTP 工做負載中將表壓縮應用於未分區的表並不可取,由於插入和更新性能會受到影響。在 Oracle 表壓縮中,數據庫塊中重複的值將被去除,信息將被存儲起來,以便在塊中從新建立未壓縮的數據。 下面的例子展現瞭如何用壓縮特性建立分區表。
清單 6. 用壓縮特性建立表

     
CREATE TABLE costs_demo (
prod_id NUMBER(6), time_id DATE,
unit_cost NUMBER(10,2), unit_price NUMBER(10,2))
PARTITION BY RANGE (time_id)
(PARTITION costs_old
VALUES LESS THAN (TO_DATE('01-JAN-2003', 'DD-MON-YYYY')) COMPRESS,
PARTITION costs_q1_2003
VALUES LESS THAN (TO_DATE('01-APR-2003', 'DD-MON-YYYY')),
PARTITION costs_q2_2003
VALUES LESS THAN (TO_DATE('01-JUN-2003', 'DD-MON-YYYY')),
PARTITION costs_recent VALUES LESS THAN (MAXVALUE));

爲了將一個錶轉換成壓縮表,能夠使用 alter table move compress。可是,壓縮表不容許添加或刪除列。

至於 DB2,在 DB2 9 以前就有一些壓縮方法,可是,行壓縮是在 DB2 9 中才引入的。行壓縮要求建立一個目錄,用於存儲重複模式或條目以及數字鍵。壓縮算法足夠智能,不會壓縮那些對節省磁盤空間幫助不大的行。

DB2 的行壓縮不像 Oracle 的鍵壓縮,它不須要指定鍵。

能夠經過 CREATE TABLE 或 ALTER TABLE 命令在表級進行壓縮。例如:
清單 7. 用 COMPRESSION YES 建立/修改表

     
CREATE TABLE Sales COMPRESS YES
ALTER TABLE Sales COMPRESS YES

爲了在 DB2 Control Center 中取得相同的效果,在列定義過程當中(表建立嚮導中的第二步),應確保選中面板底端的複選框 Store table data in a compressed format(以下圖所示)。


圖 14. DB2 Control Center —— 以壓縮格式建立表
DB2 Control Center —— 以壓縮格式建立表

只有在執行 REORG 的時候才構建表字典,以後即可以壓縮表中的數據。在隨後的每次 REORG 操做中,表字典隨之更新。被壓縮的數據同時存放在磁盤上和內存中,DB2 還壓縮存儲在日誌文件中的用戶數據,以便減小日誌文件大小。

注意,分區表的每一個分區能夠有不一樣的壓縮字典,在 DPF 中的一個表的每一個分區也能夠有不一樣的壓縮字典。

除了數據行壓縮,DB2 9 提供的其餘壓縮機制還包括:

  • NULL 值和缺省值壓縮(V8 GA):對變長列中的零長度空數據和系統缺省值進行壓縮。
  • 多維集羣(V8 GA):使用塊索引,數千個記錄共用一個索引條目,實現索引壓縮。
  • 數據庫備份壓縮(V8 FP4):經過壓縮產生較小的備份鏡像。
  • XML 解析



回頁首


自治特性

從 Oracle 9i 到 10g,Oracle 在調優方面做了一些改進。Oracle 將如下方面的調優進行了自動化:

  • Redo Logfile Sizing Advisor —— 該特性就重作日誌文件的最佳大小給出建議,以免因頻繁出現的檢查點而致使過多的磁盤 I/O。
  • Automatic Checkpoint Tuning —— Oracle 數據庫如今能夠自調優檢查點,以取得良好的恢復速度,同時減小對正常吞吐率的影響。 這樣便再也不須要設置任何與檢查點相關的參數。
  • Automatic Shared Memory Tuning —— Automatic Shared Memory Tuning 經過自調優算法將 System Global Area (SGA) 內存相關參數(緩衝區緩存、共享池)的配置自動化。它簡化了數據庫的配置,確保可用內存獲得最有效的利用,並提升了性能。
  • Transaction Rollback and Recovery Monitoring —— 該特性便於估計回滾一個事務要花多少時間。還能夠監控被恢復的事務的進程,並估計事務恢復的平均速度。

Oracle 還提供了一些 advisor,例如 segment advisor 和 undo advisor。segment advisor 根據對象內的空間拆分程度給出是否能夠對一個對象執行新的在線壓縮操做的建議。並且,這個 advisor 還給出關於段的歷史增加趨勢的報告,特別是能爲容量規劃提供有效的信息。 另外一方面,Undo Advisor 則幫助管理員在調整 flashback 和非 flashback 中的表空間的大小時做出正確的判斷。它爲管理員適當地設置 UNDO_RETENTION 提供建議,以免快照過於陳舊的問題。

DB2 9 引入了一些新的自治加強。例如,DB2 9 引入一種新的自調優內存特性(使用 self_tuning_mem 數據庫配置參數),該特性自動地設置一些內存配置參數的值,從而簡化了內存配置任務。自動調優器充當調度器的角色,它算出可用的內存資源,動態地將它們分 發給數據庫的一些內存消費者。

除了自調優內存,DB2 9 還引入了下面提到的其餘一些加強。這份列表並不完整,可是其中列出的都是重要的加強。

自動配置

DB2 8 引入了 Configuration Advisor,它能夠檢測系統和數據庫的特徵 —— CPU、內存、數據庫大小、表的數量等,併爲配置參數給出建議的值。DB2 9 則更進一步 —— 它在數據庫建立以後自動運行 configuration advisor,並缺省地作出一些基本的調優決定。例如,它配置缺省緩衝池的大小、I/O 清理程序和 I/O 服務器等。 這種初始的自動調優意味着,同使用以前缺省的數據庫配置參數值建立的數據庫相比,如今的數據庫將擁有更好的性能,而且有更好的即開即用性。

自動數據統計信息收集

缺省狀況下,DB2 9 還容許對某些進行中的任務進行自動化。經過該特性,DB2 肯定須要哪些統計信息,以及哪些統計信息須要更新,而後自動在後臺執行 RUNSTATS 實用程序。

自動存儲管理

DB2 9 擴展了在 DB2 V8.2.2 中首次引入的自動存儲特性。自動存儲自動增加跨磁盤和文件系統的數據庫的大小,因爲它是自動增加數據庫大小的,所以 DBA 不須要管理存儲容器。當在 DB2 9 中建立數據庫時,自動存儲管理特性是缺省地啓用的。

自動錶和索引重組加強

自動重組是從 8.2 版開始引入的。可是,DB9 對其加以加強,從而容許作如下事情:

  • 指定具備適當頁寬的系統臨時表空間,用於離線表重組。
  • 可限制被重組的表的大小。
  • 指定自動索引重組應該在線運行,而且在在線維護窗口中運行。
  • 指定在重組期間是保留仍是從新構建壓縮目錄。



回頁首


工具

咱們來看看不一樣領域的一些工具,例如數據庫建立和維護、網絡、管理 GUI、性能調優、數據移動和備份恢復工具。圖 15 顯示了這些 DB2 9 GUI 工具。


圖 15. DB2 9 GUI 工具
圖 15. DB2 9 GUI 工具

讓咱們看看相似的任務在 Oracle 和 DB2 9 中分別是怎樣執行的。

數據庫建立和維護

Oracle 提供了 Database Configuration Assistant(dbca)做爲建立數據庫的 GUI 工具。對於數據庫維護,Oracle 提供了 Oracle Enterprise Manager。DB2 數據庫則能夠經過 DB2 Control Center 建立和維護。

網絡

Oracle 提供了 Network Configuration Assistant(netca)來進行網絡配置。或者,也能夠使用 Oracle Network Manager 來配置服務名、偵聽器、配置文件和 Oracle 名稱服務器。DB2 則使用 CATALOG 命令來編目節點和數據庫。此外還能夠使用 DB2 命令行或 DB2 Configuration Assistant GUI 進行編目。

管理

Oracle Enterprise Manager 提供了針對管理員平常任務的普遍管理功能。DB2 Control Center 也提供了和 Oracle Enterprise Manager 相似的功能。除了 DB2 Control Center 外,還能夠使用 DB2 命令行處理器來發出 DDL 和 DML 語句。該實用程序相似於 Oracle 的 SQLPLUS 實用程序。圖 16 顯示了 DB2 命令行處理器。


圖 16. DB2 命令行處理器
圖 13. DB2 命令行處理器

還能夠在 Command Center 中發出命令,如 圖 17 所示。


圖 17. Command Center GUI(DB2 命令行處理器的 GUI 版本)
圖 17. Command Center GUI(DB2 命令行處理器的 GUI 版本)

性能調優

Oracle Enterprise Manager 附帶有 Change Management Pack、Tuning Pack 和 Diagnostic Pack。DB2 則提供了 Event Analyzer、Health Center、Indoubt Transaction Manager 和 Memory Visualizer 做爲性能調優任務的 GUI 工具。

數據移動

Oracle 提供了 SQL Loader(sqlldr)用於以定界文本格式裝載數據。Import(imp)和 export(exp)可用於執行邏輯導入和導出。DB2 提供了相似的導入、導出和裝載實用程序。對於跨平臺的數據移動,DB2 提供了 db2move 實用程序。

備份和恢復

Oracle 提供了 Recovery Manager 做爲熱備份的選項。在 DB2 中,能夠使用 backup 命令或 DB2 Control Center 備份數據庫。

Oracle 10g Enteprise Manager 附帶了新的性能概要表。加強的 Oracle Enterprise Manager HTML 界面爲全部與數據庫性能相關的統計信息提供了一個集中的訪問點,爲全面的監控和診斷提供了方便。

除了隨 DB2 UDB version 8 發佈的界面外,DB2 9 還引入了一種全新的免費應用程序開發工具,這個工具叫作 DB2 Developer Workbench(DWB),它是基於 Eclipse 框架的。這個工具能夠單獨下載,也可經過光盤得到,它替代了 DB2 8 的 Development Center。 DWB 是用於建立、編輯、調試、部署和測試 DB2 存儲過程和用戶定義函數的一站式中心。此外,還能夠使用 DWB 來開發 SQLJ 應用程序,以及建立、編輯和運行 SQL 語句和 XML 查詢。

DWB 有一些用於開發 DB2 業務對象的視圖,例如:

  • Database Explorer 視圖 —— 顯示數據庫中有什麼對象(表、存儲過程、用戶定義函數、依賴關係、遠程服務器等),並容許在這些對象上執行動做。
  • Data Project Explorer 視圖 —— 在該視圖中,能夠經過簡單的操做,例如拖放、複製粘貼、嚮導、上下文敏感的完成選項等,進行過程、用戶定義函數和 SQL 語句的開發。
  • Data Output 視圖 —— 在該視圖中能夠看到對數據庫的數據開發的報告。

除了 DB2 8 的 Development Center 的功能外,新的 Developer Workbench 還包括對遷移報告、比較例程、XML 函數和使用 XQuery Builder 構建 XQuery 查詢等等的支持。 如今能夠從網站下載DB2 Developer Workbench

要了解關於 DB2 Developer Workbench 的更詳細的信息,請閱讀 developerWorks 中的這篇 教程。 要獲得更詳盡的示例和特性,請參考 developerWorks 中的文章 DB2 9 入門: 應用程序開發方面的加強

圖 18 展現瞭如何使用 DWB 建立存儲過程:


圖 18. DB2 Developer WorkBench
 DB2 Developer WorkBench



回頁首


結束語

在 本文中,咱們藉助您當前已有的關於 Oracle 10g Release 2 的知識,對 DB2 9 for Linux, UNIX and Windows 進行了介紹。咱們簡要地描述了 DB2 9 架構、後臺進程、內存模型、安全性、工具等方面。Oracle 與 DB2 9 之間有不少相似之處,咱們也指出了它們之間的一些不一樣之處,以便您能借助已有的知識,在 DB2 9 中得到成功。

表 3 總結了咱們討論過的 Oracle 與 DB2 9 之間的相同點與不一樣點。

表 3 —— Oracle 與 DB2 9 概念總結
Oracle DB2 9 註解
實例 實例 一個 DB2 實例能夠包含多個數據庫
數據庫 數據庫  
initSID.ora 或 SPFILE DBM CFG 和 DB CFG DB2 使用兩個級別的配置:Database Manager Configuration(DBM CFG)(實例級)和 Database Configuration(DB CFG)(數據庫級)。與 Oracle 同樣,不少配置參數能夠動態更改
表空間 表空間 DB2 支持 SMS 和 DMS 這兩類表空間。DMS 表空間與 Oracle 的表空間相似
數據塊 DB2 支持如下幾種頁大小:4k、8k、16k 和 32k。一個行必須可以裝入其中一種數據頁內。它不能像在 Oracle 中那樣跨多個頁
盤區 盤區  
數據文件 DMS 表空間容器 用於 DMS 表空間的容器能夠是原始設備,也能夠是文件
重作日誌文件 事務日誌文件  
數據緩衝區 緩衝池 DB2 沒有一組預約義的緩衝池,可是能夠根據須要建立足夠多的緩衝池。在建立具備給定頁大小的表空間時,必須預先存在一個具備給定頁寬的緩衝池
SGA 數據庫管理器共享內存和數據庫共享內存  
數據字典 編目  
庫緩存 包緩存  
大型池 實用程序堆  
數據字典緩存 編目緩存  
SYSTEM 表空間 SYSCATSPACE 表空間
相關文章
相關標籤/搜索