変数内の SQLPLUS 値 - crontab からは動作しない

変数内の SQLPLUS 値 - crontab からは動作しない

Linux の変数に sqlplus 値を保存しようとしています。

スクリプトは手動でトリガーされた場合は正常に動作します。ただし、スクリプトが crontab から呼び出されると、変数の値は保存されません。

コード:

#!/bin/ksh
~/.profile
v=`sqlplus -s <<!
<<DB details>>
select sysdate from dual;
!
`
echo "$v"

答え1

sqlpluscrontab エントリから実行するとイライラすることがあります。crond分岐したシェルが「rc」ファイルを読み取らないため、非常にまばらな PATH 変数が取得されます。

「.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

関連情報