在一個Oracle集羣(多臺機器共同服務一個數據庫)中,「sysdate」函數是否會始終返回一致的答案?即使服務器的操作系統時鐘報告的值不一致?在Oracle集羣中,sysdate會始終返回一致的答案?
回答
我強烈懷疑SYSDATE也是OS鏈接的。非常注意你需要使用它的原因。如果有任何實現增量跟蹤事件的邏輯(例如,您正在執行增量導出),並且您必須確保沒有項目被遺漏以及沒有重複項,那麼基於順序標識而不是SYSDATE進行追蹤。
事實上,即使對於非集羣系統也是如此,因爲SYSDATE有時可能會發生變化(節省時間,系統管理員錯誤...)。
使用NTP跨所有服務器(Oracle和其他)同步時間並確保不會發生。不一致的系統時鐘是災難的祕訣。
我會猜想 sysdate將返回您描述的情況下不一致的結果。
謝謝德米特里,我想知道這個人是否對你的猜測有更強烈的意見呢? – 2008-10-10 21:33:11
我花了一點時間尋找答案,但找不到一個,但是,鑑於sysdate只是從操作系統返回日期/時間,我懷疑dmitriy是正確的。
SYSDATE與節點OS相關;如果在集羣中保證正確,那麼每次調用SYSDATE時節點都必須同步。 在集羣環境中,有序的序列非常昂貴;如果可能,最好避免。 有序序列將保證您的唯一性和順序 - 但是,如果在從序列中選擇並且在提交事務之前處理失敗,您仍然可以獲得空位。
我們用了幾個解決方法:
- 一般而言,序列設置爲 無序與大容量高速緩存 (25,000),以減少跨集羣 通信。
- 使用NTP時間同步 節點(它們仍然可以 不正確,+/- 納秒,所以你 不能依靠這一點)
- 對於審計風格的日誌中,我們使用SYSTIMESTAMP (時間戳(6) )作爲唯一 標識 - 與事實 ,有可能生活(雖然 可能性極小),該日誌 可能出現亂序(這是 也有可能與正常 處理,取決於當 承諾發生在)
當需要有序 序列,並有可能 是空白 - 用一個有序序列 (儘量避免在羣集 環境「緩存」沒有幫助)
凡有序序列是 要求 - 但不能有差距 - 我們有我們自己的序列表,鎖定記錄,獲取數字並保持記錄鎖定,直到用戶提交 ;這將導致 其他人試圖獲得相同的 序列,直到用戶的 事務完全提交 - 儘可能避免這樣做。
- 1. Sympy求解不會返回答案
- 2. password_verify始終返回false,並且我無法在任何地方找到答案
- 3. Pymongo.find()只返回答案
- 4. dgtsv - LAPACK不返回答案
- 5. hh:mm:ss返回錯誤的答案在php
- 6. CLLocation distanceFromLocation返回錯誤的答案,然後正確的答案
- 7. Rails子集選擇始終返回true
- 8. Backbone.js收集和sortedIndex始終返回0
- 9. RabbitMQ的不一致集羣
- 10. JSON.Net始終返回{}
- 11. 回答出錯的答案
- 12. 正確的答案在返回之前,返回不正確
- 13. oracle sysdate在where子句中
- 14. SQL集團通過不返回準確的答案
- 15. titleCasing沒有返回正確的答案
- 16. 沒有返回我需要的答案
- 17. Python 3.5返回意外的答案
- 18. PHP crypt()返回錯誤的答案
- 19. INSTANCEOF沒有返回正確的答案
- 20. json_decode()返回不同的答案
- 21. Scalapack返回錯誤的答案
- 22. JAVA:返回不正確的答案
- 23. AVG(TIMESTAMPDIFF)mySQL返回錯誤的答案
- 24. 如果返回錯誤的答案(python)
- 25. Java:計算返回錯誤的答案?
- 26. 始終顯示羣集界限
- 27. 劃分案例陳述和答案始終爲零
- 28. PowerShell腳本不會返回測試路徑的正確答案
- 29. 爲什麼此Ruby代碼不會返回預期的答案?
- 30. scala spark mllib fpgrowth每次都會返回不同的答案
如果sysdate被同步,它將包含哪個服務器的時間? – 2009-07-14 14:33:44