创建同义词时出现ORA-01031权限不足错误

9

我需要帮助理解用户在创建指向其他(不同)模式对象的同义词时需要哪些授权/权限。

当我尝试以下操作时,出现了 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,并且在问题中遗漏了这一点? - Alex Poole
1个回答

15
CREATE SYNONYM命令的文档包括以下内容:

前提条件

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

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

要创建一个PUBLIC同义词,您必须具有CREATE PUBLIC SYNONYM系统特权。

您正在尝试在READWRITE自己的模式中创建私有同义词,因此您需要执行以下操作:

GRANT CREATE SYNONYM TO READWRITE;

这个同义词所指的对象位于不同的模式中,但这在这里并不相关。
如果您的新帐户只需要访问GDACS模式中的对象,特别是如果您有很多对象想要授权访问,则可以作为替代方法,而不必为每个对象创建同义词,您可以在每个会话中更改新用户的current_schema - 可能通过登录触发器

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接