2018年5月11日上午11点,突然被客户通知用户无法正常使用某办公软件,迅速到客户办公室查看具体现象,具体如下:
将该情况反馈给开发公司,开发公司反馈需查看日志报错情况,迅速到机房执行以下命令。
tail -500f *.log
查询到如下信息。
开发人员反馈说,系统设置为三个月内需重置一次数据库密码,没有及时重置密码导致报错。好吧,先看一下alert日志,确定原因。
先进入到alert日志路径
/u01/app/oracle/diag/rdbms/sid/sid/trace
进行关键词搜索
grep "ORA-" alert_sid.log | tail -50
获取到以下错误:
ORA-00020: maximum number of processes () exceeded
ORA-00020: maximum number of processes (150) exceeded
ORA-20 errors will not be written to the alert log for the ORA-20 errors.
切换到oracle用户,连接数据库查看一下数据库允许的最大连接数,当前的数据库连接数。
sqlplus */* as sysdba
select value from v$parameter where name ='processes';--数据库允许的最大连接数
select count(*) from v$process;--当前的数据库连接数
好吧,进程数已满,于是等到12点,停应用,停数据库,重置数据库密码,同时增加连接数。
alter uesr XXX identified by XXX;--修改数据库用户密码
alter system set processes = 300 scope = spfile;--修改最大连接数
得到二线工程师确认后,执行以上命令,重启数据库,重启服务,OK,这次故障事件得到解决。
总结,此次故障因未及时重置数据库密码,导致进程数异常增加最后达到上限,应用服务异常,最后重置密码,并为了保险起见增大进程数,重启数据库,重启服务,此次故障得以解决。因此次故障影响时间断较短,并及时解决,未遭到客户指责。为杜绝以上情况产生,个人建议编辑一个定期重置数据库密码的脚本。
鉴于本人还是菜鸟,脚本编辑待我研究研究再说。