|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
После 2-10 раз выполнения одного и того же запроса DB2 слетает. Вот что она пишет в лог. Только кода этой ошибки нет в справке. Что же делать? 2005-07-12-17.57.31.250000 Instance:DB2 Node:000 PID:9874018032(db2syscs.exe) TID:18032 Appid:0AF05C14.9A05.050712135307 relation_data_serv sqlrr_signal_handler Probe:10 Database:REF1 DIA7107I Execution of a component signal handling function has begun. 2005-07-12-17.57.31.656000 Instance:DB2 Node:000 PID:9874018032(db2syscs.exe) TID:18032 Appid:0AF05C14.9A05.050712135307 relation_data_serv sqlrr_dump_ffdc Probe:17 Database:REF1 DIA3816C A severe internal processing error has occurred. 2005-07-12-17.57.31.828000 Instance:DB2 Node:000 PID:9874018032(db2syscs.exe) TID:18032 Appid:0AF05C14.9A05.050712135307 relation_data_serv sqlrr_dump_ffdc Probe:17 Database:REF1 DIA9999E An internal error occurred. Report the following error code : "0xFFFFF707". Data Title:SQLCA PID:9874018032 TID:18032 Node:000 sqlcaid : SQLCA sqlcabc: 136 sqlcode: 0 sqlerrml: 0 sqlerrmc: sqlerrp : SQL07026 sqlerrd : (1) 0x00000000 (2) 0x00000000 (3) 0x00000000 (4) 0x00000000 (5) 0x00000000 (6) 0x00000000 sqlwarn : (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) sqlstate: 00000 Еще она дальше пишет запрос, запрос мы попробовали упростить, после этого начинает стабильно работать. Может нужно как-то конфигурацию изменить? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 11:36 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Запрос наверняка динамический? Может попробовать подкрутить некоторые параметры SQL компилятора. Типа ему памяти/стека не хватает? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 12:18 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
gardenmanЗапрос наверняка динамический? Может попробовать подкрутить некоторые параметры SQL компилятора. Типа ему памяти/стека не хватает? А какие? меняли что-то, но не помогает... :-( Главное кода ошибок нет в справке. Ни SQL07026, ни F707. Может, кто ближе к IBM спросит у спецов? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 13:01 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Кхы... Объясните термин "падает"... Это что значит? сервер приходится перезапускать? Или просто запрос не работает? Посмотреть бы на текст этого запростика... поближе... Мне для коллекции, пожал-ста... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 13:05 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
gardenmanКхы... Объясните термин "падает"... Это что значит? сервер приходится перезапускать? Или просто запрос не работает? Посмотреть бы на текст этого запростика... поближе... Мне для коллекции, пожал-ста... Падает - DB2 закрывается с ошибкой. и пишет вышеуказанное в db2diag.log А вот и сам запрос. select case lastref when 1042 then nomp else '' end nomp, case lastref when 1042 then nomsost else '' end nomsost, case when stnaz='00000' then '' when lastref in (1042,5337) then value(snv.stname,stnaz) else '' end stnaz_n, oper1042 oper, case when (lastref in (1042,5337,5338) and a.EMPTY<>'Y') then char(integer(a.vesgr)) else '' end vesgr0, case when lastref in (1042,5337,5338) then codgr else '' end codgr, case when lastref in (1042,5337) then stnaz else '' end stnaz, case lastref when 1042 then stnazp else '' end stnazp, case lastref when 1042 then stformp else '' end stformp, case when lastref in (1042,5337,5338) then g.name else '' end gruz, case when (scn.cnt is not null)and(n.codrps='rd') then cast(scn.CNT as char(2)) else '' end sec_size, a.stcode stop, value(sopn.stname,a.stcode) stop_n,a.inv,a.dttmop,a.lastref,YELEDGE,REDEDGE, value(rs.numsec,a.secnum) secnum, n.sokrname rps,n.codrps,value(ri.RENTOUT, a.PRSOBSTV) RENTOUT, ri.carvol, gro.NAME, dpp.DEPNAME from ref.activecar a inner join nsi.roads_int sop on a.stcode between sop.lst and sop.hst inner join nsi.roads_int snz on a.stnaz between snz.lst and snz.hst left join ref.refinfo ri on ri.inv=a.inv left join asov.stations snv on stnaz=snv.codst left join asov.stations sopn on a.stcode=sopn.codst left join nsi.gruz g on a.codgr=g.codgruz and a.EMPTY<>'Y' left join nsi.rps n on a.inv between n.li and n.hi left join (ref.refsec rs inner join ref.refinfo rfi on rs.id_refsec=rfi.id_refsec) on rfi.inv=a.inv left join ( select rs1.INV, CNT-VALUE(CNT1,0) CNT from ref.refinfo rs1 left join (select ID_REFSEC, COUNT(0) CNT from ref.refinfo r group by ID_REFSEC) c on rs1.ID_REFSEC=c.ID_REFSEC left join (select ID_REFSEC, COUNT(0) CNT1 from ref.refinfo r inner join nsi.rps n on r.inv between n.li and n.hi where n.codrps='rd' group by ID_REFSEC) c1 on rs1.ID_REFSEC=c1.ID_REFSEC ) scn on scn.inv=a.inv left join (ref.gruzotp gro inner join ref.refinfo rfi2 on gro.id_gruzotp=rfi2.id_gruzotp) on a.inv=rfi2.inv left join (ref.depo dpp inner join ref.refinfo rfi3 on dpp.id_depo=rfi3.id_depo) on a.inv=rfi3.inv where sop.coddor='01' and lastref in(1042,1359,1353,1354,5337,5338) and a.stcode= $$$ and n.codrps='85' order by secnum,inv Если мы заменяем inner join nsi.roads_int sop on a.stcode between sop.lst and sop.hst inner join nsi.roads_int snz on a.stnaz between snz.lst and snz.hst left на inner join asov.stations sop on a.stcode =sop.codst inner join asov.stations snz on a.stnaz=snz.codst то все начинает работать. Смысл в том, что нужно взять coddor, и удобнее это делать через диапазон, так как ключевых значений в asov.stations может не быть. Структуры таблиц: CREATE TABLE NSI.ROADS_INT ( CODDOR CHARACTER(2) NOT NULL, LST CHARACTER(5) NOT NULL, HST CHARACTER(5) NOT NULL) IN USERSPACE1; ALTER TABLE NSI.ROADS_INT ADD CONSTRAINT ROADS_INTPK PRIMARY KEY (LST,HST); CREATE TABLE ASOV.STATIONS ( ID_ST INTEGER, ID_DEP INTEGER, ID_RW INTEGER, STCODE INTEGER, CODST CHARACTER(5) NOT NULL, STNAME VARCHAR(24) NOT NULL, CODDOR CHARACTER(2) NOT NULL, CODOTD CHARACTER(4), CODREG SMALLINT) IN USERSPACE1; ALTER TABLE ASOV.STATIONS ADD CONSTRAINT STATIONSPK PRIMARY KEY (CODST); CREATE INDEX ASOV.STCODDOR ON ASOV.STATIONS (CODST,CODDOR) ALLOW REVERSE SCANS; CREATE INDEX ASOV.STDORSTI ON ASOV.STATIONS (CODDOR,CODST) ALLOW REVERSE SCANS; ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 13:44 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
на будущее: тут есть такая замечательная кнопка, где написано SRC, когда код оформляете , то пользуйтесь ей, а то --- ну очень тяжело въехать что написано... ща буду посмотреть))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 17:07 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Полагаю, DB2 не имеет права так себя вести, и имеет место бага, о которой надо сообщить разработчику. Если же DB2 спирачена, то, конечно, вы не сможете это сделать, и остается устраивать танцы с бубнами, подбирая нужную расцветку и диаметр бубна. Тем не менее интересно было бы услышать номер версии и фикспака. А может, вы и фикспаки не ставили? Если так, то почему она у вас вообще работает? ;-) ;-( Кстати, кто-нибудь пробовал натравливать db2advisor на выражения с MERGE? У меня сервер падает на одном запросе на DB2 8.2.2, но более подробными исследованиями я не занимался. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 17:14 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Да и структуры таблиц присутствуют не все (чтобы можно запустить скрипт у себя и посмотреть - упадет или нет). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 17:21 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Victor MetelitsaПолагаю, DB2 не имеет права так себя вести, и имеет место бага, о которой надо сообщить разработчику. Если же DB2 спирачена, то, конечно, вы не сможете это сделать, и остается устраивать танцы с бубнами, подбирая нужную расцветку и диаметр бубна. Тем не менее интересно было бы услышать номер версии и фикспака. А может, вы и фикспаки не ставили? Если так, то почему она у вас вообще работает? ;-) ;-( Кстати, кто-нибудь пробовал натравливать db2advisor на выражения с MERGE? У меня сервер падает на одном запросе на DB2 8.2.2, но более подробными исследованиями я не занимался. Честно скажу - Adiser-oм вообще не пользуюсь.... А почему? А потому что знаю что если есть табличка и я обращаюсь к ней чрез where id=?, то по id - ну точно должен быть индекс. Если есть внешний ключ на пару полей (x,y) то у зависимой таблички обязательно должен быть построен индекс на эту пару колонок. И т.д. Т.е. 99% производительности - это проектирование.... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 17:49 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
gardenman Честно скажу - Adiser-oм вообще не пользуюсь.... А почему? А потому что знаю что если есть табличка и я обращаюсь к ней чрез where id=?, то по id - ну точно должен быть индекс. Если есть внешний ключ на пару полей (x,y) то у зависимой таблички обязательно должен быть построен индекс на эту пару колонок. И т.д. Ну здрасьте. А как же index only access? А что лучше - индекс по (x,y) или (y,x)? А как вы будете опимизировать запрос наподобие того, что приведен выше? А если приложение вообще не ваше, исходников нет, или все sql-выражения генерируются динамически? У меня в запросах нередко бывает таблиц по 15. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 17:58 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Ради интересу попробуйте перехватить поток SQL-выражений, генерируемый вашим приложением, и спросите у Advisor'а, что он об этом наборе думает. Возможен большой сюрприз. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 18:00 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Victor MetelitsaРади интересу попробуйте перехватить поток SQL-выражений, генерируемый вашим приложением, и спросите у Advisor'а, что он об этом наборе думает. Возможен большой сюрприз. Э нет! не получицца... У меня как правило весь SQL - статический. И если где-то может быть INDEXONLY ACCESS, то он у меня уже есть, и я об этом знаю. И более того, если я подозреваю что можно где-то сделать INDEXONLY, то уж будьте уверены - я этого добьюсь... Вообще считаю что для OLTP приложений - static sql - самое то!... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 18:04 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Static SQL? Ха-ха. Реальной пользы - мизер, даже в OLTP. Много ли отнимает prepare в нормально написанной программе? А у меня, к тому же, OLAP, с зачастую заранее неизвестными запросами. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2005, 23:45 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
если OLTP то Static SQL однозначно рулез Ну OLAP и прочие многие виды Business Intelligence - там он практически не применим. А по поводу валится - в newsgroup не так давно один из разработчиков писал, по поводу падания db2 на windows с криками о нехватке стека и с советом увеличить размер его - ну типа если операционка не позволяет, то просто ну никак. И проявлялась ошибка только на винде. Хотя все равно непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 09:21 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Static SQL это не только ценный мех - тьфу Это не только сохранение плана выплнения, это и другой подход к безопастности, и другие возможности с уровнем изоляции, и прочее. Классная вешь. И несмотря на любовь IBM к Java, application server и прочим модным технологиям - Static SQL остается. (хотя есть SQLJ, но что-то мне кажется это не совсем стандартный подход из-за более трудного deployment) Хочется верить - навсегда :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 09:26 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
To ggv - полностью согласен. Victor MetelitsaStatic SQL? Ха-ха. Реальной пользы - мизер, даже в OLTP. Много ли отнимает prepare в нормально написанной программе? А у меня, к тому же, OLAP, с зачастую заранее неизвестными запросами. Вот интересно было бы знать откуда такое мнение? Буквально недавно - делали программку на ASE Sybase. Задачка - так себе - просто контекстный поиск по ФИО. Да и табличка - фигня.. каких-то 400 тыс записей. Прикол в том, что несмотря на собранную статистику, построенные индексы, и то что все сделано на ХП - план запроса не всегда один и тот же)) в результате на экране иногда имеем совсем не то что просили. Пришлось хинтами править. А оно все равно не всегда так как надо. Не занаю чем там кончилось - я ушел оттуда. А у DB2 таких проблем в статическом SQL - ну ваще нету... На счет OLAP запросов - соглашусь. User maintained MQT тока через динамический SQL и работают. Прикольная штука. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 10:44 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Ну, пусть для prepare тратится 1 сек, для выполнения запроса 1 сек, а однотипных запросов - 100. Со static SQL вы потратите 100 сек, с dynamic 101. Подставьте свои цифры - что выйдет? Насколько я понимаю OLTP, однотипных запросов должно быть _очень_ много. Ценности удержания плана запроса не вижу (не Oracle, чай). Другой подход к security - быть может, и удобен, но неужто необходим? И что за проблемы с уровнем изоляции? CLI ведь позволяет задавать нужный, и ... WITH уровень-изоляции работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 12:59 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
gardenmanTo ggv - полностью согласен. Буквально недавно - делали программку на ASE Sybase. Задачка - так себе - просто контекстный поиск по ФИО. Да и табличка - фигня.. каких-то 400 тыс записей. Прикол в том, что несмотря на собранную статистику, построенные индексы, и то что все сделано на ХП - план запроса не всегда один и тот же)) в результате на экране иногда имеем совсем не то что просили. Выдавал неправильные результаты? Какой ужас Пришлось хинтами править. А оно все равно не всегда так как надо. Не занаю чем там кончилось - я ушел оттуда. А у DB2 таких проблем в статическом SQL - ну ваще нету.... А в динамическом разве есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 13:02 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Не хочу вступать в дискуссию, отвечу только по последнему вопросу. Там проблем никаких. Просто можно выставив разные значения DB2_SKIPDELETED/DB2_SKIPINSERTED/DB2_EVALUNCOMMITED во время BIND можно получить разное поведение в разных транзакциях в одно и то же время. Это как пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 13:07 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
хотя, как раз gardenman писал, что стоило бы эти переменные было сделать по образу и подобию "WITH UR" Это вот как раз бы для Dinamic SQL помогло бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 13:09 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
ggvНе хочу вступать в дискуссию, отвечу только по последнему вопросу. Там проблем никаких. Просто можно выставив разные значения DB2_SKIPDELETED/DB2_SKIPINSERTED/DB2_EVALUNCOMMITED во время BIND можно получить разное поведение в разных транзакциях в одно и то же время. Это как пример. И как вы же выставите нужное значение? http://publib.boulder.ibm.com/infocenter/db2help/topic/com.ibm.db2.udb.doc/core/r0001935.htm в упор не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 13:39 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
ggvхотя, как раз gardenman писал, что стоило бы эти переменные было сделать по образу и подобию "WITH UR" Это вот как раз бы для Dinamic SQL помогло бы. Многие переменные хотелось бы видеть на уровне сеанса, а не базы или экземпляра (в этом Oracle превосходит), но... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 13:41 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
Victor Metelitsa И как вы же выставите нужное значение? http://publib.boulder.ibm.com/infocenter/db2help/topic/com.ibm.db2.udb.doc/core/r0001935.htm в упор не вижу. Ну db2set DB2_SKIPINSERTED=on db2 BIND someting1 db2set DB2_SKIPINSERTED=off db2 BIND something2 ну потом запуская something1 и something2 имеем разное поведение. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 13:50 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
может, это вопрос личных предпочтений (что-то там на подсознательном уровне) но я CLI использовал только до момента появления context в Static SQL. Как появилось - сразу начал переписывать старый код. Как говорит мой друг, у каждого в голове свои тараканы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 13:57 |
|
DB2 все время падает, help, please
|
|||
---|---|---|---|
#18+
2 Victor Metelitsa вообще на самом деле мой путь был таким. Сначала я попробовал юзать CLI. И понял как это долго и нудно. Конешно можно написать свои классы-обёртки, но все равно мне не понравилось. Потом попробовал вложенный SQL. И - пошло. С динамическим SQL - каждое подключающееся приложение должно перекомпилить кучу кода. Причем одного и того же. При большом количестве соединений - это блокировки каталога, и снижение производительности. Опять же требуется чтобы статистика была собрана. И кто его знает что за план доступа в результате получится? А в статическом - таких проблем просто нет. А на статистику иногда вообще можно забить.)) Единственное для меня неудобство - не очень то Visual Studio любит препроцессоры. Еслиб не эта сволочь MS - все б наверно давно на ESQL писали. И, главное, в 7 версии IBM делало свой Add-Ins, который позволял работать с sqx файлами в DB2. Меня более-менее устраивало. Только вот куда это все делось? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2005, 14:02 |
|
|
start [/forum/topic.php?fid=43&fpage=144&tid=1605835]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 272ms |
total: | 417ms |
0 / 0 |