无法从远程Oracle 11g链接数据库读取数据

时间:2017-04-05 00:35:49

标签: database oracle oracle11g linked-server

我有2个Oracle数据库的用户名和密码,完全权限。当我创建从A到B的数据库链接时,我看不到错误:

ALTER SESSION SET CURRENT_SCHEMA = TPMDBO;

CREATE DATABASE LINK link_to_uat
CONNECT TO {UAT username}
IDENTIFIED BY {UAT user password}
USING '{UAT fqdn}:2053/ocrdev';

当我尝试对链接服务器运行查询时:

SELECT * FROM TheTable@link_to_uat;

我收到:

ORA-02019: Connection description for remote database not found

我可以使用Oracle Sql Developer和其他工具上面的用户名和密码连接到远程数据库,但由于某些原因,Oracle无法解决这个问题。

我现在正在工作的这家公司锁定了所有计算机,包括开发箱,因此我无法修改TNSNames.ora文件。

我尝试使用以下方法创建链接服务器:

CREATE DATABASE LINK link_to_uat
CONNECT TO {remote username}
IDENTIFIED BY {remote user\'s password}
USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={fqdn})(PORT=2053)))(CONNECT_DATA=SERVER=DEDICATED)(SERVICE_NAME=ocrdev)))';

但显然语法不好而且我得到了:

ORA-12154: TNS: could not resolve the connect identifier...

建议的所有操作都涉及修改TNSNames.ora文件,这在dev监狱中是不可能的。

对于远程和本地数据库,我都有管理员权限。

以下是我在Aqua Data Studio中与两台服务器的连接的屏幕截图:

UAT Localhost

有没有其他方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

好的,经过一段时间的讨论后我发现我需要创建一个 PUBLIC 链接数据库。像这样:

CREATE PUBLIC DATABASE LINK "LINK_TO_PROD"
  CONNECT TO {username} IDENTIFIED BY {password}
  USING '(DESCRIPTION =(ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = {prod server})(PORT = 2053)))
    (CONNECT_DATA = (SERVICE_NAME = orcprd)))'