2014-07-18 27 views
8

我需要幫助瞭解用戶需要何種授權/權限才能在指向另一個(不同的)模式對象時創建SYNONYM。創建同義詞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 
+0

您是否[授予'CREATE SYNONYM'給用戶](http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_7001.htm#SQLRF54350)並錯過了這個問題? –

回答

11

的文檔the CREATE SYNONYM command包括:

先決條件

要創建您自己的方案的私人代名詞,你必須有 CREATE SYNONYM系統權限。

要在另一用戶的模式中創建私用同義詞,您必須擁有 CREATE ANY SYNONYM系統特權。

要創建PUBLIC的同義詞,您必須具有CREATE PUBLIC SYNONYM系統特權。

你試圖創建READWRITE自己架構私有同義詞,所以你必須要做的:

GRANT CREATE SYNONYM TO READWRITE; 

的同義詞指向的對象是在一個不同的模式,但這在這裏沒有關係。