以前知道
ALTER SYSTEM SWITCH LOGFILE對單執行個體資料庫或RAC中的目前執行個體執行日志切換,
ALTER SYSTEM ARCHIVE LOG CURRENT會對資料庫中的所有執行個體執行日志切換,
是以在RAC環境上大多時間一般使用後者,而今天遇到了不管執行多少次ALTER SYSTEM ARCHIVE LOG CURRENT指令,日志就是不切換的情況

最後使用 ALTER SYSTEM SWITCH LOGFILE 進行強制切換才解決這個問題,而ALTER SYSTEM SWITCH LOGFILE這個指令需要去具體的節點執行,該指令單執行個體或目前節點有效
另外,SWITCH LOGFILE 隻是強制切換日志組,歸檔功能是否打開與之沒多大關系:
歸檔如果打開,切換日志組附帶着必然要歸檔,在開歸檔的情況下,日志切換必然會歸檔的
歸檔如果關閉,肯定不能歸檔了,但該功能同樣能切換日志組,因為它的功能就是強制切換日志組
而 archive log 則是歸檔的意思,常用的兩個參數:
alter system archive log current:歸檔目前的日志組,僅在歸檔模式下使用,因為是目前日志組,歸檔之前必先切換日志組,是以該指令伴随着切換日志組
alter system archive log all: 歸檔除目前日志組以外,尚未歸檔的日志組,僅在歸檔模式下使用,該指令不會切換日志組
非歸檔模式下使用則會報以下錯誤:
補充說明:非歸檔模式下就不能使用 ARCHIVE LOG了嗎?上面的ORA-00258提示說指定日志,相關參數如下:
ARCHIVE LOG
[ INSTANCE 'instance_name' ]
{ { SEQUENCE integer
| CHANGE integer
| CURRENT [ NOSWITCH ]
| GROUP integer
| LOGFILE 'filename'
[ USING BACKUP CONTROLFILE ]
| NEXT
| ALL
| START
}
[ TO 'location' ]
| STOP
}
非歸檔模式下可以使用該方式指定到具體的日志組進行歸檔,但group n 不能是目前日志組
SQL> alter system archive log group 2 to '/tmp';
總結:
ALTER SYSTEM SWITCH LOGFILE:就是切換日志,SWITCH(切換) ,LOGFILE(日志),就是字面的意思
ALTER SYSTEM ARCHIVE LOG CURRENT:就是歸檔目前日志,歸檔(ARCHIVE )日志(LOG)目前的(CURRENT),也是字面意思,
然後就是在不同的環境下(單機/RAC/是否開歸檔功能),由于功能設計的出發點不同,各自附帶的效果也有所不同。
本文轉自xiaocao1314051CTO部落格,原文連結:http://blog.51cto.com/xiaocao13140/1933628 ,如需轉載請自行聯系原作者