NCE# ARC STATUS FIRST_CHANGE#
---------- ---------- ---------- --- ---------------- -------------
1 1 5 NO CURRENT 747335
2 1 3 YES INACTIVE 744120
3 1 4 YES ACTIVE 745576
过段时间,发生自动系统检查点后
SQL> select
2 ts.name "表空间名"
3 , df.file# "文件号"
4 , df.checkpoint_change# "检查点"
5 , df.last_change# "终止检查点"
6 , df.name "文件名"
7 from v$tablespace ts,v$datafile df
8 where ts.ts#=df.ts#
9 order by df.file#;
表空间名 文件号 检查点 终止检查点 文件名
------------------------------ ---------- ---------- ---------- ----------------------------------------
SYSTEM 1 747335 /oracle/oradata/boss/system01.dbf
UNDOTBS1 2 747335 /oracle/oradata/boss/undotbs01.dbf
SYSAUX 3 747335 /oracle/oradata/boss/sysaux01.dbf
USERS 4 747335 /oracle/oradata/boss/users01.dbf
EXAMPLE 5 747335 /oracle/oradata/boss/example01.dbf
TESTTBS01 6 747335 /oracle/oradata/boss/testtbs01_01.dbf
TESTTBS01 7 747335 /oracle/oradata/boss/testtbs01_02.dbf
TESTTBS02 8 747335 /oracle/oradata/boss/testtbs02_01.dbf
TESTTBS03 9 652799 652799 /oracle/oradata/boss/testtbs03_01.dbf
TESTTBS04 10 747335 /oracle/oradata/boss/testtbs04_01.dbf
SQL> select file#,name,status,CHECKPOINT_CHANGE#,recover from v$datafile_header;
FILE# NAME STATUS CHECKPOINT_CHANGE# REC
---------- ---------------------------------------- ------- ------------------ ---
1 /oracle/oradata/boss/system01.dbf ONLINE 747335 NO
2 /oracle/oradata/boss/undotbs01.dbf ONLINE 747335 NO
3 /oracle/oradata/boss/sysaux01.dbf ONLINE 747335 NO
4 /oracle/oradata/boss/users01.dbf ONLINE 747335 NO
5 /oracle/oradata/boss/example01.dbf ONLINE 747335 NO
6 /oracle/oradata/boss/testtbs01_01.dbf ONLINE 747335 NO
7 /oracle/oradata/boss/testtbs01_02.dbf ONLINE 747335 NO
8 /oracle/oradata/boss/testtbs02_01.dbf ONLINE 747335 NO
9 /oracle/oradata/boss/testtbs03_01.dbf ONLINE 652799
10 /oracle/oradata/boss/testtbs04_01.dbf ONLINE 747335 NO
10 rows selected.
SQL> select dbid,name,log_mode,checkpoint_change# from v$database;
DBID NAME LOG_MODE CHECKPOINT_CHANGE#
---------- ---------------------------------------- ------------ ------------------
1375601832 BOSS ARCHIVELOG 747335
SQL> show parameter user_dump
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest string /oracle/admin/boss/udump
##获得当前时间 系统scn,如果shutdown abort,恢复的记录为active重做日志到shutdown abort时间点
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
746578
3.3、日志切换或检查点:执行检查点后,在重做日志中标记该检查点队列的尾scn之前的scn无需再做恢复
日志切换不会引起4个检查点的改变,只是在下次执行检查点后,将数据文件头scn、数据文件scn、系统scn都更新为high scn。
执行检查点时,将检查点队列上的所有脏数据写入(已提交和未提交的)写入到数据文件,在重做日志中标记该检查点队列的尾scn之前的scn无需再做恢复,最后将数据文件头scn、数据文件scn、系统scn都更新为当前scn。
3.5、数据库正常启动关闭
数据库正常关闭时,系统会执行一个完全检查点动作,用当前scn更新4个scn,将所有数据文件scn置为数据文件头scn(除了offline和read only的数据文件)。
数据库启动时,oracle先比较启动scn和系统scn,如果启动scn>系统scn,控制文件是旧的,如果启动scn<系统scn,数据文件是旧的,如果启动scn=系统scn,再查看终止scn,如果为nul就进行实例恢复
例如:begin backup引起启动scn和数据文件scn的改变,然后shutdown abort,需要恢复也就证明以上过程
3.6、数据库非正常关闭
数据库非正常关闭(实例崩溃)时,终止scn不会被设置,是null。可以数据库启动到mount状态时,进行查询。数据库open过程中,smon进程执行实例恢复工作,即先进行前滚,再把数据库打开,最后回滚。
3.7、数据文件介质故障
启动scn<系统scn
3.8、控制文件介质故障
启动scn>系统scn。noresetlogs重建控制文件时,控制文件的系统scn来自current log头;resetlogs重建控制文件,控制文件的系统scn来自启动scn(感觉不对)。
3.9、备份时的实例崩溃
begin backup时,实例崩溃