就是这种情况,我在 rman中执行了3个文件来执行备份数据库命令
#!/bin/bash
sqlplus /nolog @/u01/conectar.sql
connect sys/manager as sysdba
ho rman target mydatabase/mypassword @/u01/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吗?如果您能够回答完全修改我会很感激,我不是这个环境的专家,所以一般的知识需要答案会让我一样,谢谢。
答案 0 :(得分:1)
你可以通过多种方式实现这一目标:
就在cron行之前:
PATH=$PATH:/full/path/to/oracle/bin
或者在cron线上:
00 15 * * * PATH=$PATH:/full/path/to/oracle/bin /u01/test.sh
让您的脚本test.sh
获取另一个设置Oracle环境的共享脚本:
source /path/to/oracle_env.sh
我更喜欢第三种方法,因为它非常灵活,它可以帮助我们保持crontab的整洁。 .bash_profile应仅用于交互式shell - 与预定脚本共享它并不好,特别是在生产中。