• ベストアンサー
  • 暇なときにでも

リスナーが起動しているのに「ORA-12541 : TNS: リスナーがありません」と怒られる

同じ LAN 内にサーバーが3つあります。 すべて別々のデータベースが入っている DB サーバーです。 サーバーの状態は、順番に以下の通りとなっています。 A:DB サーバー(参照されるサーバー) B:A に対して接続可能。 C:A に対して接続できない。 B → A、C → A に対して DBLink を貼っているのですが、 B → A だけが成功し、C → A が失敗します。 失敗のエラー内容が、上記の「リスナーがありません」というエラーなのですが、 B → A の接続が成功しているのでリスナーは存在して正常に動作しているはずです。 A に対する接続情報(tnsnames.ora)は、B も C もまったく同じです。 A 側のリスナーのポートも同じで、同じユーザー/パスで接続テストをしています。 自分はサブシステム担当なので A サーバーの設定情報を見ることはできないのですが、 考えられるのは A 側で参照を許可する制御をしているくらいです。 でも、A 側で「B からの参照は許可するが C の参照は不可」と言った制御はできるものでしょうか? もしくは、ほかに考えられる原因はありますでしょうか? お手数ですが、よろしくお願いします。

共感・応援の気持ちを伝えよう!

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

エラーコードからOracleとお見受けします。 AとBとC、バージョン及びプラットフォームも同じなのでしょうか? OracleのVersion違いがあれば、場合によりDB-Linkが使用できないものもあります。 またCの環境からSQL-PlusなどでAに対してつながりますか? つながらない場合、DB-Linkも失敗します また、ネットワーク的に弾かれるようであればAに対して接続することはできません CからAにPing通りますか? そのあたりの環境を今一度確認されてみてはいかがでしょうか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

大変遅くなり申し訳ありません。 未だ、このときの問題は謎のままなのですが、ありがとうございました。

質問者からの補足

迅速なご回答ありがとうございます。 また、説明不足が多々あり申し訳ありません。 環境は、Oracle で間違いありません。 A のバージョンは不明ですが、 B と C は同一バージョン、同一プラットフォームです。 また、C から A へは、SQL-Plus で試してもつながりません。 (ここで ORA-12541: TNS: リスナーがありません、と出ます) C から A へ、ping は通りますが、 tnsping は上記と同じエラーが出て通りません。 tnsping の結果は書き写しますと以下の通りです。 --- パラメータ・ファイルを使用しました: c:\oracle\...sqlnet.ora エイリアスを解決するためにHOSTNAMEアダプタを使用しました。 Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME.<略>..PORT=1521))) TNS-12541: TNS: リスナーがありません。 --- これが B から A の tnsping の結果では、 一番下の行の内容だけが異なります<OK(30ミリ秒)>。 よろしくお願いします。

その他の回答 (2)

  • 回答No.3

#1です。 pingが通ってtnspingが通らないのは設定の可能性が高いですね… (ユーザー・パスワード・スキーマ権限の問題ではなく接続定義自体が間違っている) そのあたりは管理者か構築者に聞いてみるしか無いですね > パラメータ・ファイルを使用しました: > c:\oracle\...sqlnet.ora あと複数のインスタンスやバージョンがインストールされている場合 意図していないTNS定義ファイルを見ている場合もあります これ以上は僕の方ではちょっとアドバイス難しいですねー(´・ω・`) あとはいろいろ試してみるしか分かりません…

共感・感謝の気持ちを伝えよう!

質問者からのお礼

大変に遅くなりましたが、ありがとうございました。

  • 回答No.2

追記 Pingは通常のPingコマンドと、tnsping 設定名で試してみてくださいねー

共感・感謝の気持ちを伝えよう!

質問者からのお礼

参考にさせていただきました。ありがとうございました。

関連するQ&A

  • DBリンク経由の参照について

    サーバ【A】のスキーマ【あ】にDB【テーブル1】があります。 サーバ【A】のスキーマ【い】に、【あ】からセレクト権限を与えた所、【い】から【テーブル1】を参照できるようになりました。 次に、 サーバ【B】からサーバ【A】にDBLINKをはりました。 (tnspingで接続されているのを確認済)。 これで、 サーバ【B】のスキーマ【あ】からDBLINK経由で【テーブル1】を参照できるようになりました。 しかし、サーバ【B】のスキーマ【い】から【テーブル1】が参照できません。 私としては、スキーマ同士の権限を与え、DBLINKが正しく繋がっているので、参照できるのでは??と思うのですが、 何度やっても、 --------------------------------------------------------------- ORA-04043: オブジェクト"【あ】"."【テーブル1】"は存在しません。 --------------------------------------------------------------- が表示されてしまいます。 原因として何が考えられるでしょうか…?? 説明不足だったらすみません。 何か考えられる可能性があったら教えて下さい。

  • ORACLE9i Clientのエラーについて

    初めまして。 今、oracle9iのDBサーバーと、同じセグメントにあるclientをインストしたマシンで接続しようと頑張っているのですが、うまくいきません・・・。 設定としては、tnspingもOK出ているのですが、clientから sqlplus ID/PW@service_name で入ると 「ORA-12541 TNS リスナーがありません」 が出てしまって接続できません。 接続先のDBサーバーのリスナーも上がっているのは確認しています。 clientで接続する際には、DBサーバー側のlistener.oraも設定し直す必要があるのでしょうか?それとも他の設定ファイルを編集する必要があるのでしょうか? それとも、client側もリスナーあげなきゃいけないのでしょうか?? ちなみに今回設定をしたのは、client側のtnsnames.oraだけです。足りないのがあれば教えてください。よろしくお願いします! (↑すみません勉強不足で。。)

  • データベースリンクについて

    サーバーAからサーバーBにDB_LINKを作成し、サーバーBのテーブル(参照権限付与済)を参照しにいったところ、『ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。』となってしまいました。 またサーバーCにDB_LINKを作成したら何のエラーも発生しませんでした。 ちなみにSQLPLUSからサーバーBにログインは可能で、前述のテーブルも参照できました。しかしSQLPLUSからDBLINKを介しての参照は同じエラーになってしまいます。 ちなみに固定ユーザーでプライベート接続でリンクを作成しました。 相手サーバーにユーザーもIDも登録済みです。 いろいろ調べてみたのですが、全然わかりません。 ご存知の方がいらっしゃったら教えて下さい。 宜しくお願いします。

  • リスナーがありません

    無償版のOracle 12cをインストールしました。 レジストリで「ORACLE_HOME」と「ORACLE_SID」の値を確認して環境変数に設定しました。 ORACLE_HOME … C:\app\ora\product\12.1.0\dbhome_2 ORACLE_SID … orcl それから下記のURLを参考にしてユーザーを作成しました。 http://replication.hatenablog.com/entry/2015/08/05/093000 作成したユーザーで接続しようとしたら下記のエラーが発生してしまいました。 conn 上記で作成したユーザー/パスワード@PDBORCL ORA-12541: TNS: リスナーがありません ネットで「tnsnames.ora」に記述するという記事を見たので下記のパス先ある「tnsnames.ora」に下記の内容を追加しました。 C:\app\ora\product\12.1.0\dbhome_2\NETWORK\ADMIN PDBORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = IPアドレス)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PDBORCL) ) ) でも結果は同じでした。 ※試しに下記のパス先に「tnsnames.ora」を設置しても同じでした。 C:\app\ora\product\12.1.0\dbhome_1\NETWORK\ADMIN 申し訳ありませんがどのようにすればいいのでしょうか。 何卒、ご教授宜しくお願いします。

  • ORA-1403

    質問するカテゴリが間違っていたら申し訳ありません。 oracleを使用しWEBアプリを開発しています。 DB連携を行っていて、 WEB--DB--DB処理という形になっています。 言語はWEB側が java1.5(struts1.2)コンパイルは1.4準拠 DB処理が Cです。(PRO C?) WEB側で値を格納し、DB側で入力値によって処理を 行い結果を格納するのですが、たまにORA-1403のエラーが発生し 正しく処理ができません。 例 tbl_master A001(PK), A002   , A003 ID    , linkcode , 結果 tbl_link001 A001(PK), A002  , A003 ID    , 値1  , 値2 WEB側でDB格納する際にDB接続からリリースまでのメソッドに synchronizedをかけていますが、これが影響しているのでしょうか? DBのロックではないので問題は無いとは思っているのですが・・・。 ご存知の方がいらっしゃいましたらご教授いただけますでしょうか。 お願いします。

  • Oracle 10gでORA-12154:TNS:could not...

    Oracle 10gのクライアント-サーバー環境でSQL*Plusなどから ローカルネーミングで接続しようとするとORA-12154:TNS:could not resolve the connect identifier specifiedが出て接続できません。 サーバー(ホスト名;aspire) VistaHomePremiumSP1 Oracle10gDatabase クライアント XPHomeEditionSP3 Oracle10gClient tnsnames.oraの内容 # tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\client_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools. ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = aspire)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) oracle.keyの内容 SOFTWARE\ORACLE\KEY_OraClient10g_home1 レジストリの内容 [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1] "ORACLE_HOME"="C:\\oracle\\product\\10.2.0\\client_1" "ORACLE_HOME_NAME"="OraClient10g_home1" "ORACLE_GROUP_NAME"="Oracle - OraClient10g_home1" "ORACLE_BUNDLE_NAME"="Enterprise" "NLS_LANG"="JAPANESE_JAPAN.JA16SJIS" "StatementCacheSize"="0" "OLEDB"="C:\\oracle\\product\\10.2.0\\client_1\\oledb\\mesg" "StmtCacheSize"="0" "SQLPATH"="C:\\oracle\\product\\10.2.0\\client_1\\dbs" "OO4O"="C:\\oracle\\product\\10.2.0\\client_1\\oo4o\\mesg" "ORACLE_HOME_KEY"="SOFTWARE\\ORACLE\\KEY_OraClient10g_home1" "MSHELP_TOOLS"="C:\\oracle\\product\\10.2.0\\client_1\\MSHELP" なお、簡易接続ネーミングでは成功します。 sqlplus scott/tiger@aspire/orcl また、環境変数ORACLE_HOMEを設定すると成功します。 set ORACLE_HOME=C:\oracle\product\10.2.0\client_1 sqlplus scott/tiger@orcl 諸先輩方のアドバイスをお願いいたします。

  • データベースリンクとシノニムについて

    現在以下の様な状態で、サーバAのスキーマAからサーバBのテーブルを参照しています。 DBLINK(A)を外すとサーバAのスキーマAからサーバBのテーブルをSELECTする事が 出来なくなってしまいますか? スキーマAでサーバBの必要なテーブルが 全てシノニムで定義されていたので、イメージ的に スキーマBのDBLINKが残っていれば サーバAのスキーマA→スキーマB→サーバBのテーブルって感じで 参照出来そうな気がするのですが、どうなのでしょうか? サーバAのスキーマA → DBLINK(A) → サーバB  ↓ シノニム  ↓ サーバAのスキーマB → DBLINK(B) → サーバB

  • 共有サーバ接続で ora-12523

    専用サーバ接続だと、問題なく接続できるのですが、 共有サーバ接続にするとora-12523でエラーとなってしまいます。 tnsnames.oraに (CONNECT_DATA = (SERVER = SHARED)) としてローカル環境で接続しています。 同じような現象をご存知が見えましたら、ご教授願います。 os : miracle linux 2.4.9-e.9.30ml db : oracle 10.1.0.2

  • Oracle8i(8.1.7)forLinuxのDB サーバにリスナーを強制切断するには

    恐れ入ります、oracleのDBサーバにクライアントがWindowsでMSアクセスを使用 しているユーザがODBC経由で接続しています。 このリスナーをoracleのDBサーバ側で強制切断するoracleのコマンドと いったものはないのでしょうか? よろしくお願い致します。

  • VB.NET ORA-12170

    http://okwave.jp/qa/q8420174.html ↑ VB.NETで作成したアプリでこちらの質問で無事解決し、違う環境で試したところORA-12170の タイムアウトエラーが発生しました。 SQL*Plusからの接続は問題ありません。 わからないのはWEBアプリの方は接続できるのに、コンソールアプリの方がこのエラーになってしまいます。 どちらのアプリの接続文字列も同じData Sourceを指定してます。 「db1」がTNSNAMES.ORAに記述している識別子になります。 WEBアプリ側 (Web.configに記述) <connectionStrings> <add name="oracle" connectionString="Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1" providerName="System.Data.OleDb" /> </connectionStrings> コンソールアプリ側 (INIファイルに記述) ConnectionString=Provider=OraOLEDB.Oracle;Data Source=db1;Password=pass1;User ID=user1 一般的にはDBサーバにネットワークがつながってないなど単純な理由のようですが、 WEBアプリは接続できるので、そういうことはあり得ないと思います。 コンソールアプリの問題と思うのですが、どんな原因が考えられるでしょうか?