关于通过Dataguard Standy备库闪回来恢复主库drop/truncate/delete的表数据
方法适用于Oracle 10.2.0.1之后的版本
目的
本文主要了解通过备库闪回操作来进行对主库drop/truncate/delete表的数据恢复步骤
解决方法
前提要求:
- 备库必须已经处于闪回数据库模式
- 被drop/truncate/delete表的发生时间应该在db_flashback_retention_target的时间范围内,其所有闪回和归档日志应该都处于可用状态
步骤:
1) 停止备库的MRP(managed recovery process)
SQL > recover managed standby database cancel;
2) 为了找到丢失的数据,使用flashback database到drop/truncate/delete表操作发生之前的靠近的时间点。
例如:
SQL > shutdown immediate;
SQL > startup mount;
SQL > flashback database to timestamp to_date('29-MAY-2009 14:30:00','DD-MON-YYYY HH24:MI:SS');
3) 将备库置于Read Only模式.
SQL> alter database open read only;
4) 检查并找到表数据并确认可用。
5) 导出所需的表数据。
6) 将数据导回主库。
7) 关闭备库,之后重新mount备库并使用recover命令将其恢复到主库当前状态。
SQL > shutdown immediate
SQL > startup mount
SQL > recover standby database;
8) 一旦所有所有归档都手动应用好后,启动MRP,让其进行自动归档应用同步。
SQL > recover managed standby database disconnect from session;