Oracle - 将对象部署到不同的模式中

Oracle - deploying objects into a different schema

我很惊讶我还没能在网站上找到这个问题。如果结果重复,我们深表歉意!

在 Oracle(10 以上)中,USER_A 可以在 USER_B 的模式中部署对象吗?

例如,假设我登录为 USER_B:

CREATE OR REPLACE PACKAGE user_a.my_example_pkg IS

   PROCEDURE Make_Log;
   PROCEDURE Init;

END user_a.my_example_pkg;

我在部署时收到 ORA-1031: insufficient privileges 响应。

我知道可以以 USER_A 身份登录来部署包,是的,我可以做到。但重点是,在我的数据库中,似乎有人以这种方式修改了一个包 "across the schema"。我需要弄清楚他们是怎么做到的!!

我很确定该权限存在,但我找不到它是什么。此外,如果有许多权限允许这样做,那么获得这些权限的详尽列表将是一个奖励。

您需要寻找 ANY 权限

  • CREATE PROCEDURE 允许您在模式中创建过程。 CREATE ANY PROCEDURE 允许您在任何模式中创建过程。
  • CREATE TABLE 允许您在架构中创建表。 CREATE ANY TABLE 允许您在任何架构中创建表。
  • CREATE VIEW 允许您在架构中创建视图。 CREATE ANY VIEW 允许您在任何架构中创建视图。

对于任何 CREATE 权限,都有相应的 CREATE ANY 权限。这些 ANY 特权 极其 强大,真的不应该授予 DBA 以外的任何人,因为它允许您执行诸如创建由高特权用户拥有的过程之类的事情可以做 DBA 可以做的任何事情。