首先,从v$log动态视图中观察到ARC和STATUS两个字段
STATUS:分为CURRENT、ACTIVE和INACTIVE三种,当数据库进程DBWn进行一次写入,脏数据从内存刷写到redo logfile中,这时承载数据写入的redo logfile状态即为CURRENT;而数据从redo logfile拷贝到归档目录下时处于ACTIVE状态,完成数据从内存到硬盘的归档,redo logfile被重新置于INACTIVE状态下,循环往复。
ARCHIVED: 有YES和NO两种状态。分别表示对应重做日志组成员上的数据是否已经完成归档。没有完成归档的重做日志文件,在进行数据库恢复的时候可能需要用到。
下面使用案例来说明clear logfile与clear unarchived logfile的区别
当数据库的重做日志文件仅为两组时,不能通过删除和添加的方法来重建日志文件;这时只能清除重做日志文件
1、当前处于CURRENT状态的重做日志文件,包含了未归档的数据,未切换之前,不能进行删除和清除
2、ACTIVE状态的重做日志文件,已完成归档
SQL> select group#,thread#,archived,status from v$log;
GROUP# THREAD# ARC STATUS
---------- ---------- --- ----------------
1 1 YES INACTIVE
2 1 YES ACTIVE
3 1 NO CURRENT
4 1 YES INACTIVE
5 1 YES INACTIVE
SQL> alter database clear unarchived logfile group 2;
Database altered.
SQL> select group#,thread#,archived,status from v$log;
GROUP# THREAD# ARC STATUS
---------- ---------- --- ----------------
1 1 YES INACTIVE
2 1 YES UNUSED
3 1 NO CURRENT
4 1 YES INACTIVE
5 1 YES INACTIVE
3、INACTIVE状态的重做日志文件,已完成归档
SQL> select group#,thread#,archived,status from v$log;
GROUP# THREAD# ARC STATUS
---------- ---------- --- ----------------
1 1 NO CURRENT
2 1 YES ACTIVE
3 1 YES ACTIVE
4 1 YES INACTIVE
5 1 YES INACTIVE
SQL> alter database clear logfile group 5;
Database altered.
SQL> select group#,thread#,archived,status from v$log;
GROUP# THREAD# ARC STATUS
---------- ---------- --- ----------------
1 1 NO CURRENT
2 1 YES UNUSED
3 1 YES INACTIVE
4 1 YES INACTIVE
5 1 YES UNUSED
总结:clear logfile 只能用于重建未处于活动状态的重做日志文件,当不能通过删除和新增的方式来重建日志文件,这是一种非常重要的处理手段;而清除ACTIVE状态的重做日志,要使用clear unarchived logfile方式,若日志文件不能正常归档,是不能清除的。
标签:clear,INACTIVE,----------,YES,logfile,浅析,日志 From: https://www.cnblogs.com/tarvin/p/18100918/3b049a78-d8d5-4f76-8ab6-2dc465545bae