Chinaunix

标题: 问个简单问题(已解决) [打印本页]

作者: dzminglong    时间: 2014-07-11 11:56
标题: 问个简单问题(已解决)
本帖最后由 dzminglong 于 2014-07-15 08:55 编辑

  写了个oracle的shell备份脚本,手动执行一点问题都没有
但是放在crond里面就执行不了,但是看crond的日志却是执行了,这是什么问题?
作者: dzminglong    时间: 2014-07-11 12:01
     同样的操作,另外一台倒是执行了,但是邮件却说执行失败,又是什么问题?
作者: dzminglong    时间: 2014-07-11 12:03
  1. #!/bin/bash
  2. email=/usr/local/bin/email
  3. DESTDIR=/path/backup
  4. if [ -d $DESTDIR ];then
  5.   echo "==backup start==" > /dev/null
  6. else
  7.   mkdir -p $DESTDIR
  8. fi
  9. rman target /   <<EOF
  10. run {
  11. allocate channel c1 type disk;
  12. allocate channel c2 type disk;
  13. backup format '$DESTDIR/full_%U_%T' skip inaccessible filesperset 5  DATABASE TAG orcl_hot_db_bk;
  14. sql 'alter system archive log current';
  15. backup format '$DESTDIR/arch_%U_%T' skip inaccessible filesperset 5 ARCHIVELOG ALL DELETE INPUT;
  16. backup current controlfile tag='bak_ctlfile' format='$DESTDIR/ctl_file_%U_%T';
  17. backup spfile tag='spfile' format='$DESTDIR/ORCL_spfile_%U_%T';
  18. release channel c2;
  19. release channel c1;
  20. }
  21. EOF
  22. if [ $? = 0 ];then
  23. echo "`date +%Y年%m月%d号`backup successfully" | $email -s "`date +%m月%d号`备份情况" xxx@xxx.com
  24. else
  25. echo "`date +%Y年%m月%d号`backup failed" | $email -s "`date +%m月%d号`备份情况" xxx@xxx.com
  26. fi

  27. ~                                                                                                                                                                                                                                                                             
  28. ~               
复制代码

作者: dzminglong    时间: 2014-07-11 12:03
  在线等答难解惑!
作者: www_xylove    时间: 2014-07-11 18:23
crond格式,权限,路径对吗

作者: dzminglong    时间: 2014-07-11 20:14
回复 5# www_xylove


    crond格式绝对正确,权限也有,我看了日志,计划执行了,路径也没错,就是执行完的结果为何是没有执行 {:3_188:}
作者: jackson198574    时间: 2014-07-14 10:51
最好提供一下crontab -l 的输出和计划执行与无结果的实际操作结果看一下才好判断。
作者: phanx    时间: 2014-07-14 23:33
本帖最后由 phanx 于 2014-07-14 23:34 编辑

回复 1# dzminglong


    你这个问题确实很简单。 根源就是 环境变量

crontab在执行的时候,没有附带你 在 shell 下执行的那些变量,包括PATH环境变量。
所以,最好的方法是在你的脚本中在export 需要的变量,例如 ORACLE_HOME ORACLE_SID PATH 等。
然后就会正常执行了。

这个问题是常见错误。
作者: bpxyz    时间: 2014-07-14 23:48
这脚本逻辑上来说太差劲了。
楼上说的确实重要,我也碰到过一次类似情况。
最好在脚本里export几个关键的环境变量,比如 PATH,ORACLE_SID,ORACLE_HOME.
作者: dzminglong    时间: 2014-07-15 08:53
回复 8# phanx


    非常感谢,我去试试
作者: dzminglong    时间: 2014-07-15 08:54
回复 9# bpxyz


    刚接触几天的菜鸟
作者: 流氓无产者    时间: 2014-07-21 09:37
dzminglong 发表于 2014-07-11 11:56
写了个oracle的shell备份脚本,手动执行一点问题都没有
但是放在crond里面就执行不了,但是看crond的日志 ...

环境变量/路径都check一下
作者: dzminglong    时间: 2014-07-21 09:40
回复 12# 流氓无产者


    老兄还混这个板块的啊




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2