Как отключить PL / SQL в запросах Oracle - PullRequest
3 голосов
/ 07 февраля 2012

Вот пример запроса, который я бы хотел запретить запускать на моем сервере:

begin
  While True
  LOOP
     dbms_output.put_line('tst');
  END LOOP;
end

Этот запрос (или другие подобные ему) может попадать на мой сервер Oracle через тонкий драйвер Oracle JDBC. Я был бы открыт для предотвращения выполнения этого запроса либо на уровне конфигурации JDBC, либо на уровне конфигурации сервера базы данных, либо через разрешения пользователя в схеме. Я бы хотел, чтобы пользователь продолжал выполнять обычные запросы выбора / вставки / обновления / удаления. Честно говоря, я был бы весьма рад, если бы не были доступны ни одна из команд типа PL / SQL, а вместо этого был бы только стандартный SQL.

Обновление

Я должен также упомянуть, что я хочу, чтобы пользователи продолжали использовать стандартные функции в своих SQL-запросах. Я просто не хочу, чтобы они делали что-то похожее на процедурное программирование (и беспокоились о ловушках таких вещей, как показано выше).

1 Ответ

7 голосов
/ 07 февраля 2012

Вы не можете запретить людям писать процедурный код PL / SQL для вашего сервера. Однако в зависимости от точного характера проблемы, которую вы пытаетесь решить, у вас могут быть другие варианты. На ум приходят два варианта ...

Вы можете создать профиль , связанный с пользователем базы данных, который устанавливает различные ограничения на ресурсы. Таким образом, вы можете ограничить количество ЦП, которое может потреблять один вызов, или количество операций чтения, которые он может выполнить. Это позволяет автоматически убивать сеансы, которые выполняют что-то вроде кодирования бесконечного цикла. Обратите внимание, что для параметра инициализации RESOURCE_LIMIT необходимо установить значение TRUE, чтобы Oracle принудительно установил ограничения ресурсов в профилях.

Вы можете использовать Oracle Resource Manager , чтобы расставить приоритеты в доступе к ресурсам, чтобы уменьшить риск того, что ошибка разработчика приведет к тому, что все ресурсы, доступные на сервере, будут лишены значительных производственных процессов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...