10-6月 -2015 16:27:09 * (CONNECT_DATA=(SERVICE_NAME=hoegh)(CID=(PROGRAM=D:\\HOEGHATS\\HOEGH.exe)(HOST=)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=3.16.11.50)(PORT=4528)) * establish * hoegh * 0
根据大家的建议,我尝试在监听配置文件Listener.ora中添加了静态监听,其中黄色部分为新添加内容。
但是,效果不大。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = c:\\oracle\\product\\10.2.0\\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = hoegh)
(ORACLE_HOME = c:\\oracle\\product\\10.2.0\\db_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBSERVER)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
增大processes初始化参数
黔驴技穷,我又使了这招,可是丝毫不起作用,不同的是以往连接总数是一百三四十,现在增加到了二百七八十,问题依旧。
结合上面的静态监听,我再次查看listener.log,发现大量TNS-12518和TNS-12560报错,以及少量的TNS-12514报错:
15-6月 -2015 15:39:13 * 12502
TNS-12502: TNS: 监听程序没有从客户机收到 CONNECT_DATA
15-6月 -2015 15:39:13 * (CONNECT_DATA=(SERVICE_NAME=hoegh)(CID=(PROGRAM=D:\\HOEGHATS\\HOEGH.exe)(HOST=CLIENT5)(USER=work))) * (ADDRESS=(PROTOCOL=tcp)(HOST=3.16.210.94)(PORT=55359)) * establish * hoegh * 12518
TNS-12518: TNS: 监听程序无法分发客户机连接
TNS-12560: TNS: 协议适配器错误
15-6月 -2015 15:39:13 * (CONNECT_DATA=(SERVICE_NAME=hoegh)(CID=(PROGRAM=D:\\HOEGHATS\\HOEGH.exe)(HOST=)(USER=JDWL))) * (ADDRESS=(PROTOCOL=tcp)(HOST=3.20.16.50)(PORT=2200)) * establish * hoegh * 12518
TNS-12518: TNS: 监听程序无法分发客户机连接
TNS-12560: TNS: 协议适配器错误
15-6月 -2015 15:39:13 * (CONNECT_DATA=(SERVICE_NAME=hoegh)(CID=(PROGRAM=D:\\HOEGHATS\\HOEGH.exe)(HOST=DISPATCHER1)(USER=work))) * (ADDRESS=(PROTOCOL=tcp)(HOST=3.16.210.92)(PORT=50761)) * establish * hoegh * 12518
TNS-12518: TNS: 监听程序无法分发客户机连接
TNS-12560: TNS: 协议适配器错误
15-6月 -2015 15:39:13 * 12502
TNS-12502: TNS: 监听程序没有从客户机收到 CONNECT_DATA
15-6月 -2015 15:39:13 * (CONNECT_DATA=(SERVICE_NAME=hoegh)(CID=(PROGRAM=D:\\HOEGHATS\\HOEGH.exe)(HOST=WINOW-BWMCG6U3V)(USER=JDWL))) * (ADDRESS=(PROTOCOL=tcp)(HOST=3.20.1.52)(PORT=3487)) * establish * hoegh * 12518
TNS-12518: TNS: 监听程序无法分发客户机连接
TNS-12560: TNS: 协议适配器错误
15-6月 -2015 15:39:13 * (CONNECT_DATA=(SERVICE_NAME=hoegh)(CID=(PROGRAM=D:\\HOEGHATS\\HOEGH.exe)(HOST=ATSSERVER1)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=3.16.210.74)(PORT=3404)) * establish * hoegh * 12518
TNS-12518: TNS: 监听程序无法分发客户机连接
TNS-12560: TNS: 协议适配器错误
15-6月 -2015 15:39:13 * (CONNECT_DATA=(SERVICE_NAME=hoegh)(CID=(PROGRAM=D:\\HOEGHATS\\HOEGH.exe)(HOST=CLIENT2)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=3.16.210.66)(PORT=2229)) * establish * hoegh * 12518
TNS-12518: TNS: 监听程序无法分发客户机连接
TNS-12560: TNS: 协议适配器错误
重建监听器
重启设备是一个“大招”,以前碰到“疑难杂症”重启往往能够收到奇效。最后,我甚至都想着重建数据库了,不过考虑着动静有点大,可能会影响其他人工作,只好作罢;那我重建一下监听试一下吧。
于是,我通过netca删除原有监听,重建监听程序listener,都采用默认配置。
可是,问题依旧。
更换微软驱动System.Data.OracleClient
真是没招了,最后和部门的架构师一起讨论这个问题,会不会和数据库驱动有关系呢。
我们的应用程序是用C#开发的,连接数据库需要数据驱动支持,以前我们采用的是微软的数据库驱动System.Data.OracleClient,最近这个项目换成了Oracle官方驱动Oracle.ManagedDataAccess.Client。至于为什么要换,最主要是考虑Oracle官方驱动部署方便,无需安装Oracle数据库客户端。