時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)
這里會(huì)討論令oracle停機(jī)時(shí)間最小化的步驟。各種形式的停機(jī)--計(jì)劃的或者是非計(jì)劃的--總是不斷地發(fā)生,一個(gè)DBA應(yīng)該有正確的備份策略,這樣在數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題時(shí)就可以更快地恢復(fù)。
以下是假定的備份策略和數(shù)據(jù)庫(kù)的運(yùn)作條件
控制文件是鏡像的
數(shù)據(jù)庫(kù)運(yùn)行在archivelog模式
每個(gè)星期都進(jìn)行冷備份
每日都進(jìn)行熱備份
每日都進(jìn)行一次全數(shù)據(jù)庫(kù)導(dǎo)出
事件1:完整的數(shù)據(jù)庫(kù)重構(gòu)
在這種情形下,你可以使用全數(shù)據(jù)庫(kù)導(dǎo)出或者冷熱備份結(jié)合的方式來(lái)重構(gòu)數(shù)據(jù)庫(kù)。要注意的是無(wú)論你選擇哪種方式,在線redo log中的事務(wù)都會(huì)丟失。
事件2:恢復(fù)部分的表空間
可以使用以下的步驟來(lái)恢復(fù):
1、以restrict模式啟動(dòng)數(shù)據(jù)庫(kù)
2、重新創(chuàng)建表空間
3、使用最新的全數(shù)據(jù)庫(kù)導(dǎo)出來(lái)導(dǎo)入,并且使用ignore=y的選項(xiàng);
4.關(guān)閉并且重新以normal的模式啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例
事件3:丟失一般的數(shù)據(jù)文件
丟失一般數(shù)據(jù)文件的恢復(fù)步驟根據(jù)所丟失的數(shù)據(jù)文件包含的表空間類型而定;例如:回滾段,用戶表空間,索引表空間或者是只讀的表空間、你可能會(huì)遇到以下的錯(cuò)誤:
. 嘗試啟動(dòng)數(shù)據(jù)庫(kù)并且碰到錯(cuò)誤的信息ORA-1157, ORA-1110,可能還有一個(gè)操作系統(tǒng)的錯(cuò)誤
. 嘗試以normal或者immediate的模式關(guān)閉數(shù)據(jù)庫(kù),可能會(huì)碰到ORA-1116, ORA-1110的錯(cuò)誤信息,還有一個(gè)系統(tǒng)錯(cuò)誤
以下的步驟可以用作恢復(fù):
1、關(guān)閉數(shù)據(jù)庫(kù)
2、由熱備份中恢復(fù)丟失的數(shù)據(jù)文件
3、Startup mount數(shù)據(jù)庫(kù)
4、執(zhí)行以下的查詢來(lái)得到所有你的在線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è)選擇:
. 如果可以接受丟失最近一次冷備份以來(lái)的數(shù)據(jù)庫(kù)修改,裝入備份并且繼續(xù)恢復(fù)
. 如果不能接受丟失數(shù)據(jù)庫(kù)的修改,那么必須重新創(chuàng)建表空間
6、通過(guò)使用存檔和在線的redo log來(lái)恢復(fù)數(shù)據(jù)文件
7、打開(kāi)數(shù)據(jù)庫(kù)
事件4:恢復(fù)一個(gè)特別的表
可以采用以下的步驟恢復(fù):
1、使用最近的一次全數(shù)據(jù)庫(kù)導(dǎo)出來(lái)導(dǎo)入表,并且使用owner=和tables=的選項(xiàng)
2、考慮到性能的原因,可能需要重建表索引
事件5:丟失控制文件
在數(shù)據(jù)庫(kù)起來(lái)并且運(yùn)行時(shí),通常都不能檢測(cè)到控制文件的問(wèn)題、如果控制文件丟失或者損壞了,Oracle將不會(huì)了解,下次數(shù)據(jù)庫(kù)的啟動(dòng)時(shí)將會(huì)導(dǎo)致ORA-205錯(cuò)誤(標(biāo)識(shí)控制文件"%s的錯(cuò)誤),還有一個(gè)系統(tǒng)級(jí)的錯(cuò)誤、
如果只是丟失了其中的一個(gè)控制文件,可以采用下面的步驟來(lái)恢復(fù):
1、如果它正在運(yùn)行的話,先關(guān)閉它
2、查找丟失控制文件的原因、是由于硬件的問(wèn)題嗎(磁盤還是控制器)?
3、如果不是硬件的問(wèn)題,將控制文件的一個(gè)好的拷貝復(fù)制到丟失的位置,并且跳到步驟5、
4、如果是硬件的問(wèn)題,復(fù)制一個(gè)好的控制文件拷貝到一個(gè)可靠的位置
5、編輯initsid.ora 或者 configsid.ora,更新CONTROL_FILES以反映最新的控制文件位置
6、啟動(dòng)數(shù)據(jù)庫(kù)
事件6:丟失全部的控制文件
可以采用以下的步驟恢復(fù):
1、關(guān)閉數(shù)據(jù)庫(kù)
2、進(jìn)行一次全數(shù)據(jù)庫(kù)備份,包括全部的數(shù)據(jù)文件和redo log文件
3、以NOMOUNT的狀態(tài)啟動(dòng)數(shù)據(jù)庫(kù)
4、使用CREATE CONTROLFILE重新創(chuàng)建控制文件、你也可以備份控制文件到一個(gè)trace文件,然后執(zhí)行該文件
5、在數(shù)據(jù)庫(kù)上進(jìn)行媒體恢復(fù)
6、打開(kāi)數(shù)據(jù)庫(kù)
7、使用shutdown normal關(guān)閉數(shù)據(jù)庫(kù)
8、對(duì)數(shù)據(jù)庫(kù)進(jìn)行一次冷備份
事件7:丟失一個(gè)索引
最簡(jiǎn)單的方法就是重新創(chuàng)建丟失的索引
事件8:丟失一個(gè)非活動(dòng)的redo log
如果丟失redo數(shù)據(jù),恢復(fù)將是不完全的,必須重新創(chuàng)建涉及的表空間。要重新創(chuàng)建表空間,可以使用全的數(shù)據(jù)庫(kù)導(dǎo)出,這樣就可以很容易的導(dǎo)入數(shù)據(jù)并且重新創(chuàng)建該表空間的對(duì)象。可以使用以下的步驟來(lái)恢復(fù):
1、通過(guò)Alter system來(lái)切換redo log文件
2、關(guān)閉數(shù)據(jù)庫(kù)
3、startup mount數(shù)據(jù)庫(kù)
4、離線刪除涉及的數(shù)據(jù)文件
5、打開(kāi)數(shù)據(jù)庫(kù)
6、刪除用戶的表空間,包括其中的內(nèi)容、
7、通過(guò)全數(shù)據(jù)庫(kù)備份重新創(chuàng)建表空間和其中的對(duì)象
事件9:丟失活動(dòng)的Redo log
如事件8討論的一樣,如果丟失了redo數(shù)據(jù),恢復(fù)將是不完全的,必須重新創(chuàng)建涉及的表空間、可以采用以下的步驟恢復(fù):
1、關(guān)閉數(shù)據(jù)庫(kù)
2、startup mount數(shù)據(jù)庫(kù)
3、離線刪除涉及的數(shù)據(jù)文件
4、打開(kāi)數(shù)據(jù)庫(kù)
5、刪除用戶的表空間,包括其中的內(nèi)容、
6、通過(guò)全數(shù)據(jù)庫(kù)備份重新創(chuàng)建表空間和其中的對(duì)象
要注意的是活動(dòng)的事務(wù)將會(huì)丟失
事件10:丟失存檔的Redo log文件
如果存檔的redo log文件丟失,應(yīng)該馬上進(jìn)行一次冷備份、最好也進(jìn)行一次全數(shù)據(jù)庫(kù)導(dǎo)出、沒(méi)有丟失的存檔redo log文件的任何恢復(fù)都將是不完全的、
#p#副標(biāo)題#e#
事件11:丟失活動(dòng)的回滾段
這里指的是丟失一個(gè)回滾段的一個(gè)數(shù)據(jù)文件、這是一個(gè)危急的恢復(fù)過(guò)程,它主要是在于保存活動(dòng)的事務(wù)。這里假定數(shù)據(jù)庫(kù)已經(jīng)起來(lái),而你想保存當(dāng)前運(yùn)行的事務(wù)。要使用以下的恢復(fù)過(guò)程,數(shù)據(jù)庫(kù)必須運(yùn)行在archivelog模式下。
可以使用以下步驟恢復(fù):
1、不要關(guān)閉數(shù)據(jù)庫(kù)、對(duì)于這種事件,數(shù)據(jù)庫(kù)啟動(dòng)比關(guān)閉更容易解決問(wèn)題、
2、令屬于該數(shù)據(jù)文件中的全部回滾段離線
3、刪除全部離線的回滾段
4、在上面的第2步中,如果回滾段中有活動(dòng)的事務(wù),你將不能令它離線、可運(yùn)行以下的查詢來(lái)查看哪些事物是活動(dòng)的:
SELECT SEGMENT_NAME, XACTS ACTIVE_TX, V.STATUS FROM V$ROLLSTAT V, DBA_ROLLBACK_SEGS WHERE TABLESPACE_NAME = 'tablespace_name' AND SEGMENT_ID = USN; |
如果上面的查詢沒(méi)有結(jié)果,那么所有的回滾段都是離線的,但是,如果上面的查詢返回一行或者多行,并且其狀態(tài)為PENDING OFFLINE,那么可檢查這些回滾段的ACTIVE_TX列、帶有0值的回滾段將很快會(huì)離線;但是,非0的值表示上面有活動(dòng)的事務(wù),它們需要被提交或者回滾
5、處理活動(dòng)的事務(wù)、執(zhí)行以下的查詢來(lái)查看哪些用戶的事務(wù)被指派到該回滾段:
SELECT S.SID, S.SERIAL#, S.USERNAME, R.NAME "ROLLBACK" FROM V$SESSION S, V$TRANSACTION T, V$ROLLNAME R WHERE R.NAME IN ('pending_rollback1','pending_rollback2', .... 'pending_rollbackN') AND S.TADDR = T.ADDR AND T.XIDU 關(guān)鍵詞標(biāo)簽:Oracle,數(shù)據(jù)庫(kù)恢復(fù) 相關(guān)閱讀
熱門文章 Oracle中使用alter table來(lái)增加,刪除,修改列oracle中使用SQL語(yǔ)句修改字段類型-oracle修使用低權(quán)限Oracle數(shù)據(jù)庫(kù)賬戶得到管理員權(quán)限Oracle對(duì)user的訪問(wèn)控制
相關(guān)下載
人氣排行 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法ORACLE和SQL語(yǔ)法區(qū)別歸納(1)oracle grant 授權(quán)語(yǔ)句如何加速Oracle大批量數(shù)據(jù)處理Oracle刪除表的幾種方法ORACLE修改IP地址后如何能夠使用Oracle 10g創(chuàng)建表空間和用戶并指定權(quán)限
|