redo logfile 的不同状态

一、V$LOG:STATUS 指的是GROUP的状态
UNUSED:尚未记录change的空白group
CURRENT: 当前正在被LGWR使用的group(同时是ACTIVE状态)
ACTIVE: 未被LGWR写,instance recovery需要的。
INACTIVE:online,未被LGWR写,对recovery不再有用了。
CLEARING:正在被clear的group
CLEARING_CURRENT:一个正在被clear的CURRENT group

二、V$LOGFILE:STATUS指的是member的状态
INVALID: 不能使用的member,可能损坏了(另外,刚加入到redolog group的日志文件在被使用之前也是这个状态)
STALE: 见下面解释
DELETED:被alter database drop logfile member的member
BLANK: 正常的都是blank,不管是否被写。


下面是对metalink上对stale的解释
Log files may have a status of stale regardless of redo log mirroring or
archival mode.

Solution Description:
=====================

In general, the stale status of a redo log member should not be a cause for
great concern, unless you observe that this happens frequently or
systematically. Keep in mind that a stale log is not necessarily an invalid
log, but more of an "in-doubt" one. Once the corresponding redo group becomes
the current one again, the stale status will go away by itself.

下面是一个例子:
logfile中有两个file为stale状态,当发生日志切换时,group1变成current状态,从而,group1下的logfile变成
blank(正常状态)
另外,这个例子也展示了logfile group从active到inactive的变化。
当发生switch logfile前,group5为current状态,switch logfile后,group5变为active状态,这说明recovery时
group5是有用的,同时也说明logfile时发生的不是完全检查点。
当手工发生检查点后,group5从active变为了inactive状态,此时,group5对recovery不再有用。这说明:
alter system checkpoint发生的是完全检查点。
SQL> l
1* select * from v$logfile
SQL> /
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ----------------------------------------
1 STALE ONLINE /opt/oracle/oradata/userlog2/redo01.log
2 STALE ONLINE /opt/oracle/oradata/userlog2/redo02.log
3 ONLINE /opt/oracle/oradata/userlog2/redo03.log
4 ONLINE /opt/oracle/oradata/userlog2/redo04.log
5 ONLINE /opt/oracle/oradata/userlog2/redo05.log
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 21 20971520 1 NO INACTIVE 704228 07-AUG-06
2 1 22 20971520 1 NO INACTIVE 753376 07-AUG-06
3 1 23 20971520 1 NO INACTIVE 785843 07-AUG-06
4 1 24 20971520 1 NO INACTIVE 868923 08-AUG-06
5 1 25 20971520 1 NO CURRENT 951980 10-AUG-06
SQL> alter system switch logfile;
System altered.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ----------------------------------------
1 ONLINE /opt/oracle/oradata/userlog2/redo01.log
2 STALE ONLINE /opt/oracle/oradata/userlog2/redo02.log
3 ONLINE /opt/oracle/oradata/userlog2/redo03.log
4 ONLINE /opt/oracle/oradata/userlog2/redo04.log
5 ONLINE /opt/oracle/oradata/userlog2/redo05.log
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 26 20971520 1 NO CURRENT 994126 10-AUG-06
2 1 22 20971520 1 NO INACTIVE 753376 07-AUG-06
3 1 23 20971520 1 NO INACTIVE 785843 07-AUG-06
4 1 24 20971520 1 NO INACTIVE 868923 08-AUG-06
5 1 25 20971520 1 NO ACTIVE 951980 10-AUG-06
SQL>
SQL> alter system checkpoint;
System altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 26 20971520 1 NO CURRENT 994126 10-AUG-06
2 1 22 20971520 1 NO INACTIVE 753376 07-AUG-06
3 1 23 20971520 1 NO INACTIVE 785843 07-AUG-06
4 1 24 20971520 1 NO INACTIVE 868923 08-AUG-06
5 1 25 20971520 1 NO INACTIVE 951980 10-AUG-06

 

你可能感兴趣的:(thread,oracle,sql,Go)