shell
备份恢复作业:
异机恢复recover database报如下错误:
archived log file name=/oradata/arch/1_237_1151011666.dbf thread=1 sequence=237
archived log file name=/oradata/arch/2_256_1151011666.dbf thread=2 sequence=256
unable to find archived log
archived log thread=1 sequence=238
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 11/21/2023 20:38:39
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 238 and starting SCN of 21645880
已确认sequence 238是源库的当前redo。如果想要恢复至当前redo,如何进行下一步?
如果不要源库当前redo里的数据了,如果进行下一步使数据库可用?
根据错误信息,RMAN 无法找到需要恢复的归档日志 "archived log thread=1 sequence=238",因此需要先确认该归档日志位置是否丢失,如果是,则需要使用其他完整的备份文件或者从其他地方获取该归档日志文件。
如果您想要将数据库恢复至当前的 redo,可以尝试先使用"recover database until cancel" 命令,然后手动指定应从哪个媒介恢复。具体步骤如下:
rman
运行命令 "recover database until cancel;"
输入 "change archivelog all crosscheck;"
等待 RMAN 执行完 crosscheck,之后输入 "delete expired archivelog all;",删除过期的归档日志文件,确保只剩下需要的备份文件
在恢复过程中,当 RMAN 要求输入日志文件时,请手动指定归档日志的位置和文件名,具体方法是输入命令 "list backup of archivelog all;" 查看备份集,并使用 "catalog" 命令将备份集中的归档日志文件目录列入控制文件中。
如果您不需要恢复源库当前 redo 里的数据,可以尝试跳过该归档日志文件,然后进行恢复数据库的操作。具体步骤如下:
确认源库当前 redo 里的数据可以舍弃,或者已经备份。
运行命令 "recover database skip until sequence 238 thread 1;"
RMAN 将跳过缺失的归档日志文件,并恢复其他可用的备份文件。
执行完 recover 命令后,使用命令 "alter database open resetlogs; " 使数据库可用。