oracle重启数据库一般要多久,优化Oracle停机时间及数据库恢复
正在看的ORACLE教程是:優(yōu)化Oracle停機時間及數(shù)據(jù)庫恢復(fù)。
這里會討論令Oracle停機時間最小化的步驟。各種形式的停機--計劃的或者是非計劃的--總是不斷地發(fā)生,一個DBA應(yīng)該有正確的備份策略,這樣在數(shù)據(jù)庫出現(xiàn)問題時就可以更快地恢復(fù)。
以下是假定的備份策略和數(shù)據(jù)庫的運作條件
控制文件是鏡像的
數(shù)據(jù)庫運行在archivelog模式
每個星期都進行冷備份
每日都進行熱備份
每日都進行一次全數(shù)據(jù)庫導(dǎo)出
事件1:完整的數(shù)據(jù)庫重構(gòu)
在這種情形下,你可以使用全數(shù)據(jù)庫導(dǎo)出或者冷熱備份結(jié)合的方式來重構(gòu)數(shù)據(jù)庫。要注意的是無論你選擇哪種方式,在線redo?log中的事務(wù)都會丟失。
事件2:恢復(fù)部分的表空間
可以使用以下的步驟來恢復(fù):
1、以restrict模式啟動數(shù)據(jù)庫
2、重新創(chuàng)建表空間
3、使用最新的全數(shù)據(jù)庫導(dǎo)出來導(dǎo)入,并且使用ignore=y的選項;
4.關(guān)閉并且重新以normal的模式啟動數(shù)據(jù)庫實例
事件3:丟失一般的數(shù)據(jù)文件
丟失一般數(shù)據(jù)文件的恢復(fù)步驟根據(jù)所丟失的數(shù)據(jù)文件包含的表空間類型而定;例如:回滾段,用戶表空間,索引表空間或者是只讀的表空間、你可能會遇到以下的錯誤:
.?嘗試啟動數(shù)據(jù)庫并且碰到錯誤的信息ORA-1157,?ORA-1110,可能還有一個操作系統(tǒng)的錯誤
.?嘗試以normal或者immediate的模式關(guān)閉數(shù)據(jù)庫,可能會碰到ORA-1116,?ORA-1110的錯誤信息,還有一個系統(tǒng)錯誤
以下的步驟可以用作恢復(fù):
1、關(guān)閉數(shù)據(jù)庫
2、由熱備份中恢復(fù)丟失的數(shù)據(jù)文件
3、Startup?mount數(shù)據(jù)庫
4、執(zhí)行以下的查詢來得到所有你的在線redo?log文件和它們相應(yīng)的次序和首次修改號:
5、如果得到的CHANGE#比在線redo?log最小的FIRST_CHANGE#?還小,那么該文件不能被完全恢復(fù),你可以有兩個選擇:
. 如果可以接受丟失最近一次冷備份以來的數(shù)據(jù)庫修改,裝入備份并且繼續(xù)恢復(fù)
. 如果不能接受丟失數(shù)據(jù)庫的修改,那么必須重新創(chuàng)建表空間
6、通過使用存檔和在線的redo?log來恢復(fù)數(shù)據(jù)文件
7、打開數(shù)據(jù)庫
[NextPage]
事件4:恢復(fù)一個特別的表
可以采用以下的步驟恢復(fù):
1、使用最近的一次全數(shù)據(jù)庫導(dǎo)出來導(dǎo)入表,并且使用owner=和tables=的選項
2、考慮到性能的原因,可能需要重建表索引
事件5:丟失控制文件
在數(shù)據(jù)庫起來并且運行時,通常都不能檢測到控制文件的問題、如果控制文件丟失或者損壞了,Oracle將不會了解,下次數(shù)據(jù)庫的啟動時將會導(dǎo)致ORA-205錯誤(標(biāo)識控制文件"%s的錯誤),還有一個系統(tǒng)級的錯誤、
如果只是丟失了其中的一個控制文件,可以采用下面的步驟來恢復(fù):
1、如果它正在運行的話,先關(guān)閉它
2、查找丟失控制文件的原因、是由于硬件的問題嗎(磁盤還是控制器)?
3、如果不是硬件的問題,將控制文件的一個好的拷貝復(fù)制到丟失的位置,并且跳到步驟5、
4、如果是硬件的問題,復(fù)制一個好的控制文件拷貝到一個可靠的位置
5、編輯initsid.ora?或者?configsid.ora,更新CONTROL_FILES以反映最新的控制文件位置
6、啟動數(shù)據(jù)庫
事件6:丟失全部的控制文件
可以采用以下的步驟恢復(fù):
1、關(guān)閉數(shù)據(jù)庫
2、進行一次全數(shù)據(jù)庫備份,包括全部的數(shù)據(jù)文件和redo?log文件
3、以NOMOUNT的狀態(tài)啟動數(shù)據(jù)庫
4、使用CREATE?CONTROLFILE重新創(chuàng)建控制文件、你也可以備份控制文件到一個trace文件,然后執(zhí)行該文件
5、在數(shù)據(jù)庫上進行媒體恢復(fù)
6、打開數(shù)據(jù)庫
7、使用shutdown?normal關(guān)閉數(shù)據(jù)庫
8、對數(shù)據(jù)庫進行一次冷備份
事件7:丟失一個索引
最簡單的方法就是重新創(chuàng)建丟失的索引
事件8:丟失一個非活動的redo?log
如果丟失redo數(shù)據(jù),恢復(fù)將是不完全的,必須重新創(chuàng)建涉及的表空間。要重新創(chuàng)建表空間,可以使用全的數(shù)據(jù)庫導(dǎo)出,這樣就可以很容易的導(dǎo)入數(shù)據(jù)并且重新創(chuàng)建該表空間的對象。可以使用以下的步驟來恢復(fù):
1、通過Alter?system來切換redo?log文件
2、關(guān)閉數(shù)據(jù)庫
3、startup?mount數(shù)據(jù)庫
4、離線刪除涉及的數(shù)據(jù)文件
5、打開數(shù)據(jù)庫
6、刪除用戶的表空間,包括其中的內(nèi)容、
7、通過全數(shù)據(jù)庫備份重新創(chuàng)建表空間和其中的對象
事件9:丟失活動的Redo?log
如事件8討論的一樣,如果丟失了redo數(shù)據(jù),恢復(fù)將是不完全的,必須重新創(chuàng)建涉及的表空間、可以采用以下的步驟恢復(fù):
1、關(guān)閉數(shù)據(jù)庫
2、startup?mount數(shù)據(jù)庫
3、離線刪除涉及的數(shù)據(jù)文件
4、打開數(shù)據(jù)庫
5、刪除用戶的表空間,包括其中的內(nèi)容、
6、通過全數(shù)據(jù)庫備份重新創(chuàng)建表空間和其中的對象
要注意的是活動的事務(wù)將會丟失
事件10:丟失存檔的Redo?log文件
如果存檔的redo?log文件丟失,應(yīng)該馬上進行一次冷備份、最好也進行一次全數(shù)據(jù)庫導(dǎo)出、沒有丟失的存檔redo?log文件的任何恢復(fù)都將是不完全的、
事件11:丟失活動的回滾段
這里指的是丟失一個回滾段的一個數(shù)據(jù)文件、這是一個危急的恢復(fù)過程,它主要是在于保存活動的事務(wù)。這里假定數(shù)據(jù)庫已經(jīng)起來,而你想保存當(dāng)前運行的事務(wù)。要使用以下的恢復(fù)過程,數(shù)據(jù)庫必須運行在archivelog模式下。
可以使用以下步驟恢復(fù):
1、不要關(guān)閉數(shù)據(jù)庫、對于這種事件,數(shù)據(jù)庫啟動比關(guān)閉更容易解決問題、
2、令屬于該數(shù)據(jù)文件中的全部回滾段離線
3、刪除全部離線的回滾段
4、在上面的第2步中,如果回滾段中有活動的事務(wù),你將不能令它離線、可運行以下的查詢來查看哪些事物是活動的:
如果上面的查詢沒有結(jié)果,那么所有的回滾段都是離線的,但是,如果上面的查詢返回一行或者多行,并且其狀態(tài)為PENDING?OFFLINE,那么可檢查這些回滾段的ACTIVE_TX列、帶有0值的回滾段將很快會離線;但是,非0的值表示上面有活動的事務(wù),它們需要被提交或者回滾、
5、處理活動的事務(wù)、執(zhí)行以下的查詢來查看哪些用戶的事務(wù)被指派到該回滾段:
在知道哪些用戶在"pending?offline"的回滾段上有活動的事務(wù)后,可以要求他們提交或者回滾他們的事務(wù),或者可以使用以下的命令殺掉它們的進程:
ALTER?SYSTEM?KILL?SESSION?'sid,?serial#';
6、在你處理完所有活動的事務(wù)后,執(zhí)行以下的步驟:
丟棄表空間及其中的全部內(nèi)容
重新創(chuàng)建回滾表空間
重新創(chuàng)建回滾段,并且令它們在線
[NextPage]
事件12:丟失全部的回滾段
在這種事件下,將丟失全部活動的事務(wù),并且需要重新創(chuàng)建回滾段。這樣大的問題可能是由于一個硬件問題造成的,可以采用以下的步驟恢復(fù):
上一頁
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的oracle重启数据库一般要多久,优化Oracle停机时间及数据库恢复的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php截取数组中的字符串,PHP 中使用
- 下一篇: 联想y7000怎么关logo灯(联想le