Oracle11gR2_ADG管理之恢復主庫的truncate表實戰
阿新 • • 發佈:2018-04-01
acl ack min cnblogs com body alt logs ase
備庫開啟flashback database
#關閉備庫的同步 SQL> alter database recover managed standby database cancel; Database altered. SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ NO SQL> alter database flashback on; Database altered. SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ YES SQL> alter database recover managed standby database using current logfile disconnect; Database altered.
查看同步狀態,備庫實時應用主庫的歸檔
#主庫上執行 SQL> set linesize 300 SQL> col DESTINATION format a10 SQL> col db_unique_name format a10 SQL> col database_mode format a20 SQL> col recovery_mode format a20 SQL> col synchronization_status format a10 SQL> col gap_status format a10 SQL> SELECT DESTINATION,db_unique_name,type,STATUS,database_mode,recovery_mode,ARCHIVED_THREAD#,ARCHIVED_SEQ#,applied_seq#,synchronization_status,gap_status FROM V$ARCHIVE_DEST_STATUS WHERE STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE'; DESTINATIO DB_UNIQUE_ TYPE STATUS DATABASE_MODE RECOVERY_MODE ARCHIVED_THREAD# ARCHIVED_SEQ# APPLIED_SEQ# SYNCHRONIZ GAP_STATUS ---------- ---------- -------------- --------- -------------------- -------------------- ---------------- ------------- ------------ ---------- ---------- NONE LOCAL VALID OPEN IDLE 1 44 0 CHECK CONF IGURATION snewtest snewtest PHYSICAL VALID OPEN_READ-ONLY MANAGED REAL TIME AP 1 44 43 CHECK CONF NO GAP PLY IGURATION SQL> SELECT CURRENT_SCN FROM V$DATABASE; CURRENT_SCN ----------- 4410236
主庫發生誤操作將表test truncate 掉
SQL> truncate table test; Table truncated. SQL> select count(*) from test; COUNT(*) ---------- 0 #記錄scn SQL> SELECT CURRENT_SCN FROM V$DATABASE; CURRENT_SCN ----------- 4410383 #通過logminer搜索一定範圍內的archivelog,確定drop操作對應的準確SCN號 SQL> exec dbms_logmnr.start_logmnr(startscn=>4410236,endscn=>4410383,options=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE); PL/SQL procedure successfully completed. SQL> col sql_redo format a110 SQL> set linesize 180 SQL> select scn,sql_redo,timestamp from v$logmnr_contents where table_name='TEST'; SCN SQL_REDO TIMESTAMP ---------- -------------------------------------------------------------------------------------------------------------- --------- 4410319 truncate table test; #確定flashback database的目標時間為4410319
在備庫上執行flashback database
SQL> select count(*) from test;
COUNT(*)
----------
0
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> flashback database to scn 4410236;
Flashback complete.
SQL> alter database open read only;
Database altered.
SQL> select count(1) from test;
COUNT(1)
----------
23
使用dblink或者datapump將數據恢復到主庫上
:
create public database link system_snewtest connect to sys identified by "oracle" using ‘snewtest‘;
insert into test select * from system.test@system_snewtest;
SQL> select count(1) from test;
COUNT(1)
----------
23
重新開啟備庫上的MRP
SQL> alter database recover managed standby database using current logfile disconnect ;
Database altered.
SQL> select count(1) from test;
COUNT(1)
----------
2
Oracle11gR2_ADG管理之恢復主庫的truncate表實戰