【问题标题】:ORA-00942: table or view does not exist error is given even though I granted Select privilege to the userORA-00942: 表或视图不存在错误,即使我授予用户选择权限
【发布时间】:2014-06-23 10:42:19
【问题描述】:

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

【问题讨论】:

  • 你需要 GRANT CREATE SESSION

标签: oracle


【解决方案1】:

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

Select * from tableowner.table1;

如果这不起作用,那么要么您没有授予对正确表的访问权限,要么您使用错误的用户登录。

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

【讨论】:

    【解决方案2】:

    假设,

    • NEWUSER --> 获得授权的用户。

    • EXISTINGUSER --> 为其提供授权的表的所有者。

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

    GRANT SELECT ON TABLE1 TO NEWUSER ;
    

    NEWUSER 身份登录,然后选择使用:

    SELECT * FROM EXISTINGUSER.TABLE1;
    

    如果你想避免使用“EXISTINGUSER”.“TABLE1”,那么你可以创建一个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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 2016-11-20
      • 2019-01-22
      • 2015-07-11
      • 2019-09-29
      • 2015-11-09
      相关资源
      最近更新 更多