Oracle 数据库链接-测试连接不工作

Oracle 数据库链接-测试连接不工作,oracle,Oracle,我有两个数据库,它们的表具有相同的模式。我想比较一下这两张表。我了解到跨数据库查询需要一个数据库链接 我使用SQLDeveloper,下面是有效连接的属性 Connection Name: MyConn UserName:SomeUser password:SomePassword Connection Type: Basic Role: default Host Name: 12.12.12.12 port:2521 SID: xe 我使用此命令创建数据库链接 CREATE DATABASE

我有两个数据库,它们的表具有相同的模式。我想比较一下这两张表。我了解到跨数据库查询需要一个数据库链接

我使用SQLDeveloper,下面是有效连接的属性

Connection Name: MyConn
UserName:SomeUser
password:SomePassword
Connection Type: Basic
Role: default
Host Name: 12.12.12.12
port:2521
SID: xe
我使用此命令创建数据库链接

CREATE DATABASE LINK MyDBLink
  CONNECT TO SomeUser
  IDENTIFIED BY "SomePassword" 
  USING '(DESCRIPTION=
  (ADDRESS=(PROTOCOL=TCP)(HOST=12.12.12.12)(PORT=2521))
  (CONNECT_DATA=(SID=xe)))';
该命令创建了一个链接,但当我尝试测试该链接时,该连接不起作用。连接在60秒内超时


我遗漏了什么吗?

数据库链接位于两个数据库之间,而不是从本地sqldeveloper/客户端“传出”

因此,即使您可以从本地客户机访问远程数据库,创建链接的远程数据库服务器也可能(在本例中确实没有)无法到达数据库链接的目标

无论远程数据库是否可访问,或凭据是否不正确等,都会创建数据库链接本身


如果有可能,您应该直接登录创建链接的数据库的数据库服务器,并检查与要从那里访问的数据库服务器的网络连接。使用telnet可能会对您有所帮助。

数据库链接位于两个数据库之间,而不是从本地sqldeveloper/客户端“传出”

因此,即使您可以从本地客户机访问远程数据库,创建链接的远程数据库服务器也可能(在本例中确实没有)无法到达数据库链接的目标

无论远程数据库是否可访问,或凭据是否不正确等,都会创建数据库链接本身


如果有可能,您应该直接登录创建链接的数据库的数据库服务器,并检查与要从那里访问的数据库服务器的网络连接。使用telnet可能会对您有所帮助。

最好的解决方案是查看网络或操作系统,在两台服务器之间打开一条路径,然后数据库链接就可以工作了。如果这是不可能的,你可以使用你的台式电脑作为代理

解决网络问题的官方方法是使用,但根据我的经验,该程序的配置有点困难


另一个选项是在桌面上创建一个数据库,并创建到每个服务器的两个数据库链接。如果这个桌面数据库只用于链接到其他数据库,那么免费的快速版就足够了。如果您采用这种方法,那么在涉及3个数据库时要小心性能问题。您可能希望比较哈希而不是实际数据,以避免网络问题。

最好的解决方案是查看网络或操作系统,并在两台服务器之间打开一条路径,然后数据库链接应该可以工作。如果这是不可能的,你可以使用你的台式电脑作为代理

解决网络问题的官方方法是使用,但根据我的经验,该程序的配置有点困难


另一个选项是在桌面上创建一个数据库,并创建到每个服务器的两个数据库链接。如果这个桌面数据库只用于链接到其他数据库,那么免费的快速版就足够了。如果您采用这种方法,那么在涉及3个数据库时要小心性能问题。您可能希望比较哈希而不是实际数据,以避免网络问题。

谢谢。很遗憾,我无法登录到DB服务器。我可以在Sql developers中连接到多个服务器。有没有其他方法可以查询多个数据库?我可以使用heidi客户端在mysql中通过使用DB名称限定表来实现这一点。我希望能有这样的结果。如果你不能得到一个清晰的网络路径,你可以在同一个数据库中进行导出/导入和比较……这当然很大程度上取决于表的大小和你的其他要求hanks@evilive。出口/进口似乎是唯一可行的选择。谢谢。很遗憾,我无法登录到DB服务器。我可以在Sql developers中连接到多个服务器。有没有其他方法可以查询多个数据库?我可以使用heidi客户端在mysql中通过使用DB名称限定表来实现这一点。我希望能有这样的结果。如果你不能得到一个清晰的网络路径,你可以在同一个数据库中进行导出/导入和比较……这当然很大程度上取决于表的大小和你的其他要求hanks@evilive。导出/导入似乎是唯一可行的选择。您可能有防火墙,或者可能有NAT/PAT混淆的东西。但是你对MySQL的评论让我很好奇——你是指Oracle意义上的不同数据库,还是同一个XE数据库中的不同模式(用户)?谢谢@AlexPoole。这些是不同的数据库。其中一个拥有主数据,每个客户都有一个单独的数据库。我必须经常查询客户端数据库,这涉及到引用主数据库中的数据。我必须使用单独的ID登录到主机和客户端,并且在查询中使用[dbname].tablename语法。对,但这听起来更像是同一数据库中的不同模式,至少在Oracle术语中是这样。您仍然可以在Oracle中查询schema.tablename,只要您被授予对另一个模式的表的权限。让我问另一个问题;您的SQL Developer连接是否都使用相同的主机名、端口和SID?不,这些是到不同服务器的独立连接(具有不同的主机名)。顺便说一句,mysql的情况也是如此。关于TCP被防火墙阻止的说法,您可能是对的。好的,好吧,这排除了可能的术语混淆和一个简单的解决方法*8-)你可能有一个防火墙,或者可能有NAT/PAT混淆的东西。但是你对MySQL的评论让我很好奇——你是指Oracle意义上的不同数据库,还是同一个XE数据库中的不同模式(用户)?谢谢@AlexPoole。这些是不同的数据库。一个有主数据,另一个有单独的数据