目前,我正试图了解两个数据库如何相互通信(例如:从一个数据库获取数据到另一个数据库)。
详细描述
我有两个Oracle数据库,一个在Windows上,另一个在Oracle VirtualBox上。在Windows上,只有一个用户(PAI)拥有一个名为TESTME的表。在VirtualBox上,只创建了用户(PAI_VB)。现在,我想从VB的中显示TESTME表的内容。
我已经做了
我希望使用链接语句显示表TESTME:
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文件
有了这些,通过以下查询,我将设法显示表:
SELECT * FROM PAI.TESTME@LINK_TO_PAI;不幸的是,它不起作用。
来自控制台的错误
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问题
编辑
我设法通过SQLDeveloper和SQLPlus从VB机器连接到了SQLDeveloper上的一台机器。不幸的是,使用Oracle链接我无法从数据库访问数据。
解决了!!
我设法解决了我的问题。问题就在环节中。自以下部分以来:
'DESCRIPTION = (ADDRESS=(PROTOCOL=TCP)(HOST=myIP)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=XE))' 在tnsnames.ora文件中,我应该将我的链接定义为:
CREATE DATABASE LINK LINK_TO_PAI
CONNECT TO PAI IDENTIFIED BY PAI
USING 'xe';在那个小小的改变之后,我能够自由地在我的例子中链接到我们。干杯:)
发布于 2016-03-19 06:01:25
以下是工作数据库链接所需的内容:
您所得到的TNS-12154错误意味着运行在虚拟主机上的数据库无法使用您给出的描述到达XE的侦听器。
tnsping主机listener.tnsping 'DESCRIPTION =
或者只有tnsping XE,如果您在虚拟机上的tnsnames.ora文件中以XE的形式存储了TNS条目。
还请参阅:OracleDocuments-测试连接。tnsping获得OK响应后,尝试使用sqlplus (sqlplus PAI/PAI@XE)或通过运行在虚拟主机上的sqlplus连接到XE。如果您可以这样连接,您的数据库链接也应该与相同的TNS条目一起工作。发布于 2016-03-19 02:00:58
这是甲骨文的一个棘手的部分,因为有许多不同的方式来建立一个联系。我建议您开始确保在windows和virtualbox环境中都有一个tnsnames.ora文件。顺便问一下,您在VirtualBox中运行什么操作系统?在两个tnsnames.ora文件中,两个数据库都应该命名。最容易让它们完全相同。然后在VirtualBox中从Windows连接到数据库,从VirtualBox连接到windows上的数据库。只是为了确保您的网络和tns配置是可以的。
如果这样做有效,则在使用后使用tnsname中的servce别名重新创建db链接。这应该能行。
https://stackoverflow.com/questions/36096277
复制相似问题