Linux下oracle用户crontab不生效的解决办法

时间:2017-09-01 11:00来源:网络整理 作者:Linux先生 举报 点击:
这个DB之前的老服务器上有一个shell,放在root用户下,用来执行oracle的每周二自动全库备份。现在DB迁移了,换到新的服务器下,想用oracle用户来完成这个操作,

本文地址:http://www.kooct.com/install/faq/20170901_how_linux_12793.html
文章摘要:,松手见于好梦难成,含水户型吉尼斯纪。

这个DB之前的老服务器上有一个shell,放在root用户下,用来执行oracle的每周二自动全库备份。

现在DB迁移了,换到新的服务器下,想用oracle用户来完成这个操作,结果一开始测试的时候不成功,自动任务写好无法自动执行。

尝试手动执行shell
[oracle@oradb2 ~]$ /ora_bak/dbbak/oracle_backup.sh

发现可以手动执行成功:

Linux下oracle用户crontab不生效的解决办法

设置自动任务

30 11 * * 3 /ora_bak/dbbak/oracle_backup.sh
因为昨天刚好是周三,所以自动任务测试的时候定义为:每周三的11:30分

查看报错
到了11点30分01秒的时候,这个cron开始执行,但是失败了,从日志中可以看到如下信息:

Linux下oracle用户crontab不生效的解决办法

问题分析
从报错上看,linux报出了一个找不到expdp命令的错误,但是我们手动还能执行,这说明是不是shell里写的有些问题呢?

我们来看一下这个shell:

#!/bin/sh rq=`date +"%Y%m%d"` expdp xxxxx/xxxxx directory=DUMP_DIR dumpfile=xxx_bak$rq.dmp logfile=xxx_bak$rq.log schemas=xxxx

可以看到,很简单的两条命令而已,那为啥自动执行不行呢?

展开联想
老的DB服务器上,用的root账号执行,新的服务器上,用的oracle账号执行。
这是一个比较明显的区别,应该就是这里有问题,再往下想一下,可能跟不同用户的环境变量有关。

正是因为环境变量的关系,所以导致oracle用户在执行cron的时候,找不到expdp这个命令,那么为什么oracle找不到呢?答案是:shell里没指定环境变量。

问题解决

我们修改一下shell:

#!/bin/sh . /etc/profile . ~/.bash_profile rq=`date +"%Y%m%d"` expdp xxxx/xxxx directory=DUMP_DIR dumpfile=xxx_bak$rq.dmp logfile=xxx_bak$rq.log schemas=xxx

这次就没有报错了,cron准时执行。

推荐内容
幸运农场安卓版下载不了 幸运农场连连看 重庆幸运农场开奖走势图百度 农场果蔬连连看3 重庆幸运农场走势水果
幸运农场人工计划 重庆幸运农场20选8 幸运农场规则 快乐8几点结束 重庆幸运农场永恒胆码
幸运农场中奖规则 大乐透中奖规则 重庆时时彩稳赢技巧 幸运农场缩水软件手机版 lol关键词查询
幸运农场图案走势图 手机下载重庆幸运农场 重庆幸运农场20选8 重庆幸运农场玩法介绍 彩票控重庆时时彩
宁夏十一选五开奖结果走势图 内蒙古快三遗漏数据 天津快乐十分一定牛 麻将公式图 云南时时彩玩法技巧
极速时时彩投注 贵州11选5今日开奖 海南飞鱼群有没有 安徽十一选五开奖走势图 2017码报资料
新疆11选5开奖号 山西快乐十分开奖结果彩票控 二分彩计划 陕西福彩快乐10分玩法 湖南快乐十分技巧与破解
佛说mc七星在线播放 河北十一选五开奖 湖北体彩新11选5 斗牛棋牌游戏在线玩 安徽省十一选五