控制文件相关操作
接着来介绍一下关于Controlfile的操作问题,这部分内容需要好好记住,因为控制文件损坏之后的影响是比较严重的,如果没有备份,最后只能手动修复,这样出错的可能性就会大大增加。好了,看一下相关操作。
一、CREATE CONTROLFILE错误
1、检查文件差异
创建新的控制文件之后会检查数据字典和控制文件之间的矛盾,以检查丢失或多余的文件。
丢失:
若数据字典中存在某数据文件,而控制文件中没有,则Oracle在控制文件中创建一个名为MISSINGnnn的占位符入口,表示作为脱机并需要介质恢复的标志。可以通过重命名MISSINGnnn来访问MISSINGnnn对应的真正数据文件,但该文件必须是只读或正常脱机的。
又因为数据文件需要介质恢复,而RESETLOGS的结果排除了介质恢复的可能,所以当使用了RESETLOGS子句时,必须撤销包含数据文件的表空间。
多余:
当控制文件记录的数据文件不在数据字典中时,Oracle会从新的控制文件中删除对数据文件的引用。
注:无论是丢失还是多余,都会在相应实例的alert.log文件中包含一条解释性消息。
2、创建过程中的错误
一般在创建新的控制文件后打开数据库,可能会返回一下错误类型:
ORA-01173、ORA-01176、ORA-01177、ORA-01215、ORA-01216
最大的可能是在在创建时有文件丢失或多余文件。
此时应该找到备份的数据文件和联机重做日志文件,覆盖当前文件,并使用正确的CREATE CONTROLFILE语句重新创建。
二、备份控制文件
1、备份控制文件为二进制文件
ALTER DATABASE BACKUP CONTROLFILE TO '/oracle/backup/control.bkp';
2、制作以后可以重新创建控制文件的SQL
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
3、可以使用RMAN对控制文件进行备份
三、恢复控制文件
1、控制文件损坏
①关闭实例 ②将未损坏的控制文件副本覆盖已损坏文件 ③打开数据库
2、磁盘损坏
①关闭实例 ②经未损坏控制文件副本复制到新磁盘空间 ③修改CONTROL_FILES参数 ④打开数据库
也可以先修改CONTROL_FILES参数,然后恢复控制文件,再把
四、删除控制文件
① 关闭数据库
② 修改CONTROL_FILES参数
③启动数据库
④ 在磁盘上删除相应CONTROLFILE文件
五、控制文件信息
通过一下视图来查看控制文件信息:
V$CONTROLFILE:控制文件名称
V$CONTROLFILE_RECORD_SECTION:控制文件记录段信息
V$PARAMETER:初始化参数CONTROL_FILES的值