powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
24 сообщений из 24, страница 1 из 1
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35608873
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте всем!

При выполнении одного из запросов в приложении на WAS v6 возникает исключение
Код: plaintext
com.ibm.db2.jcc.b.SqlException: Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
После чего все остальные запросы отказываются работать, а значит приложение становится неработоспособным.
СУБД (DB2 8.1.14) и используемая база после возникновения исключения функционируют в прежнем режиме. Это показало другое приложение, работающее с этой же базой с другого сервера приложений. Помогает только перезагрузка сервера WAS. В чём проблема?

С уважением, Семен Попов
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35608920
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю. Этот проблемный запрос выполняю из редактора команд DB2. Он выполняется успешно. А вот из приложения валится в исключение, после чего все запросы приложения перестают работать. Предполагаю, что валится пул соединений. Помогает только перезагрузка сервера WAS.
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35608938
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Из командной строки (db2cmd для windows) админом базы после соединения, находясь в каталоге .../sqllib/bnd сделайте:
Код: plaintext
db2 bind @db2cli.lst blocking all grant public sqlerror continue clipkg  10 
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35609360
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinЗдравствуйте.

Из командной строки (db2cmd для windows) админом базы после соединения, находясь в каталоге .../sqllib/bnd сделайте:
Код: plaintext
db2 bind @db2cli.lst blocking all grant public sqlerror continue clipkg  10 
Запустил и получил результат (см. картинку).
Должен уточнить. База приложения и сервер WAS находятся на разных серверах. Причём, WAS установлен на машине с ОС Windows, а DB2 на машине с ОС Linux. Хотя, на сервере с WAS СУБД DB2 также установлена. Ваш скрипт запускал в папке .../sqllib/bnd на машине, где установлен WAS.
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35609446
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Semen PopovMark BarinsteinЗдравствуйте.

Из командной строки (db2cmd для windows) админом базы после соединения, находясь в каталоге .../sqllib/bnd сделайте:
Код: plaintext
db2 bind @db2cli.lst blocking all grant public sqlerror continue clipkg  10 
Запустил и получил результат (см. картинку).
Должен уточнить. База приложения и сервер WAS находятся на разных серверах. Причём, WAS установлен на машине с ОС Windows, а DB2 на машине с ОС Linux. Хотя, на сервере с WAS СУБД DB2 также установлена. Ваш скрипт запускал в папке .../sqllib/bnd на машине, где установлен WAS.Вам надо было запустить эту команду при соединении с той базой, в которой приложение ошибку получало.
Что возвращает в этой базе после bind запрос:
Код: plaintext
1.
2.
select pkgname
from syscat.packages
where pkgschema='NULLID' and pkgname like 'SYSLN%'
?
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35609512
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinВам надо было запустить эту команду при соединении с той базой, в которой приложение ошибку получало.Вы просили запустить скрипт из каталога bnd. У меня их два. Первый - на машине с Windows (где установлен сервер WAS, там же установлен сервер DB2), а второй - на машине с Linux и еще одним DB2-сервером (где распологается рабочая база приложения). Скрипт выполнил в папке bnd на машине c WAS, но соединялся с рабочей базой.
Mark BarinsteinЧто возвращает в этой базе после bind запрос:
Код: plaintext
1.
2.
select pkgname
from syscat.packages
where pkgschema='NULLID' and pkgname like 'SYSLN%'
?Ответ приложил.
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35609517
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen PopovОтвет приложил.Извините, ответ удобнее опубликовать так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
SYSLN100
SYSLN101
SYSLN102
SYSLN103
SYSLN104
SYSLN105
SYSLN106
SYSLN107
SYSLN108
SYSLN109
SYSLN200
SYSLN201
SYSLN202
SYSLN203
SYSLN204
SYSLN205
SYSLN206
SYSLN207
SYSLN208
SYSLN209
SYSLN300
SYSLN301
SYSLN302
SYSLN303
SYSLN304
SYSLN305
SYSLN306
SYSLN307
SYSLN308
SYSLN309
SYSLN400
SYSLN401
SYSLN402
SYSLN403
SYSLN404
SYSLN405
SYSLN406
SYSLN407
SYSLN408
SYSLN409
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35609592
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И что, ошибка в приложении всё ещё появляется?
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35609671
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinИ что, ошибка в приложении всё ещё появляется?Проблема осталась. А вот исключение уже другое выдаёт:
Код: plaintext
com.ibm.db2.jcc.b.SqlException: Not enough storage is available in the application heap to process the statement.
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35609819
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Semen PopovMark BarinsteinИ что, ошибка в приложении всё ещё появляется?Проблема осталась. А вот исключение уже другое выдаёт:
Код: plaintext
com.ibm.db2.jcc.b.SqlException: Not enough storage is available in the application heap to process the statement.
Удобно, получив сообщение об ошибке, по её SQLCODE почитать, что делать:
db2 "? SQL954 "
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #35609893
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark BarinsteinУдобно, получив сообщение об ошибке, по её SQLCODE почитать, что делать:
db2 "? SQL954"Огромное спасибо
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36004449
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пытаюсь в базу писать записи взятые с другой базы. Естественно их там много, например 20 000.
Т.е. я делаю INSERT в цикле 20 000 раз при малом количестве записей выходила ошибка описанная выше
автор
com.ibm.db2.jcc.b.SqlException: Package "NULLID.SYSLN309 0X5359534C564C3031" was not found


от неё я избавился командой
Код: plaintext
db2 bind @db2cli.lst blocking all grant public sqlerror continue clipkg  10 
и увеличив APPLHEAPSZ == 4000, но теперь выходит другая ошибка:
Код: plaintext
1.
com.ibm.db2.jcc.b.SqlException: Not enough storage is available in the application heap to process the statement.

Сам с db2 не очень и времени мало необходимо срочно решить. Спасибо!!!
PS db2 на windows.
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36004637
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НиколахаЯ пытаюсь в базу писать записи взятые с другой базы. Естественно их там много, например 20 000.
Т.е. я делаю INSERT в цикле 20 000 раз при малом количестве записей выходила ошибка описанная вышеВы параметризованный insert используете или insert с константами?
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36004897
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinВы параметризованный insert используете или insert с константами?

Ну как бы не совсем инсерт!? Я вызываю хр. процедуру которая определяет есть ли там эта запись,если нет то записывает инсертом.

Что значит с константами!?
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36005518
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НиколахаНу как бы не совсем инсерт!? Я вызываю хр. процедуру которая определяет есть ли там эта запись,если нет то записывает инсертом.Можете показать кусок кода, где вы это делаете?
С такой проблемой борятся, либо увеличивая APPLHEAPSZ, либо исправляя код приложения, если одновременно открываются и не закрываются много стейтментов.
Какая у вас версия db2 и фикспак?
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36005818
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinНиколахаНу как бы не совсем инсерт!? Я вызываю хр. процедуру которая определяет есть ли там эта запись,если нет то записывает инсертом.Можете показать кусок кода, где вы это делаете?
С такой проблемой борятся, либо увеличивая APPLHEAPSZ, либо исправляя код приложения, если одновременно открываются и не закрываются много стейтментов.
Какая у вас версия db2 и фикспак?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
============================================================
О среде инструментов управления DB2
============================================================
Уровень инструментов управления DB2:
Идентификатор продукта           SQL08020
Идентификатор уровня              03010106 
Уровень                          DB2 v8. 1 . 7 . 445 
Уровень компиляции               s040812
PTF                              WR21342
============================================================
Комплект разработки Java (JDK):
Уровень                          IBM Corporation  1 . 4 . 1 
============================================================
Код примерный: (необращайте внимание на 1: 2: 3: )
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
//есть List в котором хранятся данные
List list =  new  ArrayList();
list = .....;
//Соедин с БД 1 и 2
Connection con = ....;
connection con2=.....;
 for (i= 0 ;i<N;i++) {// по List`у
    String id_s = list.get(i);
    //На основе взятого из листа параметра делается запрос в БД-1
 1 : ResultSet rset = con.execQuery("select ..... where id_s="+id_s);
    //беру из него что-нибудь
    String str = rset.getString(...);
    String str2 = rset.getString(...);
    //взятые параметры str записываю в БД-2
 2 :  int  res = con2.execUpdate("call set_param(str,str2)"); //для простоты не буду плюсовать строки
    //тут на основе параметров делаю вычисления не обращаясь ни к какой БД и опять в цикле записываю в БД-2, но вызываю др. хран. процедуру
     for (j= 0 ;j< 12 ;j++) {
 3 :       int  res2 = con2.execUpdate("call set_calc_param(calc1,calc2,.....)");
    }
}
con2.closeConnection();
con.closeConnection();


Если N-длина первого цикла = 200-300 раз, то работает.
БД-1 и БД-2 физически на ходятся на разных серваках: БД-1 на линуксе, а БД-2 на винде
1-ый селект выполнаемый из БД-1 выполняется N раз и с ним всё нормально, а 2-ой апдэйт после 310 записей выдает ошибку и последующие запросы перестают работать.
Вот описание метода execUpdate и execQuery:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 public  Resultset execQuery( final  String query)  throws  SQLException {
        Statement state = connection.createStatement();
         return  state.executeQuery(query);
}


 public   int  execUpdate( final  String query)  throws  SQLException {
        Statement state = connection.createStatement();
         return  state.executeUpdate(query);
}

Возможно что вот этот участок кода не верен и тут создается много statement 'ов?????????
Код: plaintext
Statement state = connection.createStatement();
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36005936
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НиколахаВозможно что вот этот участок кода не верен и тут создается много statement 'ов?????????
Код: plaintext
Statement state = connection.createStatement();
Да.
Я настоятельно вам советую переписать это примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
//есть List в котором хранятся данные
List list = new ArrayList();
list = .....;
//Соедин с БД  1  и  2 
Connection con = ....;
connection con2=.....;
PreparedStatement pst = con.prepareStatement("select ..... where id_s=?");
CallableStatement cs = con2.prepareCall("call set_param(?, ?)");
CallableStatement cs2 = con2.prepareCall("call set_calc_param(?,?,.....)");
for(i= 0 ;i<N;i++) {// по List`у
    String id_s = list.get(i);
    //На основе взятого из листа параметра делается запрос в БД- 1 
 1 :  pst.setXXX( 1 , ...);
    ResultSet rset = pst.executeQuery();
    //беру из него что-нибудь
    String str = rset.getString(...);
    String str2 = rset.getString(...);
    //взятые параметры str записываю в БД- 2 
 2 :  cs.setXXX( 1 , ...);
    cs.setXXX( 2 , ...);
    cs.execute();
    //тут на основе параметров делаю вычисления не обращаясь ни к какой БД и опять в цикле записываю в БД- 2 , но вызываю др. хран. процедуру
    for(j= 0 ;j< 12 ;j++) {
 3 :    cs2.setXXX( 1 , ...);
      ...
      cs2.setXXX(N, ...);
      cs2.execute();
    }
    rset.close();
}
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36006192
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
PreparedStatement pst = con.prepareStatement("select ..... where id_s=?");
CallableStatement cs = con2.prepareCall("call set_param(?, ?)");
CallableStatement cs2 = con2.prepareCall("call set_calc_param(?,?,.....)");

Блин, а я почему то понял, что он ЗАПРОС посто поверяет на правильность!!!!
Ещё конечно не пробовал, но думаю прокатит. На работу приду проверю!!!
Спасибо!!! Если что напишу!!!
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36012231
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein
Я настоятельно вам советую переписать это примерно так:


Спасибо всё получилось. Я использовал PrepareStatement только в тех случаях когда выполнялись массовые операции и остался просто Statement в нек. местах и у меня появился вопрос!
Т.к. это ВЕБ приложение и каждый юзер выполняет один запрос (предыдущий код я изменил и убрал постоянное создание стэйтментов):
Код: plaintext
1.
2.
3.
4.
5.
........
Connector con = ....;
ResultSet rset = con.execQuery("select ..... where id_s="+id_s);
con.closeСonnection();
........
Класс для соединения с БД и выполнения запросов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public   class  Connector {
     private  Connection connection;
     private  Statement state;
    ...........
     public  Resultset execQuery( final  String query)  throws  SQLException {
             if  (state== null ) state = connection.createStatement();
             return  state.executeQuery(query);
    }
    ...........
     public   void  closeConnection() {
            ..............
    }
}

Если я буду использовать PrepareStatement вместо Statement,то для запроса выполняемого N кол-ом пользователей создастся N PrepareStatement или один для всех юзеров. По коду видно что каждый юзер создает для себя свой Connector.

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html
A SQL statement is precompiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36012519
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НиколахаЕсли я буду использовать PrepareStatement вместо Statement,то для запроса выполняемого N кол-ом пользователей создастся N PrepareStatement или один для всех юзеров. По коду видно что каждый юзер создает для себя свой Connector.

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html
A SQL statement is precompiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.
Не важно, что вы будете использовать PreparedStatement или Statement - количество стейтментов только от этого выбора не изменится.
PreparedStatement полезен только в том случае, если меняются только параметры от вызова к вызову, а не сам текст запроса.
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36012643
PreparedStatement может быть эффективнее за счет того, что SQL-запрос кешируется а) в пуле соединений сервера приложений, б) в кеше SQL-операторов DB2.
Но, чтобы SQL-оператор был взят из кеша, он должен посимвольно совпасть с текстом передаваемого запроса.
Для Statement, если туда каждый раз "зашиваются" значения параметров, текст запроса каждый раз (при каждой новой комбинации параметров) будет разным, Для PreparedStatement c подстанвочными символами текст будет совпадать.
Так что PreparedStatement нужно использовать, но смотреть при этом план доступа. Т.к. для конкретных значений параметров план доступа может существенно отличаться от плана доступа с абстрактными значениями параметров.
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36014724
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе(ый) утро (день, вечер) !!!
Mark BarinsteinНе важно, что вы будете использовать PreparedStatement или Statement - количество стейтментов только от этого выбора не изменится.
PreparedStatement полезен только в том случае, если меняются только параметры от вызова к вызову, а не сам текст запроса.

Да , это удобно. А если этот же запрос,прямо буковка в буковку, вызывает другое соединение!?

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


Вероятно ли это!?

Меня сейчас интересует вопрос производительности. В начале моих постов у меня была проблема. В БД записывались только 310 записей,т.к. по коду видно что каждый раз создавался Statement, соответственно есть вероятность, что 400 юзеров создадут 400 соединений и соответственно 400 Statement'ов и будет ERROR !? Может я ошибаюсь!?!?!?!? Спасибо за Ваши ответы!!!
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36014961
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Николаха,

Ваша проблема была в том, что одно соединение создавало много стейтментов.
Именно из-за этого, скорее всего, и переполнялся APPLHEAPSZ.
Что касается стейтментов, то у db2 есть package cache, в котором хранятся скомпилированные sql команды. Если в этом кэше есть уже стейтмент (не важно с параметрами или без), который посылает даже другой пользователь, то новый план запроса не создаётся, а берётся из этого кэша.
В v9.7 будет возможность использовать statement concentrator - оно сможет распознавать стейтменты, которые отличаются только параметрами, и использовать (и хранить в кэше) единый план запроса для них.
Пока же, если текст запроса отличается, он будет компилироваться и отдельно храниться в кэше.
...
Рейтинг: 0 / 0
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
    #36014999
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinНиколаха,
В v9.7 будет возможность использовать statement concentrator....


Спасибо! Всё понял!
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]