访问bluemix云上的dashdb日志

时间:2018-05-29 14:13:58

标签: db2 ibm-cloud dashdb

我正在更新Bluemix上的dashdb中的表并收到一个错误,表明可能存在数据库问题。有没有办法查看db日志以获取更多信息?

我得到的错误是:

com.ibm.db2.jcc.am.BatchUpdateException: [jcc][t4][102][10040][4.23.42] Batch failure.  
The batch was submitted, but at least one exception occurred on an individual member of the batch.; 
Use getNextException() to retrieve the exceptions for specific batched elements.
ERRORCODE=-4229, SQLSTATE=null; [SQLSTATE 40506] 


com.ibm.db2.jcc.am.SqlTransactionRollbackException: Error for batch element #1: **The current transaction was rolled back because of error "-911".. SQLCODE=-1476, SQLSTATE=40506,** DRIVER=4.23.42; 
[SQLSTATE null] com.ibm.db2.jcc.am.SqlException: [jcc][103][10843][4.23.42] Non-recoverable chain-breaking exception occurred during batch processing.
The batch is terminated non-atomically. ERRORCODE=-4225, SQLSTATE=null

1 个答案:

答案 0 :(得分:2)

您的交易由Db2回滚,因为您的交易 LOCK TIMEOUT或DEADLOCK。

这就是-911 sqlcode的含义。

您需要发现它是锁定超时还是死锁,因为不同的避免策略适用。

要确定哪个(锁定超时或死锁),您的代码可以使用getNextException()或获取原因,或使用PD_GET_LOG_MSGS or PDLOGMSGS_LAST24HOURS函数。原因码2表示死锁,原因码68表示锁定超时。此信息可能来自SQLException或DB2Diagnosable的类(或子类)中的方法。

要避免锁定超时或死锁,您需要检查隔离级别(对于语句,事务,包或连接)以及使用相同表的其他并发运行的作业作为您的交易,或调整您的锁定等待容差(通过为您的交易设置当前锁定超时)。通常,您需要确保最佳访问计划,最低所需隔离级别,最小工作单元以实现所需结果(更频繁地提交)并确保数据库上没有挂起的线程或未提交的旧事务,这些事务不必要地保持锁定