如何解決源和目標庫SCN同步問題

以前有個朋友向我提過這個問題:大家通過數據庫鏈執行跨數據庫的查詢時,可能都會遇到Oracle將兩個數據庫的SCN同步的問題,今天就來解決一下。

 

SQL> conn test/[email protected]:1666/ora102044
Connected.
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
2745758

SQL> conn test/[email protected]:15210/orcl
Connected.
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
5642527

SQL> create database link ora102044 
2 connect to test
3 identified by test
4 using '192.168.0.19:1666/ora102044';

Database link created.

SQL> select current_scn from v$database@ora102044;

CURRENT_SCN
-----------
5642628

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
5642638

SQL> conn test/[email protected]:1666/ora102044
Connected.
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
5642702

  可以看到,在通過數據庫鏈執行查詢後,Oracle會同步兩個數據庫的SCN,取兩個數據庫最大的SCN作爲新的SCN,執行查詢時刻,兩個數據庫的SCN一致。

 

  Oracle的這個機制應該是爲了分佈式查詢的一致性,這樣一個查詢只需要一個SCN就可以在分佈式查詢的任何一個數據庫中來獲取一致性。

 

  但是這種實現也會存在一定的潛在問題,其中一個數據庫的SCN可能會從一個較低的數值,一下增長到一個很高的數據。這個例子中,ORA102044數據庫的SCN就增加了一倍以上。而對於實際環境中,SCN的增加可能是幾倍、幾十倍甚至是上百倍,從而引發一些其他的bug

 

  本文就暫且介紹到這裏,希望能給大家以幫助。



轉自 北京CUUG培訓


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章