沈北中心医院ZLHIS登录不成功(ORA-12156)解决案例分享
现象
-
首先医生切换电子病历标签的时候报错。
image.png -
我远程登录导航台的时候报错
image.png
问题推理
- 首先可以确定这两个地方的报错是由同一个问题引起。
- 登录导航台就报错,可以确定不是由于电子病历数据库引起的。
- 新登录用户无法登录,已登录用户可以正常使用。
- ws说关闭电子病历服务,导航台能正式登录。但是我连续登录几个导航台就不能再登录了。确定不是由于病历服务引起的,因为病历服务使用连接池连接HIS数据库,关闭后会释放部分连接,所以假象是病历服务引起的故障。
- 判断 Process, 病历数据库 Select Count() From v
process 是499,距离上限500 仅有一个连接。Select Count(), Inst_id from gv$session group by inst_id, 结果发现全是1号机的连接,2号机没有数据。
- 结论:2号机服务早已停止,导致1号机承担所有负载,超过process设定,从而无法使新的用户登录。
问题验证
root 登录
su - grid
srvctl status database -d database
[grid@rac1 ~]$ srvctl status database -d zlhis;
Instance ZLHIS1 is running on node rac1
Instance ZLHIS2 is not running on node rac2
确认了猜测,2号机上的数据库确实已经不再运行。
启动2号机
srvctl start database -d zlhis;
报错: no space to write log
查磁盘空间:
df -h
[root@rac2 /]# df -h;
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 99G 3.9G 90G 5% /
tmpfs 32G 300M 32G 1% /dev/shm
/dev/sda2 296G 57G 224G 21% /bak
/dev/sda1 477M 42M 410M 10% /boot
/dev/sda7 25G 46M 24G 1% /home
/dev/sda5 99G 99G 0G 100% /oracle
- 确定了是 /oracle目录的磁盘满了。
- 这种通常是由于日志或者备份文件造成的。
- 删日志 (不同医院可能路径不通)
cd /oracle/app/grid/diag/tnslsnr/rac2/listener/trace
[root@rac2 trace]# cat /dev/null > listener.log
cd /oracle/app/grid/diag/tnslsnr/rac2/listener/alert
[root@rac2 trace]# rm -f *.xml
重启数据库,一切OK。
最后,为什么一号机磁盘充足,而二号机就满了?
通过一系列定位发现在 $ORACLE_HOME/dbs 下有个 core 的文件夹,里头有两个文件,个头都是30多G以上。
以前从未遇到,经过各种搜索,确定没有什么用。但只知道是数据库dump下来的内存快照之类的。
于是删之