DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Vb.Net2005からオラクル7.3.4のDBに接続したい

環境/言語:[VB.NET2005]
分類:[.NET]

こんにちは。
オラクル初体験なのですが.NET2005でオラクル7.3.4WorkGroupServerのDBにデータのInsertを行わないといけません。
OracleClientをImportしConnectionOpenを行うと
「"System.Data.OracleClient には Oracle クライアント ソフトウェア バージョン 8.1.7 以降が必要です。"」とのエラーが出ます。

Oracle クライアント ソフトウェア バージョン 8.1.7というのは何なのか?そもそもかなり古いオラクル7.3.4に対応しているのかご存知の方いらっしゃれば教えていただけないでしょうか。
■No16490に返信(町さんの記事)
ヘルプ(MSDN)に書いてあると思いますが。
http://msdn2.microsoft.com/ja-jp/library/2d7h4ycx.aspx
■No16490に返信(町さんの記事)
> Oracle クライアント ソフトウェア バージョン 8.1.7というのは何なのか?

プロバイダのバージョンのひとつです。

> そもそもかなり古いオラクル7.3.4に対応しているのかご存知の方いらっしゃれば教えていただけないでしょうか。

質問前に、ベンダのサイトに目を通しておくと良いと思います。
http://www.oracle.co.jp/products/system/matrix_db.html
> .NET2005でオラクル7.3.4WorkGroupServerのDBにデータのInsertを行わないといけません。
> OracleClientをImportしConnectionOpenを行うと
> 「"System.Data.OracleClient には Oracle クライアント ソフトウェア バージョン 8.1.7 以降が必要です。"」とのエラーが出ます。
>
> Oracle クライアント ソフトウェア バージョン 8.1.7というのは何なのか?そもそもかなり古いオラクル7.3.4に対応しているのか

System.Data.OracleClientはFrameworkが用意しているDBプロバイダで、
あくまで「コードからOracleを扱えるようにする」ためのものです。
Frameworkから見るとOracleは他社の製品なので仕様がわかりません。
そこでDBプロバイダという言わば汎用インターフェースを経由して実際のDBをアクセスします。
しかし実際の操作はDBの仕様に従う必要があり、それをおこなうのがDB付属のドライバになります。
#コード→DBプロバイダ→DB付属ドライバ→DB

今回のエラーは、DB付属ドライバのバージョンは8.1.7以上でないとDBプロバイダは動きませんということになります。
7.3.4を使いたいということなのでSystem.Data.OracleClientは使えないということになりますので
OLEDBやODBCプロバイダを使うことになるかと思います。(Oracle〜名前空間は使わない)
るしぇさん>
申し訳ございません。MSDNだけでは判断できなかったので書き込みさせていただきました。

じゃんぬねっとさん>
ありがとうございます。
対応表を見ると「Oracle Data Provider for .NET XX」では7.3.4に対応するものが無い為接続不可。
「Oracle Provider for OLE DB R8.1.7」が7.3.4に対応しているので使用可能。
このような認識なのですがOKですか??
■No16497に返信(町さんの記事)
> 対応表を見ると「Oracle Data Provider for .NET XX」では7.3.4に対応するものが無い為接続不可。

あちゃー、貼るべき URL がまずかったみたいですね。

Oracle Data Provider for .NET はいわゆる ODP.NET と呼ばれるもので、
System.Data.OracleClient 以下のテクノロジとは、別物です。
まどかさん>
ありがとうございます。OracleClientを諦めOLEDBで接続できるよう試行錯誤してみます。

じゃんぬねっとさん>
>>Oracle Data Provider for .NET はいわゆる ODP.NET と呼ばれるもので、
>>System.Data.OracleClient 以下のテクノロジとは、別物です。

とはどのようなことでしょうか?勉強不足で意味がよくわかりません。
もしよろしければ教えていただけないでしょうか?


あと気になった点が一つ、サーバーエクスプローラーでデータソースの選択を行う画面でOracleデータベースにカーソルを合わせると説明文に「.NET Framework Oracle用データプロバイダを使用してOracle7.3、8i、または9iに接続するには、この選択を行います。」とのメッセージが出て、さらに進み接続先情報を入れると「System.client.OracleclientにはOracleクライアントソフトウェアバージョン8.1.7以降が必要です」とのエラーメッセージが出ます。
メッセージだけを見るとOracleClientでどうにかすれば接続ができそうな感じなのですがどうなのでしょうか?
全く見当違いのことかいてたらすいません・・。
> サーバーエクスプローラーでデータソースの選択を行う画面でOracleデータベースにカーソルを合わせると説明文に「.NET Framework Oracle用データプロバイダを使用してOracle7.3、8i、または9iに接続するには、この選択を行います。」とのメッセージが出て、さらに進み接続先情報を入れると「System.client.OracleclientにはOracleクライアントソフトウェアバージョン8.1.7以降が必要です」とのエラーメッセージが出ます。
> メッセージだけを見るとOracleClientでどうにかすれば接続ができそうな感じなのですがどうなのでしょうか?

8.1.7以降のOracleClient製品をインストールすると動くかもしれません。
ただし、7.3.4に無いインターフェースを使わないように注意する必要があります。
また実際の動作環境が7.3.4のみであればその使い方はできなくなります。
■No16502に返信(町さんの記事)
> >>Oracle Data Provider for .NET はいわゆる ODP.NET と呼ばれるもので、
> >>System.Data.OracleClient 以下のテクノロジとは、別物です。
> とはどのようなことでしょうか?勉強不足で意味がよくわかりません。
> もしよろしければ教えていただけないでしょうか?

ごめんなさい、これ以上噛み砕けれないです...
まどろこしい用語を取り外してみることしかできませんが、

町さんが話題に出した 「Oracle Data Provider for .NET」 は、
今どうこうしようとしている、System.Data.OracleClient 以下の機能とは別のものですよ。

という意味でしかないです。
■No16505に返信(じゃんぬねっとさんの記事)
> ■No16502に返信(町さんの記事)
>>>>Oracle Data Provider for .NET はいわゆる ODP.NET と呼ばれるもので、
>>>>System.Data.OracleClient 以下のテクノロジとは、別物です。
>>とはどのようなことでしょうか?勉強不足で意味がよくわかりません。
>>もしよろしければ教えていただけないでしょうか?
>
> ごめんなさい、これ以上噛み砕けれないです...
ODP.NET が何か分かれば良いんじゃない?
http://www.atmarkit.co.jp/fdb/rensai/odpdotnet01/odpdotnet01.html
2006/07/06(Thu) 18:12:05 編集(投稿者)

■No16506に返信(るしぇさんの記事)
> ODP.NET が何か分かれば良いんじゃない?
> http://www.atmarkit.co.jp/fdb/rensai/odpdotnet01/odpdotnet01.html
別物だって言ってることを理解できていないから困っているのでは?
今話題になっているのはODPじゃないのに、そこに着目してることに問題があるわけで。
見ているところが違うよっていう流れなので。
まどかさん>
そのようですね^^;対応はしているということですね。

じゃんぬねっとさん・るしぇさん・はいこーんさん>
ありがとうございます。皆さんのおかげで違いはわかりました。

OleDbConnectionを使い接続を試みているのですがOpen時に「"ORA-12154: TNS: サービス名を解決できませんでした。"」のエラーが出て調べているところです。

ORACLE側の設定の話なので板違いですが知っている方いらっしゃればTNSとやらの設定方法等教えてください^^;
> そのようですね^^;対応はしているということですね。

先に書いたように8.1.7以降のOracle Provider for OLE DBもしくはODBCドライバが必要になります。
かつ、その製品を購入する必要があります。
7.3.4へアクセスするということなのでそのバージョンは購入済みだと思いますが
Oracle Provider for OLE DBはその時代には無いんじゃないかと思います。
なので導入するために下記を含む製品を購入するか、7.3.4付属のODBCドライバもしくはVS付属のMS製Oracle用ODBCドライバを使うことになるかと思います。
http://otn.oracle.co.jp/tech/windows/ole_db/index.html

> OleDbConnectionを使い接続を試みているのですがOpen時に「"ORA-12154: TNS: サービス名を解決できませんでした。"」のエラーが出て調べているところです。

これ、Oracleの基本ですので設定が正しいか確認してください。

サービス名は簡単に言えばどのDBへアクセスするかの設定で、ドライバに対して指定します。
データソースに指定する接続先の設定で別ファイルになっていてOracleで作成するといったほうがわかりやすいでしょうか。
で、7.3.4ならSQL*Netという製品が入っていてその設定アプリケーションがプログラムメニューにあるはずです。
そこで接続先を入力して好きな名前をつけて保存します。
その名前がデータソースへ指定する接続先の名前になります。
接続先のアドレスやデータベース名は管理者から入手してください。

DOBON.NET | プログラミング道 | プログラミング掲示板