工作中需要创建db link连接两个oracle数据库, 第一个顺利完成:
CREATE public DATABASE LINK DB79
CONNECT TO db79
IDENTIFIED BY xxx
USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 10.X.X.X1)
(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = XXX)))';
,第二个也类似创建:
CREATE public DATABASE LINK DB80
CONNECT TO db80
IDENTIFIED BY xxx
USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 10.X.X.X2)
(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = XXXX)))';
但用第二个dblink 执行sql取数却总是报错ORA-12560:TNS:协议适配器错误。
网上各种搜索,无解。
最后发现ORACLE客户端的配置信息里多了一句:(SERVER=DEDICATED)
顿时觉得有门,赶紧加进去,如下:
CREATE public DATABASE LINK DB80
CONNECT TO db80
IDENTIFIED BY xxx
USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.X.X.X2)(PORT=1521)))(CONNECT_DATA=(SID=XXXX)(SERVER=DEDICATED)))';
然后再用@DB80执行查询,通过。
记下来,免得以后忘记。
----------------------------------
补充一下,发完本贴上文没多久,同事Q我说他那发现一个ORA-12560问题,我说现在还流行玩这个了?
远程一看,跟上文的情况不一样,是因为oracle service没了!
上网搜到这个帖子http://bbs.csdn.net/topics/390688143,手工加上那个服务,解决。
然后再看到这个帖子:http://blog.csdn.net/gelyon/article/details/6860434,想起在同事那边服务器上依稀看到有360的黄色图标,赶紧确认下,果真是因为360干掉了oracle服务! 我。。。。。。
此记。