Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Connection recovery в FireDAC с Oracle / 14 сообщений из 14, страница 1 из 1
03.09.2014, 01:44
    #38735590
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
Есть старый проект на Delphi 7 + FireDAC 7.0.1, база - Oracle 10.2.0.5. В приложении активно используются контексты (в смысле, dbms_session.set_context / sys_context), которые устанавливаются pl/sql-процедурой при запуске. После connection recover эти контексты, естественно, слетают и их надо восстанавливать. И вот тут возникла засада - как только в TADConnection.OnRestored я прописываю выполнение pl/sql-процедуры (не важно, какой), после восстановления коннекта возникают AV.

Может я что-то неправильно делаю, и действия по инициализации сеанса с БД надо не в OnRestored, а куда-то еще поместить? Что скажете?
...
Рейтинг: 0 / 0
03.09.2014, 11:45
    #38735952
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
Никто не пользуется connection recovery в FireDAC?..
...
Рейтинг: 0 / 0
03.09.2014, 11:50
    #38735969
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
A.K.Что скажете?что грустно оказаться в ловушке "устаревшей" версии продукта к-я более не поддерживается
...
Рейтинг: 0 / 0
03.09.2014, 12:43
    #38736071
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
A.K.Есть старый проект на Delphi 7 + FireDAC 7.0.1???? FireDAC поддерживает Delphi 7?
...
Рейтинг: 0 / 0
03.09.2014, 12:56
    #38736086
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
_Vasilisk_FireDAC поддерживает Delphi 7?поддерживал вероятно вплоть до версии 9.0.1.63974
...
Рейтинг: 0 / 0
03.09.2014, 13:38
    #38736142
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
_Vasilisk_???? FireDAC поддерживает Delphi 7?
Судя по пэкеджам в составе, поддерживает начиная с Delphi 5.
...
Рейтинг: 0 / 0
03.09.2014, 14:55
    #38736272
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
A.K._Vasilisk_???? FireDAC поддерживает Delphi 7?
Судя по пэкеджам в составе, поддерживает начиная с Delphi 5.
Могу предположить, что если версия Oracle вышла после того как вышли компоненты, то могут быть неизвестные проблемы.
Например в ADO и MSSQL 2012 не поддерживаются некоторые новые типы даже с нативным драйвером из-за самописного кода ADO.
16490191
...
Рейтинг: 0 / 0
03.09.2014, 15:50
    #38736435
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
X-Citeесли версия Oracle вышла после того как вышли компонентытому ораклу сто лет в обед, а FD седьмой был от прошлого года
...
Рейтинг: 0 / 0
03.09.2014, 19:37
    #38736778
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
Мигрировал на FireDAC 8.0.5, создал тестовый проект с одной формой, кнопкой и гридом. Все то же самое - при запуске из IDE в случае реконнекта к БД валится на строчке:
Код: pascal
1.
2.
3.
4.
function TADPhysConnection.GetTracing: Boolean;
begin
  Result := FTracing and (FMonitor <> nil) and FMonitor.Tracing;
end;



При запуске не из-под IDE выдает AV иногда сразу после реконнекта, но чаще при закрытии приложения. Продолжаю исследования...
...
Рейтинг: 0 / 0
03.09.2014, 19:41
    #38736780
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
A.K.Мигрировал на FireDAC 8.0.5, создал тестовый проект с одной формой, кнопкой и гридом. Все то же самое - при запуске из IDE в случае реконнекта к БД валится на строчке:
Код: pascal
1.
2.
3.
4.
function TADPhysConnection.GetTracing: Boolean;
begin
  Result := FTracing and (FMonitor <> nil) and FMonitor.Tracing;
end;



При запуске не из-под IDE выдает AV иногда сразу после реконнекта, но чаще при закрытии приложения. Продолжаю исследования...

Стек вызовов посмотри, и пройдись по нему. Вполне возможно, что у тебя не создан экземпляр
...
Рейтинг: 0 / 0
03.09.2014, 20:05
    #38736794
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
defecatorСтек вызовов посмотри, и пройдись по нему. Вполне возможно, что у тебя не создан экземпляр
Хороший совет. Только тут ни одной строчки моего кода нет:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
TADPhysConnection.GetTracing
TADPhysCommand.EnterTrace(???)
TADPhysCommand.Prepare('',True)
TADPhysConnection.RecoverConnection(Pointer($CAE5FBC) as IADStanObject,False)
TADPhysCommand.OpenBase
TADPhysCommandAsyncOpen.Execute
TADStanAsyncExecutor.ExecuteOperation(False)
TADStanAsyncExecutor.Run
TADPhysCommand.ExecuteTask(???,TADCustomCommand($6678954) as IADPhysCommandStateHandler,True)
TADPhysCommand.Open(True)
TADPhysCommand.OpenBlocked
TADPhysOracleCommand.InternalColInfoStart(('', -1, ''))
TADPhysCommand.DoDefineDataTable($6678670,nil,-1,'',mmOverride)
TADPhysCommand.Define($6678670,nil,mmOverride)
TADDAptTableAdapter.Define
TADCustomTableAdapter.Define
TADAdaptedDataSet.DoDefineDatSManager
TADDataSet.CheckTable
TADDataSet.OpenCursor(False)
TADRdbmsDataSet.OpenCursor(False)
TADDataSet.SetActive(???)
Project1
...
Рейтинг: 0 / 0
03.09.2014, 21:03
    #38736820
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
Вроде бы нашел решение проблемы. Если в TADConnection.OnRestored вызывать хранимую процедуру не через ADStoredProc, а через TADConnection.ExecSQL, то ошибка не возникает.

Если через ADStoredProc - то стабильно возникает, причем на втором вызове OnRestored, первый проходит нормально. Содержимое процедуры, наличие в ней параметров значения не имеет. AV при этом происходит вроде бы не в ADStoredProc, а в дебрях того датасета, при активизации которого был обнаружен обрыв соединения.
...
Рейтинг: 0 / 0
04.09.2014, 03:29
    #38736972
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
Грабли с connection recovery продолжаются. Все отлично, пока в приложении нет TADEventAlerter. Стоит его добавить, даже с отдельным TADConnection - после обрыва и восстановления соединения приложение перестает нормально закрываться: процесс подвисает в памяти после закрытия главного окна.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
14.12.2018, 16:00
    #39748006
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection recovery в FireDAC с Oracle
вперся в ситуации когда перед выполнением хранимки сохранял указатели на параметры, а после восстановления соединения они указывали уже ммм... не туда. причем и не в космос а на соседний параметр
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Connection recovery в FireDAC с Oracle / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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