创建同义词 ora-01031 权限不足

Posted

技术标签:

【中文标题】创建同义词 ora-01031 权限不足【英文标题】:create synonym ora-01031 insufficient privileges 【发布时间】:2014-09-09 21:18:45 【问题描述】:

当用户指向另一个(不同的)架构对象时,我需要帮助了解用户创建同义词所需的授权/特权。

当我尝试以下操作时,我得到 ora-01031 权限不足,因此显然我错过了并且未能应用其他所需的权限。我尽可能地进行了搜索,但找不到任何特定于跨模式同义词的内容。

CREATE USER test IDENTIFIED BY pw DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
ALTER USER test IDENTIFIED BY pw;
GRANT CONNECT, RESOURCE TO test;

-- ... create a bunch of stuff in test...

CREATE USER READWRITE IDENTIFIED BY pw DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE    TEMP;
ALTER USER READWRITE IDENTIFIED BY pw;
GRANT CONNECT, RESOURCE TO READWRITE;

GRANT SELECT ON GDACS.FIXALARMS TO PUBLIC;
GRANT UPDATE, INSERT ON GDACS.FIXALARMS TO READWRITE; 

CONNECT READWRITE/pw;

CREATE SYNONYM FIXALARMS for test.FIXALARMS;
ORA-01031 insufficient privileges

【问题讨论】:

你有没有 granted CREATE SYNONYM to the user 并且错过了这个问题? 【参考方案1】:

the CREATE SYNONYM command 的文档包括:

先决条件

要在您自己的架构中创建私有同义词,您必须拥有 CREATE SYNONYM 系统权限。

要在其他用户的架构中创建私有同义词,您必须拥有 CREATE ANY SYNONYM 系统权限。

要创建PUBLIC 同义词,您必须拥有CREATE PUBLIC SYNONYM 系统权限。

您正在尝试在READWRITE 自己的架构中创建私有同义词,因此您必须这样做:

GRANT CREATE SYNONYM TO READWRITE;

同义词指向的对象位于不同的模式中,但这与此处无关。


如果您的新帐户仅要访问 GDACS 架构中的对象,特别是如果您有很多要授予访问权限的对象,那么作为您可以为所有可能创建同义词的替代方法alter the new user's current_schema在每个会话中 - 可能是 via a logon trigger。

【讨论】:

以上是关于创建同义词 ora-01031 权限不足的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01031权限不足怎么解决?

ORA-01031: 创建包时权限不足

Oracle ORA-01031: 创建用户时权限不足

ORA-01031: 权限不足

ORA-01031: 权限不足

作为系统用户,我遇到此错误:ORA-01031:权限不足