我正在尝试从我的Oracle AWS RDS实例创建数据库链接到我的VPC之外的另一个Oracle数据库。我创建了这个数据库链接:
create database link test
connect to myusername
identified by "mypassword"
using '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=my.db.com)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicenameame)))';
但是,当我针对该数据库链接运行查询时,我得到以下内容:
SQL> select sysdate from dual@test;
select sysdate from dual@test
*
ERROR at line 1:
ORA-12545: Connect failed because target host or object does not exist
我做了一些关于ORA-12545的谷歌搜索,人们对此错误的大多数问题是间歇性连接失败(我的不是,每次都失败),或者拼写错误的主机名/错误的端口。我的问题也不是一个不正确的主机名/端口,因为我能够使用相同的连接字符串CONNECT
到my.db.com并以这种方式查询数据库。
有人有任何建议吗?
源Oracle数据库是:
Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
我尝试连接的目标Oracle数据库是:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
答案 0 :(得分:0)
我(有点)找到了我需要的答案。 TLDR版本是经过大量谷歌搜索和桌面冲击后,我在我连接的数据库的主机名上做了nslookup
(TNSNames的my.db.com部分)。我修改了TNSNames以连接到nslookup
返回的IP。我的最终TNSNames看起来如下所示:
(DESCRIPTION=
(ADDRESS_LIST= (LOAD_BALANCE=on)(FAILOVER=ON)
(ADDRESS=(PROTOCOL=tcp)(HOST=w.x.y.z1)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=w.x.y.z2)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=w.x.y.z3)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME= servicenameame)))
长版本是我连接的Oracle主机配置了单客户端访问名称(SCAN)。在查看this post上的讨论后,我只是查找了主机名。我最初尝试修改AWS RDS参数组中的REMOTE_LISTENER,但这不可修改。