2011-09-28 23 views
2

我的应用程序在Oracle上有几个表,其中用户XYZ是模式所有者。表格已使用XYZ创建。我想让ABCUSER在这些表格上拥有CRUD权限。我已通过GRANT ALL ON TABLEABC to ABCUSER授予访问权限,授予成功。Oracle表SELECT选择权问题

但是当这个用户(ABCUSER)试图查询数据库(select * from TABLEABC)时,它似乎不起作用。我收到错误消息

ORA-00942: table or view does not exist 
00942. 00000 - "table or view does not exist" 
*Cause:  
*Action: 
Error at Line: 1 Column: 14 

请问我能告诉我缺什么?

回答

6

用户ABCUSER在表上拥有特权,但不拥有它。所以,你需要在查询模式:

select * from XYZ.TABLEABC 
/

如果你不想在你的程序中硬编码的模式名用户可以建立一个代名词:

create synonym TABLEABC for XYZ.TABLEABC 
/

那么最初的查询将为ABCUSER工作。

请注意,ABCUSER将需要CREATE SYNONYM权限。

1

正如APC所说,您错过了SYNONYM。

您可能需要PRIVATE或PUBLIC同义词,具体取决于您希望能够查看表的人。

对各种类型及其用途的很好的描述在这里: http://www.orafaq.com/wiki/Synonym