1. 程式人生 > >PL/SQL中除錯儲存過程卡死問題解決

PL/SQL中除錯儲存過程卡死問題解決

在公司的環境下編寫儲存過程除錯沒有問題,但是到了已經在試執行的客戶現場除錯的時候卻出現了無法除錯的情況:具體表現是右鍵點選測試,進入測試頁面後,按F9之後儲存過程不進入除錯狀態,而是顯示正在執行。單步進入、單步退出等按鈕均呈灰色不可用狀態。

在百度、Google之後發現不是右鍵新增除錯資訊那類錯誤,也不是表鎖死的錯誤。同時也排除了防火牆等網路因素。最後分析到現場環境是叢集方式,而在公司開發時採用的非叢集模式。於是參考博文http://blog.csdn.net/fupei/article/details/5724448 修改了tnsnames.ora 檔案。

原配置:

ZHYW =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = XX.XX.XX.XX)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = zhyw_taf)
    )
  )

修改後

ZHYW2 =
  (DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = XXX.XXX.XXX.XXX)(PORT = 1521))
    )
    (CONNECT_DATA =
    	(SERVER = DEDICATED)
      (SERVICE_NAME = zhyw_taf)
      (INSTANCE_NAME = ZHYW2)
    )
  )

然後就能順利除錯了。原因應該是雙機採用了負載均衡策略,而除錯要啟動兩個會話,這就有可能被分配到不同的節點上,造成無法除錯“。而解決方法也就是更改tnsnames檔案配置。