監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設(shè)計管理系統(tǒng) | 簽約案例 | 購買價格 | 在線試用 | 手機(jī)APP | 產(chǎn)品資料
X 關(guān)閉

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

申請免費(fèi)試用、咨詢電話:400-8352-114

文章來源:泛普軟件 新增archives 時的狀況:

 

條件和假設(shè):自上次鏡像備份以來已經(jīng)生成新的archive log(s); Archivelog Mode; 有同步的datafile(s) 和control file(s) 的鏡像(冷)拷貝;archive log(s) 可用。

 

恢復(fù)步驟:

 

1. 如果數(shù)據(jù)庫尚未關(guān)閉,則首先把它關(guān)閉:

 

$ svrmgrl

svrmgrl> connect internal

 

svrmgrl> shutdown abort

 

2. 將備份文件抄送回原始地點(diǎn):

 

所有Database Files

 

所有Control Files(沒有archive(s) 或redo(s) 的情況下,control files 的更新無任何意義)

 

所有On-Line Redo Logs (Not archives)

 

init.ora file(選項(xiàng))

 

3. 啟動數(shù)據(jù)庫:

 

$ svrmgrl

 

svrmgrl> connect internal

 

svrmgrl> startup

 

數(shù)據(jù)文件, 重作日志和控制文件同時丟失或損壞:

 

條件和假設(shè):Archivelog Mode; 有同步的所有所失文件的鏡像(冷)拷貝;archive log(s) 可用

 

恢復(fù)步驟(必須采用不完全恢復(fù)的手法):

 

1. 如果數(shù)據(jù)庫尚未關(guān)閉,則首先把它關(guān)閉:

 

$ svrmgrl

 

svrmgrl> connect internal

 

svrmgrl> shutdown abort

 

2. 將備份文件抄送回原始地點(diǎn):

 

所有Database Files

 

所有Control Files

 

所有On-Line Redo Logs(Not archives)

 

init.ora file(選項(xiàng))

 

3. 啟動數(shù)據(jù)庫然而并不打開:

 

svrmgrl>startup mount

 

4. 做不完全數(shù)據(jù)庫恢復(fù),應(yīng)用所有從上次鏡像(冷)備份始積累起來的archives:

 

svrmgrl> recover database until cancel using backup controlfile;

 

......

......

 

cancel

 

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

 

svrmgrl> alter database open resetlogs;

6. 關(guān)閉數(shù)據(jù)庫并做一次全庫冷備份。

 

數(shù)據(jù)文件和控制文件同時丟失或損壞:

 

條件和假設(shè):Archivelog Mode; 有同步的datafile(s) 和control file(s) 的冷拷貝;archive log(s) 可用

 

恢復(fù)步驟:

 

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

 

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

 

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

 

2. 以mount 選項(xiàng)啟動數(shù)據(jù)庫:

 

$ svrmgrl

 

svrmgrl> connect internal

 

svrmgrl> startup mount

 

3. 以舊的control file 來恢復(fù)數(shù)據(jù)庫:

 

svrmgrl> recover database until cancel using backup controlfile;

 

*** 介質(zhì)恢復(fù)完成

 

(須在應(yīng)用完最后一個archive log 后cancel )

 

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

 

svrmgrl> alter database open resetlogs;

 

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

 

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

 

恢復(fù)步驟:

 

1. 如果數(shù)據(jù)庫尚未關(guān)閉,則首先把它關(guān)閉:

 

$ svrmgrl

 

svrmgrl> connect internal

 

svrmgrl> shutdown abort

 

svrmgrl>exit

 

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

 

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

 

3. 啟動數(shù)據(jù)庫然而并不打開:

 

$ svrmgrl

 

svrmgrl> connect internal

 

svrmgrl> startup mount

 

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

 

svrmgrl> alter database drop logfile group 2;

 

5. 重新創(chuàng)建redo log:

 

svrmgrl> alter database add logfile group 2 '/orig_loc/log2.dbf' size 10M;

 

6. 以舊的control file 來恢復(fù)數(shù)據(jù)庫:

 

svrmgrl> recover database until cancel using backup controlfile;

 

(必須馬上cancel )

 

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

 

svrmgrl> alter database open resetlogs;

 

8. 關(guān)閉數(shù)據(jù)庫并做一次全庫冷備份

 

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

 

根據(jù)不同環(huán)境和情況,選擇下述手段之一:

 

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

 

b. 馬上正常關(guān)閉數(shù)據(jù)庫并進(jìn)行冷備份(如果系統(tǒng)采用冷備份)

 

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

 

注意:冒險前進(jìn)的選擇:如果發(fā)生錯誤而需要數(shù)據(jù)庫恢復(fù),則最多只能恢復(fù)到出問題archive log 之前的操作現(xiàn)場。從另一個角度講,archive log(s) 出現(xiàn)問題時,數(shù)據(jù)庫若不需要恢復(fù)則其本身并沒有任何問題。

 

Oracle邏輯結(jié)構(gòu)故障的處理方法:

 

邏輯結(jié)構(gòu)的故障一般指由于人為的誤操作而導(dǎo)致重要數(shù)據(jù)丟失的情況。在這種情況下數(shù)據(jù)庫物理結(jié)構(gòu)是完整的也是一致的。對于這種情況采取對原來數(shù)據(jù)庫的全恢復(fù)是不合適的,我們一般采用三種方法來恢復(fù)用戶數(shù)據(jù)。

采用exp/imp工具來恢復(fù)用戶數(shù)據(jù):

 

如果丟失的數(shù)據(jù)存在一個以前用exp命令的備份,則可以才用這種方式。

 

1. 在數(shù)據(jù)庫內(nèi)創(chuàng)建一個臨時用戶:

 

svrmgrl>create user test_user identified by test;

 

svrmgrl>grant connect,resource to test_user;

 

2. 從以前exp命令備份的文件中把丟失數(shù)據(jù)的表按照用戶方式倒入測試用戶:

 

$imp system/manager file=export_file_name tables=(lost_data_table_name…) fromuser=lost_data_table_owner touser=test_user constraint=n;

 

3. 用相應(yīng)的DML語句將丟失的數(shù)據(jù)從測試用戶恢復(fù)到原用戶。

 

4. 將測試用戶刪除:

 

svrmgrl>drop user test_user cascede;

 

采用logminer來恢復(fù)用戶數(shù)據(jù):

 

Logminer是oracle提供的一個日志分析工具。它可以根據(jù)數(shù)據(jù)字典對在線聯(lián)機(jī)日志、歸檔日志進(jìn)行分析,從而可以獲得數(shù)據(jù)庫的各種DML操作的歷史記錄以及各種DML操作的回退信息。根據(jù)這些用戶就可以將由于誤操作而丟失的數(shù)據(jù)重新加入數(shù)據(jù)庫內(nèi)。

 

1. 確認(rèn)數(shù)據(jù)庫的utl_file_dir參數(shù)已經(jīng)設(shè)置,如果沒有則需要把這個參數(shù)加入oracle的初始化參數(shù)文件,然后重新啟動數(shù)據(jù)庫。下面例子中假設(shè)utl_file_dir=’/opt/oracle/db01’;

 

2. 創(chuàng)建logminer所需要的數(shù)據(jù)字典信息,假設(shè)生成的數(shù)據(jù)字典文本文件為dict.ora:

 

svrmgrl>execute dbms_logmnr_d.build(dictionary_filename=>'dict.ora', dictionary_location=>'/opt/oracle/db01’);

 

3. 確定所需要分析的日志或者歸檔日志的范圍。這可以根據(jù)用戶誤操作的時間來確定大概的日志范圍。假設(shè)用戶誤操作時可能的日志文件為/opt/oracle/db02/oradata/ORCL/redo3.log和歸檔日志’/opt/oracle/arch/orcl/orclarc_1_113.ora’。

 

4. 創(chuàng)建要分析的日志文件列表,按日志文件的先后順序依次加入:

 

svrmgrl>execute dbms_logmnr.add_logfile(logfilename=>’/opt/oracle/arch/orcl/orclarc_1_113.ora’,options=>dbms_logmnr.NEW);

 

svrmgrl> execute dbms_logmnr.add_logfile(logfilename=>’ /opt/oracle/db02/oradata/ORCL/redo3.log’,options=>dbms_logmnr.ADDFILE);

 

5. 開始日志分析,假設(shè)需要分析的時間在’2003-06-28 12:00:00’和’2003-06-28 13:00:00’之間:

 

svrmgrl>execute dbms_logmnr.start_logmnr(dictfilename=>’ /opt/oracle/db01/dict.ora’,starttime=>to_date(’ 2003-06-28 12:00:00’,’YYYY-MM-DD HH:MI:SS’),endtime=>to_date(to_date(‘2003-06-28 13:00:00’,’YYYY-MM-DD HH:MI:SS’));

 

6. 獲取分析結(jié)果:

 

svrmgrl>select operation,sql_redo,sql_undo from v$logmnr_contents;

7. 根據(jù)分析結(jié)果修復(fù)數(shù)據(jù)。

 

8.結(jié)束logmnr:

 

svrmgrl>dbms_logmnr.end_logmnr;

 

9. 用適當(dāng)?shù)姆椒▽υ瓟?shù)據(jù)庫進(jìn)行數(shù)據(jù)庫全備份。利用備份恢復(fù)用戶數(shù)據(jù):

 

采用這種方法時并不是在原數(shù)據(jù)庫進(jìn)行恢復(fù),而是利用數(shù)據(jù)庫備份在新的機(jī)器上重新建立一個新的數(shù)據(jù)庫。通過備份恢復(fù)在新機(jī)器上將數(shù)據(jù)庫恢復(fù)到用戶誤操作前,這樣就可以獲得丟失的數(shù)據(jù)將其恢復(fù)到原數(shù)據(jù)庫。

1. 在新的機(jī)器上安裝數(shù)據(jù)庫軟件。

 

2. 對于采用帶庫備份的現(xiàn)場,需要在新的數(shù)據(jù)庫服務(wù)器上安裝調(diào)試相應(yīng)的備份管軟件。

 

3. 根據(jù)用戶誤操作的時間點(diǎn)進(jìn)行基于時間點(diǎn)的數(shù)據(jù)庫恢復(fù)操作。對于沒有采用帶庫備份的現(xiàn)場,可以選取用戶誤操作前最近的備份磁帶進(jìn)行恢復(fù);對于才用帶庫備份的點(diǎn)可以通過基于時間恢復(fù)點(diǎn)恢復(fù)的rman腳本來進(jìn)行恢復(fù)。

 

4.重新打開數(shù)據(jù)庫:

 

svrmgrl>alter database open resetlogs;

 

5. 從新的數(shù)據(jù)庫中獲取丟失的用戶數(shù)據(jù),通過DML操作將其恢復(fù)到原數(shù)據(jù)庫中。

 

6. 用適當(dāng)?shù)姆椒▽υ瓟?shù)據(jù)庫進(jìn)行數(shù)據(jù)庫全備份。(techtarget)

發(fā)布:2007-04-22 09:58    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
南昌OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢

泛普南昌OA信息化其他應(yīng)用

南昌OA軟件 南昌OA新聞動態(tài) 南昌OA信息化 南昌OA快博 南昌OA行業(yè)資訊 南昌軟件開發(fā)公司 南昌門禁系統(tǒng) 南昌物業(yè)管理軟件 南昌倉庫管理軟件 南昌餐飲管理軟件 南昌網(wǎng)站建設(shè)公司