微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Oracle查询中禁用PL / SQL

这是我想阻止在我的服务器上运行的那种查询的示例:

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

查询(或其他类似的查询)可能通过Oracle JDBC瘦驱动程序访问我的Oracle服务器.我愿意阻止此查询在JDBC配置级别,数据库服务器配置级别或通过架构中的用户权限运行.我希望用户能够继续运行正常的select / insert / update / delete查询.老实说,如果没有PL / sql类型命令可用,我会很高兴,而只是标准sql.

更新

我还要提一下,我希望用户能够继续在SQL查询中使用标准函数.我真的不希望他们做任何看起来像程序编程的事情(并且不得不担心这些事情的陷阱,如上所示).

解决方法

您无法阻止人们针对您的服务器编写程序性PL / sql代码.但是,根据您尝试解决的问题的确切性质,您可能还有其他选择.两个选项让人想起……

您可以与强制执行各种资源限制的数据库用户关联create a profile.因此,您可以限制单个调用可以消耗的cpu量或它可以执行的读取次数.这使您可以自动终止执行类似无限循环编码的会话.请注意,RESOURCE_LIMIT初始化参数需要设置为TRUE,以便Oracle在配置文件中强制执行资源限制.

您可以使用Oracle Resource Manager来优先访问资源,以降低开发人员的错误将占用服务器上所有可用资源并使重要生产流程匮乏的风险.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐