熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

超大型ORACLE數據庫應用系統的設計

2022-06-13   來源: Oracle 

  一概論
  超大型系統的特點為
  處理的用戶數一般都超過百萬有的還超過千萬數據庫的數據量一般超過TB
  系統必須提供實時響應功能系統需不停機運行要求系統有很高的可用性及可擴展性
  為了能達到以上要求除了需要性能優越的計算機和海量存儲設備外還需要先進的數據庫結構設計和優化的應用系統
  一般的超大型系統采用雙機或多機集群系統下面以數據庫采用ORACLE 並行服務器為例來談談超大型數據庫設計方法
  ·確定系統的ORACLE並行服務器應用劃分策略
  ·數據庫物理結構的設計
  ·系統硬盤的劃分及分配
  ·備份及恢復策略的考慮
  二ORACLE並行服務器應用劃分策略
  ORACLE並行服務器允許不同節點上的多個INSTANCE實例同時訪問一個數據庫以提高系統的可用性可擴展性及性能ORACLE並行服務器中的每個INSTANCE實例都可將共享數據庫中的表或索引的數據塊讀入本地的緩沖區中這就意味著一個數據塊可存在於多個INSTANCE實例的SGA區中那麼保持這些緩沖區的數據的一致性就很重要ORACLE 使用 PCM( Parallel Cache Management) 鎖維護緩沖區的一致性ORACLE同時通過I DLM( 集成的分布式鎖管理器)實現PCM 鎖並通過專門的LCK進程實現INSTANCE實例間的數據一致
  考慮這種情況INSTANCE對BLOCK X塊修改這時INSTANCE對BLOCK X塊也需要修改ORACLE並行服務器利用PCM鎖機制使BLOCK X從INSTANCE 的SGA區寫入數據庫數據文件中又從數據文件中把BLOCK X塊讀入INSTANCE的SGA區中發生這種情況即為一個PINGPING使原來個MEMORY IO可以完成的工作變成個DISK IO和個 MEMORY IO才能夠完成如果系統中有過多的PING將大大降低系統的性能
  ORACLE並行服務器中的每個PCM鎖可管理多個數據塊PCM鎖管理的數據塊的個數與分配給一個數據文件的PCM鎖的個數及該數據文件的大小有關當INSTANCE 和INSTANCE 要操作不同的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設計的關鍵是找出可能產生的沖突從而決定應用劃分的策略應用劃分有如下四種方法:
  根據功能模塊劃分不同的節點運行不同的應用
  根據用戶劃分不同類型的用戶運行在不同的節點上
  根據數據劃分不同的節點訪問不同的數據或索引
  根據時間劃分不同的應用在不同的時間段運行
  應用劃分的兩個重要原則是使PING最小化及使各節點的負載大致均衡
  三數據庫物理結構的設計
  數據庫物理結構設計包括確定表及索引的物理存儲參數確定及分配數據庫表空間確定初始的回滾段臨時表空間redo log files等並確定主要的初始化參數物理設計的目的是提高系統的性能整個物理設計的參數可以根據實際運行情況作調整
  ● 表及索引數據量估算及物理存儲參數的設置
  表及索引的存儲容量估算是根據其記錄長度及估算的最大記錄數確定的在容量計算中考慮了數據塊的頭開銷及記錄和字段的頭開銷等等表及索引的initial和next存儲參數一般設為相等pctincrease設為
  ● 表空間的設計
  ORACLE數據庫的表和索引是透過表空間tablespace存儲在數據庫中的在tablespace設計時一般作以下考慮
  一般較大的表或索引單獨分配一個tablespace
  Read only對象或Read mostly對象分成一組存在對應的tablespace中
  若tablespace中的對象皆是read only對象可將tablespace設置成read only模式在備份時read only tablespace只需備份一次
  高頻率insert的對象分成一組存在對應的tablespace中
  改的對象分成一組存在對應的tablespace中
  表和索引分別存於不同的tablespace
  存於同一個 tablespace中的表(或索引)的extent 大小最好成倍數關系有利於空間的重利用和減少碎片
  ● DB BLOCK SIZE
  超大型數據庫DB BLOCK SIZE一般在KB 至 KB而最常用的是KB KB或KB選用較大的DB BLOCK SIZE可使INDEX的高度降低也會提高IO效率
  ● Redo Log Files
  ORACLE 使用專用的進程redo log writer (LGWR)將日志寫入日志文件一般日志文件最好建在專用的鏡像盤上日志文件組的個數及文件的大小的設定與系統交易量的大小有關ORACLE並行服務器中每個INSTANCE使用各自的一組rego log files一般的每組日志文件的個數為每個的大小為MB-MB
  ● 數據文件大小
  建議用標准的文件大小M1GB2GBGBGB等可簡化空間的維護工作
  ● 回滾段
  回滾段一般建在專用的表空間中每一個INSTANCE實例擁有各自的回滾段設置回滾段的一般原則是 initial 及 next 存儲參數的值是相等的同時還是DB BLOCK SIZE的倍數每個回滾段的minextents設為optimal參數的值保證回滾段縮小時不低於個extents
  ● 臨時表空間
  臨時表空間一般建在專用的表空間中每一個INSTANCE實例擁有各自的臨時表空間這樣使用臨時表空間時不會有PING設置臨時表空間的initial=next
  四系統硬盤的劃分及分配
  在多機集群環境下ORACLE並行服務器通過操作系統提供的DRD服務來共享同一個數據庫每一個INSTANCE對數據庫的數據文件的訪問都是通過該數據文件所在的DRD服務進行的
  考慮以下情況主機上有DRD服務該服務對應的數據文件有這時如果主機上的INSTANCE需要讀取數據文件通過DRD服務調度主機通過DRD服務訪問磁盤陣列上的數據文件把INSTANCE需要的數據讀到內存然後通過MEMORY IO把數據傳到主機的INSTANCE寫操作是讀操作的逆過程
  通過以上分析可知系統硬盤的劃分及分配的原則是盡量減少MEMORY IO
  五備份及恢復策略的考慮
  數據庫的備份與恢復在系統設計中占很重要的地位好的備份及恢復策略可以降低系統的運行風險減少因硬件故障而造成的損失
  ORACLE備份方法
  物理備份
  將數據庫的物理文件通過操作系統的命令或工具備份到備份介質上物理備份往往用於存儲介質故障時恢復數據庫系統的數據
  根據數據庫運行方式的不同可進行不同的物理備份
  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可根據磁盤空間情況定時將它們備份出去
  邏輯備份
  邏輯備份是通過ORACLE提供的Export工具將數據庫的結構定義及其數據卸出到特定格式的文件中並備份該文件
  在實際應用中邏輯備份與物理備份並用一般來說物理備份用於磁盤介質損壞或數據文件損壞邏輯備份用於數據庫中的某些對象被破壞或用戶誤操作
  備份策略的考慮主要在以下三個方面
  ● 存儲空間
  ● 對現行運行的系統的性能影響
  ● 恢復時間的影響
  如果需要節省空間和恢復時間就需要增加備份的頻率但是備份操作會明顯增加現行運行的系統的負載
  ORACLE的恢復方法
  根據不同的備份方法采用不同的恢復方法
  使用物理備份恢復
  ORACLE提供了三種恢復手段
  數據庫級的恢復
  表空間(Tablespace)的恢復
  數據文件的恢復
  數據庫級的恢復要求數據庫在關閉但Mount的狀態下進行表空間及數據文件的恢復可在數據庫運行的狀態下進行
  使用邏輯備份恢復
  當數據庫中的某一對象被損壞或用戶的誤操作使數據破壞(如誤刪表) 時可用邏輯備份恢復用邏輯備份只能恢復到備份時刻的狀態
  總之數據庫系統的設計是一門高深的學問本文是作者基於幾年管理超大型計費系統經驗和教訓參考ORACLE文檔的基礎上完成的由於本人才疏學淺難免有不當和錯誤之處敬請有識之士批評指正

From:http://tw.wingwit.com/Article/program/Oracle/201311/17219.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.