在数据库open的过程中,oracle进行检查中包括以下两项。
第一次检查数据文件头中的计数器(Checkpoint cnt)是否和控制文件中检查点计数(Checkpoint cnt)一致。此步骤检查用于确认数据文件是否来自同一版本,而不是从备份中恢复而来(因为Checkpoint不会被冻结,会一直被修改).
试验:
首先转储控制文件
SQL> alter session set events 'immediate trace name controlf level 12';
会话已更改。
SQL> alter tablespace system begin backup;
表空间已更改。
SQL> alter session set events 'immediate trace name controlf level 12';
会话已更改。
SQL> alter system checkpoint;
系统已更改。
SQL> alter session set events 'immediate trace name controlf level 12';
会话已更改。
SQL> alter tablespace system end backup;
表空间已更改。
SQL> alter session set events 'immediate trace name controlf level 12';
会话已更改。
SQL> select value from v$diag_info where name='Default Trace File';
VALUE
--------------------------------------------------------------------------------
e:\app\xiaocai\diag\rdbms\xiaocai\xiaocai\trace\xiaocai_ora_5012.trc
正常情况下转储控制文件
DATA FILE #1:
(name #7) E:\APP\XIAOCAI\ORADATA\XIAOCAI\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:493 scn: 0x0000.001df620 03/30/2010 13:38:55
Stop scn: 0xffff.ffffffff 03/30/2010 13:22:18
Creation Checkpointed at scn: 0x0000.0000000e 02/25/2009 05:02:02
thread:0 rba:(0x0.0.0)
当发出begin backupup后
DATA FILE #1:
(name #7) E:\APP\XIAOCAI\ORADATA\XIAOCAI\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:494 scn: 0x0000.001e4a86 03/30/2010 18:03:12
Stop scn: 0xffff.ffffffff 03/30/2010 13:22:18
Creation Checkpointed at scn: 0x0000.0000000e 02/25/2009 05:02:02
thread:0 rba:(0x0.0.0)
计数器增加,对表空间的begin backup会执行一次表空间检查点
执行手工检查点
在表空间热备份模式下,手工检查点后,Checkpoint cnt增加,但是SCN不再改变。表空间处于热备份情况下,数据文件检查点会冻结
DATA FILE #1:
(name #7) E:\APP\XIAOCAI\ORADATA\XIAOCAI\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:495 scn: 0x0000.001e4a86 03/30/2010 18:03:12
Stop scn: 0xffff.ffffffff 03/30/2010 13:22:18
Creation Checkpointed at scn: 0x0000.0000000e 02/25/2009 05:02:02
thread:0 rba:(0x0.0.0)
End Backup后
数据文件头的冻结被取消,SCN开始变化
DATA FILE #1:
(name #7) E:\APP\XIAOCAI\ORADATA\XIAOCAI\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:496 scn: 0x0000.001e4ac3 03/30/2010 18:04:08
Stop scn: 0xffff.ffffffff 03/30/2010 13:22:18
Creation Checkpointed at scn: 0x0000.0000000e 02/25/2009 05:02:02
thread:0 rba:(0x0.0.0)
如果检查点计数检查通过,则数据库进行第二次检查。第二次检查数据文件头的开始SCN和控制文件中记录的该文件的结束的SCN是否一致,如果控制文件中记录的结束的SCN等于数据文件头的开始SCN,则不需要对那个文件进行修复。