程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> [Oracle]數據庫系統緊急故障處理方法 (5)

[Oracle]數據庫系統緊急故障處理方法 (5)

編輯:Oracle數據庫基礎
恢復步驟:

  1. 將冷拷貝的datafiles(s) 和control file(s) 抄送回原始地點:

  $ cp /backup/good_one.dbf /orig_loc/bad_one.dbf

  $ cp /backup/control1.ctl /disk1/control1.ctl

  2. 以mount 選項啟動數據庫:

  $ svrmgrl

  svrmgrl> connect internal

  svrmgrl> startup mount
  
  3. 以舊的control file 來恢復數據庫:

  svrmgrl> recover database until cancel using backup controlfile;

  *** 介質恢復完成

  (須在應用完最後一個archive log 後cancel )

  4. Reset the logfiles (對啟動而言不可省略):

  svrmgrl> alter database open resetlogs;

  重作日志和控制文件同時丟失或損壞時:

  條件和假設:Control Files 全部丟失或損壞;Archivelog Mode; 有Control Files 的鏡像(冷)拷貝。
  
  恢復步驟:

  1. 如果數據庫尚未關閉,則首先把它關閉:

  $ svrmgrl

  svrmgrl> connect internal

  svrmgrl> shutdown abort

  svrmgrl>exit

  2. 以Control File 的鏡像(冷)拷貝覆蓋損壞了的Control File:

  $ cp /backup/control1.ctl /disk1/control1.ctl

  3. 啟動數據庫然而並不打開:

  $ svrmgrl

  svrmgrl> connect internal

  svrmgrl> startup mount

  4. Drop 壞掉的redo log (排除硬件故障):

  svrmgrl> alter database drop logfile group 2;

  5. 重新創建redo log:

  svrmgrl> alter database add logfile group 2 '/orig_loc/log2.dbf' size 10M;
  
  6. 以舊的control file 來恢復數據庫:
  
  svrmgrl> recover database until cancel using backup controlfile;

  (必須馬上cancel )

  7. Reset the logfiles (對啟動而言不可省略):

  svrmgrl> alter database open resetlogs;

  8. 關閉數據庫並做一次全庫冷備份

  只發生歸檔重作日志丟失或損壞時:

  根據不同環境和情況,選擇下述手段之一:

  a. 馬上backup 全部datafiles (如果系統采用一般熱備份或RMAN 熱備份)

  b. 馬上正常關閉數據庫並進行冷備份(如果系統采用冷備份)

  c. 冒險前進!不做備份而讓數據庫接著跑,直等到下一個備份周期再做備份。這是在賭數據庫在下一個備份周期到來之前不會有需要恢復的錯誤發生。

  注意:冒險前進的選擇:如果發生錯誤而需要數據庫恢復,則最多只能恢復到出問題archive log 之前的操作現場。從另一個角度講,archive log(s) 出現問題時,數據庫若不需要恢復則其本身並沒有任何問題。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved