当前位置: 首页 > 面试题库 >

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

龙志勇
2023-03-14
问题内容

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

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

该查询(或其他类似查询)可能通过Oracle
JDBC瘦驱动程序访问了我的Oracle服务器。我愿意阻止该查询在JDBC配置级别,数据库服务器配置级别或通过架构内的用户权限运行。我希望用户能够继续运行正常的选择/插入/更新/删除查询。老实说,如果没有可用的PL
/ SQL类型命令,而只有标准SQL,我会很高兴。

更新

我还应该提到,我希望用户能够继续在其SQL查询中使用标准函数。我只是真的不希望他们做任何看起来像过程编程的事情(并且不必担心这些事情的陷阱,如上所示)。


问题答案:

您不能阻止人们针对您的服务器编写过程性PL / SQL代码。但是,根据您要解决的问题的确切性质,您可能还有其他选择。想到两个选择…

您可以创建与数据库用户关联的配置文件,以强制执行各种资源限制。因此,您可以限制单个调用可以消耗的CPU数量或可以进行的读取次数。这样一来,您就可以自动终止执行诸如对无限循环进行编码之类的会话。请注意,RESOURCE_LIMIT为了使Oracle强制执行配置文件中的资源限制,需要将初始化参数设置为TRUE。

您可以使用Oracle Resource
Manager
优先安排对资源的访问,以减少开发人员的错误将占用服务器上所有可用资源并使重要的生产流程饿死的风险。



 类似资料:
  • 当我尝试在查询中引用plsql表记录时,我收到pls-201错误。 下面是一个问题示例: 错误报告-ORA-06550:第15行,第23列:PLS-00201:标识符“QRY”。ID“必须声明为ORA-06550:第15行,第23列:PLS-00201:标识符”QRY。ID’必须声明为ORA-06550:第15行,第12列:PL/SQL:ORA-00904::无效标识符ORA-06550:第15行

  • 问题内容: ODP.Net提供了将关联数组作为参数从C#传递到Oracle存储过程的能力。除非您试图在sql查询中使用该关联数组中包含的数据,否则它是一个很好的功能。 这样做的原因是它需要上下文切换-SQL语句需要SQL类型,并且像这样传递给PL / SQL的关联数组实际上定义为PL / SQL类型。我相信在PL / SQL包/过程/函数中定义的任何类型都是PL / SQL类型,而在这些对象之外创

  • 我试图在Db2中创建Oracle PL/SQL包,但遇到了错误。 当我运行上面的代码时,它会导致以下错误: Deploy[tnbdr]db2inst1.arithmetic Running db2inst1.arithmetic-Deploy for debug started。Create PL/SQL Package Specification返回SQLCODE:-104,SQLSTATE:4

  • 我使用spring-data-elasticsearch框架从elasticsearch服务器获取查询结果,java代码如下: 我在服务器中获取原始查询日志,如下所示: 根据查询日志,spring data elasticsearch将为查询添加大小限制

  • 问题内容: 您能否将我引导到与Oracle中此查询等效的内容: 谢谢 问题答案: 查询从中检索所有行,然后在中检索行数。这样做只是性能优化:它使您不必进行两次查询。 如果性能不是问题,那么Oracle的等效项将是: 如果您可以重写客户端,则可以在一个查询中执行以下两项操作:

  • 问题内容: 在我的Django应用程序中,我反复在数据库上运行相同的查询(例如,每10秒运行一次)。然后,我在收到的查询集上创建一个MD5和,并将其与上一次运行中创建的MD5和进行比较。如果两者相等,则数据没有更改,并且不需要更新网页。 在执行此操作时,数据库中的数据可能会更改。 但是,显然由于查询缓存,该查询返回相同的查询集。 如何禁用查询缓存并在数据库上显式执行查询? 问题答案: 我遇到了我认