Oracle11g ORA-03135: 連線失去聯絡

深圳gg發表於2018-07-03
   有一個同步的儲存過程兩地同步資料,執行一次需要5個小時,執行到4個小時的時候就會報錯ORA-03135: 連線失去聯絡。

03135, 00000, "connection lost contact"

 *Cause:  1) Server unexpectedly terminated or wasforced to terminate.

          2) Server timedout the connection.

 *Action: 1) Check if theserver session was terminated.

          2) Check if thetimeout parameters are set properly in sqlnet.ora.

    在網上找了一下資料,在服務端中新增了sqlnet.ora中配置sqlnet.expire_time = 10,單位是分鐘。還是報錯。

    開始分析儲存過程,在一個大的儲存過程中,執行了8個儲存過程。

    procedure1:呼叫了dblink

    procedure2:直到p7都沒有呼叫dblink

    ...

    procedure8:呼叫了dblink

    我產生了一種感覺,在procedure1呼叫了dblink之後,下面的幾個儲存過程要執行幾個小時,可能是服務端的防火牆覺得這個連線沒有動靜,以為是空閒的,連線收回了。到procedure8的時候再次呼叫,就報失去連線。dblink正確的使用方法是使用完後要關閉,於是在procedure1的最後加上關閉dblink的語句,alter session close database link dblink_name。測試發現可以了,證明了我的猜想。

相關文章