Oracle: flashback version query樣本

來源:互聯網
上載者:User

flashback version query不是Oracle的什麼新特性,但10g、11g都在9i基礎上做了功能增強,在某些場合可能會用到。下面利用樣本展示一下他的概念;

 
  1. Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0   
  2. Connected as hr  
  3.    
  4. SQL> show user;  
  5. User is "hr"  
  6.    
  7. SQL> show parameter undo  
  8.    
  9. NAME                                 TYPE        VALUE  
  10. ------------------------------------ ----------- ------------------------------   
  11. undo_management                      string      AUTO  
  12. undo_retention                       integer     9000  
  13. undo_tablespace                      string      UNDOTBS1  
  14.    
  15. SQL> truncate table t1;  
  16.    
  17. Table truncated  
  18.    
  19. SQL> select systimestamp from dual;  
  20.    
  21. SYSTIMESTAMP  
  22. --------------------------------------------------------------------------------   
  23. 31-DEC-11 02.58.26.560000 PM +08:00  
  24.    
  25. SQL> insert into t1 values(1,'jash');  
  26.    
  27. 1 row inserted  
  28.    
  29. SQL> commit;  
  30.    
  31. Commit complete  
  32.    
  33. SQL> update t1 set name ='bob' where id =1;  
  34.    
  35. 1 row updated  
  36.    
  37. SQL> commit;  
  38.    
  39. Commit complete  
  40.    
  41. SQL> select systimestamp from dual;  
  42.    
  43. SYSTIMESTAMP  
  44. -----------------------------------------   
  45. 31-DEC-11 02.59.04.318000 PM +08:00  
  46.    
  47. SQL>   
  48. SQL> SELECT versions_startscn, versions_starttime,  
  49.   2         versions_endscn, versions_endtime,  
  50.   3         versions_xid, versions_operation,  
  51.   4         id, name  
  52.   5    FROM hr.t1  
  53.   6    VERSIONS BETWEEN TIMESTAMP  
  54.   7        TO_TIMESTAMP('2011-12-31 14:58:26''YYYY-MM-DD HH24:MI:SS')  
  55.   8    AND TO_TIMESTAMP('2011-12-31 14:59:04''YYYY-MM-DD HH24:MI:SS');  
  56.    

查詢結果欄位標題有些長,我做了截斷,要不然整行顯示不下,請對照上面的查詢語句看欄位標題;

 
  1. SQL>   
  2. SQL> insert into t1 values(2,'clark');  
  3.    
  4. 1 row inserted  
  5. SQL> insert into t1 values(3,'pig');  
  6.    
  7. 1 row inserted  
  8. SQL> insert into t1 values(4,'duck');  
  9.    
  10. 1 row inserted  
  11.    
  12. SQL> commit;  
  13.    
  14. Commit complete  
  15.    
  16. SQL>   
  17. SQL> update t1 set name='kate' where id=2;  
  18.    
  19. 1 row updated  
  20. SQL> update t1 set name='luna' where id=2;  
  21.    
  22. 1 row updated  
  23.    
  24. SQL> commit;  
  25.    
  26. Commit complete  
  27.    
  28. SQL> select systimestamp from dual;  
  29.    
  30. SYSTIMESTAMP  
  31. --------------------------------------------------------------------------------   
  32. 31-DEC-11 03.05.31.071000 PM +08:00  
  33.    
  34. SQL>   
  35. SQL> SELECT versions_startscn, versions_starttime,  
  36.   2         versions_endscn, versions_endtime,  
  37.   3         versions_xid, versions_operation,  
  38.   4         id, name  
  39.   5    FROM hr.t1  
  40.   6    VERSIONS BETWEEN TIMESTAMP  
  41.   7        TO_TIMESTAMP('2011-12-31 14:58:26''YYYY-MM-DD HH24:MI:SS')  
  42.   8    AND TO_TIMESTAMP('2011-12-31 15:05:31''YYYY-MM-DD HH24:MI:SS');  

 做一下簡要描述:

第六行:start_scn:3852006 end_scn:3852023 operation:I(insert)      表示插入values(1,'jash')

第五行:start_scn:3852023                                  operation:U(update)  表示更新'bob' id為1的記錄,所以第六行新插入的資料被更新了;

... ...

... ...

可以看到通過查詢可以找到所關注行的版本記錄,其中必須存在於undo復原段中,commit已提交的事務,呵呵;

 最後看一下官方文檔的概述:

Oracle Flashback features use the Automatic Undo Management (AUM) system to obtain metadata and historical data for transactions. They rely on undo data, which are records of the effects of individual transactions. For example, if a user runs an UPDATE statement to change a salary from 1000 to 1100, then Oracle Database stores the value 1000 in the undo data.Undo data is persistent and survives a database shutdown.

By using flashback features, you can use undo data to query past data or recover from logical damage. Besides using it in flashback features, Oracle Database uses undo data to perform these actions:

•Roll back active transactions

•Recover terminated transactions by using database or process recovery

•Provide read consistency for SQL queries

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.