ORA-00942:表或视图不存在错误,即使我向用户授予了Select权限

时间:2014-06-23 10:42:20

标签: oracle

对于我的Oracle数据库,我创建了一个用户。我希望该用户只能访问3个表。所以我写了这些问题:

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角色)。可能是什么?

2 个答案:

答案 0 :(得分:6)

通过指定表所有者来运行查询。

Select * from tableowner.table1;

如果这不起作用,则表示您未在正确的表上授予访问权限,或者您使用错误的用户登录。

请记住,同一个表名可以存在于多个模式中。

答案 1 :(得分:1)

假设,

  • NEWUSER - >已提供补助金的用户。

  • EXISTINGUSER - >提供补助金的表的所有者。

EXISTINGUSER 登录,然后输入以下查询:

GRANT SELECT ON TABLE1 TO NEWUSER ;

NEWUSER 登录,然后选择使用:

SELECT * FROM EXISTINGUSER.TABLE1;

如果你想避免使用&#34; EXISTINGUSER&#34;。&#34; TABLE1&#34;,那么你可以创建一个synonym,相当于 ALIAS NAME < /强>:

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