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

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

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

文章來(lái)源:泛普軟件 數(shù)據(jù)庫(kù)系統(tǒng)緊急故障處理方法Oracle物理結(jié)構(gòu)故障是指構(gòu)成數(shù)據(jù)庫(kù)的各個(gè)物理文件損壞而導(dǎo)致的各種數(shù)據(jù)庫(kù)故障。這些故障可能是由于硬件故障造成的,也可能是人為誤操作而引起。所以我們首先要判斷問(wèn)題的起因,如果是硬件故障則首先要解決硬件問(wèn)題。在無(wú)硬件問(wèn)題的前提下我們才能按照下面的處理方發(fā)來(lái)進(jìn)一步處理。

 

控制文件損壞:

 

控制文件記錄了關(guān)于oracle的重要配置信息,如數(shù)據(jù)庫(kù)名、字符集名字、各個(gè)數(shù)據(jù)文件、日志文件的位置等等信息??刂莆募膿p壞,會(huì)導(dǎo)致數(shù)據(jù)庫(kù)異常關(guān)閉。一旦缺少控制文件,數(shù)據(jù)庫(kù)也無(wú)法啟動(dòng),這是一種比較嚴(yán)重的錯(cuò)誤。

 

損壞單個(gè)控制文件:

 

1. 確保數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉,如果沒(méi)有用下面的命令來(lái)關(guān)閉數(shù)據(jù)庫(kù):

 

svrmgrl>shutdown immediate;

 

2. 查看初始化文件$ORACLE_BASE/admin/pfile/initORCL.ora,確定所有控制文件的路徑。

3. 用操作系統(tǒng)命令將其它正確的控制文件覆蓋錯(cuò)誤的控制文件。

 

4. 用下面的命令重新啟動(dòng)數(shù)據(jù)庫(kù):

 

svrmgrl>startup;

 

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

 

損壞所有的控制文件:

 

1. 確保數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉,如果沒(méi)有用下面的命令來(lái)關(guān)閉數(shù)據(jù)庫(kù):

 

svrmgrl>shutdown immediate;

 

2. 從相應(yīng)的備份結(jié)果集中恢復(fù)最近的控制文件。對(duì)于沒(méi)有采用帶庫(kù)備份的點(diǎn)可以直接從磁帶上將最近的控制文件備份恢復(fù)到相應(yīng)目錄;對(duì)于采用帶庫(kù)備份的點(diǎn)用相應(yīng)的rman腳本來(lái)恢復(fù)最近的控制文件。

 

3. 用下面的命令來(lái)創(chuàng)建產(chǎn)生數(shù)據(jù)庫(kù)控制文件的腳本:

 

svrmgrl>startup mount;

 

svrmgrl>alter database backup controlfile to trace noresetlogs;

 

4. 修改第三步產(chǎn)生的trace文件,將其中關(guān)于創(chuàng)建控制文件的一部分語(yǔ)句拷貝出來(lái)并做些修改,使得它能夠體現(xiàn)最新的數(shù)據(jù)庫(kù)結(jié)構(gòu)。假設(shè)產(chǎn)生的sql文件名字為createcontrol.sql.

 

注意:

 

Trace文件的具體路徑可以在執(zhí)行完第3步操作后查看$ORACLE_BASE/admin/bdump/alert_ORCL.ora文件來(lái)確定。

 

5. 用下面命令重新創(chuàng)建控制文件:

 

svrmgrl>shutdown abort;

 

svrmgrl>startup nomount;

 

svrmgrl>@createcontrol.sql;

 

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

 

重做日志文件損壞:

 

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

 

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

 

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

 

select * from v$logfile;

 

svrmgrl>select * from v$log;

 

2. 如果數(shù)據(jù)庫(kù)處于已經(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ù)。

 

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

 

svrmgrl>alter database open;

 

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

 

若損壞的數(shù)據(jù)文件屬于非system表空間,則數(shù)據(jù)庫(kù)仍然可以處于打開(kāi)狀態(tài)可以進(jìn)行操作,只是損壞的數(shù)據(jù)文件不能訪問(wèn)。這時(shí)在數(shù)據(jù)庫(kù)打開(kāi)狀態(tài)下可以單獨(dú)對(duì)損壞的數(shù)據(jù)文件進(jìn)行恢復(fù)。若是system表空間的數(shù)據(jù)文件損壞則數(shù)據(jù)庫(kù)系統(tǒng)會(huì)異常終止。這時(shí)數(shù)據(jù)庫(kù)只能以Mount方式打開(kāi),然后再對(duì)數(shù)據(jù)文件進(jìn)行恢復(fù)??梢酝ㄟ^(guò)查看數(shù)據(jù)庫(kù)日志文件來(lái)判斷當(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ì)于沒(méi)有采用帶庫(kù)備份的點(diǎn)可以直接從磁帶上恢復(fù);對(duì)于用帶庫(kù)備份的點(diǎn)用相應(yīng)的rman腳本來(lái)恢復(fù)。

 

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

 

svrmgrl>alter database recover datafile ‘file_name’;

 

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

 

svrmgrl>alter database datafile ‘datafile_name’ online;

 

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

 

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

 

1. 以mount方式啟動(dòng)數(shù)據(jù)庫(kù)

 

svrmgrl>startup mount;

 

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

 

3. 恢復(fù)system表空間:

 

svrmgrl>alter database recover datafile ‘datafile_name’;

4. 打開(kāi)數(shù)據(jù)庫(kù):

 

svrmgrl>alter database open;

 

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

 

表空間損壞:

 

若非system表空間已經(jīng)損壞,則數(shù)據(jù)庫(kù)仍然可以處于打開(kāi)狀態(tài)可以進(jìn)行操作,只是損壞的表空間不能訪問(wèn)。這樣在數(shù)據(jù)庫(kù)打開(kāi)狀態(tài)下可以單獨(dú)對(duì)損壞的表空間進(jìn)行恢復(fù)。若是system表空間損壞則數(shù)據(jù)庫(kù)系統(tǒng)會(huì)異常終止。這時(shí)數(shù)據(jù)庫(kù)只能以Mount方式打開(kāi),然后再對(duì)表空間進(jìn)行恢復(fù)??梢酝ㄟ^(guò)查看數(shù)據(jù)庫(kù)日志文件來(lái)判斷當(dāng)前損壞的表空間是否是system表空間.

 

非system表空間損壞:

 

1. 將損壞的表空間處于offline狀態(tài):

svrmgrl>alter tablespace ‘tablespace_name’ offline;

 

2. 從相應(yīng)的備份結(jié)果集中恢復(fù)關(guān)于這個(gè)表空間最近的備份。對(duì)于沒(méi)有采用帶庫(kù)備份的點(diǎn)可以直接從磁帶上恢復(fù);對(duì)于用帶庫(kù)備份的點(diǎn)用相應(yīng)的rman腳本來(lái)恢復(fù)。

 

3. 恢復(fù)表空間:

 

svrmgrl>alter database recover tablespace ‘tablespace_name’;

 

4. 使表空間online:

 

svrmgrl>alter tablespace ‘tablespace_name’ online;

 

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

 

system表空間損壞:

 

1. 以mount方式啟動(dòng)數(shù)據(jù)庫(kù)

 

svrmgrl>startup mount;

 

2. 從相應(yīng)的備份結(jié)果集中恢復(fù)system表空間最近的備份。對(duì)于沒(méi)有采用帶庫(kù)備份的點(diǎn)可以直接從磁帶上恢復(fù);對(duì)于用帶庫(kù)備份的點(diǎn)用相應(yīng)的rman腳本來(lái)恢復(fù)。

 

3. 恢復(fù)system表空間:

 

svrmgrl>alter database recover tablespace system;

 

4. 打開(kāi)數(shù)據(jù)庫(kù):

 

svrmgrl>alter database open;

 

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

 

整個(gè)數(shù)據(jù)庫(kù)的所有文件損壞:

 

整個(gè)數(shù)據(jù)庫(kù)所有文件的損壞一般是在共享磁盤(pán)陣列發(fā)生無(wú)法恢復(fù)的災(zāi)難時(shí)才發(fā)生,這種情況下只能對(duì)數(shù)據(jù)庫(kù)進(jìn)行恢復(fù)。若數(shù)據(jù)庫(kù)的歸檔目錄也已經(jīng)丟失,則數(shù)據(jù)庫(kù)不可能做完全恢復(fù),會(huì)有用戶數(shù)據(jù)的丟失。

 

沒(méi)采用帶庫(kù)備份的現(xiàn)場(chǎng):

 

1. 將最近的備份從磁帶上把各個(gè)文件解包到相應(yīng)的目錄下。

 

2. 以mount方式打開(kāi)數(shù)據(jù)庫(kù):

 

svrmgrl>startup mount;

 

3. 恢復(fù)數(shù)據(jù)庫(kù):

 

svrmgrl>recover database until cancel;

 

4. 打開(kāi)數(shù)據(jù)庫(kù):

 

svrmgrl>alter database open resetlogs;

 

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

 

采用帶庫(kù)備份的現(xiàn)場(chǎng):

 

1. 以nomount方式打開(kāi)數(shù)據(jù)庫(kù):

 

svrmgrl>startup nomount;

 

2. 通過(guò)相應(yīng)的rman腳本進(jìn)行數(shù)據(jù)庫(kù)軟恢復(fù)。

 

$rman cmdfile=hot_database_restore.rcv

 

3. 打開(kāi)數(shù)據(jù)庫(kù):

 

svrmgrl>alter database open resetlogs;

 

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

 

存在最近的數(shù)據(jù)庫(kù)完整冷備份前提下的一些經(jīng)典緊急情況的處理:

 

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

 

無(wú)新增archives 時(shí)的狀況:

條件和假設(shè):自上次鏡像備份以來(lái)尚未生成新的archive log(s); Archivelog Mode; 有同步的datafile(s) 和control file(s) 的鏡像(冷)拷貝

 

恢復(fù)步驟:

 

1. 將鏡像拷貝的datafile(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)啟動(dòng)數(shù)據(jù)庫(kù):

 

$ svrmgrl

svrmgrl> connect internal

 

svrmgrl> startup mount

 

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

 

svrmgrl> recover database using backup controlfile until cancel;

 

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

 

(必須馬上cancel )

 

4. Reset the logfiles (對(duì)啟動(dòng)而言不可省略):

 

svrmgrl> alter database open resetlogs;

 

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

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

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

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

咨詢:400-8352-114

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

QQ在線咨詢

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

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