昨天是我碰過最精采刺激的一天,咱公司的 Oracle DB Machine 竟然無預警的就掛點了。所有的公司運作當場停擺。雖然最後是有經無險的渡過,但是我相信這是冥冥中給我的提醒,要我對可能發生的問題及早準備。
昨天下午 Oracle 一罷工之時,我二話不說立刻飛車衝到機房去。本來僅僅以為在 console 前去操作一下就可以救回來了,那知問題可真是大了。它在 filesystem check 時便過不了了,直接要我輸入 root 密碼切入到 Repair filesystem 的 mode 下去,因為看到他寫著 /dev/sda3 發生問題,所以我只好下 fsck /dev/sda3 那知它回吐給我 fsck.ext3 for device /dev/sda3 exited with signal 11 這樣的訊息。
接著下 e2fsck /dev/sda3 ,回給我另一個錯誤訊息 : Segmentation fault。這時我已有點擔心了,我擔心會是 Hard disk 毀損,這最慘的情形。且當我硬要用 mount 測試一下時, 他回給我 wrong fs type, bad option ,bad superblock on /dev/sda3 ! 看到這裏,我心中其實有點明瞭了,硬體應該是掛了,只是不知是硬碟還是 其他周邊設備出問題。
於是我先回到公司去把安裝光蝶帶到機房去,改用第一片胱碟開機,再去 fsck 一下,狀況依舊,不過他就會問我要不要去修復,我再狀況未明下不敢冒然回答要。但是我仔細看一下他 mount 在 /mnt/sysimage 下的原 filesystem ,檢查半天後,發現絕大多數的東西都還在,壞掉的 filesystem 是 /var 這重要的目錄,難怪 linux 會起不來。
既然所有東西都還在,我臨時起了一個大膽的想法。我有另一台機器是之前學著安裝 oracle 所裝的,上面跑 另外的 ap,不過並不吃重。所以我想嘗試將原 oracle db 的所有檔案 copy 下來,在另一台機器上復原。反正若不成的話,大不了在回公司拿備份的資料來倒進去。
不過擺在眼前第一個問題是,這台在 linux rescue 下的機器網路功能一直起不來,資料要傳過去是個大問題。所有的 datafile、control file 、redolog file‧‧‧等經過 tar -czvf 後也還有 1G 左右,嘿嘿,剛好我身邊的 usb 隨身碟還有 1.5G 的空間,於是用 fdisk -l 看一下隨身碟是在 /dev/sdd1 這怪設備路徑下。
先mkdir /aaa 這臨時的目錄,然後 mount /dev/sdd1 /aaa ,再把所有壓起來的檔案通通 cp 到 /aaa 下去。不過這 1G 多的檔案足足 copy 了近四十分鐘,看來我要去買個好一點的 usb 隨身碟了。
準備好以後,再到另一台機器上,同樣的把 隨身碟 mount 上去,在解壓縮後,再一一的去 chown oracle:oinstall *,然猴啟動 oracle , 哇,居然就成功了!真是太美妙了!
不過我得在作好更多的萬全準備,不是美次都能如此的幸運的!
沒有留言:
張貼留言