Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle—将对象部署到不同的架构中_Oracle_Oracle11g_Oracle10g_Oracle12c - Fatal编程技术网

Oracle—将对象部署到不同的架构中

Oracle—将对象部署到不同的架构中,oracle,oracle11g,oracle10g,oracle12c,Oracle,Oracle11g,Oracle10g,Oracle12c,我很惊讶我还没有在网站上找到这个问题。如果结果是重复的,请道歉 在Oracle(10以上)中,USER\u A是否可以在USER\u B的架构中部署对象 例如,假设我以用户身份登录: CREATE OR REPLACE PACKAGE user_a.my_example_pkg IS PROCEDURE Make_Log; PROCEDURE Init; END user_a.my_example_pkg; 部署时,我收到ORA-1031:权限不足响应 我知道可以以USER\u

我很惊讶我还没有在网站上找到这个问题。如果结果是重复的,请道歉

在Oracle(10以上)中,
USER\u A
是否可以在
USER\u B
的架构中部署对象

例如,假设我以用户身份登录:

CREATE OR REPLACE PACKAGE user_a.my_example_pkg IS

   PROCEDURE Make_Log;
   PROCEDURE Init;

END user_a.my_example_pkg;
部署时,我收到
ORA-1031:权限不足
响应

我知道可以以
USER\u A
的身份登录以部署包,是的,我可以这样做。但问题是,在我的数据库中,似乎有人以这种方式“跨模式”修改了一个包。我需要弄清楚他们是怎么做到的


我相当肯定这个特权是存在的,但我找不到它是什么。此外,如果有许多特权允许这样做,那么获得这些特权的详尽列表将是一个额外的好处。

您需要查找
任何
特权

  • CREATE PROCEDURE
    用于在架构中创建过程<代码>创建任何过程允许您在任何模式中创建过程
  • CREATE TABLE
    用于在架构中创建表<代码>创建任何表允许您在任何架构中创建表
  • CREATE VIEW
    用于在架构中创建视图<代码>创建任何视图用于在任何架构中创建视图

对于任何
CREATE
权限,都有相应的
CREATE any
权限。那些
ANY
特权是非常强大的,不应该授予DBA以外的任何人,因为它允许您创建由高度特权用户拥有的过程,这些过程可以做DBA可以做的任何事情。

用户a不可能在用户B的
中部署对象-问题是为什么当您可以简单地授予
execute
权限,将
USER\u A
schema打包到
USER\u B
schema时,是否要复制代码?在最坏的情况下,您希望这样做,那么为什么要在包名前面使用模式别名呢。不管怎么说,你是在执行整个程序包,那有什么意义呢?@XING建议你在下次回答之前先阅读这个问题。您的答案是:是否有人只是以
user_b
的身份连接,并在那里错误地创建了包?你怎么知道他们当时是以
user\u a
的身份连接的,并使用特权创建了它?@WilliamRobertson不仅可能,而且可能。但没人承认。此外,审核日志表明,
user_b
当时未连接。你知道有什么方法可以让我知道是谁重新部署了这个软件包吗?是的-我知道它们是高级特权,这就是为什么我很想知道谁拥有它们!!谢谢你明确的回答。