2017-07-09 159 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 
相關問題