- 相關(guān)推薦
怎么用Oracle10g新的行時(shí)間戳捕捉變化
數據倉庫經(jīng)常通過(guò)多種數據源系統填充,而每種系統都運行有自己的應用程序。所以為了能給數據倉庫只提供新數據,確定哪些是最近更新的行是一件非常復雜的事。在處理一些其架構中不包括“上次更新時(shí)間”列的過(guò)時(shí)軟件時(shí),這尤其是一個(gè)難題。企業(yè)自然不情愿僅僅為了追蹤變化而通過(guò)修改工作代碼來(lái)添加列。
在Oracle 10g中,在行最后一次被更新的時(shí)候,每一行都有一個(gè)新的被稱(chēng)作ORA_ROWSCN的偽列。 ORA_ROWSCN 提供了一個(gè)“保守上邊界(conservative upper bound)”系統改變數,用來(lái)記錄最近被修改的行的事務(wù)。這就意味著(zhù)系統改變數(SCN)是一個(gè)估計值,因為在Oracle中系統改變數只能默認在模塊級被追蹤。
例如在列表A中,ORA_ROWSCN 在處理一個(gè)小表格時(shí)被選中,一行被更新后,ORA_ROWSCN 再次被選中。
|
即使只有一行被改動(dòng)了,剩下的也會(huì )顯示一個(gè)新的系統改變數(SCN)。(更準確地說(shuō),你可以在一個(gè)表第一次被創(chuàng )建時(shí),使用行級系統改變數追蹤。但遺憾的是,你不能夠更改該表格,以便在以后加入該特性。)所以如果被更新的塊數比表中的塊數要少,這也可以成為一種發(fā)現變化的方法,而不用涉及太多額外的行。
如果你需要與事務(wù)有關(guān)的日期和時(shí)間應該怎么辦呢?SCN_TO_TIMESTAMP函數可以將ORA_ROWSCN 轉換成為一個(gè)時(shí)間戳,利用它你可以進(jìn)行查詢(xún),或者把它用作一個(gè)WHERE 子句的謂語(yǔ)。但是,這個(gè)時(shí)間戳仍然是一個(gè)估計值。
ORA_ROWSCN 也是將系統改變值(SCN)用作閃回查詢(xún)捷徑(盡管RA_ROWSCN 本身在閃回中并不能被選中)的一種很方便的方法,不然就要用閃回形式查詢(xún),選中VERSIONS_STARTSCN 和VERSIONS_ENDSCN 偽列。
列表B是一次閃回查詢(xún),它用一個(gè)小于當前值的系統改變值來(lái)獲得一個(gè)數據行原來(lái)的值。我們發(fā)現King的工資回到了5000,而ORA_ROWSCN的值則是最初的系統改變值。
|
【怎么用Oracle10g新的行時(shí)間戳捕捉變化】相關(guān)文章:
CAD的對象捕捉選項怎么設置10-16
新托福閱讀機經(jīng)怎么用?09-21
CAD對象捕捉不到點(diǎn)怎么處理10-19
PHP獲取今天開(kāi)始和結束的時(shí)間戳08-31
redhatlinux下安裝oracle10g的教程09-30
word怎么設置首行縮進(jìn)09-28
新SAT文章題型的重大變化10-03
眉筆怎么用08-06
面膜怎么用09-12