• 締切済み

データベースへの接続について

サーバーに、OracleDB10gR2を導入し、リスナーの設定まで完了しています。 クライアントの接続情報の設定を、「Net Configuration Assistant」の 「ローカル・ネット・サービス名構成」を使用し設定を行おうと思っています。 設定が完了するとTNSNAMES.ORAが作成され、以下のような内容になると思います。 net_service_name= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=test)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=service_name))) この後以下のコマンドでデータベースへの接続が可能になると思うのですが、 service_nameというのは、何に使用しているのでしょうか? また、net_service_nameに設定される値とservice_nameに設定される値の違いを教えてください。 connect user/password@net_service_name 調べると、以下のような記述を見つけたのですが、 Oracle9iまたはOracle8のデータベースに接続する際に必要なのでしょうか? SERVICE_NAME 用途 パラメータSERVICE_NAMEを使用して、アクセスするOracle9iまたはOracle8データベース・サービスを識別します。値は、初期化パラメータ・ファイルのSERVICE_NAMESパラメータに指定されている値に設定します。

みんなの回答

  • entree
  • ベストアンサー率55% (405/735)
回答No.2

以下のような構成を考えてみて下さい。 クライアント     ↓ サーバ ↓  リスナー     ↑  インスタンスfoo(SID=foo) インスタンスbar (SID=bar) 上記の環境では、サーバ上にインスタンスfooとbarの2つが起動していま す。でも、リスナーは独立したプログラムですので、起動した時点で同一 サーバ上にどのようなインスタンスがいるかを知りません。 そこで、 インスタンスfooの初期化パラメータにservice_names=foo.example.com、インスタンスbarの初期化パラメータにservice_names=bar.example.com を設定します。 この動作は、インスタンスfooはリスナーに、「foo.examples.comを指定してクライアントが接続して来た場合、そのコネクションは私宛だから私に渡 してね」とリスナーに指示します。 同様に、インスタンスbarはリスナーに、「bar.examples.comを指定してク ライアントが接続して来た場合、そのコネクションは私宛だから私に渡 その結果、クライアントが service_name=foo.example.comを設定した接続記述子を使ってサーバに 接続した場合、インスタンスfooにつながり、 service_name=bar.example.comを設定した接続記述子を使ってサーバに 接続した場合、インスタンスbarにつながります。 一方、net_service_nameはエイリアスです。 接続するたびに、 scott/tiger@(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=test)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=service_name)))※ みたいなことを書くのは大変なので、別名net_service_nameを tnsnames.oraに定義しておくことで、 scott/tiger@net_service_name と簡単な記述ができるようになります。 ※このような書き方ができるか否かは分かりませんが、  意味合い的に理解していただければと思います。

回答No.1

単一のサーバに、複数のオラクルインスタンスを動作させる場合のパラメータです。 1台のサーバに1つのインスタンスしか動かさないのであれば、Net_Service_Name=Service_Nameとするのが分かり易くて良いかと。

関連するQ&A