ORACLEMASTER 備忘録4(3/3)
続き
サービスとは
データベースはクライアントからは一つの「サービス」として見える。クライアントがデータベースサーバ上のデータベースに接続する際に、指定するのはデータベースの「サービス名」である。
データベースのサービス名はSERVICE_NAMES初期化パラメータに指定されていて、デフォルトは「グローバルデータベース名」である。
したがって、通常は。グローバルデータベース名をサービス名として指定する。グローバルデータベース名は以下の要素で構成されている。
・データベース名(DB_NAMWパラメータ値)+ドメイン名(DB_DOMAINパラメータ値)
データベースへの接続
クライアントは“データベースの場所”と“サービス名”を指定して、データベースサーバ上のデータベースに接続する。こういったデータベースへの接続情報のことを「接続記述子」という。
接続記述子
接続記述子には決まった書式があり、リスナーのプロトコルアドレスと、宛先になっているサービスに対する接続情報を記述する。
例えば「プロトコルにはTCP/IPを使用し、ホスト名proj1-svのポーチ番号1521でリスニングしているリスナーに接続し、sales.edifist.comサービスに接続する」という設定は、次のような記述になる。
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = proj1-sv)(PORT = 1521))
(CONNECT_DATA=SERVICE_NAME=sales.edifist.com))
)
接続文字列
クライアントからデータベースに接続するには「接続文字列」を指定する。接続文字列には、接続するのに必要な項目である「ユーザ名」、「パスワード」、「@」、「接続識別子」で構成されている。
接続識別子は、データベースへ接続するための情報で、前述した“接続記述子”そのもの、または「ネットワークサービス名」という、情報リポジトリに格納されたマッピング情報をして接続記述子に解決される名前。
ネットサービス名
接続記述子は長い文字列であるため、接続する際に指定すると入力ミスが起きやすくなる。これを防ぐために、ネットサービス名を使用する。
ネットサービス名とは、“接続記述子につけた単純な名前”であり、例えば、電話番号が接続記述子だとすると、ネットサービス名が短縮ダイヤル番号のようなもの。
ネットサービス名
↓
Test=(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = proj1-sv)(PORT = 1521))
(CONNECT_DATA=SERVICE_NAME=sales.edifist.com))
) ↑
接続記述子
ユーザは、データベースサーバに接続する際、長い接続記述子の代わりにネットワークサービス名を使用でき、SQL*Plusを使用してログインする場合次のように記述する。
connect ユーザ名/パスワード@ネットサービス名
ネーミングメソッド
「ネーミングメソッド」とは、ネットサービス名を接続記述子に変換する方法(名前解決法)である。接続文字列にネットサービス名が使用されると、その文字列が「情報リポジトリ」に保存されている情報を元に名前解決されて、接続記述子に変換される。
情報リポジトリとは、“ネットサービス名と接続記述子のマッピング情報”を格納してる場所で、どの情報リポジトリを使用するかは、ネーミングメソッドの種類によって異なる。
ローカルネーミング :ネットサービス名とマッピングされる接続記述子をクライアントコンピュータのローカルに「tnsnames.ora」ファイルとして格納する。
ディレクトリネーミング:ネットサービス名とマッピングされる接続記述子をLDAP準拠のディレクトリサーバーに格納し、集中管理する。
簡易接続ネーミング :TCP/IP接続文字列をどこかに格納するのではなく、“直接入力”して接続する。
例)connect sccot@ホスト;リスナーのポート番号/サービス名
外部ネーミング :サポートされているOracle以外のネーミングサービスにネットサービス名を格納する。
簡易接続ネーミングの構成方法
簡易接続ネーミングでの接続方法は次の通り。ただし、リスナーのポート番号はデフォルトの1521であれば省略可能。
connect ユーザー名/パスワード@ホスト名【:リスナーのポート番号】【/サービス名】