Backup And Recovery User's Guide-在例項失敗或SHUTDOWN ABORT後結束備份

LuiseDalian發表於2014-03-02

在例項失敗或SHUTDOWN ABORT後結束備份

下面的情形會引起表空間備份失敗並且不一致:

n  備份結束後,但沒有執行ALTER TABLESPACE…END BACKUP

n  例項失敗或SHUTDOWN ABORT中斷了備份

在啟動時顯示的錯誤資訊

ORA-01113: file 12 needs media recovery

ORA-01110: data file 12: '/oracle/dbs/tbs_41.f'

 

當需要從失敗中恢復的時候,當試圖開啟資料檔案時,如果資料檔案處於備份模式,則資料庫不會開啟這個資料檔案,

直到你執行了一個恢復命令,或直到資料檔案已經退出了備份模式。

 

如果資料庫提示多個表空間的資料檔案需要介質恢復,因為對於這些表空間你忘記了結束備份模式,

則只需要在資料庫進入MOUNT狀態後,執行ALTER DATABASE END BACKUP命令即可,使所有的資料檔案結束備份模式。

 

在高可用性的環境中,並且沒有DBA監控資料庫的情形下,是不允許使用者干預的。

因此需要寫一個失敗恢復指令碼做下面的事情:

MOUNT資料庫

②執行ALTER DATABASE END BACKUP語句

③執行ALTER DATABASE OPEN,允許自動啟動。

 

在下列情形下,在自動化的系統崩潰恢復指令碼中包含ALTER DABASE END BACKUP語句非常有用:

n  RAC配置中的所有結點都失敗了

n  cold failover cluster環境(是一個群集環境,但不是RAC,第二個節點在第一個結點失敗時,必須mount和恢復資料庫)中一個結點失敗了

 

也可以採用下面的手動措施(在系統因為表空間處於備份模式而失敗時):

n  恢復資料庫,避免同時執行END BACKUP語句

n  MOUNT資料庫,對於仍處於備份模式的每個表空間執行ALTER TABLESPACE…END BACKUP語句

 

1)使用ALTER DATABAE END BACKUP語句結束備份模式

當有多個表空間仍處於備份模式時,可以執行ALTER DATABASE END BACKUP語句。

這個命令的主要目的是允許崩潰恢復指令碼在沒有DBA的干預下可以啟動失敗的系統。當然也可以手動執行下面的步驟。

練習:使多個表空間同時退出備份模式

--1. MOUNT但不開啟資料庫

SQL> STARTUP MOUNT

--2. 如果正在手動地執行這些步驟(而不是作為失敗恢復指令碼的一部分),則要檢視v$BACKUP檢視

--   列出在資料庫被重新啟動之前被備份的表空間的資料檔案

SQL>  SELECT * FROM V$BACKUP WHERE STATUS = 'ACTIVE';

FILE#      STATUS             CHANGE#    TIME    

---------- ------------------ ---------- ---------

        12 ACTIVE                  20863 25-NOV-02

        13 ACTIVE                  20863 25-NOV-02

        20 ACTIVE                  20863 25-NOV-02

 3 rows selected.

 --3. 使所有當前處於備份模式的資料檔案退出備份模式

 --   只有當資料庫處於MOUNT狀態而不是OPEN狀態時,才能執行這個語句

 --   如果資料庫已經被開啟,則要執行ALTER TABLESPACE... END BACKUPALTER DATABASE DATAFILE...END BACKUP

 --   注意:如果已經從備份還原了任何受影響的檔案,則不能執行ALTER DATABASE END BACKUP.

 SQL> ALTER DATABASE END BACKUP;

 

2使用SQL*Plus RECOVER命令結束備份

ALTER DATABASE END BACKUP語句不是響應聯機備份失敗的唯一語句,也可以執行SQL*PlusRECOVER命令。

當你不確定是否有人已經還原了備份的時候,這個方法很有用。

因為如果有人已經還原了備份,則RECOVER命令會使備份更新到最新。

注意RECOVER方法會慢一些,因為資料庫必須從連線備份開始之後產生的日誌。

練習:使用SQL*Plus RECOVER命令結束備份

--1. MOUNT資料庫

SQL> STARTUP MOUNT

--2. 恢復資料庫

SQL> RECOVER DATABASE

--3. 確定沒有活動的資料檔案

SQL>  SELECT * FROM V$BACKUP WHERE STATUS = 'ACTIVE';

FILE#      STATUS             CHANGE#    TIME    

---------- ------------------ ---------- ---------

0 rows selected.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1097976/,如需轉載,請註明出處,否則將追究法律責任。

相關文章