▲ ▼ Naming Methods (3)
¦ Naming Methods (2) ¦ Naming Methods (1) ¦ Oracle Net テストツール ¦ Oracle Net Services ¦ Naming Methods (3) ¦ Oracle Net Listener (.. ¦
▲ [ネーミングメソッド] ローカルネーミング
簡易接続ネーミングでは,長いデータベース・サービス名の場合は入力が面倒になるため,接続情報を別名に置き換えて接続するためのネーミング手法。
クライアント側で tnsnames.ora ファイルを構成し,そこに別名 (ネット・サービス名) の接続情報を作成する。各ネット・サービス名は接続記述子にマップされる。便利だが各クライアント毎に設置しなくてはならないという欠点がある。
ローカルネーミングを利用するための条件は以下の通り。
- Net Services ソフトウェアがインストールされ,構成可能である。
- tnsnames.ora が構成されている。
- sqlnet.ora ファイルの NAMES.DIRECTORY_PATH パラメータで,"tnsnames" が有効になっている。
(有効にするためには,Oracle Net Manager を起動して「ローカル」→「プロファイル」→「ネーミング」→「メソッド」から "TNSNAMES" にチェックを入れて保存する)
ネット・サービス名は,その接続記述子にマップされる。例として以下を挙げる。
/* Code050501: foo という単純な名前にマップされた接続記述子 */ foo= ← 単純な名前 (ネット・サービス名) (DESCRIPTION= ┐ (ADDRESS= ├← 接続記述子 (PROTOCOL=tcp) │ (HOST=foo-srv) │ (PORT=1521)) │ (CONNECT_DATA= │ (SERVICE_NAME=foo.bar.com))) ┘
▲ tnsnames.ora ファイルの複数アドレス・リスト
tnsnames.oraファイルでは,複数のアドレス・リストを持つ接続記述子を作成できる。その場合,どのアドレスに対して接続するかを選択する手段として,以下の 2 つの方法を接続記述子内に追加 / 選択できる。
- 接続時フェイルオーバー (connect-time failover)
- 選択したリスナー・アドレスが応答しない場合,クライアントの接続要求が他のリスナー・アドレスに転送される。
- クライアント・ロード・バランス (client load balancing)
- 1 つのデータベースで複数のリスナーが処理される場合,クライアントが接続要求を送るリスナーをランダムに選択できる。これにより,リスナーの着信接続要求に対する処理負担を分担することができる。
例として以下を挙げる。
/* Code050502: 複数アドレス・リストのある tnsname.ora ファイルの接続記述子 * * 接続先アドレスの選定は,1. 2. の順で移行する */ foo= (DESCRIPTION= (ADDRESS_LIST= ┐ (LOAD_BALANCE=on) ├← 1. #1, #2 のアドレスに対し, (FAILOVER=off) │ どちらかをランダムに選択し (ADDRESS=(プロトコルアドレス #1)) │ 接続を試みる。 (ADDRESS=(プロトコルアドレス #2)) │ ) ┘ (ADDRESS_LIST= ┐ (LOAD_BALANCE=off) ├← 2. #3, #4 のアドレスに対し, (FAILOVER=on) │ 順番に接続を試みる。 (ADDRESS=(プロトコルアドレス #3)) │ (ADDRESS=(プロトコルアドレス #4)) │ ) ┘ (CONNECT_DATA= (SERVICE_NAME=foo.bar.com)))
▲ sqlnet.ora ファイルのデフォルト・ドメイン設定
特定ドメイン名に対し接続要求することが多い環境では,クライアントの sqlnet.ora ファイル内 NAMES.DEFAULT_DOMAIN パラメータを使用してデフォルト・ドメインを設定できる。
例えば以下のようなデフォルト・ドメインが設定されていた場合,接続識別子の例と共に以下に挙げる。
/* Code050503. sqlnet.ora ファイル内 NAMES.DEFAULT_DOMAIN パラメータ */ NAMES.DEFAULT_DOMAIN = bar.hoge.com ← 接続識別子に付加するドメイン
/* Code050504: デフォルト・ドメインを利用した接続文字列 */ CONNECT hoge/orcl@foo ← 名前解決時にデフォルトドメインが付加され ネット・サービス名が foo.bar.hoge.com と解釈
/* Code050505: デフォルト・ドメインを無視した接続文字列 */ CONNECT hoge/orcl@foo. ← "." を付けると,デフォルトドメインは無視され ネット・サービス名は foo と解釈