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

    時(shí)間:2024-07-20 14:07:17 Oracle認(rèn)證 我要投稿
    • 相關(guān)推薦

    怎么用Oracle10g新的行時(shí)間戳捕捉變化

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

    怎么用Oracle10g新的行時(shí)間戳捕捉變化

      在Oracle 10g中,在行最后一次被更新的時(shí)候,每一行都有一個(gè)新的被稱作ORA_ROWSCN的偽列。 ORA_ROWSCN 提供了一個(gè)“保守上邊界(conservative upper bound)”系統(tǒng)改變數(shù),用來記錄最近被修改的行的事務(wù)。這就意味著系統(tǒng)改變數(shù)(SCN)是一個(gè)估計(jì)值,因?yàn)樵贠racle中系統(tǒng)改變數(shù)只能默認(rèn)在模塊級(jí)被追蹤。

      例如在列表A中,ORA_ROWSCN 在處理一個(gè)小表格時(shí)被選中,一行被更新后,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

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

      如果你需要與事務(wù)有關(guān)的日期和時(shí)間應(yīng)該怎么辦呢?SCN_TO_TIMESTAMP函數(shù)可以將ORA_ROWSCN 轉(zhuǎn)換成為一個(gè)時(shí)間戳,利用它你可以進(jìn)行查詢,或者把它用作一個(gè)WHERE 子句的謂語。但是,這個(gè)時(shí)間戳仍然是一個(gè)估計(jì)值。

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

      列表B是一次閃回查詢,它用一個(gè)小于當(dāng)前值的系統(tǒng)改變值來獲得一個(gè)數(shù)據(jù)行原來的值。我們發(fā)現(xiàn)King的工資回到了5000,而ORA_ROWSCN的值則是最初的系統(tǒng)改變值。

    列表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新的行時(shí)間戳捕捉變化】相關(guān)文章:

    CAD的對(duì)象捕捉選項(xiàng)怎么設(shè)置10-16

    新托福閱讀機(jī)經(jīng)怎么用?09-21

    CAD對(duì)象捕捉不到點(diǎn)怎么處理10-19

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

    PHP獲取今天開始和結(jié)束的時(shí)間戳08-31

    redhatlinux下安裝oracle10g的教程09-30

    word怎么設(shè)置首行縮進(jìn)09-28

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

    眉筆怎么用08-06

    面膜怎么用09-12

    主站蜘蛛池模板: 亚洲欧美日韩久久精品第一区| 久久久久亚洲精品天堂| 亚洲精品久久久www| 国产精品1区2区3区在线播放| 久久精品无码免费不卡| 成人精品综合免费视频| 亚洲精品美女久久777777| 国产精品无码久久久久| 国产精品1区2区| 国产美女久久精品香蕉69| 四虎国产精品永久在线看| 91国内揄拍国内精品情侣对白 | 99久久99久久精品国产片果冻| 人妻精品久久无码区| 无码人妻一区二区三区精品视频| 国产精品无码DVD在线观看| 精品福利一区二区三| 精品无码一区二区三区亚洲桃色| 亚洲无码精品浪潮| 麻豆精品| 久久精品夜色噜噜亚洲A∨ | 国产精品久久波多野结衣| 无码国内精品久久人妻蜜桃| 拍国产乱人伦偷精品视频| 精品第一国产综合精品蜜芽| 91精品一区二区综合在线 | 久久亚洲国产欧洲精品一| 国产精品vⅰdeoxxxx国产| 人人妻人人澡人人爽人人精品97 | 精品欧美小视频在线观看| 国产精品免费观看视频| 国产成人1024精品免费| 94久久国产乱子伦精品免费| 久久久精品免费国产四虎| 精品国产第1页| 青青草原综合久久大伊人精品| 久草视频在线这里精品| 久久久久夜夜夜精品国产| 亚洲第一精品福利| 老司机69精品成免费视频| 久久精品成人国产午夜|