Yvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
03:05, 11 июня 2009

Разбор ошибки SQL0805N в DB2 9: пересвязывание динамических пакетов

Возникают ситуации, когда при работе приложения в логах сервера приложений можно обнаружить вот такой эррор:

SQL0805N Package "NULLID.SYSLH214 0X5359534C564C3031" was not found. SQLSTATE=51002.

Для решения данной проблемы можно проделать следующее:

1. Убедимся, что пакета NULLID.SYSLH214 действительно нет в системе:

select *

from syscat.packages

where pkgname like 'SYS%'

order by 2

Blog post image

На рисунке видно, что за пакетом SYSLH213 идет SYSLH300.

2. По рекомендации IBM нужно в файле db2cli.ini прописать строчку CLIPkg=30 (регистр символов учитывается)

Далее, выполнить команду (присоединившись предварительно к серверу):

db2 “bind BNDDIR/@db2cli.lst blocking all sqlerror continue grant public CLIPKG 30”

3. После этого можно выполнить снова запрос

select *

from syscat.packages

where pkgname like 'SYS%'

order by 2

Убедимся, что требумый пакет присутствует в системе.

Blog post image

Возможна ситуация, что пакет может и не появится в базе, но в результате пересвязки пакетов все будет работать должным образом.

Если приложение находится в стадии отладки или тестирования, и падает с подобной ошибкой, то предпочтительным будет, чтобы разработчик проверил код в программе.

PS

В справочной документации DB2 по устранению данной ситуации рекомендуется выполнять следующие команды в CLP:

db2 “bind @db2ubind.lst blocking all grunt public” - для утилит DB2

db2 “bind @db2cli.lst blicking all grunt public” - для CLI

0
651
0