Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > работа с сессиями


Автор: jsa 1.12.2005, 12:36
Hi All!

возможно ли в оракле работать с сессиями клиентов: т.е. записывать в сессию какие либо переменные, типа как в апаче REQUEST_PROTOCOL и др.
вообще задача такая: есть уровень БД, уровень приложений, и уровень клиента, между приложением и клентом связь через веб, и своими средствами я могу аутентифицировать и авторизировать клиента, естественно что между приложение общается с БД по другому, и как бы получается что БД не знает ничего о клиенте (приложение ведь конектиться к БД под определенным пользователем), а хотелось бы при конекте передать сведения о клиенте в сессию БД, чтобы в последующем их обрабатывать (в триггере или в процедере), возможно ли такое в прицепе, интересует идиология, а может быть есть уже какие наработки


ЗЫЖ сервер Oracle 9i R2

Автор: LSD 1.12.2005, 14:32
Способов достаточно, можно например записывать нужные параметры в CONTEXT, можно использовать PACKAGE переменные, наконец можно использовать PROXY USER. Что в твоем случае лучше подходит сложно сказать, надо поподробнее знать задачу, как то: сколько всего будет пользователей, пользователи добавляются/удаляются динамичиски или DBA, сколько надо хранить параметров для сессии и откуда их надо будет в основном использовать (триггеры или ХП).

Автор: Guest 2.12.2005, 05:30
Цитата
записывать нужные параметры в CONTEXT, можно использовать PACKAGE переменные, наконец можно использовать PROXY USER

ну package переменные я еще представляю, а остальное, можно плз поподробнее или ссылку на доку

Цитата

сколько всего будет пользователей, пользователи добавляются/удаляются динамичиски или DBA

что имелось ввиду?

Цитата

сколько надо хранить параметров для сессии и откуда их надо будет в основном использовать (триггеры или ХП).


да хотябы один (табельный номер), и использовать нужно в тригерах

Автор: LSD 2.12.2005, 11:27
http://download-west.oracle.com/docs/cd/B14117_01/network.101/b10773/accessre.htm#DBSEG424, грубо говоря контекст это нечно вроде переменных окружения в ОС. Значения контекста можно использовать в триггерах, хранимых процедурах и вьюерах. Например:
Код
SELECT * FROM orders_tab WHERE custno = SYS_CONTEXT ('order_entry', 'cust_num')


Proxy User это пользователь который не соединяется с базой непосредственно а делает это через другого пользователя. Удобен тем что это полноценный пользователь БД и с ним можно использовать все возможности Oracle по безопасности.http://download-west.oracle.com/docs/cd/B14117_01/network.101/b10773/admnauth.htm#1006366.

Как я понял тебе надо идентифицировать сотрудников предприятия, и особых наворотов не требуется. Я думаю тебе будет достаточно контекста и package переменных.

Автор: jsa 6.12.2005, 09:26
2LSD: сенькс большое, буду копать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)