在默認情況下皂贩,oracle數(shù)據(jù)庫是在非歸日志檔模式中創(chuàng)建的更耻,在非歸檔日志模式中,進行日志切換時會直接重寫redo log萝究,如果此時數(shù)據(jù)文件因為介質(zhì)失敗被損壞免都,則數(shù)據(jù)庫恢復時會丟失掉被重寫的數(shù)據(jù);在歸檔日志模式下帆竹,數(shù)據(jù)庫可以應用最近一次數(shù)據(jù)庫備份開始生成的所有歸檔日志文件绕娘,保證數(shù)據(jù)無丟失;大部分的生產(chǎn)數(shù)據(jù)庫以archivelog模式運行栽连。
oracle數(shù)據(jù)庫在開啟歸檔日志模式后险领,會自動啟動新的進程:歸檔器ARCn。默認情況下是開啟4個進程秒紧,在實際應用中最多可以啟動30個歸檔器進程绢陌。
[oracle@dbserver1 archivelog]$ ps -ef | grep -i ora_
oracle 26567 1 0 08:48 ? 00:00:00 ora_arc0_orcl
oracle 26573 1 0 08:48 ? 00:00:00 ora_arc1_orcl
oracle 26575 1 0 08:48 ? 00:00:00 ora_arc2_orcl
oracle 26577 1 0 08:48 ? 00:00:00 ora_arc3_orcl
開啟歸檔模式的步驟如下:
1.創(chuàng)建歸檔日志目錄
mk /u01/app/oracle/oradata/orcl/archivelog
2.設(shè)置實例參數(shù)
從9i開始后,oracle數(shù)據(jù)庫可以指定10個歸檔目的地熔恢,但實例log_archive_dest_n中的n最大為30脐湾,通常情況下需要指定2個或者多個歸檔目的地來多路復用歸檔日志文件;在理想情況下叙淌,這些歸檔日志文件應當位于不同的磁盤存儲上秤掌;實際應用中,一般還是指定一個凿菩,非常重要的數(shù)據(jù)庫一般有data guard來保證高可用性机杜。
SQL> show parameter log_archive_dest_
實例參數(shù)log_archive_format中嵌入的變量可以確保生成的歸檔日志文件名是唯一的。
變量 | 描述 |
---|---|
%d | 唯一的數(shù)據(jù)看標志符衅谷,如果多個數(shù)據(jù)庫歸檔到同一目錄椒拗,這是必須要的 |
%t | 線程號,適用于RAC數(shù)據(jù)看获黔,無實際意義 |
%r | 場景(incarnation)號蚀苛,在不完全恢復時需要用到 |
%s | 日志切換序列號,保證同一個庫中的歸檔日志不會彼此重寫 |
修改操作步驟如下:
connect / as sysdba
SQL>alter system set log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/archivelog' scope = spfile;
SQL>alter system set log_archive_format='arch_%d_%t_%r_%s.log' scope = spfile;
3.重啟數(shù)據(jù)庫并開啟歸檔日志模式
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
4.確認數(shù)據(jù)庫是否為歸檔模式
SQL>select log_mode from v$database;
SQL>select archiver from v$instance;
5.切換日志檢查歸檔日志是否正常
SQL>alter system switch logfile;
SQL>select name from v$archived_log;