通過資料庫鏈查詢會導致源和目標庫SCN同步

yangtingkun發表於2012-04-06

在通過資料庫鏈執行跨資料庫的查詢時,Oracle會自動將兩個資料庫的SCN進行同步。

 

 

以前Eygle提到過這個問題,這次在討論一個和遠端資料庫SCN有關的問題時,又碰到了這個問題,於是簡單記錄一下。

SQL> conn test/test@192.168.0.19:1666/ora102044
Connected.
SQL> select current_scn from v$database;

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

SQL> conn test/test@192.168.0.20: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/test@192.168.0.19: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

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-720764/,如需轉載,請註明出處,否則將追究法律責任。

相關文章