某银行灾备环境. 运维人员经常需要远程校验灾备端数据的可用性。为了方便日常的常规操作写了专门的启动停止脚本.执行完脚本就登录不上测试主机了.能ping通。运维人员反映,偶尔也会发生这样的问题,一般做法就是要求系统管理员帮他们重新启动分区,听完了,感觉问题好诡异啊。 我们通过HMC登录到分区,AIX运行正常。后来经常一番仔细排查询问找到了"病根".
欢迎大家交流,周四公布原因
我的看法是:fuser之前应该先退到根目录,以防把自己杀出来,因为之前su到oracle用户,可能已经切到了/oracle目录了。
另外脚本停数据库那段,个人认为应该先停监听、再停库更合理(防止依然有连接不能正常停掉数据库)。
收起确实是脚本里的这行出问题,不是说这行命令有问题,是每次出现这个问题的时候,运维人员说过,有时候执行脚本停止里面有一些报错,为了保证执行成功,他们又执行了一遍。问题就出在这里,本来第一遍执行的时候/oracle已经被成功umount了,第二次执行的时候就不是/oracle文件系统了,而是一个目录,这个时候fuser会把很多root相关的进行直接kill掉,导致我们无法再登录了。
这个场景很好模拟,找台测试机,执行2遍,效果自然就显现了。
如何解决呢,通过hmc登录到终端重启ssh进程,startsrc -s ssh.虽说这样能够重新登录,但是里面可能有其他的进程没有被重新启动,最安全的办法还是重启一下分区。
其实在前面已经执行了removedev.sh,不知道什么东西,字面意思像是删除hdisk设备。后面继续做fuser时,/oracle并不代表1个FS,而是/下面的一个子目录而已,fuser -k参数自然连带根也一起kill掉了。
收起加个判断好
可以使用sh -x调试一下脚本 看看哪段出了问题,我以前做了个db2升级,就遇到升级脚本有问题,通过sh -x诊断出来,自己改的,share一下
2.5章节,供大家参考,指正
附件:
XX电信DB2 v8.1 升级FP18补丁升级方案.doc (223.5 KB)
收起