一、Oracle 控制文件
为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份
记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等
在参数文件中描述其位置,个数等等。通常采用分散放开,多路复用的原则。在mount阶段被读取,open阶段一直被使用
维护数据库一致性(数据库启动时会比较控制文件与联机日志文件中的ckpt,即起始scn号,如相等则正常启动,否则需要介质恢复)
一个控制文件只能属于一个数据库
控制文件的任意修改将写入到初始化参数中指定的所有控制文件中,读取时则仅读取第一个控制文件
控制文件只能连接一个数据库,控制文件的大小一般不要超过MB,最多为个,最少一个,互为镜像
控制文件中包含的内容
数据库的名字、ID、创建的时间戳
表空间的名字
联机日志文件、数据文件的位置、个数、名字
联机日志的Sequence号码
检查点的信息
撤销段的开始或结束
归档信息
备份信息
二、查看控制文件的相关信息
1.使用相关视图来查看
V$CONTROLFILE --列出实例中所有控制文件的名字及状态信息
V$PARAMETER --列出所有参数的位置及状态信息
V$CONTROLFILE_RECORD_SECTION --列出控制文件中记录的部分信息
SHOW PARAMETERCONTROL_FILES --列出控制文件的名字、状态、位置等
2.使用STRINGS命令来查看控制文件中的具体内容
3.备份控制文件到平面文件(然后查看控制文件中的具体内容)
SQL> alter database backup controlfile to trace as '/u01/app/oracle/ctl.txt';
Database altered.
4.转储控制文件内容(查看控制文件中的具体内容)
alter session set events 'immediatetrace name CONTROLF level 12'; level表示级别
或 --level1 块头的内容 --level2 数据文件内容 --levle10 |12 所有内容
oradebug setmypid
oradebug dump controlf12
SQL> alter system set events 'immediatetrace name controlf level 10';
System altered.
SQL> showparameter user_dump;
NAME TYPE VALUE
----------------------------------------------- ------------------------------
user_dump_dest string /u01/app/oracle/admin/orcl/udu
mp
三、控制文件的管理
规划原则:多路复用,建议存放到不同的磁盘或同一磁盘不同的分区
个数与位置及状态管理:
查看控制文件的状态是否与参数定义中的相吻合,当数据库发生结构修改时,将修改内容同时写入控制文件
备份管理
恢复管理
新建控制文件语句
spfile或pfile都可以实现对控制文件的个数及位置管理
spfile步骤
修改spfile参数中的control_files --alter system ... scope = spfile | both |memory
一致性关闭数据库
增加或减少控制文件(cp or mv)
启动数据库使用spfile
验证结果
pfile步骤
一致性关闭数据库
修改pfile参数(vi或vim) 修改*.control_files=......这一段
增加或减少控制文件(cp or mv)
启动数据库使用pfile
验证结果
--演示spfile修改控制文件
SQL> showparameter control_file
NAME TYPE VALUE
----------------------------------------------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
oradata/orcl/control02.ctl, /u
01/app/oracle/oradata/orcl/con
trol03.ctl
--将控制文件减少到一个
SQL> alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl' scope =spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instanceshut down.
SQL> startupmount
ORACLE instancestarted.
Total SystemGlobal Area 251658240 bytes
Fixed Size 1218796bytes
Variable Size 88082196bytes
Database Buffers 159383552bytes
RedoBuffers 2973696bytes
Database mounted.
--再次查看参数文件,已显示为一个
SQL> showparameter control_file
NAME TYPE VALUE
----------------------------------------------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl
--增加控制文件(在nomount状态下即可修改)
SQL> alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl',
2 '/u01/app/oracle/oradata/orcl/control02.ctl',
3 '/u01/app/oracle/oradata/orcl/control03.ctl'
4 scope = spfile;
System altered.