設置數據庫歸檔模式

 

設置數據庫歸檔模式:

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 altered.
 
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Disabled
Archive destination            /u01/oracle/dbs/arch
Oldest online log sequence     8
Next log sequence to archive   10
Current log sequence           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    4457     1 0 11:04 ?        00:00:00 ora_arc0_lll
oracle    4459     1 0 11:04 ?        00:00:00 ora_arc1_lll
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>
手動啓動archive log mode
SQL> show parameter log_archive_start   
NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------------
log_archive_start                    boolean     FALSE
 
SQL> alter system archive log start to '/u01/oradata/lll/aa/';
#如果不指定目標目錄則缺省歸檔到Archive destination(archive log list命令中所指示的)目錄,若該目錄不存在則歸檔到/ORACLE_HOME/dbs下。
System altered.
 
SQL> !ps -ef | grep oracle
。。。 。。。
oracle    8615     1 0 07:06 ?        00:00:00 ora_arc0_lll
oracle    8617     1 0 07:06 ?        00:00:00 ora_arc1_lll
 
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/oracle/dbs/arch
Oldest online log sequence     8
Next log sequence to archive   10
Current log sequence           10
 
SQL> alter system switch logfile;
 
System altered.
 
SQL> alter system switch logfile;
 
System altered.
 
SQL> alter system switch logfile;
 
System altered.
 
$ 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
 
ALTER SYSTEM ARCHIVE LOG
 手動歸檔是由server process來執行歸檔操作.

SQL> alter system archive log stop;
 
System altered.
 
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Disabled
Archive destination            /u01/oracle/dbs/arch
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/';
#不指定目標則用缺省路徑
System altered.
 
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;
 
System altered.
 
SQL> select group#,status from v$log; 
 
    GROUP# STATUS
---------- ----------------
         1 ACTIVE
         2 CURRENT
         3 INACTIVE
歸檔目錄參數
使用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 來填補空位使該值長度保持固定。
相關視圖
V$ARCHIVED_LOG
V$LOG_HISTORY
V$DATABASE
V$ARCHIVE_PROCESSES
V$ARCHIVE_DEST
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章