DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Типы политик

Вероятно, наиболее важным усовершенствованием технологии RLS в Oracle 10 (в дополнение к имеющейся динамической политике) является поддержка новых типов политик, обеспечивающих повышение производительности.
Для начала давайте вспомним, чем статические политики отличаются от динамических. Если политика относится к динамическому типу, то функция политики выполняется для создания строки предиката каждый раз, когда политика предусматривает ограничение доступа к таблице. Использование динамической политики гарантирует «свежесть» предиката, но повторное выполнение функции политики приводит к дополнительным накладным расходам, которые могут быть весьма значительными. В большинстве случаев в повторном выполнении функции политики нет необходимости, так как предикат не изменяется в рамках сеанса (мы говорили об этом при обсуждении статических политик).
С точки зрения производительности лучше всего было бы создать функцию политики так, чтобы она выполнялась повторно при изменении какого-то определенного значения. Oracle 10 обеспечивает такую возможность: при изменении контекста приложения, от которого зависит программа, политика инициирует повторное выполнение функции; в противном случае функция повторно не вызывается. В последующих разделах мы поговорим о том, как это работает.
Как и в Oracle9i, в Oracle 10 вы можете установить параметр sta- tic_policy процедуры ADD_POLICY в значение TRUE (для выбора статической политики) или FALSE (для выбора динамической политики). Если данный параметр установлен в TRUE, то значение нового параметра Oracle 10g, policy_type, устанавливается в DBMS_RLS. STATIC. Если static_po- licy равен FALSE, то policy_type устанавливается в DBMS_RLS. DYNAMIC. По умолчанию static_policy принимает значение TRUE.
Выбор статической или динамической политики осуществляется так же, как и в Oracle9i, но Oracle 10^ поддерживает несколько дополнительных типов политик. Вы можете выбрать их, указав соответствующее значение для параметра policy_type процедуры ADD_POLICY. Приведем перечень новых значений параметра.
Контекстно-зависимая политика (context-sensitive)
DBMS_RLS.CONTEXT_SENSITIVE
Разделяемая контекстно-зависимая политика (shared context sensitive)
DBMS_RLS.SHARED_CONTEXT_SENSITIVE
Разделяемая статическая политика (shared static)
DBMS_RLS.SHARED_STATIC
Новые типы политики значительно улучшают производительность, но вносят некоторые побочные эффекты, присущие статическим политикам (о которых мы говорили выше).
 









jAntivirus