雖然不鼓勵使用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中.
索性先開到十條好了, 但要注意, 設定系統參數是要重新啟動的.
--檢查參數
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
在確認了參數設定好後, 原先的錯誤就不存在了, 但測試超過10條data link的話……. L