シェルスクリプトでsql/plusを呼び出し、ストアドプロシジャを
実行しようとしているのですが、crontabを使ったスケジュール起動を
行おうとすると、以下のようなエラーになってしまいます。

Message file sp1<lang>.msb not found
Error 6 initializing SQL*Plus

not foundと言われているファイルに心当たりがありません。
sql/plusがバックグラウンドで使っているファイルなのでしょうか?
ちなみに、crontabを使わずに、コマンドラインから
このシェルスクリプトを実行すると、正常に動作します。

UNIXもシェルスクリプトも超初心者です。
ご存知の方おられましたら、ご教授願います。

OSはRedHat6.2J、Oracle8.1.7です。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

白黒ならず、黒白です。


多分ですが、以下のような環境変数を設定することで、
解決できるかと思われます。
(あくまでも参考にして下さい)
miya777さんの言われるように、cronでは環境変数といわれるものが
ひきつぎされないため、シェルの中で再度設定する必要があります。

setenv ORACLE_BASE /xxxx/oracle
setenv ORACLE_HOME $ORACLE_BASE/product/8.1.5
setenv ORACLE_SID xxxxx
setenv NLS_LANG Japanese_Japan.JA16EUC
setenv ORA_NLS33 $ORACLE_HOME/xxxxx/...
setenv LD_LIBRARY_PATH $ORACLE_HOME/lib

set path=( . /usr/bin /sbin /usr/sbin /usr/ccs/bin /opt/bin /opt/local/bin /usr/ucb /xxxx/.../oracle/product/8.1.5/bin $path )

ちなみに、envコマンドにて上記のsetenvコマンドの内容は
参照できるかと思います。

結構、cronで起動する場合は、注意していないと環境変数
については忘れがちになる部分です。

この回答でうまくいけばと思います。

でわ
    • good
    • 0
この回答へのお礼

blackwhiteさん、親切な回答ありがとうございます。
お返事が遅くなってしまってすみません。
あれから、色々調べてやってみてblackwhiteさんの言うような
環境変数の設定までなんとかたどりつきました。
勉強不足でお手数おかけしてすみませんでした。
大変勉強になりました。ありがとうございます!

お礼日時:2001/10/19 10:04

cronで起動した場合、下記の環境変数しか設定されません。



HOME=user's-home-directory
LOGNAME=user's-login-id
PATH=/usr/bin:/usr/sbin:.
SHELL=/usr/bin/sh

なので、パスもORACLE_HOMEも不充分となります。
起動するシェルのなかで、環境変数をちゃんと設定しないと駄目です。

この回答への補足

回答ありがとうございます。少し補足しますと、
起動するシェルは、以下のように記述しております。

#!/bin/bash
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/oracle/product/8.1.7/
bin;
export PATH
/home/oracle/product/8.1.7/bin/sqlplus @/home/oracle/product/8.1.7/bin/test

「ORACLE_HOMEをシェルの中で設定する」という部分が
よくわからないのですが.......

補足日時:2001/08/29 17:51
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q√n²+21が整数となるような自然数nをすべて答えなさい。 答え分かるかた解説つきでお願いしますm(

√n²+21が整数となるような自然数nをすべて答えなさい。

答え分かるかた解説つきでお願いしますm(_ _)m

Aベストアンサー

x=√(n²+21)と置くと
x²=n²+21と書ける。

変形すると
x² - n² = 21
(x-n)(x+n)=3・7 or 1・21

=3・7の場合
これを満たす、(x,n)の組み合わせは(5,2)

=1・21の場合
これを満たす、(x,n)の組み合わせは(11,10)
∴ n = 2,10

QXlib.h Not Found

postgreSQL7.1.3
RedHatLinux7.1J

Tcl/Tkインターフェースのlibpgtclをインストールしようと思い、
configure→makeと進んだところ、makeにて
/usr/include/tk.h:83:29: X11/Xlib.h: No such file or directory
というエラーが出てしまいます。
findで全てのディレクトリーを調べてみましたが、確かにどこにもありません。

どうやったらXlib.hをインストールできるのでしょうか。

Aベストアンサー

インストールにCD-ROMかなにかを用いたならば、そのバイナリCDを用意し、その中からXFree86-devel-xxxi386.rpmというような名前のファイルが無いかどうか探してみてください。

そのファイルをrpm -Uvh XFree86-devel-xxxxi386.rpmとかするとインストールできると思います。依存関係の問題で実行できない場合はエラーメッセージでなにかを入れろと出てくるので対応するrpmパッケージをインストールしてください。

私の手元の環境はKondara2.0なのでRedHat 7.1Jとは多少パッケージ名が違いますが、私の環境では次のようになりました。

bash$ rpm -q -f /usr/X11R6/include/X11/Xlib.h
XFree86-devel-4.0.3-24k

ということなのでKondara2.0の場合はXlib.hはXFree86-devel-4.0.3-24k.i586.rpmに含まれているようです。

QC言語です 整数nを入力すると 1 21 321 となるプログラムをくみたいのですが どこをどう直せ

C言語です
整数nを入力すると
1
21
321
となるプログラムをくみたいのですが
どこをどう直せば良いでしょうか?

Aベストアンサー

jの値が1からになってますよね?

Qmailを受信するとシェルスクリプト起動

root宛てにメールが送信されると、/etc/groupファイルを更新するといった、シェルスクリプトを起動させる方法を教えてください。

Aベストアンサー

~root/.forward (sendmailの場合)
~root/.qmail (qmailの場合)

というファイル名で下記の内容を用意します。
実行する任意のファイル名を頭に「|」をつけます。
-----------------------------------
| /path/to/script
-----------------------------------

「/etc/groupファイルを更新」ということですが
どう更新したいのかが分かりませんので何とも言えませんが
恐らくセキュリティ上の問題もありますので、エラーチェックなどを
行う必要があると思います。
参考までにperlでやってみるとこうなります。

---------------------------------------------
#!/usr/bin/perl

while(<STDIN>){
if(/^passwd: (.*)/){$pass=$1;}
if(/^group: (.*)/){$group=$1;}
if(/^action: (.*)/){$action=$1;}
}

if($pass eq "mypass"){
system("group$action $group");
}
---------------------------------------------

できればヘッダーあたりでもうちょっと厳格なチェックを
行った方がいいですけどね。(^-^;

~root/.forward (sendmailの場合)
~root/.qmail (qmailの場合)

というファイル名で下記の内容を用意します。
実行する任意のファイル名を頭に「|」をつけます。
-----------------------------------
| /path/to/script
-----------------------------------

「/etc/groupファイルを更新」ということですが
どう更新したいのかが分かりませんので何とも言えませんが
恐らくセキュリティ上の問題もありますので、エラーチェックなどを
行う必要があると思います。
参考までにperlでやってみると...続きを読む

QノートパソコンRIVU21 N400Dのメモリ増設

先日友人から「RIVU21 N400D」という古いノートパソコンをもらったのですが、メモリが32Mがしかなくてなんとも使いづらいので、メモリを増設しようと思っています。早速、この機種に合うメモリを検索しようと各社(IOさんとか)の対応検索をしてみましたが、ショップブランド品らしく検索対象に入っていませんでした。また製造元は既に倒産か事業の撤退をしたようでサポート情報も見つけられませんでした。
この製品と同一製品で、メモリの容量違いの製品がその会社から売られていたようでしたので、本体を空けて中に入っているメモリを確認し、それと同じ型番のメモリをもう一枚中古でもいいので購入して、64Mに増設しようと考えているのですが、どなたかこの機種のメモリが確認できるまでの解体方法をご存知の方居られましたら、教えていただけないでしょうか。
いくつかノートパソコンのメモリ交換を紹介しているサイトを見てみたのですが、IBMやNECの製品とは構造が異なるようで解決しませんでした。よろしくお願いします。
因みに簡単ですが、型番などの情報は以下の通りです。
型番:RIVU21 N400D
OS:win98se
メモリ:32M

先日友人から「RIVU21 N400D」という古いノートパソコンをもらったのですが、メモリが32Mがしかなくてなんとも使いづらいので、メモリを増設しようと思っています。早速、この機種に合うメモリを検索しようと各社(IOさんとか)の対応検索をしてみましたが、ショップブランド品らしく検索対象に入っていませんでした。また製造元は既に倒産か事業の撤退をしたようでサポート情報も見つけられませんでした。
この製品と同一製品で、メモリの容量違いの製品がその会社から売られていたようでしたので、本体を空け...続きを読む

Aベストアンサー

すいません、型番を間違ってしまっていたみたいですね。
ある程度のところまで、ウエーブ、アーカイバーで過去のホームページをみているのですが、肝心要のところがどうしてもリンクしません。
今までに調べた結果は下記のとおりです。
メモリー増設法についてはどうしてもリンクしませんね。 http://web.archive.org/web/20010222114850/www.sie.co.jp/RIVU21/RIVU21_FQA/index.html
全般的なことはここからリンク
http://web.archive.org/web/20010406065354/www.sie.co.jp/RIVU21/rivu21_home_page_index.html

http://ascii24.com/news/i/topi/article/2000/08/31/617707-000.html
最後はlabrosという会社がこのシリーズを販売しているみたいですね。
http://www.labros.co.jp/html/ceo.php?page=3&keyfield=&key=

http://www.labros.co.jp/index.htm

すいません、型番を間違ってしまっていたみたいですね。
ある程度のところまで、ウエーブ、アーカイバーで過去のホームページをみているのですが、肝心要のところがどうしてもリンクしません。
今までに調べた結果は下記のとおりです。
メモリー増設法についてはどうしてもリンクしませんね。 http://web.archive.org/web/20010222114850/www.sie.co.jp/RIVU21/RIVU21_FQA/index.html
全般的なことはここからリンク
http://web.archive.org/web/20010406065354/www.sie.co.jp/RIVU21/rivu21_home_page_ind...続きを読む

Qシェル??? スクリプト???

この業界で仕事していていつも首をかしげてしまうことなんですけど、、、

シェルスクリプトのことを単に『シェル』と呼ぶ人がとても多いのですが、この表現はなんだか気持ち悪くありませんか?

たとえば、『ちょっとシェル作って』なんて言いますけど、なんかシェル本体(/bin/shそのものとか)を作れといわれてるみたいで変な感じです。

これについて、みなさんどう思われますか?
また、なぜこういう言い方が一般化したのでしょうか?(自分の会社だけかと思ってたら、委託さんや協力会社などの同業他社の方も使っているので。。。)

くだらない質問ですがよろしくお願いします。

Aベストアンサー

メインフレーム文化の流れだと思います。プログラムに対してJCL(JobControlLanguage)がある。JCLって名前からわかるように言語なわけですが、それで記述された「プログラム実行のやりかたを記述したもの」もJCLと呼びます。unixではこのJCLがshにあたるわけで、shでかかれたものをシェルと呼ぶわけです。

JCLで書かれたものの方(shだとスクリプト)は、ほんとはジョブストリームかな?(自信なし。忘れちゃいました)

QA8V-E SEに忍者プラス(NINJA PLUS)は乗せられるでしょうか?

タイトル通りなのですが、今初自作PCに挑戦しているので教えてください。

よく忍者PLUSが大きすぎてマザーに乗らなかったとかケースに入らなかったという話をききます。

マザー:A8V-E SE
ケース:SCY-0311

ケースはミドルATXで忍者プラスと同じメーカーなので大丈夫だと思うのですがマザーが心配です、忍者プラスは上の2点に収まるのでしょうか?
知っている方いましたら、よろしくお願いします。

Aベストアンサー

マザーは大丈夫です。
ケースはSCY-0311が幅200mmで忍者のシンクが150mmなのでサイドFANを外せば入るはずです。
ちょっと苦労するかもしれませんが頑張ってください。
参考URLのケースSonataIIは幅205mmです。

参考URL:http://www.vspec-bto.com/bto-2/silent-pc-antec-sonata-amd-athlon64.htm

QLinux起動時にシェルスクリプトを走らせるには?

いつも参考にさせていただいてます。
私はRedHat7.0でLinuxを勉強中です。

現在、Linuxの起動時にシェルスクリプトを走らせようと思っているのですがうまくいきません。
まだ初心者で手順自体が違っているかもしれませんので、大まかで構いませんので手順を教えてください。

Aベストアンサー

こんにちは。

/etc/rc.d/rc.local
に走らせたいスクリプトを記述します。

それで起動項目にできました。
ちゃんと起動しているかどうかはプロセスやシスログを見てみてください。

QGoogleEarthPlus(グーグルアースプラス)を申し込む際のライセンスキーとは?

GoogleEarthPlus(グーグルアースプラス)を申し込む際にライセンスキーを入力する欄があるのですが、これはどこで取得すればいいのでしょうか。
いろいろ探してみましたがどうもみつかりません。
ご存じの方、是非教えてくださいませ。

Aベストアンサー

 トライアル版も試されていない状況かも知れませんが、ユーザー名とパスワードを入力しますが、その直後に登録したユーザー名(e-mailアドレス)宛にライセンスキーが送信されて来ます。トライアル版の使用の際にユーザー名とライセンスキー、パスワードを入力します。しかし、トライアルを試さずに行きなり有料サービスを申し込むということでしょうか。私は詳細に付いてはわかりません。

Qshのシェルスクリプトの演算方法について・・・

bashのシェルスクリプトについてもお聞きしたのですが、
その方法では演算ができない!ということになってしまいました・・・
こういうちょこっとしたところが違うのが嫌です・・・↓
bashの場合は
----------
bash$ a=1
bash$ a=$(( $a + 1 ))
bash$ echo $a
2
----------
となったのですが、shではエラーが出てしまいました・・・
また、shのスクリプトもbashのスクリプトもシェルスクリプトと呼ぶのでしょうか?

Aベストアンサー

sh には、シェルの機能として演算は含まれていません。
計算自体は、コマンド expr を使って、

sh$ a=1
sh$ expr $a + 1
2

のように行います。よって、質問文のコマンドのsh版は

sh$ a=1
sh$ a=`expr $a + 1`
sh$ echo $a
2

のようになります。
sh,cshなどでは、``(バッククォート)で囲んだ部分は、実行されその結果と置き換わるので、上記の2行目は a=2 と実行しているのと同じことになります。

sh,expr でどのようなコマンドが使えるのかは、

sh$ man sh
sh$ man expr
として調べてください。

------------------------------------------------------------
>また、shのスクリプトもbashのスクリプトもシェルスクリプトと呼ぶのでしょうか?

呼びます。


人気Q&Aランキング

おすすめ情報