Bsp ослабляет правила и положения форекс 1

5 правил.

Следующие темы содержат информацию о правилах.

Компоненты правила.

Правило — это объект базы данных, который позволяет клиенту выполнять действие, когда происходит событие и выполняется условие. Правило состоит из следующих компонентов:

Каждое правило указывается как условие, подобное условию в предложении WHERE запроса SQL. Вы можете сгруппировать связанные правила в наборы правил. Одно правило может быть в одном наборе правил, в нескольких наборах правил или без наборов правил..

Наборы правил оцениваются механизмом правил, который является встроенной частью Oracle. И приложения, созданные пользователями, и функции Oracle, такие как Oracle Streams, могут быть клиентами механизма правил..

Правило должно быть в наборе правил, чтобы его можно было оценить..

Условие правила.

Условие правила объединяет одно или несколько выражений и условий и возвращает логическое значение, которое является значением TRUE, FALSE или NULL (неизвестно). Выражение — это комбинация одного или нескольких значений и операторов, вычисляющих значение. Значение может быть данными в таблице, данными в переменных или данными, возвращаемыми функцией SQL или функцией PL / SQL. Например, следующее выражение включает только одно значение:

Следующее выражение включает два значения (зарплата и .1) и оператор (*):

Следующее условие состоит из двух выражений (зарплата и 3800) и условия (=):

Это логическое условие оценивается как ИСТИНА для данной строки, когда столбец зарплаты равен 3800. Здесь значение — это данные в столбце зарплаты таблицы..

Одно условие правила может включать более одного условия в сочетании с логическими условиями И, ИЛИ и НЕ для формирования составного условия. Логическое условие объединяет результаты двух составляющих условий для получения на их основе одного результата или для инвертирования результата одного условия. Например, рассмотрим следующее сложное условие:

Это условие правила содержит два условия, соединенных логическим условием ИЛИ. Если любое из условий оценивается как ИСТИНА, то условие правила оценивается как ИСТИНА. Если логическим условием было И вместо ИЛИ, то оба условия должны оцениваться как ИСТИНА, чтобы все условие правила оценивалось как ИСТИНА. .

Переменные в условиях правила.

Условия правила могут содержать переменные. Когда вы используете переменные в условиях правила, перед каждой переменной ставьте двоеточие (:). Ниже приведен пример переменной, используемой в условии правила:

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

Условие правила также может содержать оценку вызова подпрограммы. Такое состояние оценивается так же, как и другие состояния. То есть он принимает значение ИСТИНА, ЛОЖЬ или ПУСТО (неизвестно). Ниже приведен пример условия, которое содержит вызов простой функции с именем is_manager, которая определяет, является ли сотрудник менеджером:

Здесь значение employee_id определяется данными в таблице, где employee_id — столбец..

Для переменных можно использовать определяемые пользователем типы. Следовательно, переменные могут иметь атрибуты. Когда переменная имеет атрибуты, каждый атрибут содержит частичные данные для переменной. В условиях правила вы указываете атрибуты, используя точечную нотацию. Например, следующее условие оценивается как ИСТИНА, если значение атрибута z в переменной y равно 9:

Правило не может иметь NULL (или пустого) условия правила.

Справочник по языку Oracle Database SQL для получения дополнительной информации об условиях, выражениях и операторах..

Условия простого правила.

Условие простого правила — это условие, которое имеет одну из следующих форм:

константа условия simple_rule_expression.

постоянное условие simple_rule_expression.

постоянное состояние константа.

Выражения простых правил.

В условии простого правила simple_rule_expression может быть одним из следующих:

Результат метода, когда метод либо не принимает аргументов, либо принимает постоянные аргументы, а результат метода может быть возвращен функцией метода переменной, так что выражение является одним из типов данных, поддерживаемых для простых правил. К таким методам относятся подпрограммы членов LCR, которые соответствуют этим требованиям, например GET_TAG, GET_VALUE, GET_COMPATIBLE, GET_EXTRA_ATTRIBUTE и т. Д..

Для столбцов таблицы, переменных, атрибутов переменных и результатов метода в простых условиях правила могут использоваться следующие типы данных:

ВРЕМЯ С ЧАСОВЫМ ПОЯСОМ.

TIMESTAMP С МЕСТНЫМ ЧАСОВЫМ ПОЯСОМ.

Использование других типов данных в выражениях приводит к непростым условиям правил.

Условия.

В условии простого правила условие может быть одним из следующих:

Использование других условий приводит к непростым условиям правила.

Константы.

Константа — это фиксированное значение. Константа может быть:

Число, например 12 или 5,4..

Символ, например x или $

Строка символов, например "это строка"

Примеры условий простых правил.

Следующие условия являются простыми условиями правила, предполагая, что типы данных, используемые в выражениях, поддерживаются в простых условиях правила:

: adt_var.ts_attribute >= to_timestamp (’04 -01-2004, 14:20:17 PST ‘,’ mm-dd-yyyy, hh24: mi: ss TZR ‘)

Правила с простыми условиями правила называются простыми правилами. Вы можете комбинировать два или более простых условия с логическими условиями И и ИЛИ для правила, при этом правило остается простым. Например, правила со следующими условиями являются простыми правилами:

tab1.col = 5 И: v1 > ‘ааа’

tab1.col = 5 ИЛИ: v1 > ‘ааа’

Однако использование логического условия НЕ в условии правила делает правило непростым..

Преимущества простых правил.

Простые правила важны по следующим причинам:

Простые правила индексируются внутренним механизмом правил..

Простые правила можно оценить без выполнения SQL.

Простые правила можно оценить с частичными данными.

Когда клиент использует процедуру DBMS_RULE.EVALUATE для оценки события, клиент может указать, что должны оцениваться только простые правила, указав TRUE для параметра simple_rules_only..

Справочник по языку Oracle Database SQL для получения дополнительной информации об условиях и логических условиях.

Справочник по пакетам и типам Oracle Database PL / SQL для получения дополнительной информации о типах LCR и их подпрограммах-членах..

Контекст оценки правила.

Контекст оценки — это объект базы данных, который определяет внешние данные, на которые можно ссылаться в условиях правила. Внешние данные могут существовать как переменные, табличные данные или и то, и другое. Следующая аналогия может быть полезной: если бы условием правила было предложение WHERE в запросе SQL, то внешними данными в контексте оценки были бы таблицы и связывающие переменные, на которые есть ссылка в предложении FROM запроса. То есть выражение s в условии правила должно ссылаться на таблицы, псевдонимы таблиц и переменные в контексте оценки, чтобы сделать предложение WHERE допустимым..

Контекст оценки правила предоставляет необходимую информацию для интерпретации и оценки условий правила, которые ссылаются на внешние данные. Например, если правило ссылается на переменную, то информация в контексте оценки правила должна содержать тип переменной. Или, если правило относится к псевдониму таблицы, тогда информация в контексте оценки должна определять псевдоним таблицы..

Объекты, на которые ссылается правило, определяются связанным с ним контекстом оценки правила. Владелец правила должен иметь необходимые привилегии для доступа к этим объектам, такие как привилегия SELECT для таблиц, привилегия EXECUTE для типов и т. Д. Условие правила разрешается в схеме, которой принадлежит контекст оценки..

Например, рассмотрим контекст оценки правила с именем hr_evaluation_context, который содержит следующую информацию:

Псевдоним таблицы dep соответствует таблице hr.departments.

Переменные loc_id1 и loc_id2 имеют тип NUMBER. .

Контекст оценки правила hr_evaluation_context предоставляет необходимую информацию для оценки следующего условия правила:

В этом случае условие правила оценивается как ИСТИНА для строки в таблице hr.departments, если эта строка имеет значение в столбце location_id, которое соответствует любому из значений, переданных переменными loc_id1 или loc_id2. Правило не может быть интерпретировано или оценено должным образом без информации в контексте оценки правила hr_evaluation_context. Также обратите внимание, что точечная нотация используется для указания столбца location_id в псевдониме таблицы dep..

Представления не поддерживаются в качестве базовых таблиц в контекстах оценки.

Явные и неявные переменные.

Значение переменной, на которую имеется ссылка в условии правила, может быть явно указано при оценке правила, или значение переменной может быть неявно доступно для данного события..

Явные переменные предоставляются вызывающей стороной во время оценки. Эти значения указываются параметром variable_values ​​при запуске процедуры DBMS_RULE.EVALUATE..

Неявным переменным не присваивается значение, предоставленное вызывающей стороной во время оценки. Значение неявной переменной получается путем вызова функции значения переменной. Вы определяете эту функцию, когда указываете список variable_types во время создания контекста оценки с помощью процедуры CREATE_EVALUATION_CONTEXT в пакете DBMS_RULE_ADM. Если значение для неявной переменной указано во время оценки, то указанное значение переопределяет значение, возвращаемое функцией значения переменной..

В частности, список переменных_типов имеет тип SYS.RE $ VARIABLE_TYPE_LIST, который представляет собой список переменных типа SYS.RE $ VARIABLE_TYPE. В каждом экземпляре SYS.RE $ VARIABLE_TYPE в списке функция, используемая для определения значения неявной переменной, указывается как атрибут variable_value_function.

Явные или неявные переменные — выбор разработчика приложения, использующего механизм правил. Ниже приведены причины использования неявной переменной:

Вызывающему процедуру DBMS_RULE.EVALUATE не нужно ничего знать о переменной, что может снизить сложность приложения, использующего механизм правил. Например, переменная может вызывать функцию, которая возвращает значение на основе оцениваемых данных..

У вызывающего может не быть привилегий EXECUTE для функции значения переменной..

Вызывающий процедуру DBMS_RULE.EVALUATE не знает значение переменной на основе события, что может повысить безопасность, если значение переменной содержит конфиденциальную информацию..

Переменная будет использоваться нечасто, и значение переменной всегда можно получить при необходимости. Создание таких переменных неявным образом означает, что вызывающей стороне процедуры DBMS_RULE.EVALUATE не нужно указывать много необычных переменных..

Например, в следующем условии правила значения переменной x и переменной y могут быть указаны явно, но значение переменной max можно вернуть, запустив функцию max:

В качестве альтернативы переменные x и y могут быть неявными переменными, а переменная max может быть явной переменной. Таким образом, нет синтаксической разницы между явными и неявными переменными в условии правила. Вы можете определить, является ли переменная явной или неявной, запросив представление словаря данных DBA_EVALUATION_CONTEXT_VARS. Для явных переменных поле VARIABLE_VALUE_FUNCTION имеет значение NULL. Для неявных переменных это поле содержит имя функции, вызываемой неявной переменной..

Справочник по пакетам и типам Oracle Database PL / SQL для получения дополнительной информации о пакетах DBMS_RULE и DBMS_RULE_ADM, а также для получения дополнительной информации о типах правил, предоставляемых Oracle..

Справочник по базе данных Oracle для получения дополнительной информации о представлении словаря данных DBA_EVALUATION_CONTEXT_VARS.

Связь контекста оценки с наборами правил и правилами.

Для оценки каждое правило должно быть связано с контекстом оценки или должно быть частью набора правил, связанного с контекстом оценки. Один контекст оценки может быть связан с несколькими правилами или наборами правил. В следующем списке описывается, какой контекст оценки используется при оценке правила:

Если контекст оценки связан с правилом, то он используется для правила всякий раз, когда правило оценивается, и любой контекст оценки, связанный с оцениваемым набором правил, игнорируется..

Если у правила нет контекста оценки, но контекст оценки был указан для правила, когда оно было добавлено в набор правил с помощью процедуры ADD_RULE в пакете DBMS_RULE_ADM, то контекст оценки, указанный в процедуре ADD_RULE, используется для правила. когда набор правил оценивается.

Если с правилом не связан контекст оценки правила и ни один не был указан процедурой ADD_RULE, то контекст оценки набора правил используется для правила при оценке набора правил..

Если у правила нет контекста оценки, и вы пытаетесь добавить его в набор правил, не имеющий контекста оценки, возникает ошибка, если вы не укажете контекст оценки при запуске процедуры ADD_RULE..

Функция оценки.

У вас есть возможность создать функцию оценки, которая будет запускаться с контекстом оценки правила. Вы можете использовать функцию оценки по следующим причинам:

Вы хотите обойти механизм правил и вместо этого оценивать события с помощью функции оценки.

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

Вы связываете функцию с контекстом оценки правила, указывая имя функции для параметра rating_function при создании контекста оценки правила с помощью процедуры CREATE_EVALUATION_CONTEXT в пакете DBMS_RULE_ADM. Механизм правил вызывает функцию оценки во время оценки любого набора правил, который использует контекст оценки..

Процедура DBMS_RULE.EVALUATE перегружена. Функция должна иметь каждый параметр в одной из процедур DBMS_RULE.EVALUATE, и тип каждого параметра должен быть таким же, как тип соответствующего параметра в процедуре DBMS_RULE.EVALUATE, но имена параметров могут быть разными..

Функция оценки имеет следующие возвращаемые значения:

DBMS_RULE_ADM.EVALUATION_SUCCESS: указанная пользователем функция оценки успешно завершила оценку набора правил. Механизм правил возвращает результаты оценки, полученные функцией оценки, клиенту механизма правил с помощью процедуры DBMS_RULE.EVALUATE..

DBMS_RULE_ADM.EVALUATION_CONTINUE: Механизм правил оценивает набор правил, как если бы функции оценки не было. Функция оценки не используется, и любые результаты, возвращаемые функцией оценки, игнорируются..

DBMS_RULE_ADM.EVALUATION_FAILURE: сбой функции оценки, указанной пользователем. Оценка набора правил останавливается, и возникает ошибка.

Если вы всегда хотите обойти механизм правил, функция оценки должна возвращать либо EVALUATION_SUCCESS, либо EVALUATION_FAILURE. Однако, если вы хотите отфильтровать события, чтобы некоторые события оценивались функцией оценки, а другие события оценивались механизмом правил, тогда функция оценки может возвращать все три возвращаемых значения, и она возвращает EVALUATION_CONTINUE, когда следует использовать механизм правил. для оценки.

Если вы указываете функцию оценки для контекста оценки, тогда функция оценки запускается во время оценки, когда контекст оценки используется набором правил или правилом..

Справочник по пакетам и типам Oracle Database PL / SQL для получения дополнительной информации о функции оценки, указанной в процедуре DBMS_RULE_ADM.CREATE_EVALUATION_CONTEXT, и для получения дополнительной информации о перегруженной процедуре DBMS_RULE.EVALUATE.

Контекст действия правила.

Контекст действия содержит дополнительную информацию, связанную с правилом, которое интерпретируется клиентом механизма правил, когда правило оценивается для события. Клиент механизма правил может быть приложением, созданным пользователем, или внутренней функцией Oracle, например Oracle Streams. У каждого правила есть только один контекст действия. Информация в контексте действия имеет тип SYS.RE $ NV_LIST, который представляет собой тип, содержащий массив пар имя-значение..

Информация о контексте действия правила предоставляет контекст для действия, предпринимаемого клиентом механизма правил, когда правило оценивается как ИСТИНА или МОЖЕТ БЫТЬ. Механизм правил не интерпретирует контекст действия. Вместо этого он возвращает контекст действия, и клиент механизма правил может интерпретировать информацию контекста действия..

Например, предположим, что событие определяется как добавление нового сотрудника в компанию. Если информация о сотрудниках хранится в таблице hr.employees, то событие происходит всякий раз, когда в эту таблицу вставляется строка. Компания хочет указать, что при добавлении нового сотрудника выполняется ряд действий, но эти действия зависят от того, к какому отделу присоединяется сотрудник. Одним из таких действий является регистрация сотрудника на курс, относящийся к отделу..

В этом сценарии компания может создать правило для каждого отдела с соответствующим контекстом действия. Здесь контекст действия, возвращаемый, когда правило оценивается как ИСТИНА, указывает номер курса, который должен пройти сотрудник. Вот части условий правила и контексты действий для трех отделов:

Имя правила Часть пары имя-значение контекста условия действия rule_dep_10 Department_id = 10 course_number, 1057 rule_dep_20 Department_id = 20 course_number, 1215 rule_dep_30 Department_id = 30 NULL.

Эти контексты действий возвращают клиентскому приложению следующие инструкции:

Контекст действия для правила rule_dep_10 предписывает клиентскому приложению записать нового сотрудника на курс номер 1057. .

Контекст действия для правила rule_dep_20 предписывает клиентскому приложению записать нового сотрудника на курс номер 1215. .

Контекст действия NULL для правила rule_dep_30 указывает клиентскому приложению не регистрировать нового сотрудника ни в каком курсе.

Каждый контекст действия может содержать ноль или более пар имя-значение. Если контекст действия содержит более одной пары имя-значение, то каждое имя в списке должно быть уникальным. В этом примере клиентское приложение, которому механизм правил возвращает контекст действия, регистрирует нового сотрудника в курсе с возвращенным номером курса. Клиентское приложение не регистрирует сотрудника для курса, если возвращается НУЛЕВОЙ контекст действия или если контекст действия не содержит номера курса..

Если несколько клиентов используют одно и то же правило или если вы хотите, чтобы контекст действия возвращал более одной пары «имя-значение», вы можете указать более одной пары «имя-значение» в контексте действия. Например, предположим, что компания также добавляет нового сотрудника в список электронной рассылки отдела. В этом случае контекст действия для правила rule_dep_10 может содержать две пары имя-значение:

Имя Значение course_number 1057 dist_list admin_list.

Ниже приведены рекомендации по именам в парах имя-значение:

Если разные приложения используют один и тот же контекст действия, используйте разные имена или префиксы имен, чтобы избежать конфликтов имен..

Не используйте $ и # в именах, потому что они могут вызвать конфликты с именами контекста действий, предоставляемыми Oracle..

Вы добавляете пару имя-значение в контекст действия с помощью процедуры-члена ADD_PAIR типа RE $ NV_LIST. Вы удаляете пару имя-значение из контекста действия, используя процедуру члена REMOVE_PAIR типа RE $ NV_LIST. Если вы хотите изменить существующую пару имя-значение в контексте действия, вы должны сначала удалить ее с помощью процедуры члена REMOVE_PAIR, а затем добавить соответствующую пару имя-значение с помощью процедуры члена ADD_PAIR.

Контекст действия не может содержать информацию о следующих типах данных:

Кроме того, контекст действия не может содержать типы объектов с атрибутами этих типов данных или типы объектов, которые используют эволюцию типов или наследование типов..

Oracle Streams использует контексты действий для настраиваемых преобразований на основе правил и, если указаны правила подмножества, для внутренних преобразований, которые могут потребоваться для локальных непрерывных реплик, содержащих операции UPDATE. Oracle Streams также использует контексты действий, чтобы указать целевую очередь, в которую процесс применения ставит в очередь сообщения, удовлетворяющие правилу. Кроме того, Oracle Streams использует контексты действий, чтобы указать, выполняется ли сообщение, удовлетворяющее правилу процесса применения, процессом применения..

"Создание правила с контекстом действия" и "Изменение правила" для примеров, которые добавляют и изменяют пары имя-значение.

Оценка набора правил.

Механизм правил оценивает набор правил для события. Событие — это событие, которое определяется клиентом механизма правил. Клиент инициирует оценку события, вызывая процедуру DBMS_RULE.EVALUATE. Эта процедура позволяет клиенту отправить некоторую информацию о событии механизму правил для оценки на соответствие набору правил. Само событие может содержать больше информации, чем информация, которую клиент отправляет механизму правил..

Следующая информация указывается клиентом при вызове процедуры DBMS_RULE.EVALUATE:

Имя набора правил, который содержит правила, используемые для оценки события..

Контекст оценки, используемый для оценки. Оцениваются только правила, использующие указанный контекст оценки..

Табличные значения и значения переменных. Значения таблицы содержат идентификаторы строк, которые относятся к данным в строках таблицы, а значения переменных содержат данные для явных переменных. Значения, указанные для неявных переменных, переопределяют значения, которые могут быть получены с помощью функции значения переменной. Если указанная переменная имеет атрибуты, то клиент может отправить значение для всей переменной или клиент может отправить значения для любого количества атрибутов переменной. Однако клиенты не могут указывать значения атрибутов, если указано значение всей переменной..

Необязательный контекст события. Контекст события — это массив типа SYS.RE $ NV_LIST, который содержит пары имя-значение, содержащие информацию о событии. Эта дополнительная информация не используется напрямую и не интерпретируется механизмом правил. Вместо этого он передается обратным вызовам клиента, таким как функция оценки, функция значения переменной (для неявных переменных) и функция метода переменной..

Клиент также может отправить другую информацию о том, как оценить событие по набору правил, используя процедуру DBMS_RULE.EVALUATE. Например, вызывающий может указать, должна ли оценка прекращаться, как только будет найдено первое ИСТИННОЕ правило или первое МОЖЕТЕ правило (если нет ИСТИННЫХ правил)..

Если клиент хочет, чтобы все правила, которые оцениваются как ИСТИНА или МОЖЕТ быть возвращены ему, то клиент может указать, должны ли результаты оценки отправляться обратно в полном списке правил, которые оцениваются как ИСТИНА или МОЖЕТ быть, или результаты оценки должны быть отправлены. назад итеративно. Когда результаты оценки итеративно отправляются клиенту, клиент может извлекать каждое правило, которое оценивается как ИСТИНА или МОЖЕТ быть одно за другим, используя функцию GET_NEXT_HIT в пакете DBMS_RULE..

Механизм правил использует правила из указанного набора правил для оценки и возвращает результаты клиенту. Механизм правил возвращает правила, используя два параметра OUT в процедуре EVALUATE. Эта процедура перегружена, и два параметра OUT различны в каждой версии процедуры:

Одна версия процедуры возвращает все правила, которые оцениваются как TRUE в одном списке, или все правила, которые оцениваются как MAYBE в одном списке, а двумя параметрами OUT для этой версии процедуры являются true_rules и might_rules. То есть параметр true_rules возвращает правила в одном списке, которые оцениваются как TRUE, а параметр might_rules возвращает правила в одном списке, которые могут быть оценены как TRUE при наличии дополнительной информации..

Другая версия процедуры возвращает все правила, которые итеративно оцениваются как TRUE или MAYBE по запросу клиента, а двумя параметрами OUT для этой версии процедуры являются true_rules_iterator и might_rules_iterator. То есть параметр true_rules_iterator возвращает правила, которые оцениваются как TRUE, одно за другим, а параметр might_rules_iterator возвращает правила одно за другим, которые могут оцениваться как TRUE при наличии дополнительной информации..

Процесс оценки набора правил.

На рисунке 5-1 показан процесс оценки набора правил:

Происходит определяемое клиентом событие.

Клиент инициирует оценку набора правил, отправляя информацию о событии механизму правил с помощью процедуры DBMS_RULE.EVALUATE..

Механизм правил оценивает набор правил для события, используя соответствующий контекст оценки. Клиент указывает набор правил и контекст оценки при вызове процедуры DBMS_RULE.EVALUATE. Для оценки используются только правила, которые входят в указанный набор правил и используют указанный контекст оценки..

Механизм правил получает результаты оценки. Каждое правило оценивается как ИСТИНА, ЛОЖЬ или ПУСТО (неизвестно).

Механизм правил возвращает правила, получившие значение ИСТИНА, клиенту либо в виде полного списка, либо по одному. Каждое возвращенное правило возвращается со всем контекстом действия, который может содержать информацию или иметь значение NULL. .

Клиент выполняет действия на основе результатов, возвращаемых механизмом правил. Механизм правил не выполняет действия, основанные на оценке правил..

Рисунок 5-1 Оценка набора правил.

Справочник по пакетам и типам Oracle Database PL / SQL для получения дополнительной информации о процедуре DBMS_RULE.EVALUATE.

Частичная оценка.

Частичная оценка происходит, когда процедура DBMS_RULE.EVALUATE выполняется без данных для всех таблиц и переменных в указанном контексте оценки. Во время частичной оценки некоторые правила могут ссылаться на столбцы, переменные или атрибуты, которые недоступны, в то время как некоторые другие правила могут ссылаться только на доступные данные..

Например, рассмотрим сценарий, в котором во время оценки доступны только следующие данные:

Столбец tab1.col = 7.

Атрибут v1.a1 = ‘ABC’

Для оценки используются следующие правила:

Правило R1 имеет следующее условие:

Правило R2 имеет следующее условие:

Правило R3 имеет следующее условие:

Правило R4 имеет следующее условие:

В этом сценарии R1 и R4 ссылаются на доступные данные, R2 ссылается на недоступные данные, а R3 ссылается на доступные данные и недоступные данные..

При частичной оценке всегда оцениваются только простые условия в правиле. Если в условии правила есть непростые части, то правило может или не может быть оценено полностью, в зависимости от степени доступности данных. Если правило не оценено полностью, оно может быть возвращено как правило МОЖЕТ БЫТЬ..

Учитывая правила этого сценария, оцениваются R1 и первая часть R3, но R2 и R4 не оцениваются. Клиенту возвращаются следующие результаты:

R1 оценивается как ЛОЖЬ и поэтому не возвращается.

R2 возвращается как МОЖЕТ БЫТЬ, потому что информация об атрибуте v1.a2 недоступна.

R3 возвращается как ИСТИНА, потому что R3 — простое правило, а значение v1.a1 соответствует первой части условия правила..

R4 возвращается как MAYBE, потому что условие правила непростое. Клиент должен предоставить значение переменной v1, чтобы это правило оценивалось как ИСТИНА или ЛОЖЬ. .

Объекты базы данных и привилегии, связанные с правилами.

Вы можете создавать следующие типы объектов базы данных напрямую с помощью пакета DBMS_RULE_ADM:

Вы можете создавать правила и наборы правил косвенно, используя пакет DBMS_STREAMS_ADM. Вы управляете привилегиями для этих объектов базы данных, используя следующие процедуры в пакете DBMS_RULE_ADM:

Чтобы позволить пользователю создавать наборы правил, правила и контексты оценки в собственной схеме пользователя, предоставьте пользователю следующие системные привилегии:

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

Этот раздел содержит следующие темы:

Когда вы даете привилегию на "ЛЮБЫЕ" (например, ALTER_ANY_RULE), а параметр инициализации O7_DICTIONARY_ACCESSIBILITY установлен в FALSE, вы предоставляете пользователю доступ к этому типу объекта во всех схемах, кроме схемы SYS. По умолчанию для параметра инициализации O7_DICTIONARY_ACCESSIBILITY установлено значение FALSE. .

Если вы хотите предоставить доступ к объекту в схеме SYS, вы можете явно предоставить объектные привилегии для этого объекта. В качестве альтернативы вы можете установить для параметра инициализации O7_DICTIONARY_ACCESSIBILITY значение TRUE. Тогда льготы, предоставленные на "ЛЮБЫЕ" объект позволит получить доступ к любой схеме, включая SYS .

"Компоненты правила" для получения дополнительной информации об этих объектах базы данных.

Справочник по пакетам и типам Oracle Database PL / SQL для получения дополнительной информации о привилегиях системы и объектов для этих объектов базы данных..

Общие сведения о привилегиях пользователей Oracle Database Concepts и Oracle Database Security Guide..

Глава 6, "Как правила используются в Oracle Streams" для получения дополнительной информации о создании правил и наборов правил косвенно с помощью пакета DBMS_STREAMS_ADM.

Права на создание объектов базы данных, связанных с правилами.

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

Схема должна быть собственной схемой пользователя, и пользователю должна быть предоставлена ​​системная привилегия create для типа создаваемого объекта базы данных. Например, чтобы создать набор правил в собственной схеме пользователя, пользователю необходимо предоставить системную привилегию CREATE_RULE_SET_OBJ..

Пользователю должны быть предоставлены любые системные привилегии для типа создаваемого объекта базы данных. Например, чтобы создать контекст оценки в любой схеме, пользователю должна быть предоставлена ​​системная привилегия CREATE_ANY_EVALUATION_CONTEXT..

При создании правила с контекстом оценки владелец правила должен иметь права на все объекты, к которым имеет доступ контекст оценки..

Права на изменение объектов базы данных, связанных с правилами.

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

Пользователь должен владеть объектом базы данных.

Пользователю должна быть предоставлена ​​привилегия изменения объекта для объекта базы данных, если он находится в схеме другого пользователя. Например, чтобы изменить набор правил в схеме другого пользователя, пользователю необходимо предоставить объектную привилегию ALTER_ON_RULE_SET в наборе правил..

Пользователю должны быть предоставлены права на изменение любой системной привилегии для объекта базы данных. Например, чтобы изменить правило в любой схеме, пользователю должна быть предоставлена ​​системная привилегия ALTER_ANY_RULE..

Права на удаление объектов базы данных, связанных с правилами.

Чтобы отбросить контекст оценки, правило или набор правил, пользователь должен выполнить хотя бы одно из следующих условий:

Пользователь должен владеть объектом базы данных.

Пользователю должны быть предоставлены любые системные привилегии для удаления объекта базы данных. Например, чтобы удалить набор правил в любой схеме, пользователю необходимо предоставить системную привилегию DROP_ANY_RULE_SET..

Права на размещение правил в наборе правил.

В этом разделе описаны привилегии, необходимые для включения правила в набор правил. Пользователь должен соответствовать хотя бы одному из следующих условий правила:

Пользователь должен владеть правилом.

Пользователю должна быть предоставлена ​​привилегия выполнения объекта для правила, если правило находится в схеме другого пользователя. Например, чтобы поместить правило с именем depts в схему hr в наборе правил, пользователю необходимо предоставить привилегию EXECUTE_ON_RULE для правила hr.depts..

Пользователю должны быть предоставлены права на выполнение любых системных правил для правил. Например, чтобы поместить какое-либо правило в набор правил, пользователю необходимо предоставить системную привилегию EXECUTE_ANY_RULE..

Пользователь также должен соответствовать хотя бы одному из следующих условий для набора правил:

Пользователь должен владеть набором правил.

Пользователю должна быть предоставлена ​​привилегия изменения объекта для набора правил, если набор правил находится в схеме другого пользователя. Например, чтобы разместить правило в наборе правил human_resources в схеме hr, пользователю необходимо предоставить привилегию ALTER_ON_RULE_SET для набора правил hr.human_resources..

Пользователь должен иметь возможность изменять любые системные привилегии для наборов правил. Например, чтобы поместить правило в любой набор правил, пользователю необходимо предоставить системную привилегию ALTER_ANY_RULE_SET..

Кроме того, владелец правила должен иметь права на все объекты, на которые ссылается правило. Эти привилегии важны, когда с правилом не связан контекст оценки..

Привилегии для оценки набора правил.

Чтобы оценить набор правил, пользователь должен соответствовать хотя бы одному из следующих условий:

Пользователь должен владеть набором правил.

Пользователю должна быть предоставлена ​​привилегия выполнения объекта для набора правил, если он находится в схеме другого пользователя. Например, чтобы оценить набор правил с именем human_resources в схеме hr, пользователю необходимо предоставить привилегию EXECUTE_ON_RULE_SET для набора правил hr.human_resources.

Пользователю должны быть предоставлены любые системные привилегии для наборов правил. Например, чтобы оценить любой набор правил, пользователю должна быть предоставлена ​​системная привилегия EXECUTE_ANY_RULE_SET..

Предоставление объектной привилегии EXECUTE для набора правил требует, чтобы у лица, предоставляющего право, была привилегия EXECUTE, указанная с параметром GRANT OPTION для всех правил, находящихся в данный момент в наборе правил.

Привилегии для использования контекста оценки.

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

Пользователь должен владеть контекстом оценки.

Пользователю должна быть предоставлена ​​привилегия EXECUTE_ON_EVALUATION_CONTEXT в контексте оценки, если он находится в схеме другого пользователя..

Пользователю должна быть предоставлена ​​системная привилегия EXECUTE_ANY_EVALUATION_CONTEXT для контекстов оценки..

Похожие статьи