2016-09-13 36 views
1

我想授予從schema1到schema2(oracle10g)的表的訪問權限。爲什麼我可以創建一個同義詞,但是不允許選擇同一個表?

我創建了SCHEMA2的代名詞:

CREATE SYNONYM schema2.table FOR schema1.table; 

同義詞是創建成功。

然後我試圖授予選擇在同一個表:

grant select on schema1.table to schema2; 

我:

ORA-00942: table or view does not exist 

這是沒有道理給我。我能夠創建同義詞而不是授權。我做錯了什麼?

我無法從SCHEMA2得到表:

select * from table; 
ORA-00942: table or view does not exist 
+0

請記住,贈款是給予的,而不是。 Schema2無法授予Schema1對象自身的權限(除非它是DBA帳戶)。授予必須來自Schema1,允許Schema2訪問其對象。 –

回答

2

如果我有「的創建任何同義詞|權利,我可以創建在方案2中模式1表中的同義詞,而無需助學金如果我對schema1表沒有權限(GRANT WITH GRANT OPTION)將其重新授予其他用戶,那麼我也不能從該用戶那裏獲得授權。

解決方案,日誌以schema1的形式進行授權,然後同義詞在schema2下工作,或者確保我登錄的用戶有權授予schema1對象的授權。

每您的評論:

身份登錄schema1,你想SCHEMA2有你的表爲準運營補助。

e.g)

SQL> GRANT SELECT,插入,更新,刪除TABLE來SCHEMA2;

SCHEMA2將能夠通過它的同義詞查看錶格,並允許對其執行這些操作。

如果SCHEMA2要使用這張表,那麼它將授予對其他模式的選擇訪問權,那麼您需要將「WITH GRANT OPTION」添加到schema1的初始授權中,否則模式2將不會能夠重新授予其他用戶的權限。

+0

我應該在schema1上做些什麼?我應該檢查schema2的哪些特定權利? – Rodrick

+0

查看我的答案更新 –

2

您可以爲實際上不存在的對象創建同義詞,例如

create synonym flub for blib;

...讓你能夠創建一個同義詞,並不意味着存在對象的事實。

相關問題