Доброго времени суток.
Помогите пожалуйста разобраться в проблеме.
Создается Oracle-соединение (TMyConnection = class(TUniConnection) с переопределенным методом DoError).
Для соединения устанавливаются SpecificOptions:
'Oracle.Direct=True'
'Oracle.Schema=' + <Schema>
Также у соединения Options.LocalFailover := True;
В методе OnConnectionLost устанавливается RetryMode := rmReconnect;
После установления соединения все отлично, все работает.
При разрыве связи начинают сыпаться ошибки ORA-03113 end-of-file on communication channel, как я понимаю, на уровне самого компонента. Далее происходит Reconnect. Но соединение при этом работать нормально уже не хочет. Своих параметров соединение не видит – схема теряется напрочь, хоть она и присутствует в SpecificOptions. Пересоздание SpecificOptions также не помогает. При ошибке выполнения запроса – если без явного указания схемы, снова срабатывает обработчик OnConnectionLost, а затем вылетает ORA-20000: ORU-10015: error:3 waiting for pipe message. Соединение невозможно нормально перевести в состояние Connected = False, а потом включить в True – постоянные ошибки.
Т.е. соединение, вроде как, переподключилось, “select 1 from dual” выполняет, но оно теперь какое-то неполноценное. Подозреваю, что при reconnect’е Oracle присваивает уже другой id сессии – отсюда и проблемы.
Подскажите пожалуйста, как лечить. Мне нужно просто сделать «тихий» reconnect, чтобы пользователь ничего не заподозрил – по мере сил. Или же вывести сообщение, что, мол, обрыв – перезапускайте программу.
СУБД и используемые средства разработки: Oracle 11g (11.2.01), Delphi XE, UniDAC v4.5.10.
Проблема с Reconnect'ом Oracle-соединения
Re: Проблема с Reconnect'ом Oracle-соединения
Добрый день,
На последней версии UniDAC 6.1.3 описываемая ситуация не воспроизводится. Попробуйте воспроизвести ситуацию на последней триальной версии http://www.devart.com/unidac/download.html .
P.S. Чтобы происходил «тихий» reconnect в событии onError необходимо установить значения параметра Fail в False.
На последней версии UniDAC 6.1.3 описываемая ситуация не воспроизводится. Попробуйте воспроизвести ситуацию на последней триальной версии http://www.devart.com/unidac/download.html .
P.S. Чтобы происходил «тихий» reconnect в событии onError необходимо установить значения параметра Fail в False.
-
- Сообщения: 3
- Зарегистрирован: Чт 05 фев 2015 12:44
Re: Проблема с Reconnect'ом Oracle-соединения
Здравствуйте.Alexp писал(а):На последней версии UniDAC 6.1.3 описываемая ситуация не воспроизводится. Попробуйте воспроизвести ситуацию на последней триальной версии http://www.devart.com/unidac/download.html .
Скажите пожалуйста, как попробовать новую версию, если триальность уже истекла, а у нас установлена предыдущая версия компонентов, а перед покупкой новой хотелось бы убедиться в том что проблема уже решена?