簡體   English   中英

需要在XA事務中使用帶有DBLink調用的舊版PLSQL,並且不能使用共享連接

[英]Need to use legacy PLSQL with DBLink call, in an XA transaction, and can not use shared connection

我在數據庫A中有一個Oracle PLSQL程序,它通過DBLink從其他數據庫B中選擇數據。 我從Java EE應用程序調用PLSQL程序。 直到現在,一切正常。 數據庫B不在我的范圍內,它屬於外部提供者。

現在我必須升級Java EE應用程序,使用另一個Java EE應用程序(調用EJB),所以我需要一個XA數據源來管理分布式事務。 然后它給出了“ORA-24777:不允許使用不可遷移的數據庫鏈接”錯誤。 我搜索了一個解決方案是通過MTS(共享)連接dblink連接到B. 我無法將DBLink更改為共享連接(因為客戶限制)。

有沒有辦法告訴數據庫A中的Oracle,DBLink是用於select(只讀數據)所以沒有必要將分布式事務傳播到數據庫B? 我嘗試定義一個AUTONOMOUS_TRANSACTION,並設置READ ONLY TRANSACTION,但不起作用。 還嘗試為遠程表定義READ ONLY視圖,但不起作用

還有其他可能的解決方案,我無法應用,例如在A中具有物化視圖,從B讀取數據(外部提供商不允許這樣做)。

這兩個數據庫都是ORacle 11g Release 11.2.0.2.0

我相信我以前見過這個錯誤,我認為我解決這個問題的方法是創建一個非xa數據源,因為沒有必要將事務傳播到遠程數據庫,因為我沒有更改遠程數據庫上的數據。 如果你在分布式事務中開始,你仍然可以在尾端使用非xa連接,如果你可以構造事務的執行路徑以使用這個非xa last(非xa可以提交很長時間)因為這是最后一次提交)。 我在其他地方讀到的另一個解決方案是創建共享數據庫鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM