使用不同机器上的 2 个数据库在 Oracle 数据库上创建数据库链接。

5 oracle

我在不同的机器上有 2 个 oracle 数据库(db1 和 db2),假设:192.168.1.1 上的 db1 和 192.168.1.2 上的 db2

我想要实现的是在 db1 上创建一个链接,这将允许我在 db2 上执行查询。

这是我在 db1 上创建链接的方式:

create public database link db2Link connect to db2username identified by db2password
using 'db2';
Run Code Online (Sandbox Code Playgroud)

我认为如果这两个基础都在同一台机器上,这应该可以工作,但是当我想连接到不同机器上的数据库时,我该如何进行该链接?

谢谢最好的问候

小智 5

您可以通过 tnsnames.ora 定义连接字符串,然后引用别名

remotedb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = remotedb.fqdn.com)(PORT = 1521))
    (CONNECT_DATA = (SERVICE_NAME = ORCL))
  )
Run Code Online (Sandbox Code Playgroud)

然后创建一个引用该别名的 dblink:

CREATE DATABASE LINK remotedb
    CONNECT TO SYSTEM IDENTIFIED BY <password>
    USING 'remotedb';
Run Code Online (Sandbox Code Playgroud)

或促进相同的内联:

CREATE DATABASE LINK remotedb
CONNECT TO SYSTEM IDENTIFIED BY <password>
USING'(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = remotedb.fqdn.com)(PORT = 1521))(CONNECT_DATA = (SERVICE_NAME = ORCL)))';
Run Code Online (Sandbox Code Playgroud)

有关语法的详细信息,请查看http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_5005.htm

如果您想避免 DNS 解析,只需将 remotedb.fqdn.com 替换为 IP 地址即可。当然,您需要检查源是否可以启动到远程端口 1521 的 TCP 连接:

nc -zv remotedb.fqdn.com 1521
Run Code Online (Sandbox Code Playgroud)