我正在嘗試將 sqlplus 值儲存到 Linux 中的變數中。
手動觸發時腳本工作正常。但是當從 crontab 呼叫腳本時,變數中的值不會被儲存。
代碼:
#!/bin/ksh
~/.profile
v=`sqlplus -s <<!
<<DB details>>
select sysdate from dual;
!
`
echo "$v"
答案1
sqlplus
從 crontab 條目運行可能會令人沮喪。你會得到一個非常稀疏的 PATH 變量,因為分叉出來的 shellcrond
不會讀取“rc”檔案。
在你的「.profile」檔案中你設定了ORACLE_HOME嗎?您是否在 PATH 中包含 $ORACLE_HOME/bin,並匯出 ORACLE_HOME 和 PATH?首先檢查一下。另外,我必須注意你的程式碼顯示了ksh
有問題的執行不是採購文件~/.profile
。您的腳本應該“獲取”該文件。我似乎也迷信設定和匯出 TNS_ADMIN,如下所示:
export TNS_ADMIN=$ORACLE_HOME/network/admin
/nolog
您可以使用以下選項在「此處文件」中包含資料庫使用者 ID 和密碼,以sqlplus
避免向執行以下命令的任何人顯示這些詳細資訊ps
:
sqlplus -s /nolog 2>&1 << END_ZERO_ROW_CHECK
connect $USER_NAME/$PASSWORD@$SID_INSTANCE
whenever oserror exit failure
whenever sqlerror exit failure
...
END_ZERO_ROW_CHECK