oracle tcp timeout,Oracle的dblink简单使用心得,TNS:Connect timeout occurred

情景:不同服务器之间的数据库中的数据需要通信(想用触发器)。然后就考虑新建dblink来完成这个需求

类似的这种方式在MySQL中是用FEDERATED引擎,而oracle中是dblink。

##########################################################################################

create public database link 自定义的连接名字 connect to 连接远程服务器的用户 identified by 连接远程服务器的密码

using '(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 目标服务器的ip)(PORT = 目标服务器的端口))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = 目标服务器的服务名)

)

)';

// 如:

create public database link my_dblink connect to test1234 identified by pw123456

using '(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.5.201)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = test789)

)

)';

windows上的oracle服务名可以去服务里看。oracleservicexxx  xxx就是服务名

或者用这个 select name,value from v$parameter where name='service_names'

也能查出来服务名

3246aeb7f325bda96978cd4abaae743b.png

-----------------------------------------

然后我遇到的最恶心的问题就是测试的时候  报这个错:TNS:Connect timeout occurred

连接超时 ,然后我一直测啊测,防火墙啥的都关了,ping 目标ip,telnet 目标ip 端口 也都通

后来发现时网络质量问题,贼恶心。

测试方法

select * from 远程服务器的表@你建的连接名字

能查出结果就是没问题。

上边创建的时候

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 目标服务器的ip)(PORT = 目标服务器的端口))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = 目标服务器的服务名)

)

)

这个东西,可以在using后边直接写,也可以在配置文件里边写。。就是在tnsnames.ora文件中配置的目标数据库的连接信息,就是定义一个这样的:

aaa= (DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 目标服务器的ip)(PORT = 目标服务器的端口))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = 目标服务器的服务名)

)

)

这样的话,创建的时候using后边直接写aaa就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值