环境:
两台服务器,一台网站服务器(IP:192.168.0.1),一台数据库服务器(IP:192.168.0.2,Service_name:orcl)。数据库服务器安装Oracle92。网站服务器安装Oracle客户端程序。操作系统都是win2003。
问题描述:
.0.1服务器不定期的出现连不上.0.2数据库。表现为:在.0.1的命令窗口中输入tnsping orcl 可以ping通,但是用pl/sql dev无法连上数据库,转用sqlplus也无法连上数据库。但是在其他电脑上可以连上.0.2数据库。
各种尝试:
别的电脑没问题,就.0.1服务器连不上数据库。因此猜测是.0.1服务器出现问题。于是,重装.0.1系统,重新安装.0.1服务器的oracle客户端程序,重新配置命名服务。都没有效果,问题照旧。
在网上找了很久,问题定位在:oracle安装目录中的:network\ADMIN\tnsnames.ora,network\admin\sqlnet.ora这两个文件中。网上说要把SQLNET.AUTHENTICATION_SERVICES= (NTS)注释掉。于是在观察.0.1和.0.2的sqlnet.ora文件的时候,发现了.0.2数据库安装目录下的sqlnet.ora文件中的该语句被设置为SQLNET.AUTHENTICATION_SERVICES= (none)。
问题解决:
在.0.2服务器上的数据库安装目录下的:\network\admin\sqlnet.ora文件中:
将SQLNET.AUTHENTICATION_SERVICES= (none) 改回默认的:SQLNET.AUTHENTICATION_SERVICES= (NTS),之后,就可以正常连上数据库了。
(猜想:客户端的配置要与服务器的sqlnet.ora配置一致?)