2017-07-09 241 views
1

我有一个shell脚本,它具有以下语句。它独立执行时可以正常工作。独立Shell脚本正常工作,但不能与crontab一起工作

$ORACLEHOME/bin/sqlplus -s [email protected]$LINKNAME/$BDBPASSWORD <<EOF 
    DECLARE 
    COUNT1 NUMBER:=0; 
    BEGIN 
    EXECUTE IMMEDIATE 'DROP TABLE TABLE1'; 
    EXECUTE IMMEDIATE 'CREATE TABLE TABLE1 AS SELECT * FROM [email protected]'; 
    END; 
/

EOF 

但是,当我从crontab调用这个f,它失败。我的crontab看起来像

*/1 * * * * /bin/sh /home/mig/Test.sh > /home/mig/Test.txt 

我在日志中收到以下错误。

Error 6 initializing SQL*Plus 
SP2-0667: Message file sp1<lang>.msb not found 
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory 

任何帮助表示赞赏。

+0

的可能的复制[环境变量时,Python脚本由cron运行(https://stackoverflow.com/questions/42114982/environment-variables-when-python-script-run-by-cron) – l0b0

+0

你脚本包含对'ORACLEHOME'的引用,而错误消息提到'ORACLE_HOME'。那是故意的吗?另外,你如何设置脚本中使用的所有变量? – l0b0

+0

我有另一个文件,我已经初始化变量并从我的主脚本调用该脚本。 – GSG

回答

1

尝试在shell脚本的顶部添加此行。

export ORACLE_HOME=/path/to/oracle/home/directory 

得到你的外壳采用echo命令将ORACLE_HOME环境变量的值

+0

我有另一个脚本,我已经在一个变量中导出了oracle主目录,并且在这个脚本中调用了该脚本。 script1:export ORACLEHOME ='/ u01/app/oracle/product/12.1.0.2/dbhome_1'script2:source script1.sh – GSG

+0

尝试添加这一个也。不知道确切的原因,但我希望它能工作 –

+0

错误是要求设置ORACLE_HOME,并设置ORACLEHOME并引用这就是错误来临的原因 –

1

Oracle需要ORACLE_HOME和脚本需要ORACLEHOME
不用说,将脚本更改为使用ORACLE_HOME会更好,但这不是问题的根本原因。

crontab命令将跳过您的登录脚本。我认为ORACLE_HOME已设置在您的.profile中,因此请执行此操作。

*/1 * * * * source ~/.profile; /bin/sh /home/mig/Test.sh > /home/mig/Test.txt 
相关问题