我需要帮助理解当用户创建一个指向另一个(不同的)模式对象的同义词时需要授予什么权限。
当我尝试下面的操作时,我得到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
—可能通过登录触发器。