概述
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 的系統結構。在閱讀本文的時候,爲便於理解,能夠參照這兩個圖。
![]() ![]() |
![]()
|
在 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 命令建立的另外兩個實例。
若要在命令行接口中引用給定的 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 種類型的文件的一個集合:
在 DB2 中,一個實例能夠包含多個數據庫,如 圖 2 所示。每一個數據庫都是一個封閉的、真正獨立的單元。每一個數據庫有其本身的編目表空間、臨時表空間和用戶表空間,這些表空間是在建立數據庫時缺省建立的。DB2 包含一個稱爲系統數據庫目錄(system database directory) 的二進制文件,其中包含可從 DB2 機器上鍊接的全部數據庫的條目。這個目錄保存在實例級。
當建立一個實例時,缺省狀況下不會建立數據庫,您須要使用 create database 命令顯式地建立一個數據庫。此外還能夠用 Control Center 建立數據庫,如 圖 4 和 圖 5 所示。
在 圖 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 表、視圖和索引能夠有相同的名稱。相同數據庫中的表和視圖則必須使用不一樣的名稱,可是容許使用與已有的表或視圖相同的名稱建立索引。
![]() ![]() |
![]()
|
在 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 中顯示的窗口。
在數據庫級,右擊一個給定的數據庫,並選擇 Configure Parameters,則能夠看到 圖 7 中顯示的窗口。
DB2 提供了不少用於配置系統的參數。可是,若是想經過一種容易的方法自動配置系統,那麼能夠使用 de>autoconfigurede> 命令(或者 Configuration Advisor GUI),它會根據您提供的一些信息將數據庫管理器配置參數和數據庫配置參數設置成最佳值。圖 8 顯示了 Configuration Advisor。
除了配置文件外,DB2 一般還爲與平臺相關的配置使用 DB2 註冊表變量。注意,DB2 註冊表變量與 Windows 註冊表沒有任何關係。能夠使用命令 db2set 查看和更改這些變量。
鏈接(網絡訪問)信息存儲在 System 數據庫目錄、本地數據庫目錄和節點目錄中。這些都是二進制文件,只能用 CATALOG 和 UNCATALOG 命令修改。
![]() ![]() |
![]()
|
接下來,咱們來看看內存架構和後臺進程,而且比較一下 Oracle 和 DB2 中內存架構和後臺進程的不一樣之處。
Oracle 中的 System Global Area(SGA)是一組共享內存塊,用於存儲與實例有關的信息。其中包括語句緩存、重作日誌緩衝區和數據緩衝區緩存。Program Global Area(PGA)和 User Global Area(UGA)共享內存塊,包含用於服務器進程和用戶會話的數據和控制信息。
Oracle 支持在同一臺計算機上存在多個實例,但不容許共享後臺進程。例如,同一臺計算機上的三個實例就須要三組後臺進程。所以建議在一臺計算機上包含一個數據庫、一個實例和多個模式。
DB2 和 Oracle 都使用共享內存塊,可是 DB2 與 Oracle 內存架構的實現方式略有不一樣。因爲 DB2 實例能夠包含多個數據庫,所以存在兩個級別的配置。在前一節已經提到,實例級的配置能夠在 DBM CFG 文件中完成,而數據庫級的配置則能夠在 DB CFG 文件中完成。這兩個級別上的配置參數均可以進行調整,以調優內存使用狀況。後文將更詳細地闡述 DB2 的內存結構和不一樣的後臺進程。
Oracle 是在實例和數據庫啓動時將內存分配給它們的,而 DB2 則是在不一樣級別上分配內存。這主要是由於 DB2 實例能夠包含多個數據庫。DB2 中主要有三種內存結構:
在 DB2 for Windows 中,服務器活動是以線程的形式進行的,而在 Linux 和 UNIX 環境中,這些活動是之後臺進程的形式來實現的。DB2 有如下幾種級別的進程:
要得到對 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 種不一樣的用戶身份驗證方法:
身份驗證方法是在使用 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 所支持的特權。
Oracle 10g 的安全性大致上沒有變化,只有部分加強。下面是 Oracle 10g 中的加強的列表:
DB2 中的身份驗證不只涉及對用戶名和密碼進行加密,還容許對客戶機與服務器之間傳輸的數據進行加密。身份驗證的位置由數據庫管理器配置參數 AUTHENTICATION 的值決定。
下面是用於啓用 DB2 的身份驗證的有效選項:
若要更新 AUTHENTICATION 實例參數,例如將它的值設置爲 DATA_ENCRYPT,能夠使用如下命令:
|
DB2 提供了基於標籤的訪問控制(Label Based Access Control,LBAC)機制,從而進一步擴展了安全性。 LBAC 特性爲控制對各行和各列的讀寫訪問提供了更大的粒度。 DB2 中提供了一種新的安全管理員角色(SECADM),用於操縱 LBAC 對象。
試圖訪問一個對象的用戶必須被授予該對象的安全標籤。若是安全標籤匹配,則容許訪問;若是不匹配,則拒絕訪問。 實現 DB2 中的 LBAC 安全性基本上有三個步驟:
除了特權和權限外,數據庫安全性還包含其餘方面。簡單地說,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 實用程序進行審計跟蹤。
![]() ![]() |
![]()
|
在本節中,咱們將 Oracle 對 XML 的支持與 DB2 對 XML 的支持進行比較。 Oracle XML DB 特性隨 Oracle 9i Release 2 一塊兒發佈,藉助該特性,經過定義 XMLTYPE 表和列,將它們存儲爲 CLOB 或拆分(分解)到關係表中,能夠實現對 XML 存儲、檢索和模式的管理。 Oracle 10g 爲管理 XML 文檔提供了一些加強。例如,經過映射已有的數據,能夠動態地反映模式的更改,而沒必要從新導入。Oracle 10g 包括一些工具包,例如:
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,以下面的例子所示。
|
下圖展現了這兩列的顯示效果:
因爲 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 所示:
表 3 比較了 DB2 9 與 Oracle 10g 的 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 中,有多種方法對數據進行分區,您能夠同時將這些方法應用於相同的數據。爲了不讀者感到困惑,下面簡單地解釋一下提供這種分區的各類不一樣方法:
利用 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. 將一個表按區域分區
|
![]() ![]() |
![]()
|
Oracle 提供了兩種壓縮特性:一種是索引級壓縮,另外一種是表級壓縮。若是對這些特性沒有適當的規劃,就會對性能產生不良影響。
Oracle 從版本 8i 開始就引入了索引壓縮。能夠壓縮的索引有 bitmap、btree 和索引組織的表。索引壓縮使用起來很簡單。例如,要用壓縮特性建立一個索引,能夠使用以下代碼:
清單 4. 用壓縮特性建立索引
|
|
另外一方面,表壓縮是在 Oracle 9i release 2 中引入的。它能夠用於壓縮整個表、表分區和具體視圖。壓縮可應用於全部分區或部分分區。 雖然表壓縮也能夠用於未分區的表,可是在 OLTP 工做負載中將表壓縮應用於未分區的表並不可取,由於插入和更新性能會受到影響。在 Oracle 表壓縮中,數據庫塊中重複的值將被去除,信息將被存儲起來,以便在塊中從新建立未壓縮的數據。 下面的例子展現瞭如何用壓縮特性建立分區表。
清單 6. 用壓縮特性建立表
|
至於 DB2,在 DB2 9 以前就有一些壓縮方法,可是,行壓縮是在 DB2 9 中才引入的。行壓縮要求建立一個目錄,用於存儲重複模式或條目以及數字鍵。壓縮算法足夠智能,不會壓縮那些對節省磁盤空間幫助不大的行。
DB2 的行壓縮不像 Oracle 的鍵壓縮,它不須要指定鍵。
能夠經過 CREATE TABLE 或 ALTER TABLE 命令在表級進行壓縮。例如:
清單 7. 用 COMPRESSION YES 建立/修改表
|
爲了在 DB2 Control Center 中取得相同的效果,在列定義過程當中(表建立嚮導中的第二步),應確保選中面板底端的複選框 Store table data in a compressed format(以下圖所示)。
只有在執行 REORG 的時候才構建表字典,以後即可以壓縮表中的數據。在隨後的每次 REORG 操做中,表字典隨之更新。被壓縮的數據同時存放在磁盤上和內存中,DB2 還壓縮存儲在日誌文件中的用戶數據,以便減小日誌文件大小。
注意,分區表的每一個分區能夠有不一樣的壓縮字典,在 DPF 中的一個表的每一個分區也能夠有不一樣的壓縮字典。
除了數據行壓縮,DB2 9 提供的其餘壓縮機制還包括:
![]() ![]() |
![]()
|
從 Oracle 9i 到 10g,Oracle 在調優方面做了一些改進。Oracle 將如下方面的調優進行了自動化:
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 工具。
讓咱們看看相似的任務在 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 命令行處理器。
還能夠在 Command Center 中發出命令,如 圖 17 所示。
性能調優
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 業務對象的視圖,例如:
除了 DB2 8 的 Development Center 的功能外,新的 Developer Workbench 還包括對遷移報告、比較例程、XML 函數和使用 XQuery Builder 構建 XQuery 查詢等等的支持。 如今能夠從網站下載DB2 Developer Workbench 。
要了解關於 DB2 Developer Workbench 的更詳細的信息,請閱讀 developerWorks 中的這篇 教程。 要獲得更詳盡的示例和特性,請參考 developerWorks 中的文章 DB2 9 入門: 應用程序開發方面的加強。
圖 18 展現瞭如何使用 DWB 建立存儲過程:
![]() ![]() |
![]()
|
在 本文中,咱們藉助您當前已有的關於 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 表空間 |