为什么控制文件中的最后个SCN 总是大于归档日志的SCN
SQL>
SQL> select dbid,
2 name,
3 open_mode,
4 log_mode,
5 checkpoint_change# as checkpoint_change#,
6 controlfile_type ctl_type,
7 controlfile_created ctl_created,
8 controlfile_change# as ctl_change#,
9 controlfile_time ctl_time,
10 resetlogs_change# as resetlogs_change#,
11 resetlogs_time resetlogs_time
12 from v$database
13 ;
DBID NAME OPEN_MODE LOG_MODE CHECKPOINT_CHANGE# CTL_TYPE CTL_CREATED CTL_CHANGE# CTL_TIME RESETLOGS_CHANGE# RESETLOGS_TIME
---------- --------- -------------------- ------------ ------------------ -------- ----------- ----------- ----------- ----------------- --------------
1372763457 ORCL READ WRITE NOARCHIVELOG 2659867 CURRENT 2014/4/15 2 2660387 2014/5/23 1 1 2014/4/15 21:2
SQL>
2660387总是大于2659867
------解决方案--------------------
控制文件发生变化时会记录controlfile_change#,checkpoint_change#是检查点的scn
检查点发生时,会更新控制文件和数据文件,而控制文件更新时不一定会在检查点上,因此ctl_change#一定会大于等于checkpoint_change#
------解决方案--------------------
v$database中的 checkpoint_change#是上一次checkpoint的scn,controlfile_change#是当前最新的scn.
在没有事务的情况下,你做一次alter system checkpoint;这两个值就会一样的.
------解决方案--------------------
刚说的一个地方有误,controlfile_change#不是数据库当前最新的scn,是控制文件最新的scn
------解决方案--------------------
归档日志肯定要落后于当前scn,因为当前的scn 在在线日志中。