oracle flashback特性(1.2)--閃回查詢之As of scn
仍以前文中建立的表為例,既然是基於scn的查詢,我們首先就需要得到scn,這裡我們透過dbms_flashback.get_system_change_number函式來獲取oracle當前的scn,之後再執行資料的修改操作。
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/3907/viewspace-1009368/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12.2新特性: PDB級閃回資料庫(Flashback PDB)Oracle資料庫
- Oracle閃回技術--Flashback Version QueryOracle
- Oracle 11G 閃回技術 閃回版本查詢和閃回事務查詢Oracle
- Oracle 11G 閃回技術 使用Oracle閃回事務查詢Oracle
- ORACLE 閃回檢視v$flashback_database_log/statOracleDatabase
- flashback query閃回資料
- DM7閃回與閃回查詢
- 【Flashback】Flashback Drop閃回刪除功能實驗
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- 【FLASHBACK】Oracle閃回及回收站相關語句參考Oracle
- DM8 閃回查詢
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- GeminiDB Cassandra介面新特性FLASHBACK釋出:任意時間點秒級閃回
- Flashback Drop閃回刪除功能實踐
- LightDB 22.4 新特性之相容Oracle樹形查詢Oracle
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- Oracle 檢查點涉及的SCNOracle
- Oracle SCN健康狀態檢查Oracle
- Oracle的DBMS_SCN修正以及SCN的auto-rollover新特性Oracle
- Oracle 備份恢復之 FlashbackOracle
- 基於flashback_scn的expdp匯出
- Oracle資料庫閃回Oracle資料庫
- Oracle:SCNOracle
- Oracle查詢回滾大事務所需時間Oracle
- 【FLASHBACK】Oracle flashback data archive 介紹OracleHive
- 【RECO_ORACLE】Oracle閃回PDB的方法Oracle
- 【SCN】Oracle SCN 詳細介紹Oracle
- 【SQL】Oracle查詢轉換之 OR用法SQLOracle
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- 【SCN】Oracle推薦scn命令參考Oracle
- Oracle 查詢Oracle
- Oracle 閃回資料庫測試Oracle資料庫
- 【PDB】pdb閃回,Oracle還原點Oracle
- 詳解oracle資料庫閃回Oracle資料庫
- ORACLE_OCP之SQL_子查詢OracleSQL
- Oracle SCN詳解Oracle
- ORACLE -詳解SCNOracle
- ORACLE Flashback Query偽列Oracle
- Oracle psu查詢Oracle