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所指定的控制文件已经损坏,但在数据字典中还能访问控制文件,则可以采用下面的步骤进行恢复:

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