背景:
dg备库在做flashback database操作,在执行flashback database to time="to_date(‘20210623 10:38:00’,‘YYMMDD HH24:MI:SS’)"时,提示ORA-38729: Not enough flashback database log data to do FLASHBACK
分析:
首先从报错字面意思上看是flashback log缺失的问题,但是根据实际情况确认,flashbacklog肯定是完整且足够的,v$flashback_database_log也可以验证这一点
其次也可以确认不是archivelog缺失的问题,如果archivelog缺失的话会报错出具体缺失的archivelog:
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of log thread 1 seq 2798 lowscn 42915579894 found to restore
在metalink上搜到了这篇文章,看着情况差不多 Flashback Database To Timestamp Failed With ORA-38729 (Doc ID 2658565.1)
检查了一下我们的环境,确认存在文章中说的 the “orphan” incarnation has the latest “resetlogs_time” compared with the “current” incarnation
so,按照文章说的解决办法,我们只能Use the scn not timestamp or Recreate the controlfile,因为是线上环境肯定无法重建控制文件,所以只能使用flashback database to scn操作了,好在Oracle提供timestamp和scn互转的函数:
select TIMESTAMP_TO_SCN(TO_TIMESTAMP('2021-06-23 10:41:00','YYYY-MM-DD HH24:MI:SS')) from dual;
select SCN_TO_TIMESTAMP(12698942217844) SCN from dual;