超大型Oracle資料庫應用系統的設計方法

lishiran發表於2008-05-08

一、概論

超大型系統的特點為:

1.處理的使用者數一般都超過百萬,有的還超過千萬,資料庫的資料量一般超過1TB;

[@more@]

2.系統必須提供實時響應功能,系統需不停機執行,要求系統有很高的可用性及可擴充套件性。

為了能達到以上要求,除了需要效能優越的計算機和海量儲存裝置外,還需要先進的資料庫結構設計和最佳化的應用系統。

一般的超大型系統採用雙機或多機叢集系統。下面以資料庫採用Oracle 8.0.6並行伺服器為例來談談超大型資料庫設計方法:

·確定系統的ORACLE並行伺服器應用劃分策略

·資料庫物理結構的設計

·系統硬碟的劃分及分配

·備份及恢復策略的考慮

二、Oracle並行伺服器應用劃分策略

Oracle並行伺服器允許不同節點上的多個INSTANCE例項同時訪問一個資料庫,以提高系統的可用性、可擴充套件性及效能。Oracle並行伺服器中的每個INSTANCE例項都可將共享資料庫中的表或索引的資料塊讀入本地的緩衝區中,這就意味著一個資料塊可存在於多個INSTANCE例項的SGA區中。那麼保持這些緩衝區的資料的一致性就很重要。Oracle使用 PCM( Parallel Cache Management) 鎖維護緩衝區的一致性,Oracle同時透過I DLM( 整合的分散式鎖管理器)實現PCM 鎖,並透過專門的LCK程式實現INSTANCE例項間的資料一致。

考慮這種情況:INSTANCE1對BLOCK X塊修改,這時INSTANCE2對BLOCK X塊也需要修改。Oracle並行伺服器利用PCM鎖機制,使BLOCK X從INSTANCE 1的SGA區寫入資料庫資料檔案中,又從資料檔案中把BLOCK X塊讀入INSTANCE2的SGA區中。發生這種情況即為一個PING。PING使原來1個MEMORY IO可以完成的工作,變成2個DISK IO和1個 MEMORY IO才能夠完成,如果系統中有過多的PING,將大大降低系統的效能。

Oracle並行伺服器中的每個PCM鎖可管理多個資料塊。PCM鎖管理的資料塊的個數與分配給一個資料檔案的PCM鎖的個數及該資料檔案的大小有關。當INSTANCE 1和INSTANCE 2要操作不同的BLOCK,如果這些BLOCK 是由同一個PCM 鎖管理的,仍然會發生PING。這些PING稱為FALSE PING。當多個INSTANCE訪問相同的BLOCK而產生的PING是TRUE PING。

合理的應用劃分使不同的應用訪問不同的資料,可避免或減少TRUE PING;透過給FALSE PING較多的資料檔案分配更多的PCM鎖可減少 FALSE PING的次數,增加PCM鎖不能減少TRUE PING。

所以, Oracle並行伺服器設計的目的是使系統交易處理合理的分佈在INSTANCE例項間,以最小化PING,同時合理的分配PCM鎖,減少FALSE PING。設計的關鍵是找出可能產生的衝突,從而決定應用劃分的策略。應用劃分有如下四種方法:

1.根據功能模組劃分,不同的節點執行不同的應用

2.根據使用者劃分,不同型別的使用者執行在不同的節點上

3.根據資料劃分,不同的節點訪問不同的資料或索引

4.根據時間劃分,不同的應用在不同的時間段執行

應用劃分的兩個重要原則是使PING最小化及使各節點的負載大致均衡。

三、資料庫物理結構的設計

資料庫物理結構設計包括確定表及索引的物理儲存引數,確定及分配資料庫表空間,確定初始的回滾段,臨時表空間,redo log files等,並確定主要的初始化引數。物理設計的目的是提高系統的效能。整個物理設計的引數可以根據實際執行情況作調整。

● 表及索引資料量估算及物理儲存引數的設定

表及索引的儲存容量估算是根據其記錄長度及估算的最大記錄數確定的。在容量計算中考慮了資料塊的頭開銷及記錄和欄位的頭開銷等等。表及索引的initial和next儲存引數一般設為相等,pctincrease設為0。

● 表空間的設計

Oracle資料庫的表和索引是透過表空間tablespace儲存在資料庫中的。在tablespace設計時一般作以下考慮:

1、一般較大的表或索引單獨分配一個tablespace。

2、Read only物件或Read mostly物件分成一組,存在對應的tablespace中。

3、若tablespace中的物件皆是read only物件,可將tablespace設定成read only模式,在備份時,read only tablespace只需備份一次。

4、高頻率insert的物件分成一組,存在對應的tablespace中。

5、增、刪、改的物件分成一組,存在對應的tablespace中。

6、表和索引分別存於不同的tablespace。

7、存於同一個 tablespace中的表(或索引)的extent 大小最好成倍數關係,有利於空間的重利用和減少碎片。

● DB BLOCK SIZE

超大型資料庫DB BLOCK SIZE一般在4KB 至 64KB,而最常用的是8KB、 16KB或32KB。選用較大的DB BLOCK SIZE可使INDEX的高度降低,也會提高IO效率。

● Redo Log Files

Oracle程式redo log writer (LGWR)將日誌寫入日誌檔案。一般日誌檔案最好建在專用的映象盤上。日誌檔案組的個數及檔案的大小的設定與系統交易量的大小有關。ORACLE並行伺服器中每個INSTANCE使用各自的一組rego log files。一般的每組日誌檔案的個數為3-7個,每個的大小為200MB-500MB。

● 資料檔案大小

建議用標準的檔案大小,如200M、1GB、2GB、4GB、8GB等,可簡化空間的維護工作。

● 回滾段

回滾段一般建在專用的表空間中。每一個INSTANCE例項擁有各自的回滾段。設定回滾段的一般原則是: initial 及 next 儲存引數的值是相等的,同時還是DB BLOCK SIZE的倍數。每個回滾段的minextents設為20,optimal引數的值保證回滾段縮小時不低於20個extents。

● 臨時表空間

臨時表空間一般建在專用的表空間中。每一個INSTANCE例項擁有各自的臨時表空間。這樣使用臨時表空間時不會有PING。設定臨時表空間的initial=next。

四、系統硬碟的劃分及分配

在多機叢集環境下,Oracle並行伺服器透過作業系統提供的DRD服務來共享同一個資料庫。每一個INSTANCE對資料庫的資料檔案的訪問都是透過該資料檔案所在的DRD服務進行的。

考慮以下情況:主機1上有DRD服務1,該服務對應的資料檔案有1、2、13、35、67等,這時如果主機2上的INSTANCE2需要讀取資料檔案13,透過DRD服務排程,主機1透過DRD服務訪問磁碟陣列上的資料檔案13,把INSTANCE2需要的資料讀到記憶體,然後透過MEMORY IO把資料傳到主機2的INSTANCE2。寫操作是讀操作的逆過程。

透過以上分析可知,系統硬碟的劃分及分配的原則是儘量減少MEMORY IO。

五、備份及恢復策略的考慮

資料庫的備份與恢復在系統設計中佔很重要的地位。好的備份及恢復策略可以降低系統的執行風險,減少因硬體故障而造成的損失。

Oracle備份方法:

1.物理備份

將資料庫的物理檔案透過作業系統的命令或工具備份到備份介質上。物理備份往往用於儲存介質故障時恢復資料庫系統的資料。

根據資料庫執行方式的不同,可進行不同的物理備份:

a)物理冷備份(offline backup)

物理冷備份要求資料庫在關閉(所有INSTANCEs停止)的情況下進行。這種備份必須是完全備份,即需備份所有的資料檔案、控制檔案(control file)、日誌檔案(redo log file)、初始引數檔案等等。

物理冷備份的步驟簡單,但要求系統能夠停止。

b)物理熱備份(online backup)

物理熱備份是在資料庫系統正常執行的情況下進行的資料庫備份。這種備份可以是資料庫的部分備份,既備份資料庫的某個表空間(tablespace)或某個資料檔案(datafile),也可備份控制檔案(control file)。

物理熱備份要求資料庫在ARCHIVELOG模式下執行。這種備份一般用於應用系統不能停機的情況。

c)歸檔日誌檔案備份(archived log file backup)

要使資料庫系統能夠恢復到故障點前一時刻狀態,或恢復到某指定時刻狀態,資料庫必須採用ARCHIVELOG模式。在ARCHIVELOG模式下,資料庫系統會產生歸檔日誌檔案(archive log files)。歸檔日誌檔案也需備份到備份介質上。在恢復時,這些檔案可使資料庫恢復到最近狀態。

歸檔日誌檔案產生在指定目錄下,這些檔案一生成就可以備份到備份介質上,DBA可根據磁碟空間情況,定時將它們備份出去。

2.邏輯備份

邏輯備份是透過Oracle提供的Export工具,將資料庫的結構定義及其資料卸出到特定格式的檔案中,並備份該檔案。

在實際應用中,邏輯備份與物理備份並用。一般來說,物理備份用於磁碟介質損壞或資料檔案損壞;邏輯備份用於資料庫中的某些物件被破壞或使用者誤操作。

備份策略的考慮主要在以下三個方面:

● 儲存空間

● 對現行執行的系統的效能影響

● 恢復時間的影響

如果需要節省空間和恢復時間就需要增加備份的頻率,但是備份操作會明顯增加現行執行的系統的負載。、

Oracle的恢復方法

根據不同的備份方法採用不同的恢復方法。

使用物理備份恢復

Oracle提供了三種恢復手段:

1、資料庫級的恢復

2、表空間(Tablespace)的恢復

3、資料檔案的恢復

資料庫級的恢復要求資料庫在關閉但Mount的狀態下進行。表空間及資料檔案的恢復可在資料庫執行的狀態下進行。

使用邏輯備份恢復

當資料庫中的某一物件被損壞,或使用者的誤操作使資料破壞(如誤刪表) 時可用邏輯備份恢復。用邏輯備份只能恢復到備份時刻的狀態。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9099175/viewspace-1003672/,如需轉載,請註明出處,否則將追究法律責任。

相關文章