Archive log在Oracle的生產環境中是一定會啟用的,尤其是OLTP的環境,每天大量的交易記錄,為確保線上資料保存完整性,以及資料復原後的最大有效性,除考量儲存容量大小,再來就是存放位置的設定。
Archive log的存放位置可以使用兩種設定方式:
- 使用log_archive_dest和log_archive_duplex_dest配置
如果不使用Data Guard架構,單純是Single Instnace環境,則只需要將Archive log存放到本地目錄即可。配置本地位置使用參數:LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,前者是設定第一個歸檔位置,後者用於設定第二個Archive log位置。例如:
SQL> ALTER SYSTEM SET log_archive_dest=’/u02/archive’;
SQL> ALTER SYSTEM SET log_archive_duplex_dest=’/u02/archive2’;
2. 使用log_archive_dest_n配置多個存放位置
這是我們最常使用也是最熟悉的設定方式。參數:LOG_ARCHIVE_DEST_n用於指定多個存放位置,並最多可以指定10個位置。通過設定參數LOG_ARCHIVE_DEST_n,除可以配置本地位置,還可以配置遠端Archive log位置,如果同時要在主庫上產生Archive log,又要將Archive log傳送到備援端,亦即Physical Standby Database,則必須使用此設定方式。
那麼這2種設定有何異同之處呢?
1> 方法2 可以配置本地和遠端Archive log目錄,而方法1 只能用於配置本地目錄。
2> 方法2 可以配置最多10個目錄,方法1最多只能配置2個本地Archive log目錄。
3> 方法1 的log_archive_dest是強制(MANDATORY)Archive log目錄,且不能使用REOPEN關鍵字;log_archive_duplex_dest則為可選擇的(OPTIONAL)Archive log目錄。
4) 方法1與方法2二者只能選一種方式設定,不能同時設定存在,如果為SE2版本不能設定Data Guard,當然使用方法1即可,但方法2還是最多使用的設定方式。
另外就是當使用LOG_ARCHIVE_DEST_n配置本地存放位置時,需要指定LOCALTION選項,而當配置遠端位置時,則需要指定SERVICE選項,例如:
SQL> ALTER SYSTEM SET log_archive_dest_1=’location=/u02/archive’;
SQL> ALTER SYSTEM SET log_archive_dest_2=’location=/u02/archive2’;
SQL> ALTER SYSTEM SET log_archive_dest_3=’service=SOLDBS-TNS’;
其中配置遠端Archive log位置時,SERVICE選項需要指定Physical Standby Database的TNS Name,即在tnsnames.ora檔案中所配置。
這裡會出現一個現象,就是如上設定2個本地位置後,我們看到Archive destination 的位置會跑到log_archive_dest_2 所設定的本地目錄上,而其實log_archive_dest_1和log_archive_dest_2都會同時產生相同的Archive log,當然如果是之後才加上的log_archive_dest_n的路徑,就只會從設定後產生的新Archvie log開始存放到新的目錄上。
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u02/archive2
Oldest online log sequence 112
Next log sequence to archive 114
Current log sequence 114
殊途同歸,了解原理,依照正確方式設定就不會有問題,Archive log在Oracle是很重要的歸檔日誌,因此位置設定及容量大小需時時關注,尤其當空間被佔滿時,LGWR無法動作,此時DB也就無法繼續動作了。