Oracleのネットワーク環境では、通信機能が以下のような階層構造にマップされている。
| 機能名 | 機能 |
|---|---|
| クライアント・アプリケーション | ユーザが使用するアプリケーション |
| ユーザ・プログラム・インタフェース(UPI) | クライアントからのSQL文を解釈してサーバとの通信内容を作成する。 カーソルのオープン・クローズ、メモリ空間の確保など。 |
| SQL*Net | ノード間のセッションの確立・維持。文字コードやデータ形式の変換もここで。 |
| TNS | サービス名のロケーションへの解決、割り込みの処理。 |
| プロトコルアダプタ | TNSの機能をプロトコルにマップ。 |
| プロトコル | TCP/IP, IPX/SPXなど |
関係する構成ファイルとその記述方法は、以下のようなものである。
サーバ上でTNSリスナーが稼動するために必要なパラメータを定義する。その内容の例は以下の通り:
LISTNER = # リスナー名。デフォルトはLISTNER
(ADDRESS_LIST= # 複数のアドレスを組み合わせる場合
(ADDRESS=
(PROTOCOL=TCP) # TCP/IPでの構成。ホスト名とポート番号
(Host=oraserv)
(Port=1521)
)
(ADDRESS=
(PROTOCOL=NMP) # Named Pipesでの構成。
(SERVER=oraserv)
(PIPE=ORAPIPE)
)
(ADDRESS=
(PROTOCOL=SPX) # SPX/IPXでの構成。
(SERVICE=oraserv01) # アプリケーション名。
)
)
SID_LIST_LISTNER = # リスナーに対応するSIDを指定
(SID_DESC =
(SID_NAME = ORCL) # データベースSID
(ORACLE_HOME = /u01/orcl) # そのプログラムのHOME
)
PASSWORDS_LISTNER = (passwd) # lsnrctl のパスワード
CONNECT_TIMEOUT_LISTNER = 10 # 接続開始から要求受け取りまでに待つ時間
STARTUP_WAIT_TIME_LISTNER = 0 # STATUSに応答する前に待つ時間
tnsnames.oraは、サービス名から接続先と接続手段を解決するためのもので、TCP/IPでいうhostファイルに相当する。但し、プロトコルやサーバ構成も記述されるため、構成はやや複雑になる。その基本的な記述内容は以下のようになる。
[サービス名] =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = [プロトコル名])
([パラメータ] = [値])
・・・
)
(CONNECTED_DATA =
(SID = [データベースSID])
(SERVER = DEDICATED) # 専用接続を指定する場合
)
)
listener.oraとtnsnames.oraは、同一のアドレスとSIDを持たなければならない。
sqlnet.oraは、接続に依存しない一般的な設定を行う。
| パラメータ | 内容 |
|---|---|
| TRACE_LEVEL_CLIENT | トレース情報の詳細さを指定。(OFF|USER|ADMIN) |
| TRACE_FILE_CLIENT | トレースファイル名を指定 |
| TRACE_DIRECTORY_CLIENT | トレースファイルのディレクトリを指定 |
| LOG_FILE_CLIENT | ログファイル名を指定 |
| LOG_DIRECTORY_CLIENT | ログファイルのディレクトリを指定 |
| NAMES.DEFAULT_DOMAIN | デフォルトドメイン名を指定(worldがデフォルト値) |
| USE_DEDICATED_SERVER | 専用サーバ接続を使用するかどうかを指定(ON|OFF) |
| SQLNET.EXPIRE_TIME | ハートビートパケットの間隔を指定(通常は10(分)程度) |
| AUTOMATIC_IPC | 自動IPC接続を設定 |
TNSリスナーを制御するユーティリティとして、lsnrctlが用意されている。その書式は以下の通り:
lsnrctl [コマンド] [リスナー名]
デフォルトのリスナー名はLISTENERである。また、コマンドを指定しなかった場合、対話モードで起動する。
使用できる主なコマンドの一覧は以下の通りである。
| コマンド | 内容 |
|---|---|
| START [リスナー名] | 指定したリスナーを開始する。 |
| STOP [リスナー名] | 指定したリスナーを停止する。 |
| STATUS [リスナー名] | 指定したリスナーの基本情報を表示する。 |
| TRACE [リスナー名] (OFF|USER|ADMIN) | 指定したリスナーのトレース方法を変更する。 |
| SET PASSWORD | 特定の管理作業のためにパスワードを入力する。 |
| SERVICES [リスナー名] | リスナーに対応するサービスの接続状況を表示する。 |
| VERSION [リスナー名] | リスナーとプロトコルアダプタのバージョン番号を表示する。 |
| CHANGE_PASSWORD | パスワードを変更する。 |
| EXIT | リスナー制御ユーティリティを終了する。 |
SQL*Net V1とV2は互いに共存することができない。この場合、V1とV2の双方のノードと通信する必要のあるノード(クライアント・サーバ共に)は、SQL*Net V1とV2の両方を導入することで、それを実現することができる。