Oracle Rac資料不同步問題

來源:互聯網
上載者:User

現在有這樣的環境:

一台web Server,一個是純JAVA APP 程式

資料庫兩台做成RAC的形式。 web Server與APP 程式都通過oci(rac)的方式串連

資料庫。

出了這樣的怪問題,webServer更新或是插圖入一條資料,後面緊跟著的在APP中就查詢不到,等到用工具查詢就沒有問題.

初步懷疑

1. RAC方式下面的資料庫兩個instance的同步沒做好?

查詢相關資料發現在與MAX_COMMIT_PROPAGATION_DELAY有關.

最大提交傳播時延(MAX_COMMIT_PROPAGATION_DELAY,簡稱MCPD),在ORACLE RAC(或OPS)環境中才使用,表示在RAC系統中,一個instance系統提交產生的最新系統改變碼(SCN),能夠以多快的速度反應到另一個instance中。

舉例說明,RAC系統,有A,B兩個執行個體(instance),A、B本地系統改變碼為SCN1,A更新資料DATA1提交, LGWR操作完成後,A本地系統改變碼為SCN2,經過不大於MAX_COMMIT_PROPAGATION_DELAY時間後,B系統本地改變碼才變為SCN2。

Global Cache Services 將重新整理RAC中的SCN。不管SCN是否及時重新整理,後續的資料查詢都不會因此產生資料庫錯誤。但,在此時間內,有可能查詢結果不是最新資料,產生讀一致性(read consistency)問題。

RAC環境中的所有執行個體,此參數值必須相同。

ORACLE8i後,建議常用的兩個值是0和700(預設),其他數值皆不建議。其實,這兩個數值就代表了RAC環境中,兩種SCN 產生機制:

Lamport Scheme和 Broadcast on Commit scheme。

設定為預設值700,表示採用Lamport Scheme,SCN改變不會完全同步,同步將在 7秒鐘內完成,而不是總等待7秒鐘後才完成。如果系統比較空閑,同步可能在0.5秒(甚至更短時間)內完成;不管系統多繁忙,同步時間也不可能超過7秒。不難理解,採用此模式,整個RAC系統的運行效率較高。

設定為0,表示採用Broadcast on Commit scheme,SCN改變完全同步。每當commit時(即LGWR 寫redo log時):

- LGWR發送訊息更新全域SCN(global SCN),

- LGWR 發送訊息給每個活動的執行個體更新其本地SCN(local SCN)。

有資料說,只要MCPD < 700,系統將採用Broadcast on Commit scheme。

Lamport Scheme能夠適應絕大部分應用的要求,只有個別即時性特別高的業務,才需要Broadcast on Commit scheme。通過分析,不難理解,Broadcast on Commit scheme將需要更多的系統資源

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.