但是,效果不大。
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数据库客户端。
说干就干,把实验室的所有客户端设备的驱??都更换为System.Data.OracleClient,我再去查看session连接状况,看到输出结果哭了都快,session数真的好少啊!!!
SQL> set pagesize 150
?
SQL> set linesize 200
SQL> col username for a10
SQL> col terminal for a20
SQL> col program for a20
SQL> select username,program,terminal,count(*) from v$session group by rollup(username,program,terminal);
USERNAME PROGRAM TERMINAL COUNT(*)
---------- -------------------- -------------------- ----------
......此处省略内容
? ? ? ? ? ORACLE.EXE (q000) 1
? ? ? ? ? ORACLE.EXE (q001) DBSERVER 1
? ? ? ? ? ORACLE.EXE (q001) 1
? ? ? ? ? ? ?