[Oracle]-[ORA-02020]-Too many database links in use

雖然不鼓勵使用data linked (SQL Server中的linked server)
不過不得不用時, 使用上就必須注意有什麼限制, 效能怎麼調整...... 等
這篇就是在大量同時使用data link時發生ORA-02020的錯誤

 

在一個實例中, 由於資料彙總的伺服器 (EDW) 會向多台資料庫取回資料, 其中有個特別的案例, 就是會從A判斷要取的資料會從哪一台機器來, 之後依判斷去B, C, D, E, F伺服器取資料. 在僅使用script的條件下, 只能透過data link去實現.

 

在開發過程中, 前期都算順利, A + B + C + D伺服器測試都正常, 當加到第5台機器E, 發生了錯誤ORA-02020: too many database links in use.

 

在查看了Oracle的文件後, 發現預設的open_links只支援四條連線在一個procedure.

OPEN_LINKS

OPEN_LINKS_PER_INSTANCE

 

索性先開到十條好了, 但要注意, 設定系統參數是要重新啟動的.

 

--檢查參數

SQL> show parameter open_links;

NAME TYPE VALUE

———————————— ———– ———————

open_links integer 4

open_links_per_instance integer 4

 

--設定參數的值

SQL> alter system set open_links=10 scope=spfile;

System altered

SQL> alter system set open_links_per_instance=10 scope=spfile;

System altered

 

--關閉Oracle Instance

SQL> shutdown immediate

...... 關閉Oracle Instance程序

 

--啟動Oracle Instance

SQL>

SQL> startup

...... 啟動Oracle Instance程序

 

--再次檢查參數設定

SQL> show parameter open_links;

NAME TYPE VALUE

———————————— ———– ———————

open_links integer 10

open_links_per_instance integer 10

 

 

在確認了參數設定好後, 原先的錯誤就不存在了, 但測試超過10data link的話……. L