Oracle—将对象部署到不同的架构中
我很惊讶我还没有在网站上找到这个问题。如果结果是重复的,请道歉 在Oracle(10以上)中,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
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
当时未连接。你知道有什么方法可以让我知道是谁重新部署了这个软件包吗?是的-我知道它们是高级特权,这就是为什么我很想知道谁拥有它们!!谢谢你明确的回答。