4 プロトコル・アドレス構成

Oracle Databaseインスタンスとクライアントの接続を構成する方法を学習します。

ネットワーク・オブジェクトは、プロトコル・アドレスによって識別されます。接続が確立されると、クライアントとリクエストの受信者(リスナーまたはOracle Connection Manager)が同じプロトコル・アドレスで構成されます。クライアントは、このアドレスを使用して接続リクエストを特定のネットワーク・オブジェクトが存在する場所に送信し、受信者はこのアドレスでリクエストのリスニングを行い、クライアント情報が自分の持っているアドレス情報に一致するかどうかに基づいて接続を許可します。

4.1 プロトコル・アドレス

プロトコル・アドレスは、ADDRESSADDRESS_LISTの要素で構成されています。

4.1.1 ADDRESS

ADDRESSネットワーク・パラメータは、ADDRESS_LISTまたはDESCRIPTIONパラメータの下のプロトコル・アドレスを指定します。

用途

プロトコル・アドレスを定義します。

使用上のノート

このパラメータは、ADDRESS_LISTパラメータまたはDESCRIPTIONパラメータの下に配置します。DESCRIPTIONは、tnsnames.oraファイルまたはlistener.oraファイルで使用されます。

(ADDRESS=
 (PROTOCOL=tcp)
 (HOST=sales-server)
 (PORT=1521))

4.1.2 ADDRESS_LIST

ADDRESS_LISTネットワーク・パラメータは、共通の特性を持つプロトコル・アドレスの数を指定します。

用途

共通の特性を共有するプロトコル・アドレスのリストを定義します。

使用上のノート

複数のアドレスを指定する場合、このパラメータは必須ではありません。

(ADDRESS_LIST=
  (LOAD_BALANCE=on)
  (ADDRESS=
   (PROTOCOL=tcp)
   (HOST=sales-server)
   (PORT=1521))
  (ADDRESS=
   (PROTOCOL=tcp)
   (HOST=hr-server)
   (PORT=1521)))

4.2 プロトコル・パラメータ

リスナーおよびOracle Connection Managerは、プロトコル・アドレスによって識別されます。

次の表に、Oracleプロトコル・サポートで使用するパラメータを示します。

表4-1 プロトコル固有のパラメータ

プロトコル パラメータ 説明

IPC

PROTOCOL

ipcを値として指定します。

IPC

KEYPATH

UNIX変数では、IPCプロトコルはUNIXドメイン・ソケットを使用し、このソケットはクライアント/サーバー通信用の内部ファイルを作成します。パラメータkeypathは、このファイルが作成される場所を指定します。keypathを使用する場合、クライアント側およびリスナー側でバージョン18以上の同じ値を使用してください。

IPC

KEY

サービスの一意の名前を指定します。サービス名またはサービスのOracleシステム識別子(SID)を使用することをお薦めします。

例:

(PROTOCOL=ipc)(KEY=sales)

名前付きパイプ

PROTOCOL

nmpを値として指定します。

名前付きパイプ

SERVER

Oracleサーバーの名前を指定します。

名前付きパイプ

PIPE

データベース・サーバーへの接続に使用されるパイプ名を指定します。これは、Named Pipesでサーバーに指定したものと同じPIPEキーワードです。これには任意の名前を指定できます。

例:

(PROTOCOL=nmp)(SERVER=sales)(PIPE=dbpipe0)

SDP

PROTOCOL

sdpを値として指定します。

SDP

HOST

コンピュータのホスト名またはIPアドレスを指定します。

SDP

PORT

リスニング・ポート番号を指定します。

例:

(PROTOCOL=sdp)(HOST=sales-server)(PORT=1521)
(PROTOCOL=sdp)(HOST=192.0.2.204)(PORT=1521)

TCP/IP

PROTOCOL

tcpを値として指定します。

TCP/IP

HOST

コンピュータのホスト名またはIPアドレスを指定します。

TCP/IP

PORT

リスニング・ポート番号を指定します。

例:

(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)
(PROTOCOL=tcp)(HOST=192.0.2.204)(PORT=1521)

TLS付きTCP/IP

PROTOCOL

tcpsを値として指定します。

TLS付きTCP/IP

HOST

コンピュータのホスト名またはIPアドレスを指定します。

TLS付きTCP/IP

PORT

リスニング・ポート番号を指定します。

例:

(PROTOCOL=tcps)(HOST=sales-server)(PORT=2484)
(PROTOCOL=tcps)(HOST=192.0.2.204)(PORT=2484)

Exadirect

PROTOCOL

値にexadirectを指定します。

Exadirect

HOST

インフィニバンド・インタフェースのIPアドレスを指定します。

Exadirect

PORT

リスニング・ポート番号を指定します。

例:

(PROTOCOL=exadirect)(HOST=sales-server)(PORT=2484)
(PROTOCOL=tcps)(HOST=192.0.2.204)(PORT=1522)

Websocket  

PROTOCOL

値としてwsを指定します。Webサーバーのバックエンド・データベース・サーバーとして機能させる場合のみ、このプロトコルを使用します。

Websocket  

HOST

コンピュータのホスト名またはIPアドレスを指定します。

Websocket  

PORT

リスニング・ポート番号を指定します。

例:

(protocol=ws)(host=sales-server)(port=1524)

セキュアなWebSocket  

PROTOCOL

値としてwsを指定します。websocketプロトコルをサポートするWebサーバーに接続するには、クライアント側でこのプロトコルを使用します。データベース・リスナーへのwebsocket接続を行うようにWebサーバーを構成する必要があります。sqlnet.ora内でウォレットを構成する必要があります。

WebサーバーでのマッピングにSQLNET.URIを使用します。

セキュアなWebSocket  

HOST

websocketをサポートするWebサーバーのホスト名またはIPアドレスを指定します。

セキュアなWebSocket  

PORT

リスニング・ポート番号を指定します。

例:

(protocol=wss)(host=sales-server)(port=1524)

4.3 お薦めするポート番号

クライアントとOracle Connection Managerの接続には、デフォルトのポート番号を使用することをお薦めします。

表4-2 お薦めするポート番号

ポート 説明

1521

クライアントがリスナーに接続するためのデフォルトのリスニング・ポートです。

このポート番号は、公式の登録ポート番号(TCP/IPの場合は2483番、TLS付きTCP/IPの場合は2484番)に変更される可能性があります。

1521

クライアントがOracle Connection Managerに接続する際の、デフォルトで公式登録のリスニング・ポートです。

1830

管理コマンドがOracle Connection Managerに接続する際の、デフォルトで公式登録のリスニング・ポートです。

4.4 ポート番号の制限

ポート番号の制限について理解します。システム・ポート番号(範囲は1~1024)を使用するようにリスナーを構成する必要がある場合は、ここで説明する手順を使用してリスナーを構成します。

Oracleでは、1から65535のポート番号を許可しています。ただし、1024未満のポート番号(一般的なポートまたはシステム・ポート)は通常予約されています。通常、権限が付与されたプロセスのみが、1024未満のポートでTCP接続をリスニングできます。

リスナーを1024未満のポート番号でリスニングするように構成する必要がある場合、次の手順を完了します。

ノート:

この手順はガイドラインです。使用するオペレーティング・システムによっては、別の手順が必要になることがあります。

  1. Oracle Net Configuration AssistantまたはOracle Net Managerを使用して、プロトコル・アドレスおよびその他の構成パラメータでリスナーを構成します。

  2. リスナーのあるマシンでrootユーザーとしてログインします。

  3. リスナーの実行可能ファイル(tnslsnr)および依存共有ライブラリのファイル所有権とアクセス許可を設定し、rootユーザーのみがこれらのファイルを変更できるようにします。

  4. rootディレクトリ以降、これらのファイルへのパス名に含まれる個々のディレクトリのアクセス権が、同じ所有権とアクセス権を共有していることを確認します。

  5. rootユーザーとしてリスナーを起動します。

  6. システム・プロンプトに次のように入力します。

    tnslsnr listener_name -user user -group group
    

    このコマンドで使用されているオプションは、次のとおりです。

    表4-3 tnslsnrユーティリティのオプション

    オプション 説明

    listener_name

    構成するリスナーの名前を指定します。省略すると、デフォルト名のLISTENERが使用されます。

    user

    スーパーユーザー(root)の権限が必要ない場合に、リスナーに使用させる権限を持つユーザーを指定します。権限が必要な操作を実行した後、リスナーはroot権限を永遠に放棄し元に戻すことはできません。

    group

    スーパーユーザー(root)のグループ権限が必要ない場合に、リスナーに使用させる権限を持つグループを指定します。権限が必要な操作を実行した後、リスナーはrootグループ権限を永遠に放棄し元に戻すことはできません。

    このステップの間に、リスナーがrootから、指定したユーザーおよびグループ権限に変更されます。すべての操作は(構成されているエンドポイントをリスニングする必要のあるシステム・コールを除いて)、指定されたユーザー権限またはグループ権限で実行されます。リスナーはrootユーザーに戻って予約済アドレス(1023以下のTCPポート)をリスニングします。

    listener.oraファイルに構成されているすべてのエンドポイントのリスニングを開始した後、リスナーは指定されたユーザーおよびグループに切り替わり、元に戻ることはありません。この時点で、リスナーは最初に所有していたroot権限を放棄します。-userおよび-groupコマンドライン引数は、数値形式で指定されているユーザーおよびグループ識別子のみを受け入れます。

    たとえば、mylsnrというリスナーをroot権限で実行し、ユーザーID (UID)が37555、OSDBAグループdbaメンバーシップが16、グループ識別子(GID)が16のOracleユーザーの権限を使用するには、オペレーティング・システムのプロンプトで次のコマンドを入力します。

    tnslsnr mylsnr -user 37555 -group 16
    
  7. リスナーの起動後は、リスナー制御ユーティリティを使用してリスナーを管理できます。

    注意:

    • リスナー・プロセスを実行する権限を持つユーザーは、oracleユーザーまたはオペレーティング・システム上で通常リスナー・プロセスを実行するユーザーを使用することをお薦めします。

    • リスナー・プロセスをrootユーザーとして実行したままにしないでください。スーパーユーザーとしてプロセスを実行すると、セキュリティ面で脆弱です。