dastapov: (Default)
[personal profile] dastapov
Он - это пресс-релиз. На самом деле, там еще есть пару мелких углов, но вписывать прибавку к EXP и ЧСВ можно уже сейчас. Я там собирал требования, писал кучи документов, мигрировал данные и интегрировал все добро в одну кучу. Вот какой я молодец

Впрочем, не обошлось без казусов. Некие бравые ребята написали на PL/SQL пакетик процедур, и, натурально, вставили его в Oracle. Другие бравые ребята взяли программу на C#.Net и давай оттуда эти процедуры использовать.

В тестовом окружении (Oracle 8.1.7) - все шикарно. В промышленном (Oracle 9i) - не выходит каменный цветок. Лишь только пытаешься вызвать какую-то процедуру - Оракл тут же говорит ORA-03113, end-of-file on communication channel. И закрывает соединение со своей стороны.

При этом с того же самого компьютера можно подключиться к базе при помощи sqlplus, вызвать искомую процедуру и получить результат. Без всяких ошибок. Хоть раз, хоть десять.

Разработчики на PL/SQL, естественно, тут же воспряли духом - ага, баг не у нас, оказывается! Только толку от этого знания немного - надо же, чтобы в конце-концов все заработало и в приложении на C#.Net.

Разработчики на C# говорят: это все потому, что мы ходим через ODBC. Однако фиг - утилита ODBC Test, написанная (судя по виду GUI) еще во времена Windows 3.1, замечательным образом вызывает процедуры через ODBC.

Тогда разработчики на C# говорят: это все потому, что мы все переписали и теперь работаем через OleDb. Надо поставить ораклового клиента и использовать ODP.NET оттуда. Поставили. Однако фиг - как падало, так и падает. Причем, только с Oracle 9i - с 8.1.7 по-прежнему все хорошо.

Тогда разработчики на C# говорят: это у вас фиговый Оракл. Но их посылают в сад, так как "у меня нет для вас другого Оракла, товарищ Жуков".

Параллельно все участники процесса насилуют Google в поисках других товарищей по несчастью. Классик говорил: "если любишь заглядывать в бездну, помни, что бездна может заглянуть в тебя". Так и происходит: гугл приносит мешок рассказов о том, как по всему земному шару люди бьются лбом об стену с ORA-03113.

Типичные истории звучат примерно так: "Мы тут написали софтину на C#.NET, которая ходит в оракл. С версией 9i и ODP 9.0.1.3.1 все было хоршо, но потом мы обновили ODP до 9.0.1.3.3 и началось - ORA-03113 через пол-часа работы. Мы два месяца плясали с отладчиками, и поняли: у нас на клиентской стороне connection pool, а Оракл со своей стороны временами закрывает соединения по тайм-ауту. В пуле они не инвалидируются, и когда такое соединение выбирается для выполнения запроса, возникает ORA-03113. Мы не можем убрать пул (все тормозит) и не можем убрать отключение по тайм-ауту (требование безопасности). Более того - мы откатили ODP, но проблема осталась! Помогите!". Читаешь, и понимаешь, что у нас еще не все так плохо :)

Хоть у нас все и падает сразу и пул явно ни при чем - попробовали поиграться с его отключением или параметрами. А вот фиг.

В конце-концов разработчики на C# говорят: "Мы сдаемся! К вам едет "мистер Вульф, который решает пробемы" (Криминальное чтиво).". Приезжает человек, который занимается исключительно troubleshooting-ом разной неведаной фигни.

Человек целый день колдует с компилятором C# и кучей разных библиотек и в конце-концов говорит: "я не знаю, что бы это значило, но факт таков - если я до вызова процедуры сделаю хотя бы один select, то все работает хорошо". Проверяем - натурально, так оно и есть. Может, дело в каких-то миллисекундных паузах? Нет, расставленные по коду паузы не помогают.

Пляски с бубном продолжаются еще день, но без особого результата. В конце-концов принимается волевое решение о том, что код на C# должен после открытия соединения сделать "select table_name from all_tables where owner=current_user" и вычитать первый элемент рекордсета.

И все начинает работать без сучка и задоринки. Мораль придумайте сами.

(no subject)

Date: 2009-08-17 07:06 pm (UTC)
From: [identity profile] bopm.livejournal.com
where rownum<=1 неплохо бы к такому селекту добавить, чтобы уж совсем без оверхита обойстись.
(deleted comment)

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2009-08-17 08:06 pm (UTC) - Expand

(no subject)

From: [identity profile] alexandr0.livejournal.com - Date: 2009-08-17 10:08 pm (UTC) - Expand

(no subject)

From: [identity profile] dark-dan.livejournal.com - Date: 2009-08-18 07:57 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2009-08-18 12:45 pm (UTC) - Expand

(no subject)

From: [identity profile] dark-dan.livejournal.com - Date: 2009-08-18 12:46 pm (UTC) - Expand

(no subject)

From: [identity profile] bopm.livejournal.com - Date: 2009-08-17 08:36 pm (UTC) - Expand

(no subject)

Date: 2009-08-17 07:06 pm (UTC)
From: [identity profile] yurri.livejournal.com
Использование ODBC в 2009 году в серьёзном инфраструктурном проекте это ещё круче, чем описанный баг.

(no subject)

Date: 2009-08-17 07:06 pm (UTC)
From: [identity profile] bopm.livejournal.com
Это да. Нативные драйвера придумали трусы.

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2009-08-17 07:10 pm (UTC) - Expand

(no subject)

From: [identity profile] yurri.livejournal.com - Date: 2009-08-17 07:11 pm (UTC) - Expand

(no subject)

Date: 2009-08-17 07:07 pm (UTC)
alexeyten: (Default)
From: [personal profile] alexeyten
Ааафигительно!!!

(no subject)

Date: 2009-08-17 07:11 pm (UTC)
From: [identity profile] alexott.livejournal.com
а что в хачестве дискового хранилища? я насколько помню, центральный офис МТС в москве использовал EMC

(no subject)

Date: 2009-08-17 07:12 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
FileNet P8

Касательно центрального офиса в МТС у меня другие сведения - если у них и есть EMC, то не для этих целей.

(no subject)

From: [identity profile] alexott.livejournal.com - Date: 2009-08-17 07:15 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2009-08-17 07:17 pm (UTC) - Expand

(no subject)

Date: 2009-08-17 07:11 pm (UTC)
From: [identity profile] vsquash.livejournal.com
Почему у меня жотское чувства дежавю, что эту историю с селектом я уже где то слышал. Пару лет назад. Но в упор не могу вспомнить с кем она приключилась...

(no subject)

Date: 2009-08-17 07:12 pm (UTC)
From: [identity profile] ex-avpme.livejournal.com
Эх, грабли-костылики... классика жанра.

(no subject)

Date: 2009-08-17 07:16 pm (UTC)
From: [identity profile] 4vanger.livejournal.com
$magic = true;
# your code here

(no subject)

Date: 2009-08-17 07:20 pm (UTC)
From: [identity profile] 4vanger.livejournal.com
Кстати, а вот всегда интересовало - а сам Оракл не помогает в таких случаях? Ведь по идее за лицензию не один десяток тысяч зелёных отвален - они не дают технический саппорт в таких случаях?

(no subject)

Date: 2009-08-17 07:23 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Оракл сказал - в 10i все будет. Но апгрейд на десятку по целому ряду причин был невозможен.

(no subject)

From: [identity profile] artimind.livejournal.com - Date: 2009-08-18 06:27 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2009-08-19 10:29 am (UTC) - Expand

(no subject)

From: [identity profile] artimind.livejournal.com - Date: 2009-08-19 10:51 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2009-08-19 07:12 pm (UTC) - Expand

(no subject)

From: [identity profile] artimind.livejournal.com - Date: 2009-08-19 08:12 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2009-09-09 11:53 am (UTC) - Expand

(no subject)

Date: 2009-08-17 07:20 pm (UTC)
From: (Anonymous)
А если вдруг (мнение дилетанта) написать обработку ORA-03113, и при её возникновении переинициализировать пул?

(no subject)

Date: 2009-08-17 07:21 pm (UTC)
From: [identity profile] baspr.livejournal.com
Не заметил, что не залогинен...

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2009-08-17 07:22 pm (UTC) - Expand

(no subject)

From: [identity profile] alexott.livejournal.com - Date: 2009-08-17 07:24 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2009-08-17 07:38 pm (UTC) - Expand

(no subject)

From: [identity profile] alexott.livejournal.com - Date: 2009-08-17 07:41 pm (UTC) - Expand

(no subject)

Date: 2009-08-17 07:23 pm (UTC)
From: [identity profile] dimez.livejournal.com
Супер, спасибо! :)

(no subject)

Date: 2009-08-17 07:40 pm (UTC)
From: [identity profile] r-a-d.livejournal.com
налетали в июле, разобрались за час, просто сообщение дебильное
p.s. до сих пор на 9ке, ибо у государства нет денег :)

(no subject)

Date: 2009-08-17 07:41 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Просто интересно - а в каком контексте налетали и как разобрались?

(no subject)

From: [identity profile] r-a-d.livejournal.com - Date: 2009-08-18 07:11 am (UTC) - Expand

офф

From: [identity profile] madmaks.livejournal.com - Date: 2009-08-17 09:59 pm (UTC) - Expand

Re: офф

From: [identity profile] http://users.livejournal.com/_adept_/ - Date: 2009-08-18 06:41 am (UTC) - Expand

Re: офф

From: [identity profile] r-a-d.livejournal.com - Date: 2009-08-18 07:09 am (UTC) - Expand

(no subject)

From: [identity profile] jan2ary.livejournal.com - Date: 2009-08-18 06:35 am (UTC) - Expand

(no subject)

Date: 2009-08-17 07:52 pm (UTC)
From: [identity profile] shmyg.livejournal.com
Ых, сколько денег народ распилил за тот проект, который вы переделывали. Некоторые даже свечные заводики в Самаре прикупили :)

(no subject)

Date: 2009-08-17 08:08 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Меня ж туда тоже под конец затащило (и потрепало).

Зато мои мучения на том проекте тут вернулись сторицей - все разложенные грабли были известны и т.п.

(no subject)

From: [identity profile] shmyg.livejournal.com - Date: 2009-08-17 08:30 pm (UTC) - Expand

(no subject)

Date: 2009-08-17 08:01 pm (UTC)
From: [identity profile] mou-ngaged.livejournal.com
много мун назад. Когда я еще писал большую корпоративную систему на ПХП и Оракле (это еще похлеще приведенного примера) эта ошибка нас приследовала очень долго. Притом она была только на тестовом стенде. В продакшене ее не было. Очень долго ковыряли. Наковыряли примерно следующее (для нашего случая): есть внутри этого ЧЯ какой-то магический таймер, и какая-то магическая операция. И вот если эа операция не успела отпахать за эти ничтожные мгновения - EOF. Победили переорганизацией и дефрагментацией тейблспейсов.

(no subject)

Date: 2009-08-17 08:13 pm (UTC)
From: [identity profile] xpahos.livejournal.com
Извините. А почему именно C# ?

(no subject)

Date: 2009-08-17 08:43 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Выбор был обусловлен тем, как я понимаю, на чем была написана система, с которой интегрировались.

Это смежники делали, и выбора особого не предлагали.

(no subject)

From: [identity profile] magicprinc.livejournal.com - Date: 2009-08-18 01:22 pm (UTC) - Expand

(no subject)

Date: 2009-08-17 08:51 pm (UTC)
From: [identity profile] gnuzzz.livejournal.com
по идее, должно было быть достаточно выполнять "select 1" перед использованием коннекта
а сам по себе валидировать коннект перед использованием пул не умеет?

(no subject)

Date: 2009-08-17 09:01 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Про пул - ничего не знаю, т.к. наша проблема была не в пуле. По крайней мере, его отключение нам не помогало.

А с простыми select-ами вроде бы тоже экспериментировали, но остановились на сложном. Подозреваю, что не просто так :)

О консерватории

Date: 2009-08-17 09:41 pm (UTC)
From: (Anonymous)
А стиль разработки, видимо, специально отражён в пресс-релизе ;)
-- cut --
2. Модернизация существующего оборудования, поставка оборудования: сканеров от ABBYY и серверов от IBM.
3. Постачання програмного забезпечення від компаній ABBYY, IBM і Galantis
4. Адаптация программного обеспечения компанией Galantis, а также миграция существующих данных.
-- end cut --

(no subject)

Date: 2009-08-17 10:01 pm (UTC)
From: [identity profile] amazi.livejournal.com
Не помню такого тендера на серверы:)

(no subject)

Date: 2009-08-18 06:39 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
А там был тендер на комплексное решение, afaik. Впрочем, наверняка я не знаю.

(no subject)

Date: 2009-08-18 01:06 am (UTC)
From: [identity profile] Микола (from livejournal.com)
Відмінна історія :-)
Просто навіть цікаво, що саме "нормалізує" цей перший селект і де саме.

(no subject)

Date: 2009-08-18 06:11 am (UTC)
From: [identity profile] m-a-m-o-n.livejournal.com
Не знаю как в .net, но в Java такая проблема считается в общем то
типичной. Рано или поздно соединение может поломаться,
для этого в connection-pool встраивают валидацию соедиения, - запросом.

http://commons.apache.org/dbcp/configuration.html
validationQuery=select 1; #наприммер такой запрос для MySQL
The SQL query that will be used to validate connections from this pool before returning them to the caller. If specified, this query MUST be an SQL SELECT statement that returns at least one row.

Соответственно если при запросе соединения из пула указанный запрос не сработает,
реальное соединение с базой будет переоткрыто.

(no subject)

Date: 2009-08-18 06:43 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Я уже жалею, что вообще про чужую проблему с pool в посте вспомнил.

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

(no subject)

From: [identity profile] m-a-m-o-n.livejournal.com - Date: 2009-08-18 06:48 am (UTC) - Expand

(no subject)

Date: 2009-08-18 07:01 am (UTC)
From: [identity profile] dewfy.livejournal.com
такая же фигня была на java с тем же конекшен пулом. В результате написале "барабан" который пингует сервер.

(no subject)

Date: 2009-08-18 07:24 am (UTC)
From: [identity profile] n0mad-0.livejournal.com
я вот когда-то стажером декомпилил оракловые дрова чтобы найти магическую последовательность, избавляющую от магического бага =)

(no subject)

Date: 2009-10-07 08:28 am (UTC)
From: [identity profile] realsonic.livejournal.com
Чем всё кончилось? )

(no subject)

Date: 2009-08-18 03:07 pm (UTC)
From: [identity profile] poige.livejournal.com
Это всё конечно прекрасно, но… МТС Image это компания с такой подмоченой репутацией, что ей ничто уже не поможет.

(no subject)

Date: 2009-08-19 02:56 am (UTC)
From: [identity profile] eye-ru.livejournal.com
Хороший детективчик в начале рабочего дня, возму на заметку, потому как работаю с Oracle и C# ;-))

(no subject)

Date: 2009-10-05 01:24 pm (UTC)
From: (Anonymous)
Имел "счастье" столкнутся с аналогичной ситуацией, только в связке Asp.Net + oracle, что в принципе почти то же, что и С# + oracle. Однако вместо ora-3113 падало полностью веб приложение. Долго пытались выяснить, что происходит. Я перерыл весь C# код. Пришла в голову мысль поменять провайдера с оракла на майкософт, после чего все заработало.

Profile

dastapov: (Default)
Dmitry Astapov

May 2022

M T W T F S S
       1
2345678
9101112131415
161718 19202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags