<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 怎么用Oracle10g新的行時間戳捕捉變化

    時間:2024-07-20 14:07:17 Oracle認證 我要投稿
    • 相關推薦

    怎么用Oracle10g新的行時間戳捕捉變化

      數據倉庫經常通過多種數據源系統填充,而每種系統都運行有自己的應用程序。所以為了能給數據倉庫只提供新數據,確定哪些是最近更新的行是一件非常復雜的事。在處理一些其架構中不包括“上次更新時間”列的過時軟件時,這尤其是一個難題。企業自然不情愿僅僅為了追蹤變化而通過修改工作代碼來添加列。

    怎么用Oracle10g新的行時間戳捕捉變化

      在Oracle 10g中,在行最后一次被更新的時候,每一行都有一個新的被稱作ORA_ROWSCN的偽列。 ORA_ROWSCN 提供了一個“保守上邊界(conservative upper bound)”系統改變數,用來記錄最近被修改的行的事務。這就意味著系統改變數(SCN)是一個估計值,因為在Oracle中系統改變數只能默認在模塊級被追蹤。

      例如在列表A中,ORA_ROWSCN 在處理一個小表格時被選中,一行被更新后,ORA_ROWSCN 再次被選中。

    列表A
    
    SQL> 
    SQL> SELECT ora_rowscn, ename, sal
      2  FROM emp;
    
    ORA_ROWSCN ENAME             SAL                                               
    ---------- ---------- ----------                                               
        529426 SMITH             800                                               
        529426 ALLEN            1600                                               
        529426 WARD             1250                                               
        529426 JONES            2975                                               
        529426 MARTIN           1250                                               
        529426 BLAKE            2850                                               
        529426 CLARK            2450                                               
        529426 SCOTT            3000                                               
        529426 KING             5000                                               
        529426 TURNER           1500                                               
        529426 ADAMS            1100                                               
    
    ORA_ROWSCN ENAME            SAL                                               
    ---------- ---------- ----------                                               
        529426 JAMES             950                                               
        529426 FORD             3000                                               
        529426 MILLER           1300                                               
    
    14 rows selected.
    
    SQL> UPDATE emp
      2  SETsal = 6000
      3  WHERE ename = 'KING';
    
    1 row updated.
    
    SQL> commit;
    
    Commit complete.
    
    SQL> SELECT ora_rowscn, ename, sal
      2  FROM emp;
    
    ORA_ROWSCN ENAME             SAL                                               
    ---------- ---------- ----------                                               
        653331 SMITH             800                                               
        653331 ALLEN            1600                                               
        653331 WARD             1250                                               
        653331 JONES            2975                                               
        653331 MARTIN           1250                                               
        653331 BLAKE            2850                                               
        653331 CLARK            2450                                               
        653331 SCOTT            3000                                               
        653331 KING             6000                                               
        653331 TURNER           1500                                               
        653331 ADAMS            1100                                               
    
    ORA_ROWSCN ENAME             SAL                                               
    ---------- ---------- ----------                                               
        653331 JAMES             950                                               
        653331 FORD             3000                                               
        653331 MILLER           1300                                               
    
    14 rows selected.
    
    SQL> SELECT SCN_TO_TIMESTAMP(653331) FROM dual;
    
    SCN_TO_TIMESTAMP(653331)                                                       
    ---------------------------------------------------------------------------    
    20-JUN-06 11.03.59.000000000 PM

      即使只有一行被改動了,剩下的也會顯示一個新的系統改變數(SCN)。(更準確地說,你可以在一個表第一次被創建時,使用行級系統改變數追蹤。但遺憾的是,你不能夠更改該表格,以便在以后加入該特性。)所以如果被更新的塊數比表中的塊數要少,這也可以成為一種發現變化的方法,而不用涉及太多額外的行。

      如果你需要與事務有關的日期和時間應該怎么辦呢?SCN_TO_TIMESTAMP函數可以將ORA_ROWSCN 轉換成為一個時間戳,利用它你可以進行查詢,或者把它用作一個WHERE 子句的謂語。但是,這個時間戳仍然是一個估計值。

      ORA_ROWSCN 也是將系統改變值(SCN)用作閃回查詢捷徑(盡管RA_ROWSCN 本身在閃回中并不能被選中)的一種很方便的方法,不然就要用閃回形式查詢,選中VERSIONS_STARTSCN 和VERSIONS_ENDSCN 偽列。

      列表B是一次閃回查詢,它用一個小于當前值的系統改變值來獲得一個數據行原來的值。我們發現King的工資回到了5000,而ORA_ROWSCN的值則是最初的系統改變值。

    列表B
    
    SQL> SELECT ora_rowscn, ename, sal
      2  FROMemp AS OF SCN (653330)
      3  WHERE ename = 'KING';
    
    ORA_ROWSCN ENAME             SAL                                               
    ---------- ---------- ----------                                               
        529426 KING             5000

    【怎么用Oracle10g新的行時間戳捕捉變化】相關文章:

    CAD的對象捕捉選項怎么設置10-16

    新托福閱讀機經怎么用?09-21

    CAD對象捕捉不到點怎么處理10-19

    最新整理gre考試時間安排必戳!08-03

    PHP獲取今天開始和結束的時間戳08-31

    redhatlinux下安裝oracle10g的教程09-30

    word怎么設置首行縮進09-28

    新SAT文章題型的重大變化10-03

    眉筆怎么用08-06

    面膜怎么用09-12

    主站蜘蛛池模板: 亚州日韩精品专区久久久| 日韩精品无码一本二本三本 | 无码人妻精品一区二区三区99仓本 | 国产精品成熟老女人视频| 国产精品福利区一区二区三区四区| 一本久久a久久精品综合香蕉| 国产偷窥熟女高潮精品视频| 精品国产福利久久久| 精品一区二区三区波多野结衣| 四虎国产精品永免费| 国产精品香蕉在线观看| 秋霞午夜鲁丝片午夜精品久| 国产成人精品AA毛片| 久久免费的精品国产V∧| 在线观看亚洲精品国产| 热久久国产欧美一区二区精品| 国产精品高清免费网站| 99精品国产成人一区二区| 欧美亚洲精品在线| 国产亚洲精品a在线观看app| 国产suv精品一区二区33| 久久精品国产第一区二区三区| 午夜不卡久久精品无码免费| 亚洲精品高清无码视频| 亚洲精品自在在线观看| 亚洲精品国产成人片| 亚洲精品国产精品乱码不99| 亚洲国产精品国自产拍AV| 在线成人精品国产区免费| 野狼第一精品社区| 日韩精品久久无码人妻中文字幕| 最新精品露脸国产在线| 热RE99久久精品国产66热| 欧美激情精品久久久久久久| 青草国产精品视频。| 中文字幕精品无码一区二区 | 国产精品无码无卡无需播放器| 97视频在线精品国自产拍| 91精品成人免费国产片| 丁香色婷婷国产精品视频| 丰满人妻熟妇乱又伦精品劲|