- PR -

Oracle9iとVSExpressとODP.NETの組合せでWebアプリを作成する

1
投稿者投稿内容
うーたん
常連さん
会議室デビュー日: 2008/09/16
投稿数: 34
投稿日時: 2008-09-22 10:42
いつも参考にさせて頂いてます。

DBサーバはOracle9i、
WebサーバはWindows Server 2003(IIS6)、
開発ツールはVisualStudio Express(2005または2008)
でWebアプリを作成しようとしています。
Oracleへの接続はODP.NETを予定しています。

まずは開発機(WinXP,VS2008(.NET Framework3.5),ODP.NET11)で簡単な
プログラムを作成し動作することを確認しました。
次にWebアプリをWebサーバに配置して動作確認しようと試みたのですが、
どうもうまくいきません。

Webサーバの設定内容は以下のとおりです。
・.NET Framework3.5をインストール
・wwwrootフォルダ配下にWebSiteフォルダでプログラムを配置
・IISマネージャーのWebサービス拡張でASP.NET2を許可
・IISマネージャーのWebサイトでWebSiteのプロパティから
 ASP.NETバージョンを2.0.50727に設定
・ODP.NET11(Oracle DataAccess Components for Oracle Server 11.1.0.6.21)を
 インストールしようと試みましたが
 Oracle Data Access Components for Oracle Server can only be installed
 over an existing Oracle Database Server 11g.
 が発生してしまいました。
・ODP.NET11(Oracle DataAccess Components for Oracle Client 11.1.0.6.21)は
 インストールできたので、これで動作確認してみたのですが
 DB接続でエラーになります。
・ODP.NETのバージョンが9である必要があると思い、
 ODP.NET9をインストールしましたが.NET Framework3.5と相性が悪いのか
 Oracle.DataAccess, Version=2.111.6.20,〜という内容の
 エラーになります。

Oracle9iとVisualStudio ExpressとODP.NETの組み合わせで
Webアプリを作成することはできないのでしょうか。

ご存知の方いらっしゃいましたら
ご教授の程宜しくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-09-22 18:14
開発機と、本番機の、環境的な差異は、なんでしょう?
引用:

?ODP.NET11(Oracle DataAccess Components for Oracle Server 11.1.0.6.21)を  インストールしようと試みましたが  Oracle Data Access Components for Oracle Server can only be installed  over an existing Oracle Database Server 11g.  が発生してしまいました。


ここと、
引用:

?ODP.NET11(Oracle DataAccess Components for Oracle Client 11.1.0.6.21)は  インストールできたので


ここが、矛盾していると思います。
うーたん
常連さん
会議室デビュー日: 2008/09/16
投稿数: 34
投稿日時: 2008-09-22 18:38
Jittaさん
ご返答ありがとうございます。

開発機(WinXP Pro)には、
VS2008Express+ODP.NET11(Client)をインストールして
簡単なテストプログラムを作成して
Oracle9i(WinServer2003:DBサーバ)に接続できることを確認しました。

本番機(WinServer2003:実際には本番に近い環境を用意したWeb兼DBサーバ)には、
Oracle9i+.NET Framework3.5をインストールして
開発機で作成したテストプログラムを配置して
さらに、ODP.NETには11(Server),11(Client),9と色々インストール/再インストール
して試したのですが、結果は以下のとおりです。
・ODP.NET11(Server):インストールできず(DBが9iの為)
・ODP.NET11(Client):インストールできたが実行時に接続エラー(Clientだから?)
・ODP.NET9:インストールできたが実行時にエラー(.NET Framework3.5だから?)

説明内容の不備、根本的な考え方の間違いなどありましたら
またご指摘ください。

宜しくお願いいたします。
上総
大ベテラン
会議室デビュー日: 2006/06/22
投稿数: 107
投稿日時: 2008-09-22 20:30
Oracleの詳細なバージョンが分からないと何とも言えませんが、ODP.NET V1.xを使用
出来るのはOracleの9i(R9.2.0.4)からで、ODP.NET V2.xを使用できるのはOracle
10g(R10.2.0)からのようです。

スレ主さんの書き込み(投稿日時: 2008-09-22 18:38)より
引用:

・ODP.NETのバージョンが9である必要があると思い、
 ODP.NET9をインストールしましたが.NET Framework3.5と相性が悪いのか
 Oracle.DataAccess, Version=2.111.6.20,〜という内容の
 エラーになります。


エラーとなっている原因は、ODP.NET V2.xから互換性の無い9iへ接続しようとして、
エラーとなっているように見えます。

只、開発環境では動作した事から、本番でも動作する可能性がありますが、9iのODP
でOracle9iに接続出来ない問題については、開発環境に9i用のODP.NETをインストール
した後にコンパイルを行っているか否か?
若しくは、プログラム上でODP.NETのバージョンを固定で指定しているかが問題となり
そうです。

※OracleとODP.NETの互換性については、翔泳社の『VB2005+Oracle10g システム構築
 最強スタートガイド』(ISBN978-4-7981-1354-8)の『Chapter 3 Oracle Database
 10g入門 〜 バージョン間の相互互換性』を参考にしています。

 少なくとも参考にしている書籍上では、ODP.NETのバージョンは接続先のOracleに
 左右されるようで、ODP.NET V2.xではOracle9i+Oracle10g Release1に対し接続が
 出来ないようです。
うーたん
常連さん
会議室デビュー日: 2008/09/16
投稿数: 34
投稿日時: 2008-09-24 12:01
上総さん
ご返答ありがとうございます。
詳細かつ分かりやすいご説明で大変参考になりました。

Oracleの詳細なバージョンについてですが、
Oracle9i(R9.2.0.1)で試していました。

> 開発環境では動作した事から、本番でも動作する可能性があります

については、別の者がいろいろサーバーをいじっていたところ
本番でも接続できるようになりました。(喜)
しかし理由がわからず、一旦ODP.NET11をアンインストールして
再度インストールしたところ、接続できなくなりました。(悲)

> Oracle9iに接続出来ない問題については、
> 開発環境に9i用のODP.NETをインストールした後にコンパイルを行っているか否か

については、VSExpressを使用しているため、.NET Framework3.5固定となり
ODP.NET9ではビルドエラーとなってしまいます。
ODP.NET11ではビルドエラーとならなかったため、
こちらを採用しようと思った次第です。

上総さんのお話によるとOracleとODP.NET相互のバージョンの互換性による
問題のようですね。
しかし、ODP.NET11.1.0.6.20ダウンロードサイトの動作環境には
接続可能なOracleDatabaseとして「Oracle9i Database Release 2 以降」と
なっています。これが何を意味しているのか分からなくなりました。

さらに悲しいお知らせなのですが、
開発環境では動作していたはずが、
ODP.NET11をアンインストールして、ODP.NET10やODP.NET9をインストールして
動作しない(ビルドでエラーになる)ことを確認し、ODP.NET11を再インストール
したところ、動作しなくなりました。
現象は、本番とまったく同じ接続エラーです。

ODP.NETをアンインストール&再インストールすると
動作しなくなるという現象でもあるのでしょうか?

以上の現象についてご存知の方がいらっしゃいましたら
書き込みをお願いいたします。

以上、宜しくお願いいたします。
うーたん
常連さん
会議室デビュー日: 2008/09/16
投稿数: 34
投稿日時: 2008-09-24 14:16
お世話になります。

経過報告です。
結論から申しますと、特に何も変更せずに接続できるようになりました。

【前回までの現象】
本番環境で一旦接続できたのが、ODP.NETを再インストールすると接続できなくなった。
開発環境でもODP.NETを再インストールすると接続できなくなった。

問題解決のためODP.NETの色々なバージョンをインストールしては試すを
繰り返していたため、今までに無いおかしな現象が発生し始めたため
今回、もう一度最初からやり直すことにしました。

■削除
・開発環境からはオラクル製品を全てInstallerから削除し、
 残ったディレクトリ、レジストリ(HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE)を
 手動で削除しました。
・本番環境はOracle9iはそのままに、ODP.NETをInstallerから削除し、
 残ったディレクトリを手動で削除しました。
 レジストリはODP.NETのゴミは残っていないようでした。

■インストール
・開発環境にOracle9iClient,ODP.NET11をインストールし、PCを再起動。
・本番環境にODP.NET11をインストールし、サーバを再起動。

■テスト
・開発環境でテストプログラムが動作することを確認しました。
・本番環境でもテストプログラムが動作することを確認しました。

原因は、ODP.NETをインストールしてからの再起動?
一応オラクルにOracle、ODP.NETのバージョン関係を問い合わせています。
Oracle9i、ODP.NET11の関係がNGでないことを祈ります・・・。
回答がきましたらここで報告します。

ありがとうございました。
上総
大ベテラン
会議室デビュー日: 2006/06/22
投稿数: 107
投稿日時: 2008-09-24 15:23
スレ主さんの書き込み(投稿日時: 2008-09-24 12:01)より
引用:

上総さんのお話によるとOracleとODP.NET相互のバージョンの互換性による
問題のようですね。
しかし、ODP.NET11.1.0.6.20ダウンロードサイトの動作環境には
接続可能なOracleDatabaseとして「Oracle9i Database Release 2 以降」と
なっています。これが何を意味しているのか分からなくなりました。

さらに悲しいお知らせなのですが、
開発環境では動作していたはずが、
ODP.NET11をアンインストールして、ODP.NET10やODP.NET9をインストールして
動作しない(ビルドでエラーになる)ことを確認し、ODP.NET11を再インストール
したところ、動作しなくなりました。
現象は、本番とまったく同じ接続エラーです。


 申し訳ありません。バージョンの互換性については、接続先サーバーが
『Oracle10g Release2』の場合での資料でした。
又、対応する『.NET Framework』も『1.0 以降』となっている為、これも特に
問題無いと思います。

※本日OTNのサイトで確認して、Oracle 9i Release2以降となっている事を確認
 しました。
うーたん
常連さん
会議室デビュー日: 2008/09/16
投稿数: 34
投稿日時: 2008-09-26 23:19
上総さん

返事が遅れ申し訳ありません。
本日オラクルより回答がありました。

と、言いましてもODP.NETダウンロードサイトの
動作環境のとおりとの回答でした。
よって、Oracle9iとVS2008ExpressとODP.NET11の組み合わせで
開発しても問題なしということです。

あと、「ODP.NETのインストール資料については英語版になってしまいますが、
以下のドキュメントをご参照ください」とのことでした。
わたしは英語が苦手なので読むのをあきらめました。
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28844/installation.htm#sthref38

色々助言をいただきありがとうございました。

今後ともよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)