|
我有一个疑问!
SQL> select checkpoint_change#,archive_change#,controlfile_change#,archivelog_change# from v$database;
CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# ARCHIVELOG_CHANGE#
------------------ --------------- ------------------- ------------------
3145665 3145039 3146288 0
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
1 1 17 104857600 1 NO INACTIVE 3145665 2007-12-9 1
2 1 18 104857600 1 NO CURRENT 3146287 2007-12-9 1
3 1 16 104857600 1 NO INACTIVE 3145039 2007-12-9 1
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
3152331
SQL> insert into t values(4);
1 row inserted
SQL> commit;
Commit complete
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
3152417
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
1 1 17 104857600 1 NO INACTIVE 3145665 2007-12-9 1
2 1 18 104857600 1 NO CURRENT 3146287 2007-12-9 1
3 1 16 104857600 1 NO INACTIVE 3145039 2007-12-9 1
SQL> alter system switch logfile;
System altered
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
1 1 17 104857600 1 NO INACTIVE 3145665 2007-12-9 1
2 1 18 104857600 1 NO ACTIVE 3146287 2007-12-9 1
3 1 19 104857600 1 NO CURRENT 3152499 2007-12-9 1
SQL> select checkpoint_change#,archive_change#,controlfile_change#,archivelog_change# from v$database;
CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROLFILE_CHANGE# ARCHIVELOG_CHANGE#
------------------ --------------- ------------------- ------------------
3146287 3145665 3152499 0
通过上面的测试,怎么checkpoint_change#总是active log所对应的first_change#呢?而archive_chenge#是inactive log的那个first_change#,controlfile_change#是当前current log的first_change#?
不明白,感觉切换日志了会触发ckpt啊,那么应该记录我commit之后的那个状态啊!也就是3152417这个数前面的。 |
|