控制文件丢失恢复实战操作

控制文件丢失恢复

查看数据库基本信息:

cd /u02/backup/    控制文件自动备份目录

/u01/app/oracle/oradata/CDB1/control01.ctl, 
/u01/app/oracle/oradata/CDB1/control02.ctl

tail -f  /u01/app/oracle/diag/rdbms/cdb1/cdb1/trace/alert_cdb1.log  --查看数据库日志

select open_mode,database_role from v$database;  --查看启动状态
select * from v$diag_info;  --查看日志路径

为什么要用resetlogs打开数据库呢?

因为用了备份控制文件,recover命令只能修复截止到 控制文件备份时的数据库物理结构信息,而无法修改控制文件中的当前重做日志的序列号等信息,recover命令执行完毕后,控制文件中当前在线日志序列号还是陈旧的(是当初备份时的)。若按常规方式打开数据库,将报错,Oracle采用重设日志功能,日志序列号就从1重新开始。

情形一:如果损坏了全部控制文件,那么需要重新创建控制文件或从备份恢复

RMAN>startup nomount

RMAN> restore controlfile from autobackup;
--恢复报错:because DBID was not set
Starting restore at 15-MAR-22
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=13 device type=DISK

recovery area destination: /u02/oradata
database name (or database unique name) used for search: CDB1
channel ORA_DISK_1: no AUTOBACKUPS found in the recovery area
AUTOBACKUP search with format "%F" not attempted because DBID was not set
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 03/15/2022 13:48:19
RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece

如果能找到DBID设置后继续恢复
CDB1 (DBID=983951798)

RMAN> set dbid 983951798

RMAN> restore controlfile from autobackup;      此时仍未找到自动备份文件--可能因为在RMAN的CONFIGURE中未设置控制文件为自动备份也没设置备份目录。


未找到7天内的控制文件:
RMAN> restore controlfile from autobackup;

Starting restore at 15-MAR-22
using channel ORA_DISK_1

recovery area destination: /u02/oradata
database name (or database unique name) used for search: CDB1
channel ORA_DISK_1: no AUTOBACKUPS found in the recovery area
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20220315
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20220314
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20220313
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20220312
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20220311
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20220310
channel ORA_DISK_1: looking for AUTOBACKUP on day: 20220309
channel ORA_DISK_1: no AUTOBACKUP in 7 days found
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 03/15/2022 14:26:04
RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece

通过指定的备份目录进行恢复:

RMAN> restore controlfile from '/u02/backup/c-983951798-20220314-00.CTL';

*注意:控制文件自动备份被更改到以下目录,所以上述操作未找到备份(非默认恢复目录):

cd /u02/backup/    控制文件自动备份目录

**查看默认恢复目录(nomount无法查看备份集信息,可能被更改):

SQL> show parameter recover;
NAME				     TYPE	 VALUE
db_recovery_file_dest		     string	 /u02/oradata
db_recovery_file_dest_size	     big integer 10G
db_unrecoverable_scn_tracking	     boolean	 TRUE
recovery_parallelism		     integer	 0
remote_recovery_file_dest	     string

启动到mount状态,recover恢复,再开启到open

RMAN> alter database mount;
released channel: ORA_DISK_1
Statement processed

RMAN> recover database;

RMAN> alter database open resetlogs;

建议平时收集数据库台账信息,因为启动到nomount下,无法查看DBID和控制文件自动备份位置等信息

数据库台账信息:
1)list backup;      --备份的文件种类及位置
2)DBID信息;      --DBID=983951798
3)..

情形二:如果控制文件有多个,而只损坏了单个控制文件,那么只需要关闭数据库,拷贝其它好的控制文件覆盖掉坏的控制文件即可

复制控制文件: cp control02.ctl control01.ctl 

更改文件权限:
chown -R grid:oinstall /u02/backup/c-983951798-20220314-00.CTL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值