2013-05-30 46 views
1

我正在創建一個相當深入的時態數據庫原型,其中我們使用Oracle的Total Recall來管理事務時間。Oracle Total Recall和Views

我的測試數據集包含大約150k的當前行以及加載到啓用了FLASHBACK ARCHIVE的表中的170k退休行。增強的SQL查詢(如下面的第一個)正在正確執行,以提供適當的數據結果。

 
select * 
from CUT_BLOCK_COMBO AS OF TIMESTAMP FROM_TZ(TO_TIMESTAMP('2007-08-28 00:00:00','YYYY-MM-DD HH24:MI:SS'), 'UTC') 
WHERE CB_SKEY = 4141; 

這個SELECT語句返回以下數據:

 
    CB_SKEY HVA_SKEY FOREST_FILE_ID CUTTING_PERMIT_ID TIMBER_MARK CUT_BLOCK_ID 
----------- ----------- -------------- ----------------- ----------- ------------ 
     4141  53094 A80053       80053  29025   

然而,一旦我換表成一個觀點,我可以不再與「AS時間戳」子句查詢數據。

create or replace view CUT_BLOCK_COMBO_VW as select * from CUT_BLOCK_COMBO;
select * 
from CUT_BLOCK_COMBO_VW AS OF TIMESTAMP FROM_TZ(TO_TIMESTAMP('2007-08-28 00:00:00','YYYY-MM-DD HH24:MI:SS'), 'UTC') 
WHERE CB_SKEY = 4141;

從視圖的SELECT語句返回以下錯誤:ORA-01466:無法讀取數據 - 表定義已經改變

任何想法我創建視圖定義時錯過?我無法在文檔中找到任何內容(Oracle Total Recall 11G R2

回答

0

它是否可用作內嵌視圖?

我會懷疑視圖必須作爲時間戳存在。可能代碼是在您使用AS OF的對象上查找創建日期或最後DDL時間。

只是一個理論,但你可以很容易地測試它,並且可能通過追蹤執行來證明理論。

如果是這樣的話,我想不出一個安全的解決方法,我害怕。

+0

我將問題提交給Tom,他解釋了一些關於'AS OF'子句如何應用於對象的細節。 [詢問湯姆](http://asktom.oracle.com/pls/apex/f?p=100:11:0::NO::P11_QUESTION_ID:2048074500346953246) –

+0

我想一個關鍵的方面是視圖定義可以實際上已經從某種程度上完全不同的東西進行了修改。我懷疑它實際上是閃回期待的last_ddl_time。 –