現在私は、シェルスクリプトでsqlplusを動かそうとしてます。
作成したスクリプトを手打ちすると、正常に動きますが
それをcronに登録すると、以下のようなエラーがでてしまいます。
どうしてでしょうか?よろしくお願いします。
Message file sp1<lang>.msb not found.
Error initializing SQL*Plus
以下にソースを記述しておきます。
#!/usr/bin/ksh
SQLPLUSCOMMAND=/oracle/bin/sqlplus
SQLUSER=sti
SQLPASS=sti
$SQLPLUSCOMMAND $SQLUSER/$SQLPASS<<BBB
DELETE from phrase_tbl_
WHERE TO_DATE(wave_entry_day,'YYYYMMDD') < ADD_MONTHS(SYSDATE,-1);
SPOOL phrase_ichiran.txt
SELECT wave_renban as Renban, wave_entry_day as Entry_day, wave_entry_time
as Entry_time, wave_tel_no as Saisei_Naisen, wave_flg as Saisei_Zumi FROM
phrase_tbl_;
SPOOL OFF
commit;
exit;
BBB
>現在私は、シェルスクリプトでsqlplusを動かそうとしてます。
>作成したスクリプトを手打ちすると、正常に動きますが
>それをcronに登録すると、以下のようなエラーがでてしまいます。
>どうしてでしょうか?よろしくお願いします。
ORACLE_HOME とかの環境変数が設定されていないからでは?
env 等で shell 環境で設定されている環境変数を調べて、関係ありそ
うなものをスクリプトでも設定するようにしてみて下さい。
--
片山@PFU
環境変数が設定されていない。
--
___ わしは、山吹色のかすてーらが大好きでのぅ
[[o o]] ふぉっふぉっふぉ
'J' 森下 お代官様 MaNMOS 英夫@ステラクラフト
PGP Finger = CD EA D5 A8 AD B2 FE 7D 02 74 87 52 7C B7 39 37
全ての関係ありそうな、環境変数は追加しましたが
上手くいきません。
追加した環境変数は以下に示します。
ORABIN=
PATH=
ORACLE_SID=
ORACLE_HOME=
それ以外に何か必要でしょうか・
よろしくお願い致します。
ちなみにrshコマンドを使用し、他のマシンからsqlplusコマンドを
実行したところ同じエラーが出ます。
>全ての関係ありそうな、環境変数は追加しましたが
>上手くいきません。
むぅ。
直接 sqlplus を起動する時と cron で起動する時で UID が異なってい
るということもないですよね。
--
片山@PFU
>> 全ての関係ありそうな、環境変数は追加しましたが
>> 上手くいきません。
とありますが、exportしてないということはありませんか。
# もちろんORACLEのexportじゃありません。
Yorihito Tanaka
Keio University
Graduate School of Media and Governance
E-mail: yo...@tom.sfc.keio.ac.jp
<91cm1i$cbc$1...@newsgw7.odn.ne.jp>の記事において
ta...@progress.co.jpさんは書きました。
>> > "taku fujii" <ta...@progress.co.jp> writes:
>> > >現在私は、シェルスクリプトでsqlplusを動かそうとしてます。
両者の場合の printenv の結果を取って比較してみたら如何ですか?
---
池田浩隆 ik...@yic.or.jp
fj.unix の <91cm1i$cbc$1...@newsgw7.odn.ne.jp> の
記事において "taku fujii" <ta...@progress.co.jp>さんは書きました。
>
>"KATAYAMA Yoshio" <ka...@pfu.co.jp> wrote in message
>news:KATE.00De...@sims211.trad.pfu.co.jp...
>> In article <91cb4g$20n$1...@newsgw7.odn.ne.jp>,
>> "taku fujii" <ta...@progress.co.jp> writes:
>>
>> >現在私は、シェルスクリプトでsqlplusを動かそうとしてます。
>> >作成したスクリプトを手打ちすると、正常に動きますが
>> >それをcronに登録すると、以下のようなエラーがでてしまいます。
>> >どうしてでしょうか?よろしくお願いします。
>>
>> ORACLE_HOME とかの環境変数が設定されていないからでは?
:
>全ての関係ありそうな、環境変数は追加しましたが
>上手くいきません。
>追加した環境変数は以下に示します。
>
>ORABIN=
>PATH=
>ORACLE_SID=
>ORACLE_HOME=
>それ以外に何か必要でしょうか・
最初の記事の
>Message file sp1<lang>.msb not found.
からすると、
NLS_LANGを設定する必要があるのではないでしょうか?
他の方の記事にありましたように、exportすることも必要ですが。
---
稲葉 浩人 in...@st.rim.or.jp
確かめてみないでフォローするものじゃないですね。
NLS_LANGは設定しなくても英語モードになるだけですね。
>他の方の記事にありましたように、exportすることも必要ですが。
やっぱりこちらが原因でしょうか?
---
稲葉 浩人 in...@st.rim.or.jp
このメッセージ
Message file sp1<lang>.msb not found.
Error initializing SQL*Plus
は、ORACLE_HOME環境変数が設定されていない場合に発生します。
環境変数は追加しました、とありますが、単純に
ORACLE_HOME=/oracle
ORACLE_SID=oracle
ではなくて、
export ORACLE_HOME=/oracle
export ORACLE_SID=oracle
のような記述が必要になります。
手打ちをすると成功して、cronやrshにて実行できない理由は
やはり、環境変数の問題と考えられます。
手打ちした時にログインしたユーザのログインスクリプトには
上記のような、exportの記述が含まれているのではないでしょうか?
ご確認ください。
taku fujii wrote:
>
> "KATAYAMA Yoshio" <ka...@pfu.co.jp> wrote in message
> news:KATE.00De...@sims211.trad.pfu.co.jp...
> > In article <91cb4g$20n$1...@newsgw7.odn.ne.jp>,
> > "taku fujii" <ta...@progress.co.jp> writes:
> >
> > >現在私は、シェルスクリプトでsqlplusを動かそうとしてます。
> > >作成したスクリプトを手打ちすると、正常に動きますが
> > >それをcronに登録すると、以下のようなエラーがでてしまいます。
> > >どうしてでしょうか?よろしくお願いします。
> >
(snip)
> 追加した環境変数は以下に示します。
>
> ORABIN=
> PATH=
> ORACLE_SID=
> ORACLE_HOME=
(snip)
> ちなみにrshコマンドを使用し、他のマシンからsqlplusコマンドを
> 実行したところ同じエラーが出ます。
--
株式会社メトロシステムズ DBソリューション事業部
石川 満律 (mailto:ishi...@metrosystems.co.jp)
> 現在私は、シェルスクリプトでsqlplusを動かそうとしてます。
> 作成したスクリプトを手打ちすると、正常に動きますが
> それをcronに登録すると、以下のようなエラーがでてしまいます。
> どうしてでしょうか?よろしくお願いします。
村田と申します。
遅いレスですみません。
cron からユーザプログラムを起動した場合、.profile や .cshrc
に設定されている環境変数は読まれません。明示的にスクリプト内
へ読み込む必要があります。
Oracle では TWO_TASK や NLS_LANG や LANG も設定した方がいい
でしょう。
あと、shared の libclntsh.so.1.0 なんかを見るようになってる
なら LD_LIBRARY_PATH もチェックした方がいいです。
Solaris の v7.3.4 ベースだと sqlplus にはバグ #658711 がある
ので、パッチをあてない場合 TWO_TASK 環境変数を設定しないと接続
できません。