从crontab运行时找不到Sqlplus命令

时间:2016-12-23 13:24:06

标签: linux oracle bash cron

就是这种情况,我在 rman中执行了3个文件来执行备份数据库命令

test.sh:

#!/bin/bash
sqlplus /nolog @/u01/conectar.sql

conectar.sql:

connect sys/manager as sysdba
ho rman target mydatabase/mypassword @/u01/backup.sh

backup.sh:

#!/bin/bash
RUN {backup database;}

然后我为文件做了所有chmod u+x以使它们可执行,然后export EDITOR=nano更改cron编辑器。

当我去crontab -e i put

00 15 * * * /u01/test.sh

如果我手动clic这个test.sh,操作正常运行,但是然后在crontab中我得到了#34;你收到了一封邮件"有这条消息的事情

  

来自root@localhost.localdomain 2016年12月22日16:20:01   返回路径:   X-Original-To:oracle   Delivered-To:oracle@localhost.localdomain   收到:localhost.localdomain(Postfix,来自userid 500)   id 956CD41D4B; 2016年12月22日星期四16:20:01 -0400(AST)   来自:root@localhost.localdomain(Cron Daemon)   致:oracle@localhost.localdomain   主题:Cron /u01/test.sh   内容类型:text / plain;字符集= UTF-8   自动提交:自动生成   X-克龙包膜蛋白:   X-克龙包膜蛋白:   X-克龙包膜蛋白:   X-克龙包膜蛋白:   X-克龙包膜蛋白:   消息标识:< 20161222202001.956CD41D4B@localhost.localdomain>   日期:星期四,2016年12月22日16:20:01 -0400(AST)   /u01/test.sh:line 3:sqlplus:command not found"

请为我重新制作脚本或crontab吗?如果您能够回答完全修改我会很感激,我不是这个环境的专家,所以一般的知识需要答案会让我一样,谢谢。

1 个答案:

答案 0 :(得分:1)

你可以通过多种方式实现这一目标:

  1. 就在cron行之前:

    PATH=$PATH:/full/path/to/oracle/bin

  2. 或者在cron线上:

    00 15 * * * PATH=$PATH:/full/path/to/oracle/bin /u01/test.sh

  3. 让您的脚本test.sh获取另一个设置Oracle环境的共享脚本:

    source /path/to/oracle_env.sh

  4. 我更喜欢第三种方法,因为它非常灵活,它可以帮助我们保持crontab的整洁。 .bash_profile应仅用于交互式shell - 与预定脚本共享它并不好,特别是在生产中。

相关问题