• ベストアンサー

tnsnames.oraファイルについて

初心者の質問で申し訳ないのですが。。。。 下記サイトからOracle Database 10g Client Release(10.2.0.3)を ダウンロードしてインストールしました。 (URL) http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10203vista.html インストール後、Visual Studioの開発環境からデータソースの新規追加を行い、接続テストを試みたところ、 以下のエラーが出力されました。 (Error) ORA-12514: TNS:listener does not currently know of service requested in connect descriptor いろいろ調べていると、上記エラーの発生原因として、tnsnames.oraファイルの内容に誤りがあるのでは? という認識をもっているのですが、 肝心のtnsnames.oraファイルがOracle Clientのインストール環境下に存在しません。 そもそも、tnsnames.oraファイルというのは、クライアント側で設定するものではないのでしょうか?? 基本的な質問で本当に申し訳ないのですが、 どなたかご回答をお願い致します。

  • Oracle
  • 回答数4
  • ありがとう数5

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

  • ベストアンサー
  • mototaker
  • ベストアンサー率100% (7/7)
回答No.4

tnsnames.ora, listener.ora たしかに、いろいろと分かりにくいですよね 今回のエラーは ORA-12514: TNS:listener でありますので、 DBサーバ側の tnsnames.oraは関係ありません。 listener.ora そして DBNAMEの問題です。 listenr.oraは、TNSリスナーの設定ファイルです。 質問に書かれているリンク先から、 Oracle Database 10g Release 2 (10.2.0.3/10.2.0.4) Enterprise/Standard Edition for Microsoft Windows Vista and Windows 2008 をダウンロードして、インストールしたと理解しました。 >tnsnames.oraファイルというのは、クライアント側で設定するものではないのでしょうか その通りです。詳細は異なりますが、おおまかに、 tnsnames.oraは、クライアントで設定します。 そして、サーバー側で設置するものが、 listener.oraです。 not currently know of service とあります。 これは、 サーバーのlistener.oraが設定している、Service名と、 クライアントの tnsnames.oraが設定いる Service名が一致しな いことを意味しています 9i(正式には8i)以降は、listener.oraの中にサービス名を記入せず、 動的リスナーであることが多いので、今回は、すでに起動中の リスナーから確認してみましょう ◆実際にやってみましょう DBサーバー側で コマンドプロンプトを起動してください C:\Users\MOTOTAKA>lsnrctl LSNRCTL for 32-bit Windows: Version 10.2.0.3.0 - Production on 08-10月-2009 Copyright (c) 1991, 2006, Oracle. All rights reserved. LSNRCTLへようこそ。詳細は"help"と入力してください。 ◆状況を確認します LSNRCTL> status (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))に接続中 リスナーのステータス ------------------------ 別名 LISTENER バージョン TNSLSNR for 32-bit Windows: Version 10.2.0.3.0 - Pr 開始日 08-10月-2009 23:57:00 稼働時間 0 日 0 時間 0 分 48 秒 トレース・レベル off セキュリティ ON: Local OS Authentication SNMP OFF パラメータ・ファイル C:\oracle\product\10.2.0\db_1\network\admin\listener ログ・ファイル C:\oracle\product\10.2.0\db_1\network\log\listener. リスニング・エンドポイントのサマリー... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=MOTOTAKA-PC)(PORT=1521))) サービスのサマリー... サービス"ORCL_XPT"には、1件のインスタンスがあります。 インスタンス"orcl"、状態READYには、このサービスに対する1件のハンドラがあります サービス"PLSExtProc"には、1件のインスタンスがあります。 インスタンス"PLSExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラが サービス"orcl"には、1件のインスタンスがあります。 インスタンス"orclsid"、状態READYには、このサービスに対する1件のハンドラがあります コマンドは正常に終了しました。 LSNRCTL> いろいろありますが、この サービス"orcl"には、1件のインスタンスがあります。 インスタンス"orclsid"、状態READYには、このサービスに対する1件のハンドラがあります がサービス名です。ですので、この場合は、 サービス名が orcl この名称(大文字小文字関係なし)と、 クライアントの tnsnames.ora のサービス名を合わせる必要があります。 ちなみに、 SID(インスタンス名)が orclsid になります。 ◆ クライアントの tnsnames.oraをみてみます MMM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 15211)) ) (CONNECT_DATA = (SID = XE) ) ) このようになっていたら、 サービス名接続ではなく、SID接続になります。 よって、サービス名 orcl で接続させためには、 MMM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 15211)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL) ) ) としてください。 サービス名は、大文字小文字関係なしです。 これにより、 今回のエラー ORA-12514: TNS:listener は、解決します Your DBA MOTO:TAKER

masy0312
質問者

お礼

現在、こちらの環境でテストをしています。 非常にわかりやすいご説明ありがとうございました。

その他の回答 (3)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.3

>データベースサーバはリモートのサーバ環境にあります。 >ただ、その場合でも、やはりOracle Clientをインストールした >環境では、データベースサーバに接続するための情報を記述した >tnsnames.oraファイルが必要になるのですよね?? はい、その通りです。

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

tnsnames.oraは、DBサーバでもクライアントでも使用します。 あるDBサーバから他のDBサーバに接続する時、接続情報はtnsnames.oraに設定されたものを使用します。 Oracleクライアントのみインストールした環境からDBサーバへアクセスする場合も、tnsnames.oraに設定されたものを使用します。 どこかに接続先の情報を設定しなければアクセスできませんよね? そのリモートのサーバ環境のIPアドレスやらホスト名やらを設定するのがtnsnames.oraです。 というか、Oracleアプリケーション、Oracleサーバー間のネットワーク通信は「Oracle Net」という共通のコンポーネントを使用して行われます。 その設定ファイルとしてtnsnames.oraがあるわけです。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

Oracle Clientのインストールの最後の方で,ネーミングメソッドが云々と言う画面が出てきて、そこに適当な値を設定すると、tnsnames.oraが作成されます。 tnsnames.oraがないのならインストールが中断したか、ネーミングメソッドの設定をキャンセルしたのでしょう。 ちなみに、Oracle Clientにはデータベースはないですけど。 データベースサーバに接続することだけが可能です。 データベースサーバはどこかほかにあるのですよね。

masy0312
質問者

補足

ご回答ありがとうございます。 >ちなみに、Oracle Clientにはデータベースはないですけど。 >データベースサーバに接続することだけが可能です。 >データベースサーバはどこかほかにあるのですよね。 > はい、そうですね。 データベースサーバはリモートのサーバ環境にあります。 ただ、その場合でも、やはりOracle Clientをインストールした 環境では、データベースサーバに接続するための情報を記述した tnsnames.oraファイルが必要になるのですよね??

関連するQ&A

  • tnsnames.ora ファイルについて

    VB初心者です。現在、開発環境のPCにて、VB6でOracleサーバにoo4oを使って接続しています。接続文字列にはtns名で名前解決しています。 質問なのですが、このプログラムをセットアップファイルを使ってその他のPCにインストールしようと思います。その際にはOracleドライバおよびtnsnames.oraもインストールする必要はありますか?もし、必要な場合tnsnames.oraはどこに保存すればよろしいのでしょうか?なお、インストール先にはOracleクライアントはインストールされません。 どうぞよろしくお願いいたします。

  • Oracle10gExpressをインストールした後、Oracle8iの接続ができなくなった(ORA-12154)

    お世話になります。 Oracle8iクライアントがインストールされている環境に、 Oracle10gExpressをインストールしました。 Oracle8iでインストールした、SQL Plusからは問題なく接続できるのですが、 AccessにODBC接続させていた、Oracleへの接続がうまくいかなくなりました。 よくわかっていないのですが、 どうも、Oracle10gのtnsnamesを参照しにいっているような気がします。 でも、oracle8iのtnsnames.oraの内容をそのまま、 10gのtnsnames.oraにコピーしましたが、だめでした。 何かご存知の方アドバイスいただけないでしょうか? よろしくお願いいたします。 ●8iのtnsnames.oraでうまくいっていた内容を、10gにコピーした内容です。(内容は変更せずにそのままコピーしました) test.xxx.CO.JP = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xxx.xxx)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = test) ) )

  • oracle10g 使用するリスナーを追加する

    oracle10g 使用するリスナーを追加する リスナーが2個あってインスタンスを作成するときに片方選択しました。(※1) 後からもう片方でも使えるようにしたいのですが可能でしょうか? ※ tnsnames.oraとlistener.oraを見直しましたがだめでした。 ※1 database configuration assitanの3/5の工程

  • 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 諸先輩方のアドバイスをお願いいたします。

  • ORA-12541について

    下記のサイトなどを参考にしてOracle Linux 6.4(x86)にOracle11gR2 Linux(x86)をインストールしましたが、ORA-12541:TNS:no Listnerになってしまいます。listner.oraファイルを開いてHOSTをIPアドレスに変更しましたが、状況に変化はなく、原因がわからず、困っております。 原因及び回避方法についてご教示くださいますようお願いいたします。 --------------------------------------------------------- http://www.server-world.info/query?os=CentOS_5&p=oracle11g&f=1 ---------------------------------------------------------

  • ORA-12170のエラーについて

    下記エラーの解決方法に心あたりのある方がいらっしゃったら教えてください。 現象  サーバーを用意し、そこにOracleDatabase11gR2をインストールし、クライアントマシンから  Oracle Net Configration Assistantでネットサービス名の構成をする際、以下のエラーが出て  接続できません。    「ORA-12170: TNS: 接続タイムアウトが発生しました。」    ※1  サーバーでは同様のユーザ(SYSTEMユーザ)とパスワードでデータベースに接続できることは確認できています。  またファイアーウォールの設定でポート1521の接続の許可は行っております。  (クライアントからの接続のときのポートはデフォルトのまま1521を使用)    ※2  ファイアーウォールを有効にしたまま接続を試みたとき、  C:\Windows\System32\LogFiles\Firewall\pfirewall.logに接続がブロックされたことがログとして出力されると思いますが、出力されませんでした。  よって、ポート1521はファイアーウォールに到達する前に、どこかで遮断されているように思われます。  (ポート1158で同様にファイアーウォールの有効性を確認したところpfirewall.logにブロックした旨の内容が出力されました。)    よろしくお願いいたします。 環境 サーバー  OS:Windows Server 2008 R2 (64bit)  Oracle:Oracle Database 11g Release 2 (11.2.0.1.0) for Microsoft Windows (x64)  ファイアーウォールの設定:ポート1521の接続は許可済み  (1158の接続も許可) クライアントPC  OS:Windows7 (32bit)  Oracle:Oracle Database 11g Release 2 Client (11.2.0.1.0) for Microsoft Windows (32-bit)

  • Oracle10gclientで接続不能

    ローカルマシンにOracle10gclientをインストールし SQLPLUSにてサーバーのDB環境へ接続を試みたところ、以下のメッセージが表記され 接続が不可となります。 「ORA-12154: TNS:could not resolve the connect identifier specified」 Enter user-name : ちなみに、Net Configuration Assistantでは、接続可能となります。 バージョンは10.2.0.1です。 Cドライブにインストールしておりますが、 パスは以下となっています。 C:\oracle\product\10.2.0\client_1 C:\oracle\product\10.2.0\client_2 C:\oracle\product\10.2.0\client_2\NETWORK\ADMIN\の配下に 以下のファイルが存在しています。 listener.ora sqlnet.ora tnsnames.ora サイトでも調べているのですが、なかなか解決に至っておりません。 上記内容で何か考えられる原因等ございましたら アドバイスいただけると幸いです。 以上、よろしくお願い申し上げます。

  • ACCESSからODBC接続でORA-12504

    Access上でオラクルのテーブルのリンクを設定しようと していますが、「ORA-12504」のエラーが表示されてしまい 接続できず、困っています。 【エラー詳細】 ODBC-呼び出しが失敗しました。 [Oracle][ODBC][Ora]ORA-12154 TNS~ (#12154)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(♯0)[Microsoft][ODBC Driver Manager]ドライバのSQLSetConnectAttrは失敗しました。(#0) なお、SQLPlusで接続ができていますし、ODBCアドミニストレータ の接続テストも成功します。 Accessで問題があるのでしょうか? 【環境】 OS:WinXP x64 Access:003 Oracle:サーバ 10g(10.2.0.1) for 64-bit    :クライアント 10g(10.1.0.2) for 32-bit     ※64-bitのオラクルクライアントはAccessが      ドライバを認識しないため使用できませんでした。 何かわかりましたらご教授ください。 よろしくお願いします。

  • ORA-12514が出た時の対処法と原因

    今回で2度目なのですが、ORA-12514のエラーがでる様になりました。 前回は仕方なくフォルダを削除して再インストールしたら直りましたが、 PCで作業している内に再び同じ現象になりましたので、 原因と再インストール以外の対処法があればと思い書き込みさせて頂きました。 環境はWindows2000でOracle10gです。 Oracleを入れたPCと作業しているPCは同じPCです。 前回と今回の違いは、 前回は「XYZ」の作成をしていない。 サービスのOracleOraDb10g_home1TNSLitenerが開始できなかった。 (一応コマンド入力でもダメでした) (リスナーの起動を試すみたいなのがインターネットで検索してる時に書いてあったので参考にしました) の2点です。 現在は「XYZ」が作成されているのと、 OracleOraDb10g_home1TNSLitenerが停止したり開始したりすることができます。 自分で作成したオラクルは初めてで、 最初にエラーが出た時もインターネットで検索したりして、 原因を探そうと思いましたが難しくて断念し再インストールといった感じでした。 どうかよろしくお願いします。 listener.oraとtnsnames.oraは下記の通りです。 # listener.ora Network Configuration File: g:\oracle\product\10.1.0\Db_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = g:\oracle\product\10.1.0\Db_1) (PROGRAM = extproc) ) ) XYZ = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = abc)(PORT = 1521)) ) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = abc)(PORT = 1521)) # tnsnames.ora Network Configuration File: g:\oracle\product\10.1.0\Db_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools. XYZ = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = abc)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = abc)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )

  • リカバリに必要なファイルを教えてください

    こんばんは。 以前にOracle 9iのDBのバックアップについて質問させていただいたものです。 再度行き詰まってしまい、皆様のご助言をお借りしたく質問させて頂きます。 当初、ORACLE_HOME以下全ファイルをバックアップしてリカバリに備えようとしていたのですが、容量の関係でそれが難しくなってしまいました。 そこで完全リカバリに必要なファイルを考えてみたのですが、以下のファイルで完全リカバリは可能なのでしょうか。 よろしくお願いします。 ■環境■ OS:Solaris(Windows2000から変更になりました…(涙)) DB:9i DataBase Release2 ●コールドバックアップの、ノーアーカイブログです。 ●バックアップとして取得する予定のファイル   1) select name from v$database   2) select name from v$controlfile   3) select member from v$logfile  で取得できるファイル ●以下のファイルも必要?と懸念するファイル 4) パラメータファイル 4-1) %ORACLE_HOME%\ADMIN\%ORACLE_SID%\pfile\init.ora.xxxxxxxxxxxx 4-2) %ORACLE_HOME%\database\SPFILE%ORACLE_SID%.ORA 5) パスワードファイル %ORACLE_HOME%\database\PWD%ORACLE_SID%.ORA 6) リスナーファイル %ORACLE_HOME%\network\admin\listener.ora 7) ホスト文字列(?)ファイル %ORACLE_HOME%\network\admin\tnsnames.ora 上記1)~3)のファイルだけでは完全リカバリは無理なのでしょうか。 もしくは、これ以外で必要なファイルはあるのでしょうか。 どうかご助力お願いします。