歸檔日誌文件:是處於非活動(INACTIVE)的狀態的重做日誌文件的備份。它對ORACLE數據庫的備份和恢復起至關重要的作用。是聯機重做日誌文件的一個副本,與被複制的成員完成一樣,即重做記錄相同,日誌序列號相同。
一、數據庫的歸檔與非歸檔模式:
1. 當數據庫處於NOACRCHIVELOG模式時,不對重做日誌文件進行歸檔,直接覆蓋舊的重做日誌文件,此時數據庫只能從例程失敗中進行恢復。
特點:
a. 發生日誌切換時(alter system switch logfile),LGWR後臺進程可以無條件覆蓋原來的已經變爲非活動的(INACTIVE)重做日誌文件的內容。
b. 進行數據庫備份時,必須先使用SHUTDOWN 或者SHUTDOWN IMMEDIATE命令先關閉數據庫,然後才能通過操作系統備份所有的物理文件。即冷備份。不能進行聯機的熱備份。
c. NOACRCHIVELOG模式時,只能保護數據庫免於例程失敗,但不能保護數據庫免於介質失敗。
d. NOACRCHIVELOG模式不需要考慮存儲空間的問題。
2. 當數據庫處於ACRCHIVELOG模式時候,系統通過後臺進程ARCn來幫助DBA自動完成對重做日誌文件進行歸檔,歸檔之後才覆蓋舊的重做日誌文件,並將其複製到一個指定的位置,成爲歸檔日誌文件,此時數據庫還能進一步從介質失敗中恢復。即可將數據的損失減少到最小,可用性提高到最高。
特點:
a. 當ACRCHIVELOG模式時。可以對數據庫進行聯機的熱備份。
b. 當出現數據文件損壞時,除了SYSTEM表空間的數據文件,其他表空間都可以在數據庫處於OPEN時恢復。
c. 執行數據庫備份時,不僅可以進行完成恢復,也可以指定恢復到某個特定的時間點。
一、數據庫歸檔參數
通過ARCHIVE LOG LIST 查看數據庫的歸檔模式;
1. LOG_ARCHIVE_DUPLIEX_DEST與LOG_ARCHIVE_DEST_n
LOG_ARCHIVE_DEST用於指定第一個歸檔目標位置(主歸檔目標),n表示複本數量。如果只設置一個複本,當這個複本錯誤時候,則可以通過其他複本備用。(1<=n<=10)
LOG_ARCHIVE_DUPLIEX_DEST用於指定第二個歸檔目標位置(次歸檔目標),
這兩個參數的相排斥的,不能同時存在。
2. 啓動和禁用自動歸檔的參數
LOG_ARCHIVE_START(靜態參數):當數據庫從初始參數文件中讀取到這個參數的設置,系統自動啓動ARCn進程。
SHOW PARAMETER LOG_ARCHIVE_START:
ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;
在數據庫例程啓動後啓動或禁用自動歸檔功能。
ALTER SYSTEM ARCHIVE LOG START;
ALTER SYSTEM ARCHIVE LOG STOP;
1. 執行手動歸檔:
(1) 對所有沒有歸檔的重做日誌進行歸檔:
通過ALTER SYSTEM ARCHIVE LOG ALL;
(2) 當前的重做日誌文件進行歸檔:
ALTER SYSTEM ARCHIVE CURRENT
(3) 指定日誌序列號的重做日誌文件進行歸檔
ALTER SYSTEM ARCHIVE LOG SEQUCNE 56;
(4) 指定日誌組編號的重做日誌文件進行歸檔
ALTER SYSTEM ARCHIVE LOG GROUP 2
(5) 指定聯機的重做日誌文件進行歸檔
ALTER SYSTEM ARCHIVE LOG
LOGFILE 'D:/oracle/oradata/work/REDO01.LOG '
(6) 將下一個沒有歸檔的重做日誌文件組進行歸檔:
ALTER SYSTEM ARCHIVE LOG NEXT
2. 自動歸檔:自動歸檔後在存檔終點文件夾下有以下自動歸檔的文件
歸檔的日誌文件可以通過LOGMNR進行分析。
1. ARCn後臺進程的最大參數
LOG_ARCHIVE_MAX_PROCESSES(動態參數)最大10個後臺進程:
可以通過SELECT * FROM V$ARCHIVE_PROCESSES視圖查看
查詢歸檔信息:
與歸檔信息相關的視圖:
視圖 |
作用 |
V$DATABASE |
LOG_MODE字段歸檔模式 |
V$INSTANCE |
ARCHIVER字段是否正在歸檔 |
V$ARCHIVED_LOG |
從控制文件中獲取的所有歷史歸檔日誌文件信息 |
V$ARCHIVE_DEST |
歸檔目標位置的信息 |
V$ARCHIVE_PROCESSES |
歸檔進程的信息 |
V$BACKUP_REDOLOG |
所有已備份的歸檔日誌文件的信息 |
V$LOG |
所有重做日誌文件的信息,其中包含那些需要歸檔的重做日誌文件 |
V$LOG_HISTORY |
重做日誌文件的歷史信息 |
a.查看數據庫歸檔模式
b.查看數據庫是否正在歸檔
c.查看那些重做日誌需要歸檔
SELECT GROUP#,MEMBERS,SEQUENCE#,ARCHIVED,STATUS,FIRST_CHANGE#,
TO_CHAR(FIRST_TIME, 'YYYY-MM-DD HH24:MI:SS') FIRST_CHANGE_TIME
FROM V$LOG
d.查看歸檔目標位置的信息
SELECT DESTINATION,BINDING,TARGET,STATUS FROM V$ARCHIVE_DEST
e.查詢已歸檔的日誌文件信息(即是系統中存在的物理文件)
SELECT NAME,SEQUENCE#,ARCHIVED,STATUS,FIRST_CHANGE#,
TO_CHAR(FIRST_TIME, 'YYYY-MM-DD HH24:MI:SS') FIRST_CHANGE_TIME
FROM V$ARCHIVED_LOG