- PR -

tns経由での接続でORA-12154が出る

1
投稿者投稿内容
コウジ
ベテラン
会議室デビュー日: 2006/12/18
投稿数: 54
投稿日時: 2007-06-19 17:47
どなたか教えてください。

クライアントからsqlplusで接続しようとすると
ORA-12154: TNS:could not resolve the connect identifier specified
のエラーが出て接続できません。
クライアントからのコマンド:
sqlplus hoge/hoge@AAA

同クライアントからtnspingを実施すると正常に返ってきます。
またNetCAやNetmgrで確認すると接続できます。

サーバ上でsqlplusを実行しても接続できます。
サーバ上でのコマンド:
sqlplus hoge/hoge@AAA
@AAAをはずしても接続はできます。

どなたか心当たりのある方ご教示願えませんでしょうか・
コウジ
ベテラン
会議室デビュー日: 2006/12/18
投稿数: 54
投稿日時: 2007-06-19 17:53
補足説明です。

サーバはLinux REDHAT 9で、オラクルは10.1.0.2.0です。
クライアントはWindows XP SP2でオラクルは10.2.0.1.0です。

ちなみにサーバはクライアント機のVirtualPC上で動作しており、
お互いにpingも通っております。
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2007-06-19 18:05
で、クライアントの tnsnames.ora とサーバの listener.ora と tnsping の結果は?
_________________
もしもし@RMAN 友の会
コウジ
ベテラン
会議室デビュー日: 2006/12/18
投稿数: 54
投稿日時: 2007-06-19 18:18
早速のお返事ありがとうございます。

クライアントのTNSNAMES.ORAの記述は以下です。
hoge =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SVNAME)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = db01.domain.co.jp)
)
)

サーバのLISTENER.ORAの記述は以下です。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/R100/app/oracle/product/10.1.0.2)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = db01
(ORACLE_HOME = /home/oracle/R100/app/oracle/product/10.1.0.2)
(GLOBAL_DBNAME = domain.co.jp )
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SVNAME)(PORT = 1521))
)
)
)

サーバからのtnspingは正常に返ってきます。
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2007-06-19 18:32
ヒント:SERVICE_NAME と GLOBAL_DBNAME

で、
引用:

サーバからのtnspingは正常に返ってきます。



どんな結果になったんでしょうか?


# ま、"could not resolve the connect identifier specified" って
# あるとおり問題は connect_data の書き方の問題だし、tnsping は
# connect_data の内容は見ないですから結果は直接関係しないんですが
# 情報として出すときのお約束として。

_________________
もしもし@RMAN 友の会
コウジ
ベテラン
会議室デビュー日: 2006/12/18
投稿数: 54
投稿日時: 2007-06-19 18:41
tnspingの結果(サーバ)
パラメータ・ファイルを使用しました:
/home/oracle/R100/app/oracle/product/10.1.0.2/network/admin/sqlnet.ora

エイリアスを解決するためにTNSNAMESアダプタを使用しました。
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = SVNAME
)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = db01.domain.co.jp)))
OK (580ミリ秒)



ちなみにクライアントからのtnspingの結果は以下となります。
d:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora

エイリアスを解決するためにTNSNAMESアダプタを使用しました。
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = SVNAME)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = db01.domain.co.jp)))
OK (10ミリ秒)


また、クライアントのsqlnet.oraの記述は以下となります。
SQLNET.AUTHENTICATION_SERVICES= (NONE)
TRACE_LEVEL_CLIENT = SUPPORT
NAMES.DIRECTORY_PATH= (TNSNAMES)
TRACE_LEVEL_SERVER = SUPPORT
TRACE_DIRECTORY_CLIENT = D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN
TRACE_FILE_CLIENT = trace.log
LOG_FILE_CLIENT = tns.log
LOG_DIRECTORY_CLIENT = D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2007-06-20 15:58
どーなったのかな...。
とりあえず、クライアントから接続要求には "db01.domain.co.jp" というサービス名のインスタンスに接続しようとしていますが、リスナーには "domain.co.jp" という名前でデータベースを登録しているような感じですが。

# データベース自身も local_listener の初期化パラメータか
# デフォルトの 1521 をリスニングしているリスナーがあればそいつに
# 自分の SID とグローバルデータベース名を登録しに行くから、
# リモートからデータベースを停止・起動することがなければ
# いっそのこと動的登録だけにしちゃうってのも手かと。

_________________
もしもし@RMAN 友の会
コウジ
ベテラン
会議室デビュー日: 2006/12/18
投稿数: 54
投稿日時: 2007-06-27 21:56
>もしもしさん
どうも、ご無沙汰しております。

最近こちらの作業ができなかったのですが、
VirtualPCでもう一台クライアントとなるLinuxを用意して
接続したところ、正常に接続ができました。
TNSの記述はまったく同じなのに・・・

ということで先ほどWindowsのオラクルクライアントモジュールを
再インストールしたところ無事に接続ができるのが
確認できました。
バイナリが正常に落ちていなかったみたいです・・・。

いろいろとありがとうございました。>もしもしさん
1

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