一.概述
a.存放相关信息:控制文件记载了数据库的物理结构等重要的信息,如日志文件和数据文件信息。
b.控制文件是用来维护数据库完整性的重要文件
c.oracle正式使用控制文件来建立实例与数据库的连接
d.当实例发生故障时,控制文件中记录的信息可以用来进行实例恢复
二.控制文件内容
控制文件的体现:
在数据库mount阶段,oracle会按照初始化参数文件中controlfiles的内容来查找并打开控制文件
在open阶段,oracle会根据控制文件中所记录的日志文件和数据文件信息来打开数据文件和日志文件
从启动过程可以看出,oracle需要从控制文件中读取必要的信息,而且数据库启动之后会不断的将信息
写回到控制及文件。所以,在数据库打开及运行的过程中,controlfile必须是可用的。
控制文件中记录的信息(来自官方文档)
The database name --数据库名称或标识
Names and locations of associated datafiles and redo log files --数据文件,日志文件的名称和路径
The timestamp of the database creation --数据库创建的时间信息
The current log sequence number --当前的日志序号
Checkpoint information --检查点信息
位置和状态
三.控制文件复用
控制文件复用(增加控制文件)
在数据库关闭状态下(open状态控制文件会时刻改变,所以必须在关闭状态),复制控制文件到相应的路径,再改变controlfile的参数即可
a,shutdown immediate
b.使用操作系统命令复制控制文件到相应的路径
c.startup nomount --因为Mount阶段就要打开控制文件
d.改变控制文件参数
alter system set control_files='/oracle/app/oracle/oradata/orcl/control01.ctl','/oracle/app/oracle/oradata/orcl/control02.ctl' scope=spfile
四.控制文件备份(测试控制文件的脚本备份)
a.alter database backup controlfile to trace;--备份控制文件到数据库跟踪日志
可以利用参数user_dump_dest来查找trace文件
在相应的目录下alert_orcl.log中查找相应的日志记录来定位具体的trace文件
运行trace文件中创建控制文件的sql即可
STARTUPNOMOUNT
CREATE CONTROLFILE REUSE/*覆盖原有控制文件*/ DATABASE "ORCL"/*数据库名称db_name*/ NORESETLOGS ARCHIVELOG
--resetlogs选项会清空重做日志所包含的事务修改
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 80
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oracle/app/oracle/oradata/orcl/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/oracle/app/oracle/oradata/orcl/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/oracle/app/oracle/oradata/orcl/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/oracle/app/oracle/oradata/orcl/system01.dbf',
'/oracle/app/oracle/oradata/orcl/sysaux01.dbf',
'/oracle/app/oracle/oradata/orcl/undotbs01.dbf',
'/oracle/app/oracle/oradata/orcl/users01.dbf',
'/oracle/app/oracle/oradata/orcl/users02.dbf',
'/oracle/app/oracle/oradata/orcl/users03.dbf',
'/oracle/app/oracle/oradata/orcl/block.dbf',
'/oracle/app/oracle/oradata/orcl/perfstat01.dba'
CHARACTER SET WE8MSWIN1252 --数据库字符集
;