【问题标题】:Oracle table SELECT rights issueOracle 表 SELECT 权限问题
【发布时间】:2011-09-28 16:54:22
【问题描述】:

我的应用程序在 Oracle 上很少有表,其中用户 XYZ 是架构所有者。表是使用 XYZ 创建的。我想让 ABCUSER 对这些表拥有 CRUD 权限。我已通过GRANT ALL ON TABLEABC to ABCUSER 授予访问权限,授权成功。

但是当这个用户(ABCUSER)尝试查询数据库(从 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

你能告诉我我错过了什么吗?

【问题讨论】:

    标签: sql oracle ora-00942


    【解决方案1】:

    用户 ABCUSER 拥有该表的权限,但不拥有该表。因此,您需要在查询中包含架构:

    select * from XYZ.TABLEABC
    /
    

    如果您不想在程序中硬编码模式名称,您的用户可以构建同义词:

    create synonym TABLEABC for XYZ.TABLEABC
    /
    

    那么原始查询将适用于 ABCUSER。

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

    【讨论】:

      【解决方案2】:

      正如 APC 所说,您缺少同义词。

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

      各种类型及其用途的详细说明如下: http://www.orafaq.com/wiki/Synonym

      【讨论】:

        猜你喜欢
        • 2020-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多