查看控制文件的位置
show PARAMETER control_file;
select name,value from v$parameter
where name=‘control_files’;
select name,status from v$controlfile;
查看制文件内容
(一)strings /u01/app/oracle/oradata/cdb1/control01.ctl
二
alter database backup controlfile to trace as ‘/u01/ctl.txt’;
vim /u01/ctl.txt’
三
desc v$controlfile_record_section
select type,RECORD_SIZE from v$controlfile_record_section;
减少控制文件数量
先查看系统有多少个
show PARAMETERS control_f
ls /u01/app/oracle/oradata/cdb1/c*
alter system set control_files=’/u01/app/oracle/oradata/cdb1/control01.ctl’
scope=spfile;
shutdown immediate
startup nomount
show PARAMETERS control_f
增加控制文件
alter system set control_files=’/u01/app/oracle/oradata/cdb1/control01.ctl’,
‘/u01/app/oracle/oradata/cdb1/control02.ctl’,
‘/u01/app/oracle/oradata/cdb1/control03.ctl’
scope=spfile;
startup force
show PARAMETERS control_f
备份控制文件
在归档情况下
创建备份文件夹
ho mkdir /u01/app/back/
alter database backup controlfile to ‘/u01/app/back/control.bak’;
查看备份
重建控制文件
alter database backup controlfile to trace as ‘/u01/app/back/control.txt’;
查看创建
rman备份
rman target /
backup current controlfile;
配置控制文件自动备份
开启自动备份
CONFIGURE CONTROLFILE AUTOBACKUP on;
它会自动备份到这里
无法启动问题(两个控制文件记录内容不同)
解决办法,高版本替换低版本控制文件
ho cp /u01/app/oracle/oradata/cdb1/control01.ctl /u01/app/oracle/oradata/cdb1/control02.ctl
alter database open;
有备份的恢复
方法一
删除控制文件 rm /u01/app/oracle/oradata/cdb1/control*
shutdown immediate
shutdown abort
Startup
确认系统已经没有控制文件了
/u01/app/oracle/oradata/cdb1/c*
恢复
把文件拷贝回来,三个都要拷贝回来
ho cp /u01/app/back/control.bak /u01/app/oracle/oradata/cdb1/control01.ctl
ho cp /u01/app/back/control.bak /u01/app/oracle/oradata/cdb1/control02.ctl
ho cp /u01/app/back/control.bak /u01/app/oracle/oradata/cdb1/control03.ctl
查看拷贝回来的控制文件
ho ls /u01/app/oracle/oradata/cdb1/c*
alter database mount;
alter database open;
alter database open resetlogs;
alter database recover database using backup controlfile;
shutdown abort
startup
alter database open resetlogs;
recover database;
recover database using backup controlfile;
输入undo表空间路径,蒙
/u01/app/oracle/oradata/cdb1/redo01.log
蒙对了
alter database open;
alter database open resetlogs;
archive log list这里都会变成1
方法二
无法打开文件丢失
show PARAMETERS control_f
ho cp /u01/app/back/control.bak /u01/app/oracle/oradata/cdb1/control01.ctl
ho cp /u01/app/back/control.bak /u01/app/oracle/oradata/cdb1/control01.ctl
ho cp /u01/app/back/control.bak /u01/app/oracle/oradata/cdb1/control03.ctl
ho ls /u01/app/oracle/oradata/cdb1/c*
alter database mount;
alter database open;
recover database using backup controlfile;
recover database;
alter system set “_allow_resetlogs_corruption”=true scope=spfile;
startup force
alter database open resetlogs;
退出重新进入
archive log list
show parameter _allow_resetlogs_corruption
alter system reset “_allow_resetlogs_corruption” scope=spfile sid=’*’;
shutdown immediate
startup