您好,登錄后才能下訂單哦!
原文地址:Managing Read Consistency
oracle版本:11g r1
Oracle分布式數據庫中的一個重要限制就是讀取一致性。問題產生的原因是因為每個系統都有自己的SCN,SCN可以當作數據庫的內部時間戳。Oracle數據庫服務通過SCN來明確查詢數據的版本號。
分布式事務中的SCN在三種情況進行同步:1、每個SQL語句執行結束時;2、每個事務的開始時;3、每個食物結束時。節點間如果有大量通信尤其是分布式更新操作,這個同步的動作會非常頻繁。盡管有這樣那樣的問題,在分布式系統中實際上沒有任何方式能保證SCN的絕對同步:總會存在這樣的情況,一個節點持有的SCN是另外一個節點之前的SCN。
因為SCN獲取機制,你可以查詢一個略微舊的快照數據,因此無法立刻看到遠程數據庫的最新變化。根據讀取一致性,查詢可以得到一致并且舊的數據。注意,查詢所得到的數據是基于舊的SCN,因此如果本地執行更新事務并更新遠程節點的兩個表后,下次訪問這兩張表時會得到更新前的數據。
SCN獲取機制的一個結果就是2個連續的 select 語句能夠得到不同的數據,甚至在2個語句之間沒有DML執行。例如,你執行更新語句然后向遠程數據庫提交該更新。當你用 select 語句查詢視圖(基于該遠程表),視圖不回顯示更新的列。下一次執行 select 語句時,這個更新出現。
你可以使用下列條件來確定在查詢前兩個機器的SCN是同步的:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。