1 | SQL> select FILE#, CHECKPOINT_CHANGE# from v$datafile;---------控制文件里记录的数据文件的scn号 FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 1133266 2 1133266 3 1133266 4 1133266 5 1133266 6 1133266 6 rows selected. SQL> select FILE#, CHECKPOINT_CHANGE# from v$datafile_header;---------------数据文件里记录的数据文件头的scn号 FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 1133266 2 1133266 3 1133266 4 1133266 5 1133266 6 1133266 6 rows selected. |
2 | SQL> select CURRENT_SCN from v$database;-----------当前数据库的scn号 CURRENT_SCN ----------- 0 SQL> select CHECKPOINT_CHANGE# from v$database;---------------控制文件的scn号 CHECKPOINT_CHANGE# ------------------ 1133266 |
3 | 一致性关闭数据库的状态下: SQL> select FILE#,CHECKPOINT_CHANGE#,LAST_CHANGE# from v$datafile; FILE# CHECKPOINT_CHANGE# LAST_CHANGE# ---------- ------------------ ------------ 1 1133266 1133266 2 1133266 1133266 3 1133266 1133266 4 1133266 1133266 5 1133266 1133266 6 1133266 1133266 6 rows selected. 由此可以发现CHECKPOINT_CHANGE#与 LAST_CHANGE#的scn号是一样的; 非一致性关闭数据库的状态下; SQL> select FILE#,CHECKPOINT_CHANGE#,LAST_CHANGE# from v$datafile; FILE# CHECKPOINT_CHANGE# LAST_CHANGE# ---------- ------------------ ------------ 1 1133734 2 1133734 3 1133734 4 1133734 5 1133734 6 1133734 6 rows selected. 由此可以看出CHECKPOINT_CHANGE#与LAST_CHANGE#的scn号是不一样的。所以此时要正常关闭数据库重新启动,然后再查看发现他们的scn号一样了; SQL> alter database open; Database altered. SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 830930944 bytes Fixed Size 2257800 bytes Variable Size 536874104 bytes Database Buffers 285212672 bytes Redo Buffers 6586368 bytes Database mounted. SQL> select FILE#,CHECKPOINT_CHANGE#,LAST_CHANGE# from v$datafile; FILE# CHECKPOINT_CHANGE# LAST_CHANGE# ---------- ------------------ ------------ 1 1154340 1154340 2 1154340 1154340 3 1154340 1154340 4 1154340 1154340 5 1154340 1154340 6 1154340 1154340 6 rows selected. |
4 | SQL> select GROUP#,FIRST_CHANGE#,NEXT_CHANGE# from v$log; GROUP# FIRST_CHANGE# NEXT_CHANGE# ---------- ------------- ------------ 1 1154682 1154685 2 1154685 1154689 3 1154689 2.8147E+14 SQL> alter system switch logfile; System altered. SQL> select GROUP#,FIRST_CHANGE#,NEXT_CHANGE# from v$log; GROUP# FIRST_CHANGE# NEXT_CHANGE# ---------- ------------- ------------ 1 1154699 2.8147E+14 2 1154685 1154689 3 1154689 1154699 由此可以发现下一个 FIRST_CHANGE#的scn号是上一个 NEXT_CHANGE#的scn号。 |
5 | SQL> select current_scn from v$database; CURRENT_SCN ----------- 1154858 SQL> SQL> select FILE#, CHECKPOINT_CHANGE# from v$datafile; FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 1154699 2 1154699 3 1154699 4 1154699 5 1154699 6 1154699 6 rows selected. SQL> select FILE#, CHECKPOINT_CHANGE# from v$datafile_header; FILE# CHECKPOINT_CHANGE# ---------- ------------------ 1 1154699 2 1154699 3 1154699 4 1154699 5 1154699 6 1154699 6 rows selected. 由此可以发现数据库当前的scn号比控制文件中记录的数据文件的scn号和数据文件里记录的数据文件头部的scn号都大。 注:current日志组必须大于或者等于控制文件中记录的数据文件的scn号和数据文件里记录的数据文件头部的scn号 |
| |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30606702/viewspace-2122965/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30606702/viewspace-2122965/