SQL Server使用者自定義的資料庫修復

iSQlServer發表於2009-11-04

  本文講解了使用者如何自定義的資料庫修復

  一、自動應用重做日誌

  1、 利用SET AUTORECOVERY命令自動應用重做日誌,完成對資料檔案的修復操作。

  SQL>STARTUP MOUNT:啟動例項並載入資料庫。

  SQL>SET AUTORECOVERY ON:啟用重做日誌自動應用功能。

  SQL>RECOVER DATABASE:恢復指定表空間、資料檔案或整個資料庫。

  SQL>ALTER DATABASE OPEN:完成恢復後開啟資料庫。

  2、 利用RECOVERY AUTOMATIC命令自動應用重做日誌,完成對資料檔案的修復操作。

  SQL>STARTUP MOUNT:啟動例項並載入資料庫。

  SQL>RECOVER AUTOMATIC DATABASE。

  SQL>ALTER DATABASE OPEN:完成恢復後開啟資料庫。

  二、 不歸檔模式下的資料庫介質恢復

  1、 將資料庫恢復到原來的位置上。

  SQL>SHUTDOWN IMMEDIATE 如果資料庫仍然處於開啟狀態,關閉資料庫;將資料庫檔案恢復到原來的位置上,利用最近一次建立的一致性完全備份對整個資料庫進行恢復,必須對所有的資料檔案與控制檔案進行修復。


  SQL>RECOVERDATABASEUNTILCANCEL
  SQL>CANCEL
  SQL>ALTERDATABASEOPENRESETLOGS;

  將當前重做日誌順序號設定為1。

  2、 將資料庫恢復到新的位置上。

  SQL>SHUTDOWN IMMEDIATE:如果資料庫仍然處於開啟狀態,關閉資料庫;將資料庫檔案恢復到新的位置上,利用最近一次建立的一致性完全備份對整個資料庫進行恢復,必須對所有的資料檔案與控制檔案進行修復;對初始化引數檔案中的CONTROL_FILES引數進行編輯,使它執行儲存在新位置中修復後的控制檔案。

  SQL>STARTUP MOUNT:如果修復後的資料庫檔案處於新的位置,必須利用ALTER DATABASE RENAME FILE語句對控制檔案進行修改,使它指向新位置中修復後的資料檔案。如:


  SQL>ALTERDATABASERENAMEFILE
  ‘I:ora9ioradatasystem01.dbf’TO‘K:oracleoradatasystem01.dbf’;
  SQL>RECOVERDATABASEUNTILCANCEL
  SQL>CANCEL
  SQL>ALTERDATABASEOPENRESETLOGS;

  將當前重做日誌順序號設定為1。


  三、 歸檔模式下的完全介質恢復

  1、 關閉狀態下的完全恢復。

  SQL>SHUTDOWN ABORT(如果資料庫處於開啟狀態,將它強行關閉):將資料檔案恢復到原來的位置上,如果介質故障無法排除,需要將資料檔案恢復到其它位置上;利用備份修復丟失或損壞的資料檔案,也可利用ALTER DATABASE CREATE DATAFILE 語句重建一個空白的資料檔案替換對視或損壞的資料檔案。

  SQL>STARTUP MOUNT:如果修復後的資料檔案不在原來的位置上,需要使用ALTER DATABASE RENAME FILE …TO …語句在控制檔案中更新它們的資訊。

  SQL>SELECTname,statusFROMV$DATAFILE;

  查詢資料檔案的名稱和狀態。

  SQL>ALTERDATABASEDATAFILE…ONLINE;

  將離線資料檔案改未聯機。

  SQL>RECOVERDATABASE

  或SQL>RECOVERTABLESPACEusers

  或SQL>RECOVERDATAFILE‘I:ora9ioradatausers0.dbf;

  SQL>ALTERDATABASEOPEN;

  2、 開啟狀態下的完全介質恢復。


  SQL>SELECTd.file#f#,d.name,d.status,
  h.statusfromv$datafiled,v$datafile_headerh
  WHEREd.file#=h.file#;

  查詢哪些資料檔案被自動設定為離線狀態;


  SQL>ALTERTABLESPACEusersOFFLINETEMPORARY;

  將包含損壞資料檔案的表空間設定為離線狀態;將資料檔案恢復到原來的位置上,如果介質故障無法排除,需要將資料檔案恢復到其它位置上;利用備份修復丟失或損壞的資料檔案;如果修復後的資料檔案不在原來的位置上,需要使用ALTER DATABASE RENAME FILE …TO …語句在控制檔案中更新它們的資訊。


  SQL>RECOVERTABLESPACEusersAUTOMATIC


  對包含損壞資料檔案的離線表空間進行恢復;

  SQL>ALTERTABLESPACEusersONLINE;

  四、 歸檔模式下的不完全介質恢復

  1、 不完全恢復的操作準則:

  在恢復前後都對資料庫進行完全備份。

  完成不完全介質恢復後,檢查資料庫是否已經恢復到了目標時刻下的狀態。

  完成不完全介質恢復後,將歸檔重做日誌檔案移動到其它位置儲存。

  2、 基於時間的不完全恢復:

  對資料庫進行一次完全備份,包括控制檔案和所有的聯機重做日誌檔案。

  SQL>SHUTDOWN ABORT:確定不完全介質恢復的目標時間,即你需要將資料庫恢復到哪個時刻下的狀態,然後確定需要使用哪些備份來對資料進行修復,資料庫修復所使用的控制檔案備份應當能夠正確反映出目標時刻下資料庫的物理結構,所使用的資料檔案備份應當是在目標時刻之前建立的,而且必須修復所有的資料檔案,如果沒有在目標時刻之前建立的資料檔案備份,需要重新建立空白的資料檔案。

  如果在資料庫中包含在目標時刻之後建立的資料檔案,不要對這個資料檔案進行修復,因為在完成不完全恢復後的資料庫中根本不應當存在這個資料檔案;將資料檔案恢復到原來的位置上,如果介質故障無法排除,則恢復到其它位置上;利用選定的備份檔案修復所有的控制檔案和資料檔案。

  SQL>STARTUP MOUNT 啟動例項並載入資料庫;如果修復後的資料檔案不在它們原來的位置上,需使用ALTER DATABASE RENAME FILE … TO …語句在控制檔案中更新它們的資訊。

  SQL>SELECTname,statusFROMV$DATAFILE;

  確定所有資料檔案都處於聯機

  SQL>ALTERDATABASEDATAFILE…ONLINE;

  將資料檔案恢復為聯機;

  SQL>RECOVERDATABASEUNTILTIME‘2004-02-01:12:30:30’

  如果控制檔案是利用備份修復的,必須在RECOVER名利中指定USING BACKUP CONTROLFILE子句;

  SQL>ALTERDATABASEOPENRESETLOGS;

  立即對資料庫進行一次完全備份。

  3、 基於撤銷的不完全恢復。

  SQL>RECOVER DATABASE UNTIL CANCEL:其它步驟同基於時間的不完全恢復。

  4、 基於SCN的不完全恢復。

  在進行基於SCN的不完全恢復時,oracle會在應用了所有具有小於等於指定SCN的事務的重做記錄之後終止恢復過程。

  RESETLOGS選項在如下三種情況下,必須使用RESETLOGS選項開啟資料庫:

  1、 在執行任何型別的不完全介質恢復之後;

  2、 在使用備份修復控制檔案後(在RECOVER命令中使用USING BACKUP CONTROLFILE子句);

  在沒有聯機重做日誌檔案備份的情況下對不歸檔資料庫進行完全恢復之後。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-618110/,如需轉載,請註明出處,否則將追究法律責任。

相關文章