把sqlplus命令写入sh脚本遇到的问题(solaris)以及. (点空格)执行脚本文件的原因

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值