控制文件是数据库很重要的一个组成部分(数据库由控制文件、数据文件、日志文件组成),记录了当前实例连接的数据库的结构和行为并维护数据库的一致性。
大家都知道,数据库启动分为shutdown、nomount、mount、open几个状态
SHUTDOWN-->NOMOUNT-->MOUNT-->OPEN
SHUTDOWN-->NOMOUNT:Instance started 启动相关的进程
NOMOUNT-->MOUNT:Control file opened for this instance 为启动的这个实例打开控制文件
MOUNT-->OPEN:ALL files opened as described by this control file for this instance 通过控制文件打开其它的文件(数据文件、日志文件)
控制文件规则:
1.一个数据库至少有一个控制文件,最多八个。参数control_file所列出的第一个,Oracle Server所读取的唯一个文件。当数据库的所有改变改会记录到所有的控制文件中。
2.二进制文件
3.它被记录在参数文件中
4.记录了数据库启动的SCN和关闭时的SCN号,并在数据库打开时验证其是否一致来维护数据库的一致性。
5.在Mount状态之后就一直在使用。
6.控制文件只能属于一个数据库
7.必不可缺。
控制文件的内容:
1.数据文件、联机日志文件的位置和名字
2.表空间的名字和大小位置
3.检查点信息
4.回滚段的信息
5.当前联机重做日志文件()的sequence号
6.联机重做日志文件的归档信息
7.备份信息
如何查看控制文件的信息?位置、个数
1.show parameter control_file
2.select name,value from v$parameter where name='control_files';
3.select name,status from v$controlfile;
4.select type,record_size from v$controlfile_record_section; //可查看控制文件中记录的信息。
实现多路控制文件:
修改初始化参数control_files-->关闭数据库-->用操作系统的拷贝手段当前控制文件中的任一个到其他位置(参数中指定的位置)-->启动数据库就实现了多路。
如何管理控制文件?备份和恢复
如何备份数据库控制文件?
1.其中一种,如果多路控制其中一个坏了,只要复一个己有的新的控制文件到相应的位置就可以,因为控制文件的内容都是一致的。
前提是要先关闭数据库,为了保证复制过程中原有的控制文件没有改变。
a.alter database backup controlfile to trace as '/db/aa.txt'; //如果是trace就到uump路径下去找--归档模式下做的。
b.show parameter udump;
c.按时间排序ls -lrt,一般以sid_ora_<数字>.trc格式的文件,找出创建控制文件的命令,拷贝出来运行即可。
控制文件损坏的恢复就可以用上面的方法。
2.RMAN备份