LoginSignup
42
46

More than 5 years have passed since last update.

tnsnames.oraと接続文字列の関係

Last updated at Posted at 2016-10-25

tnsnames.oraと接続文字列の関係

DBにOracleを利用する場合、大抵は利用することになるtnsnames.ora
tnsnames.oraとアプリケーション側からの呼び出しの関係がなんとなくでしか理解できていなかったので、この機会に整理を行っておく。

接続情報には下記で説明する以外にも多くのオプションが存在するが、今回は必要最低限の値に絞って説明を行う。

tnsnames.ora

① =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ②)(PORT = ③))
    (CONNECT_DATA =
      (SERVICE_NAME = ④)
    )
  )
No 説明
ネットサービス名。アプリケーションはこの名前を参照して接続情報を取得する
DBサーバのアドレス
DBサーバのリスナのポート番号。意図的に変更してなければ1521
サービス名

サービス名とは

1つインスタンス、または、同じ機能を提供(=サービス)する複数インスタンスの集合体を特定する名称。
インスタンスに複数設定でき、同じ名前を別のインスタンスに指定することができる。

SID=xxx で接続先を指定する場合

SERVICE_NAME でなく、「SID=xxx」という書き方で接続先を指定することもできる。
(SIDとはインスタンスに一意に割り当てられる名前)
ただ、これは古い書き方(Oracle8か9くらいまで)なので、今はSERICE_NAMEで書くことが推奨。
(これでも一応動作するけれど)

configファイル(接続文字列)

<connectionStrings>
  <add name="①" connectionString="Data Source=②;User ID=③;Password=④" providerName="⑤" />
</connectionStrings>
No 説明
接続文字列名。ここの名前を用いて接続情報を取得する。
ネットサービス名。tnsnames.oraで設定したものを指定
DBに接続するためのユーザ名
DBに接続するためのパスワード
DBに接続するために利用するドライバ

実例

tnsnames.ora

KOTORI =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.222)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = minami)
    )

アプリケーションのコンフィグファイル

<configuration>
  <connectionStrings>
    <add name="chunchun" 
         connectionString="data source=KOTORI;user id=oyatuni;password=sityauzo;"
         providerName="System.Data.OracleClient"/>
  </connectionStrings>
</configuration>

アプリケーション内のコネクション取得処理

(以下の例はVB)

Dim connection As New OracleConnection("chunchun")

最後に

今回はアプリケーションからOracleのDBへ接続するための設定ファイルについて記述した。
なんとなくでしか理解できていない場合いざという時に問題になるので、整理できてよかったと思う。

あと、例示が相変わらずアレなのはご愛嬌。

(追記)SID、サービス名の確認方法

すでに作成済みのインスタンスに対し、「SID」「サービス名」は以下のように取得できる。

SID

SELECT DBID,NAME,DB_UNIQUE_NAME,CURRENT_SCN,LOG_MODE FROM V$DATABASE

サービス名

※SQL*PLUSで実行すること

show parameter service_name
42
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
46