incarnation flashback database 时可以 offline 不符合的 datafile

How do we flashback a database to a guaranteed restore point (GRP) that has 2 tablespaces with flashback off after a RESETLOGS was done?

Flashback fails with the errors below. It fails on the datafiles for the two tablespaces with flashback off.

RMAN-03002: failure of flashback command at 09/27/2013 15:14:24

ORA-38753: Cannot flashback data file 2229; no flashback log data.

ORA-01110: data file 2229: '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.27472.826360617'

SOLUTION

We need to restore the datafiles for the two tablespaces from a backup, offline those same files, flashback to GRP, online the files again then recover to the GRP SCN.

Note: Because RESETLOGS was done we'll also have to reset the incarnation. Otherwise that step can be skipped.

  1. Restore the datafiles for those two tablespaces from a backup.

Note: The restored files are dated Sept 26th while all other datafiles are current (Sept 28th). The GRP is Sept 27th.

STATUS CHECKPOINT_CHANGE# FUZ CHECKPOINT_TIME COUNT(*)


OFFLINE 104379205366 NO 26-SEP-2013 21:17:26 1

OFFLINE 104379205549 NO 26-SEP-2013 21:19:06 1

OFFLINE 104379205557 NO 26-SEP-2013 21:19:14 1

OFFLINE 104379205610 NO 26-SEP-2013 21:19:57 1

OFFLINE 104379206069 NO 26-SEP-2013 21:21:29 1

OFFLINE 104379206276 NO 26-SEP-2013 21:22:23 1

OFFLINE 104379206428 NO 26-SEP-2013 21:23:10 1

OFFLINE 104379206445 NO 26-SEP-2013 21:23:21 2

OFFLINE 104379206480 NO 26-SEP-2013 21:23:41 2

OFFLINE 104379206520 NO 26-SEP-2013 21:24:16 1

ONLINE 104398694790 YES 28-SEP-2013 08:42:03 2221

11 rows selected.

Database is currently in MOUNT.

  1. After the restore make sure those restored files are OFFLINE before the flashback is done or it will fail with the same errors.

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29237.826360609' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29345.826360597' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29341.826360579' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29338.826360575' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29337.826360571' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29238.826360611' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29239.826360615' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29240.826360615' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.12744.826360617' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.34180.826360617' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.33245.826360617' offline;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.27472.826360617' offline;

  1. Flashback to the guaranteed restore point (GRP).

SQL> FLASHBACK DATABASE TO RESTORE POINT '<RestorePointName>';

Starting flashback at 13-09-28 10:20

...

starting media recovery archived log for thread 1 with sequence 843 is already on disk as file +<AsmDiskGroup>/<db_unique_name>/archivelog/2013_09_27/thread_1_seq_843.33236.827237895

media recovery complete, elapsed time: 00:00:15

Finished flashback at 13-09-28 10:27

  1. Online all the datafiles for the two tablespaces.

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29345.826360597' online;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29341.826360579' online;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29338.826360575' online;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29337.826360571' online;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29238.826360611' online;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29239.826360615' online;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.29240.826360615' online;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.12744.826360617' online;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.34180.826360617' online;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.33245.826360617' online;

ALTER DATABASE DATAFILE '+<AsmDiskGroup>/<db_unique_name>/datafile/<FileName>.27472.826360617' online;

  1. Because the database was opened with resetlogs we have to reset the incarnation to before resetlogs was done.

RMAN> list incarnation;

List of Database Incarnations

DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time


1 1 <db_name> 2189369331 PARENT 73600365279 11-12-28 01:45

2 2 <db_name> 2189369331 PARENT 104113554484 13-09-17 07:41 <<< We need to be in this incarnation to recover to 9-27-2013. Use the INC KEY.

3 3 <db_name> 2189369331 CURRENT 104390300886 13-09-28 07:04

RMAN> reset database to incarnation 2;

database reset to incarnation 2

  1. Do RECOVER UNTIL CHANGE using the SCN of the GRP +1. The UNTIL recovers to right before the SCN specified.

SQL> select name,scn,time,database_incarnation#,guarantee_flashback_database,storage_size from v$restore_point;

NAME SCN TIME DATABASE_INCARNATION# GUARANTEE_FLASHBACK_DATABASE STORAGE_SIZE


<RestorePointName> 104390296851 27-SEP-13 12.14.11.000000000 PM 2 YES 15728640000

1 row selected.

SQL> RECOVER DATABASE UNTIL CHANGE 104390296852;

ORA-00279: change 104379205366 generated at 09/26/2013 21:17:26 needed for thread 1 ORA-00289:

suggestion : +<AsmDiskGroup>/<db_unique_name>/archivelog/2013_09_28/thread_1_seq_788.39097.827318825 ORA-00280:

change 104379205366 for thread 1 is in sequence #788 Specify log: {=suggested | filename | AUTO | CANCEL}

AUTO

ORA-00279: change 104379207088 generated at 09/26/2013 21:27:03 needed for thread 1 ORA-00289:

suggestion : +<AsmDiskGroup>/<db_unique_name>/archivelog/2013_09_28/thread_1_seq_789.23582.827318825 ORA-00280:

change 104379207088 for thread 1 is in sequence #789 ORA-00278: log file '+<AsmDiskGroup>/<db_unique_name>/archivelog/2013_09_28/thread_1_seq_788.39097.827318825' no longer needed for this recovery

....

ORA-00279: change 104390280294 generated at 09/27/2013 11:55:45 needed for thread 1 ORA-00289:

suggestion : +<AsmDiskGroup>/<db_unique_name>/archivelog/2013_09_27/thread_1_seq_843.33236.827237895 ORA-00280:

change 104390280294 for thread 1 is in sequence #843 ORA-00278: log file '+<AsmDiskGroup>/<db_unique_name>/archivelog/2013_09_27/thread_1_seq_842.21570.827236545' no longer needed for this recovery Log applied.

Media recovery complete.

SYS> alter database open resetlogs;

Database altered.

  1. To enable the flashback on tablespaces:

SQL> alter tablespace <tablespace_name> flashback on;

相关推荐
我要见SA姐111 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
我要见SA姐112 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
数据库·ide·vscode·oracle·编辑器
这个DBA有点耶14 小时前
异构数据集成怎么做?5 种同步方案对比 + 金融级 CDC 实战解析
数据库·oracle·架构
oradh20 小时前
Oracle联机日志文件损坏故障总结
数据库·oracle·oracle联机日志文件损坏
辰辉创聚20 小时前
炎症与免疫相关细胞因子:信号通路、分类及科研检测应用
python·oracle·nycodenz·重组il-6蛋白·抗tnf-α抗体·il-1β蛋白
风123456789~1 天前
【Oracle专栏】明明有索引,但报ORA-08102未找到索引
oracle
Leon-Ning Liu2 天前
Oracle 19c ASMB 进程 PGA 内存泄漏排查实战 (Bug 38610635)
数据库·oracle
步行cgn2 天前
Spring 注入 null 和空字符串详解
数据库·spring·oracle
zone_z2 天前
11 · 空间类故障排查:表空间满 / 临时表空间爆 / 归档满挂库
oracle·temp·tablespace·archive·ora-01652
严同学正在努力3 天前
认识 SQL Server 的 T-SQL 语法
数据库·人工智能·ai·oracle·dba