首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CRON和SQLPLUS

CRON和SQLPLUS
EN

Stack Overflow用户
提问于 2013-07-29 19:19:59
回答 1查看 11.4K关注 0票数 1

我想在cron中运行一个包含一些sqlplus命令的脚本。

问题是,在cron中执行sqlplus命令时,由于某种原因不会执行。如果我自己执行它,脚本运行得很好。

我查看了一些论坛,甚至stackoverflow.com上的主题,找到了一些关于正确设置环境变量的提示。但是,即使在仔细检查之后,脚本也不起作用。

下面是我的脚本:

代码语言:javascript
复制
echo $ORACLE_HOME|grep "oracle" > /dev/null
if [ $? = 1 ] ; then
   echo "Setting environment variable"
   # Setting oracle environmet
   . /usr/oracle/product/10.2.0/.profile
   NLS_LANG='AMERICAN_GERMANY.WE8ISO8859P1'
fi

/usr/oracle/product/10.2.0/bin/sqlplus username/password @basics.sql > export.file

basics.sql包含:

代码语言:javascript
复制
set pagesize 0
set feedback off
set heading off
set linesize 400
set NULL nll

SELECT SOME_FIELDS FROM TABLE ORDER BY FIELD;
EXIT;

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-29 20:27:28

shell环境对Oracle非常重要,但在使用cron时几乎不是这样。像往常一样,有几种方法可以解决这个问题。

在调用脚本时,使用完全限定的路径-一点inflexible

  • make environment

  • setup
  1. 来设置它自己的执行和在cron中的执行环境。

使用脚本设置环境的一个非常标准的方法是使用oraenv脚本,该脚本通常位于/usr/local/bin中

代码语言:javascript
复制
ORACLE_SID={your_sid}
ORAENV_ASK=NO
type oraenv >/dev/null 2>&1 || PATH=/usr/local/bin:$PATH
. oraenv
SQLPATH=$HOME/sql
export SQLPATH
do your stuff

在cron行中:

代码语言:javascript
复制
10 10 * * * $HOME/.profile;$HOME/bin/your_script >$HOME/log/your_script.log 2>&1

这假设.profile不是交互式的,并导出所需的环境。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17922688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档