明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

[Oracle]數(shù)據(jù)庫系統(tǒng)緊急故障處理方法 (2)

[摘要]6. 用適當(dāng)?shù)姆椒ㄟM(jìn)行數(shù)據(jù)庫全備份。   重做日志文件損壞:   數(shù)據(jù)庫的所有增、刪、改都會(huì)記錄入重做日志。如果當(dāng)前激活的重做日志文件損壞,會(huì)導(dǎo)致數(shù)據(jù)庫異常關(guān)閉。非激活的重做日志最終也會(huì)因?yàn)槿罩厩袚Q變?yōu)榧せ畹闹刈鋈罩,所以損壞的非激活的重做日志最終也會(huì)導(dǎo)致數(shù)據(jù)庫的異常終止。在ipas/mSwitc...
6. 用適當(dāng)?shù)姆椒ㄟM(jìn)行數(shù)據(jù)庫全備份。

  重做日志文件損壞:

  數(shù)據(jù)庫的所有增、刪、改都會(huì)記錄入重做日志。如果當(dāng)前激活的重做日志文件損壞,會(huì)導(dǎo)致數(shù)據(jù)庫異常關(guān)閉。非激活的重做日志最終也會(huì)因?yàn)槿罩厩袚Q變?yōu)榧せ畹闹刈鋈罩,所以損壞的非激活的重做日志最終也會(huì)導(dǎo)致數(shù)據(jù)庫的異常終止。在ipas/mSwitch中每組重做日志只有一個(gè)成員,所以在下面的分析中只考慮重做日志組損壞的情況,而不考慮單個(gè)重做日志成員損壞的情況。

  確定損壞的重做日志的位置及其狀態(tài):

  1. 如果數(shù)據(jù)庫處于可用狀態(tài):

  select * from v$logfile;

  svrmgrl>select * from v$log;

  2. 如果數(shù)據(jù)庫處于已經(jīng)異常終止:

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

  其中,logfile的狀態(tài)為INVALID表示這組日志文件出現(xiàn)已經(jīng)損壞;log狀態(tài)為Inactive:表示重做日志文件處于非激活狀態(tài);Active: 表示重做日志文件處于激活狀態(tài);Current:表示是重做日志為當(dāng)前正在使用的日志文件。

  損壞的日志文件處于非激活狀態(tài):

  1. 刪除相應(yīng)的日志組:

  svrmgrl>alter database drop logfile group group_number;

  2. 重新創(chuàng)建相應(yīng)的日志組:

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

  損壞的日志文件處于激活狀態(tài)且為非當(dāng)前日志:

  1. 清除相應(yīng)的日志組:

  svrmgrl>alter database clear unarchived logfile group group_number;

  損壞的日志文件為當(dāng)前活動(dòng)日志文件:

  用命令清除相應(yīng)的日志組:

  svrmgrl>alter database clear unarchived logfile group group_number;

  如果清除失敗,則只能做基于時(shí)間點(diǎn)的不完全恢復(fù)。

  打開數(shù)據(jù)庫并且用適當(dāng)?shù)姆椒ㄟM(jìn)行數(shù)據(jù)庫全備份:

  svrmgrl>alter database open;

  部分?jǐn)?shù)據(jù)文件損壞:

  若損壞的數(shù)據(jù)文件屬于非system表空間,則數(shù)據(jù)庫仍然可以處于打開狀態(tài)可以進(jìn)行操作,只是損壞的數(shù)據(jù)文件不能訪問。這時(shí)在數(shù)據(jù)庫打開狀態(tài)下可以單獨(dú)對(duì)損壞的數(shù)據(jù)文件進(jìn)行恢復(fù)。若是system表空間的數(shù)據(jù)文件損壞則數(shù)據(jù)庫系統(tǒng)會(huì)異常終止。這時(shí)數(shù)據(jù)庫只能以Mount方式打開,然后再對(duì)數(shù)據(jù)文件進(jìn)行恢復(fù)。可以通過查看數(shù)據(jù)庫日志文件來判斷當(dāng)前損壞的數(shù)據(jù)文件到底是否屬于system表空間。

  非system表空間的數(shù)據(jù)文件損壞

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

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

  2. 將損壞的數(shù)據(jù)文件處于offline狀態(tài):

  svrmgrl>alter database datafile ‘datafile_name’ offline;

  3. 從相應(yīng)的備份結(jié)果集中恢復(fù)關(guān)于這個(gè)數(shù)據(jù)文件的最近的備份。對(duì)于沒有采用帶庫備份的點(diǎn)可以直接從磁帶上恢復(fù);對(duì)于用帶庫備份的點(diǎn)用相應(yīng)的rman腳本來恢復(fù)。

  4. 恢復(fù)數(shù)據(jù)文件:

  svrmgrl>alter database recover datafile ‘file_name’;

  5. 使數(shù)據(jù)庫文件online:

  svrmgrl>alter database datafile ‘datafile_name’ online;

  6. 用適當(dāng)?shù)姆椒ㄟM(jìn)行數(shù)據(jù)庫全備份。