[英]DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=68
[英]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.