【问题标题】:Oracle 10g Express - Let Another User View Tables from another userOracle 10g Express - 让另一个用户查看另一个用户的表
【发布时间】:2012-12-13 21:20:07
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 你试过什么,@stewbydoo?以下内容有用吗? additional schemas
  • 我想这就是我正在寻找的我只是不明白为什么我必须这样做。但我想我会试试看。

标签: oracle security oracle10g schema privileges


【解决方案1】:

要允许 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 推荐了一项策略,即授予其他用户所需的最低权限集。这样做需要我们做出选择并编写离散语句来授予特定对象的特定权限。

【讨论】:

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