场景描述:
一个生产的数据库备份脚本,使用定时任务crontab配置自动执行bakup.sh,报错信息是
expdp: command not found
可是,我在linux中,直接执行expdp命令行,可以正常执行成功,且正确导出数据备份文件。
同时,我手动执行备份脚本bakup.sh,也可以正常执行成功,且正确导出数据备份文件。
最终解决方法:
- 检查/home/oracle/.bash_profile 中oracle的环境变量配置是否存在,我的.bash_profile文件中是存在oracle相关配置的。(这里expdp命令是oracle命令,我的用户目录是/home/oracle,这个根据自己的用户目录和命令不同,检查不同的配置是否存在且正确,具体自行查搜索引擎)
- 在bakup.sh中的 #! /bin/sh后面增加一行,即在每次定时任务执行bakup.sh脚本时,先刷新一下环境变量。
source /home/oracle/.bash_profile