最近監控系統日志時發現出現一個新的錯誤信息,很奇怪,之前沒有過。如下:
ORA-24777:不允許使用不可移植的數據庫鏈路。
跟蹤程序進去發現是通過dblink查詢某個遠程庫表,而且由於使用了XA分布式事務數據庫連接。大家也許都知道XA有不少限制條件,之前也遇到過,都繞著走了。但是最近沒有調整過程序也沒有改變過dblink的配置,怎麼回事呢?只能網上搜索,結果有人遇到過,說是oracle dblink改成shared就行了。個人覺得這個說法靠譜。於是現在測試系統上試了一下,果然有效。
可以為什麼之前沒有這個問題呢?還是問一下應用服務維護人員和dba吧,一會兒應用服務器管理員回信,沒有改變任何設置。到時dba經過咨詢外部oracle專家有了回復,是一個oracle bug引起,目前在oracle 11.2.0.4上存在這個問題(近期遷移了我們訪問的遠程數據服務器,遷移時升級了oracle小版本號,升級後正好是11.2.0.4),而我們的訪問對象正是11.2.0.4的dblink,原來如此,正好踩在雷上。對方提供了兩種方案解決:
1、把oracle服務器模式設置成shared server;
2、把dblink連接設置成shared模式。
顯然第一個沒有人輕易選擇,影響太大,也說不定會有其他問題出現,第二種成本低,對於系統本身影響小。因此也就選擇了方案二。
當然後續可以找個時間升級一下oracle,把補丁打上也可以。