Oracle - 在第二个链接服务器上使用链接服务器
Oracle - Use Linked Server over a second Linked Server
我想知道如何(如果可能)在 Oracle 服务器之间使用数据库 link 而不是第二个数据库 link。
我有这个场景:
- 服务器A是我自己的服务器,link与服务器B合用
- 服务器 B link与服务器 C 绑定
- 都是Oracle Server,都是同一个版本(11)。
- 它们在不同的国家/地区通过互联网和 VPN 连接。
- 我无法直接从服务器 A 到服务器 C 创建 linked 服务器。
这适用于服务器 A:
SELECT * from TABLE@Server_B
这来自 Server_B:
SELECT * from TABLE@Server_C
这在服务器 A 中不起作用,但逻辑上我想做的是:
select * from TABLE@Server_B@Server_C
我知道我可以在服务器 B 上创建一个视图到服务器 C 上的 table 并在服务器 A 上使用它。但是我还需要在第三台服务器上更新一些 table。
这可以吗?如果是,如何?
您可以在服务器 B 上创建一个指向服务器 C 上的远程 table 的同义词。如果服务器 C table 被称为 table_c
,那么在服务器 B 上您可以做:
create synonym table_c_syn for table_c@server_c;
然后在服务器A上你可以做:
select * from table_c_syn@server_b;
并且您可以 update/insert,假设用于数据库链接的用户具有正确的权限:
insert into table_c_syn@server_b(cola, colb, ...) values (val1, val2, ...);
我想知道如何(如果可能)在 Oracle 服务器之间使用数据库 link 而不是第二个数据库 link。
我有这个场景:
- 服务器A是我自己的服务器,link与服务器B合用
- 服务器 B link与服务器 C 绑定
- 都是Oracle Server,都是同一个版本(11)。
- 它们在不同的国家/地区通过互联网和 VPN 连接。
- 我无法直接从服务器 A 到服务器 C 创建 linked 服务器。
这适用于服务器 A:
SELECT * from TABLE@Server_B
这来自 Server_B:
SELECT * from TABLE@Server_C
这在服务器 A 中不起作用,但逻辑上我想做的是:
select * from TABLE@Server_B@Server_C
我知道我可以在服务器 B 上创建一个视图到服务器 C 上的 table 并在服务器 A 上使用它。但是我还需要在第三台服务器上更新一些 table。
这可以吗?如果是,如何?
您可以在服务器 B 上创建一个指向服务器 C 上的远程 table 的同义词。如果服务器 C table 被称为 table_c
,那么在服务器 B 上您可以做:
create synonym table_c_syn for table_c@server_c;
然后在服务器A上你可以做:
select * from table_c_syn@server_b;
并且您可以 update/insert,假设用于数据库链接的用户具有正确的权限:
insert into table_c_syn@server_b(cola, colb, ...) values (val1, val2, ...);