首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个数据库(Oracle、VirtualBox)之间的通信

两个数据库(Oracle、VirtualBox)之间的通信
EN

Stack Overflow用户
提问于 2016-03-19 00:10:25
回答 2查看 1.2K关注 0票数 1

目前,我正试图了解两个数据库如何相互通信(例如:从一个数据库获取数据到另一个数据库)。

详细描述

我有两个Oracle数据库,一个在Windows上,另一个在Oracle VirtualBox上。在Windows上,只有一个用户(PAI)拥有一个名为TESTME的表。在VirtualBox上,只创建了用户(PAI_VB)。现在,我想从VB的中显示TESTME表的内容。

我已经做了

我希望使用链接语句显示表TESTME:

代码语言:javascript
复制
CREATE DATABASE LINK LINK_TO_PAI
  CONNECT TO PAI IDENTIFIED BY PAI
  USING 'DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=myIP)(PORT=1521))
  (CONNECT_DATA=(SERVICE_NAME=XE))';

注意:“描述”部分的数据取自Windows.上的tnsname.ora文件

有了这些,通过以下查询,我将设法显示表:

代码语言:javascript
复制
SELECT * FROM PAI.TESTME@LINK_TO_PAI;

不幸的是,它不起作用。

来自控制台的错误

代码语言:javascript
复制
ORA-12154: TNS:could not resolve the connect identifier specified
12154. 00000 -  "TNS:could not resolve the connect identifier specified"
*Cause:    A connection to a database or other service was requested using
           a connect identifier, and the connect identifier specified could not
           be resolved into a connect descriptor using one of the naming methods
           configured. For example, if the type of connect identifier used was a
           net service name then the net service name could not be found in a
           naming method repository, or the repository could not be
           located or reached.
*Action:   
           - If you are using local naming (TNSNAMES.ORA file):
           - Make sure that "TNSNAMES" is listed as one of the values of the
           NAMES.DIRECTORY_PATH parameter in the Oracle Net profile

问题

  1. 请您给我的问题提出解决方案(我知道在*Action部分有一个提示,但我仍然不能解决它)。
  2. 也许,你可以给我介绍另一种方法,使两个数据库之间的通信成为可能。

编辑

我设法通过SQLDeveloper和SQLPlus从VB机器连接到了SQLDeveloper上的一台机器。不幸的是,使用Oracle链接我无法从数据库访问数据。

解决了!!

我设法解决了我的问题。问题就在环节中。自以下部分以来:

代码语言:javascript
复制
'DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=myIP)(PORT=1521))
  (CONNECT_DATA=(SERVICE_NAME=XE))' 

在tnsnames.ora文件中,我应该将我的链接定义为:

代码语言:javascript
复制
CREATE DATABASE LINK LINK_TO_PAI
CONNECT TO PAI IDENTIFIED BY PAI
USING 'xe';

在那个小小的改变之后,我能够自由地在我的例子中链接到我们。干杯:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-19 06:01:25

以下是工作数据库链接所需的内容:

  • 两台主机之间的网络连接。
  • 要连接到的主机上运行的Oracle侦听器进程。
  • 在创建链接时更正TNS条目。
  • 正确的用户名和密码连接到远程数据库。

您所得到的TNS-12154错误意味着运行在虚拟主机上的数据库无法使用您给出的描述到达XE的侦听器。

  1. 当试图从虚拟机连接到Windows主机时,确保使用正确的IP地址
  2. 从您的虚拟环境中运行(ADDRESS=(PROTOCOL=TCP)(HOST=your_windows_host_ip_from_step_1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE))‘,看看它是否可以到达tnsping主机listener.tnsping 'DESCRIPTION = 或者只有tnsping XE,如果您在虚拟机上的tnsnames.ora文件中以XE的形式存储了TNS条目。 还请参阅:OracleDocuments-测试连接
  3. tnsping获得OK响应后,尝试使用sqlplus (sqlplus PAI/PAI@XE)或通过运行在虚拟主机上的sqlplus连接到XE。如果您可以这样连接,您的数据库链接也应该与相同的TNS条目一起工作。
票数 3
EN

Stack Overflow用户

发布于 2016-03-19 02:00:58

这是甲骨文的一个棘手的部分,因为有许多不同的方式来建立一个联系。我建议您开始确保在windows和virtualbox环境中都有一个tnsnames.ora文件。顺便问一下,您在VirtualBox中运行什么操作系统?在两个tnsnames.ora文件中,两个数据库都应该命名。最容易让它们完全相同。然后在VirtualBox中从Windows连接到数据库,从VirtualBox连接到windows上的数据库。只是为了确保您的网络和tns配置是可以的。

如果这样做有效,则在使用后使用tnsname中的servce别名重新创建db链接。这应该能行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36096277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档