簡體   English   中英

DB2大型機:queryTimeout在SqlTransactionRollbackException上不起作用:SQLCODE = -911,SQLSTATE = 40001

[英]DB2 Mainframe: queryTimeout does not work on SqlTransactionRollbackException: SQLCODE=-911, SQLSTATE=40001

我們一直在從DB2 Mainframe看到以下異常。 我們確實設置了CallableStatement.querytimeout,但是在這種情況下它永遠不會起作用。 有什么建議么? 謝謝。

DB2 SQL錯誤:SQLCODE = -911,SQLSTATE = 40001,SQLERRMC = 00C9008E; 00000801; NULLID.SYSSTAT.5359534C564C3031,DRIVER = 3.61.109; 嵌套的異常是com.ibm.db2.jcc.am。 SqlTransactionRollbackException :DB2 SQL錯誤:SQLCODE = -911,SQLSTATE = 40001,SQLERRMC = 00C9008E; 00000801; NULLID.SYSSTAT.5359534C564C3031,DRIVER = 3.61.109

跟隨異常的情況也是如此。 查詢超時不起作用。

嵌套的異常是com.ibm.db2.jcc.am.SqlException:由無法使用的資源引起的未成功執行。 原因00E30083,資源類型00000802和資源名稱綁定

等待鎖(BINDLOCK01到20)解鎖超時。

檢查您嘗試加載的表是否沒有被另一個長時間運行的作業進行更新/插入/刪除查詢所鎖定。

IBM知識中心建議盡可能增加頻繁的COMMIT操作。

Toad World提供了一些進一步的策略來優化鎖定時間:

建議:當使用頁或行鎖定並最大化性能時,ACQUIRE(USE)和RELEASE(DEALLOCATE)提供良好的並發性。

為了盡可能短地保持排他鎖,建議將INSERT,UPDATE和DELETE語句分組在主機語言程序中,然后是COMMIT。 如果這些SQL語句中插入了宿主語言代碼,則在執行宿主語言代碼時會保留這些鎖。

作為最后的選擇,如果您不想優化查詢,並且假設它沒有死鎖,則可以禁用鎖定超時

在用於* NIX / Windows的DB2上,將'LOCKTIMEOUT'參數更改為'-1'。 (不確定z / OS是什么,或潛在的影響。)

歡迎使用堆棧溢出。

暫無
暫無

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

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