OPEN时检查的2步是:检查点计数器,开始和结束SCN
这里有4个SCN参与了这两步检查,其中在控制文件中有3个scn参与了,数据文件中有1个SCN参与了
1.System Checkpoint SCN(控制文件中)
select checkpoint_change# from v$database;
从v$database中查到的checkpoint_change#就是System Checkpoint SCN,这个系统检查点是用来判断控制文件是否是当前的
2.Datafile Checkpoint SCN(控制文件中)
select name,checkpoint_change# from v$datafile where name like '%users01%';
每个数据文件在控制文件中都有个检查点SCN,v$datafile的CHECKPOINT_CHANGE#是Datafile Checkpoint SCN,它是控制文件的检查点信息,不是实际数据文件的检查点SCN
3.Stop SCN(控制文件中)
select name,last_change# from v$datafile where name like '%users01%';
LAST_CHANGE#是STOP SCN,它是用来控制崩溃恢复的,如果是读写状态的ONLINE数据文件,此值是NULL,也就是结束SCN无穷大
4.Start SCN(数据文件中)
select name,checkpoint_change# from v$datafile_header where name like '%users01%';
v$datafile_header的CHECKPOINT_CHANGE#就是开始SCN
数据库打开时的两次比较
第1次比较(判断介质恢复)
查看控制文件和数据文件的checkpoint_change#是否相等,这里用CHECKPOINT_CHANGE#来判断
select 'controlfile' "SCN location",name,checkpoint_change# from v$datafile where lower(name) like '%users01%'
union
select 'file header',name,checkpoint_change# from v$datafile_header where lower(name) like '%users01%';
如果两个SCN不一致:
开始SCN > Datafile Checkpoint SCN,说明控制文件是早期的
开始SCN < Datafile Checkpoint SCN,说明数据文件是老的,需要介质恢复,在恢复最关键的是备份文件的开始SCN
第2次检查(判断崩溃恢复)
查看控制文件中的结束SCN和数据文件开始SCN,不相等就需要进行崩溃恢复
select 'controlfile' "SCN location",name,LAST_CHANGE#
from v$datafile where name like '%users01%'
union
select 'file header',name,checkpoint_change#
from v$datafile_header where name like '%users01%';
如果用的是老的控制文件,在打开的时候就需要借助System Checkpoint SCN
如果System Checkpoint SCN < 所有数据文件开始SCN:说明该控制文件是备份控制,不是当前控制文件
查找老控制文件的语句
select 'controlfile' "SCN location",'SYSTEM checkpoint' name,checkpoint_change#
from v$database
union
select 'file in controlfile',name,checkpoint_change#
from v$datafile where name like 'users01%'
union
select 'file header',name,checkpoint_change#
from v$datafile_header where name like '%users01%';
控制文件中数据文件的检查点SCN与开始SCN来判断介质恢复
结束SCN与开始SCN来判断崩溃恢复
系统检查点与开始SCN来判断是否备份控制文件
相关文章
- VS创建和打开C++浏览数据库文件时发生错误。IntelliSense和浏览信息将不能用于C++项目。错误提示见窗口.
- 打开MySQL数据库登录时,出现ERROR 1103(HY000):Host‘localhost’is not allowed to connect to this MySQL server解决办法
- VS打开项目弹出“创建或打开C++浏览数据库文件(路径)时发生错误。...请确保已安装Microsssoft SQL...”问题的解决办法
- Android 中 byte类型数据大于0x7F时的比较
- ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开ORACLE企业管理器(EM)的解决办法 - 格里沙
- python 使用xlsxwriter 写入数据时,当数据中链接的后面包含空格时(如:"http://*** "),导出问题打开报错
- CentOS5/6/7系统下搭建安装Amabari大数据集群时出现SSLError: Failed to connect. Please check openssl library versions.错误的解决办法(图文详解)
- 如何获取此地图代码的当前位置?当我打开地图时,还试图从服务器接收车辆数据
- 利用pandas中的to_csv模块保存数据,打开csv文件时出现乱码的解决方法
- 斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)