SQL Server 用戶自定義的數(shù)據(jù)庫修復(fù)
本文講解了用戶如何自定義的數(shù)據(jù)庫修復(fù)。
一、自動應(yīng)用重做日志
1、 利用SET AUTORECOVERY命令自動應(yīng)用重做日志,完成對數(shù)據(jù)文件的修復(fù)操作。
SQL>STARTUP MOUNT:啟動實例并加載數(shù)據(jù)庫。
SQL>SET AUTORECOVERY ON:啟用重做日志自動應(yīng)用功能。
SQL>RECOVER DATABASE:恢復(fù)指定表空間、數(shù)據(jù)文件或整個數(shù)據(jù)庫。
SQL>ALTER DATABASE OPEN:完成恢復(fù)后打開數(shù)據(jù)庫。
2、 利用RECOVERY AUTOMATIC命令自動應(yīng)用重做日志,完成對數(shù)據(jù)文件的修復(fù)操作。
SQL>STARTUP MOUNT:啟動實例并加載數(shù)據(jù)庫。
SQL>RECOVER AUTOMATIC DATABASE。
SQL>ALTER DATABASE OPEN:完成恢復(fù)后打開數(shù)據(jù)庫。
二、 不歸檔模式下的數(shù)據(jù)庫介質(zhì)恢復(fù)
1、 將數(shù)據(jù)庫恢復(fù)到原來的位置上。
SQL>SHUTDOWN IMMEDIATE 如果數(shù)據(jù)庫仍然處于打開狀態(tài),關(guān)閉數(shù)據(jù)庫;將數(shù)據(jù)庫文件恢復(fù)到原來的位置上,利用最近一次建立的一致性完全備份對整個數(shù)據(jù)庫進行恢復(fù),必須對所有的數(shù)據(jù)文件與控制文件進行修復(fù)。
SQL>RECOVER DATABASE UNTIL CANCEL
SQL>CANCEL
SQL>ALTER DATABASE OPEN RESETLOGS;
將當前重做日志順序號設(shè)置為1。
2、 將數(shù)據(jù)庫恢復(fù)到新的位置上。
SQL>SHUTDOWN IMMEDIATE:如果數(shù)據(jù)庫仍然處于打開狀態(tài),關(guān)閉數(shù)據(jù)庫;將數(shù)據(jù)庫文件恢復(fù)到新的位置上,利用最近一次建立的一致性完全備份對整個數(shù)據(jù)庫進行恢復(fù),必須對所有的數(shù)據(jù)文件與控制文件進行修復(fù);對初始化參數(shù)文件中的CONTROL_FILES參數(shù)進行編輯,使它執(zhí)行保存在新位置中修復(fù)后的控制文件。
SQL>STARTUP MOUNT:如果修復(fù)后的數(shù)據(jù)庫文件處于新的位置,必須利用ALTER DATABASE RENAME FILE語句對控制文件進行修改,使它指向新位置中修復(fù)后的數(shù)據(jù)文件。如:
SQL>ALTER DATABASE RENAME FILE
‘I: ora9ioradatasystem01.dbf’ TO ‘K: oracleoradatasystem01.dbf’;
SQL>RECOVER DATABASE UNTIL CANCEL
SQL>CANCEL
SQL>ALTER DATABASE OPEN RESETLOGS;
將當前重做日志順序號設(shè)置為1。
三、 歸檔模式下的完全介質(zhì)恢復(fù)
1、 關(guān)閉狀態(tài)下的完全恢復(fù)。
SQL>SHUTDOWN ABORT(如果數(shù)據(jù)庫處于打開狀態(tài),將它強行關(guān)閉):將數(shù)據(jù)文件恢復(fù)到原來的位置上,如果介質(zhì)故障無法排除,需要將數(shù)據(jù)文件恢復(fù)到其它位置上;利用備份修復(fù)丟失或損壞的數(shù)據(jù)文件,也可利用ALTER DATABASE CREATE DATAFILE 語句重建一個空白的數(shù)據(jù)文件替換對視或損壞的數(shù)據(jù)文件。
SQL>STARTUP MOUNT:如果修復(fù)后的數(shù)據(jù)文件不在原來的位置上,需要使用ALTER DATABASE RENAME FILE …TO …語句在控制文件中更新它們的信息。
SQL>SELECT name,status FROM V$DATAFILE;
查詢數(shù)據(jù)文件的名稱和狀態(tài)。
SQL>ALTER DATABASE DATAFILE … ONLINE;
將脫機數(shù)據(jù)文件改未聯(lián)機。
SQL>RECOVER DATABASE
或 SQL>RECOVER TABLESPACE users
或 SQL>RECOVER DATAFILE ‘I: ora9ioradatausers0.dbf;
SQL>ALTER DATABASE OPEN;
2、 打開狀態(tài)下的完全介質(zhì)恢復(fù)。
SQL>SELECT d.file# f#,d.name,d.status,
h.status from v$datafile d,v$datafile_header h
WHERE d.file#=h.file#;
查詢哪些數(shù)據(jù)文件被自動設(shè)置為脫機狀態(tài);
SQL>ALTER TABLESPACE users OFFLINE TEMPORARY;
將包含損壞數(shù)據(jù)文件的表空間設(shè)置為脫機狀態(tài);將數(shù)據(jù)文件恢復(fù)到原來的位置上,如果介質(zhì)故障無法排除,需要將數(shù)據(jù)文件恢復(fù)到其它位置上;利用備份修復(fù)丟失或損壞的數(shù)據(jù)文件;如果修復(fù)后的數(shù)據(jù)文件不在原來的位置上,需要使用ALTER DATABASE RENAME FILE …TO …語句在控制文件中更新它們的信息。
SQL>RECOVER TABLESPACE users AUTOMATIC
對包含損壞數(shù)據(jù)文件的脫機表空間進行恢復(fù);
SQL>ALTER TABLESPACE users ONLINE;
四、 歸檔模式下的不完全介質(zhì)恢復(fù)
1、 不完全恢復(fù)的操作準則:
在恢復(fù)前后都對數(shù)據(jù)庫進行完全備份。
完成不完全介質(zhì)恢復(fù)后,檢查數(shù)據(jù)庫是否已經(jīng)恢復(fù)到了目標時刻下的狀態(tài)。
完成不完全介質(zhì)恢復(fù)后,將歸檔重做日志文件移動到其它位置保存。
2、 基于時間的不完全恢復(fù):
對數(shù)據(jù)庫進行一次完全備份,包括控制文件和所有的聯(lián)機重做日志文件。
SQL>SHUTDOWN ABORT:確定不完全介質(zhì)恢復(fù)的目標時間,即你需要將數(shù)據(jù)庫恢復(fù)到哪個時刻下的狀態(tài),然后確定需要使用哪些備份來對數(shù)據(jù)進行修復(fù),數(shù)據(jù)庫修復(fù)所使用的控制文件備份應(yīng)當能夠正確反映出目標時刻下數(shù)據(jù)庫的物理結(jié)構(gòu),所使用的數(shù)據(jù)文件備份應(yīng)當是在目標時刻之前創(chuàng)建的,而且必須修復(fù)所有的數(shù)據(jù)文件,如果沒有在目標時刻之前建立的數(shù)據(jù)文件備份,需要重新創(chuàng)建空白的數(shù)據(jù)文件。
如果在數(shù)據(jù)庫中包含在目標時刻之后建立的數(shù)據(jù)文件,不要對這個數(shù)據(jù)文件進行修復(fù),因為在完成不完全恢復(fù)后的數(shù)據(jù)庫中根本不應(yīng)當存在這個數(shù)據(jù)文件;將數(shù)據(jù)文件恢復(fù)到原來的位置上,如果介質(zhì)故障無法排除,則恢復(fù)到其它位置上;利用選定的備份文件修復(fù)所有的控制文件和數(shù)據(jù)文件。
SQL>STARTUP MOUNT 啟動實例并加載數(shù)據(jù)庫;如果修復(fù)后的數(shù)據(jù)文件不在它們原來的位置上,需使用ALTER DATABASE RENAME FILE … TO …語句在控制文件中更新它們的信息。
SQL>SELECT name,status FROM V$DATAFILE;
確定所有數(shù)據(jù)文件都處于聯(lián)機
SQL>ALTER DATABASE DATAFILE … ONLINE;
將數(shù)據(jù)文件恢復(fù)為聯(lián)機;
SQL>RECOVER DATABASE UNTIL TIME ‘2004-02-01:12:30:30’
如果控制文件是利用備份修復(fù)的,
必須在RECOVER名利中指定USING BACKUP CONTROLFILE子句;
SQL>ALTER DATABASE OPEN RESETLOGS;
立即對數(shù)據(jù)庫進行一次完全備份。
3、 基于撤銷的不完全恢復(fù)。
SQL>RECOVER DATABASE UNTIL CANCEL:其它步驟同基于時間的不完全恢復(fù)。
4、 基于SCN的不完全恢復(fù)。
在進行基于SCN的不完全恢復(fù)時,oracle會在應(yīng)用了所有具有小于等于指定SCN的事務(wù)的重做記錄之后終止恢復(fù)過程。
RESETLOGS選項在如下三種情況下,必須使用RESETLOGS選項打開數(shù)據(jù)庫:
1、 在執(zhí)行任何類型的不完全介質(zhì)恢復(fù)之后;
2、 在使用備份修復(fù)控制文件后(在RECOVER命令中使用USING BACKUP CONTROLFILE子句);
在沒有聯(lián)機重做日志文件備份的情況下對不歸檔數(shù)據(jù)庫進行完全恢復(fù)之后。
關(guān)鍵字:SQL Server、數(shù)據(jù)庫
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解