控制文件概要
控制文件记录了数据库的物理结构等重要信息,是用于维护数据库完整性的重要文件。控制文件是一个很小的二进制文件,在启动Oracle数据库时需要从中读取信息,它的大小一般是在创建数据库时确定。在对数据库进行操作过程中,会不断将信息写进控制文件,所以在Oracle数据库打开的过程中,控制文件必须是可用的。
在数据库的启动过程中,当装载(MOUNT)数据库时,Oracle会按照初始化参数文件中的control_files参数的设置查找并打开控制文件;而当打开(OPEN)数据库时,Oracle会根据控制文件所记录的数据文件和重做日志信息,打开数据文件和重做日志文件。当Oracle服务器出现实例失败或介质失败时,通过控制文件所记载的日志和检查点信息,Oracle可以确定执行恢复所需要的日志文件。
控制文件一旦丢失或损坏,将会导致整个数据库不可用。由于控制文件的重要性,每个数据库应该至少拥有2个控制文件,并且分布到不同的磁盘,便于还原和恢复。
控制文件是一个二进制文件,每个数据库有唯一的一个控制文件,但是它会维护多个完全相同的副本,在数据库创建的时候创建,用来记录数据库的物理结构,包括:
- 数据库名称和数据唯一识别符DBID
- 数据文件、重做日志文件和归档重做日志文件的名称和位置
- 数据库创建的时间戳
- 当前日志序列号
- 检查点信息
- 表空间信息
- RMAN备份
控制文件相关数据字典
SELECT MEMBER FROM v$logfile;
SELECT NAME FROM v$datafile;
SELECT VALUE FROM v$parameter WHERE NAME = 'control_files';
SELECT * FROM v$diag_info;
SELECT * FROM v$database;
SELECT * FROM v$controlfile;