【徵文】應用oracle flashback(2.2)--Flashback Table之從UNDO中恢復
某些時候,我們要處理的表並不是被意外刪除,而是被反覆修改過多次,希望能回覆到之前的某個時間點,通過前面的學習,你一定會說沒問題啊,藉助flashback query就可以,沒錯,flashback query確實可以,但flashback query只是查詢出記錄,如果想做恢復還需要寫出相應的insert或update,也許還需要相當多的where條件做判斷,一個不甚,可能恢復的資料就是錯誤的。老闆又沒在跟兒前站著,我們沒必要在這個時刻用這種方式展示我們嫻熟的指法,因此,我們需要更高效更嚴謹更簡便的方式:flashback table tbname to scn/timestamp,助你達成夢想,詳情請諮詢,o錯了,應該是詳情請接著往下看。
Scn和timestamp的用法通過前面flashback query的學習大家應該都比較熟了,flashback table中指定scn或timestamp的用法與上相同,舉個例子吧:
有資料如下:
JSSWEB> select *from jss_tb1;
ID VL
---------- --------------------
6 F
7 G
8 H
9 I
11 K
12 L
13 M
14 N
15 O
10 J
記錄下當前系統scn(如果不知道確切的scn,恢復時只能通過時間,但正如前文中講到的,時間並不精確,如果通過指定timestamp恢復的話,需要你清楚瞭解所做的操作大概是在什麼時間)
JSSWEB> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
593480
我們對該表做些操作:
JSSWEB> update jss_tb1 set id=id+100 where id>10;
已更新5行。
JSSWEB> insert into jss_tb1 values (21,'Z');
已建立 1 行。
JSSWEB> delete jss_tb1 where id=8;
已刪除 1 行。
JSSWEB> commit;
提交完成。
JSSWEB> select *from jss_tb1;
ID VL
---------- --------------------
21 Z
6 F
7 G
9 I
111 K
112 L
113 M
114 N
115 O
10 J
已選擇10行。
這些都屬於常規操作,如果最終發現這些操作都屬於誤操作,需要恢復回表最初的形式,藉助flashback query當然可以實現:
JSSWEB> select *from jss_tb1 as of scn 593480;
ID VL
---------- --------------------
6 F
7 G
8 H
9 I
11 K
12 L
13 M
14 N
15 O
10 J
已選擇10行。
查詢能夠寫出來,就一定能將表更新回去,不過既使是針對我們測試時所做過的簡單操作(新增、刪除、修改),更新的語句就已經需要寫的很複雜了,因為我們需要分別判斷新增、刪除、修改過的記錄。
幸好,我們還有flashback table,因此我們只需要指定一個scn或timestamp即可。
JSSWEB> flashback table jss_tb1 to scn 593480;
閃回完成。
JSSWEB> select *from jss_tb1;
ID VL
---------- --------------------
6 F
7 G
8 H
9 I
11 K
12 L
13 M
14 N
15 O
10 J
已選擇10行。
所有記錄均已回覆到指定scn時的狀態。
===================================
檢視前面的連載:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-371906/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle flashback特性(2.2)--Flashback Table之從UNDO中恢復Oracle
- 全面學習oracle flashback特性(2.2)--Flashback Table之從UNDO中恢復Oracle
- 【徵文】應用oracle flashback(2.1)--Flashback Table之RECYCLEBINOracle
- 【徵文】應用oracle flashback(2.3)--Flashback Table之注意事項Oracle
- 應用oracle flashback--Flashback Table之RECYCLEBINOracle
- 【徵文】應用oracle flashback(3.2)--Flashback Database操作示例OracleDatabase
- oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- Oracle 備份恢復之 FlashbackOracle
- Oracle10g中FLASHBACK TABLE語句快速恢復表Oracle
- flashback技術之---flashback table
- Oracle10g中FLASHBACK TABLE語句恢復DML誤操作Oracle
- 全面學習oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- 應用oracle flashback--Flashback Database介紹OracleDatabase
- 全面學習oracle flashback特性(2.3)--Flashback Table之注意事項Oracle
- 用flashback恢復儲存過程儲存過程
- 【Flashback】Flashback Table功能實踐
- 用flashback恢復儲存過程(ZT)儲存過程
- oracle9i使用flashback恢復資料(轉)Oracle
- Oracle10g的Flashback之Flashback Transaction QueryOracle
- ORACLE FLASHBACK的另類應用薦Oracle
- Flashback database與flashback table使用條件區別Database
- 9i新特性之Flashback Query的應用---針對DML誤操作的恢復
- flashback技術之---flashback query
- flashback技術之---flashback drop
- flashback技術之---flashback databaseDatabase
- flashback version query和 flashback transaction query簡單應用
- flashback database如何選擇需要應用的flashback logDatabase
- 【徵文】全面學習oracle flashback特性(1.2)--閃回查詢之As of scnOracle
- 【備份與恢復】使用Flashback Database(不完全恢復)Database
- FLASHBACK DATABASE可以恢復刪除的TABLESPACEDatabase
- Oracle FlashbackOracle
- 【FLASHBACK】Oracle flashback data archive 介紹OracleHive
- [Flashback]Oracle flashback儲存過程Oracle儲存過程
- flashback技術之---flashback Transaction Query
- flashback技術之---flashback version query
- flashback drop/query/table/database/archiveDatabaseHive
- 影響flashback table的操作!
- 【徵文】全面學習oracle flashback特性(1.1)--閃回查詢之As of timestampOracle