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

oracle + ADO.net

  • 題名: oracle + ADO.net
  • 著者: こう
  • 日時: 2004/08/09 16:40:08
  • ID: 5463
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[Win 2000 Pro]
分類:[.NET]

こうです
先ほども質問したのですが、またまた質問してすいません。
今回VB.netでOracleのデータベースにアクセスを試みたのですが
うまくいきません。以下に症状を記します。

 @OracleDataAdapterをフォームに貼り付ける
 A @実行後すぐにデータアダプタ構成ウイザードが出る。
 B次の画面に進み 新しい接続ボタン をクリックする。
 Cサーバ名 ユーザ名 パスワードを入力して 接続テストをし、成功する。
 D次へを何回かクリックし SQLステイトメントの画面になる。
 ESQL分を入力し次へや完了ボタンをクリックする
 F 以下のエラーにより、接続を開けませんでした。
   DLL oci.dll の OCIEnvCreate というエントリ
   ポイントが見つかりません。
   というエラーメッセージが発動する。

 といった具合でうまくいきません。 なにか参照の追加とかで追加しなければ
 いけないものがあったりするか、もしくは根本的に何か間違っているのでしょうか?
 何卒教えていただけるとありがたいです。
 よろしくお願いします。

 こう
2004/08/09(Mon) 18:43:21 編集(投稿者)

■No5463に返信(こうさんの記事)
> こうです
> 先ほども質問したのですが、またまた質問してすいません。
> 今回VB.netでOracleのデータベースにアクセスを試みたのですが
> うまくいきません。以下に症状を記します。
>
>  @OracleDataAdapterをフォームに貼り付ける
>  A @実行後すぐにデータアダプタ構成ウイザードが出る。
>  B次の画面に進み 新しい接続ボタン をクリックする。
>  Cサーバ名 ユーザ名 パスワードを入力して 接続テストをし、成功する。
>  D次へを何回かクリックし SQLステイトメントの画面になる。
>  ESQL分を入力し次へや完了ボタンをクリックする
>  F 以下のエラーにより、接続を開けませんでした。
>    DLL oci.dll の OCIEnvCreate というエントリ
>    ポイントが見つかりません。
>    というエラーメッセージが発動する。
>
>  といった具合でうまくいきません。 なにか参照の追加とかで追加しなければ
>  いけないものがあったりするか、もしくは根本的に何か間違っているのでしょうか?
>  何卒教えていただけるとありがたいです。
>  よろしくお願いします。

こうさん、こんにちは。
とりあえず、Oracleのバージョンを書いてください。oracle9i前と後の違いが結構重要です。それによって回答が変わる場合があります。
あと、6番でSQL文を入力後、エラーが出ているというのであれば、
SQL文が間違っている可能性がありませんか?
SQL PLUSや他のツールを使ってSQL文のチェックをお勧めします。
いつもお世話になります。

バージョンを調べたところ
クライアントは
Oracle8 Server

Release 8.0.5

サーバーは
Oracle8 Server

Release 8.0.3

みたいです。
SQL文の方は間違いはないみたいです。
ちなみにこのようなメッセージが出る場合もあります。

SELECTステートメントは作成されました。
データアダプタを構成中にエラーが発生しました。

よろしくお願いします。
■No5468に返信(こうさんの記事)
> いつもお世話になります。
>
> バージョンを調べたところ
> クライアントは
> Oracle8 Server
>
> Release 8.0.5
>
> サーバーは
> Oracle8 Server
>
> Release 8.0.3
>
> みたいです。
> SQL文の方は間違いはないみたいです。
> ちなみにこのようなメッセージが出る場合もあります。
>
> SELECTステートメントは作成されました。
> データアダプタを構成中にエラーが発生しました。
>
> よろしくお願いします。

みたいです…って事はご自分で確認していないのですか?
SQL Plusは動きましたか?Oracle Clientのバージョンは何ですか?
>「DLL oci.dll のOCIEnvCreateというエントリポイントが見つかりません。」
とあるので、dllのバージョン違いによって出ています。もしかして、ODP(Oracle Data Provider for .NET)でOracle8iを操作しようとしてます?
などなど、情報不足です。
仮にODPをインストールしていたならば、動きません。
ODPをアンインストし、従来のOracle Clientをインストしてください。
ODPはOralce9i以降で動作します。
情報不足まことに申し訳ありません。
 みたいです。 →すいません。自分で調べたのですが、Oracle for Windows NT
の Oracle 8.0 Server Readme という項目をクリックして出てきたバージョンを
 記入しました。

 SQL PLUSはまともに動いています。 クライアントはOracle8インストールしてます
 
 Oracleについてあまりよく知らないまま質問してしまい情報不足な質問もうしわけあ
 りません。 

 こう
2004/08/09(Mon) 19:39:32 編集(投稿者)

■No5474に返信(こうさんの記事)
> 情報不足まことに申し訳ありません。
>  みたいです。 →すいません。自分で調べたのですが、Oracle for Windows NT
> の Oracle 8.0 Server Readme という項目をクリックして出てきたバージョンを
>  記入しました。
>
>  SQL PLUSはまともに動いています。 クライアントはOracle8インストールしてます
>  
>  Oracleについてあまりよく知らないまま質問してしまい情報不足な質問もうしわけあ
>  りません。 
>
>  こう

ちょっと、きつい聞き方をしてしまいましたね。すいません。
さて、 クライアントはOracle8という事ですが、サーバーはもしかして、Oracle8iより前のバージョンではないですか?
Oralce8iより前のサーバー(例えばOralce7など)だった場合、標準のDLL(System.Data.OracleClient)では正常に動作しません。
その場合は諦めて、OLE(System.Data.OleDb)を使用してください。
ADO.NETでは、oo4oよりもOLEの方がパフォーマンスが良いので安心してください。(oo4oに拘る人向けのメッセージ)

追記:Readmeの中身を確認しただけということなので、サーバーのバージョンが違う可能性があります。サーバーのバージョンはSQL Plusで接続した時に最初に表示されます。
ペガラボさんいつも親切に教えてくれてありがとうございます。

今日会社でサーバークライアントともにSQL PLUS を起動してバージョンを見てみました

クライアント
Oracle8 Release 8.0.3.0.0 - Production
With the Partitioning and Objects options
PL/SQL Release 8.0.3.0.0 - Production
に接続されました。

サーバー
Oracle8 Release 8.0.3.0.0 - Production
With the Partitioning and Objects options
PL/SQL Release 8.0.3.0.0 - Production
に接続されました。

という共に同じメッセージでした。
基本的な質問で悪いのですが、Oracle8 と Oracle8i は別物なのでしょうか??

こう
さて、OCI.DLLのエラーについてですが、
OCI.DLLに対するpathが通っていない可能性があります。OCI.DLLは通常[Oracle<ホーム>]\binに作成されているはずなので、コマンドプロンプトでpathコマンドを実行し、pathに[Oracle<ホーム>]\binが含まれているか確認してください。
もしくは、アクセス許可が無いとか…
ところで、複数のOracleクライアントをインストールしてますか?
PATHコマンドの方を実行してみました。 下記のような結果になりました。

C:\Documents and Settings\oec1262>path
PATH=C:\orant\bin;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\MSSQL7\BI
NN;C:\Centura

複数のOracleはインストールはしていません。
権限はDBAのユーザーです。

何度も回答して頂いて本当にありがとうございます。
こう
■No5491に返信(こうさんの記事)
> PATHコマンドの方を実行してみました。 下記のような結果になりました。
>
> C:\Documents and Settings\oec1262>path
> PATH=C:\orant\bin;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\MSSQL7\BI
> NN;C:\Centura
>
> 複数のOracleはインストールはしていません。
> 権限はDBAのユーザーです。

ふむ、Oracleのパスはありますねぇ…
一度path環境変数から「C:\orant\bin」の部分を削除し、再度path環境変数に「C:\orant\bin」を設定しなおすと、解決する場合がありますので試してみてはいかがでしょうか?
ちと、2、3質問
・OleDBを使った接続は正常に動作しますか?
・Oracleクライアントは過去にバージョンアップさせましたか?
・クライアントマシンの以下のレジストリを確かめてみて、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
 OracleOciLib:oci.dll
となっているかどうか…

色々とやってみてもおかしい場合は、Oracleクライアントをインストしなおしたり、.NET Frameworkを入れなおす等を試してください。
ん?.NET Frameworkのバージョンは?
そういえば、VS2002では「System.Data.OracleClient」が入っていなかったはず…
MSサイトかオラクルサイトに転がっていたはずです。
> 一度path環境変数から「C:\orant\bin」の部分を削除し、再度path環境変数に 「C:\orant\bin」を設定しなおすと、解決する場合がありますので試してみてはいかがでしょうか?

まことに基本的な質問ですいませんがPATH環境変数というのはどこを変えればよいの
 でしょうか??

> ちと、2、3質問
> ・OleDBを使った接続は正常に動作しますか?

  OleDBadapter使用時はうまくいきました。
> ・Oracleクライアントは過去にバージョンアップさせましたか?

  とくにしてないですね。

> ・クライアントマシンの以下のレジストリを確かめてみて、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
>  OracleOciLib:oci.dll
> となっているかどうか…

  すいません。 これもどこに存在するのかよくわかりませんでした。
  Cドライブの中とかにこのパスが存在するのですか??

> 色々とやってみてもおかしい場合は、Oracleクライアントをインストしなおしたり、.NET Frameworkを入れなおす等を試してください。

  上記の方法でうまくいかない場合はそうしてみようと思います。

> ん?.NET Frameworkのバージョンは?

  VS2003です。

基本的な質問ばかりすいません。
これからもよろしくお願いします。

こう
こうさん、おはようございます。

>まことに基本的な質問ですいませんがPATH環境変数というのはどこを変えればよいのでしょうか??
システムプロパティの詳細設定タブの環境変数を押すとシステム環境変数があります。そこで編集できます。

>>OleDBを使った接続は正常に動作しますか?
>OleDBadapter使用時はうまくいきました。
どうしてもうまく行かない場合は、oci.dllやその他の関係で安定動作しないので、こちらを使ってください。

>>・クライアントマシンの以下のレジストリを確かめてみて、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
>> OracleOciLib:oci.dll
>>となっているかどうか…
>すいません。これもどこに存在するのかよくわかりませんでした。
>Cドライブの中とかにこのパスが存在するのですか??
regedit.exeを使ってください。
> OracleOciLib:oci.dll
>となっているかどうか…

  ここの部分が
OracleOciLib:ociw32.dll
  となっています。

  この部分がわるいのでしょうか?

  よろしくお願い致します。

  こう
2004/08/11(Wed) 12:08:25 編集(投稿者)

>   ここの部分が
> OracleOciLib:ociw32.dll
>   となっています。
正しくセットされているみたいですね。
となると、色々と考えられるので、このサイトを参考にしてみてください。
ttp://www.hi-ho.ne.jp/tsumiki/cse_9.html#oracle-1
基本的にはオラクルの設定エラーなので…
ただし、レジストリやdllを削除や変更するときは事前にバックアップしておいてくださいね。万が一おかしなことになった場合、復旧できなくなる可能性がありますので…って当たり前の事を言ってすいません。
ぺがらぼさんいろいろ教えてくれて本当にありがとうございます。

まだ解決はしていないけど、解決しようとするプロセスがすごく
勉強になりました。

これからもいろいろとよろしくお願いします。

こう
  • 題名: Re[15]: oracle + ADO.net
  • 著者: SH
  • 日時: 2004/08/13 17:29:45
  • ID: 5553
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
こうさんこんにちは。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13824&forum=7&1
こちらのページに同様の内容の質問があります。

環境変数にORACLE_HOMEが設定されていないのが問題のようです。

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