dポイントプレゼントキャンペーン実施中!

本日、DBI->CONNECTで返ってこないと質問をしたものです。
色々と調べているうちに、もしかしたらDBアクセスはおわり、その後のCGIが表示できなくなっているかもしれないと思うようになりました。
ORCLE9iがあるあとで、PERL,Apacheをインストールしました。
DBアクセスをしない状況ですと、CGIのプログラムは何の問題も無く、動きます。
ただ、DBアクセスしようとするとエラーもでない状況で、画面に何も出ません。

ApacheのORACLEに関する環境設定が必要なのでしょうか?

環境は、Windows XP
     Active Perl 5.8.7.813
       DBI 1.602 ,DBD-Oracle 1.17
     Apache 2.0.54

どなたか、わかる方いらっしゃいますでしょうか?
この件で2日悩んでおります。

宜しくお願いします。

A 回答 (5件)

> 直接ORACLEアクセスはあきらめて、ACCESS経由にしました。


> 自分のパソコンにmdbを作成した場合には、成功しました。

ODBC 経由にするということですか?(Windows には明るくないので,違う接続方法があるのだとしたらごめんなさい)

Oracle のODBCドライバをインストールし、コントロールパネルからODBCの接続設定をし、その際にインストールしたドライバを選択。
Oracle のサービスIDやらユーザ名やらを入力して完了。

上手くいっていれば ACCESS から該当のデータベースが見れるはず。

以降は、データソース名(DSN)をつかってPerlから操作できるようになります。

ODBCの接続設定で利用するパラメータは、DBI,DBDでの接続パラメータと変りないです。
ベンダーごとにことなる処理をラッピングして、共通的な処理にまとめ上げるのがODBCの役割でもあるので。
ですから、やっぱりうまくいかないってケースもありえます。
#Oracleのサービス名の解決が面倒なんで、よくハマるみたいです。
#基本的には、ホスト名,ポート名,SID,ユーザ名,パスワードなんですけど、デフォルトの接続ポートが 1521 なので、他の質問で 8080 とされていたことが少し気になります。

違いがあるとしたら、使っているドライバの差異じゃないかなと思います。
DBDの中身についてはよく知らないのですが、pure に Perl だけで作られているんでしょうかね?何かしら Oracle のライブラリ DLL とか使ってないんだろうか?
実はOracleクライアントが必要だったってオチもあるんじゃないかと。

これって、配布するプログラムなんですか?配布先で動く環境を整えるのが面倒そうですね。
    • good
    • 0

> 自分のパソコンにmdbを作成した場合には、成功しました。


> ただ、ファイルサーバー上だと、コネクトができませんでした。
自分のPCにスクリプトを置いたら、同じくDBIでコネクトできるのでしょうか?
となると、Oracleサーバ側でアクセス元を制限してるのかなぁ。
Firewallと、Oracleユーザ設定の両方を確認して下さい。
    • good
    • 0

ブラウザ上で動作確認していませんか?


CGIとして動かすと、(ヘッダを出力してない等)CGI側の問題なのか、
Oracleへの接続の問題なのか、分かりにくいという事です。
Perlが返してくれるエラーの内容も確認できませんので、
問題がどちらか明確に切り分けるためにも
作成したスクリプトをWindowsのコマンドプロンプト上で実行して下さい。

use CGI::Carp qw(fatalsToBrowser);で、ブラウザ上でもエラー内容が見れたりしますが。
    • good
    • 0
この回答へのお礼

御礼が遅くなり、申し訳ありませんでした。
親切にありがとうございます。

結局、直接ORACLEアクセスはあきらめて、ACCESS経由にしました。
自分のパソコンにmdbを作成した場合には、成功しました。
ただ、ファイルサーバー上だと、コネクトができませんでした。
たぶん、ORACLEの時も同じようにCONNECTができなく、だめだったと思います。
ファイルサーバーの場合に、何かあるのでしょうか?


もし、知っていらっしゃいましたら、教えてください。

宜しくお願いします。

お礼日時:2011/02/16 16:47

僕自身 Oracle は9i までしか使っていなく、使っていたのもだいぶ前ですし、Perlではなくて java でしたし、Windows ではなくLinuxだったので外している可能性は高いです。


もし、参考になればと思い回答してみます。

Apacheのユーザ権限などで環境変数 ORACLE_HOMEとかNLS_LANGとかORACLE_SIDを httpd.confで設定したいのであれば

SetEnv ORACLE_HOME C:¥~

のように SetEnv で設定が必要かもしれません。
(suexec を使っている場合は、CGIは違うユーザで動作するのでまた違うのかも。その場合はCGI側でENV指定してみてはどうでしょう)

また、Oracle側の設定は終わっているのですか?
Oracleは接続の仕組みが直感的じゃなかったと思うので、なんとか.ora にホストの登録とかしていたような。
(すみません。もうOracle開発環境は手放して久しいので、ファイル名などはわすれてしまいました)

とりあえずOracle client が入っているのであれば、sqlplus で接続確認してみてはどうでしょうか?

Oracleまで届いていて、エラーがあるのであれば ORA-XXXX のエラーが見れると思うので一応確認してみてはどうでしょう。

Windows 環境でよくあるパターンとして、何かしらのセキュリティ関連(ファイアーウォールとか、アンチウイルスソフトとか)が遮断していたとか。
#もう確認済みとは思いますが、プログラム指定するタイプのファイアーウォールソフトを使っていた場合は、sqlplus は許可しても perl の許可を忘れていたりすることもあると思うので。

基本的な事柄ばかりで、あまり参考にならないかもしれませんね。すみません。
    • good
    • 0
この回答へのお礼

御礼が遅くなり、申し訳ありませんでした。
親切にありがとうございます。

結局、直接ORACLEアクセスはあきらめて、ACCESS経由にしました。
自分のパソコンにmdbを作成した場合には、成功しました。
ただ、ファイルサーバー上だと、コネクトができませんでした。

もし、知っていらっしゃいましたら、教えてください。

宜しくお願いします。

お礼日時:2011/02/16 16:44

前の質問、「Oracle」が「oracle」になってますよ。



・サンプル
my $dbh = DBI->connect("dbi:Oracle:$dbname", $dbuser, $dbpass)
or die "Unale to connect to $dbname: $DBI::errstr\n";

コマンドプロンプトからスクリプト実行すれば、Apacheと切り離せるんじゃないでしょうか。

参考URL:http://perldoc.jp/docs/modules/DBD-Oracle-1.14/O …
    • good
    • 0
この回答へのお礼

kuroizellさん、ありがとうございます。
Oracleに変えてみましたが、結果は同じでした。

コマンドプロンプトからスクリプト実行すれば、Apachetoと切り離せるとは、参考のURLを
見ましたが、私の能力では意味がわかりませんでした。
誠に申し訳ありませんが、教えていただけないでしょうか?

宜しくお願いします。

お礼日時:2011/02/15 18:03

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