2016-02-13 40 views
0

下面使用順序讀取基於訂單數據的問題陳述:Oracle查詢,而無需通過

我有當我們與醫院的營業日隨着創建時間戳一起插入一些數據的表。

業務日期(Bday)定義了醫院完成業務的邏輯日,創建時間戳記(create_ts)定義記錄插入到數據庫中的時間戳。 由於創建時間戳在PST中,醫院可能位於澳大利亞南亞地區,因此生成日期可能比創建時間戳提前1天。 另外,如果醫院在應用程序中意外關閉了今天的營業日期,也可以在第二天開放。

我需要將記錄從暫存數據庫同步到主數據庫。

我想先用最小的創建時間戳同步記錄。但爲了通過是一種昂貴的操作被同步爲有時記錄數超過100K

10級不同的線程中運行,以記錄與50

第一溶液的嘗試批量大小同步每個是取得記錄與商業日期=最小生意日期,但有一些複雜性: 1),因爲有一些最低生意日期,由於某些問題不同步的記錄,因此第二天的記錄沒有人工干預沒有被拾起。 2)有醫院爲未來的生意日期開放(例如今天是13日,他們意外關閉它,因此他們在營業日期14日開放)。所以這些記錄沒有得到處理,因爲生意日期大於最小生意日期。

想到在創建時間戳介於最小創建時間戳和+1小時之間的記錄。 但是,如第(1)點所述,可能會再次出現問題,並且在創建最小時間戳和+1小時的卡住記錄之間可能沒有任何記錄要同步。

請建議用於查詢的解決方案

表中的幾列有:Hname(醫院名稱),HLOC(醫院所在地),Dseq(每天序列號),BDAY(業務日),create_ts和modify_ts

回答

0

如果不使用「ORDER BY」子句,Oracle不保證結果集的順序。

但是你可以考慮使用Oracle 11g的CDC或Oracle 12c的GoldenGate--它應該是非常有效的。新的數據將立即被複制。 Oracle會照顧它。

+0

感謝您的回覆... 在這裏,我不必複製數據,但我們正在做大量的Java代碼處理。所以我們不能使用oracle複製方案。 我們已經在使用那個我們有一個備份數據庫的地方。 – Learner

0

一般:否order by - >不保證結果集的順序。