Oracle 恢复之using backup controlfile 和 until cancel

Oracle恢复数据库时有几个常用但非常相似的命令,整理下它们各自的作用及适用场景。

  • recover database
  • recover database until cancel
  • recover database using backup controlfile
  • recover database using backup controlfile until cancel
  • recover database until cancel using backup controlfile
命令控制文件旧于数据文件?完全恢复?备注
recover database不可以 
recover database until cancel不可以常用于current/active redo丢失时
recover database using backup controlfile可以 
recover database using backup controlfile until cancel可以相当于执行recover database using backup controlfile,然后选择AUTO应用所有归档,但不输入redo文件进行应用
recover database until cancel using backup controlfile可以当于以旧的redo中的scn为恢复终点,不应用归档日志,会丢失所有数据。

 

1. recover database

在普通的recover database或者recover tablespace,recover datafile时,Oracle会以当前controlfile记录的SCN为准,利用archive log和redo log,把相关datafile的block恢复到“当前controlfile记录的SCN”

使用场景:既然恢复是以控制文件中的SCN为目标,当然要求控制文件不能比数据文件旧(控制文件SCN>=数据文件SCN)。所以使用场景要么是控制文件完好数据文件是从备份中恢复的,要么控制文件和数据文件都是从备份中恢复的

 

2. recover database until cancel

也要求控制文件不能比数据文件旧,在丢失current/active redo时手动指定恢复终点,用于不完全恢复。这个命令只能在 SQL命令行进行,通过提示归档日志文件的建议名称进行主动恢复,应用到哪个归档由你自己把控。在归档和联机日志都完整的情况下,你甚至可以通过不完全恢复的语句来实现数据的完全恢复。

recover database until cancel 命令输入AUTO选项时只会应用归档日志,而不会自动应用redo日志,这是和recover database的区别,后者自动应用所有归档和在线日志进行前滚操作。

SQL> recover database until cancel;
ORA-00279: change 2255708 generated at 06/13/2019 10:47:31 needed for thread 1
ORA-00289: suggestion: /u02/oradata/CDB1/archivelog/2019_06_13/o1_mf_1_1_gj3go3on_.arc  <-- Oracle建议应用的日志
ORA-00280: change 2255708 for thread 1 is in sequence #1

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u02/oradata/CDB1/archivelog/2019_06_13/o1_mf_1_1_gj3go3on_.arc  <--- 输入日志名
ORA-00279: change 2255918 generated at 06/13/2019 10:53:23 needed for thread 1
ORA-00289: suggestion:/u02/oradata/CDB1/archivelog/2019_06_13/o1_mf_1_2_gj3gpf1h_.arc <-- Oracle建议下一个应用的日志
ORA-00280: change 2255918 for thread 1 is in sequence #2
ORA-00278: log file '/u02/oradata/CDB1/archivelog/2019_06_13/o1_mf_1_1_gj3go3on_.arc' no longer needed for this recovery <-- o1_mf_1_1_gj3go3on_.arc已应用完,不再需要

Specify log: {<RET>=suggested | filename | AUTO | CANCEL} <-- 再次要求输入选项
CANCEL   <-- 选择CANCEL
Media recovery cancelled.  <-- 应用结束

SQL> alter database open resetlogs;
Database altered.

 

3. recover database using backup controlfile

如果数据文件完好,而全部控制文件丢失,需要从备份中还原,此时控制文件就比数据文件旧(控制文件SCN<数据文件SCN),只使用recover database恢复DB到还原出来的控制文件SCN是打不开数据库的。这时就需要用到第二个命令。

recover database using backup controlfile告诉oracle,不要以还原出来的控制文件作为恢复的终点,而要恢复到比它更靠后的位置,恢复时可以看到提示 Specify log: {=suggested | filename | AUTO | CANCEL}。通常选择AUTO应用所有归档,但注意AUTO不会应用redo日志,需要手动输入redo文件进行应用。然后通过alter database open resetlogs;命令打开DB。

 

4. recover database using backup controlfile until cancel

如果数据文件完好,全部控制文件丢失,并且current/active redo都丢失执行这个命令相当于执行recover database using backup controlfile,然后选择AUTO应用所有归档,但不输入redo文件进行应用(因为已经丢了),明显这也是一种不完全恢复,current/active redo中的数据会丢失。

 

5. recover database until cancel using backup controlfile

如果数据文件完好,全部控制文件丢失,并且current/active redo都丢失执行这个命令相当于以旧的redo中的scn为恢复终点,不应用归档日志,会丢失所有数据。

 

参考

https://blog.csdn.net/zftang/article/details/6582032

https://www.cnblogs.com/askscuti/p/10996101.html

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
ORA-00283 和 ORA-01610 错误都与恢复操作有关。 ORA-00283 错误表示恢复会话因为错误而被取消。这个错误通常是由于恢复过程中出现了其他错误,导致恢复过程无法继续而被取消。 ORA-01610 错误表示使用 BACKUP CONTROLFILE 选项的恢复必须已经完成。这个错误通常是由于在执行恢复操作之前没有备份好控制文件,或者备份的控制文件不完整所致。 针对这两个错误,你可以尝试以下步骤进行恢复: 1. 确认恢复操作的日志文件,可以使用命令 `SELECT * FROM V$RECOVERY_FILE_STATUS` 来查看恢复操作的日志文件,并检查是否存在错误。 2. 如果日志文件正常,可以尝试使用命令 `RECOVER DATABASE` 来继续恢复操作。如果恢复过程中出现了其他错误,可以根据错误提示进一步修复。 3. 如果备份的控制文件不完整或者备份之前没有备份控制文件,可以使用备份控制文件的方式进行恢复。可以使用命令 `STARTUP NOMOUNT PFILE=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora;` 将数据库启动到 nomount 状态,然后使用命令 `RESTORE CONTROLFILE FROM '/backup/controlfile.bak';` 恢复控制文件。 4. 在完成控制文件恢复之后,可以使用命令 `ALTER DATABASE MOUNT;` 将数据库挂载到 mount 状态,然后使用命令 `RECOVER DATABASE;` 恢复数据库。 需要注意的是,在进行恢复操作时,一定要备份好数据库文件,并且在操作过程中要小心谨慎,以免造成数据的进一步损害。同时,也要注意在恢复操作之前备份好控制文件等重要的数据库文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hehuyi_In

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值