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

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

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

Из командной строки (db2cmd для windows) админом базы после соединения, находясь в каталоге .../sqllib/bnd сделайте:
Код: plaintext
db2 bind @db2cli.lst blocking all grant public sqlerror continue clipkg  10 
...
Рейтинг: 0 / 0
22.10.2008, 14:25
    #35609360
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
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
22.10.2008, 14:43
    #35609446
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
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
22.10.2008, 15:07
    #35609512
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
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
22.10.2008, 15:10
    #35609517
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
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
22.10.2008, 15:37
    #35609592
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
И что, ошибка в приложении всё ещё появляется?
...
Рейтинг: 0 / 0
22.10.2008, 16:07
    #35609671
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
Mark BarinsteinИ что, ошибка в приложении всё ещё появляется?Проблема осталась. А вот исключение уже другое выдаёт:
Код: plaintext
com.ibm.db2.jcc.b.SqlException: Not enough storage is available in the application heap to process the statement.
...
Рейтинг: 0 / 0
22.10.2008, 16:49
    #35609819
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
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
22.10.2008, 17:11
    #35609893
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
Mark BarinsteinУдобно, получив сообщение об ошибке, по её SQLCODE почитать, что делать:
db2 "? SQL954"Огромное спасибо
...
Рейтинг: 0 / 0
25.05.2009, 03:32
    #36004449
Николаха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
Я пытаюсь в базу писать записи взятые с другой базы. Естественно их там много, например 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
25.05.2009, 09:33
    #36004637
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
НиколахаЯ пытаюсь в базу писать записи взятые с другой базы. Естественно их там много, например 20 000.
Т.е. я делаю INSERT в цикле 20 000 раз при малом количестве записей выходила ошибка описанная вышеВы параметризованный insert используете или insert с константами?
...
Рейтинг: 0 / 0
25.05.2009, 11:15
    #36004897
Николаха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
Mark BarinsteinВы параметризованный insert используете или insert с константами?

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

Что значит с константами!?
...
Рейтинг: 0 / 0
25.05.2009, 14:12
    #36005518
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
НиколахаНу как бы не совсем инсерт!? Я вызываю хр. процедуру которая определяет есть ли там эта запись,если нет то записывает инсертом.Можете показать кусок кода, где вы это делаете?
С такой проблемой борятся, либо увеличивая APPLHEAPSZ, либо исправляя код приложения, если одновременно открываются и не закрываются много стейтментов.
Какая у вас версия db2 и фикспак?
...
Рейтинг: 0 / 0
25.05.2009, 15:35
    #36005818
Николаха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
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
25.05.2009, 16:09
    #36005936
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
НиколахаВозможно что вот этот участок кода не верен и тут создается много 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
25.05.2009, 17:34
    #36006192
Николаха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
Код: 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
28.05.2009, 06:24
    #36012231
Николаха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
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
28.05.2009, 10:36
    #36012519
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
НиколахаЕсли я буду использовать 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
28.05.2009, 11:18
    #36012643
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
PreparedStatement может быть эффективнее за счет того, что SQL-запрос кешируется а) в пуле соединений сервера приложений, б) в кеше SQL-операторов DB2.
Но, чтобы SQL-оператор был взят из кеша, он должен посимвольно совпасть с текстом передаваемого запроса.
Для Statement, если туда каждый раз "зашиваются" значения параметров, текст запроса каждый раз (при каждой новой комбинации параметров) будет разным, Для PreparedStatement c подстанвочными символами текст будет совпадать.
Так что PreparedStatement нужно использовать, но смотреть при этом план доступа. Т.к. для конкретных значений параметров план доступа может существенно отличаться от плана доступа с абстрактными значениями параметров.
...
Рейтинг: 0 / 0
29.05.2009, 03:45
    #36014724
Николаха
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Package "NULLID.SYSLN303 0X5359534C564C3031" was not found
Доброе(ый) утро (день, вечер) !!!
Mark BarinsteinНе важно, что вы будете использовать PreparedStatement или Statement - количество стейтментов только от этого выбора не изменится.
PreparedStatement полезен только в том случае, если меняются только параметры от вызова к вызову, а не сам текст запроса.

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

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


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

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

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


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


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