以前知道
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/是否開歸檔功能),由於功能設計的出發點不同,各自附帶的效果也有所不同。