plsql远程连接oracle的纠结。。
标题很唬人,最后很崩溃。。
下午在服务器(win2003 64bit)上建好oracle实例,在客户端本地配置好tnsname.ora里的服务名。
testxgd =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.132)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testxgd)
)
)
结果plsql连不上。
开启服务器上的监听程序:
开启远程监听服务:
lsnrctl start
关闭远程监听服务:
lsnrctl stop
查看监听状态:
lsnrctl status
服务器本地可以测试:
c:>tnsping testxgd
如果客户端本地装了oracle客户端,可执行远程测试:
c:>tnsping 192.168.1.132:1521/testxgd
结果因为服务器本地测试一直失败,然后苦苦研究D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN目录下的三个ora配置文件,各种改。
还是不行。最后把三个文件还改成原来的配置,如下:
tnsname.ora:
testxgd =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = svctag-8d8bk2x)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testxgd)
)
)
listener.ora:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = svctag-8d8bk2x)(PORT = 1521))
)
)
sqlnet.ora:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
特此记录下来,以防以后忘了乱改。。
突然想起了防火墙。。于是跑到组里其他oracle服务器上一看,防火墙果然都关了,虽然这不太安全,但是。。顾不了那么多了。。
于是把132的防火墙狠狠的关了,也不选择过滤规则了。。结果一连,松松的就成功了!
虽然此时本地tnsping testxgd还是报无效的TNS 03505 :无法解析名称的错误。补充一下,后来我把实例删除,重新建了一下,就完美了。
好伤。。
结论:不要轻易把问题想得很复杂,先从常识入手。防火墙。。。