crontab的进程里面无法使用sqlplus,如何设置可以使用呢?
http://bbs.chinaunix.net/thread-815757-1-1.html
crontab中执行sqlplus失效,环境变量的缘故。crontab跟shell的环境变量是不一样的。所以要在脚本中加入
. /root/.bashrc
以导入环境变量。(可能不同的linux系统使用的配置文件名称不一样)
直接将数据库相关度的环境变量在脚本中声明也可以(至少在我的系统上是这样的):
export ORACLE_BASE=/oracle/ora9
export ORACLE_HOME=/oracle/ora9/product/9.2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER=oracle
export ORACLE_SID=bsmp
export ORACLE_TERM=xterm
当然,以上声明是/root/.bashrc中的 --!
以下是测试脚本:
#!/bin/bash
. /root/.bashrc
sqlplus --help
#---end---
将该脚本放入crontab执行
* * * * * bash /home/test.sh>/home/test.log
显示出sqlplus的帮助信息就说明可以用sqlplus了。
---------------------
作者:linlinhust
来源:CSDN
原文:https://blog.csdn.net/linlinhust/article/details/8148019
版权声明:本文为博主原创文章,转载请附上博文链接!
首先普及一个知识点:. (点空格)莫个脚本文件相当于利用source文件执行这个脚本。
source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。
如:source .bash_rc 与 . .bash_rc 是等效的。
注意:source命令与shell scripts的区别是,
source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。
---------------------
作者:stone8761
来源:CSDN
原文:https://blog.csdn.net/stone8761/article/details/46877753
版权声明:本文为博主原创文章,转载请附上博文链接!
修改后正确的脚本:
#!/bin/sh
. /export/home/oracle/.profile
sqlplus /nolog << EOF
conn omcr/lte;
spool /export/home/omcrftp/log/select.txt
@/export/home/oracle/legacy/sh/select_job.sql
spool off
exit
EOF