crontab呼叫oracle的shell指令碼注意事項

lusklusklusk發表於2017-06-01
直接在linux上執行shell指令碼時,oracle使用者是有這個環境變數的。但是crontab執行時,是沒有使用者的環境變數,所以需要在指令碼中設定。

所以必須指定如下ORACLE_SID和ORACLE_HOME和PATH變數,否則會報錯, 
而有沒有#!/bin/sh倒是沒什麼關係
沒有#!/bin/sh則按預設的預設shell中執行,檢視預設的shell命令是 echo $SHELL

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=TESTDB




缺少ORACLE_HOME,在crontab中去掉>>/dev/null 2>&1並讓crontab執行,會發現在/var/spool/mail/oracle下會有如下報錯
Message file RMAN<lang>.msb not found
Verify that ORACLE_HOME is set properly

而缺少ORACLE_SID則在crontab對應的指令碼的寫入日誌中會有如下資訊
RMAN-04005: error from target database:
ORA-12162: TNS:net service name is incorrectly specified





注:
並不是所有的oracle下的指令碼都需要ORACLE_HOME和ORACLE_SID,只有涉及ORACLE資料庫資訊的才需要這兩個變數如sqlplus和rman
lsnrctl命令不需要ORACLE_HOME和ORACLE_SID兩個變數

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2140157/,如需轉載,請註明出處,否則將追究法律責任。

相關文章