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

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

編輯:Oracle數據庫基礎
6. 用適當的方法進行數據庫全備份。

  重做日志文件損壞:

  數據庫的所有增、刪、改都會記錄入重做日志。如果當前激活的重做日志文件損壞,會導致數據庫異常關閉。非激活的重做日志最終也會因為日志切換變為激活的重做日志,所以損壞的非激活的重做日志最終也會導致數據庫的異常終止。在ipas/mSwitch中每組重做日志只有一個成員,所以在下面的分析中只考慮重做日志組損壞的情況,而不考慮單個重做日志成員損壞的情況。

  確定損壞的重做日志的位置及其狀態:

  1. 如果數據庫處於可用狀態:

  select * from v$logfile;

  svrmgrl>select * from v$log;

  2. 如果數據庫處於已經異常終止:

  svrmlgr>startup mount;
  svrmgrl>select * from v$logfile;
  svrmgrl>select * from v$log;

  其中,logfile的狀態為INVALID表示這組日志文件出現已經損壞;log狀態為Inactive:表示重做日志文件處於非激活狀態;Active: 表示重做日志文件處於激活狀態;Current:表示是重做日志為當前正在使用的日志文件。

  損壞的日志文件處於非激活狀態:

  1. 刪除相應的日志組:

  svrmgrl>alter database drop logfile group group_number;

  2. 重新創建相應的日志組:

  svrmgrl>alter database add log file group group_number (’log_file_descritpion’,…) size log_file_size;

  損壞的日志文件處於激活狀態且為非當前日志:

  1. 清除相應的日志組:

  svrmgrl>alter database clear unarchived logfile group group_number;

  損壞的日志文件為當前活動日志文件:

  用命令清除相應的日志組:

  svrmgrl>alter database clear unarchived logfile group group_number;

  如果清除失敗,則只能做基於時間點的不完全恢復。

  打開數據庫並且用適當的方法進行數據庫全備份:

  svrmgrl>alter database open;

  部分數據文件損壞:

  若損壞的數據文件屬於非system表空間,則數據庫仍然可以處於打開狀態可以進行操作,只是損壞的數據文件不能訪問。這時在數據庫打開狀態下可以單獨對損壞的數據文件進行恢復。若是system表空間的數據文件損壞則數據庫系統會異常終止。這時數據庫只能以Mount方式打開,然後再對數據文件進行恢復。可以通過查看數據庫日志文件來判斷當前損壞的數據文件到底是否屬於system表空間。

  非system表空間的數據文件損壞

  1. 確定損壞的文件名字:

  svrmgrl>select name from v$datafile where status=’INVALID’;

  2. 將損壞的數據文件處於offline狀態:

  svrmgrl>alter database datafile ‘datafile_name’ offline;

  3. 從相應的備份結果集中恢復關於這個數據文件的最近的備份。對於沒有采用帶庫備份的點可以直接從磁帶上恢復;對於用帶庫備份的點用相應的rman腳本來恢復。

  4. 恢復數據文件:

  svrmgrl>alter database recover datafile ‘file_name’;

  5. 使數據庫文件online:

  svrmgrl>alter database datafile ‘datafile_name’ online;

  6. 用適當的方法進行數據庫全備份。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved