5.5.4.3 Справочник плагина переписывания запросов Rewriter
Следующее описание служит справочником по элементам, связанным с плагином переписывания запросов Rewriter:
Таблица правил
Rewriterв базе данныхquery_rewriteПроцедуры и функции
RewriterСистемные и переменные состояния
Rewriter
5.5.4.3.1 Таблица правил плагина переписывания запросов Rewriter
Таблица rewrite_rules в базе данных query_rewrite обеспечивает постоянное хранилище правил, которые плагин Rewriter использует для принятия решения о переписывании операторов.
Пользователи взаимодействуют с плагином, изменяя набор правил, хранящихся в этой таблице. Плагин сообщает информацию пользователям, устанавливая столбец message таблицы.
Таблица правил загружается в плагин процедурой flush_rewrite_rules. Если эта процедура не была вызвана после последнего изменения таблицы, содержимое таблицы необязательно соответствует набору правил, используемых плагином.
Таблица rewrite_rules имеет следующие столбцы:
-
idИдентификатор правила. Этот столбец является первичным ключом таблицы. Вы можете использовать ID для уникальной идентификации любого правила.
-
patternШаблон, указывающий шаблон операторов, которым соответствует правило. Используйте
?для представления маркеров параметров, соответствующих значениям данных. -
pattern_databaseБаза данных, используемая для сопоставления имён таблиц без указания базы данных в операторах. Квалифицированные имена таблиц в операторах соответствуют квалифицированным именам в шаблоне, если соответствующие имена базы данных и таблиц совпадают. Неуказанные имена таблиц в операторах соответствуют неуказанным именам в шаблоне только в том случае, если базовая база данных совпадает с
pattern_database, а имена таблиц совпадают. -
replacementШаблон, указывающий, как переписать операторы, соответствующие значению столбца
pattern. Используйте?для представления маркеров параметров, соответствующих значениям данных. В переписанных операторах плагин заменяет маркеры параметров?вreplacementс использованием значений данных, соответствующих маркерам вpattern. -
enabledВключено ли правило. Операции загрузки (выполняемые путём вызова хранимой процедуры
flush_rewrite_rules()) загружают правило из таблицы в кэш в памятиRewriterтолько в том случае, если этот столбец равенYES.Этот столбец позволяет деактивировать правило, не удаляя его: установите значение столбца отличным от
YESи перезагрузите таблицу в плагин. -
messageПлагин использует этот столбец для взаимодействия с пользователями. Если при загрузке таблицы правил в память не возникло ошибок, плагин устанавливает столбец
messageвNULL. Значение, отличное отNULL, указывает на ошибку, и содержимое столбца — сообщение об ошибке. Ошибки могут возникнуть в следующих случаях:Шаблон или замена — это некорректный оператор SQL, который приводит к синтаксическим ошибкам.
Замена содержит больше маркеров параметров
?, чем шаблон.
При возникновении ошибки загрузки плагин также устанавливает переменную состояния
Rewriter_reload_errorвON. -
pattern_digestЭтот столбец используется для отладки и диагностики. Если столбец существует при загрузке таблицы правил в память, плагин обновляет его с помощью дайджеста шаблона. Этот столбец может быть полезен, если вы пытаетесь определить, почему какой-то оператор не переписывается.
-
normalized_patternЭтот столбец используется для отладки и диагностики. Если столбец существует при загрузке таблицы правил в память, плагин обновляет его с помощью нормализованной формы шаблона. Этот столбец может быть полезен, если вы пытаетесь определить, почему какой-то оператор не переписывается.
5.5.4.3.2 Процедуры и функции плагина переписывания запросов Rewriter
Работа плагина Rewriter использует хранимую процедуру, которая загружает таблицу правил в кэш в памяти, и функцию для загрузки. В обычном режиме работы пользователи вызывают только хранимую процедуру. Функция предназначена для вызова хранимой процедурой, а не напрямую пользователями.
-
Эта хранимая процедура использует функцию
load_rewrite_rules()для загрузки содержимого таблицыrewrite_rulesв кэш в памятиRewriter.Вызов
flush_rewrite_rules()подразумеваетCOMMIT.Вызовите эту процедуру после изменения таблицы правил, чтобы заставить плагин обновить свой кэш с новым содержимым таблицы. Если возникнут ошибки, плагин установит столбец
messageдля соответствующих строк правила в таблице и установит переменную состоянияRewriter_reload_errorвON. -
Эта функция — вспомогательная процедура, используемая хранимой процедурой
flush_rewrite_rules().
5.5.4.3.3 Системные переменные плагина переписывания запросов Rewriter
Плагин переписывания запросов Rewriter поддерживает следующие системные переменные. Эти переменные доступны только при установке плагина (см. Раздел 5.5.4.1, «Установка или удаление плагина переписывания запросов Rewriter»).
-
Системная переменная rewriter_enabledОбласть Глобальная Динамическая Да Тип Булево Значение по умолчанию ONДопустимые значения OFFВключён ли плагин переписывания запросов
Rewriter. -
Системная переменная rewriter_verboseОбласть Глобальная Динамическая Да Тип Целое Для внутреннего использования.
5.5.4.3.4 Переменные состояния плагина переписывания запросов Rewriter
Плагин переписывания запросов Rewriter поддерживает следующие переменные состояния. Эти переменные доступны только в случае установки плагина (см. Раздел 5.5.4.1, «Установка или удаление плагина переписывания запросов Rewriter»).
-
Количество правил переписывания плагина переписывания, успешно загруженных из таблицы
rewrite_rulesв память для использования плагиномRewriter. -
Количество раз, когда таблица
rewrite_rulesбыла загружена в кэш оперативной памяти, используемый плагиномRewriter. -
Rewriter_number_rewritten_queriesКоличество запросов, переписанных плагином переписывания запросов
Rewriterс момента его загрузки. -
Возникла ли ошибка при последней загрузке таблицы
rewrite_rulesв кэш оперативной памяти, используемый плагиномRewriter. Если значение равноOFF, ошибки не было. Если значение равноON, произошла ошибка; проверьте столбецmessageтаблицыrewriter_rulesдля получения сообщений об ошибках.
© 2025 Oracle
Licensed under the GPLv2 License.