優(yōu)化Oracle停機(jī)時(shí)間及數(shù)據(jù)庫恢復(fù)
這里會(huì)討論令Oracle停機(jī)時(shí)間最小化的步驟,Oracle數(shù)據(jù)庫中停機(jī)時(shí)間的優(yōu)化是提高Oracle數(shù)據(jù)庫工作效率的有效做法,各種形式的停機(jī)--計(jì)劃的或者是非計(jì)劃的--總是不斷地發(fā)生,一個(gè)DBA應(yīng)該有正確的備份策略,這樣在數(shù)據(jù)庫出現(xiàn)問題時(shí)就可以更快地恢復(fù)。
以下是假定的備份策略和數(shù)據(jù)庫的運(yùn)作條件:
控制文件是鏡像的
數(shù)據(jù)庫運(yùn)行在archivelog模式
每個(gè)星期都進(jìn)行冷備份
每日都進(jìn)行熱備份
每日都進(jìn)行一次全數(shù)據(jù)庫導(dǎo)出
事件1:完整的數(shù)據(jù)庫重構(gòu)
在這種情形下,你可以使用全數(shù)據(jù)庫導(dǎo)出或者冷熱備份結(jié)合的方式來重構(gòu)數(shù)據(jù)庫。要注意的是無論你選擇哪種方式,在線redo log中的事務(wù)都會(huì)丟失。
事件2:恢復(fù)部分的表空間
可以使用以下的步驟來恢復(fù):
1、以restrict模式啟動(dòng)數(shù)據(jù)庫
2、重新創(chuàng)建表空間
3、使用***的全數(shù)據(jù)庫導(dǎo)出來導(dǎo)入,并且使用ignore=y的選項(xiàng);
4.關(guān)閉并且重新以normal的模式啟動(dòng)數(shù)據(jù)庫實(shí)例
事件3:丟失一般的數(shù)據(jù)文件
丟失一般數(shù)據(jù)文件的恢復(fù)步驟根據(jù)所丟失的數(shù)據(jù)文件包含的表空間類型而定;例如:回滾段,用戶表空間,索引表空間或者是只讀的表空間、你可能會(huì)遇到以下的錯(cuò)誤:
. 嘗試啟動(dòng)數(shù)據(jù)庫并且碰到錯(cuò)誤的信息ORA-1157, ORA-1110,可能還有一個(gè)操作系統(tǒng)的錯(cuò)誤
. 嘗試以normal或者immediate的模式關(guān)閉數(shù)據(jù)庫,可能會(huì)碰到ORA-1116, ORA-1110的錯(cuò)誤信息,還有一個(gè)系統(tǒng)錯(cuò)誤
以下的步驟可以用作恢復(fù):
1、關(guān)閉數(shù)據(jù)庫
2、由熱備份中恢復(fù)丟失的數(shù)據(jù)文件
3、Startup mount數(shù)據(jù)庫
4、執(zhí)行以下的查詢來得到所有你的在線redo log文件和它們相應(yīng)的次序和***修改號(hào):
SELECT X.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE#
FROM V$LOG X, V$LOGILE Y
WHERE X.GROUP# = Y.GROUP#;
5、如果得到的CHANGE#比在線redo log最小的FIRST_CHANGE# 還小,那么該文件不能被完全恢復(fù),你可以有兩個(gè)選擇:
如果可以接受丟失最近一次冷備份以來的數(shù)據(jù)庫修改,裝入備份并且繼續(xù)恢復(fù)
如果不能接受丟失數(shù)據(jù)庫的修改,那么必須重新創(chuàng)建表空間
6、通過使用存檔和在線的redo log來恢復(fù)數(shù)據(jù)文件
7、打開數(shù)據(jù)庫
事件4:恢復(fù)一個(gè)特別的表
可以采用以下的步驟恢復(fù):
1、使用最近的一次全數(shù)據(jù)庫導(dǎo)出來導(dǎo)入表,并且使用owner=和tables=的選項(xiàng)
2、考慮到性能的原因,可能需要重建表索引
關(guān)于優(yōu)化Oracle停機(jī)時(shí)間及數(shù)據(jù)庫恢復(fù)的講解就為大家介紹到這里,希望上文中涉及到的內(nèi)容對(duì)大家能夠有所幫助,大家掌握了上文中介紹的知識(shí)之后,在以后的工作中遇到類似問題就能夠輕松解決了。