第三章 控制文件

1.功能特点

记录数据库当前的物理状态

维护数据库的一致性,是一个二进制的小文件

mount阶段被读取,记录rman备份的元数据

查看database控制文件的位置

 

Show parameter control_file

 

Select name from v$controlfile


oracle 体系_第三章控制文件_第1张图片



2实时更新机制

 

当增加,重命名删除一个数据文件或者一个联机日志文件时,oracle服务器进程会立即更新控制文件以反映数据结构的变化。

日志写进程lgwr负责把当前日志序列号记录到控制文件中。

检查点进程ckpt负责把校验点的信息记录到控制文件中

归档进程arcn负责把回档日志的信息记录到控制文件中

通过视图v$controlfile_record_section 可以了解到控制文件中记录了大量的数据库当前状态信息

 

 

3 多元化

配置多个control_files 控制文件最好事3个(最多是八个),多路复用指的是相互镜像。

一般配置方法

修改spfile中的control_files 参数,修改之前最好将spfile 先备份一份

复制控制文件,oracle建议将多个控制文件分配在不同的物理磁盘上。

三个控制文件要一致(同一版本scn相同),本来就是镜像关系

 

可以将控制文件dump出来,在跟踪文件中观察一下控制文件的内容

 

Alter session set events’immediate trace name controlf level 12’;

Select * from v$diag_info


4 备份与重建

 

指对控制文件的实时备份,用于恢复数据文件

注意,数据库打开时是不能cp控制文件的

 

Alter database backup controlfile to ‘/u01/oradata/prod/con.bak’;

 

重建控制文件

 

可以在数据库启动的mount open阶段生成一个trace文件,方便重建控制文件

文件内容存在default trace file

alter database backup  controlfile to trace

 

 

可以指定trace文件的路径

Alter database backup controlfile to trace as /u01/oradata/prod/con.trace

 

5 恢复与重建控制文件

控制文件一旦损坏,系统将不能正常工作,受损的控制文件会记录在告警日志中,恢复或重建控制文件必须在nomount的情况下进行。

如果单个控制文件损坏,可以通过简单的复制解决

如果所有的控制文件丢失,可以通过二进制控制文件备份,和tracke脚本重建创建控制文件,trace 重建会丢失归档的记录信息,和rman信息

 

利用trace 重建控制文件

第一步在数据局库mount open下生成 trace脚本

图片.png


 

第二步启动到nomount状态下


oracle 体系_第三章控制文件_第2张图片



 

第三步 执行trace 脚本

oracle 体系_第三章控制文件_第3张图片

脚本中的可见信息有 DB_NAME,指定几个参数限定控制文件的最大值,在线日志的物理信息,数据文件的物理信息,使用的字符集。重建复制了当前所有数据文件头部的最新scn信息复制到了控制文件中,以使接下来打开数据库。

Select file#,checkpoint_change#fromo v$datafile ;

Select file#,checkpoint_change#from v$datafile_header

 

第四步 打开数据库

Alter database open

 

第五步  添加临时数据文件信息,(trace脚本中的最后一行)

 

ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/oradata/prod/temp01.dbf'

     SIZE 30408704  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

ALTER TABLESPACE TEMP2 ADD TEMPFILE '/u01/oradata/prod/temp02.dbf'

     SIZE 10485760  REUSE AUTOEXTEND OFF;