前提:
- Standby Database Must be in Flashback database mode.
- Time at which Drop/Truncate/Delete Table happened should be within the db_flashback_retention_target and all the flashback and archive logs should be available
?
?
在dataguard备库上找回在主库上被错误的Drop/Truncate/Delete 掉的Table
参考文章:
How To Recover From A Drop/Truncate/Delete Table Done On Primary Using Flashback On A Standby Database (文档 ID 958557.1)
主库:
[oracle@hosta ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.1.0.7.0 - Production on Fri Jul 31 22:08:19 2015
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select sysdate from dual;
SYSDATE
---------
31-JUL-15
SQL> show parameter format
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_format string %t_%s_%r.dbf
nls_date_format string
nls_time_format string
nls_time_tz_format string
nls_timestamp_format string
nls_timestamp_tz_format string
star_transformation_enabled string TRUE
SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
2015-07-31 22:10:00
SQL> select count(*) from scott.test_tab_1 ;
COUNT(*)
----------
2566
SQL> truncate scott.test_tab_1 ;
truncate scott.test_tab_1
*
ERROR at line 1:
ORA-03290: Invalid truncate command - missing CLUSTER or TABLE keyword
SQL> truncate table scott.test_tab_1 ;
Table truncated.
SQL>
备库:
SQL> show parameter target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 0
db_flashback_retention_target integer 1440 ------->默认的设置,1440分钟,也就是一天。
fast_start_io_target integer 0
fast_start_mttr_target integer 0
memory_max_target big integer 356M
memory_target big integer 356M
pga_aggregate_target big integer 0
sga_target big integer 0
SQL> recover managed standby database cancel;
Media recovery complete.
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 372449280 bytes
Fixed Size 1313484 bytes
Variable Size 322962740 bytes
Database Buffers 41943040 bytes
Redo Buffers 6230016 bytes
Database mounted.
SQL> flashback database to timestamp to_date('2015-07-31 22:10:00','YYYY-MM-DD HH24:MI:SS');
flashback database to timestamp to_date('2015-07-31 22:10:00','YYYY-MM-DD HH24:MI:SS')
*
ERROR at line 1:
ORA-01153: an incompatible media recovery is active
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> flashback database to timestamp to_date('2015-07-31 22:10:00','YYYY-MM-DD HH24:MI:SS');
Flashback complete.
SQL> alter database open read only;
Database altered.
SQL> select count(*) from scott.test_tab_1 ;
COUNT(*)
----------
2566
SQL> exit
[oracle@hostb SBDB1]$ export NLS_LANG=american_america.AL32UTF8
[oracle@hostb SBDB1]$ exp system/oracle file=/home/oracle/test_tab_exp_0730.dmp tables=scott.test_tab_1
Export: Release 11.1.0.7.0 - Production on Fri Jul 31 22:20:03 2015
Copyright (c) 1982, 2007, Oracle. All rights reser