2

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

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

谢谢

4

1 回答 1

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;

“我只是不明白为什么我必须做这一切。”

Users - or schemas - are the means Oracle uses for organising applications and enforcing governance. In a well-design application it is extremely unlikely that one schema would need to grant every privilege on all its objects to another user. Oracle recommends a policy of granting the minimum necessary set of privileges to other users. Doing this requires us to make choices and write discrete statements to grant specific privileges on particular objects.

于 2012-12-29T07:45:31.180 回答