Dmitry Astapov (_adept_) wrote,
Dmitry Astapov
_adept_

Categories:

Он сказал: "поехали!"

Он - это пресс-релиз. На самом деле, там еще есть пару мелких углов, но вписывать прибавку к 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" и вычитать первый элемент рекордсета.

И все начинает работать без сучка и задоринки. Мораль придумайте сами.
Tags: баечки, работа
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 62 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →