一、 什麼是Oracle歸檔模式:
Oracle數據庫有聯機重做日誌,這個日誌是記錄對數據庫所做的修改,比如插入,刪除,更新數據等,對這些操作都會記錄在聯機重做日誌裏。一般數據庫至少要有2個聯機重做日誌組。當一個聯機重做日誌組被寫滿的時候,就會發生日誌切換,這時聯機重做日誌組2成爲當前使用的日誌,當聯機重做日誌組2寫滿的時候,又會發生日誌切換,去寫聯機重做日誌組1,就這樣反覆進行。
如果數據庫處於非歸檔模式,聯機日誌在切換時就會丟棄. 而在歸檔模式下,當發生日誌切換的時候,被切換的日誌會進行歸檔。比如,當前在使用聯機重做日誌1,當1寫滿的時候,發生日誌切換,開始寫聯機重做日誌2,這時聯機重做日誌1的內容會被拷貝到另外一個指定的目錄下。這個目錄叫做歸檔目錄,拷貝的文件叫歸檔重做日誌。
數據庫使用歸檔方式運行時纔可以進行災難性恢復。
二、如何啓動和關閉歸檔模式
1) pfile和spfile 參數中有關歸檔模式的選項(init.ora)
log_archive_start = true ##歸檔模式是自動還是手工,true爲自動,false爲手工
log_archive_dest_1 = "location=D:/Oracle/oradata/oradb/archive" ##歸檔日誌文件所保存的路徑,可以設定多個路徑
log_archive_format = "%%ORACLE_SID%_%T%_TS_%S.ARC" ##歸檔日誌文件的命名方法,
2) 如果是用spfile方式啓動的實例,需要動態設定參數,依照下面步驟:
SQL> conn / as sysdba;
SQL> alter system set log_archive_format='arc_%t_%s_%r.dbf' scope=spfile;
System altered.
SQL> alter system set log_archive_dest_1 = "location=/opt/app/oracle/oradata/arclog" scope=spfile;
System altered.
SQL> startup force mount;
SQL> alter database archivelog; ##起用歸檔模式
SQL> alter database open; ##打開數據庫
SQL> archive log list -- 觀看日誌文件點
SQL> alter system switch logfile;
##強制系統進行日誌切換,可馬上觀察到歸檔日誌的產生語句已處理。
SQL> archive log list
3) 如果是用pfile方式啓動的實例,首先要在init.ora 文件中添加上面選項,再依照下面步驟
編輯init.ora文件,增加三個參數
log_archive_start = true
log_archive_dest_1 = "location=/opt/app/oracle/oradata/arclog"
log_archive_format = "arc_%t_%s_%r.dbf"
SQL> conn / as sysdba;
SQL> shutdown immediate;
SQL> startup pfile=’%oracle_home%/init.ora mount;
SQL> alter database archivelog; ##起用歸檔模式
SQL> alter database open; ##打開數據庫
4)停止歸檔:
SQL> conn / as sysdba;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database noarchivelog; --關閉歸檔模式
SQL> alter database open;