1. 程式人生 > >資料庫連線引發事務自動開啟問題

資料庫連線引發事務自動開啟問題

做的一個專案,涉及到兩個oracle資料庫,A庫和B庫。主打A庫,但有些資料要從B庫裡讀取。於是在A庫中建了一個數據庫連線(DBLINK),指向B庫。
於是月亮下去了,毛病出來了。
忽然發現,有些資料儲存,根本沒有提交成功。提示:

ORA-01453: SET TRANSACTION 必須是事務處理的第一個語句
造成原因:之前的事務沒有結束。

哪裡來的事務呢?
後來才發現,這一切的元凶就是資料庫連線。原因是,當我們使用dblink的時候,oracle認為這是一個分散式的東東,所以就算我們只是讀取資料,而沒有插入或更新、刪除啥的,它都自動開啟一個事務!
知道了原因解決問題就很簡單了,當呼叫完使用了dblink的語句後,不管3721,要來個事務回滾。
後來又查了下,發覺這個dblink還會帶來一個問題,就是資料庫連線得不到及時釋放,可能會引起連線耗盡問題。
我去,這個資料庫連線除了使用比較方便外,基本上就是一無是處啊,那些CLOB欄位問題就不用多說了。