我建议使用私有数据库链接并为您需要通过数据库链接访问的表创建视图。
因此,如果您有一个数据库 db1,其中用户 user1db1、user2db1 和 user3db1 需要访问另一个数据库 db2 中的 table1,请执行以下操作:
- 创建用户 linksdb1。
- 让该用户拥有到 db2 的私有 db 链接。
- 为 table1@db2 创建一个视图 linksdb1.table1
- 授予 user1db1、user2db1 和 user3db1 对视图的权限。
有两个原因:
- 安全。通过这样做,您可以完全控制允许哪些用户通过数据库链接访问表,因为他们需要访问视图。
- 可维护性。您不需要在 SQL 中包含 dblink,从 user1db1 的角度来看,他正在访问一个名为 linksdb1.table1 的表,而不是 table1@db2。这样,如果您将表移动到另一个数据库 db3,您只需要更改视图,而不是所有 SQL。