【问题标题】:how to provide grant to specific user role automatically for frequently drop and create table如何自动授予特定用户角色以频繁删除和创建表
【发布时间】:2016-09-25 09:06:50
【问题描述】:

我的数据库中有 2 个架构。其中一个模式有一个包,该包正在使用另一个模式的表。来自另一个模式的表,在一段时间后经常使用相同的名称删除和创建。

因此,当表同时删除时,来自另一个模式的包将由于该表而无效。

是否有任何方法可以提供授予访问权限,使其在表删除后保持原样,或者有任何方法可以自动重新编译该包。请帮我解决这个问题。

提前致谢。

【问题讨论】:

  • 该表是通过脚本还是手动删除和创建的?您可以在表创建脚本中添加授权命令。
  • 通过脚本删除和创建表。
  • 假设删除并重新创建表确实有意义(一开始看起来很可疑),为什么脚本不包括恢复授权? Oracle 会在下次执行时自动重新编译包,但您也可以在脚本中执行此操作。
  • 能否提供一个脚本示例,它将自动编译包。

标签: sql oracle


【解决方案1】:

不幸的是,没有任何自动任务可以执行此操作。您应该编写代码来自动执行此操作。请检查http://psoug.org/reference/ddl_trigger.html。它会帮助你。

【讨论】:

    【解决方案2】:

    如果包的依赖对象之一被删除,包将始终无效。在表不存在的情况下重新编译包将不起作用,包仍然无效。

    考虑从表中删除所有行(或截断它),而不是删除并重新创建它。

    否则,请尽量缩短删除表和重新创建表之间的时间。确保所有相关的授权和同义词与表格同时创建。

    我能想到的唯一解决方法是在删除表之前创建表的副本。如果您使用同义词来引用包中的表,则可以在删除实际表时“诱骗”包使用该表的副本。当您更改同义词时,包仍然会失效,但这只会持续很短的时间。

    解决此问题的唯一理想方法是停止删除表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-25
      • 2019-05-21
      • 1970-01-01
      • 2017-05-31
      • 2020-12-28
      • 2011-04-01
      • 2016-06-25
      • 2019-01-22
      相关资源
      最近更新 更多