程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DBA必須具備跨平台管理不同RDBMS的能力

DBA必須具備跨平台管理不同RDBMS的能力

編輯:DB2教程
1、簡介

當今IT的環境正經歷著劇烈的變化,依靠單一的關系型數據庫管理系統(RDBMS)管理數據的公司開始逐漸減少。分析家的報告指出 ,今天超過90%的公司都擁有不只一種RDBMS。在現在緊張的經濟情況下,實際的需求正在挑戰IT機構人員的工作極限。一個公司為管理每種RDBMS而配備不同DBA的情況,越來越少見了。今天的DBA必須跨平台管理不同的RDBMS,這是非常普通的事。

“58%的DBA被要求管理一種以上的數據庫平台。”―――來自:SearchDatabase.com的調查

通常,一個DBA不但掌握基本的關系理論知識,同時具備一種專門的RDBMS經驗。數據庫設計和管理的基本原理在所有RDBMS之間是相通的。成為一名成功的跨平台的DBA,關鍵是掌握對術語的真正理解和不同RDBMS的細微差別。本文將討論多平台的Oracle和DB2 UDB之間的基本架構和管理的差異。

2、基本組件

在不同平台之間,大部分的對象類型和功能是非常相似的,一些很重要差異是存儲過程的使用方式和日志生成方式。本文將詳細討論這些主題。

表1:基本數據庫組件中的常用術語的差異

3、產品選項

當在安裝任何一種數據庫時,需要選擇版本。為了滿足你的 IT需求並做出正確的決定,了解各個數據庫版本之間的差異是很重要的。

Oracle 10g:

Enterprise Edition;

Standard Edition;

Express Edition。

企業版是使用最多的版本,如果你想使用OEM附加包,這個版本可以滿足需要。

DB2 UDB for Linux/Unix/Windows(LUW) V 9.1:

數據倉庫版;

企業服務器版(ESE);

工作組版;

簡化版;

個人版;

通用開發版;

個人開發版。

在DB2 UDB V 8.1之前,在公司環境方面你有兩種選擇:企業版(Enterprise Edition-EE)和擴展企業版(Extended Enterprise Edition-EEE)。他們一般被分別稱為Double E和 Triple E。EEE是並發式服務器類型環境,與Oracle中的RAC很相似,它通常是被應用於巨型數據倉庫的安裝,IBM把這些底層代碼和V8.1融合到一起,就是現在大家知道的企業服務器版(ESE)。數據分區部件(DPF)是一個可供數據庫分區使用的附加部件,這使得系統從EE類型的環境到EEE環境的遷移工作變得很容易。

4、數據類型

甚至每個品牌的數據庫存儲的數據格式都是不一樣的,這對那些被分配在一個不熟悉的數據庫上工作的DBA和開發人員來說是十分頭疼的。

下面的表說明了數據庫之間不同的數據類型:

5、數據字典/編目

這兩個RDBMS將與數據庫相關的元數據存放在一組相關的表中。這些表在Oracle中被稱為數據字典,在DB2中被稱為系統編目(System Catalog for DB2)。

Oracle在SYS模式中有一組數據字典的基本表,在這些基本表上面定義了一組存儲系統信息和對象信息的視圖。一組視圖,即V$視圖,可以訪問動態性能信息。屬於對象的靜態信息可以從以ALL_ 、DBA_ 、和 USER_開頭的視圖中獲得。

在DB2中,每個數據庫包含的SYSIBM模式中,有一組基本表稱為系統編目。在SYSCAT模式中,對象信息通常能在這些表之上定義的一組視圖中獲得。此外,DB2在SYSTAT模式中提供了可更新的和主要用於操作訪問路徑的一組視圖。

6、訪問數據庫

每一個數據庫供應商都自己提供一套唯一工具,來訪問和管理他們自己的數據庫。

6.1、Oracle 企業管理器(OEM)

OEM提供了一些基本的數據庫管理功能,想使用更多高級的功能,必須購買附加的包:

- 變更管理包。

- 診斷包。

- 調整包。

- 恢復管理包。

- SQLPLUS,基本命令行接口。

6.2、IBM控制中心(CC)

控制中心規定了基本的數據庫管理的特征,比如創建/刪除對象、工具/命令生成、以及一些接口:Command Center、 Script Center 、Visual Explain。

6.3、IBM健康中心(HC)

從DB2 LUW V8.1 開始,IBM就引入了自主計算思想,這是一個“自我修復”數據庫中的概念。自主計算的概念還處於早期發展階段,而健康中心允許你在數據庫中為各種不同性能度量值定義阈值,如果超過阈值會自動報警。

7、相同的術語,不同的含義

管理不同類型的數據庫的第一步就是要了解各個供應商使用的不同的術語。在很多情形下,相同的術語的含義或者稍有不同或者完全不同。

舉例:

存儲過程

Oracle:它是用基於SQL的一種專門語言PL/SQL編寫的,存儲在數據庫中的一個程序。

DB2:存儲過程是一種最普通的程序,存儲在數據庫外部,並在數據庫中注冊,以標准編程語言編寫,比如C,Java,COBOL等,DB2同樣支持內部的存儲過程,並提供了一種基於SQL的專門的過程式語言。

Oracle:一組PL/SQL語句塊。

DB2:一種預編譯的訪問計劃。

段(Segment)

Oracle:是一個物理對象,比如表或索引。

DB2:表空間中的一組頁面。

8、不同的術語,相似的含義

對於大部分而言,每種類型數據庫都包含很多相似的組件,但它們命名不同,實現也不同。

9、實例(Instance)&數據庫

大家知道每個DBMS的物理安裝就是一個實例。然而,各自處理數據庫的方式是明顯的不同。

兩個DBMS都把實例定義為一組進程,然而,DB2 LUW 允許一個或多個活動的數據庫,Oracle每個實例僅僅只有一個數據庫,在Oracle中,通常實例和數據庫是可以互換的概念。

下表是實例定義的差異
圖1

10、存儲管理

從邏輯觀點上來看,Oracle有一個包含多個表空間的數據庫,表空間包含多個段(表,索引,回滾等),還包括由多個數據庫塊組成的擴展(Extent)。從物理意義上看,數據文件被分配給表空間,這些數據文件是由O/S塊組成。

DB2有兩種不同的分配方法來定義表空間。它們一種是數據庫管理的空間(DMS),另一種是系統管理的空間(SMS)。根據應用程序,它們各有優勢:

SMS(System Manages Space)---系統管理空間允許操作系統根據需要為表分配空間。不指定空間參數,這種方法對於存儲管理來說非常容易。對於較小的表或短時間增長和收縮的表都是有利的。

DMS(Database Managed Space)---當表空間被創建時,數據庫管理空間需要詳細的空間說明。通過表空間,存儲空間可以馬上被分配和保留。

11、對象比較

11.1、緩沖池

兩種數據庫都使用內存來做數據和對象定義的讀寫優化,這些被涉及到的內存區域被稱為緩沖區或高速緩沖存儲器。雖然使用方法是一樣的,但在結構方式的定義和分配上是不一樣的。

在Oracle中,緩沖池是在數據庫啟動文件init.ora中被定義的,這個文件可以動態地改變,它有下面的選項來定義不同的緩沖池:默認,循環,固定。

在DB2 LUW中,緩沖池是在數據庫中定義的,並可創建為指定的頁面大小:4K,8K,16K 或者32K,它們是通過DDL來定義的,不同的表空間被分配不同的緩沖池。

11.2、數據庫

兩個數據庫管理系統處理數據庫的方法是完全不同的,在Oracle中,你只有一個數據庫,它包含所有的數據文件,重做日志文件,控制文件等。在DB2中,你可以一個實例有多個數據庫,然而,每個數據庫是獨立擁有它的實體的。每次一個新的數據庫的創建都會有相應的編目被創建,以及緩沖池和日志文件被定義,數據庫之間沒有任何共享。在DB2數據庫中有三個表空間將被創建:

SYSCATSPACE,系統編目。

TEMPSPACE,臨時表空間,排序等。

USERSPACE,應用數據的默認表空間。

11.3、表空間

Oracle:

在Oracle中,你要處理兩類表空間:系統的和非系統的。系統表空間包含數據字典和系統回滾段。非系統表空間包含和應用程序相關的所有東西:回滾段,臨時段,應用數據,以及應用索引。這些非系統的表空間也可以分兩種類型:

永久的---用於所有對象,比如:在UDB中的USERSPACE

臨時的---用於排序、臨時工作區等,像在UDB中的TEMPSPACE

DB2:

在DB2中,存在三類表空間:

1.Regular ---主要是一般常用的應用數據。

2.Temporary---排序。

3.Large---LOBs,CLOBs,BLOBs。

11.4、表

從用戶或者程序本身的角度來看,表就是表,不管數據庫類型的事。然而,從DBA的角度來看,對他們的操作有很大差異。

Oracle允許在一個表空間中定義一個或多個表,並且表和索引是相互獨立的,除非是在IOT(Indexed Organized Table)這種特殊表的類型下,這種情況下,索引的葉子頁面將包含表的行數據。在Oracle中在表上可以定義許多種不同類型的索引,包括唯一的,不唯一的,分區的,基於功能和位圖。其中除位圖索引外,在Oracle中所有的索引實際上都是由根結點、分枝和葉子頁面組成的標准B-樹。

DB2 UDB允許在同一個表空間定義一個到多個表,而且它的索引是直接關聯在表定義上,實際上,表定義說明了該表上定義的所有索引所在的表空間。

DB2有三種類型的索引:唯一,不唯一和簇集。

對DB2來說,簇集索引是會影響表中行的排列次序,這與Oracle中的簇集是完全不同的。DB2也是用標准的B-樹結構來做索引的。

12、管理的差異

12.1、優化

為了保證數據庫高速的運行,SQL優化是很重要的一部分工作。每個數據庫都有它們各自不同的SQL優化器,其確定如何從數據庫中檢索數據滿足查詢的方式各有不同。

Oracle:你可以選擇使用rules-based 或者cost-based來做優化。然而,你必須注意rules-based優化在10g版本中已經沒有了。

DB2:IBM的優化比Oracle更高明,這已經歷了很長時間的爭論。DB2的優化是嚴格地使用cost-based來做的,對於復雜的查詢,你也有為它指定優化級別的選擇權。

此外,Oracle和DB2都可以通過EXPAIN命令在相關的表上增加包含訪問路徑信息的行數據。 Oracle利用Plan_Table,這和運行在z/OS上的DB2很類似。DB2的解釋輸出包含在七個表中,記錄非常詳細。

每一個供應商都會為這些訪問路徑信息提供格式化的工具。Oracle在OEM中有基本解釋工具,或者你也可以使用OEM中調整包裡的SQL分析功能。DB2則通過控制中心提供了易使用的Visual Explain.

12.2、並行

並行這個概念在這些平台上有很大不同。Oracle中的並行需要特殊的硬件配置,開始於其產品Oracle Parallel Server(OPS-8i)。後來9i版本中變成RAC,這裡Oracle中並行的概念與在DB2 z/OS中的SYSPLEX並行的概念非常相似。DB2的並行要求要使用帶DPF(數據分區部件)的ESE(企業服務器版),它們有兩種不同的配置:

MPP(大規模平行處理)---多台機器組成集群,每一台機器都有各自單獨的處理器。

SMP(對稱多處理)---一台機器上有多個處理器。

12.3、監控

為了保證應用程序的請求能及時得到響應而不延遲,監控數據庫性能的任務也是必要的。

Oracle:它提供一套性能動態視圖工具,我們通常所說的V$ VIEws。標准SQL通常用於數據庫性能信息的監測,比如內存、硬盤空間使用情況,用戶和會話信息以及鎖等。

DB2:它提供了兩種不同的監控選項。第一,快照監控,顧名思義,它提供某一時刻性能的信息。大量被收集的數據被6個系列的監聽器所控制。事件監聽,通常是用於特殊事件的跟蹤,比如死鎖或完成的事務。事件監聽是一種實際的數據庫對象,它必須要通過DDL來創建,事件監聽的輸出會寫到一個目錄或者指定的通道。

12.4、工具

每一個數據庫都有它們各自的命令和工具集,用來操作數據庫中的數據。

(1)重組數據

Oracle:它給你重組數據以很多靈活性,你可以使用Import/Export命令來實現,或在9i企業版裡使用Online Redefinition Package(在線重定義包)進行聯機重組。

DB2:你可以重組一個表或者一個索引。也可以使用一個很不錯命令REORGCHK,這個命令將產生需要重組的表的報告。

(2)裝載數據

Oracle:將數據導入表中可以使用SQL*LOADER。它有很多選項,比如:插入,追加,替換數據,多個輸入文件等等。

DB2:對於DB2來說,DBA有兩個選擇來導入數據:裝載工具或者導入命令。裝載工具一般用於裝載大量的數據時使用,而導入命令則有益於快速地做插入少量的數據的操作。無論是導入命令還是裝載工具,它們都提供添加或替換數據的選項。

12.5、備份和恢復

做備份和恢復的策略計劃是DBA的關鍵職責。根據其運行的具體應用,每一個數據庫都有很不同的需求。

第一個決定是使用日志文件的方法。你的應用程序需要時間點的恢復嗎?如果是,對於Oracle來說,你可以選擇Archive mode方式的日志,對於DB2 UDB而言,你可以選擇Log Retain。如果你的應用程序沒有問題,只是想恢復到最近的備份,在Oracle中你可以選擇No Archive mode, 對於DB2 UDB,你可以選擇Circular logging(default)。

(1)備份類型

Oracle:

冷備份-是指數據庫在離線的情況下做整個數據庫的備份,包括、數據文件,控制文件,在線重做日志文件,Init.ora。

熱備份-是指聯機情況下做的備份。

RMAN-恢復管理器,導出數據庫。

DB2:

數據庫-在線/離線。

表空間。

(2)恢復類型

Oracle:

實例恢復-從失敗的實例中用重做日志來恢復。

非歸檔模式(整個數據庫的恢復)。

歸檔模式(基於時間點的恢復)。

導入-邏輯恢復。

DB2:

崩潰—從異常終止或突然斷電中用日志來恢復。

前滾—映像拷貝+日志或本地時間(V8)。

版本-使用映像拷貝。

導入/裝載-邏輯恢復。

還要做很多其他決定,如備份的類型和頻率,邏輯備份還是物理備份,備份文件保留多長時間,用戶是否會中斷備份等。每個數據庫都應該就所有的這些問題有個明確的程序,這與應用和操作環境有關。

13、結束語

管理數據庫是一件復雜而又很費時間的工作。DBA越來越多地被要求管理各種關系型數據庫,可能來自不同的廠商,可能運行在不同的操作系統上。

DBA懂得關系數據庫的原理是絕對必要的,但對於在一個有不同種類的數據庫的環境下這是不夠的。你也需要知道它們的細微差別以及每種數據庫的不同的處理。沒有什麼可以替代這些經驗和知識。但有了標准化的實用工具後,對於DBA而言,可以使工作過程實現效率的最大化提高,並且可以幫助減少導致應用程序出現停機的問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved