【问题标题】:Oracle - Disable masive updatesOracle - 禁用大规模更新
【发布时间】:2018-06-19 11:18:05
【问题描述】:

有什么方法可以在 SQL Developer 中禁用大量更新/删除(不带 where 子句)?

Mysql 工作台有一个类似的工具,可以防止用户在没有 where 子句的情况下运行更新语句。 Oracle SQL developer中有类似的工具吗?

谢谢

【问题讨论】:

  • 您只希望在 客户端 (SQL Developer) 或数据库中(无论客户端如何)?
  • 您可以查看Oracle Resource Manager,看看它是否满足您的需求。但它与 SQL Developer 没有任何关系。
  • 我更喜欢只在 sql developer 中执行此操作(出于某些原因)。如果不可行,也许我们可以在服务器端进行

标签: sql oracle sql-update oracle-sqldeveloper


【解决方案1】:

没有。

但是您可以通过创建资源使用者组 (Docs) 来限制用户对您的 SGA/临时空间/CPU 造成的损害

最好在数据库/服务器级别控制此类问题。如果您在客户端中构建“安全性”,那么一旦他们使用另一个客户端(如 SQL*Plus 或其他 100 个 Oracle 数据库客户端之一),您就会遇到麻烦。

如果您有一个经常这样做的数据库用户,use the READ privilege in 12c 或更高级别。它允许您仅授予仅执行 SELECT 的能力。

【讨论】:

  • 有什么方法可以限制更新查询中受影响的最大记录数?我需要防止单个用户错误地更新完整的表。如果我需要使用特定的客户端(或授予任何系统权限),没有问题。它只是为了预防。
  • @Mickey 基本上答案是“不”——您可以完全限制执行更新的能力,或者他们可以根据需要进行更新——无论是否“太多”。另外,如果 where 子句是 1=1 怎么办?或者他们认为他们有一个很好的,但实际上每一行都是如此?
  • 子句 1=1 没有问题。通常用户应该在某些表中更新,但在某些情况下他忘记了 where 子句......我想防止用户写“更新表集字段 = 123”并忘记 where 子句并进行大规模更新。如果他写“where 1=1”这不是问题,因为他写的......
猜你喜欢
  • 2013-02-28
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2019-05-18
相关资源
最近更新 更多