案例4 小脚本惹出了大麻烦

某银行灾备环境. 运维人员经常需要远程校验灾备端数据的可用性。为了方便日常的常规操作写了专门的启动停止脚本.执行完脚本就登录不上测试主机了.能ping通。运维人员反映,偶尔也会发生这样的问题,一般做法就是要求系统管理员帮他们重新启动分区,听完了,感觉问题好诡异啊。 我们通过HMC登录到分区,AIX运行正常。后来经常一番仔细排查询问找到了"病根".

欢迎大家交流,周四公布原因

[code class=""]#!/bin/sh
su - oracle -c \"/home/oracle/stopdb.sh\"
echo \"Please waitting for 30 seconds...\"
sleep 10
su - oracle -c \"/home/oracle/stopasm.sh\"
/etc/init.cssd stop
/home/oracle/removedev.sh
-----------------------------------------

#!/bin/sh
. /home/oracle/.profile
echo `id`
echo `env|grep ORA`
export ORACLE_SID=scdb
sqlplus '/as sysdba' <shutdown immediate
exit
EOF
lsnrctl stop
------------------------------------------

#!/bin/sh
#umount filesystem
fuser -kux /oracle
umount /oracle

#varyoffvg
varyoffvg oralevg

#exportvg
exportvg oralevg

#rmdev
rmdev -dl hdisk10
rmdev -dl hdisk11
rmdev -dl hdisk12
rmdev -dl hdisk13
rmdev -dl hdisk14
rmdev -dl hdisk15
rmdev -dl hdisk16
rmdev -dl hdisk17
[/code]
参与46

11同行回答

overtopovertop系统工程师互联网公司
我的看法是:fuser之前应该先退到根目录,以防把自己杀出来,因为之前su到oracle用户,可能已经切到了/oracle目录了。另外脚本停数据库那段,个人认为应该先停监听、再停库更合理(防止依然有连接不能正常停掉数据库)。...显示全部

我的看法是:fuser之前应该先退到根目录,以防把自己杀出来,因为之前su到oracle用户,可能已经切到了/oracle目录了。

另外脚本停数据库那段,个人认为应该先停监听、再停库更合理(防止依然有连接不能正常停掉数据库)。

收起
互联网服务 · 2016-11-30
浏览2924
  • 快说到点子上了
    2016-12-01
  • 是否先停监听都没关系,immediate参数可以保证执行瞬间,会拒绝所有新连接,也会正常关闭所有老连接。
    2016-12-01
powertiandipowertiandi联盟成员系统架构师李宁(中国)体育用品有限公司
书写脚本的时候,尤其是多用户的环境,最好是能够明确执行脚本的用户和执行命令时路径,注释要明确,逻辑要清楚一些,写完脚本多测试,最好在脚本开始加set -x选项,观察脚本的执行进度。...显示全部

书写脚本的时候,尤其是多用户的环境,最好是能够明确执行脚本的用户和执行命令时路径,

注释要明确,逻辑要清楚一些,写完脚本多测试,最好在脚本开始加set -x

选项,观察脚本的执行进度。

收起
互联网服务 · 2016-12-01
浏览2844

    提问者

    myciciy
    IT顾问某金融科技公司
    擅长领域: 服务器存储灾备

    问题来自

    相关问题

    相关资料

    相关文章

    问题状态

  • 发布时间:2016-11-29
  • 关注会员:11 人
  • 问题浏览:11050
  • 最近回答:2016-12-01
  • X社区推广