Страница 1 из 1

Время последней активности через OraSession

Добавлено: Вт 24 июл 2018 07:24
azam123
Добрый день, имеется ли возможность с помощью компонента OraSession определить время простоя соединения? (время в течение которого не было никаких обращений к серверу через эту сессию или время, когда было последнее обращение). Это нужно для того, чтобы отключать клиентов, которые длительное время не используют соединение через конкретный экземпляр OraSession.

Odac 9.4.12 (Embarcadero XE7)

Re: Время последней активности через OraSession

Добавлено: Ср 25 июл 2018 08:17
MaximG
Для реализации описываемого Вами поведения можно воспользоваться событием OnSQL компонента OraSQLMonitorSQL : https://www.devart.com/odac/docs/devart ... .onsql.htm . В обработчике данного события Вы можете реализовать определение времени отправки на сервер последнего SQL запроса

Re: Время последней активности через OraSession

Добавлено: Ср 25 июл 2018 10:08
azam123
Спасибо за ответ. Но как в этом случае быть с такой ситуацией:

1. Пользователь делает запрос в OraQuery, в котором свойство FetchRows = 25:

Код: Выделить всё

select * from table_with_100_millions_rows
2. На сервере открывается курсор, который, по мере прокрутки пользователем ползунка в DbGrid, возвращает по 25 записей.
3. SQL-монитор, с такими настройками, покажет лишь две записи:
  • Connect: user@server::sid [OraSession1$026C0030]
  • select * from table_with_100_millions_rows

Код: Выделить всё

 
 object OraSQLMonitor1: TOraSQLMonitor
    Options = [moDialog, moSQLMonitor, moDBMonitor, moCustom, moHandled]
    TraceFlags = [tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt, tfConnect, tfTransact, tfBlob, tfService, tfMisc, tfParams, tfObjDestroy, tfPool]
    OnSQL = OraSQLMonitor1SQL
    Left = 408
    Top = 8
  end
В этом случае, пользователь может просматривать содержимое выборки, обмен данными через OraSession будет идти, но в OraSQLMonitor'е я этого не увижу и посчитаю, что соединение простаивает. Есть ли возможность отслеживать и fetch-события с помощью OraSQLMonitor ?

P.S. Возможности использовать события OraQueryAfterFetch и OraQueryBeforeFetch у меня нет ввиду архитектурных особенностей приложения.

Re: Время последней активности через OraSession

Добавлено: Пт 27 июл 2018 15:34
MaximG
В настоящее время мы можем предложить Вам только описываемый выше способ отслеживания активности соединения с помощью наших компонент. В том случае, если Вы являетесь обладателем лицензии Professional Edition with source code, Вы можете попробовать реализовать описываемую возможность самостоятельно. В этом случае мы сможем предоставить Вам информацию о том, где и как именно Вам будет удобнее внести необходимые изменения в исходный код нашего продукта.