- PR -

VB.NET→oracle9i接続時にTNSエラーが発生する問題

投稿者投稿内容
CHINU
会議室デビュー日: 2004/04/20
投稿数: 13
投稿日時: 2004-08-07 16:56
こんにちわ。
(環境)
・サーバ
Windows 2000 server
Oracle 9.2

・クライアント
Windows XP pro
Visual Studio .NET 2002
.NETFrameWork 1.0
Oracle 9.2 Client


(接続文字列)
Dim con As New OleDbConnection()
con.ConnectionString= "Provider=OraOLEDB.Oracle.1;Password=(password);Persist Security Info=False;User ID=system;Data Source=TEST"

上記の状態で、
con.open()
を実行すると
「ORA-12154 TNS:サービス名を解決できませんでした」
が発生します。

SQL*Plus、tnspingコマンド、
および VS上でのDataAdapterの構成ウィザードでは
正しく動作するのですが、
コードに実装した場合に上記のエラーが発生します。
(この際の接続文字列もForm上にOleDbConnectionを配置して作成した文字列)

本会議室や他HPなどを探したのですが、なかなか解決できませんで。。。
既出であれば大変申し訳ありませんが、
どなたか解決方法をご存知の方、ご教授ねがえないでしょうか
よろしくお願いいたします。



う。
会議室デビュー日: 2004/07/07
投稿数: 4
投稿日時: 2004-08-07 17:53
はずしているかもしれませんが・・・

Oracleの9.2からORACLE_HOMEに対する権限の扱いが変わりました。
ORACLE_HOMEに対して
  IUSR_<マシン名>
  ASPNET
の2つのユーザに対して読み取りと実行の権限がないと実行時にエラーになります。

ORACLE9.2のこの問題に関しては

  http://support.oracle.co.jp/ind_faq.html

でKROWNの53344で検索すると出てきます。


※「サーバ」と「クライアント」 というのは「サーバ」がDBサーバで「クライアント」が
 .NETフレームワーク上でアプリケーションが動く環境(開発環境?)という認識でよろしいでしょうか???

[ メッセージ編集済み 編集者: う。 編集日時 2004-08-07 17:56 ]
CHINU
会議室デビュー日: 2004/04/20
投稿数: 13
投稿日時: 2004-08-07 19:27
返信ありがとうございます。
環境について補足させていただきます。

(サーバ)はDBサーバで.NETフレームワークは動作していません。
(クライアント)には.NETフレームワーク上で動くVBアプリケーションがあり
OLEを使用して、サーバにアクセスを行っています。
(一般的なクラサバですね)


今回の場合、DBアクセスする場合に、
IUSR_...やASP.NETのユーザになることはないような気もするのですが。
(無知ですので、間違っていたらすみません)

ちなみに、
サーバ上のListener.logを見ると、接続はされていないようなので、
クライアントのtnsname.oraファイルへのアクセスがうまくいってないのかな
という気がしたのですが、
(参照権限をいろいろ変えたりして試しても)
結局解決しませんでした。(T T)
おそらく、クライアント内部の問題のような気がします。

同じような構成で構築されたもいらっしゃるとおもうので、
どうにか行くはずだと思うのですが。。。

引き続き、いろいろ調査しようと思いますが、
もし何か情報をお持ちであればよろしくお願いいたします。




う。
会議室デビュー日: 2004/07/07
投稿数: 4
投稿日時: 2004-08-07 20:00
今回の場合はIUSRもASPNETユーザも関係なさそうですね。。。
申し訳ありません(・・;

後、考えられることとしては、Oracleクライアントのレジストリキーが
違っていることくらいでしょうか。。。
(Oracleクライアントのバージョンアップをしたときに発生するようです)

クライアントマシンのレジストリが以下のようになっているかチェックしてみてください

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
  OracleOciLib : oci.dll
  OracleSqlLib : orasql9.dll
  OracleXaLib : oraclient9.dll


※OraOLEDBがOCIを使うか知らないので、またはずしているかもしれませんが(汗
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-09 08:12
OISCで、"authenticated"をキーに検索

#「OISCってなに?」は論外
CHINU
会議室デビュー日: 2004/04/20
投稿数: 13
投稿日時: 2004-08-09 10:05
う。さん、ありがとうございます。

調べたところ、私のレジストリは以下のようになっていました。
OracleOciLib : oci.dll
OracleSqlLib : SQLLib80.dll
OracleXaLib : xa80.dll

OCIについて調べてみたところ
C,C++等から接続する際に主に使用されている見たいなので
ちょっと気にかかりますが、
可能性のあるものは全て試して見ようと思います。
今日は、午後からしか作業できないので、
その後に結果を挙げようをおもいます。



Jittaさん、ありがとうございます。

>OISCで、"authenticated"をキーに検索
>#「OISCってなに?」は論外

検索をしてみたのですが、
どれか判断が付きませんで。。。

力不足で申し訳ないのですが、
もし、この問題の核心をご存知であれば、
教えていただけませんか。
正直なことを申し上げますが、
調査に与えられてる時間が限られてまして。

わがままを言って申し訳ありませんが、
よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-09 10:29
 ORACLE_HOMEのAuthenticated Usersに対する権限を剥奪し、付与する(53387)。
CHINU
会議室デビュー日: 2004/04/20
投稿数: 13
投稿日時: 2004-08-09 17:53
Jittaさん、ありがとうございます。

ご指導いただいた内容で、試してみたのですが
やっぱり解決しませんでした。

ほかに何か考えられますかね?
VBに何か設定が必要とか・・・・

自分の未熟度を痛感していますが、
解決しないと先に進まないので、
また、いろいろ調べてみます。

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