全面學習oracle flashback特性(1.2)--閃回查詢之As of scn
仍以前文中建立的表為例,既然是基於scn的查詢,我們首先就需要得到scn,這裡我們通過dbms_flashback.get_system_change_number函式來獲取oracle當前的scn,之後再執行資料的修改操作。
[@more@]
1、As of scn的示例
仍以前文中建立的表為例,既然是基於scn的查詢,我們首先就需要得到scn,這裡我們通過dbms_flashback.get_system_change_number函式來獲取oracle當前的scn,之後再執行資料的修改操作。
JSSWEB> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
344197
JSSWEB> delete jss_tb1 where id>10;
已刪除10行。
JSSWEB> commit;
提交完成。
JSSWEB> select * from jss_tb1 as of scn 344197;
ID VL
---------- --------------------
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
9 I
10 J
11 K
12 L
13 M
14 N
15 O
16 P
17 Q
18 R
19 S
20 T
已選擇20行。
執行insert,將刪除的資料重新恢復回表jss_tb1
JSSWEB> insert into jss_tb1 select *from jss_tb1 as of scn 344197
2 where id not in(select id from jss_tb1);
已建立10行。
JSSWEB> commit;
提交完成。
事實上,Oracle在內部都是使用scn,即使你指定的是as of timestamp,oracle也會將其轉換成scn,系統時間標記與scn之間存在一張表,即SYS下的SMON_SCN_TIME
JSSWEB> desc sys.smon_scn_time;
名稱 是否為空? 型別
---------------------------------------- -------- ------------------------
THREAD NUMBER
TIME_MP NUMBER
TIME_DP DATE
SCN_WRP NUMBER
SCN_BAS NUMBER
NUM_MAPPINGS NUMBER
TIM_SCN_MAP RAW(1200)
SCN NUMBER
ORIG_THREAD NUMBER
每隔5分鐘,系統產生一次系統時間標記與scn的匹配並存入sys.smon_scn_time表,該表中記錄了最近1440個系統時間標記與scn的匹配記錄,由於該表只維護了最近的1440條記錄,因此如果使用as of timestamp的方式則只能flashback最近5天內的資料(假設系統是在持續不斷執行並無中斷或關機重啟之類操作的話)。注意理解系統時間標記與scn的每5分鐘匹配一次這句話,舉個例子,比如scn:339988,339989分別匹配08-05-30 13:52:00和2008-13:57:00,則當你通過as of timestamp查詢08-05-30 13:52:00或08-05-30 13:56:59這段時間點內的時間時,oracle都會將其匹配為scn:339988到undo表空間中查詢,也就說在這個時間內,不管你指定的時間點是什麼,查詢返回的都將是08-05-30 13:52:00這個時刻的資料。
當然,具體的情況,我想你親自執行一下select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss') from sys.smon_scn_time,會理解的更深刻一些。
======================================
檢視之前的連載:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-1006177/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【徵文】全面學習oracle flashback特性(1.2)--閃回查詢之As of scnOracle
- oracle flashback特性(1.2)--閃回查詢之As of scnOracle
- 全面學習oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- 全面學習oracle flashback特性(1.1)--閃回查詢之As of timestampOracle
- 全面學習oracle flashback特性(1.5)--閃回查詢之制約因素Oracle
- 【徵文】全面學習oracle flashback特性(1.1)--閃回查詢之As of timestampOracle
- 【徵文】全面學習oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- 【徵文】全面學習oracle flashback特性(1.5)--閃回查詢之制約因素Oracle
- oracle flashback特性(1.1)--閃回查詢之As of timestampOracle
- oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- [閃回特性之閃回版本查詢]Flashback Version Query
- oracle flashback特性(1.5)--閃回查詢之制約因素Oracle
- 【閃回特性之閃回事務查詢】Flashback Transaction Query
- 【閃回特性之閃回查詢】使用閃回查詢(select as of)
- 全面學習oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- Flashback Query閃回查詢
- Oracle 閃回特性(FLASHBACK DATABASE)OracleDatabase
- oracle閃回版本查詢學習Oracle
- Oracle9i Flashback Query 閃回查詢總結 --- (通過SCN恢復)Oracle
- 全面學習oracle flashback特性(2.3)--Flashback Table之注意事項Oracle
- 閃回查詢之閃回版本查詢
- 閃回查詢之閃回表查詢
- 閃回版本查詢(Flashback Version Query)
- 全面學習oracle flashback特性(3.2)--Flashback Database操作示例OracleDatabase
- 全面學習oracle flashback特性(2.2)--Flashback Table之從UNDO中恢復Oracle
- Oracle9i,.10g 閃回查詢(flashback)Oracle
- 學習Oracle10g:閃回版本查詢Oracle
- 聊聊閃回版本查詢Flashback Version Query
- oracle閃回查詢Oracle
- oracle 閃回查詢Oracle
- oracle 閃回 flashbackOracle
- oracle的閃回查詢Oracle
- oracle的回閃查詢Oracle
- Oracle Database 10g新特性-閃回版本查詢OracleDatabase
- Oracle閃回查詢,閃回版本查詢與閃回事務查詢的使用區別總結Oracle
- 【Flashback】使用檢視快速獲得Flashback Query閃回查詢資料
- 閃回表、閃回查詢
- Oracle 11G 閃回技術 閃回版本查詢和閃回事務查詢Oracle