perlからDBI経由でoracleに接続したいのですが、
なぜか DBI->connectのところで失敗して下記のようなエラーが出ます。
`CONNECT ERROR ORA-1034: ORACLE not available
oas userでtelnetで入り、直接perl scriptを起動すると問題なく動作するの
ですが、なぜかOAS経由でブラウザーからCGIとしてcallすると
失敗するのです。
もう2日も悩んでます。
どなたか原因がわかりましたらご教授ください。
---- 環境 ---
perl 5.005_03
OAS 4.0.8.1
DBI 1.30
DBD-Oracle 1.12
OS solaris2.6
接続先DBは別のsolarisマシンに入ってる。
----------------ソース-----------------------------
#!/usr/local/bin/perl
use DBI;
$dsn = 'DBI:Oracle:orcl';
$user = 'testuser';
$password = 'testuserpass';
$dbh = DBI->connect($dsn, $user, $password) or die "接続できません";
my $sth = $dbh->prepare("select * from munec");
$sth->execute;
while(@row = $sth->fetchrow_array) {
print "@row\n";
}
---------------
No.2ベストアンサー
- 回答日時:
OAS が oas ユーザで起動してようが、root ユーザで起動してようが
通常 CGI を起動するユーザは、nobody ユーザ辺りになっていると思います。
なので、CGI で環境変数に依存する処理を走らせる場合は、
CGI のなかで設定してやります。
この場合、perl ですので
$ENV{'ORACLE_SID'} = "ora8";
$ENV{'ORACLE_BASE'} = "/XXX/XXX/oracle";
などとして他の環境変数も設定してやる必要があります。
と、このあたりが原因ではないかと。
No.1
- 回答日時:
自信はありませんが、少しでもヒントになれば。
user oraでは当然oracle関係の環境変数が定義されていると思います。
webサーバの実行ユーザは別ユーザではありませんか。
その時に必要な環境変数が定義されているか。
また、webサーバを実行しているユーザでログインしてスクリプトが
直接実行できるか試してみてはいかがでしょうか。
この回答への補足
gaballさん回答有難うございます。
僕の説明不足だったのですが、OASはuser oasで動作しているので
ログインして直接実行しているuserと同じ物です。又、環境変数は僕も怪しいと思ったので、環境変数を表示するperl script をブラウザーから呼び出し、コンソールからの物(もちろん同じuser oasでログイン)と比較したのですが、ブラウザー経由にしか設定されていない環境変数名、値はあったのですが、直接実行のほうにしかない環境変数名、値はありませんでした。で、途方にくれてしまっています。
DBIを使わないscriptは問題なく動作するので、やはりDBIに必要不可欠な環境変数、ORACLE_HOMEとかが一番あやしいのですが、ちゃんとセットされてるしなあ、ああ困った。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlのライセンス
-
Perlスクリプトで文字化けして...
-
Cからシェルを起動し返り値をハ...
-
powershellで関数名を変更する...
-
ドル記号+アルファベット
-
perl >> DBI >> DBD >> oracle8...
-
UWSCのスクリプトにラグが発生...
-
setuid と mkdir
-
ADサーバにおけるログインID,PC...
-
"JScript"が見つかりません!
-
例外処理のフローチャートの記...
-
ユーザー定義関数に#NAME?が返...
-
「デバイスは PRN を初期化でき...
-
VBSがコンパイルエラーになりま...
-
Excel VBAでリンク切れをチェッ...
-
ハマったので助けて~。Apache...
-
Excel VBA 『Call』で呼び出す...
-
Excel VBAで、ユーザーフォーム...
-
別シートに罫線がひけない
-
VHDLにおける「generic」について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Cからシェルを起動し返り値をハ...
-
powershellで関数名を変更する...
-
VBSを利用して、IEのタブを自動...
-
UWSCのスクリプトにラグが発生...
-
awkの処理速度を改善したい
-
cygwinでcshが認識されず困って...
-
VBScriptでCurrentDirectoryを...
-
ディスクの空き容量を求める(W...
-
シェルでsyntax errorがでてしまう
-
Perlのライセンス
-
Perlスクリプトで文字化けして...
-
"JScript"が見つかりません!
-
vbs: オブジェクトがコレクショ...
-
電脳DWSのアクセス部分について
-
rshを使うスクリプトをバックグ...
-
crontab での実行結果が違う
-
Rubyを利用してExcelへデータを...
-
頭にperlとつけないと実行できない
-
chownの使い方
-
pythonスクリプトの停止方法に...
おすすめ情報