Oracle 10g Express - 让另一个用户从另一个用户查看表

时间:2012-12-28 16:14:57

标签: oracle security oracle10g schema privileges

我现在是甲骨文的一个巨大的菜鸟。我被要求将两个数据库导入Oracle。我成功了......有点......我想。因此,这些数据库随用户一起导出,当我导入数据库时​​,它创建了用户,并且所有表都附加到该用户。第二个数据库也是如此。让我们只为第一次导入USER1和第二次db导入USER2调用用户。 USER1有自己的表,USER2有自己的表。

我想创建一个可以看到所有这些表的用户。所以我不必登录到一个来访问和操纵它的数据,另一个来做同样的事情。我想创建一个USER3,它可以查看和操作与每个相关联的USER1和USER2表。我已经尝试了很多方法,但似乎无法让它发挥作用。任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:8)

允许USER3查询USER1所拥有的表:

GRANT SELECT ON USER1.tablename TO USER3;

您必须分别为每个表运行此操作。

您可能需要的其他授权是INSERT,UPDATE和DELETE,例如:授予完全控制权:

GRANT SELECT, INSERT, UPDATE, DELETE ON USER1.tablename TO USER3;

当您以USER3身份登录时,要查询该表,通常需要指定架构,例如:

SELECT * FROM USER1.tablename;

如果您想避免每次都必须指定架构,可以使用同义词,例如:

(login as USER3)

CREATE SYNONYM tablename FOR USER1.tablename;

现在您可以以USER3身份登录并运行:

SELECT * FROM tablename;

  

“我只是不明白我为什么要这么做。”

用户 - 或模式 - 是Oracle用于组织应用程序和实施治理的手段。在设计良好的应用程序中,一个模式极不可能需要将其所有对象的每个权限授予另一个用户。 Oracle建议为其他用户授予最小必要权限集的策略。这样做需要我们做出选择并编写离散语句以授予特定对象的特定权限。