一.設置爲歸檔模式的步驟
1.正常關閉數據庫
2.把數據庫置於 mount狀態
3.把數據庫修改爲archivelog模式
4.打開數據庫
5.正常關閉數據庫,做一次全備份
sQL> conn / as sysdba
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 146472960 bytes
Fixed Size 1335080 bytes
Variable Size 92274904 bytes
Database Buffers 50331648 bytes
Redo Buffers 2531328 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/admin/wilson/test
Oldest online log sequence 114
Next log sequence to archive 116
Current log sequence 116
接下來,乾淨的關掉數據庫,做個全備份。
二.在10g中,當數據庫處於歸檔模式下時,還要設置兩參數:log_archive_star和log_archive_max_processes。
1.歸檔模式下,把online redo log複製到指定的位置有兩種方式,手動和自動。選擇哪種方式和參數log_archive_start有關,它爲ture,則爲自動;它爲false,則爲手動。推薦使用自動方式。
2.在自動歸檔模式中,有多少個ARC進程來參與,由參數log_archive_max_processes來確定。
三.實例運行狀態下,自動歸檔方式和手動歸檔方式的相互轉變。
1.可以用命令archive log list 來查看歸檔的方式,
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/admin/wilson/test
Oldest online log sequence 116
Next log sequence to archive 118
Current log sequence 118
2.如果開始在參數log_archive_star=false(手動方式)的情況下運行了數據庫,怎麼修改爲自動方式?
先建立個文件,來存放歸檔日誌,在/u01/admin/wilson/目錄下建立文件夾arcdest。
然後
SQL> alter system archive log start to '/u01/admin/wilson/archdest';
System altered.
現在就是自動方式歸檔了,
SQL> alter system set log_archive_start=true scope=spfile;
System altered.
修改了初始化參數 log_archive_start=true ,下次重新啓動還是動方式歸檔。
3.把自動方式改爲手動方式,
SQL> alter system archive log stop;
System altered.
SQL> alter system set log_archive_start=false scope=spfile;
System altered.
在這裏要說明一下,在11g中,只要處於Archivelog模式中,那麼它的歸檔方式就爲自動方式,沒有了自動方式歸檔和手動方式的轉換。
在歸檔模式下,在一組online redo log 被覆蓋之前,必須先將其歸檔到指定的地方,不然數據庫會hang在那裏!!!
四.歸檔文件的路徑
1.在較早的版本中,位置由參數log_archive_dest和log_archive_duplex_dest來指定,只能是兩個。在數據庫的標準版中,則必須使用它們。
2.現在使用參數log_archive_dest_n來指定,最多可以指定10個(n=1...10),只能在企業版數據庫中使用。
主要介紹log_archive_dest_n對於log_archive_dest_n,有
log_archive_dest_1=”location=/archive/ mandatory”
log_archive_dest_1=”location=/archive/ optional”
log_archive_dest_2=”service=standy_db1”
其中location是本地地址,service是網絡遠端地址,
Mandatory表示在一個online redo log file 在被重寫之前,它必須先歸檔到這個地址,
Optional表示即使一個online redo log file沒有歸檔到這個地址,它也可以被重寫。
3.對於參數log_archive_min_succeed_dest,如
log_archive_min_succeed_dest=2,則表示在一個online redo log file 在被重寫之前,它必須先歸檔到2個地方。
結合着參數log_archive_dest_n 和log_archive_min_succeed_dest來看,在一個online redo log file 在被重寫之前,它必須完成:
(1)全部成功寫入到帶mandatory參數的歸檔地址。
(2)成功歸檔的地址要大於或者等於log_archive_min_succeed_dest所規定的數值。
也就是說如果(1)歸檔的地址數目大於(2)中的數值,則(2)中所規定的數值忽略,以(1)爲準。如果(2)中規定的數值大於(1)中的數值,首先(1)全部要歸檔成功,然後還要達到(2)中所歸檔的數值。
4.log_archive_dest_state_n可以動態的控制一個歸檔地址是否有效。
如
log_archive_dest_state_1=enable表示log_archive_dest_1的歸檔地址可以被使用。
log_archive_dest_state_2=defer表示log_archive_dest_2的歸檔地址不可以被使用
log_archive_dest_state_3=alternate 表示log_archive_dest_3的歸檔地址當前不可以被使用,但
是當有另一個地址失效時,它自動成爲可以使用地址。
5.歸檔文件名的格式
log_archive_dest_n規定了歸檔文件的地址目錄,但是真正的文件名格式由參數log_archive_format來設置。
例如 /u01/admin/wilson/test/ wilson_%t_%S_%r.arc
其中 /u01/admin/wilson/test由log_archive_dest_n規定,wilson_%t_%S_%r.arc由log_archive_format規定。
(1)%t:線程號,顯示爲V$instance視圖thread#列,在RAC數據庫有用,單實例中爲1。
(2)%s或者%S:表示日誌切換序列號,這個變量能夠保證任何一個數據庫中的歸檔日誌都不會彼此重寫。%S的意思是每個序列號一樣長,10位,不夠長度,前面補零。
(3)%r:場景號,如果進行了不完全恢復,這個變量就十分重要。
11g中文件名的格式規定必須要上述三個:%s或者%S,%t,%r。
舉個例子:
先在/u01/admin/wilson中建立個test的文件,
SQL> alter system set log_archive_dest_1="location=/u01/admin/wilson/archtest";
System altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/admin/wilson/archtest
Oldest online log sequence 116
Next log sequence to archive 118
Current log sequence 118
顯示Archive destination修改了。
SQL> alter system set log_archive_format="sun_%t_%S_%r.arc" scope=spfile;
System altered.
關閉重啓,
SQL> show parameter archive
log_archive_duplex_dest string
log_archive_format string sun_%t_%S_%r.arc
log_archive_local_first boolean TRUE
log_archive_max_processes integer 4
log_archive_min_succeed_dest integer 1
log_archive_start boolean TRUE
log_archive_trace integer 0
standby_archive_dest string ?/dbs/arch
可以看到log_archive_format 改變了。
SQL> alter system switch logfile;
System altered.
SQL> !ls -l /u01/admin/wilson/archtest
total 7720
-rw-r----- 1 oracle oinstall 7624192 Aug 17 01:04 sun_1_0000000118_805499090.arc
-rw-r----- 1 oracle oinstall 241664 Aug 17 01:10 sun_1_0000000119_805499090.arc
-rw-r----- 1 oracle oinstall 5632 Aug 17 01:11 sun_1_0000000120_805499090.arc
可以看到歸檔文件的格式。