n scnscn: 0x0000.00000000
Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Online move state: 0
SQL> alter session set events 'immediate trace name file_hdrs level 10';
会话已更改。
SQL> select value from v$diag_info where name='Default Trace File';
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/orcl3939/orcl3939/trace/orcl3939_ora_8858.trc
DATA FILE #1:
name #7: /u01/app/oracle/oradata/orcl3939/system01.dbf
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
tablespace 0, index=1 krfil=1 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:1110 scn: 0x0000.0076948a 05/05/2015 12:41:20
Stop scn: 0x0000.0076948a 05/05/2015 12:41:20
Creation Checkpointed at scn: 0x0000.00000007 08/13/2009 23:00:53
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
....
....
Offline scn: 0x0000.000b8337 prev_range: 0
Online Checkpointed at scn: 0x0000.000b8338 09/28/2014 17:41:34
thread:1 rba:(0x1.2.0)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
....
....
Hot Backup end marker scn: 0x0000.00000000
aux_file is NOT DEFINED
Plugged readony: NO
Plugin scnscn: 0x0000.00000000
Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Online move state: 0
上面的信息来自控制文件
下面的信息来自数据文件头(如果数据文件丢失,则数据文件头不能读取)
V10 STYLE FILE HEADER:
Compatibility Vsn = 186646528=0xb200000
Db ID=3848072073=0xe55ceb89, Db Name='ORCL3939'
Activation ID=0=0x0
Control Seq=14952=0x3a68, File size=96000=0x17700
File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM rel_fn:1
Creation at scn: 0x0000.00000007 08/13/2009 23:00:53
Backup taken at scn: 0x0000.00713a30 04/29/2015 13:41:44 thread:1
reset logs count:0x333ab14e scn: 0x0000.000b8338
prev reset logs count:0x296a3120 scn: 0x0000.00000001
recovered at 05/05/2015 12:24:15
status:0x2000 root dba:0x00400208 chkpt cnt: 1110 ctl cnt:1109
begin-hot-backup file size: 96000
Checkpointed at scn: 0x0000.0076948a 05/05/2015 12:41:20
thread:1 rba:(0x1ce.1314.10)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
....
....
Backup Checkpointed at scn: 0x0000.00713a30 04/29/2015 13:41:44
thread:1 rba:(0x1bd.b6c8.10)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
....
....
首先会检查数据文件头的Checkpoint CNT是否与对应的控制文件中的Checkpoing CNT一致:
由上知控制文件中记录了chkpt cnt 1110 数据文件头记录了chkpt cnt 1110 ctl cnt 1109
为什么数据文件头的chkpt cnt 比 ctl cnt大1呢,这是因为检查点在更新控制文件和数据文件头上的chkpt cnt时,可以获得当前的ctl cnt,把当前的ctl cnt 写入到了数据文件头,即1109
这一步验证已经通过
然后检查数据文件头的开始SCN和对应控制文件中的结束SCN是否一致:
Checkpointed at scn: 0x0000.0076948a 05/05/2015 12:41:20
两者一致,可以正常启动
控制文件记录的scn 是数据库最后一次成功完成检查点的scn,数据文件头记录的scn 是最后一次完成检查点的scn,两者相等,则不需要对你数据文件进行恢复,如果不一致,则需要对数据文件
进行恢复。假如数据库异常关闭后,数据文件头记录的scn比较旧,与控制文件记录的不一致,则需要进行恢复,并且数据文件头记录的scn是恢复的起点
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 422670336 bytes