2014-06-23 27 views
1

對於我的Oracle數據庫我創建了一個用戶。我希望該用戶只能訪問3個表格。所以我寫了這些查詢:ORA-00942:表或視圖不存在錯誤給出即使我SELECT特權授予用戶

grant select on table1 to newuser; 
grant select on table2 to newuser; 
grant select on table3 to newuser; 

而我從控制檯得到這個,這確保了我給了授予。

GRANT succeeded 

但是,當我用這個用戶連接到數據庫並寫下面的查詢,我得到ORA-00942錯誤。

Select * from table1; 

我想我需要爲權限和角色編寫額外的查詢(我已經添加了CONNECT角色)。它可能是什麼?

+1

您需要GRANT CREATE SESS離子 – Mihai

回答

6

通過指定表所有者來運行查詢。

Select * from tableowner.table1; 

如果這不起作用,那麼要麼你沒有在正確的表上授予訪問權限,要麼你用錯誤的用戶登錄。

記得同桌的名字可以在多種模式存在。

1

假設,

  • NEWUSER - >用戶,其准許已被提供給。

  • EXISTINGUSER - >提供贈款的表的所有者。

登錄爲EXISTINGUSER,並輸入以下查詢:

GRANT SELECT ON TABLE1 TO NEWUSER ; 

登錄爲NEWUSER,並選擇使用:

SELECT * FROM EXISTINGUSER.TABLE1; 

如果你想避免使用「 EXISTINGUSER」。‘TABLE1’,那麼你就可以創建一個synonym,這相當於一個別名

登錄爲NEWUSER,輸入以下查詢:

CREATE SYNONYM SYN_TABLE1 FOR EXISTINGUSER.TABLE1; 

爲了選擇從同義詞數據,登錄作爲NEWUSER並選擇使用:

SELECT * FROM SYN_TABLE1; 

同義詞參考:http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htm