网上有很多关于控制文件的操作,我大概看了下。有很多都是炒来炒去转来转去。下面以自己理解和操作为例来对oracle的控制文件进行下介绍。
首先介绍下控制文件
在oralce数据库中,控制文件是一个很小的二进制文件,一般大小在10MB左右在数据库创建时被自动创建,并在数据库变化时更新。控制文件不断被更新,并且在任何时候都要保证控制文件可用。控制文件在oracle中扮演者很重要的角色,没有控制文件或者控制文件损坏数据库必然down掉。控制文件包含有数据库结构信息,数据文件和日志文件信息。
由于控制文件在数据库中的重要位置,所以保护此文件时非常重要的。因此建议采用多路控制文件或者备份控制文件的方法。当控制文件损坏时,用户可以通过备份来恢复控制文件。系统提供手工创建和把控制文件备份成文本形式,从而更加灵活管理和保护控制文件。控制文件中记录了对应数据库结构i信息如:数据文件,日志文件名称及位置和当前参数位置,其中主要包括如下内容:
1. 数据库名称及SID标识.
2. 数据文件和日志文件列表.
3. 数据库创建的时间戳.
4. 表空间信息.
5. 当前重做日志文件序列号.
6. 归档日志信息.
7. 检查点信息.
8. 回滚段的起始和结束.
9. 备份数据文件信息.
数据文件如此重要那我们应该怎样对控制文件进行日常管理.
(1) 及时备份控制文件
oracle 数据库的控制文件是在创建数据库时自动创建的,一般情况下,控制文件最少应该有一个副本(最少两个控制文件,放在不同的磁盘上,保证在数据发生异常的时候做数据回滚操作).当oracle 数据库的实例启动时,控制文件用于在数据库(包括:数据文件,控制文件及日志文件)和实例之间建立起关联.在数据操作时必须被打开.当数据库的物理组成(增加一个日志文件)发生变化时,oracle会自动把这变化信息记录到控制文件中.如果数据库的物理组成发生了变化,则则建立用户及时备份控制文件.
(2) 保护控制文件
当控制文件被损坏,数据库将无法启动.而且修复也很困难.控制文件在数据库运行中起到动摇作用.由于控制文件对整个数据库起到非常重要作用,因此因此在管理控制文件时候需要采用多种策略或准则来保护控制文件.目前采用的方法为多路复用控制文件和备份控制文件.那如何对控制文件进行多路复用呢,在初始化参数 CONTROL_FILE中列出了当前数据库的所有控制文件名.oracle将根据CONTROL_FILE参数中的信息同时修改所有的控制文件,但只读取其中的第一个控制文件中的信息.另外,需要注意的是,在整个数据运行期间,如任何一个控制文件损坏,那么实例就不能在继续运行.实现控制文件的多路复用主要包括更改 CONTROL_FILES 参数和复制文件两个步骤,具体如下:
1. 更改 CONTROL_FILES 参数.
A. 设置多路参数,控制文件应保存在不同的磁盘文件下.
2. 实现文件的备份操作.
A. 对控制文件实现备份机制.