love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

About recreate controlfile ?

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: About recreate controlfile ?

上午群里网友讨论了一下关于controlfile重建的问题,曾经的一次恢复(记一次非归档RAC恢复(大量的ORA-600 错误))
的印象中发现对于resetlogs和noresetlogs是有点不同的,于是这里就做了一个简单的测试:

—-noresetlogs 重建controlfile

从上面实验来看,说明了2点;

1. 重建controlfile,controlfile中datafile scn来源于datafile header。
2. 针对归档模式,resetlogs和noresetlogs重建controlfile本质上没有任何不同,
仅仅是log sequence被重置了而已,仅此而已。

——非归档模式

针对非归档模式,resetlogs和noresetlogs 方式重建controlfile的情况其实跟归档模式下没有什么不同,
完全一致。只是需要注意的是,不管是非归档还是归档,只有进行open resetlogs操作之后,那么数据文
件头都中的如下信息会发生改变:

FHPRC FHPRS FHRLS FHRLC。

这里针对上述情况做一些描述补充:
HXSTS —controlfile stop scn

当数据库正常停止的时候,会把该值设置为跟检查点scn(fhscn)设置为一致,数据处于运行状态时,
改值会被设置为最大值即:ffffffffffff 这是为什么呢?因为当数据运行时,oracle不知道你何时停止
也就没法设置stop scn,只能设置为一个最大值,也就是 无穷大。

FHSCN —checkpoint scn

oracle在启动的时候,将datafile header 中的启动scn与datafile checkpoint scn进行比较,如果相等,
接下来还要比较datafile header中的启动scn和控制文件中数据文件的stop scn,如果这个也相等,那么
oracle就认为这个datafile是正常的,不需要进行恢复操作。

如果oracle要对该datafile进行恢复,那么只需要恢复到fhscn值即可。

FHPRC —-Prior resetLogs timestamp
FHRLS —-Prior resetLogs SCN
FHPRS —-Reset Logs SCN
FHRLC —-Reset Logs timestamp

Leave a Reply

You must be logged in to post a comment.