2017-02-09 20 views
-1

我正在使用Oracle9i(9.2)。我有一種情況,我必須每天填寫一張表格。每天晚上,這張桌子將被截斷,新的數據將被放入。新的數據總量大約需要10-20分鐘。問題是這張表不能被關閉(鎖定)。在插入新數據時,前幾天的數據需要用於選擇過程。從表中讀取一個事務進行中 - Oracle

編輯 - 我正在研究交易水平。我只需要一些專家意見。

這在Oracle中可能嗎?

+0

我不確定我是否理解;你說表格被截斷並插入新的數據。但該表格正用於查詢,以前一天的數據;但表被截斷? – BobC

+0

是的,我希望截斷或刪除可以在一個事務內完成但沒有提交。在提交之前,表中的數據應保持與事務之前相同的狀態並可用於查詢。但這只是我的假設。 – pinklotus

+0

TRUNCATE是一個DDL命令,這意味着它不受事務語義的約束。 – BobC

回答

1

如何使用兩個表。擁有一個包含前幾天數據的「當前」表格。然後有一個可以加載的新表格。然後當你準備好時,你可以使用一系列重命名操作來「交換」這兩個表。

+0

使用可在兩個表格之間切換的視圖。 –

+0

或'ALTER TABLE ... EXCHANGE PARTITION'進行超級乾淨交換(如果您獲得分區許可)。也就是說,我喜歡@ mathguy的方法 - 刪除,插入,提交 - 這是我知道在整個刷新過程中保持數據在線100%的唯一方法。 –

+0

對不起..注意到OP是在Oracle 9.2上,所以'EXCHANGE PARTITION'將不能用於他。 –

相關問題