控制文件简介
控制文件是一个很小的二进制文件(一般在10MB范围内),含有数据库的结构信息,包括数据文件和日志文件的信息。当中记录了对应数据库的结构信息(如数据文件和日志文件的名称,位置等信息)和数据库当前的参数设置,其中包括以下内容:
- 1,数据库名称和SID标识。
- 2,数据文件和日志文件列表(包括文件名称和对应路径信息)。
- 3,数据库创建的时间戳。
- 4,表空间信息。
- 5,当前重做日志文件序列号。
- 6,归档日志信息。
- 7,检查点信息。
- 8,回滚段(UNDO SEGMENT)的起始和结束。
- 9,备份数据文件信息。
注意:控制文件在实例和数据库之间建立关联,如果无法找到控制文件或者控制文件被损坏,则数据库实例无法启动,并且很难修复。
控制文件的多路复用
多路复用控制文件是指在系统的不同位置上同时存储多个控制文件,当它所在的某个磁盘发生物理损坏导致其中的控制文件被损坏,数据库将会关闭,此时就可以利用另一个磁盘中所保存的控制文件来恢复被损坏的控制文件,重新启动数据库。
在初始化参数CONTROL_FILES中列出了当前数据库的所有控制文件名。Oracle将根据CONTROL_FILES参数中的信息同时修改所有的控制文件,但只读取其中第一个控制文件中的信息,如果在整个数据库运行期间,任何一个控制文件被损坏,实例就不能继续运行。多路复用主要包括更改CONTROL_FILES参数和复制控制文件两个步骤。
(1)更改CONTROL_FILES参数
SQL>alter system set control_files =
'C:\xxx\xxx\....\CONTROL01.CTL',
'C:\xxx\xxx\....\CONTROL02.CTL',
'D:\xxx\xxx\....\CONTROL01_bak.CTL'
scope=spfile;
(2)复制控制文件
将Windows服务中的OracleServiceORCL和OracleDBConsoleorcl服务停止,找到CONTROL_FILES参数中指定的第一个控制文件(CONTROL01.CTL),将这个控制文件放到参数指定的新目录下(CONTROL01_bak.CTL目录),然后将它的名称改为CONTROL01_bak.CTL,然后重启服务即可。
(3)查询已添加的控制文件
SQL>select name as 控制文件 from v$controlfile;