Sql 如何为频繁删除和创建表自动授予特定用户角色

Sql 如何为频繁删除和创建表自动授予特定用户角色,sql,oracle,Sql,Oracle,我的数据库中有2个模式。其中一个模式有一个使用另一个模式表的包。来自另一个架构的表,该架构在一段时间后经常以相同的名称删除和创建 因此,当表同时删除时,来自另一个模式的包将由于表而无效 是否有任何方法可以提供一个授权访问权限,该访问权限将保持在表删除后的状态,或者有任何方法可以自动重新编译该包。请帮我做这个 提前感谢。不幸的是,没有任何自动任务来执行此操作。您应该编写代码来实现自动化。请查收。它将对您有所帮助。如果删除某个依赖对象,则程序包将始终无效。在表不存在时重新编译包将不起作用,包仍将无效

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

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

是否有任何方法可以提供一个授权访问权限,该访问权限将保持在表删除后的状态,或者有任何方法可以自动重新编译该包。请帮我做这个


提前感谢。

不幸的是,没有任何自动任务来执行此操作。您应该编写代码来实现自动化。请查收。它将对您有所帮助。

如果删除某个依赖对象,则程序包将始终无效。在表不存在时重新编译包将不起作用,包仍将无效

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

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

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


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

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