传说一般是由于防火墙问题造成的。最简单的方法是关闭防火墙。
解决方案如下:
Oracle在windows平台下使用的是Socket专用模式。要改为共享模式才行。
首先到你的远程数据所在的机器下
在运行处regedit
找到HKEY_LOCAL_MACHINE--->SOFTWARE--->ORACLE--->HOME0
添加一个字符串USE_SHARED_SOCKET 值为TRUE
然后去控制面板,例外处,添加一个例外端口:1521(这里的例外端口可以在你的Oracle Enterprise Manager Console中点击数据库名,看看右边的port,就是那个值)
然后去你的Oracle安装目录,找一个类似init.ora的文件。这个文件可能有很多,找到你的数据库名所在的目录下的文件例如我的数据库名叫chicoDB,那么找到oracle/admin/chicoDB下的那几个init.ora文件可能文件后面有一大串数字...在那些文件末尾添加一行
mts_dispatchers="(address=(protocol=tcp)(host=chico)(port=1521))(dispatchers=1)"
这里的host是你的主机名。
然后去你的Oracle Enterprise Manager Console关闭chicoDB,然后再启动它即可。
当然你的首要条件是已经建立的public database link, 已经在tnsnames.ora中添加的协议适配器。
如果不知道如何添加,参考我的blog:
http://blog.csdn.net/cctt_1/archive/2009/06/05/4245996.aspx