「iThome 第七屆鐵人賽 30」系統備份與還原(II)

熱門文章 (Popular Post)

Posted by : Duran Hsieh 1月 07, 2015


6.Media 錯誤:

資料庫組態檔案移失

oracle定義media 錯誤為移失一個或多個Data files(data、control、或redo log)。

恢復這類型的錯誤,DBA必須回存或恢復這些移失的檔案,確資料可以從此錯誤類型中恢復。

下列我們會簡單說明如何恢復:

設定恢復

為了設定資料庫最大的恢復限度,我們可以:

1.排定日常備份

多數的Media錯誤都需要回存受損的檔案,這時候日常備份就能派上用場。

2.多個Control file

恢復一個control file或許不是困的事情,恢復多個control file是一個挑戰,確保你的control至少有三個複本。

3.多個Redo log groups

當恢復Media 錯誤造成的錯誤,Redo log 用來roll forward data file到最後一次commited transaction的狀態。如果你的Redo log group只依賴一個redo log file,意味著你的資料似乎已經遺失了。確保至少每個redo log group只少有兩個複本。如果可以,在不同的磁碟機上。

4.維護archived copyies if redo logs

如果control file從備份資料還原,資料庫系統會從Control file中確認scn,驗證redo information。一般預設,當資料庫已經寫入data files後,資料庫會複寫redo log information。oracle 可以保存完整的redo logs複本,只需要設定ARCHIVELOG MODE即可。

下面介紹各種data files如何維護:

control files

control file是一個小型二位元的資料,描述整個資料庫的結構。當資料被開啟(open)或銜接(mount)階段的時候會寫入control file。若缺少這個檔案,資料庫則不能銜接或恢復。

如果的你的資料庫是藉由database configuation assistant(DBCA),且使用oracle managed files(OMF),你會有兩個control file。如果沒有使用OMF,你會有三個control file。

如果你遺失了其中一個control file,會造成instance錯誤(意思是所有的control file都要同時存在)。最簡單的方法就是複製其他的control file。如果遺失全部的control file看似乎很難恢復,但不致於是個災難。

建議維護方式:

建議至少兩個複本(oracle建議三個)

每個複本都在不同的磁碟機

至少一個copy在另一個分割磁碟控制

redo log files

若你遺失了全部的redo log group是一個嚴重的Media 錯誤。恢復方法會在後續在說明。

如果在多個檔案的log group遺失其中一個檔案,對資料庫其實影響不大。

多個檔案的模式下,對於資料庫的校能是很重的負擔,盡可能將redo log放在速度較快的磁碟機且擁有快速的controller。

也盡可能不要將其他資料庫檔案放在同一個磁碟中作為你的redo log file。因為同時間只有一個group會被寫入,所以在相同磁碟機中的,有數的group的file其實不會有任何影響。

建議維護方式:

每個Redo log group至少兩個檔案(複本)

每個檔案至少有一個放在其他分割的硬碟

每個檔案至少有一個放在其他分割硬碟控制

archive log files

製作archive log file步驟:

1.命名特定archive log file

2.選定一個或多個archive log file位置

3.轉換資料庫模式為archive log mode

(如果你有設定flash recovery area,第1、2步驟不是必要的)

archivelog mode

啟動archive log mode模式如下:

1.勾選archive log mode check box

2.選擇apply(只能在MOUNT階段設定)

3.系統會要求你重新啟動資料庫,選擇yes

4.備份你的資料庫

在archive log mode情況下,資料庫可以存取全範圍的備份與環原選項。

指令:(需要有SYSDBA權限)

ALTER DATABASE ARCHIVELOG

在NOARCHIVELOG模式下,資料庫只能恢復到你上次備份的時間點;在ARCHIVELOG模式下,可以恢復到最後一次COMMIT的時間點,目前多數的資料庫都運作在archive log mode下。

--

感言區:

感謝allen,鼓勵我們參加鐵人賽,雖然過程辛苦,但收穫很多。

也感謝小賴、dorthy、vita一起參與,一起參與鐵人賽的感覺很不錯。

(vita加油阿XD~ 你還沒到終點XD)

這是我第一次參加鐵人賽,沒有完整的準備,在前8篇寫完後就已經沒有任何庫存。

參加鐵人賽相當意思,每天下班後趕12點前決定題材、實際操作與尋找相關資料,每一天都過的很忙碌,

尤其是工作隔天要看進度,今天還沒寫鐵人的時候,真的.....OOXX。

真的開始寫部落格才發現自己文筆其實不好,介紹的方式很生硬,寫到最後根本變成系統操作手冊與翻譯功能,所以到鐵人賽最後一天之前,我會在補充或修改詞句,讓內容更通順。

工作忙碌到最後甚至有兩篇沒有寫到自己想要的完整,也徹底了解到作家被催稿的感受(?)。

原本已經要準備oracle 10g的考試(SQL Expert、OCA、OCP)的考試,藉由這次鐵人賽複習相關內容,

沒想到30天寫完後,還有剩下1/3還沒練習。

也感謝看過我文章的任何朋友,讓你們傷眼睛了,希望有些文章能幫助到各位,我也會更精進,並繼續分享。

這系列的文章我會在繼續修改、更新,並同步轉貼到我的部落格 http://dog0416.blogspot.tw/ (版面施工中)。

明年的鐵人賽我應該還會參加,也希望大家能多指教。

謝謝!


Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Duran Hsieh @ Matsurigoto - Date A Live - Powered by Blogger - Designed by Johanes Djogan -