第2章 控制文件(Control File)

控制文件在数据库mount时加载,记录了数据文件、日志文件、RMAN、SCN等信息,其作用是在数据库打开时与其他文件头部交叉校验以确保数据库物理结构的一致性。如果控制文件是旧的,那么无论数据文件是否损坏,都必须经由介质恢复的流程才能打开数据库。

控制文件可以配置多个做镜像,但其中任意一个损坏时无法启动数据库,数据库正常运行时损坏其中一个一般不影响,但如果要查询类似v$database的视图时会失败,因为v$database中的大部分数据来源于控制文件。

#查询控制文件路径
show parameter control_file;

#打开控制文件自动备份功能
rman target /
configure controlfile autobackup on;

数据库标识符DBID

恢复控制文件时必须指定DBID

获取DBID的方法

  • select DBID FROM V$DATABASE;
  • 查看控制文件自动备份的文件名(启用快速恢复区时失效)
  • dump数据块查看文件头部信息
  • Recovery Catalog 中查询名为DB的表

数据库物理结构

select * from v$database;
select * from v$archived_log;
select * from v$datafile;
select * from v$tempfile;
select * from v$log;
select * from v$logfile;
select * from v$recover_file;
select * from v$datafile_header;

控制文件序列号

在控制文件被更新后就会增长,该序列号在数据文件和重做日志的头部也存在,是在自身的头部信息被更新时从控制文件复制的。

通常情况下控制文件中的控制文件序列号必须大于数据文件和日志文件头中的控制文件序列号,否则实例恢复无法启动。

控制文件检查点SCN

完全检查点将SCN更新至数据文件头和控制文件中,增量检查点仅将SCN更新至控制文件中,该信息在控制文件中成为控制文件检查点SCN(不是数据库检查点SCN)。

控制文件检查点SCN必须大于或等于所有数据文件头部的检查点SCN,否则实例恢复无法启动。

select controlfile_change# from v$database;

数据库检查点SCN

控制文件中保存的数据库检查点SCN是所有数据文件头部中最小的检查点SCN,根据它的值与每个重做日志的高低位SCN比较,可以确定恢复数据文件需要使用的第一个日志文件。

#控制文件中保存的数据库检查点SCN
select checkpoint_change# from v$database;

#所有数据文件头部中最小的检查点SCN
select min(checkpoint_change#) from v$datafile_header;

#以上两个查询结果应该是相同的

在线日志文件高低位SCN

标识重做日志中重做记录的范围

低位SCN指本日志文件第一条重做记录的SCN

高位SCN指下一个日志文件第一条重做记录的SCN

select group#,first_change#,next_change# from v$log;

第1章 重做日志(Redo Log)

第2章 控制文件(Control File)

第3章 补充日志(Supplemental Logging)

第4章 恢复管理器(RMAN)

第5章 恢复编录(Recovery Catalog)

第6章 数据泵(Data Pump)

第7章 参数文件的备份与还原

第8章 控制文件的备份与恢复

第9章 关键数据文件备份与恢复

第10章 普通数据文件备份与恢复

第11章 只读数据文件备份与恢复

第12章 不完全数据库恢复

第13章 无备份情况下的恢复

第14章 闪回技术(Flashback)

第15章 恢复受损的数据块