IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉貼|軟件發(fā)布

您當前所在位置: 首頁數(shù)據(jù)庫Oracle → 如何優(yōu)化Oracle停機時間及數(shù)據(jù)庫恢復

如何優(yōu)化Oracle停機時間及數(shù)據(jù)庫恢復

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(1)

  這里會討論令Oracle停機時間最小化的步驟。各種形式的停機--計劃的或者是非計劃的--總是不斷地發(fā)生,一個DBA應該有正確的備份策略,這樣在數(shù)據(jù)庫出現(xiàn)問題時就可以更快地恢復。

  以下是假定的備份策略和數(shù)據(jù)庫的運作條件

  控制文件是鏡像的

  數(shù)據(jù)庫運行在archivelog模式

  每個星期都進行冷備份

  每日都進行熱備份

  每日都進行一次全數(shù)據(jù)庫導出

  事件1:完整的數(shù)據(jù)庫重構

  在這種情形下,你可以使用全數(shù)據(jù)庫導出或者冷熱備份結合的方式來重構數(shù)據(jù)庫。要注意的是無論你選擇哪種方式,在線redo log中的事務都會丟失。

  事件2:恢復部分的表空間

  可以使用以下的步驟來恢復:

  1、以restrict模式啟動數(shù)據(jù)庫

  2、重新創(chuàng)建表空間

  3、使用最新的全數(shù)據(jù)庫導出來導入,并且使用ignore=y的選項;

  4.關閉并且重新以normal的模式啟動數(shù)據(jù)庫實例

  事件3:丟失一般的數(shù)據(jù)文件

  丟失一般數(shù)據(jù)文件的恢復步驟根據(jù)所丟失的數(shù)據(jù)文件包含的表空間類型而定;例如:回滾段,用戶表空間,索引表空間或者是只讀的表空間、你可能會遇到以下的錯誤:

  . 嘗試啟動數(shù)據(jù)庫并且碰到錯誤的信息ORA-1157, ORA-1110,可能還有一個操作系統(tǒng)的錯誤

  . 嘗試以normal或者immediate的模式關閉數(shù)據(jù)庫,可能會碰到ORA-1116, ORA-1110的錯誤信息,還有一個系統(tǒng)錯誤

  以下的步驟可以用作恢復:

  1、關閉數(shù)據(jù)庫

  2、由熱備份中恢復丟失的數(shù)據(jù)文件

  3、Startup mount數(shù)據(jù)庫

  4、執(zhí)行以下的查詢來得到所有你的在線redo log文件和它們相應的次序和首次修改號:


  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# 還小,那么該文件不能被完全恢復,你可以有兩個選擇:

  . 如果可以接受丟失最近一次冷備份以來的數(shù)據(jù)庫修改,裝入備份并且繼續(xù)恢復

  . 如果不能接受丟失數(shù)據(jù)庫的修改,那么必須重新創(chuàng)建表空間

  6、通過使用存檔和在線的redo log來恢復數(shù)據(jù)文件

  7、打開數(shù)據(jù)庫

  事件4:恢復一個特別的表

  可以采用以下的步驟恢復:

  1、使用最近的一次全數(shù)據(jù)庫導出來導入表,并且使用owner=和tables=的選項

  2、考慮到性能的原因,可能需要重建表索引

  事件5:丟失控制文件

  在數(shù)據(jù)庫起來并且運行時,通常都不能檢測到控制文件的問題、如果控制文件丟失或者損壞了,Oracle將不會了解,下次數(shù)據(jù)庫的啟動時將會導致ORA-205錯誤(標識控制文件"%s的錯誤),還有一個系統(tǒng)級的錯誤、

  如果只是丟失了其中的一個控制文件,可以采用下面的步驟來恢復:

  1、如果它正在運行的話,先關閉它

  2、查找丟失控制文件的原因、是由于硬件的問題嗎(磁盤還是控制器)?

  3、如果不是硬件的問題,將控制文件的一個好的拷貝復制到丟失的位置,并且跳到步驟5、

  4、如果是硬件的問題,復制一個好的控制文件拷貝到一個可靠的位置

  5、編輯initsid.ora 或者 configsid.ora,更新CONTROL_FILES以反映最新的控制文件位置

  6、啟動數(shù)據(jù)庫

  事件6:丟失全部的控制文件

  可以采用以下的步驟恢復:

  1、關閉數(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ù)庫上進行媒體恢復

  6、打開數(shù)據(jù)庫

  7、使用shutdown normal關閉數(shù)據(jù)庫

  8、對數(shù)據(jù)庫進行一次冷備份

  事件7:丟失一個索引

  最簡單的方法就是重新創(chuàng)建丟失的索引

  事件8:丟失一個非活動的redo log

  如果丟失redo數(shù)據(jù),恢復將是不完全的,必須重新創(chuàng)建涉及的表空間。要重新創(chuàng)建表空間,可以使用全的數(shù)據(jù)庫導出,這樣就可以很容易的導入數(shù)據(jù)并且重新創(chuàng)建該表空間的對象??梢允褂靡韵碌牟襟E來恢復:

  1、通過Alter system來切換redo log文件

  2、關閉數(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ù),恢復將是不完全的,必須重新創(chuàng)建涉及的表空間、可以采用以下的步驟恢復:

  1、關閉數(shù)據(jù)庫

  2、startup mount數(shù)據(jù)庫

  3、離線刪除涉及的數(shù)據(jù)文件

  4、打開數(shù)據(jù)庫

  5、刪除用戶的表空間,包括其中的內(nèi)容、

  6、通過全數(shù)據(jù)庫備份重新創(chuàng)建表空間和其中的對象

  要注意的是活動的事務將會丟失

  事件10:丟失存檔的Redo log文件

  如果存檔的redo log文件丟失,應該馬上進行一次冷備份、最好也進行一次全數(shù)據(jù)庫導出、沒有丟失的存檔redo log文件的任何恢復都將是不完全的、

#p#副標題#e#

  事件11:丟失活動的回滾段

  這里指的是丟失一個回滾段的一個數(shù)據(jù)文件、這是一個危急的恢復過程,它主要是在于保存活動的事務。這里假定數(shù)據(jù)庫已經(jīng)起來,而你想保存當前運行的事務。要使用以下的恢復過程,數(shù)據(jù)庫必須運行在archivelog模式下。

  可以使用以下步驟恢復:

  1、不要關閉數(shù)據(jù)庫、對于這種事件,數(shù)據(jù)庫啟動比關閉更容易解決問題、

  2、令屬于該數(shù)據(jù)文件中的全部回滾段離線

  3、刪除全部離線的回滾段

  4、在上面的第2步中,如果回滾段中有活動的事務,你將不能令它離線、可運行以下的查詢來查看哪些事物是活動的:


  SELECT?SEGMENT_NAME,?XACTS?ACTIVE_TX,?V.STATUS
  FROM?V$ROLLSTAT?V,?DBA_ROLLBACK_SEGS
  WHERE?TABLESPACE_NAME?=?'tablespace_name'?AND
  SEGMENT_ID?=?USN;

  如果上面的查詢沒有結果,那么所有的回滾段都是離線的,但是,如果上面的查詢返回一行或者多行,并且其狀態(tài)為PENDING OFFLINE,那么可檢查這些回滾段的ACTIVE_TX列、帶有0值的回滾段將很快會離線;但是,非0的值表示上面有活動的事務,它們需要被提交或者回滾

  5、處理活動的事務、執(zhí)行以下的查詢來查看哪些用戶的事務被指派到該回滾段:

        <legend id="goqyg"><p id="goqyg"></p></legend>

          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

        關鍵詞標簽:Oracle,數(shù)據(jù)庫恢復

        相關閱讀

        文章評論
        發(fā)表評論

        熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務器設置Oracle全文檢索 為UNIX服務器設置Oracle全文檢索

        相關下載

          人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法