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

來源:互聯網
上載者:User
一、概論
超大型系統的特點為:
1.處理的使用者數一般都超過百萬,有的還超過千萬,資料庫的資料量一般超過1TB;
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)
  物理熱備份是在資料庫系統正常啟動並執行情況下進行的Database 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的狀態下進行。資料表空間及資料檔案的恢複可在資料庫啟動並執行狀態下進行。
  使用邏輯備份恢複
  當資料庫中的某一對象被損壞,或使用者的誤操作使資料破壞(如誤刪表) 時可用邏輯備份恢複。用邏輯備份只能恢複到備份時刻的狀態。
  總之,資料庫系統的設計是一門高深的學問。本文是作者基於幾年管理超大型計費系統經驗和教訓,參考ORACLE8.0.6文檔的基礎上完成的。由於本人才疏學淺,難免有不當和錯誤之處,敬請有識之士批評指正。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.