SQL*Net V2の設定・管理

TNSアーキテクチャ

Oracleのネットワーク環境では、通信機能が以下のような階層構造にマップされている。

機能名機能
クライアント・アプリケーション ユーザが使用するアプリケーション
ユーザ・プログラム・インタフェース(UPI) クライアントからのSQL文を解釈してサーバとの通信内容を作成する。
カーソルのオープン・クローズ、メモリ空間の確保など。
SQL*Net ノード間のセッションの確立・維持。文字コードやデータ形式の変換もここで。
TNS サービス名のロケーションへの解決、割り込みの処理。
プロトコルアダプタ TNSの機能をプロトコルにマップ。
プロトコル TCP/IP, IPX/SPXなど

構成ファイルの記述方法

関係する構成ファイルとその記述方法は、以下のようなものである。

listener.ora

サーバ上で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

tnsnames.oraは、サービス名から接続先と接続手段を解決するためのもので、TCP/IPでいうhostファイルに相当する。但し、プロトコルやサーバ構成も記述されるため、構成はやや複雑になる。その基本的な記述内容は以下のようになる。

[サービス名] =
   (DESCRIPTION =
     (ADDRESS =
        (PROTOCOL = [プロトコル名])
        ([パラメータ] = [値])
        ・・・
     )
     (CONNECTED_DATA =
       (SID = [データベースSID])
       (SERVER = DEDICATED)            # 専用接続を指定する場合
     )
   )

listener.oraとtnsnames.oraは、同一のアドレスとSIDを持たなければならない。

sqlnet.ora

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接続を設定

ネットワーク設定の管理

リスナー制御ユーティリティ(lsnrctl)

TNSリスナーを制御するユーティリティとして、lsnrctlが用意されている。その書式は以下の通り:

lsnrctl [コマンド] [リスナー名]

デフォルトのリスナー名はLISTENERである。また、コマンドを指定しなかった場合、対話モードで起動する。

使用できる主なコマンドの一覧は以下の通りである。

コマンド内容
START [リスナー名] 指定したリスナーを開始する。
STOP [リスナー名] 指定したリスナーを停止する。
STATUS [リスナー名] 指定したリスナーの基本情報を表示する。
TRACE [リスナー名] (OFF|USER|ADMIN) 指定したリスナーのトレース方法を変更する。
SET PASSWORD 特定の管理作業のためにパスワードを入力する。
SERVICES [リスナー名] リスナーに対応するサービスの接続状況を表示する。
VERSION [リスナー名] リスナーとプロトコルアダプタのバージョン番号を表示する。
CHANGE_PASSWORD パスワードを変更する。
EXIT リスナー制御ユーティリティを終了する。

SQL*Net V1との共存

SQL*Net V1とV2は互いに共存することができない。この場合、V1とV2の双方のノードと通信する必要のあるノード(クライアント・サーバ共に)は、SQL*Net V1とV2の両方を導入することで、それを実現することができる。