这几天系统正式上线,在线用户200多人只有,我们自己的系统和另外一家合作厂商的系统公用一个数据库。
我们自己的系统还有个ETL程序,结果这几天ETL老是报错:ora-12537 TNS连接关闭。
出现这个错误我第一个念头是去查下网络情况,结果监测了10来分钟而且也检查了防火墙的策略无果,而在这10来分钟的时候网络畅通但是ETL还不定时的报错,排除网络问题;
那就是oracle会话、进程数的问题,一看果不其然:
select count(*) from v$session;
140多条记录,其中2/3是合作厂商的连接;
调整了下参数就ok了!
这个问题给了我几个教训:
1、千万别把第2个系统的数据放在同各一个库中;
我当时处于便于维护的考虑(主要是因为是合作厂商),需要同步数据,所以扔到一起了;而且他们说他们的数据量不大;
以后应该这样:除非主导权不到你手里,否则一概分清楚了,即使项目组无法单独提供服务器也要分开实例(你和客户说,免得以后我有借口说是因为他们系统的原因导致数据库慢了);合作厂商的系统不知道怎么搞的,即使没人登陆页会有将近100个的会话数挂在数据库里,我晕;
2、数据库调优能提前的就提前做,别等发现了发现多么被动;
等项目闲下来了考虑下分离下数据库吧!恩,就这么干!