官术网_书友最值得收藏!

1.4.5 歸檔重做日志文件

Oracle以循環方式將數據庫修改信息保存到重做日志文件中,在重新寫入同一重做日志文件時,原來保存的重做記錄將被覆蓋。如果能夠將所有重做記錄永久地保留下來,就可以完整地記錄數據庫的全部修改過程,從而可以用它們進行數據庫恢復。

歸檔(Archive)是指在重做日志文件被覆蓋之前,Oracle將已經寫滿的重做日志文件復制到指定的位置以文件形式存放的過程。歸檔后的日志文件稱為歸檔重做日志文件(Archived Redo Log Files)。歸檔重做日志文件是已經寫滿的重做日志組的成員的一個精確復制文件,其中不僅包括所有的重做記錄,而且包含重做日志文件的日志序列號。

歸檔重做日志文件主要用于進行數據庫恢復和更新備份數據庫,同時借用LogMiner工具可以得到數據庫操作的歷史信息。

1.歸檔過程

只有數據庫處于歸檔模式中,才會對重做日志文件執行歸檔操作。歸檔操作可以由后臺進程ARCn自動完成,也可以由管理員手工通過命令來完成。

LGWR后臺進程負責寫入聯機重做日志文件,當聯機重做日志文件寫滿后,由ARCn后臺進程將聯機重做日志文件的內容復制到歸檔重做日志文件中。如果聯機重做日志組中第一個文件損壞,那么ARCn會將同組中的另一個文件進行歸檔。

2.數據庫的歸檔模式

數據庫的歸檔模式是指數據庫是否進行歸檔的設置。數據庫可以運行在歸檔模式(ARCHIVELOG)或非歸檔模式(NOARCHIVELOG)下。數據庫的歸檔模式記錄在控制文件中。

如果將數據庫設置為非歸檔模式,Oracle將不會對重做日志文件進行歸檔操作。當發生日志切換時,LGWR進程直接寫入下一個可用的聯機重做日志文件,聯機重做日志文件中原有的重做記錄將被覆蓋。

由于在非歸檔模式下沒有保留被覆蓋的重做日志,因此對數據庫操作有如下限制:

①數據庫只具有從實例崩潰中恢復的能力,而無法進行介質恢復。

②只能使用在非歸檔模式下建立的完全備份來恢復數據庫,并且只能恢復到最近一次進行完全備份時的狀態下,而不能進行基于時間的恢復。因此,在非歸檔模式下,管理員必須經常定時地對數據庫進行完全備份。

③不能夠進行聯機表空間備份操作,而且在恢復時也不能夠使用聯機歸檔模式下建立的表空間備份。

如果數據庫設置為歸檔模式,Oracle將對重做日志文件進行歸檔操作。LGWR進程在寫入下一個重做日志文件之前,必須等待該聯機重做日志文件完成歸檔,否則LGWR進程將被掛起,數據庫也停止運行。

在歸檔重做日志文件中,記錄了自從數據庫置于歸檔模式后,用戶對數據庫所進行的所有修改操作。

數據庫處于歸檔模式下具有以下優點:

①當發生介質故障時,使用數據庫備份和歸檔重做日志,能夠恢復所有提交的事務,保證不會丟失任何數據。

②利用歸檔重做日志文件,可以使用在數據庫打開狀態下創建的備份文件來進行數據庫恢復。

③如果為當前數據庫建立了一個備份數據庫,通過持續地為備份數據庫應用歸檔重做日志,可以保證源數據庫與備份數據庫的一致性。

3.切換數據庫的歸檔模式

改變數據庫的歸檔模式要有管理員的權限,即以AS SYSDBA連接數據庫。改變數據庫歸檔模式之前,數據庫必須先關閉并且停止相關的實例。如果有數據文件需要介質恢復,就不能進行從NOARCHIVELOG到ARCHIVELOG的轉換。數據庫改變到歸檔模式后通常要重新關閉,然后對數據庫進行備份。

(1)從非歸檔模式到歸檔模式的切換

手工從非歸檔模式到歸檔模式的切換步驟如下:

①關閉數據庫。

②備份數據庫。

③編輯初始化參數文件中與歸檔相關的初始化參數。通常主要是設置歸檔位置和歸檔文件名的格式,也可以直接使用這些參數的缺省值。

④重新啟動實例到加載狀態,但是不打開數據庫。

⑤切換數據庫到歸檔模式,然后再打開數據庫。

(2)切換數據庫到非歸檔模式

①關閉數據庫。

②啟動數據庫實例到裝載狀態,但不打開數據庫。

③切換數據庫到非歸檔模式并打開數據庫。

4.手工歸檔

在歸檔模式下,無論是否激活自動歸檔功能,管理員都可以執行手工歸檔操作。在下面情況下可能要進行手工歸檔:

①如果自動歸檔功能被禁用,管理員必須定時對填滿的聯機重做日志組進行手工歸檔。如果所有的聯機重做日志文件被填滿而沒有歸檔,那么LGWR無法寫入處于不活動狀態的聯機重做日志文件,此時數據庫將被暫時掛起,直到完成必要的歸檔操作為止。

②雖然啟用了自動歸檔功能,但管理員想將處于INACTIVE狀態的重做日志組重新歸檔到其他位置。

如果要將所有未歸檔且寫滿的重做日志文件進行歸檔,那么可以執行下面的語句:

如果要將當前的聯機重做日志文件進行歸檔,并進行日志切換,那么可以執行下面的語句:

如果在上面的語句中指定NOSWITCH子句,那么僅歸檔但不進行日志切換。

如果要將指定的重做日志文件進行歸檔,那么可以執行下面的語句:

如果要將包含指定日志記錄(SCN號為9356083)的重做日志文件進行歸檔,那么可以執行下面的語句:

在上面的幾個例子中,都可以指定“TO路徑\文件名”來表示歸檔的位置。如果沒有TO子句,那么將歸檔到初始化參數LOG_ARCHIVE_DEST或LOG_ARCHIVE_DEST_n指定的位置。

手工歸檔也可以使用SQL * Plus的ARCHIVE LOG命令來完成。下面的命令將所有未歸檔的聯機重做日志進行歸檔,歸檔位置由初始化參數決定:

下面的命令將所有未歸檔的聯機重做日志文件歸檔到指定位置:

5.查看歸檔日志信息

可以通過數據字典視圖和動態性能視圖或者ARCHIVE LOG LIST命令來查詢有關歸檔的信息。記錄有歸檔信息的動態性能視圖有V$DATABASE、V$ARCHIVED_LOG、V$ARCHIVE_DEST、V$ARCHIVE_PROCESSES、V$BACKUP_REDOLOG、V$LOG和V$LOG_HISTORY。

(1)ARCHIVE LOG命令

ARCHIVE LOG LIST是SQL * Plus環境中的命令,可以顯示當前連接實例的歸檔重做日志文件信息。

(2)V$DATABASE動態性能視圖

通過查詢V$DATABASE動態性能視圖可以顯示數據庫是否處于歸檔模式。

(3)V$ARCHIVED_LOG動態性能視圖

該動態性能視圖從控制文件中獲取已歸檔日志的信息,包括歸檔目標名稱等。

(4)V$ARCHIVE_DEST動態性能視圖

該動態性能視圖顯示所有歸檔目標的位置和狀態等信息。

(5)V$LOG_HISTORY動態性能視圖

該動態性能視圖從控制文件中獲得重做日志歷史信息。

主站蜘蛛池模板: 合山市| 孝感市| 长宁区| 拜泉县| 昌吉市| 休宁县| 宿松县| 叙永县| 新宾| 阿拉善盟| 萨迦县| 平定县| 昔阳县| 繁昌县| 龙州县| 江北区| 三江| 延吉市| 松阳县| 高碑店市| 江西省| 黄骅市| 克什克腾旗| 安阳市| 乌鲁木齐市| 遵化市| 贵定县| 绥阳县| 高安市| 凤城市| 曲阳县| 阿克苏市| 宜君县| 合川市| 大城县| 嵊泗县| 邹平县| 循化| 阿克| 泸定县| 涞源县|