Oracle 控制文件管理

控制文件是记录数据库结构和运行状态的中心文件。打开数据库的前一步,就是打开控制文件,以获得数据库的结构信息和状态信息。初始化参数control_files用来为数据库实例指定要打开的控制文件。如果数据库能够找到并打开控制文件,就进入到装载(MOUNT)状态。然后 Oracle 根制控制文件中标明的数据文件和日志信息打开所有这些文件,也就是打开了数据库。

控制文件中包含的主要信息如下
数据库名,创建时间;
数据库当前事务信息、当前SCN、重做日志序号、检查点执行情况等;
数据文件及联机重做日志文件的位置、联机重做日志的顺序号;
数据库的归档模式;
恢复管理器的特定信息(使用 RMAN 做为备份工具)。

由于控制文件的重要性,最好的方法就是建多个“镜像”控制文件,物理分布到不同的存储区域
Oracle 最多支持 8 组控制文件

--查询当前的控制文件信息
show parameter control_files;
select NAME from v$controlfile;

--添加一个控制文件
alter system set
control_files='/db/oradata/orcl/control01.ctl',
'/db/oradata/orcl/control02.ctl',
'/db/oradata/orcl/control03.ctl',
'/db/oradata/orcl/control04.ctl',
scope=spfile;

--关闭数据库
SQL> shutdown immediate;
--复制一个尚未存在的 "/db/oradata/orcl/control04.ctl" 文件:
SQL> host cp /db/oradata/orcl/control01.ctl /db/oradata/orcl/control04.ctl

--打开库
SQL> startup

--再次查询当前的控制文件信息
SQL> select NAME from v$controlfile;

如果是裸设备方式,不能直接复制控制文件,需要用 dd 命令来复制出新的控制文件,
或 通过 RMAN 工具来装载一个新的控制文件。

控制文件损坏处理
如果控制文件有一个损坏,不会影响其它控制文件,但Oralce会报错,并立该自动关闭数据库!

解决方法:
通过报错信息可以看出哪个控制文件出了问题,假如control04文件损坏:
--关闭数据库
SQL> shutdown immediate;

--复制一个正常的控制文件替换损坏的文件
SQL> host cp /db/oradata/orcl/control01.ctl /db/oradata/orcl/control04.ctl

--启动数据库
SQL> startup

重建控制文件
书 277页

posted @ 2020-08-15 14:33  莫让年华付水流  阅读(214)  评论(0编辑  收藏  举报