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の両方を導入することで、それを実現することができる。