iT邦幫忙

0

請問如何歸劃 RAID in Oracle database

Oracle的官方文件建議將 datafile , redo log file , archive log file 放在不同的 disk controller , 以加速磁碟的存取效能.

但我们的 infrastructure 的工程師告訴我 , 因為我们買了 RAID , 所以會將所有 disks 都放在 RAID control , 也就是用硬體來保護 data , 因此無法像Oracle的官方文件那樣規劃. 他目前是將 OS 用一個獨立的 RAID 來 control , 然後將所有 Oracle database file 用另一個獨立的 RAID 來 control , 這樣真的 ok 嗎 ?

請問大家是如何使用 RAID for Oracle database ?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
30
johnnywutw
iT邦新手 4 級 ‧ 2009-03-23 09:28:59
最佳解答

建議將redo log, archive log,datafile,temp tablespace datafile放在不同的raid group,oracle 原廠建議越多disk越好以分散disk loading,但就看你預算多寡囉,以上是小弟個人建議。

24
glennlin
iT邦研究生 4 級 ‧ 2009-03-23 18:24:09

如果說獨立的RAID是用不同的DISK做出來的話
那當然在規劃上就沒問題了

因為就符合原本的這句用意
"放在不同的 disk controller , 以加速磁碟的存取效能"
要注意的是RAID是那一種RAID,往往安全等級越高、效能就會變成正常

按照你們的例子來看
應該是把LOG都放置於OS的RAID當中
DATAFILE則是放置於獨立的RADID當中

18
ataru
iT邦研究生 1 級 ‧ 2009-03-24 11:40:49

建議你依照Oracle的要求作
至於RAID雖然只是一個,但還是可以分不同磁區來滿足Oracle的要求
反正它做出來的磁區是自己管理,跟OS又沒關係,無所謂吧?!

16
derlla
iT邦新手 5 級 ‧ 2009-03-25 10:58:13

首先應該仔細想一下為甚麼需要"加速磁碟的存取效能",
分散oracle files 在不同device,當然會增加IO,因為bandwidth增加,但是在成本(multi raid,disks)管理也會增加複雜度,如果不是有大量IO的DB,是不建議考慮

allenchu iT邦新手 5 級 ‧ 2009-03-25 11:16:24 檢舉

回覆 derlla 的問題 :

由於 Oracle 在 insert/update/delete record 前 , LGWR 都會先將修改前的 datablock 寫入 on-line redo log file 以備 rollback 或 instance
recovery , 然後才會由 DBWR 寫入 data file (不論有無 commit) , 並且在 log switch 時由 ARCn 寫入 archive log file 以備 media recovery.

所以將 On-line Redo Log File , Archive Log File , Data File 都放在一個同一個 RAID group , 會造成 disk contention , 萬一 RAID 死了 ,
也無法使用 on-line log file 和 archive log file 救回 , 只有倒帶一途.

因為 Oracle 的 database 復元能力很強 , 基本上就算沒有 RAID , 只要規劃的好 , data 都可以救回. 但也因為這個功能 , Oracle 需要在寫入 data file 前先寫入 on-libe redo log file 和 archive log file. 所以需把 disk 切開 , 否則會有 disk IO 問題.

註 : 我本身有 Oracle 9i OCA , 9i OCP , 10g OCP 的認證 , 這個問題和 Oracle db 的運作有關.

maven iT邦新手 5 級 ‧ 2009-03-25 23:27:51 檢舉

個人蠻贊同allenchu大大的看法!!
我的規劃方向 是Datafile放RAID
LOG 與 TEMP 各放伺服器內建的不同硬碟
我所持的理由是
1.理論上 Datafile file size 大,數量多,還要Sorting,所以I/O動作多,放在RAID
上,減少I/O等待的時間。
2.LOG獨立各放一顆硬碟,這個比較沒問題,但是TEMP檔I/O也是一個影響效率的大原因,如
果預算夠,我會放另一個RAID上。
3.我會Survy一下I/O的流量,例如 RAID Controller 到硬碟每一個環節,PCI-E介面
/Fiber Channel / SCSI /HDD Read/Write 的Transfort Rate/RAID
0/1/3/5/10/60 怎麼規劃的, 有了這些數據,就會知道瓶頸在哪裡,便可以驗證你的DB
的規劃方式,或提出改善方法!!
4.搞這麼大,當然備份又是另外一個課題!!
祝 allenchu大大成功!!

我要發表回答

立即登入回答