最近在给生产库做rman备份,在网上参考了一些备份脚本,很多脚本都使用以下语句:alter system archive log current ,对此存在不少疑惑,通过实验及网上搜索总结如下:

   alter system switch logfile ;
对单实例数据库或RAC中的当前实例执行强制日志切换,归档当前重做日志,Oracle9i之前如果自动归档没有开启,就不归档当前重做日志文件 。

alter system archive log current ;
对数据库中的所有实例执行日志切换(只归档当前日志)。是归档当前的重做日志文件,不管自动归档有没有打开都归档,

一般的RMAN脚本都是添加以上语句,因为RMAN是可以备份归档日志的。alter system archive log current 这样后就可以将所有的归档都备份出来了。这样做是为了保证数据的完整和一致。


alter system archive log all 
对数据库中的非当前未归档日志进行归档,不负责归档current日志。设一个繁忙的系统中
有日志6个组,分别是group1~6;当前的日志组是group5,而归档进程正在操作group3的内容,未写完;这个时候group4就是未归档的非当前日志。


-------------------------------------------------------- 
在Oracle9i及以前版本,在ARCHIVELOG模式下,LOG_ARCHIVE_START=FALSE时,系统在循环到第一组没有归档的log时,系统会hang住,必须靠DBA手工一个个去归档,如果log group数量多,直接运 ALTER SYSTEM ARCHIVE LOG ALL; 就可以了。

如果 LOG_ARCHIVE_START=TRUE时,一般情况下只要运行:ALTER SYSTEM ARCHIVE LOG CURRENT;
-------------------------------------------------------- 

log_archive_start参数在10g中被废弃 --

在Oracle10g中,log_archive_start参数已经被废弃,只要启动数据库的归档模式,Oracle就会启用自动归档,避免了10g以前由于用户疏忽所带来的一些问题。

所以在10g后版本进行rman备份,可以不使用alter system archive log current 也能保证数据完整一致性。

参考:http://jimn1982.blog.163.com/blog/static/1558640201081044846150/