доступ к журналам для dashdb в облаке Bluemix - PullRequest
0 голосов
/ 29 мая 2018

Я обновляю таблицу в dashdb на Bluemix и получаю сообщение об ошибке, которое указывает на возможную проблему с БД.Есть ли способ просмотреть журналы БД для получения дополнительной информации?

Я получаю следующие ошибки:

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 голосов
/ 29 мая 2018

Ваша транзакция откатилась на Db2, потому что ваша транзакция или имела значение LOCK TIMEOUT или DEADLOCK.

В этом значение sqlcode -911.

Вам необходимо выяснить, был ли это тайм-аут блокировки или тупик, потому что применяются разные стратегии предотвращения.

Чтобы определить , какие (тайм-аут блокировки или тупик) ваш код может либо использовать getNextException (), либо получить причину, либо использовать функции PD_GET_LOG_MSGS или PDLOGMSGS_LAST24HOURS .Код причины 2 указывает на тупик, а код причины 68 ​​указывает на тайм-аут блокировки.Эта информация может быть доступна из методов в классе (или подклассах) SQLException или DB2Diagnosable.

Чтобы избежать тайм-аута блокировки или тупика, вам нужно проверить уровень изоляции (для оператора или транзакции,или пакет, или соединение), и другие параллельно выполняемые задания, которые используют ту же таблицу (таблицы), что и ваша транзакция, или отрегулируйте ваш допуск ожидания блокировки (посредством установки текущего времени ожидания блокировки для вашей транзакции).Как правило, вам нужно обеспечить наилучшие планы доступа, наименьший требуемый уровень изоляции, наименьшую единицу работы для достижения желаемого результата (более частое принятие) и убедиться, что в базе данных нет зависших потоков или незафиксированных старых транзакций, которые без необходимости удерживают блокировки.

...