ITPub博客

首页 > 数据库 > Oracle > 数据库启动过程中,检查点和SCN的研究

数据库启动过程中,检查点和SCN的研究

原创 Oracle 作者:linetsam 时间:2010-08-12 11:23:53 0 删除 编辑
分析数据库启动过程中检查点和SCN的一致性,来决定是否对数据文件进行恢复。[@more@]

1、验证规则

启动过程检测的步骤:

1)比较控制文件和数据文件头中checkpoint cnt的数量是否一致,如果一致,继续下一步。

2)比较控制文件中的stop scn和数据文件头开始scn是否一致,如果一致,说明数据文件吧需要恢复。

2、验证不需要恢复的情况

Sql> startup mount

Sql> alter session set events 'immediate trace name controlf level 8'; #Dump controlfile

Sql> alter session set events 'immediate trace name file_hdrs level 10'; #dump datafile header

Dump的controlfile信息:

DATA FILE #1:

(name #10) +DG1/orcl/datafile/system.257.726688597

Checkpoint cnt:76 scn: 0x0000.00083775 08/12/2010 10:28:43

Stop scn: 0x0000.00083775 08/12/2010 10:28:43

Dump的file header信息:

包含了控制文件记录的信息:

Checkpoint cnt:76 scn: 0x0000.00083775 08/12/2010 10:28:43

Stop scn: 0x0000.00083775 08/12/2010 10:28:43

Creation Checkpointed at scn: 0x0000.00000009 06/30/2005 19:10:11

文件头记录的信息

status:0x2000 root dba:0x00400179 chkpt cnt: 76 ctl cnt:75

begin-hot-backup file size: 0

Checkpointed at scn: 0x0000.00083775 08/12/2010 10:28:43

可见控制文件和数据文件头部ckpt cnt是一致的;

控制文件记录的stop scn等于文件头记录的checkpoint at scn。

所以该文件在打开前不需要恢复。

3、验证需要恢复的情况

备份数据文件:

RMAN> backup as copy format '$ORACLE_BASE/ts1.dbf.bak' datafile '+DG1/orcl/datafile/ts1.dbf';

对ts1表空间上的数据文件内容作修改:

create table t1 tablespace ts1 as select * from dba_users;

还原数据文件:

Sqplus> startup mount;

Rman> restore datafile 6;

Sql> alter session set events 'immediate trace name controlf level 8'; #Dump controlfile

Sql> alter session set events 'immediate trace name file_hdrs level 10'; #dump datafile header

Dump的controlfile信息:

DATA FILE #6:

(name #2) +DG1/orcl/datafile/ts1.dbf

unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00

Checkpoint cnt:25 scn: 0x0000.00083c47 08/12/2010 10:54:34

Stop scn: 0x0000.00083c47 08/12/2010 10:54:34

Dump的file header信息:

status:0x0 root dba:0x00000000 chkpt cnt: 24 ctl cnt:23

begin-hot-backup file size: 0

Checkpointed at scn: 0x0000.00083b24 08/12/2010 10:52:24

可见控制文件ckpt scn比数据文件头部ckpt cnt多1;

控制文件记录的stop scn大于文件头记录的checkpoint at scn。

说明该文件是从备份还原的,需要恢复。

4、恢复后的验证

Rman> recover database;

Sql> alter session set events 'immediate trace name controlf level 8'; #Dump controlfile

Sql> alter session set events 'immediate trace name file_hdrs level 10'; #dump datafile header

Dump的controlfile信息:

DATA FILE #6:

(name #2) +DG1/orcl/datafile/ts1.dbf

Checkpoint cnt:26 scn: 0x0000.00083c47 08/12/2010 10:54:34

Stop scn: 0x0000.00083c46 08/12/2010 10:54:34

Creation Checkpointed at scn: 0x0000.0007a642 08/10/2010 20:19:44

Dump的file header信息:

prev reset logs count:0x2184ef74 scn: 0x0000.00000001 prev reset logs terminal rcv data:0x0 scn: 0x0000.00000000

recovered at 08/12/2010 11:14:36

status:0x0 root dba:0x00000000 chkpt cnt: 26 ctl cnt:25

begin-hot-backup file size: 0

Checkpointed at scn: 0x0000.00083c46 08/12/2010 10:54:34

thread:1 rba:(0x9.a3d3.10)

可见恢复后,控制文件ckpt scn和数据文件头部ckpt cnt相等;

控制文件记录的stop scn也等于文件头记录的checkpoint at scn。

文件可正常打开。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/56630/viewspace-1036683/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 创建asm目录
请登录后发表评论 登录
全部评论

注册时间:2008-09-16

  • 博文量
    20
  • 访问量
    43136