天天看點

ALTER SYSTEM SWITCH LOGFILE和ALTER SYSTEM ARCHIVE LOG CURRENT差別

以前知道

ALTER SYSTEM SWITCH LOGFILE對單執行個體資料庫或RAC中的目前執行個體執行日志切換,

ALTER SYSTEM ARCHIVE LOG CURRENT會對資料庫中的所有執行個體執行日志切換,

是以在RAC環境上大多時間一般使用後者,而今天遇到了不管執行多少次ALTER SYSTEM ARCHIVE LOG CURRENT指令,日志就是不切換的情況

ALTER SYSTEM SWITCH LOGFILE和ALTER SYSTEM ARCHIVE LOG CURRENT差別

最後使用 ALTER SYSTEM SWITCH LOGFILE 進行強制切換才解決這個問題,而ALTER SYSTEM SWITCH LOGFILE這個指令需要去具體的節點執行,該指令單執行個體或目前節點有效

ALTER SYSTEM SWITCH LOGFILE和ALTER SYSTEM ARCHIVE LOG CURRENT差別

另外,SWITCH LOGFILE 隻是強制切換日志組,歸檔功能是否打開與之沒多大關系:

     歸檔如果打開,切換日志組附帶着必然要歸檔,在開歸檔的情況下,日志切換必然會歸檔的

     歸檔如果關閉,肯定不能歸檔了,但該功能同樣能切換日志組,因為它的功能就是強制切換日志組

而 archive log 則是歸檔的意思,常用的兩個參數:

     alter system archive log current:歸檔目前的日志組,僅在歸檔模式下使用,因為是目前日志組,歸檔之前必先切換日志組,是以該指令伴随着切換日志組

     alter system archive log all: 歸檔除目前日志組以外,尚未歸檔的日志組,僅在歸檔模式下使用,該指令不會切換日志組

非歸檔模式下使用則會報以下錯誤:

ALTER SYSTEM SWITCH LOGFILE和ALTER SYSTEM ARCHIVE LOG CURRENT差別

補充說明:非歸檔模式下就不能使用 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 ,如需轉載請自行聯系原作者

上一篇: shell之函數