我很惊讶,我还没能在网站上找到这个问题。抱歉,如果发现重复!
在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
身份登录以部署该程序包,是的,我可以这样做。但是关键是在我的数据库上,有人似乎已经以这种方式“跨模式”修改了一个程序包。而且我需要弄清楚他们是如何做到的!
我相当确定特权存在,但我找不到它。而且,如果有许多特权可以完成此操作,那么获得这些特权的详尽列表将是一个好处。
您想寻找ANY
特权
CREATE PROCEDURE
允许您在架构中创建过程。 CREATE ANY PROCEDURE
允许您在任何模式中创建过程。CREATE TABLE
允许您在架构中创建表。 CREATE ANY TABLE
允许您在任何模式中创建表。CREATE VIEW
使您可以在架构中创建视图。 CREATE ANY VIEW
允许您在任何模式中创建视图。对于任何CREATE
特权,都有相应的CREATE ANY
特权。那些ANY
特权extremely功能强大,实际上不应该授予DBA以外的任何人,因为它会允许您执行诸如创建由高特权用户拥有的过程的操作,这些过程可以执行DBA可以执行的任何操作。