Linuxでは、sqlplus値を変数に保存しようとしています。
手動で実行すると、スクリプトは正常に動作します。ただし、crontabでスクリプトを呼び出すと、変数の値は保存されません。
パスワード:
#!/bin/ksh
~/.profile
v=`sqlplus -s <<!
<<DB details>>
select sysdate from dual;
!
`
echo "$v"
ベストアンサー1
sqlplus
crontabエントリで実行すると失望する可能性があります。分岐シェルは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
sqlplus
次のコマンドを実行している人にこれらの詳細が表示されないように、次のオプションを使用して、ドキュメントにデータベースのユーザーIDとパスワードをここに含めることができます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