Oracle 11g 管理控制文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 11g 管理控制文件相关的知识,希望对你有一定的参考价值。

oracle数据库控制文件是非常重要的文件,它是数据库创建的时候自动生成的二进制文件,其中记录了数据库的状态信息,主要包括以下内容

? 数据库的名称,一个控制文件只能属于一个数据库

? 数据库创建时间

? 数据文件的名称、位置、联机、脱机状态信息

? 重做日志文件的名称、位置及归档信息

? 所有表空间信息

? 当前日志序列号

? 最近检查点信息

控制文件在数据库启动的Mount阶段被读取,在数据库启动时首先使用默认规则找到并打开参数文件,在参数文件中含有控制文件的位置信息,打开控制文件后,会通过控制文件中记录的各种数据库文件的位置打开数据库,从而启动数据库到可用状态。当成功启动数据库后,在数据库的运行过程中,数据库服务器可以不断的修改控制文件中的内容,所以在数据库被打开的阶段,控制文件必须是可读写的。但是其他任何用户都无法修改控制文件,只有数据库的实例才可以修改控制文件中的信息。

查看控制文件信息,可以从V$controlfile视图中查看控制文件信息,控制文件名称
技术分享图片
除了从V$controlfile视图查看控制文件信息外,还可以从V$parameter视图中查看
技术分享图片

如何查看控制文件中所存的内容信息

可以使用V$controlfile_record_section
技术分享图片
查看V$controlfile_record_section中type,record_size,records_total,records_used
技术分享图片
从截图当中可可以看到控制文件中存放了创建数据库的信息、重做日志信息、数据文件及归档日志文件记录等信息。这些有价值的信息用于数据维护和管理,很多数据字典视图是从控制文件中获得的信息。

存储多重控制文件

由于控制文件非常重要,所以要求控制文件不能只有一个,通常数据库中控制文件要多于3个,并且存放在不同的磁盘上,这种使用控制文件的方法也称为控制文件的多路复用。实现多重的一个方法就是通过复制控制文件到多个位置并修改初始化参数文件中的CONTROL_FILES参数,使之包含所有控制文件名称。需要注意,当存在多个控制文件时,oracle会同时更新所有的控制文件,但是仅对CONTROL_FILES中所列举的第一个控制文件进行读取操作。

举例说明实现多路复用控制文件的方法:

数据库状态为打开状态,修改SPFILE中的CONTROL_FILES参数
技术分享图片
技术分享图片
关闭数据库
技术分享图片
使用操作系统命令将文件复制到新的位置
技术分享图片
重新启动实例
技术分享图片
备份控制文件

备份控制文件

为了确保数据库的安全,在数据文件或日志文件位置信息发生变化时,例如新增数据文件到表空间时,对控制文件进行备份。有两种备份方式:备份为二进制文件和备份为脚本文件

举例说明备份为二进制文件的方法:

备份控制文件之前先查看当前系统中存在几个控制文件
技术分享图片

备份控制文件
技术分享图片
修改系统参数文件
技术分享图片
关闭数据库之后启动数据库之后报ORA-00214错误,原因是控制文件版本不一致导致的

control01.ctl控制文件版本是817, control02.ctl的版本是806.
技术分享图片
使用control01.ctl覆盖control03.ctl,使得控制文件版本保持一致即可。
技术分享图片
关闭数据库
技术分享图片
在重新启动数据库就可以了技术分享图片

恢复控制文件

假设CONTROLD_FILES所指定的控制文件已经损坏,但在数据字典中还能访问控制文件,则可以采用下面的步骤进行恢复:

关闭数据库实例
技术分享图片
删除控制文件
技术分享图片
启动数据库
技术分享图片
此时数据库的状态是
技术分享图片
用操作系统将完好的控制文件覆盖掉损坏的控制文件
技术分享图片
关闭当前数据库
技术分享图片
重新启动数据库实例
技术分享图片
如果对此文有什么问题的话,请加下面微信一起探讨
技术分享图片

以上是关于Oracle 11g 管理控制文件的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 11g 中恢复管理器RMAN介绍

oracle 11g 数据库恢复技术 ---02 控制文件

oracle之 RAC 11G ASM下控制文件多路复用

ORACLE11g 没有控制文件如何通过rman备份恢复数据的详细实战过程

ORACLE 11G内存管理方式

Oracle 11g 数据库启动和关闭