|
sys_context
|
|||
---|---|---|---|
#18+
Как установить sys_context в apex'e так, чтобы он не слетал при обновлении страницы? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2010, 11:17 |
|
sys_context
|
|||
---|---|---|---|
#18+
PITMOV, по-хорошему - никак. Сессии БД у APEX существуют на протяжении отображения или обработки страницы. Пользовательский не глобальный контекст существует на протяжении сессии БД. В APEX для подобного стоит использовать переменные страницы, переменные приложения и настройки пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2010, 13:02 |
|
sys_context
|
|||
---|---|---|---|
#18+
suPPLerPITMOV, по-хорошему - никак. Сессии БД у APEX существуют на протяжении отображения или обработки страницы. Пользовательский не глобальный контекст существует на протяжении сессии БД. В APEX для подобного стоит использовать переменные страницы, переменные приложения и настройки пользователя. а вот и неправда! идём Shared Components -> Edit Security Attributes в самом низу находим следующее: "Virtual Private Database (VPD)" вот туда и пишем процедуру или код, устанавливающий контексты. сам этим пользуюсь работает отлично. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 15:41 |
|
sys_context
|
|||
---|---|---|---|
#18+
не удержался..., Для каких задач это может быть использовано, не просвятите? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 16:11 |
|
sys_context
|
|||
---|---|---|---|
#18+
Drunvaloне удержался..., Для каких задач это может быть использовано, не просвятите? там, где нужен или используется VPD почитайте, что такое VPD , и Вам всё станет ясно ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2010, 16:27 |
|
sys_context
|
|||
---|---|---|---|
#18+
Ооооооотлично. Спасибо, не удержался, sys_context мне очень нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2010, 11:05 |
|
sys_context
|
|||
---|---|---|---|
#18+
Посидел подумал, все-таки SuPPler прав, по нормальному никак. VPD все же это опция EE. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2010, 11:35 |
|
sys_context
|
|||
---|---|---|---|
#18+
PITMOVПосидел подумал, все-таки SuPPler прав, по нормальному никак. VPD все же это опция EE. но это не значит, что sys_context использовать нельзя. или я не прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2010, 12:56 |
|
sys_context
|
|||
---|---|---|---|
#18+
sys_context использовать можно, здесь вы полностью правы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2010, 16:13 |
|
sys_context
|
|||
---|---|---|---|
#18+
не удержался..., сорри за поздний ответ. Да, это именно то, что я назвал "по-хорошему - никак". Потому что PL/SQL-блок, который указывается в Application 110->Shared Components->Edit Security Attributes->Virtual Private Database (VPD), выполняется для каждой страницы. IMHO, в итоге ресурсов на постоянное выполнение этого блока тратится больше, чем на обращение к функции V('ITEM_NAME'). Я проводил грубые тесты: одна небольшая таблица (12 МБ, 100К строк), две вьюхи на неё, одна из них в качестве фильтра использует контекст, вторая - V('ITEM_NAME'). Одно приложение с отчётами по этим вьюхам. Для пяти сессий по 1000 обращений в каждой использование вьюхи с V('ITEM_NAME') было более быстрым, чем установка контекста и использование вьюхи с ним - быстрее процентов на 17-18. На большой нагрузке (например, от 100 сессий) не тестировал, нужно разбираться с каким-нибудь бесплатным генератором тестовой нагрузки типа JMeter. Если куплена фича VPD, и она уже используется в БД, то APEX даёт лёгкий способ использовать эту фичу, устанавливая необходимый контекст. Для остальных случаев я бы постарался избежать использования этого способа: меньше лишнего PL/SQL выполняется на странице - быстрее время отклика. Я знаю, что это банально, но это работает. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2010, 00:51 |
|
sys_context
|
|||
---|---|---|---|
#18+
suPPLerЕсли куплена фича VPD, и она уже используется в БД, то APEX даёт лёгкий способ использовать эту фичу, устанавливая необходимый контекст. Для остальных случаев я бы постарался избежать использования этого способа: меньше лишнего PL/SQL выполняется на странице - быстрее время отклика. Я знаю, что это банально, но это работает. :) Насчет APEX и VPD. Правильно ли я понял все. 1. Создаем функцию, которая в зависимости от пользователя, будет возвращать необходимые значения. Например - get_criteria(APP_USER, 'COUNTRY'). Функция возвращает строку 'ru', 'uk', 'us' 2. В APEX в VPD добавляем установку контекста. set_context('context_prc', 'COUNTRY', get_criteria(APP_USER, 'COUNTRY')) 3. Создаем функцию F_COUNTRY_POLICY где возвращаем 1=1 или COUNTRY in (get context) 4. Создаем policy с помощью dbms_rls.add_policy и указываем фунцкию F_COUNTRY_POLICY. Я все правильно понимаю, или чего то нехватает, а может быть лишнее.... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2010, 18:43 |
|
sys_context
|
|||
---|---|---|---|
#18+
suPPLerангликот, Вам стоит почитать ссылки в этом посте: 9517461 . перед тем как писать, я их прочитал ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 12:30 |
|
sys_context
|
|||
---|---|---|---|
#18+
в общем разобрался только одного не понял, нафига в настройках приложения есть VPD texarea. Как это может быть применимо? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 14:12 |
|
sys_context
|
|||
---|---|---|---|
#18+
англикотнафига в настройках приложения есть VPD texarea. Как это может быть применимо? Если у нас уже используется VPD в других проектах, то можно выставлять соответствующие контексты в этом блоке, он будет выполняться при каждом создании страницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 18:45 |
|
sys_context
|
|||
---|---|---|---|
#18+
suPPLerЕсли у нас уже используется VPD в других проектах, то можно выставлять соответствующие контексты в этом блоке, он будет выполняться при каждом создании страницы. ок, тоесть потом внутри VPD функции дергается контектс этот. интересно ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 19:48 |
|
sys_context
|
|||
---|---|---|---|
#18+
suPPLerЕсли куплена фича VPD, и она уже используется в БД, то APEX даёт лёгкий способ использовать эту фичу, устанавливая необходимый контекст. Для остальных случаев я бы постарался избежать использования этого способа: меньше лишнего PL/SQL выполняется на странице - быстрее время отклика. Я знаю, что это банально, но это работает. :) при количестве около 2000 активных юзеров sys_context не доставляет никаких проблем и вообще не влияет на время отклика. и это не банально - это реальная практика. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 21:35 |
|
sys_context
|
|||
---|---|---|---|
#18+
не удержался..., дело не в SYS_CONTEXT (отклик действительно быстрый). Дело в выполнении PL/SQL-кода, указанного в блоке VPD. Он выполняется при каждой обработке и отрисовке страницы. Зачем? Для заново создаваемой VPD можно: - создать глобальный пользовательский контекст; - добавить установку соответствующих значений в этом контексте в виде процесса, выполняющегося один раз - при аутентификации пользователя; - устанавливать и читать значения, используя :APP_USER||':'||:SESSION в качестве CLIENT_IDENTIFIER. Для старой, уже использующейся в других системах VPD, заточенной под LOGIN, USER и т.п., переделка под глобальный пользовательский контекст может повлечь слишком большие ресурсы. Поэтому APEX даёт возможность использовать эту VPD без переделок, устанавливая контексты в блоке VPD. И этот блок выполняется каждый раз , когда страница обрабатывается или возвращается. Ещё раз, кратко: дело не в чтении, дело в лишних выполнениях блока PL/SQL-кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 22:16 |
|
sys_context
|
|||
---|---|---|---|
#18+
Ну и поскольку APEX у нас всё-таки "multitiered environment with accessing the databases through connection pools", то небольшой совет из доки: http://download.oracle.com/docs/cd/B19306_01/network.102/b14266/apdvpoli.htm#i1008538 About Virtual Private Database, Fine-Grained Access Control, and Application Context Virtual Private Database (VPD) combines server-enforced fine-grained access control with a secure storage of application context values in the Oracle database server. VPD enables you to build applications that enforce row-level security policies at the object level. Policy execution dynamically appends predicates (WHERE clauses) to any SQL statements that query data you have identified as requiring protection. The application context feature enables application developers to define, set, and access variable-length application attributes and their values. These attributes can then be used as predicate values for fine-grained access control policies. Two types of application contexts exist: Local (session-based) application context, stored in the UGA and invoked each time an application user connects to the database Global application context (non-session-based), stored in the SGA and used for multitiered environment users accessing databases through connection pools. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2010, 22:25 |
|
sys_context
|
|||
---|---|---|---|
#18+
suPPLerЕщё раз, кратко: дело не в чтении, дело в лишних выполнениях блока PL/SQL-кода. если Вы уж так радеете за лишние выполнения PL/SQL кода, тогда Вам апекс не подойдёт :) не мне Вам рассказывать сколько он (апекс) выполняет PL/SQL болоков во время генерации страницы, да ещё и анонимных.. тогда уж Вам нужен ещё один уровень - уровень серверов приложений, потому как ну не должен сервер БД заниматься генерацией визуального контента. представляете, на сколько тогда уменшится количество лишних выполнений блоков PL/SQL-кода? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2010, 09:27 |
|
sys_context
|
|||
---|---|---|---|
#18+
не удержался...suPPLerЕщё раз, кратко: дело не в чтении, дело в лишних выполнениях блока PL/SQL-кода. если Вы уж так радеете за лишние выполнения PL/SQL кода Да, радею. Зачем делать лишнее там, где его можно не делать? Я говорю не о смене инструмента, а об соответствующем с ним обращении. Возможно, у меня и у Вас просто разная философия разработки. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2010, 21:14 |
|
|
start [/forum/topic.php?fid=50&fpage=75&tid=1876709]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 161ms |
0 / 0 |