原創轉載請注明地址
歸檔日志:非活動的重做日志,用來保存所有的重做歷史記錄。
什么時候寫歸檔日志:當數據庫處於archivelog模式並重做日志切換的時候,后台進程ARCH會啟動將重做日志的內容完整的保存到歸檔日志中。
日志操作模式:
NOARCHIVELOG模式不保留重做日志記錄的歷史,只能保護例程失敗不能保護介質失敗。
特點:
LGWR進程寫日志時候覆蓋原先的重做日志內容
如果日志內容被覆蓋,只能恢復到過去完整備份的點
執行數據庫備份時候,必須關閉數據庫
執行備份時候,必須備份所有數據文件和控制文件
ARCHIVELOG模式保留重做日志記錄的歷史,不僅能保護例程失敗而且可以保護介質失敗。
特點:
出現數據文件丟失損壞,可以防止數據丟失。
數據庫處於open狀態的時候,也可以備份數據庫
出現數據文件損壞的時候可以在Open狀態下進行恢復
執行數據庫恢復的時候,可以進行不完整恢復,基於(SCN,時間點,日志序列號)等等
選擇:如果數據庫用於生產環境並且數據變化頻繁應該采用ARCHIVELOG模式
查看數據庫的日志模式:
SQL> SELECT LOG_MODE FROM V$DATABASE;
LOG_MODE
------------
ARCHIVELOG
顯示歸檔日志信息:
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 18
Next log sequence to archive 20
Current log sequence 20
SQL> col name format a40
SQL> select name,sequence#,first_change# from v$archived_log;--顯示歸檔日志信息
NAME SEQUENCE# FIRST_CHANGE#
---------------------------------------- ---------- ------------------
/home/oracle_11/app/flash_recovery_area/ 13 989430
ORCL/archivelog/2014_03_07/o1_mf_1_13_9k
m0lbfq_.arc
/home/oracle_11/app/flash_recovery_area/ 14 1017107
ORCL/archivelog/2014_04_24/o1_mf_1_14_9o
l713oz_.arc
/home/oracle_11/app/flash_recovery_area/ 15 1049472
ORCL/archivelog/2014_04_28/o1_mf_1_15_9o
wmkc6r_.arc
NAME SEQUENCE# FIRST_CHANGE#
---------------------------------------- ---------- ------------------
/home/oracle_11/app/flash_recovery_area/ 16 1073533
ORCL/archivelog/2014_04_29/o1_mf_1_16_9o
z8143l_.arc
/home/oracle_11/app/flash_recovery_area/ 17 1098869
ORCL/archivelog/2014_05_04/o1_mf_1_17_9p
dcvm77_.arc
/home/oracle_11/app/flash_recovery_area/ 18 1124400
ORCL/archivelog/2014_05_05/o1_mf_1_18_9p
NAME SEQUENCE# FIRST_CHANGE#
---------------------------------------- ---------- ------------------
gnc6gx_.arc
/home/oracle_11/app/flash_recovery_area/ 19 1158501
ORCL/archivelog/2014_05_05/o1_mf_1_19_9p
h2d9d9_.arc
SQL>select destination from v$archive_dest;--歸檔日志位置
(注意:oracle10默認是把存檔終點設置為USE_DB_RECOVERY_FILE_DEST,所以歸檔日志默認是保存在oracle系統的閃回恢復區(Flash recovery area)的。
默認的db_recovery_file_dest是2G,由於歸檔日志太大,撐滿了閃回恢復區,啟動數據報ORA-00257錯誤,
所以一般建議將存檔終點修改為操作系統的適當目錄。)
改變數據庫歸檔模式:
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE ARCHIVELOG|NOARCHIVELOG
ALTER DATABASE OPEN
手動歸檔:
ALTER DATABASE ARCHIVELOG MANUAL
ALTER SYSTEM ARCHIVELOG ALL|CURRENT
配置歸檔日志進程 :ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3(默認進程數目為2,
一般不需要修改該參數,Oracle會根據歸檔情況自動啟動額外的歸檔進程)
配置歸檔日志位置:默認歸檔日志位於db_recovery_file_dest 缺省為$ORACLE_BASE/flash_recovey_area
配置1-2個:
ALTER SYSTEM SET LOG_ARCHIVE_DEST='路徑';
ALTER SYSTEM SET LOG_ARCHIVE_duplex_DEST='路徑';
配置多個:
ALTER SYSTEM SET LOG_ARCHIVE_DEST='';
ALTER SYSTEM SET LOG_ARCHIVE_duplex_DEST='';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='location=路徑'
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='location=路徑'
ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='location=路徑'
ALTER SYSTEM SET LOG_ARCHIVE_DEST_4='service=standby'
( 對於遠程歸檔位置,SERVICE選項需要指定遠程數據庫的網絡服務名(在tnsnames.ora文件中配置))
歸檔日志命名格式
設置LOG_ARCHIVE_FORMAT參數,Unix下的缺省設置為LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf
%s: 日志序列號:
%S: 日志序列號(帶有前導)
%t: 重做線程編號.
%T: 重做線程編號(帶有前導)
%a: 活動ID號
%d: 數據庫ID號
%r RESETLOGS的ID值.
alter system set log_archive_format = 'arch_%t_%s_%r.arc';