暂无图片
请教oracle rman恢复中遇到的问题
我来答
分享
去IOE从我做起
2022-12-04
请教oracle rman恢复中遇到的问题

求教是否因为controlfile的备份集产生的时间较晚,所以rman恢复必须要一个archive日志才可以。

    问题说明:RMAN-06555:datafile 1 must be restored from backup create before 02-DEC-22

    情景提要:我在生产库上备份了一份FULLDB的database,语句如下:

                    backup database format 'FULL****.bkp' tag='FULLDB';

                     产生了controlfile的备份集和datafile的备份集各一份。在rman恢复过程中,recover database报错RMAN-06555。list backup发现controlfile的ckp scn为:2998612783  数据文件的ckp scn为:2998583023。

    问题想法:之前一直说rman恢复一定需要一个archive的dbf文件,所以我这边有个猜想,是因为controlfile的ckp大于数据文件的ckp导致需要前滚操作。

                       那再精细到位,我应该要哪一个archivelog呢?【在生产库做的查询】

                        我通过 archive log list 找到这几个日志

                          oldest online log sequence     31343

                          next log sequence                   31345

                          current log sequence              31345

                    我的猜想:需要在生产库备份前先看一眼,查看当前current log sequence   A的数值,在备份结束后再次执行archive log list  查看current log sequence B 的数值    拿取A-B中间所有的archive.dbf文件【目前我是一股脑 扔了三个最近的dbf文件上去,但是恢复完了才想起来这个问题】。

                    请各位大佬帮帮忙看看思路是否正确。


    

    

                    

我来答
添加附件
收藏
分享
问题补充
9条回答
默认
最新
去IOE从我做起

兄弟们  我回来了,趁着第二次做数据恢复 我验证了部分的猜想。我在rman备份前查看了数据库的archive log list 并记录下来了

详情如下【一共做了两个库的恢复,库A和库B】

库A

【我认为备份脚本的执行语句也会影响当前归档日志,我在数据库备份前执行了 alter system archive log current】

以下为我执行后的archive log list

Oldest online log sequence     18343

Next log sequence to archive   18345
Current log sequence           18345

可以看到当前日志序列sequence号为18345 

为了恢复  我上传了从18343——18359的archive log文件到 测试环境

恢复情况如下:【请重点关注加粗加下划线的部分语句】


RMAN> recover database;


Starting recover at 28-DEC-22
using channel ORA_DISK_1


starting media recovery


archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18345_1053708266.dbf thread=1 sequence=18345
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18346_1053708266.dbf thread=1 sequence=18346
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18347_1053708266.dbf thread=1 sequence=18347
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18348_1053708266.dbf thread=1 sequence=18348
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18349_1053708266.dbf thread=1 sequence=18349
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18350_1053708266.dbf thread=1 sequence=18350
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18351_1053708266.dbf thread=1 sequence=18351
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18352_1053708266.dbf thread=1 sequence=18352
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18353_1053708266.dbf thread=1 sequence=18353
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18354_1053708266.dbf thread=1 sequence=18354
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18355_1053708266.dbf thread=1 sequence=18355
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18356_1053708266.dbf thread=1 sequence=18356
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18357_1053708266.dbf thread=1 sequence=18357
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18358_1053708266.dbf thread=1 sequence=18358
archived log file name=/oracle/app/product/11.2.0/db_1/dbs/arch/1_18359_1053708266.dbf thread=1 sequence=18359
unable to find archived log
archived log thread=1 sequence=18360
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 12/28/2022 12:23:15
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 18360 and starting SCN of 70557253

RMAN> alter database open resetlogs;

database opened


如上可看到,rman恢复已经告诉我他是从哪个squence的日志文件开始读取的。所以是从18345这个文件开始 



开始验证

为了缩小范围archive log的范围,我恢复了库B

库B 【备份语句相同,但是这次我只拿了一个archivelog进行恢复】

以下为我执行archive log list的返回值

Oldest online log sequence     77071
Next log sequence to archive   77072
Current log sequence           77072

以上可知是77072的squence日志文件


恢复情况如下:【请重点关注加粗加下划线的部分语句】

RMAN> recover database;

Starting recover at 03-JAN-23
using channel ORA_DISK_1

starting media recovery

archived log file name=/d01/oracle/PROD/db/tech_st/11.1.0/dbs/arch/1_77072_86599995.dbf thread=1 sequence=77072
unable to find archived log
archived log thread=1 sequence=77073
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/03/2023 13:41:30
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 77073 and starting SCN of 17811459280

RMAN> alter database open resetlogs;

database opened


结论:

可知  如必须只放一个日志文件就是Current log sequence序号的文件


遗憾:

1、只进行了正向论证,没有反向论证。应剔除current log sequence的日志文件进行恢复 看会报什么错误。

2、因为我的数据库ddl和dml的时间基本都在跑批的时候,所以没办法验证 【当数据库备份期间,因为跑了大量ddl导致current log sequence改变,那到时候我需要放哪几个sequence序号的日志呢?】


暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
游湖
可以重建控制文件
暂无图片 评论
暂无图片 有用 1
打赏 0
watson

路过学习下。

暂无图片 评论
暂无图片 有用 1
打赏 0
yBmZlQzJ
2022-12-04
一起学习
哇哈哈

recover的时间点早于数据文件的时间点,需要从更早的备份来恢复

暂无图片 评论
暂无图片 有用 1
打赏 0
yBmZlQzJ
2022-12-04
yBmZlQzJ

一起学习

暂无图片 评论
暂无图片 有用 2
打赏 0
zy

排队学习

暂无图片 评论
暂无图片 有用 0
打赏 0
游湖

学习了

暂无图片 评论
暂无图片 有用 1
打赏 0
鸿惊九天

排队学习

暂无图片 评论
暂无图片 有用 0
打赏 0
张sir

我有个思路:
1、把控制文件的scn和数据文件的scn都转换成时间。
2、把archivelog文件的日期和这个两个时间做比对。
3、涉及到的archivelog拿过去就ok了。

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
在Oracle中,下列哪些是控制文件的作用?
回答 5
已采纳
A,C,D
Oracle Explain plan for 执行DML的问题
回答 3
在哪里看到的?有没有说具体的风险是什么?
大佬们,生产环境alter 日志中很多TNS-12535、TNS-00505、TNS-12537 的错误,这个是什么原因?要怎么处理?
回答 3
已采纳
连接超时或者链接中断,我们的生产库里面经常也有很多这种信息,坦白说只要前端没有反馈异常,后端数据库也没其他异常,我通常都不怎么管的,网上有很多说修改这个参数添加那个参数的,我一概都没怎么理会,几年下来
Oracle 有个分区表,随便查询一条数据,想知道这条数据位于哪个分区里面,有什么办法?
回答 2
根据分区表名字,查出对应的分区列。selectowner,name,columnnamefromdbapartkeycolumnswherename'PARTTABLENAME';在根据数据的对应的列
oracle rac,当应用通过scan ip 连接到实例1 上进行一系列dml操作,但是没有结束事务,然后实例1 down了,原本的事务会失败吗?
回答 2
已采纳
对于DML语句,若未提交则它们会被自动回滚,用户需要重新运行。
有哪些国产操作系统支持 oracle 数据库,有上生产吗?
回答 1
已采纳
中标麒麟、红旗Linux等都有安装Oracle数据库实际上生产的
oracle 同一字段减法 计算id 3小时内重复次数,如何解决?
回答 1
已采纳
正确答案✅:用groupby就可以了哇。创建测试数据:ALTERSESSIONSETnlsdateformat'YYYYMMDDHH24:MI:SS';SQL>createtabletest(i
Oracle 如何查询已经存在的概要文件?
回答 1
已采纳
概要文件被保存在数据字典DABPROFILES中,如果想查询概要文件,可执行如下的SQL语句:selectfromdbaprofiles;
最近客户反应每天下午3点-4点之间数据库慢,连续做了几天的awr,有大神可以帮忙分析下么?有偿
回答 6
AWR日志贴出来看一下,敏感信息你可以打码。
adg的从库 可以看执行计划吗?
回答 2
可以参考一下dbmsxplan.displayawr,可以在备库使用,查看被awr捕获的sql的执行计划,由于awr采样有限,所以不一定能查到所有sql的执行计划。