我需要帮助了解用户在指向另一个(不同的)架构对象时创建SYNONYM所需的授权/特权。
当我尝试以下操作时,我得到的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
答案 0 :(得分:13)
the CREATE SYNONYM
command的文档包括:
<强>先决条件强>
要在您自己的架构中创建私有同义词,您必须拥有
CREATE SYNONYM
系统权限。要在其他用户的架构中创建私有同义词,您必须拥有
CREATE ANY SYNONYM
系统权限。要创建
PUBLIC
同义词,您必须拥有CREATE PUBLIC SYNONYM
系统权限。
您正试图在READWRITE
自己的架构中创建一个私有同义词,因此您必须这样做:
GRANT CREATE SYNONYM TO READWRITE;
同义词所指向的对象位于不同的架构中,但这与此无关。