Linux环境下Oracle数据库连接数超过默认设置导致iMC以及数据库出错的解决办法
一、组网:
无
二、问题描述:
Linux系统下iMC平台服务器集中式部署多组件或者某些分布式部署的环境,在服务器运行一段时间以后可能会出现部署监控代理中各平台组件进程异常、运行环境中显示数据库连接失败以及iMC的web界面各业务连接出错等问题。
三、过程分析:
在Linux环境下安装完Oracle数据库以后,Oracle所使用的进程数processes和会话数sessions默认设置的大小分别为150和170。processes和sessions简单的区别如下:每个sql login称为一个连接(connection),而每个连接,可以产生一个或多个会话(session)。如果数据库运行在专用服务器方式,一个会话(session)对应一个服务器进程(process);如果数据库运行在共享服务器方式,一个服务器进程(process)可以为多个会话(sessions)服务。具体来说,一个process可以有0个,1个或者多个sessions;一个session也可以存在这个或者那个process中。
如果iMC服务器上安装部署了多个组件,在各组件进程启动直至稳定的过程中,由于各个进程需要与Oracle数据库通信并建立连接,所以进程数和会话数会不断增加,可能会超过默认150和170的大小,进而导致各组件进程无法与数据库通信,造成组件进程显示异常以及数据库连接失败等问题的发生。
四、解决方法:
由于连接数超出了默认的设置,所以需要增大系统默认连接数的大小,保证各组件进程有足够的连接数与Oracle数据库建立连接并正常通信。具体方法参考如下步骤:
1,首先判断是否可以正常进入Oracle数据库。
打开终端,执行命令:
sqlplus sys/password@网络服务名 as sysdba
(注:1,使用sys密码代替上述password;2,iMC使用网络服务名连接数据库,它包含网络服务名称、主机名称、使用协议和连接端口、数据库服务器全局数据库名等参数。当iMC服务器使用非本地数据库服务器时,需要配置网络服务名,以便iMC可以连接数据库服务器。具体配置可以参见《Oracle 11g安装配置指导书(带数据库分离式安装)》中“5 配置网络服务名”)
或者切换为Oracle账户并使用sys用户登录:
su – oracle
sqlplus sys/password as sysdba
如果通过上述两种方法都无法正常连接数据库并且显示如下ERROR信息:
maximum number of processes(%s) exceeded,说明目前连接数已经达到或者超过了默认设置的连接数大小,此时需要打开部署监控代理(通过命令./opt/iMC/deploy/dma.sh),在不影响业务的前提下,关闭一到多个plat的基础组件进程(例如:imcacldm.exe以及imcvlandm.exe等),然后再使用上述方法就可以重新登录Oracle数据库了。
2,在连接到Oracle数据库以后,可以通过如下命令查看默认设置的进程(process)和会话(session)连接数:
show parameter processes
show parameter sessions
此时可以看到processes和sessions的TYPE为integer,VALUE的值分别为150和170。
继续查看当前数据库已经使用的进程和会话数:
select count(*) from v$process;
select count(*) from v$session;
此时可以看到当前实际使用的连接数的大小。
3,对比默认设置的和实际使用的连接数可以发现问题所在。通过如下命令修改系统默认设置的进程数:
alter system set processes=400 scope = spfile;
注意:上述设置的400即是想要修改的进程数process大小,实际设置中可以根据组件部署情况灵活调整大小,推荐设置为300到400左右。此处只需修改进程数processes,不需修改会话数sessions,因为实际中processes和sessions有对应关系,系统可以通过如下公式自动计算:sessions = (1.1*processes) + 5,在修改完processes并生效以后,sessions会自动计算出来。
然后保存配置:
commit;
此时需要重启Oracle数据库,在不影响业务的前提下,通过命令:shutdown immediate关闭数据库,再通过startup命令重启数据库。
说明:
1,导致数据库连接失败的原因以及其解决办法不仅限于此,本文只根据一种常见的原因提出解决思路和方法。
2,此方法使用的前提:Oracle数据库监听器(Listener)正常启用并工作;需要保证服务器有足够的磁盘空间,因为磁盘空间剩余很小的情况下,会导致系统产生大量的僵尸进程占用连接数并无法自动释放,也会导致各组件进程以及数据库系统无法正常使用。
3,重启数据库以及操作系统需谨慎,务必确保不影响业务。
4,因其他原因导致数据库连接失败等的问题请联系业务软件二线人员进行技术支援和问题定位。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作