簡介
當今IT的環境正經歷著劇烈的變化依靠單一的關系型數據庫管理系統(RDBMS)管理數據的公司開始逐漸減少分析家的報告指出 今天超過%的公司都擁有不只一種RDBMS在現在緊張的經濟情況下實際的需求正在挑戰IT機構人員的工作極限一個公司為管理每種RDBMS而配備不同DBA的情況越來越少見了今天的DBA必須跨平台管理不同的RDBMS這是非常普通的事
%的DBA被要求管理一種以上的數據庫平台
―――來自的調查
通常一個DBA不但掌握基本的關系理論知識同時具備一種專門的RDBMS經驗數據庫設計和管理的基本原理在所有RDBMS之間是相通的成為一名成功的跨平台的DBA關鍵是掌握對術語的真正理解和不同RDBMS的細微差別本文將討論多平台的Oracle和DB UDB之間的基本架構和管理的差異
基本組件
在不同平台之間大部分的對象類型和功能是非常相似的一些很重要差異是存儲過程的使用方式和日志生成方式本文將詳細討論這些主題
表基本數據庫組件中的常用術語的差異
產品選項
當在安裝任何一種數據庫時需要選擇版本為了滿足你的 IT需求並做出正確的決定了解各個數據庫版本之間的差異是很重要的
Oracle g
Enterprise Edition
Standard Edition
Express Edition
企業版是使用最多的版本如果你想使用OEM附加包這個版本可以滿足需要
DB UDB for Linux/Unix/Windows(LUW) V
數據倉庫版
企業服務器版(ESE)
工作組版
簡化版
個人版
通用開發版
個人開發版
在DB UDB V 之前在公司環境方面你有兩種選擇企業版(Enterprise EditionEE)和擴展企業版(Extended Enterprise EditionEEE)他們一般被分別稱為Double E和 Triple EEEE是並發式服務器類型環境與Oracle中的RAC很相似它通常是被應用於巨型數據倉庫的安裝IBM把這些底層代碼和V融合到一起就是現在大家知道的企業服務器版(ESE)數據分區部件(DPF)是一個可供數據庫分區使用的附加部件這使得系統從EE類型的環境到EEE環境的遷移工作變得很容易
數據類型
甚至每個品牌的數據庫存儲的數據格式都是不一樣的這對那些被分配在一個不熟悉的數據庫上工作的DBA和開發人員來說是十分頭疼的
下面的表說明了數據庫之間不同的數據類型
數據字典/編目
這兩個RDBMS將與數據庫相關的元數據存放在一組相關的表中這些表在ORACLE中被稱為數據字典在DB中被稱為系統編目(System Catalog for DB)
ORACLE在SYS模式中有一組數據字典的基本表在這些基本表上面定義了一組存儲系統信息和對象信息的視圖一組視圖即V$視圖可以訪問動態性能信息屬於對象的靜態信息可以從以ALL_ DBA_ 和 USER_開頭的視圖中獲得
在DB中每個數據庫包含的SYSIBM模式中有一組基本表稱為系統編目在SYSCAT模式中對象信息通常能在這些表之上定義的一組視圖中獲得此外DB在SYSTAT模式中提供了可更新的和主要用於操作訪問路徑的一組視圖
訪問數據庫
每一個數據庫供應商都自己提供一套唯一工具來訪問和管理他們自己的數據庫
Oracle 企業管理器(OEM)
OEM提供了一些基本的數據庫管理功能想使用更多高級的功能必須購買附加的包
變更管理包
診斷包
調整包
恢復管理包
SQLPLUS基本命令行接口
IBM控制中心(CC)
控制中心規定了基本的數據庫管理的特征比如創建/刪除對象工具/命令生成以及一些接口Command Center Script Center Visual Explain
IBM健康中心(HC)
從DB LUW V 開始IBM就引入了自主計算思想這是一個自我修復數據庫中的概念自主計算的概念還處於早期發展階段而健康中心允許你在數據庫中為各種不同性能度量值定義阈值如果超過阈值會自動報警
相同的術語不同的含義
管理不同類型的數據庫的第一步就是要了解各個供應商使用的不同的術語在很多情形下相同的術語的含義或者稍有不同或者完全不同
舉例
存儲過程
Oracle它是用基於SQL的一種專門語言PL/SQL編寫的存儲在數據庫中的一個程序
DB存儲過程是一種最普通的程序存儲在數據庫外部並在數據庫中注冊以標准編程語言編寫比如CJAVACOBOL等DB同樣支持內部的存儲過程並提供了一種基於SQL的專門的過程式語言
包
Oracle一組PL/SQL語句塊
DB一種預編譯的訪問計劃
段(Segment)
Oracle是一個物理對象比如表或索引
DB表空間中的一組頁面
不同的術語相似的含義
對於大部分而言每種類型數據庫都包含很多相似的組件但它們命名不同實現也不同
實例(Instance)&數據庫
大家知道每個DBMS的物理安裝就是一個實例然而各自處理數據庫的方式是明顯的不同
兩個DBMS都把實例定義為一組進程然而DB LUW 允許一個或多個活動的數據庫Oracle每個實例僅僅只有一個數據庫在Oracle中通常實例和數據庫是可以互換的概念
實例定義的差異
圖
存儲管理
從邏輯觀點上來看Oracle有一個包含多個表空間的數據庫表空間包含多個段(表索引回滾等)還包括由多個數據庫塊組成的擴展(Extent)從物理意義上看數據文件被分配給表空間這些數據文件是由O/S塊組成
DB有兩種不同的分配方法來定義表空間它們一種是數據庫管理的空間(DMS)另一種是系統管理的空間(SMS)根據應用程序它們各有優勢
SMS(System Manages Space)系統管理空間允許操作系統根據需要為表分配空間不指定空間參數這種方法對於存儲管理來說非常容易對於較小的表或短時間增長和收縮的表都是有利的
DMS(Database Managed Space)當表空間被創建時數據庫管理空間需要詳細的空間說明通過表空間存儲空間可以馬上被分配和保留
對象比較
緩沖池
兩種數據庫都使用內存來做數據和對象定義的讀寫優化這些被涉及到的內存區域被稱為緩沖區或高速緩沖存儲器雖然使用方法是一樣的但在結構方式的定義和分配上是不一樣的
在Oracle中緩沖池是在數據庫啟動文件initora中被定義的這個文件可以動態地改變它有下面的選項來定義不同的緩沖池默認循環固定
在DB LUW中緩沖池是在數據庫中定義的並可創建為指定的頁面大小KKK 或者K它們是通過DDL來定義的不同的表空間被分配不同的緩沖池
數據庫
兩個數據庫管理系統處理數據庫的方法是完全不同的在Oracle中你只有一個數據庫它包含所有的數據文件重做日志文件控制文件等在DB中你可以一個實例有多個數據庫然而每個數據庫是獨立擁有它的實體的每次一個新的數據庫的創建都會有相應的編目被創建以及緩沖池和日志文件被定義數據庫之間沒有任何共享在DB數據庫中有三個表空間將被創建
SYSCATSPACE系統編目
TEMPSPACE臨時表空間排序等
USERSPACE應用數據的默認表空間
表空間
Oracle在Oracle中你要處理兩類表空間系統的和非系統的系統表空間包含數據字典和系統回滾段非系統表空間包含和應用程序相關的所有東西回滾段臨時段應用數據以及應用索引這些非系統的表空間也可以分兩種類型
永久的用於所有對象比如在UDB中的USERSPACE
臨時的用於排序臨時工作區等像在UDB中的TEMPSPACE
DB
在DB中存在三類表空間
Regular 主要是一般常用的應用數據
Temporary排序
LargeLOBsCLOBsBLOBs
表
從用戶或者程序本身的角度來看表就是表不管數據庫類型的事然而從DBA的角度來看對他們的操作有很大差異
Oracle允許在一個表空間中定義一個或多個表並且表和索引是相互獨立的除非是在IOT(Indexed Organized Table)這種特殊表的類型下這種情況下索引的葉子頁面將包含表的行數據在Oracle中在表上可以定義許多種不同類型的索引包括唯一的不唯一的分區的基於功能和位圖其中除位圖索引外在Oracle中所有的索引實際上都是由根結點分枝和葉子頁面組成的標准B樹
DB UDB允許在同一個表空間定義一個到多個表而且它的索引是直接關聯在表定義上實際上表定義說明了該表上定義的所有索引所在的表空間
DB有三種類型的索引唯一不唯一和簇集
對DB來說簇集索引是會影響表中行的排列次序這與Oracle中的簇集是完全不同的DB也是用標准的B樹結構來做索引的
管理的差異
優化
為了保證數據庫高速的運行SQL優化是很重要的一部分工作每個數據庫都有它們各自不同的SQL優化器其確定如何從數據庫中檢索數據滿足查詢的方式各有不同
Oracle你可以選擇使用rulesbased 或者costbased來做優化然而你必須注意rulesbased優化在g版本中已經沒有了
DBIBM的優化比Oracle更高明這已經歷了很長時間的爭論DB的優化是嚴格地使用costbased來做的對於復雜的查詢你也有為它指定優化級別的選擇權
此外Oracle和DB都可以通過EXPAIN命令在相關的表上增加包含訪問路徑信息的行數據 Oracle利用Plan_Table這和運行在z/OS上的DB很類似DB的解釋輸出包含在七個表中記錄非常詳細
每一個供應商都會為這些訪問路徑信息提供格式化的工具Oracle在OEM中有基本解釋工具或者你也可以使用OEM中調整包裡的SQL分析功能DB則通過控制中心提供了易使用的Visual Explain
並行
並行這個概念在這些平台上有很大不同Oracle中的並行需要特殊的硬件配置開始於其產品Oracle Parallel Server(OPSi)後來i版本中變成RAC這裡Oracle中並行的概念與在DB z/OS中的SYSPLEX並行的概念非常相似DB的並行要求要使用帶DPF(數據分區部件)的ESE(企業服務器版)它們有兩種不同的配置
MPP(大規模平行處理)多台機器組成集群每一台機器都有各自單獨的處理器
SMP(對稱多處理)一台機器上有多個處理器
監控
為了保證應用程序的請求能及時得到響應而不延遲監控數據庫性能的任務也是必要的
Oracle它提供一套性能動態視圖工具我們通常所說的V$ Views標准SQL通常用於數據庫性能信息的監測比如內存硬盤空間使用情況用戶和會話信息以及鎖等
DB它提供了兩種不同的監控選項第一快照監控顧名思義它提供某一時刻性能的信息大量被收集的數據被個系列的監聽器所控制事件監聽通常是用於特殊事件的跟蹤比如死鎖或完成的事務事件監聽是一種實際的數據庫對象它必須要通過DDL來創建事件監聽的輸出會寫到一個目錄或者指定的通道
工具
每一個數據庫都有它們各自的命令和工具集用來操作數據庫中的數據
()重組數據
Oracle它給你重組數據以很多靈活性你可以使用Import/Export命令來實現或在i企業版裡使用Online Redefinition Package(在線重定義包)進行聯機重組
DB你可以重組一個表或者一個索引也可以使用一個很不錯命令REORGCHK這個命令將產生需要重組的表的報告
()裝載數據
Oracle將數據導入表中可以使用SQL*LOADER它有很多選項比如插入追加替換數據多個輸入文件等等
DB對於DB來說DBA有兩個選擇來導入數據裝載工具或者導入命令裝載工具一般用於裝載大量的數據時使用而導入命令則有益於快速地做插入少量的數據的操作無論是導入命令還是裝載工具它們都提供添加或替換數據的選項
備份和恢復
做備份和恢復的策略計劃是DBA的關鍵職責根據其運行的具體應用每一個數據庫都有很不同的需求
第一個決定是使用日志文件的方法你的應用程序需要時間點的恢復嗎?如果是對於Oracle來說你可以選擇Archive mode方式的日志對於DB UDB而言你可以選擇Log Retain如果你的應用程序沒有問題只是想恢復到最近的備份在Oracle中你可以選擇No Archive mode 對於DB UDB你可以選擇Circular logging(default)
()備份類型
Oracle冷備份是指數據庫在離線的情況下做整個數據庫的備份包括數據文件控制文件在線重做日志文件Initora
熱備份是指聯機情況下做的備份
RMAN恢復管理器
導出數據庫
DB
數據庫在線/離線
表空間
()恢復類型
Oracle
實例恢復從失敗的實例中用重做日志來恢復
非歸檔模式(整個數據庫的恢復)
歸檔模式(基於時間點的恢復)
導入邏輯恢復
DB
崩潰—從異常終止或突然斷電中用日志來恢復
前滾—映像拷貝+日志或本地時間(V)
版本使用映像拷貝
導入/裝載邏輯恢復
還要做很多其他決定如備份的類型和頻率邏輯備份還是物理備份備份文件保留多長時間用戶是否會中斷備份等每個數據庫都應該就所有的這些問題有個明確的程序這與應用和操作環境有關
結束語
管理數據庫是一件復雜而又很費時間的工作DBA越來越多地被要求管理各種關系型數據庫可能來自不同的廠商可能運行在不同的操作系統上
DBA懂得關系數據庫的原理是絕對必要的但對於在一個有不同種類的數據庫的環境下這是不夠的你也需要知道它們的細微差別以及每種數據庫的不同的處理沒有什麼可以替代這些經驗和知識但有了標准化的實用工具後對於DBA而言可以使工作過程實現效率的最大化提高並且可以幫助減少導致應用程序出現停機的問題
From:http://tw.wingwit.com/Article/program/Oracle/201311/18529.html