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



我需要帮助理解当用户创建一个指向另一个(不同的)模式对象的同义词时需要授予什么权限。

当我尝试下面的操作时,我得到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

CREATE SYNONYM命令的文档包括:

先决条件

要在自己的模式中创建私有同义词,必须具有CREATE SYNONYM系统权限。

要在另一个用户的模式中创建私有同义词,您必须具有设置CREATE ANY SYNONYM系统权限。

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

你试图在READWRITE自己的模式中创建一个私有同义词,所以你必须这样做:

GRANT CREATE SYNONYM TO READWRITE;

同义词指向的对象在不同的模式中,但这与这里无关。


如果您的新帐户只访问GDACS模式中的对象,特别是如果您想要授予访问权限的对象很多,那么作为必须为所有内容创建同义词的替代方法,您可以在每个会话中更改新用户的current_schema—可能通过登录触发器。

最新更新