- PR -

ORACLEでのTNS接続エラー

1
投稿者投稿内容
fuji
常連さん
会議室デビュー日: 2004/02/04
投稿数: 34
投稿日時: 2009-02-03 13:42
長文ですいません。
Oracleのエラー解決方法について、お聞きしたいことがあります。
[前提]
・社内全PC/サーバーは、"domainA.local"に属する
・サーバーAに、Oracle8iがインストール済み
・サーバーA:Windows2000/クライアント:WindowsXPPro
[これまで]
"domainA.local"上のサーバーAに、複数台のクライアントから"Net8 Assistant"で接続
→成功
sql*plus/他業務アプリ(NEC製など)での接続
→成功
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
しかし、ネットワーク統合の必要が出てきており、別ドメイン(domainB.local)のクライアントから(domainA.local)のサーバーを参照する必要が出てきました。
[両ネットワークの詳細]
・両ネットワークは、ドメイン名とIP体系が異なるが、IPアドレスのみルーターでNAT変換を行っている
・domainB.localからdomainA.localにあるサーバーAには、ping/フォルダ参照(ドメインユーザーを手動で入力)/そのリソースを使ってのソフトインストールは成功する
・hostsにIPアドレス ホスト名変換を記載済み
[現在]
"domainA.local"に属するサーバーAに、"domainB.local"に属するクライアントから"Net8 Assistant"で接続
→失敗
sql*plus/他業務アプリ(NEC製など)での接続
→失敗
"domainA.local"に属するサーバーAに、"domainA.local"に属するクライアントから"Net8 Assistant"で接続
→成功

以下は、接続テストで失敗した際に出力されたsqlnet.logです。
***********************************************************************
Fatal NI connect error 12560, connecting to:
(DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracleORCL)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=ORCL)(CID=(PROGRAM=C:\\Program Files\\Oracle\\jre\\1.1.7\\bin\\jrew.exe)(HOST=clienta)(USER=user))))

VERSION INFORMATION:
TNS for 32-bit Windows: Version 8.1.6.0.0 - Production
Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 8.1.6.0.0 - Production
Time: 03-FEB-2009 13:31:18
Tracing not turned on.
Tns error struct:
nr err code: 0
ns main err code: 12560
TNS-12560: TNS: プロトコル・アダプタ・エラー
ns secondary err code: 0
nt main err code: 530
TNS-00530: プロトコル・アダプタ・エラーです。
nt secondary err code: 126
nt OS err code: 0

なかなか大きなトラブルであり、ぜひ解決方法を教えてください。
よろしくお願いします。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2009-02-03 14:23
OTNの掲示板に
に似たような症例の報告が上がっており
ほぼ解決しております。

そちらはご覧になっているでしょうか。
fuji
常連さん
会議室デビュー日: 2004/02/04
投稿数: 34
投稿日時: 2009-02-03 15:09
あすか様
早々のご返答ありがとうございます。

OTNやネットを再度探して、以下のことを試しましたが失敗でした。
(1)
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]
  USE_SHARED_SOCKET(文字列値) = TRUE
(2)
OracleHome\NETWORK\Admin\tnsnames.oraに以下を追加
serverA.domainA.local =
 (DESCRIPTION =
  (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = serverA)(PORT = 1521))
  )
  (CONNECT_DATA =
   (SERVER = DEDICATED) <-この行を追加
   (SERVICE_NAME = serverA)
  )
 )

OTNにも投稿をと思ったのですが、ダブルポストになるのはよくないと。
こちらを削除するかもしれないです。

[ メッセージ編集済み 編集者: fuji 編集日時 2009-02-03 15:10 ]
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2009-02-03 15:29
SERVICE_NAMEをドメインから指定してみてください
fuji
常連さん
会議室デビュー日: 2004/02/04
投稿数: 34
投稿日時: 2009-02-03 16:00
あすか様
たびたびすいません。

domainB.localでOracleクライアントをインストールした後に生成された、両ファイルです。
[sqlnet.ora]
# SQLNET.ORA Network Configuration File: D:\Oracle\Ora81\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DEFAULT_DOMAIN = domainB.local

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES)
[tnsnames.ora]
# TNSNAMES.ORA Network Configuration File: D:\Oracle\Ora81\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

folder.domainB.local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = severA)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)

folder.domainB.local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = serverA)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
上記状態ですが、domainA.localもdomainB.localもだめでした。。。
あえて、domainB.localに変更してみて試したほうがよいのでしょうか?
ほったて
ベテラン
会議室デビュー日: 2007/11/10
投稿数: 68
投稿日時: 2009-02-03 16:23
まず環境ですが...

コード:

Fatal NI connect error 12560, connecting to:
(DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracleORCL)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=ORCL)(CID=(PROGRAM=C:\Program Files\Oracle\jre\1.1.7\bin\jrew.exe)(HOST=clienta)(USER=user))))

VERSION INFORMATION:
TNS for 32-bit Windows: Version 8.1.6.0.0 - Production
Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 8.1.6.0.0 - Production
Time: 03-FEB-2009 13:31:18
Tracing not turned on.



クライアントの OS って XP ですよね?
"Oracle Bequeath NT Protocol Adapter" のバージョン(つまり
クライアント製品のバージョン)が 8.1.6.0.0 ってそもそも
サポートされてない構成です(XP なら 8.1.7 + XP 用パッチ)。

あと接続先に指定された設定が

コード:

(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))')



クライアントのローカルにあるデータベースに接続しようとしてますが
そんなものあるんですか?

ちゃんと接続文字列を指定してないだけのように見えるんですけど...。
tnsping でもエラーになりますかね?


[ メッセージ編集済み 編集者: ほったて 編集日時 2009-02-03 23:49 ]
ほったて
ベテラン
会議室デビュー日: 2007/11/10
投稿数: 68
投稿日時: 2009-02-04 01:53
引用:

fujiさんの書き込み (2009-02-03 16:00) より:

[tnsnames.ora]
# TNSNAMES.ORA Network Configuration File: D:OracleOra81networkadmintnsnames.ora
# Generated by Oracle configuration tools.

folder.domainB.local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = severA)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)

folder.domainB.local =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = serverA)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)



同じ名前のエントリが二つあるのもどうかと思いますが、とりあえずその接続しようとしているクライアントからそのサーバへ、逆にそのサーバからクライアントへ、正しくホスト名で双方向に ping が飛んでますか?
あと、お互いに IP アドレス直指定で ping が飛ぶのであれば、いっそ HOST=... のところに IP アドレスを指定して接続を試してはいかがでしょうかね。
※まずは tnsping でエラーにならないことが前提ですが。

fuji
常連さん
会議室デビュー日: 2004/02/04
投稿数: 34
投稿日時: 2009-02-04 22:40
ほったてさん、ご返答ありがとうございます。
実際は同じ名前のエントリは、両方とも異なっています。(記述ミスです)
バージョンですが、同一セグメント環境ではお互いに接続できていますので、問題ないかと思ってました。
クライアントからサーバーへはNATで通過させています。しかし、サーバーからクライアントへは飛ばないように制御しているのでこれが原因かもしれません。
サーバーをクライアントと同一セグメントにもって行くか、双方向通信を可能にしてみます。tnspingをテストして結果をアップさせてもらいます。
1

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