oracle主要采用多路复用控制文件和备份控制文件来保护控制文件。
一、控制文件的多路复用
1.在spfile文件中,control_files参数用于设置数据库的控制文件路径。
alter system set control_files='E:\app\administrator\orcl\control01.ctl',
'E:\app\administrator\flah_recovery_area\orcl\control02.ctl',
'D:\OracleFiles\controlFiles\control03.ctl'
scope=spfile;
前两个控制文件是在创建数据库时自动创建的,第三个控制文件是用户手动添加的。
2.复制控制文件
(1)退出 SQL*PLUS环境
(2)在控制面板->管理工具->组件服务,手动停止OracleServiceORCL和OracleDBConsoleORCL
(3)找到control_files制指定的第一个控制文件,将它复制到手动添加的目录下,并重命名(control03.ctl就是control.ctl01的多路复用文件)
(4)打开(2)中的两个服务
(5)打开SQL*PLUS,查询V$controlfile来确认控制文件是否起作用
select name as 控制文件 from v$controlfile;
二、备份控制文件
有两种方式。
备份为二进制文件:
alter database backup controlfile
to 'D:\OracleFiles\ControlFiles\control_file1.bkp';
备份为可读的文本文件:
alter database backup controlfile to trace;
所创建的文件也叫跟踪文件,其存放位置由spfile文件中的user_dump_dest决定。
show parameter user_dump_dest;
三、恢复控制文件
1.当控制文件损坏
conntect system/system as sysdba;
shutdown immdiate;
复制一个这个文件对应的多路复用控制文件,覆盖原来损坏的文件
重新启动数据库
startup
2.当磁盘损坏
关闭数据库实例,将对应的多路复用控制文件复制到新的可用位置
编辑初始化参数control_files,用新的控制文件位置替换原来损坏的位置,或者删除原来损坏的位置,添加一个新的控制文件位置。
重新启动数据库。
四、删除控制文件
关闭数据库
编辑初始化参数control_files,清除掉打算要删除的控制文件的名称
重新启动数据库