- ベストアンサー
オラクルの「ORA_12545 ターゲット・ホストまたはターゲットが見つかりません」のエラーについて
マルチスレッドサーバ構成にしているOracle8iのサーバに対して、クライアントからSQLPlusなどで接続しようとすると、ORA-12545のエラーが出てしまいます。 tnsnames.oraファイルには、HOSTをIPアドレスで記述しており、そのIPアドレス宛には、pingもtelnetでも接続できます。プロトコルにはTCPを使用しており、特に問題はないと思うのですが・・・。ちなみに、サーバを専用サーバ構成に変更すると繋がるようになります。 この現象に対する対処方法をご存知の方、ご教授ください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
また、くまです。 >init<SID>.ora のHOST の構文を教えてください。 構文ではなく、あなたがデーターベースを作成するときに定義したSID名で自動生成された、データーベースに関するソースです。 存在場所:$ORACLE_HOME/dbs/init<SID>.ora ---> <SID> = TEST 中に書かれている、 db_name = "TEST" <---- データーベースの名前 instance_name = TEST <---- インスタンス名 service_names = TEST <---- サービス名 このソースにあるものと、tnsnames.ora に定義したSID名と同じでしょうか?と聞いたものです。 >lxinst でcharacterをオリジナルに作成していないでしょうか? この意味は、Oracleデーターベースでユーザー定義キャラクターの利用を可能にするユーティリティコマンドです。簡単に説明しますと、ターゲットホストが見つからない理由は、要求するクライアントのキャラクターがSJISでも、データーベースに引き渡されると、UNICODEに一旦変換されるからです。今、ユーザ定義による作成されたキャラクターセットをなされた場合、これに対応するキャラクターが見つからないので、そのコマンドで作成されたかどうかを聞いたものです。 >レベルアップ等行われていないでしょうか?。 もちろん、データーベースのレベルアップです。8.1.6を8.1.8に変更していながら、クライアントはそのままのバージョンであるかを聞いたものです。
その他の回答 (4)
- gould09
- ベストアンサー率33% (196/589)
「Oracle Net8 EasyConfig」を使って「tnsnames.ora」を作成しました所、 そちらのファイルとは違ったものが出来ました。 test.world =←■”.world”がついています。■ (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = HostName)←■コンピュータの名前です。■ (PORT = 1521) ) (CONNECT_DATA = (SID = ORCL)←■内容が違います■ ) )
- tadanokuma
- ベストアンサー率36% (128/348)
こんにちは、ただの”くま”です。 お困りの件ですが、私も少々苦労しましたので、お助けできればと思い立ち寄らせていただきました。 listener.ora と init<SID>.ora のHOST にも、tnsnames.ora 同様にIPアドレスを入れて、SID名をあわせてください。大文字、小文字は関係します。 また、lxinst でcharacterをオリジナルに作成していないでしょうか?これをすると、今エラーとなっているものズバリ出ます。後、レベルアップ等行われていないでしょうか?。 では、
補足
すいません。くまさん。 >listener.ora と init<SID>.ora のHOST にも、tnsnames.ora 同様にIPアドレスを入れて、SID名をあわせてください。大文字、小文字は関係します。 ですが、init<SID>.ora のHOST の構文を教えてください。 >また、lxinst でcharacterをオリジナルに作成していないでしょうか? はどういう意味ですか? >後、レベルアップ等行われていないでしょうか?。 何のレベルアップでしょうか? すいませんが、上記の件について、よろしくお願いいたします。
- okwebenomoto
- ベストアンサー率66% (6/9)
sqlplusで接続する時に接続文字列を付けていますか。 Exp USER scott PASSWORD tiger 接続文字列 orcl.world(tnsnames.oraに登録されている接続文字列) sqlplus scott/tiger@orcl.world 上記で接続出来ないのであればtnsnames.oraの登録内容に不備があると思いますが。
補足
接続文字列は記述しています。 それでもエラーになります。 サーバを専用サーバ構成に変更すると繋がるようになります。 ちなみに、下記がtnsnames.oraファイルの中身です。 TEST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.143)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = TEST) ) )
- gould09
- ベストアンサー率33% (196/589)
エラーを見た感じではSQL*Netの設定が正しく出来ていないように感じます。 OSがWindowsの場合では、「Oracle Net8 EasyConfig」の設定が正しく出来ていないように感じます。 質問を見た感じだとUnixの話のように見える為、Unixではなんと言うToolを使って設定するかわかりません。
お礼
原因がわかりました。 ディスパッチャアドレスをinit.oraで明示的に記述していなかったため、 クライアント側にはホスト名で返っていたようで、名前解決ができなかったために 表示されたエラーでした。 クライアント側のHostsファイルに、サーバのホスト名とIPアドレスを記述するか、init.oraにディスパッチャアドレスをIPアドレスで記述すると繋がるようになりました。 いろいろありがとうございました。