<b>設定資料庫歸檔模式:</b>
<a target="_blank" href="http://blog.51cto.com/attachment/201005/212620340.png"></a>
SQL> startup mount
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u01/oracle/dbs/arch
Oldest online log sequence 8
Current log sequence 10
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database log mode Archive Mode
Next log sequence to archive 10
•自動歸檔:LOG_ARCHIVE_START=TRUE
•手動歸檔:LOG_ARCHIVE_START=FALSE
•在決定歸檔模式(自動或手動)之前,必須将資料庫設定為ARCHIVELOG 模式。
•如果未切換到ARCHIVELOG 模式,将導緻ARCn 無法複制重做日志檔案。
•啟用歸檔程序之前,應徹底關閉資料庫(使用正常、立即或事務處理選項)。
注:如果由于某種原因導緻歸檔程序(ARCn) 失敗,一旦事務處理活動填滿了所有重做日志,Oracle 伺服器就會停止。将資料庫設定為ARCHIVELOG 模式将通知Oracle 伺服器不要覆寫聯機重做日志,除非這些日志已經歸檔。是以,聯機重做日志的歸檔必須與系統中的事務處理活動(生成重做日志)保持同步。
使用LOG_ARCHIVE_MAX_PROCESSES 參數最多可指定十個ARCn 程序。
将LOG_ARCHIVE_START 設定為TRUE 後,Oracle 例程将按照LOG_ARCHIVE_MAX_PROCESSES 定義的數量啟動多個歸檔程序。可以衍生更多歸檔程序,隻要不超過由LOG_ARCHIVE_MAX_PROCESSES 設定的值,也可随時終止歸檔程序.
SQL> show parameter archive
……
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_duplex_dest string
log_archive_format string %t_%s.dbf
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean TRUE
log_archive_trace integer 0
remote_archive_enable string true
standby_archive_dest string ?/dbs/arch
SQL> !ps -ef | grep arch
oracle 4457 1 0 11:04 ? 00:00:00 ora_arc0_lll
oracle 4459 1 0 11:04 ? 00:00:00 ora_arc1_lll
SQL> alter system set log_archive_max_processes=4 scope=memory;
System altered.
SQL> !ps -ef | grep oracle
oracle 4463 3379 0 11:04 ? 00:00:00 oraclelll (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 4473 1 0 11:05 ? 00:00:00 ora_arc2_lll
oracle 4475 1 0 11:05 ? 00:00:00 ora_arc3_lll
SQL>
<b>手動啟動archive log mode</b>
SQL> show parameter log_archive_start
------------------------------------ ----------- --------------------
log_archive_start boolean FALSE
SQL> alter system archive log start to '/u01/oradata/lll/aa/';
#如果不指定目标目錄則預設歸檔到Archive destination(archive log list指令中所訓示的)目錄,若該目錄不存在則歸檔到/ORACLE_HOME/dbs下。
。。。 。。。
oracle 8615 1 0 07:06 ? 00:00:00 ora_arc0_lll
oracle 8617 1 0 07:06 ? 00:00:00 ora_arc1_lll
Database log mode Archive Mode
Automatic archival Enabled
SQL> alter system switch logfile;
$ ll /u01/oradata/lll/aa
total 21656
-rw-r----- 1 oracle oinstall 22109696 May 9 11:11 1_12.dbf
-rw-r----- 1 oracle oinstall 31744 May 9 11:11 1_13.dbf
-rw-r----- 1 oracle oinstall 3072 May 9 11:12 1_14.dbf
<b>ALTER SYSTEM ARCHIVE LOG</b>
手動歸檔是由server process來執行歸檔操作.
<a target="_blank" href="http://blog.51cto.com/attachment/201005/212646955.png"></a>
SQL> alter system archive log stop;
SQL> archive log list;
Database log mode Archive Mode
Oldest online log sequence 13
Next log sequence to archive 15
Current log sequence 15
SQL> alter system archive log current to '/u01/oradata/lll/aa/';
#不指定目标則用預設路徑
SQL> !
[oracle@localhost ~]$ ls /u01/oradata/lll/aa
1_15.dbf
Tips:如果archive log檔案沒有足夠的存儲空間了存儲新資料的時候,oracle将無法工作。是以在做資料導入導出之類的工作前最好先确認這個空間是否足夠。
注意:在執行alter system archive log current時會發生switch logfile。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 ACTIVE
SQL> alter system archive log current;
SQL> select group#,status from v$log;
1 ACTIVE
2 CURRENT
3 INACTIVE
<b>歸檔目錄參數</b>
•使用LOG_ARCHIVE_DEST_n 最多可指定十個歸檔目标。在企業版中才有效,在Oracle8i 中,您最多可定義5 個目标。LOG_ARCHIVE_DEST 和LOG_ARCHIVE_DUPLEX_DEST(備份目錄)參數是另一種指定目錄方法,不推薦使用。
log_archive_dest_1 = "LOCATION=/archive1":使用并且隻能是本地磁盤。
log_archive_dest_2 = "SERVICE=standby_db1":使用遠端備用資料庫,service的值為tnsnames.ora中定義的服務名。隻能為每個遠端資料庫指定一個歸檔目标。必須為至少一個目标指定LOCATION 參數。
log_archive_dest_1="LOCATION=/archive/ MANDATORY REOPEN"
log_archive_dest_2="SERVICE=standby_db1 MANDATORY REOPEN=600"
log_archive_dest_3="LOCATION=/archive2/ OPTIONAL"
• MANDATORY 表示必須成功完成歸檔到該目标的操作才可以覆寫聯機重做日志檔案。
• OPTIONAL 表示即使聯機重做日志檔案尚未成功地歸檔到該目标,也可以重新使用。這是預設設定。
• REOPEN 屬性定義發生故障時是否必須重新嘗試歸檔到目标。如果為關鍵字REOPEN指定了值,如REOPEN=600,則若發生故障,在經過指定時間(以秒計)後,歸檔程式将嘗試寫入該目标。預設值為300 秒。歸檔到目标的嘗試次數沒有限制。歸檔中的所有錯誤将在主站點的alert檔案中報告。
•如果未指定REOPEN,則可選目标(指定了optional參數)上的錯誤将被記錄并忽略。不再将重做日志發送到這些目标。在歸檔成功之前,強制目标上的錯誤将導緻無法重新使用聯機重做日志。隻要歸檔不成功,歸檔目标的狀态就設定為ERROR。
•可以使用聯機重做日志檔案之前需要成功歸檔的目标數量是根據以下設定決定的:
定義為MANDATORY 的目标的數量
LOG_ARCHIVE_MIN_SUCCEED_DEST 參數的值。該參數用于為需要歸檔的本地目标數指定一個下限值。如果該值小于強制本地目标的數量,則它對歸檔行為沒有影響。如果該值大于強制本地目标的數量,則本地歸檔目标的數量必須至少等于該值,才可以重新使用聯機重做日志檔案。
例:假定LOG_ARCHIVE_MIN_SUCCEED_DEST 設定為2 。如果強制本地目标的數量為3,則必須歸檔這3 個位置,才可以重新使用聯機重做日志檔案。相反,如果強制本地歸檔目标的數量為1,則必須至少歸檔1 個可選本地歸檔目标,才可以重新使用聯機重做日志檔案。也就是說,LOG_ARCHIVE_MIN_SUCCEED_DEST 可以用于歸檔到一個或多個可選強制目标,但反過來不行。
LOG_ARCHIVE_DEST_STATE_n 參數:
例:
LOG_ARCHIVE_DEST_STATE_2 = DEFER
LOG_ARCHIVE_DEST_STATE_2 = ENABLE
ALTER SYSTEM SET log_archive_dest_state_3 = ENABLE;
ALTER SYSTEM SET log_archive_dest_state_3 = DEFER;
•歸檔目标的狀态可以動态地進行更改。預設情況下,歸檔目标是ENABLE 狀态,表明Oracle 伺服器可以使用該目标。
•歸檔目标的狀态可以通過設定相應的LOG_ARCHIVE_DEST_STATE_n 參數來進行修改。例如,要在發生錯誤時暫時停止歸檔到強制位置,可以将該目标的狀态設定為DEFER。在參數檔案中可能定義了一個目标,但它設定為DEFER。當另一目标出現錯誤或需要維護時,可以啟用該目标。
注:如果一個目标的狀态設定為DEFER,則不會執行歸檔到該目标的操作。如果該目标的狀态更改為ENABLE,則必須手動将所有缺失的日志歸檔到該目标。
•使用LOG_ARCHIVE_FORMAT 可在檔案名中包括日志序列号和線程号。
檔案名選項
• %s 或%S:包括日志序列号,作為檔案名的一部分。
• %t 或%T:包括線程号,作為檔案名的一部分。
•使用%S 可通過在值的左側用0 來填補空位使該值長度保持固定。
<b>相關視圖</b>
V$ARCHIVED_LOG
V$LOG_HISTORY
V$DATABASE
V$ARCHIVE_PROCESSES
V$ARCHIVE_DEST
本文轉自 d185740815 51CTO部落格,原文連結:http://blog.51cto.com/luotaoyang/317163,如需轉載請自行聯系原作者