Bo's Oracle Station

查看: 2684|回复: 3

关于完全检查点未提交块的疑问

[复制链接]

9

主题

15

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165
发表于 2015-9-1 08:38:40 | 显示全部楼层 |阅读模式
   这几天被上述问题所困扰,在网上度娘了,还是未能解决困惑,特在此寻找答案。问题描述如下:
  SCN:数据库(这里数据库未特别说明即指oracle数据库)发生一个事务,产生脏块,未提交;
  SCN+1:数据库发生完全检查点,检查点时间在 SCN之后, S发生在CN的事务产生的脏块被写进数据文件;
  SCN+2:数据库发生增量检查点;
  SCN+3:数据库断电;
  数据库在SCN+3时刻断电后重启,根据所了解数据库原理此时数据库需要进行实例恢复,前滚起点应该从SCN+2开始,根据redo日志信息产生undo段里的旧值,此时在构建undo旧值时发生在SCN时刻事务产生的旧值数据库如何构建出来?
  我个人设想过数据库会不会通过下面方式来解决,但未在网上找到相同想法,也记不起老师上课是否有讲过。
  数据库在进行检查点时数据库把未提交的的事务redo日志重新登记一遍,然后把检查点时间设置在登记这些redo日志当前scn减1,这样在进行实例恢复时就可以通过检查点当前scn加1时间把在检查点之前未未提交的事务通过redo日志构建出undo旧值(该种方案个人觉得也适合热备份)。
  以上,请赐教!
回复

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2015-9-1 08:51:13 | 显示全部楼层
数据库在SCN+3时刻断电后重启,根据所了解数据库原理此时数据库需要进行实例恢复,前滚起点应该从SCN+2开始


以上这句对吗?
提示延迟登记。
回复 支持 反对

使用道具 举报

9

主题

15

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165
 楼主| 发表于 2015-9-1 09:32:20 | 显示全部楼层
botang 发表于 2015-9-1 08:51
数据库在SCN+3时刻断电后重启,根据所了解数据库原理此时数据库需要进行实例恢复,前滚起点应该从SCN+2开始 ...

这句话前半部分应该是没问题的,有问题应该是在前滚时刻,这样描述可能不准确,确切应该是从lowrba指针处开启前滚到ondiskrba;               
延迟登记,网上没找到这个专业术语,能否说详细点呢?
回复 支持 反对

使用道具 举报

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2015-9-2 15:29:45 | 显示全部楼层
linloosen 发表于 2015-9-1 09:32
这句话前半部分应该是没问题的,有问题应该是在前滚时刻,这样描述可能不准确,确切应该是从lowrba指针处 ...

不从你说的SCN+2begin, 自己仔细想。之前讲过。
其他的根认证考试相关的知识,有没有这中认真程度?学习方法调整下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-4-20 15:56 , Processed in 0.041067 second(s), 24 queries .

快速回复 返回顶部 返回列表