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命令,日志就是不切换的情况

image

最后使用 ALTER SYSTEM SWITCH LOGFILE 进行强制切换才解决这个问题,而ALTER SYSTEM SWITCH LOGFILE这个命令需要去具体的节点执行,该命令单实例或当前节点有效

image

另外,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/是否开归档功能),由于功能设计的出发点不同,各自附带的效果也有所不同。

原文地址:https://www.cnblogs.com/perfei/p/6178718.html