如何确定恢复时的起点scn呢?

[复制链接]
查看11 | 回复8 | 2009-1-4 14:52:28 | 显示全部楼层 |阅读模式
现在已经知道oracle在做recover的时候,无论是做medie,或者instance恢复的时候,都是根据scn来确定恢复的起点和终点的,那么怎么来判断哪个scn是恢复的起点呢?
1、控制文件?
2、数据文件?
同样,终点的scn是怎么判断的呢?
请大家解惑了啊。。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
控制文件里面有记录。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
这涉及到恢复机制,其间,控制文件、数据文件、日志文件都要用到的,主要是通过它们之间SCN的参照对比,决定系统要采取的操作,是需要进行INSTANCE RECOVERY 还是MEDIA RECOVERY,需要哪些日志文件,提供的日志文件是否正确等。要详细了解该过程,需要看看备份恢复方面的资料。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
ORACLE到底有多少中SCN??
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
如果是实例恢复,就是以控制文件中的Checkpoint position(检查点队列头)为恢复起点,其对应的SCN就是恢复时的起点SCN。
如果是介质恢复,是以数据文件头的RBA为恢复起点,其对的SCN就是恢复时的起点SCN。
恢复是读日志,因此起始点、终止点在Oracle中最终都是以RBA描述的。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
原帖由 kewin 于 2008-11-6 00:40 发表
ORACLE到底有多少中SCN??

Oracle中只有一个SCN,但有很多操作都记录了SCN。
比如时间就只一个时间,学生上课时看看了表,记了个时间,这就称为学生时间。工人上班时看看了表,记了个时间,这就叫工人时间,等等,其实时间只有一个。SCN只有一个,它是Oracle内部的一种计时方式,不同的操作使用了它,就被称作这这SCN,那那SCN。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
原帖由 晶晶小妹 于 2008-11-6 21:58 发表
Oracle中只有一个SCN,但有很多操作都记录了SCN。
比如时间就只一个时间,学生上课时看看了表,记了个时间,这就称为学生时间。工人上班时看看了表,记了个时间,这就叫工人时间,等等,其实时间只有一个。SCN只有一个,它是Oracle内部的一种计时方式,不同的操作使用了它,就被称作这这SCN,那那SCN。

解释得很精辟


回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
原帖由 晶晶小妹 于 2008-11-6 07:58 发表
Oracle中只有一个SCN,但有很多操作都记录了SCN。
比如时间就只一个时间,学生上课时看看了表,记了个时间,这就称为学生时间。工人上班时看看了表,记了个时间,这就叫工人时间,等等,其实时间只有一个。SCN只有一个,它是Oracle内部的一种计时方式,不同的操作使用了它,就被称作这这SCN,那那SCN。

Very good analogy. But I bet he does want to list all types of time or SCN, like students' study time, workers' work time, etc. So we can list SCNs the same way: stop SCN, start SCN, checkpoint SCN, on-disk SCN,...
Yong Huang
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
原帖由 晶晶小妹 于 2008-11-6 21:58 发表
Oracle中只有一个SCN,但有很多操作都记录了SCN。
比如时间就只一个时间,学生上课时看看了表,记了个时间,这就称为学生时间。工人上班时看看了表,记了个时间,这就叫工人时间,等等,其实时间只有一个。SCN只有一个,它是Oracle内部的一种计时方式,不同的操作使用了它,就被称作这这SCN,那那SCN。

谢谢晶晶小妹精彩恢复。
我的理解是:
整个ORACLE只有一个SCN,;
主要oracle在运行, DDL/DML在操作,那SCN就会一直增大。
checkpoint scn一般会小于系统SCN,因为dirty data 回写不是实时的,而是由多个事件来触发的。
datafile and controlfile的 SCN会比checkpoint scn 小,因为是ckpt进程去刷新datafile and controlfile header 信息。而ckpt进程不是刷新全部的datafile,而是刷新有数据回写的datafile header。这样在同一个时刻,datafile的scn不见得是一致的。全部的datafile header一致, 是在full checkpoint时,会去同步全部的datafile header。
INSTACNE 在启动时,会去检查datafile and controlfile 的scn是否一致,如果不一致,那需要INSTANCE RECOVERY。Instance Recovery开始点是 控制文件的checkpoint scn。

不知道这样理解是否正确?
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行