變數中的 SQLPLUS 值 - 在 crontab 中不起作用

變數中的 SQLPLUS 值 - 在 crontab 中不起作用

我正在嘗試將 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

相關內容