日本語PDF

6 tnsnames.oraファイル内のローカル・ネーミング・パラメータ

この章では、tnsnames.oraファイルの構成パラメータの完全なリストを提供します。

6.1 ローカル・ネーミング・パラメータの概要

このtnsnames.oraファイルは、ローカル・ネーミング・メソッドの接続記述子にマップされるネットワーク・サービス名、またはリスナーのプロトコル・アドレスにマップされるネット・サービス名が含まれた構成ファイルです。

ネット・サービス名は、接続記述子に含まれているデータベース・ネットワーク・アドレスにマップされる別名です。接続記述子には、プロトコル・アドレスによるリスナーの位置、および接続先データベースのサービス名が含まれています。(他のデータベース・サーバーのクライアントである)クライアントとデータベース・サーバーは、アプリケーションとの接続時にネット・サービス名を使用します。

デフォルトで、tnsnames.oraファイルはORACLE_HOME/network/adminディレクトリに配置されます。Oracle Netは他のディレクトリに構成ファイルがないか確認します。たとえば、次の順序でtnsnames.oraファイルを確認します。

  1. 環境変数TNS_ADMINで指定されたディレクトリ。指定されたディレクトリにファイルがない場合、ファイルは存在しないとみなされます。

  2. TNS_ADMIN環境変数が設定されていない場合、Oracle NetはORACLE_HOME/network/adminディレクトリを確認します。

ノート:

Microsoft Windowsでは、プロセスの環境で設定されている場合、TNS_ADMIN環境変数が使用されます。TNS_ADMIN環境変数が環境内で定義されていない場合、またはプロセスが環境を持たないサービスである場合、Microsoft WindowsではレジストリでTNS_ADMINパラメータがスキャンされます。

関連項目:

6.2 tnsnames.oraの一般的な構文

tnsnames.oraファイルの基本的な構文は、例6-1のとおりです。

例6-1 tnsnames.oraファイルの基本的な書式

net_service_name= 
 (DESCRIPTION= 
   (ADDRESS=(protocol_address_information))
   (CONNECT_DATA= 
     (SERVICE_NAME=service_name))) 

この例では、DESCRIPTIONには接続記述子、ADDRESSにはプロトコル・アドレス、CONNECT_DATAにはデータベース・サービス識別情報が含まれています。

6.3 tnsnames.ora内の複数記述子

tnsnames.oraファイルには、1つ以上の接続記述子を持つネット・サービス名を含めることができます。各接続記述子には、1つ以上のプロトコル・アドレスを含めることができます。例6-2には、複数のアドレスを持つ2つの接続記述子が示されています。DESCRIPTION_LISTは、接続記述子のリストを定義します。

例6-2 tnsnames.ora内に複数の接続記述子を持つネット・サービス名

net_service_name= 
 (DESCRIPTION_LIST=
  (DESCRIPTION= 
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)))
  (DESCRIPTION= 
   (ADDRESS=(PROTOCOL=tcp)(HOST=hr1-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=hr2-svr)(PORT=1521))
   (CONNECT_DATA=
     (SERVICE_NAME=hr.us.example.com))))

ノート:

Oracle Connection Managerを使用している場合、Oracle Net Managerでは、1つのネット・サービス名に対する複数の接続記述子の作成はサポートしていません。

6.4 tnsnames.ora内の複数アドレス・リスト

tnsnames.oraファイルは、それぞれ独自の特性を備えた複数のアドレス・リストを持つ接続記述子もサポートします。例6-3では、2つのアドレス・リストが示されています。最初のアドレス・リストでは、クライアント・ロード・バランシング接続時フェイルオーバーなしが指定され、ADDRESS_LIST内のプロトコル・アドレスにのみ作用します。2番目のプロトコル・アドレス・リストでは、クライアント・ロード・バランシングなしと接続時フェイルオーバーが指定され、ADDRESS_LIST内のプロトコル・アドレスにのみ作用します。クライアントは、最初に第1または第2のプロトコル・アドレスを無作為に試行し、次に、第3および第4のプロトコル・アドレスを順に試行します。

例6-3 tnsnames.ora内の複数アドレス・リスト

net_service_name= 
 (DESCRIPTION= 
  (ADDRESS_LIST= 
   (LOAD_BALANCE=on)
   (FAILOVER=off)
   (ADDRESS=(protocol_address_information))
   (ADDRESS=(protocol_address_information)))
  (ADDRESS_LIST= 
   (LOAD_BALANCE=off)
   (FAILOVER=on)
   (ADDRESS=(protocol_address_information))
   (ADDRESS=(protocol_address_information)))
  (CONNECT_DATA=
   (SERVICE_NAME=service_name)))

ノート:

  • Oracle Net Managerでは、1つの接続記述子に対する1つのプロトコル・アドレス・リストの作成のみをサポートします。

  • Oracle Net Servicesでは、tnsnames.oraのIFILEパラメータを、3段階までのネスト・レベルでサポートします。パラメータは、手動でファイルに追加されます。この構文の例を次に示します。

    IFILE=/tmp/listener_em.ora
    IFILE=/tmp/listener_cust1.ora
    IFILE=/tmp/listener_cust2.ora 
    

    詳細は、『Oracle Databaseリファレンス』を参照してください。

6.5 Oracle Connection Managerによる接続時フェイルオーバーとクライアント・ロード・バランシング

tnsnames.oraファイル内の接続記述子にOracle Connection Managerのプロトコル・アドレスが少なくとも2つ含まれている場合、接続時フェイルオーバーとロード・バランシングのパラメータをファイル内に含めることができます。

例6-4 tnsnames.ora内の複数Oracle Connection Managerアドレス

この例では、複数のOracle Connection Managerプロトコル・アドレスのフェイルオーバーが示されています。

sample1=
 (DESCRIPTION= 
   (SOURCE_ROUTE=yes) 
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))    # 1 
     (ADDRESS_LIST=  
       (FAILOVER=on) 
       (LOAD_BALANCE=off)                               #  2 
       (ADDRESS=(PROTOCOL=tcp)(HOST=host2a)(PORT=1630)) 
       (ADDRESS=(PROTOCOL=tcp)(HOST=host2b)(PORT=1630)))
     (ADDRESS=(PROTOCOL=tcp)(HOST=host3)(PORT=1521)))    #  3
   (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))

ここでは、構文は次のようになります。

  1. 次の記述によって、クライアントは、最初のOracle Connection Managerのプロトコル・アドレスに接続するように指示されます。

    (ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))
  2. 次に、最初のOracle Connection Managerは、別のOracle Connection Managerの第1プロトコル・アドレスに接続するように指示されます。第1プロトコル・アドレスへの接続に失敗した場合は、第2プロトコル・アドレスへの接続が試行されます。この順序は、次の構成によって指定されます。

    (ADDRESS_LIST=  
      (FAILOVER=on) 
      (LOAD_BALANCE=off)
      (ADDRESS=(PROTOCOL=tcp)(HOST=host2a)(PORT=1630)) 
      (ADDRESS=(PROTOCOL=tcp)(HOST=host2b)(PORT=1630))) 
    
  3. Oracle Connection Managerは、次のプロトコル・アドレスを使用してデータベース・サービスに接続します。

    (ADDRESS=(PROTOCOL=tcp)(HOST=host3)(PORT=1521))

例6-5 tnsnames.ora内のクライアント・ロード・バランシング

この例では、2つのOracle Connection Managerと2つのプロトコル・アドレスの間でのクライアント・ロード・バランシングが示されています。

sample2=
 (DESCRIPTION= 
   (LOAD_BALANCE=on)                                    # 1
   (FAILOVER=on)
   (ADDRESS_LIST= 
     (SOURCE_ROUTE=yes) 
     (ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))    # 2
     (ADDRESS=(PROTOCOL=tcp)(HOST=host2)(PORT=1521)))
  (ADDRESS_LIST= 
     (SOURCE_ROUTE=yes) 
     (ADDRESS=(PROTOCOL=tcp)(HOST=host3)(port=1630)) 
     (ADDRESS=(PROTOCOL=tcp)(HOST=host4)(port=1521)))
   (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))  # 3

ここでは、構文は次のようになります。

  1. クライアントは、ADDRESS_LISTを無作為に選択し、選択したADDRESS_LISTに障害がある場合、他方にフェイルオーバーするように指示されます。この指示は、LOAD_BALANCEパラメータとFAILOVERパラメータがonに設定されていることで示されます。

  2. ADDRESS_LISTが選択されると、クライアントは、最初にそのADDRESS_LISTに指定されているポート1630を使用するOracle Connection Managerプロトコル・アドレスを使用して、Oracle Connection Managerに接続します。

  3. 次に、Oracle Connection Managerは、ADDRESS_LISTに指定されているプロトコル・アドレスを使用してデータベース・サービスに接続します。

6.6 接続記述子の説明

各接続記述子は、DESCRIPTIONパラメータの中に組み込まれています。複数の接続記述子は、DESCRIPTION_LISTパラメータによって記述されます。

6.6.1 DESCRIPTION_LIST

tnsnames.oraファイルのDESCRIPTION_LISTネットワーク・パラメータは、特定のネット・サービス名について接続記述子のリストを定義します。

用途

特定のネット・サービス名に関する接続記述子のリストを定義します。

例6-6 例

net_service_name= 
(DESCRIPTION_LIST=
 (DESCRIPTION=
  (ADDRESS=...)
  (CONNECT_DATA=(SERVICE_NAME=sales.example.com)))
 (DESCRIPTION=

6.6.2 DESCRIPTION

tnsnames.oraファイルのDESCRIPTIONネットワーク・パラメータは、接続記述子のコンテナを指定します。

用途

接続記述子のコンテナを指定します。

使用上のノート

複数のDESCRIPTIONパラメータを使用する場合、それらをDESCRIPTION_LISTパラメータの下に置きます。

例6-7 例

net_service_name=
(DESCRIPTION=
  (ADDRESS=...)
  (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))

6.7 プロトコル・アドレス・セクション

tnsnames.oraファイルのプロトコル・アドレス・セクションは、リスナーのプロトコル・アドレスを指定します。リスナーのプロトコル・アドレスが1つのみの場合、ADDRESSパラメータを使用します。アドレスが複数ある場合は、ADDRESS_LISTパラメータを使用します。

6.7.1 ADDRESS

ADDRESSネットワーク・パラメータはtnsnames.oraファイル内にあり、1つのリスナーについてADDRESS_LISTまたはDESCRIPTIONパラメータの下のプロトコル・アドレスを指定します。

用途

単一のリスナー・プロトコル・アドレスを指定します。

使用上のノート

このパラメータは、ADDRESS_LISTパラメータまたはDESCRIPTIONパラメータの下に配置します。

net_service_name=
(DESCRIPTION= 
 (ADDRESS=(PROTOCOL=tcp)(HOST=sales-svr)(PORT=1521))
 (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))

6.7.2 HTTPS_PROXY

tnsnames.oraのパラメータHTTPS_PROXYを使用して、Transport Layer Security (TLS)クライアント接続をトンネリングするためのHTTPプロキシ・ホスト名を指定する方法を学習します。

用途

トンネリングTLSクライアント接続のHTTPプロキシ・ホスト名を指定します。

使用上のノート

クライアントはHTTP CONNECTメソッドを使用して、フォワードHTTPプロキシ上にセキュアな接続をトンネリングできます。これにより、クライアント側のファイアウォールにアウトバウンド・ポートをオープンする必要がなくなるため、パブリック・クラウド・データベースにアクセスしやすくなります。このパラメータはPROTOCOL=TCPSが指定されている接続記述子に対してのみ適用可能です。これは、インターネットのホストに接続する必要があるイントラネット・ユーザーのWebブラウザ設定に似ています。クライアントの問合せによっては、フォワードWebプロキシ読取りタイムアウトをより高い値に増やしてください。そうしないと、フォワードWebプロキシがクライアントからのリクエストがないものと見なして接続をクローズします。

正常に接続できるかどうかは、特定のプロキシ構成によって決まります。データ転送のパフォーマンスは、プロキシの能力によって異なります。パフォーマンスが重要な本番環境ではこの機能を使用しないことをお薦めします。

組織のネットワーク構成およびセキュリティ・ポリシーによっては、HTTPプロキシのtnsnames.oraを構成するのみでは不十分な場合があります。たとえば、一部のネットワークではHTTPプロキシのユーザー名とパスワードが必要となります。

18cより前のバージョンのOracle Clientでは、HTTPプロキシを介した接続はサポートされません。

HTTPプロキシを介さずに、関連するポートを使用してoraclecloud.comドメイン内のホストへのアウトバウンド接続を開くには、ネットワーク管理者に連絡してください。たとえば、ポート1522です。

デフォルト

なし

インターネットのホストへのアウトバウンド接続を行えるHTTPプロキシ・ホスト名。

HTTPS_PROXY=www-proxy.example.com

6.7.3 HTTPS_PROXY_PORT

tnsnames.oraのパラメータHTTPS_PROXY_PORTを使用して、Transport Layer Security (TLS)クライアント接続をトンネリングするためのフォワードHTTPプロキシ・ホスト・ポートを指定する方法を学習します。

用途

トンネリングTLSクライアント接続のフォワードHTTPプロキシ・ホスト・ポートを指定します。

使用上のノート

HTTP CONNECTメソッドを受信するHTTPプロキシ・ホスト・ポートをフォワードします。 このパラメータはHTTPS_PROXY_PORTとともに使用してください。この値が有効になるのは、SQLNET.USE_HTTPS_PROXY=1sqlnet.oraに設定されている場合のみです。

デフォルト

なし

ポート番号

HTTPS_PROXY_PORT=80

6.7.4 ADDRESS_LIST

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

用途

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

使用上のノート

リスナーのプロトコル・アドレスが1つのみの場合、ADDRESS_LISTは不要です。

このパラメータは、DESCRIPTIONパラメータまたはDESCRIPTION_LISTパラメータの下に配置します。

net_service_name=
 (DESCRIPTION= 
  (ADDRESS_LIST=
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
  (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))

6.8 アドレス・リストのオプション・パラメータ

複数のアドレスの場合は、オプションのパラメータを使用してアドレス・リストを構成できます。

6.8.1 ENABLE

用途

コール元が終了したリモート・サーバーを検出する場合、通常、通知に2時間以上かかります。

使用上のノート

接続文字列内のDESCRIPTIONパラメータの下に(ENABLE=broken)を埋め込むことにより、サポートされているTCP転送のキープアライブ機能をネット・サービス・クライアントに対して有効にできます。クライアント側では、tcp_keepaliveのデフォルト値はoffです。オペレーティング・システムのTCP構成はプラットフォームによって異なりますが、実際のキープアライブ時間の詳細情報を定義します。

broken

net_service_name=
 (DESCRIPTION= 
  (ENABLE=broken)
  (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
  (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
  (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))

前述の例には複数のアドレスが含まれていますが、ADDRESS_LISTパラメータは使用されていません。これは、ADDRESS_LISTパラメータは必須ではないためです。

6.8.2 FAILOVER

用途

複数のプロトコル・アドレスに対して接続時フェイルオーバーを使用可能または使用禁止にします。

使用上のノート

このパラメータをonyesまたはtrueに設定すると、Oracle Netは、接続時に最初のプロトコル・アドレスに障害があった場合に別のアドレスにフェイルオーバーします。このパラメータをoffnoまたはfalseに設定すると、Oracle Netは、1つのプロトコル・アドレスを使用します。

このパラメータは、DESCRIPTION_LISTパラメータ、DESCRIPTIONパラメータまたはADDRESS_LISTパラメータの下に配置します。

ノート:

listener.oraSID_LIST_listener_nameセクションには、GLOBAL_DBNAMEパラメータを設定しないでください。静的に構成されたグローバル・データベース名では、接続時フェイルオーバーは無効になります。

デフォルト

on: DESCRIPTION_LISTDESCRIPTIONおよびADDRESS_LISTパラメータの場合

  • yes | on | true

  • no | off | false

net_service_name=
 (DESCRIPTION= 
  (FAILOVER=on)
  (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
  (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))

6.8.3 LOAD_BALANCE

用途

複数のプロトコル・アドレスに対してクライアント・ロード・バランシングを使用可能または使用禁止にします。

使用上のノート

このパラメータをonyesまたはtrueに設定すると、Oracle Netは、無作為の順序でアドレスのリストを進み、各種リスナーまたはOracle Connection Managerのプロトコル・アドレスにかかる負荷を均衡化します。パラメータをoffnoまたはfalseに設定すると、Oracle Netでは、接続に成功するまでプロトコル・アドレスを順番に試します。

このパラメータは、DESCRIPTION_LISTパラメータ、DESCRIPTIONパラメータまたはADDRESS_LISTパラメータの下に配置します。

デフォルト

on: DESCRIPTION_LISTの場合

  • yes | on | true

  • no | off | false

net_service_name=
 (DESCRIPTION= 
  (LOAD_BALANCE=on)
  (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
  (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))

6.8.4 RECV_BUF_SIZE

RECV_BUF_SIZEバラメータは、セッションの受信操作用バッファ領域を指定するために使用します。

用途

セッションの受信操作に使用するバッファ領域をバイト数で指定します。

使用上のノート

このパラメータは、TCP/IP、TLS付きTCP/IP、SDPの各プロトコルでサポートされます。

このパラメータは、DESCRIPTIONパラメータの下またはプロトコル・アドレスの最後に配置します。

クライアントの接続記述子にこのパラメータを設定すると、クライアント側のsqlnet.oraファイルのRECV_BUF_SIZEパラメータが上書きされます。

ノート:

オペレーティング・システムによっては、他のプロトコルもこのパラメータをサポートしている場合があります。他のプロトコルの詳細は、オペレーティング・システムのマニュアルを参照してください。

デフォルト

このパラメータのデフォルト値は、オペレーティング・システムによって異なります。Linux 2.6オペレーティング・システムのデフォルト値は87380バイトです。

net_service_name= 
 (DESCRIPTION= 
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521)
        (RECV_BUF_SIZE=11784))
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)
        (RECV_BUF_SIZE=11784))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)))
net_service_name= 
 (DESCRIPTION= 
   (RECV_BUF_SIZE=11784)
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=hr1-server)(PORT=1521))
     (ADDRESS=(PROTOCOL=tcp)(HOST=hr2-server)(PORT=1521)))
   (CONNECT_DATA=
     (SERVICE_NAME=hr.us.example.com)))

6.8.5 SDU

用途

ネットワークを介して送信されるデータ・パッケージの転送レートを、指定されたセション・データ・ユニット(SDU)・サイズで最適化するようにOracle Netに指示します。

使用上のノート

このパラメータは、DESCRIPTIONパラメータの下に配置します。

クライアントの接続記述子にこのパラメータを設定すると、クライアント側のsqlnet.oraファイルのDEFAULT_SDU_SIZEパラメータが上書きされます。

デフォルト

8192バイト(8KB)

512から2097152バイト。

net_service_name= 
 (DESCRIPTION=
  (SDU=8192)
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521))
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com))

6.8.6 SEND_BUF_SIZE

SEND_BUF_SIZEバラメータは、セッションの送信操作用バッファ領域を指定するために使用します。

用途

セッションの送信操作に使用するバッファ領域をバイト数で指定します。

使用上のノート

このパラメータは、TCP/IP、TLS付きTCP/IP、SDPの各プロトコルでサポートされます。

このパラメータは、DESCRIPTIONパラメータの下またはプロトコル・アドレスの最後に配置します。

クライアントの接続記述子にこのパラメータを設定すると、クライアント側のsqlnet.oraファイルのSEND_BUF_SIZE パラメータが上書きされます。

ノート:

オペレーティング・システムによっては、他のプロトコルもこのパラメータをサポートしている場合があります。他のプロトコルの詳細は、オペレーティング・システムのマニュアルを参照してください。

デフォルト

このパラメータのデフォルト値は、オペレーティング・システムによって異なります。Linux 2.6オペレーティング・システムのデフォルト値は16KBです。

net_service_name= 
 (DESCRIPTION= 
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521)
        (SEND_BUF_SIZE=11784))
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)
        (SEND_BUF_SIZE=11784)))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)))
net_service_name= 
 (DESCRIPTION= 
   (SEND_BUF_SIZE=11784)
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=hr1-server)(PORT=1521)
     (ADDRESS=(PROTOCOL=tcp)(HOST=hr2-server)(PORT=1521)))
   (CONNECT_DATA=
     (SERVICE_NAME=hr.us.example.com)))

6.8.7 SOURCE_ROUTE

用途

複数のプロトコル・アドレスによるルーティングを使用可能にします。

使用上のノート

このパラメータをonまたはyesに設定すると、Oracle Netは、接続先に到達するまで順番に各アドレスを使用します。

Oracle Connection Managerを使用するには、クライアントからOracle Connection Managerへの第1接続、およびOracle Connection Managerからリスナーへの第2接続が必要です。

このパラメータは、DESCRIPTION_LISTパラメータ、DESCRIPTIONパラメータまたはADDRESS_LISTパラメータの下に配置します。

デフォルト

off

  • yes | on

  • no | off

net_service_name=
 (DESCRIPTION= 
  (SOURCE_ROUTE=on)
  (ADDRESS=(PROTOCOL=tcp)(HOST=cman-pc)(PORT=1630))
  (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
  (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))

関連項目:

構成情報の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

6.8.8 TYPE_OF_SERVICE

用途

Oracle RDBデータベースに使用するサービスのタイプを指定します。

使用上のノート

このパラメータは、アプリケーションがOracle RDBとOracleデータベース・サービスの両方をサポートし、この両者間のロード・バランシングをアプリケーションで行うようにする場合にのみ使用してください。

このパラメータは、DESCRIPTIONパラメータの下に配置します。

net_service_name=
 (DESCRIPTION_LIST=
  (DESCRIPTION=
   (ADDRESS=...)
   (CONNECT_DATA= 
    (SERVICE_NAME=generic)
    (RDB_DATABASE=[.mf]mf_personal.rdb)
    (GLOBAL_NAME=alpha5))
   (TYPE_OF_SERVICE=rdb_database))
  (DESCRIPTION=
   (ADDRESS=...)
   (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com))
   (TYPE_OF_SERVICE=oracle11_database)))

6.9 接続データ・セクション

プロトコル・アドレスを使用してネットワーク接続を構成する方法を学習します。

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

6.9.1 COLOCATION_TAG

用途

リスナーに対して、同じcolocation_tagを持つすべての接続を同じデータベース・インスタンスにルーティングするように指示します。

使用上のノート

このパラメータは、CONNECT_DATAパラメータとともに使用します。

パラメータ値は、英数字文字列にする必要があります。


net_service_name=
 (DESCRIPTION=
   (ADDRESS_LIST=
    (ADDRESS=...)
    (ADDRESS=...))
 (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com)
    (COLOCATION_TAG=abc)))

ノート:

ある条件下、たとえばインスタンスの最大ロードに達した場合や、サービスに対して新しいインスタンスが追加または削除された場合は、同じデータベース・インスタンスに対して同じcolocation_tagを持つクライアント接続のコロケーションは一貫していない可能性があります。

6.9.2 CONNECT_DATA

用途

SERVICE_NAMEなど、接続先サービスを定義します。

使用上のノート

このパラメータは、DESCRIPTIONパラメータの下に配置します。

CONNECT_DATAには、次のパラメータも指定できます。

net_service_name=
 (DESCRIPTION= 
  (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com)))

6.9.3 FAILOVER_MODE

用途

実行時に最初のリスナーが失敗した場合に別のリスナーにフェイルオーバーするようOracle Netに指示します。

使用上のノート

構成によっては、実行していたセッションまたはSELECT文が自動的にフェイルオーバーされます。

この種類のフェイルオーバーは、透過的アプリケーション・フェイルオーバー(TAF)と呼ばれます。接続時フェイルオーバーのFAILOVERパラメータと混同しないでください。

このパラメータは、CONNECT_DATAパラメータの下に配置します。

追加のパラメータ

FAILOVER_MODEは、次のパラメータをサポートします。

  • BACKUP: フェイルオーバー・ノードをネット・サービス名により指定します。フェイルオーバー・ノードに対しては個別のネット・サービス名を作成する必要があります。

  • TYPE: フェイルオーバー・タイプを指定します。Oracle Call Interface(OCI)アプリケーションでは、デフォルトで3種類のOracle Netフェイルオーバー機能を使用できます。

    • SESSION: セッションをフェイルオーバーします。たとえば、ユーザーの接続が消失した場合、バックアップ上にそのユーザーの新規セッションが自動的に作成されます。このタイプのフェイルオーバーは、リカバリ選択を試行しません。

    • SELECT: オープン・カーソルを持つユーザーはフェッチに失敗してもフェッチを継続できます。ただしこのモードでは、通常の検索操作を行うクライアント側にオーバーヘッドが生じます。

    • NONE: これがデフォルトで、フェイルオーバー機能は使用されません。フェイルオーバーが実行されないように、明示的に指定することもできます。

  • METHOD: 1次ノードからバックアップ・ノードへのフェイルオーバーの実行速度を指定します。

    • BASIC: フェイルオーバー時に接続を確立します。このオプションでは、フェイルオーバー時間までバックアップ・データベース・サーバーでの作業はほとんど不要です。

    • PRECONNECT: 接続を事前に確立します。フェイルオーバーは高速に行われますが、バックアップ・インスタンスはサポートされた各インスタンスからの接続すべてをサポートできる必要があります。

  • TRANSACTION: リカバリ可能なエラーの後、データベースで現行のデータベース・トランザクションが完了するようにします。このパラメータはCOMMIT_OUTCOME=TRUEパラメータとともに使用します。

  • RETRIES: フェイルオーバー後の接続試行回数を指定します。DELAYが指定されている場合、RETRIESは5回の試行回数にデフォルト設定されます。

  • DELAY: 接続試行の間隔を秒数で指定します。RETRIESが指定されている場合、DELAYは1秒にデフォルト設定されます。

ノート:

コールバック関数が登録されている場合、RETRIESパラメータおよびDELAYパラメータは無視されます。

関連項目:

構成情報の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

6.9.4 GLOBAL_NAME

用途

Oracle RDBデータベースを識別します。

使用上のノート

このパラメータは、CONNECT_DATAパラメータの下に配置します。

net_service_name= 
 (DESCRIPTION= 
   (ADDRESS_LIST=
    (ADDRESS=...)
    (ADDRESS=...))
   (CONNECT_DATA=
    (SERVICE_NAME=generic)
    (RDB_DATABASE=[.mf]mf_personal.rdb)
    (GLOBAL_NAME=alpha5)))

6.9.5 HS

用途

Oracle以外のシステムには異機種間サービスを介して接続するようにOracle Netに指示します。

使用上のノート

このパラメータは、CONNECT_DATAパラメータの下に配置します。

デフォルト

なし

ok

net_service_name= 
 (DESCRIPTION=
   (ADDRESS_LIST=
     (ADDRESS=...)
     (ADDRESS=...))
   (CONNECT_DATA=
    (SID=sales6)
    )
(HS=ok))

関連項目:

構成情報の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

6.9.6 INSTANCE_NAME

用途

アクセスするデータベース・インスタンスを識別します。

使用上のノート

値は、初期化パラメータ・ファイルのINSTANCE_NAMEパラメータに指定されている値に設定します。

このパラメータは、CONNECT_DATAパラメータの下に配置します。

net_service_name= 
 (DESCRIPTION=
   (ADDRESS_LIST=
     (ADDRESS=...)
     (ADDRESS=...))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (INSTANCE_NAME=sales1)))

関連項目:

INSTANCE_NAMEの使用方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

6.9.7 KERBEROS5_PRINCIPAL

このパラメータを使用して、Kerberosプリンシパルを指定します。

用途

Oracle DatabaseクライアントのKerberos認証を構成する場合、単一のOracle Databaseクライアントで複数のKerberosプリンシパルを指定できます。

これはオプションのパラメータです。指定すると、これを使用して、資格証明キャッシュ内のプリンシパル名がパラメータ値と一致するかどうかが検証されます。

使用上のノート

このパラメータは、CONNECT_DATAパラメータとともに使用します。または、オプションのKERBEROS5_PRINCIPALパラメータとともに接続文字列にKERBEROS5_CC_NAMEを指定して、別のKerberosプリンシパルとして接続することもできます。各Kerberosプリンシパルには、有効な資格証明キャッシュが必要です。

Kerberosプリンシパルkrbprinc1.example.comを使用して外部認証され、このプリンシパルの資格証明キャッシュが/tmp/krbuser1/krb.ccにあるユーザーkrbuser1の場合、接続文字列は次のようになります。

net_service_name=
(DESCRIPTION=
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales-svr)(PORT=1521))
      (CONNECT_DATA=(SERVICE_NAME=sales.example.com)) 
      (SECURITY=
          (KERBEROS5_CC_NAME=/tmp/krbuser1/krb.cc)
          (KERBEROS5_PRINCIPAL=krbprinc1@example.com)))

ノート:

/tmp/krbuser1/krb.ccファイルのプリンシパルにkrbprinc1@example.comの値が含まれていない場合、接続は失敗します。
同様に、Kerberosプリンシパルkrbprinc2.example.comを使用して外部認証され、このプリンシパルの資格証明キャッシュが/tmp/krbuser2/krb.ccにあるユーザーkrbuser2の場合、接続文字列は次のようになります。

net_service_name=
(DESCRIPTION=
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales-svr)(PORT=1521))
      (CONNECT_DATA=(SERVICE_NAME=sales.example.com)) 
      (SECURITY=
          (KERBEROS5_CC_NAME=/tmp/krbuser2/krb.cc)
          (KERBEROS5_PRINCIPAL=krbprinc2@example.com)))

6.9.8 RDB_DATABASE

用途

Oracle RDBデータベースのファイル名を指定します。

使用上のノート

このパラメータは、CONNECT_DATAパラメータの下に配置します。

net_service_name= 
 (DESCRIPTION= 
   (ADDRESS_LIST=
     (ADDRESS=...)
     (ADDRESS=...))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (RDB_DATABASE= [.mf]mf_personal.rdb)))

6.9.9 SHARDING_KEY

このパラメータを使用して、データベース接続リクエストを適切なシャードにルーティングします。このパラメータは、接続文字列のCONNECT_DATAセクションの下に配置します。

用途

シャーディング・キーの値を指定します。データベース接続リクエスト中に指定された値に基づいて、リクエストは適切なシャードに直接ルーティングされます。

使用上のノート

SHARDING_KEYパラメータは、簡略化されたテキスト形式でシャーディング・キーを指定するために使用します。このパラメータはASCII文字セットのみをサポートし、特殊文字はサポートしません。シャーディング・キーでは次のデータ型がサポートされています。

  • NUMBER

  • INTEGER

  • SMALLINT

  • RAW

  • NVARCHAR

  • NVARCHAR2

  • NCHAR

  • DATE

  • TIMESTAMP

SHARDING_KEY_B64パラメータは、シャーディング・キーのbase64エンコード・バイナリ表現を指定するために使用します。このパラメータは、特殊文字("引用符、,カンマ、( )閉じカッコ、+プラス記号など)をサポートします。

base64エンコード値のフィールド(*_B64)は、一連のスペース区切り整数値であるヘッダーで始まります。

(CONNECT_DATA=(SHARDING_KEY_B64=[version] [type] [key column 1 type identifier] [key column 2 type identifier] ... ,[base64 string],[base64 string],[base64 string],...))... 
上の構文で:
  • 複合キーの部分はカンマで区切られます。

  • versionは、base64表現のバージョン番号を指定します。現在、バージョン1のみがサポートされているため、サポートされているversion値は1です。

  • typeは、文字セット文字列とそのエンコーディング情報を指定します。サポートされているtype値は次のとおりです。

    文字セット文字列 エンコーディング・スキーム

    0

    文字列にハッシュ値が含まれます。

    文字値は、AL32UTF8 (VARCHARの場合)およびAL16UTF16 (NVARCHARの場合)でエンコードされます。

    1

    文字列にハッシュ値が含まれません。

    2

    文字列にハッシュ値が含まれません。

    文字値はデータベース・エンコーディングでエンコードされ、これは列ごとに固有である場合があります。

    3

    文字列にハッシュ値が含まれます。

    4

    文字列にハッシュ値のみが含まれます。

  • key column type identifierは、データ型を指定します。サポートされているkey column type identifier値は次のとおりです。

    データ型

    1

    VARCHARNVARCHARCHARNCHAR

    2

    NUMBER

    6

    最初のバイトの長さのNUMBER

    12

    DATE

    23

    RAW

    180

    TIMESTAMP

  • ヘッダーはカンマで終了し、その後にbase64 stringが続きます。base64 stringは、base64エンコード値文字列のカンマ区切りリストです。ハッシュ値(使用可能な場合)は、リストの最後の値です。

例6-8

次のサンプル接続文字列では、簡略化されたテキスト形式でSHARDING_KEYパラメータ値が指定されています。
net_service_name
(DESCRIPTION= 
   (ADDRESS_LIST=
     (ADDRESS=...)
     (ADDRESS=...))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     ((SHARDING_KEY=40598230))))

例6-9

次のサンプル接続文字列では、SHARDING_KEY_B64パラメータ値がbase64バイナリ表現にエンコードされています。
net_service_name
(DESCRIPTION= 
   (ADDRESS_LIST=
     (ADDRESS=...)
     (ADDRESS=...))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     ((SHARDING_KEY_B64=1 1 2,VVM=,OTQwMDI=))))

6.9.10 SUPER_SHARDING_KEY

複合シャーディングの場合、このパラメータを使用して、データベース・リクエストをシャードのコレクション(シャード領域)にルーティングします。このパラメータは、接続文字列のCONNECT_DATAセクションの下に配置します。

用途

シャードのコレクションのシャード領域キーを指定します。シャード領域はシャードのセットで、キーの値の範囲またはリストに対応するデータが格納されます。データベース接続リクエスト中に指定された値に基づいて、リクエストは適切なシャード領域に直接ルーティングされます。

使用上のノート

SUPER_SHARDING_KEYパラメータは、簡略化されたテキスト形式でシャードのコレクションのシャード領域キーを指定するために使用します。このパラメータはASCII文字セットのみをサポートし、特殊文字はサポートしません。スーパー・シャーディング・キーでサポートされているデータ型は、シャーディング・キーのものと同じです。

SUPER_SHARDING_KEY_B64パラメータは、シャード領域キーのbase64エンコード・バイナリ表現を指定するために使用します。このパラメータは、特殊文字("引用符、,カンマ、( )閉じカッコ、+プラス記号など)をサポートします。

base64エンコード値のフィールド(*_B64)は、一連のスペース区切り整数値であるヘッダーで始まります。
(CONNECT_DATA=(SUPER_SHARDING_KEY_B64=[version] [type] [integer literal] [integer literal] ... ,[base64 binary],[base64 binary],[base64 binary],...))... 
それぞれのbase64エンコード・ヘッダー・フィールドの詳細は、「SHARDING_KEY」を参照してください。

例6-10

次のサンプル接続文字列では、簡略化されたテキスト形式でSHARDING_KEYおよびSUPER_SHARDING_KEYパラメータ値が指定されています。
net_service_name=
(DESCRIPTION= 
   (ADDRESS_LIST=
     (ADDRESS=...)
     (ADDRESS=...))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     ((SHARDING_KEY=40598230)(SUPER_SHARDING_KEY=gold)))

例6-11

次のサンプル接続文字列では、SHARDING_KEY_B64およびSUPER_SHARDING_KEY_B64パラメータ値がbase64バイナリ表現にエンコードされています。
net_service_name
(DESCRIPTION= 
   (ADDRESS_LIST=
     (ADDRESS=...)
     (ADDRESS=...))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     ((SHARDING_KEY_B64=1 1 2,VVM=,OTQwMDI=)(SUPER_SHARDING_KEY_B64=1 1,BBWEPGRBBDOEMGQW)))

6.9.11 SERVER

用途

クライアントを特定タイプのサービス・ハンドラに接続するようにリスナーに指示します。

使用上のノート

このパラメータは、CONNECT_DATAパラメータの下に配置します。

  • dedicated: クライアントのリクエストが専用サーバーによって処理されるかどうかを指定します。

  • shared: クライアントのリクエストがディスパッチャまたは共有サーバーによって処理されるかどうかを指定します。

  • pooled: データベース常駐の接続プーリングがサーバー上で有効化されている場合、接続プールから接続を取得します。

ノート:

  • クライアントが共有サーバー・プロセスでデータベースに接続するには、共有サーバーはデータベース初期化ファイルに構成されている必要があります。

  • sqlnet.oraファイルのUSE_DEDICATED_SERVERパラメータは、このパラメータよりも優先されます。

net_service_name= 
 (DESCRIPTION=
   (ADDRESS_LIST=
     (ADDRESS=...)
     (ADDRESS=...))
   (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com)
    (SERVER=dedicated)))

6.9.12 SERVICE_NAME

用途

アクセスするOracle Databaseデータベース・サービスを識別します。

使用上のノート

値は、初期化パラメータ・ファイルのSERVICE_NAMESパラメータに指定されている値に設定します。

このパラメータは、CONNECT_DATAパラメータの下に配置します。

net_service_name= 
 (DESCRIPTION=
   (ADDRESS_LIST=
     (ADDRESS=...)
     (ADDRESS=...))
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)))

6.10 セキュリティ・セクション

tnsnames.oraファイルのセキュリティ・セクションでは、Oracleセキュリティ機能で使用するこれらのセキュリティ関連パラメータを指定します。

6.10.1 IGNORE_ANO_ENCRYPTION_FOR_TCPS

IGNORE_ANO_ENCRYPTION_FOR_TCPSパラメータは、この特定のTNS別名についてSQLNET.ENCRYPTION_CLIENTパラメータを無視する必要があるかどうかを指定します。

用途

この特定のTNS別名についてSQLNET.ENCRYPTION_CLIENTパラメータを無視する必要があるかどうかを指定します。

使用上のノート

SQLNET.ENCRYPTION_SERVERrequiredに設定する必要がある場合は、SQLNET.ENCRYPTION_CLIENTSQLNET.ENCRYPTION_SERVERの両方でIGNORE_ANO_ENCRYPTION_FOR_TCPSパラメータをTRUEに設定できます。これにより、すべての発信TCPS接続のSQLNET.ENCRYPTION_CLIENTパラメータに設定されている値がクライアントで無視されるようになります。

デフォルト

FALSE

例6-12 例

test_ssl=
    (DESCRIPTION =
       (ADDRESS=(PROTOCOL=tcps)(HOST=)(PORT=1750))
       (CONNECT_DATA=(SID=^ORACLE_SID^))
       (SECURITY=(IGNORE_ANO_ENCRYPTION_FOR_TCPS=TRUE))
     ) 

6.10.2 OCI_COMPARTMENT

OCI_COMPARTMENTパラメータを使用して、クライアント接続のデータベース・インスタンスを保持するコンパートメントのOCID (Oracle Cloud Identifier)を指定します。このパラメータは、OCI Database as a Service (DBaaS)上でOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーのトークンベース認証を構成する場合に使用します。

用途

データベース・トークン・リクエストのスコープを定義します。この値は、指定されたコンパートメント内のみのデータベースへのトークン・リクエストを開始するようにデータベース・クライアントに指示します。

使用上のノート

IAMトークンベースの認証の構成中に(IAMユーザー名およびIAMデータベース・パスワードを使用してデータベース・トークンを取得して)、OCI_COMPARTMENTパラメータをPASSWORD_AUTHOCI_IAM_URLおよびOCI_TENANCYパラメータとともに使用できます。オプションのOCI_DATABASEパラメータを使用して、接続のコンパートメント内のデータベース・インスタンスを指定することもできます。

この構成では、データベース・クライアントはIAMユーザー名およびIAMデータベース・パスワードを使用して、IAMデータベース・トークンのみをリクエストできます。クライアントは、APIキー、委任トークン、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパルまたはインスタンス・プリンシパルのIAMデータベース・トークンをリクエストできません。

OCI_DATABASEが設定されていない場合、OCI_COMPARTMENTパラメータはオプションです。OCI_DATABASEを設定する場合は、トークン・リクエストがそのコンパートメント内の指定されたデータベースに対するものになるように、OCI_COMPARTMENTも設定する必要があります。

OCI_COMPARTMENTOCI_DATABASEの両方を設定しない場合、テナンシ全体がトークン・リクエストのスコープになります。

このパラメータは、tnsnames.oraファイルまたはsqlnet.oraファイルのSECURITYセクションの下で使用するか、コマンドライン接続文字列の一部として直接使用します。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。

デフォルト

なし

データベース・トークンのアクセスを許可するIAMコンパートメントのOCID。OCIコンソールの「コンパートメント」情報ページから、コンパートメントのOCID値を取得できます。

コンパートメントOCIDは次の構文を使用します。

OCI_COMPARTMENT=compartment_OCID

構文オプションの詳細は、Oracle Cloud ID (OCID)に関する項を参照してください。

tnsnames.oraファイル:
net_service_name=
  (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
     (SECURITY=
        (SSL_SERVER_DN_MATCH=TRUE)
        (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
        (PASSWORD_AUTH=OCI_TOKEN)
        (OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken)
        (OCI_TENANCY=ocid1.tenancy..12345)
        (OCI_COMPARTMENT=ocid1.compartment..12345)
        (OCI_DATABASE=ocid1.autonomousdatabase.oc1.12345))
     (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))  
  )
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
PASSWORD_AUTH=OCI_TOKEN
OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken
OCI_TENANCY=ocid1.tenancy..12345
OCI_COMPARTMENT=ocid1.compartment..12345
OCI_DATABASE=ocid1.autonomousdatabase.oc1.12345

6.10.3 OCI_DATABASE

OCI_DATABASEパラメータを使用して、クライアント接続でアクセスするデータベースのOCID (Oracle Cloud Identifier)を指定します。このパラメータは、OCI Database as a Service (DBaaS)上でOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーのトークンベース認証を構成する場合に使用します。

用途

データベース・トークンのリクエストのスコープを定義します。データベースOCID値は、コンパートメント内の指定されたデータベースへのトークン・リクエストを開始するようデータベース・クライアントに指示します。

使用上のノート

このパラメータは省略可能です。IAMトークンベースの認証の構成中に(IAMユーザー名およびIAMデータベース・パスワードを使用してデータベース・トークンを取得して)、OCI_DATABASEパラメータをPASSWORD_AUTHOCI_IAM_URLOCI_TENANCYおよびOCI_COMPARTMENTパラメータとともに使用できます。

この構成でデータベース・クライアントがIAMデータベース・トークンをリクエストできるのは、IAMユーザー名とIAMデータベース・パスワードを使用する場合のみです。クライアントは、APIキー、委任トークン、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパルまたはインスタンス・プリンシパルのIAMデータベース・トークンはリクエストできません。

OCI_DATABASE値は、トークン・リクエストを指定されたデータベースのみに制限します。OCI_DATABASEを設定する場合は、トークン・リクエストがそのコンパートメント内の指定されたデータベースに対するものになるように、OCI_COMPARTMENTも設定する必要があります。

このパラメータは、tnsnames.oraファイルまたはsqlnet.oraファイルのSECURITYセクションの下で使用するか、コマンドライン接続文字列の一部として直接使用します。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。

デフォルト

なし

クライアント接続にアクセスするデータベースのOCID。データベースのOCID値は、OCIコンソールの「データベース詳細」ページから取得できます。

データベースOCIDは次の構文を使用します。

OCI_DATABASE=database_OCID

構文オプションの詳細は、Oracle Cloud Identifier (OCID)ドキュメントを参照してください。

tnsnames.oraファイル:
net_service_name=
  (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
     (SECURITY=
        (SSL_SERVER_DN_MATCH=TRUE)
        (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
        (PASSWORD_AUTH=OCI_TOKEN)
        (OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken)
        (OCI_TENANCY=ocid1.tenancy..12345)
        (OCI_COMPARTMENT=ocid1.compartment..12345)
        (OCI_DATABASE=ocid1.autonomousdatabase.oc1.12345))
     (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))  
  )
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
PASSWORD_AUTH=OCI_TOKEN
OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken
OCI_TENANCY=ocid1.tenancy..12345
OCI_COMPARTMENT=ocid1.compartment..12345
OCI_DATABASE=ocid1.autonomousdatabase.oc1.12345

6.10.4 OCI_IAM_URL

OCI_IAM_URLパラメータを使用して、OCI Database as a Service (DBaaS)上のOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーを認証するためのデータベース・トークンを取得するためにデータベース・クライアントが接続する必要があるエンドポイントURLを指定します。このパラメータは、IAMユーザー名とIAMデータベース・パスワードを使用して、トークンベース認証を構成するときに使用します。

用途

REST APIリクエストのIAM URLを指定します。データベース・クライアントは、このURLに接続して、IAMからデータベース・トークンを取得します。

使用上のノート

IAMトークンベースの認証の構成中に(IAMユーザー名およびIAMデータベース・パスワードを使用してデータベース・トークンを取得して)、OCI_IAM_URLパラメータをPASSWORD_AUTHおよびOCI_TENANCYパラメータとともに設定します。これらのパラメータは必須です。

この構成でデータベース・クライアントがIAMデータベース・トークンをリクエストできるのは、IAMユーザー名とIAMデータベース・パスワードを使用する場合のみです。クライアントは、APIキー、委任トークン、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパルまたはインスタンス・プリンシパルのIAMデータベース・トークンはリクエストできません。

オプションのOCI_COMPARTMENTおよびOCI_DATABASEパラメータを設定して、トークン・リクエストのスコープを指定することもできます。

このパラメータは、tnsnames.oraファイルまたはsqlnet.oraファイルのSECURITYセクションの下で使用するか、コマンドライン接続文字列の一部として直接使用します。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。

デフォルト

なし

データベース・トークンを取得するためにデータベース・クライアントが接続する必要があるOCI IAMエンドポイントURL。このURLはリージョンに固有で、次の構文を使用します。
<authentication_regional_endpoint>/v1/actions/generateScopedAccessBearerToken

この値は、<authentication_regional_endpoint>をリージョンのAPIエンドポイントURLに置き換えることで導出できます。適切なAPIエンドポイントURLを取得するには、Identity and Access Managementデータ・プレーンAPIに関する項を参照してください。

たとえば、フェニックスのURL (https://auth.us-phoenix-1.oraclecloud.com)を使用する場合、OCI_IAM_URL値は次のようになります。
https://auth.us-phoenix-1.oraclecloud.com/v1/actions/generateScopedAccessBearerToken

tnsnames.oraファイル:
net_service_name=
  (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
     (SECURITY=
        (SSL_SERVER_DN_MATCH=TRUE)
        (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
        (PASSWORD_AUTH=OCI_TOKEN)
        (OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken)
        (OCI_TENANCY=ocid1.tenancy..12345))
     (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))  
  )
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
PASSWORD_AUTH=OCI_TOKEN
OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken
OCI_TENANCY=ocid1.tenancy..12345

これらの例では、オプションのOCI_COMPARTMENTおよびOCI_DATABASEパラメータが指定されていないため、テナンシ全体がトークン・リクエストのスコープとして設定されます。

6.10.5 OCI_TENANCY

OCI_TENANCYパラメータを使用して、ユーザーのテナンシのOCID (Oracle Cloud Identifier)を指定します。このパラメータは、OCI Database as a Service (DBaaS)上でOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーのトークンベース認証を構成する場合に使用します。

用途

ユーザーのテナンシ(ルート・コンパートメント)のOCIDを指定します。

使用上のノート

IAMトークンベースの認証の構成中に(IAMユーザー名およびIAMデータベース・パスワードを使用してデータベース・トークンを取得して)、OCI_TENANCYパラメータを必須のPASSWORD_AUTHおよびOCI_IAM_URLパラメータとともに設定します。

この構成でデータベース・クライアントがIAMデータベース・トークンをリクエストできるのは、IAMユーザー名とIAMデータベース・パスワードを使用する場合のみです。クライアントは、APIキー、委任トークン、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパルまたはインスタンス・プリンシパルのIAMデータベース・トークンはリクエストできません。

また、オプションのOCI_COMPARTMENTパラメータとOCI_DATABASEパラメータを設定して、トークン・リクエストのスコープを指定することもできます。OCI_COMPARTMENTおよびOCI_DATABASEパラメータ値を設定しない場合、テナンシ全体がトークン・リクエストのスコープになります。

このパラメータは、tnsnames.oraファイルまたはsqlnet.oraファイルのSECURITYセクションの下で使用するか、コマンドライン接続文字列の一部として直接使用します。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。

デフォルト

なし

ユーザーのテナンシのOCID。テナンシのOCID値は、OCIコンソールの「テナンシ情報」ページから取得できます。

テナンシOCIDは次の構文を使用します。

OCI_TENANCY=tenancy_OCID

構文オプションの詳細は、Oracle Cloud Identifier (OCID)ドキュメントを参照してください。

tnsnames.oraファイル:
net_service_name=
  (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
     (SECURITY=
        (SSL_SERVER_DN_MATCH=TRUE)
        (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
        (PASSWORD_AUTH=OCI_TOKEN)
        (OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken)
        (OCI_TENANCY=ocid1.tenancy..12345))
     (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))  
  )
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
PASSWORD_AUTH=OCI_TOKEN
OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken
OCI_TENANCY=ocid1.tenancy..12345

これらの例では、オプションのOCI_COMPARTMENTパラメータとOCI_DATABASEパラメータが指定されていません。そのため、テナンシ全体がトークン・リクエストのスコープとして設定されます。

6.10.6 PASSWORD_AUTH

PASSWORD_AUTHパラメータを使用して、OCI Database as a Service (DBaaS)上のOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーの認証方法を構成します。この設定を使用すると、クライアント接続では、ユーザーのデータベースへのログインにIAMユーザー名とIAMデータベース・パスワードが使用されます。

用途

アクセスにIAMユーザー名およびIAMデータベース・パスワードを使用して、IAMデータベース・パスワード・ベリファイアの認証またはIAMトークンベースの認証のいずれかを構成します。

パスワード・ベリファイアの認証の場合、データベース・サーバーはIAMからIAMデータベースのパスワード・ベリファイアを取得します。トークンベースの認証の場合、データベース・クライアントはIAMからデータベース・トークン(db-token)をリクエストします。

使用上のノート

  • このパラメータは、tnsnames.oraファイルまたはsqlnet.oraファイルのSECURITYセクションの下で使用するか、コマンドライン接続文字列の一部として直接使用します。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。

  • この設定は、データベース・サーバーで既存のパスワード・ログイン・プロセスを使用するか(パスワード・ベリファイア認証)、IAMユーザー名およびIAMデータベース・パスワード(トークンベースの認証)でトークンを取得するようにデータベース・クライアントに指示します。このIAMデータベース・パスワードは、OCIコンソール・パスワードと異なります。IAMユーザーは、OCIコンソールからこのパスワードを設定できます。Autonomous Databaseユーザー認証および認可に使用するOCI IAMパスワードの作成に関する項を参照してください。

  • デフォルトでは、このパラメータはPASSWORD_VERIFIERに設定されています。PASSWORD_AUTH=PASSWORD_VERIFIER設定は、IAMデータベースのパスワード・ベリファイア認証を構成します。データベース・サーバーは、IAMからIAMデータベース・パスワード・ベリファイア(パスワードの暗号化されたハッシュ)を取得し、ユーザーを認証します。

    IAMユーザーが@connect_identifierを使用してIAMユーザー名およびIAMデータベース・パスワードでログインすると、PASSWORD_AUTH=PASSWORD_VERIFIER設定および@connect_identifierは、データベース・サーバーでの既存のユーザー名とパスワードのログイン・プロセスに従うようにデータベース・クライアントに指示します。

    PASSWORD_AUTHパラメータを使用してtnsnames.oraまたはsqlnet.ora設定をオーバーライドするには、接続文字列に別の値を指定します。

  • IAMユーザー名およびIAMデータベース・パスワードを使用してIAMトークンベースの認証を構成するには、PASSWORD_AUTH=OCI_TOKENを設定します。データベース・クライアントは、ユーザーがデータベースにアクセスするために、IAMからデータベース・トークン(db-token)をリクエストします。

    クライアントによって取得されるこのdb-tokenは、有効期限とスコープを持つベアラー・トークンであり、秘密キーは付属していません。これらのトークンは、セキュアなチャネルを介して送信されます。TCP/IPプロトコルとTransport Layer Security (TLS)のみを使用する必要があり、そうしないと、TLS以外の接続が許可されていないことを示すエラー・メッセージが表示されます。

    IAMユーザーが/@connect_identifierを使用してIAMユーザー名およびIAMデータベース・パスワードでログインすると、PASSWORD_AUTH=OCI_TOKEN設定および/@connect_identifierは、REST APIリクエストを使用してOCI IAMエンドポイントからトークンを直接取得するようにデータベース・クライアントに指示します。IAMユーザーがデータベース・スキーマにマップされている場合(排他的または共有)、ログインは完了します。

    データベース・クライアントがIAMからトークンを取得するには、データベース・クライアントが追加メタデータとともにIAMエンドポイントを検出できるように、追加パラメータを設定する必要があります。追加のパラメータは、オプションのOCI_COMPARTMENTおよびOCI_DATABASEとともにOCI_IAM_URLおよびOCI_TENANCYです。これらの値により、データベース・クライアントは指定されたエンドポイントに対して適切なコールを実行できます。

    OCI_IAM_URLパラメータは、データベース・クライアントが接続する必要があるAPIエンドポイントURLを指定します。OCI_TENANCYパラメータは、ユーザーのテナンシのOCID (Oracle Cloud Identifier)を指定します。オプションのOCI_COMPARTMENTおよびOCI_DATABASEパラメータは、リクエストのスコープを制限します。

    この認証方法は、パスワード・ベリファイアが機密とみなされるため、パスワード・ベリファイアを使用するよりも安全です。また、データベース・クライアントのみがデータベース・トークンを取得できます。アプリケーションまたはツールは、データベース・クライアントAPIを介してこれらのタイプのトークンを渡すことはできません。

ノート:

他のIAMユーザー資格証明(APIキー、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパル、インスタンス・プリンシパルまたは委任トークン)を使用してdb-tokenを取得することもできます。このdb-tokenは、proof-of-possession (PoP)トークンです。この場合、別のパラメータ設定(TOKEN_AUTH=OCI_TOKEN)を使用します。

データベース・クライアントでトークンの取得にのみ使用できるIAMデータベース・パスワードとは異なり、これらの資格証明には、トークンを取得するためのアプリケーションまたはツールが必要です。「TOKEN_AUTH」を参照してください。

デフォルト

PASSWORD_VERIFIER

値と例

IAMデータベース・パスワード・ベリファイア認証を構成するには:

PASSWORD_AUTH=PASSWORD_VERIFIER

ノート: IAMユーザー名およびIAMデータベース・パスワードをIAMデータベース・パスワード・ベリファイアとともに使用することがデフォルトの構成であるため、クライアントに追加パラメータを設定する必要はありません。

ただし、クライアント側のsqlnet.oraファイルでPASSWORD_AUTHOCI_TOKENに設定されている場合、クライアントはOCI IAMに接続し、IAMユーザー名およびIAMデータベース・パスワードを使用してデータベース・トークンを取得しようとします。この場合、PASSWORD_AUTH=PASSWORD_VERIFIERを使用して、特定の接続に対してこの設定をオーバーライドできます。

tnsnames.oraファイル:
net_service_name=
  (DESCRIPTION =
     (ADDRESS=(PROTOCOL=tcps)(HOST=sales-svr)(PORT=1521))
     (SECURITY=
        (SSL_SERVER_DN_MATCH=TRUE)
        (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
        (PASSWORD_AUTH=PASSWORD_VERIFIER))
     (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
  ) 
sqlnet.oraファイル:
PASSWORD_AUTH=PASSWORD_VERIFIER

IAMユーザー名およびIAMデータベース・パスワードを使用してIAMトークンベースの認証を構成するには:

PASSWORD_AUTH=OCI_TOKEN

ノート: トークンベースの認証では、TCPSプロトコル(PROTOCOL=tcps)を構成し、SSL_SERVER_DN_MATCHパラメータをTRUEに設定する必要があります。

tnsnames.oraファイル:
net_service_name=
  (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
     (SECURITY=
        (SSL_SERVER_DN_MATCH=TRUE)
        (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
        (PASSWORD_AUTH=OCI_TOKEN)
        (OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken)
        (OCI_TENANCY=ocid1.tenancy..12345))
     (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))  
  )
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
PASSWORD_AUTH=OCI_TOKEN
OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken
OCI_TENANCY=ocid1.tenancy..12345

これらの例では、オプションのOCI_COMPARTMENTパラメータとOCI_DATABASEパラメータが指定されていません。そのため、テナンシ全体がトークン・リクエストのスコープとして設定されます。

6.10.7 SECURITY

SECURITYパラメータは、接続のセキュリティ・プロパティを変更するために使用します。

用途

接続のセキュリティ・プロパティを変更します。このパラメータは、DESCRIPTIONパラメータの下に配置します。

net_service_name=
 (DESCRIPTION= 
  (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
    (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com))
    (SECURITY=
      (SSL_SERVER_CERT_DN="cn=sales,cn=OracleContext,dc=us,dc=acme,dc=com")))

6.10.8 SSL_SERVER_CERT_DN

SSL_SERVER_CERT_DNパラメータは、データベース・サーバーの識別名(DN)を指定するために使用します。

用途

データベース・サーバーの識別名(DN)を指定します。

使用上のノート

サーバーDNは、事前にクライアント側で認識しておく必要があります。そうしていないと、クライアントはSSL_SERVER_CERT_DNでサーバーのDNを指定できません。クライアントは、この情報を使用して、各サーバーに予定しているDNリストを取得し、データベース・サーバーのDNがそのサービス名と一致していることを確認します。完全DN一致を使用する場合は、このパラメータをサーバーDNに設定する必要があります(たとえば、SSL_SERVER_CERT_DN="finance, cn=OracleContext,c=us,o=example")。部分DN一致の場合は、このパラメータを含めないでください。

このパラメータは、sqlnet.oraSSL_SERVER_DN_MATCHパラメータと併用することで完全DN一致が有効になります。

finance= 
 (DESCRIPTION=
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL = tcps) (HOST = finance)
     (PORT = 1575)))
   (CONNECT_DATA=
     (SERVICE_NAME=finance.us.example.com))
   (SECURITY=
     (SSL_SERVER_CERT_DN="cn=finance,cn=OracleContext,c=us,o=example")))

6.10.9 TOKEN_AUTH

TOKEN_AUTHパラメータは、Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)またはMicrosoft Azure Active Directory (Azure AD)ユーザーのトークンベースの認証を構成するために使用します。この設定では、データベース・クライアントは/ (スラッシュ)ログインが使用されたときにトークン・ファイルを検索します。

用途

トークンベースのアクセスでは強力な認証が強制されるため、データベースへのより安全なアクセスが可能になります。IAMユーザーはOCI Database as a Service (DBaaS)データベースに接続でき、Azure ADユーザーはOracle Database (クラウドまたはオンプレミス)に接続できます。

このパラメータは、tnsnames.oraファイルまたはsqlnet.oraファイルのSECURITYセクションの下で使用するか、コマンドライン接続文字列の一部として直接使用します。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。

IAMに関する使用上のノート

  • Oracle Cloud Infrastructure (OCI)コマンドライン・インタフェース(CLI)を使用してIAMから取得されるか、OCIソフトウェア開発キット(SDK)からプログラムによって取得されるOCI IAMトークン(db-token)は、有効期限とスコープを持つproof-of-possession (PoP)トークンです。

    APIキー、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパル、インスタンス・プリンシパル、委任トークンなどのIAMユーザー資格証明のいずれかを使用して、IAMからdb-tokenおよび秘密キーを取得できます。

  • これらのトークンは、セキュアなチャネルを経由して送信されます。TCP/IPプロトコルとTransport Layer Security (TLS)のみを使用する必要があり、そうしないと、TLS以外の接続が許可されていないことを示すエラー・メッセージが表示されます。

  • トークンベースの認証では、TCPSプロトコル(PROTOCOL=tcps)を構成し、SSL_SERVER_DN_MATCHパラメータをTRUEに設定する必要があります。

  • IAMユーザーが/@connect_identifierを使用してログインする場合(およびTOKEN_AUTHOCI_TOKENに設定されている場合)、TOKEN_AUTH=OCI_TOKEN設定および/@connect_identifierは、デフォルト・ディレクトリまたはTOKEN_LOCATIONで指定された場所(IAMトークンベース認証を使用)からdb-tokenおよび秘密キーを取得するようデータベース・クライアントに指示します。

  • クライアント・アプリケーションがIAMからトークンを取得するように更新されている場合は、TOKEN_AUTH=OCI_TOKEN設定をオーバーライドできます。クライアント・アプリケーションは、IAMからdb-tokenおよび秘密キーを取得し、クライアントAPIを使用して属性としてデータベース・クライアントに送信します。この場合、TOKEN_AUTHおよびTOKEN_LOCATIONパラメータを指定する必要はありません。

  • 一般的なIAMトークンベースの認証プロセスは次のとおりです。

    1. OCIのIAMユーザーまたはアプリケーションが、最初にAPIキー、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパル、インスタンス・プリンシパルまたは委任トークンを使用して、IAMからdb-tokenをリクエストします(委任トークンはCloud Shellでのみ使用可能です)。

      セキュリティ・トークンを使用するには、ブラウザ認証プロセスを完了してセキュリティ・トークンを生成してから、そのセキュリティ・トークンを使用してdb-tokenをリクエストする必要があります。db-tokenの発行を認可するIAMポリシーが存在する場合は、db-tokenが返されます。

      OCI CLI (またはアプリケーションの場合はOCI SDK)を使用してdb-tokenをリクエストします。たとえば、次のOCI CLIコマンドを実行して、APIキー(apikey)を使用してdb-tokenをリクエストします。

      $ oci iam db-token get --profile scott

      profileオプションは、IAMユーザー資格証明にアクセスしてdb-tokenを取得するプロファイルを指定します。

      OCI CLIの使用方法の詳細は、Oracle Cloud Infrastructure CLIコマンド・リファレンスgetコマンドの詳細を参照してください。

    2. OCI CLIは、(プロファイルの一部としてIAMユーザー資格証明を格納する)configファイルを参照し、IAMを呼び出してdb-tokenを取得します。db-tokenおよび秘密キー・ファイルは、デフォルトまたは指定されたトークンの場所に書き込まれます。

    3. TOKEN_LOCATIONパラメータを指定して、db-tokenおよび秘密キー・ファイルが格納されるデフォルト・ディレクトリをオーバーライドできます。

      データベース・クライアントは、デフォルト・トークンの場所またはTOKEN_LOCATIONで指定された場所からdb-tokenおよび秘密キーを取得し、秘密キーを使用してdb-tokenに署名し、データベース・サーバーに送信します。データベース・サーバーはdb-tokenを検証し、ユーザーのグループ・メンバーシップ情報を取得します。IAMユーザーがデータベース・スキーマにマップされている場合(排他的または共有)は、ログインが完了します。

ノート:

別のIAM資格証明であるIAMデータベース・パスワードを使用して、IAMからdb-tokenをリクエストすることもできます。このdb-tokenはベアラー・トークンで、秘密キーは付属していません。IAMユーザー名およびIAMデータベース・パスワードを使用して、このトークンをリクエストするようにデータベース・クライアントを構成できます。アプリケーションはこのタイプのdb-tokenをクライアントに渡すことはできません。この場合、別のパラメータ設定(PASSWORD_AUTH=OCI_TOKEN)を使用します。

トークンを取得するためにアプリケーションまたはツールを必要とするAPIキー、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパル、インスタンス・プリンシパルおよび委任トークンとは異なり、IAMデータベース・パスワードは、データベース・クライアントのみがトークンを取得するために使用できます。「PASSWORD_AUTH」を参照してください。

表6-1 IAMの値と例

デフォルト

なし

TOKEN_AUTH=OCI_TOKEN

tnsnames.oraファイル:
net_service_name=
    (DESCRIPTION =
       (ADDRESS=(PROTOCOL=tcps)(HOST=sales-svr)(PORT=1521))
       (SECURITY=
          (SSL_SERVER_DN_MATCH=TRUE)
          (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
          (TOKEN_AUTH=OCI_TOKEN))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=OCI_TOKEN

これらの例では、オプションのTOKEN_LOCATIONパラメータが指定されていません。したがって、クライアントは、デフォルトのトークンの場所からdb-tokenおよび秘密キーを自動的に取得します。

Azure ADに関する使用上のノート

  • Azure AD OAuth2アクセス・トークンは、有効期限とスコープを持つベアラー・トークンです。このトークンは、OAuth2.0標準とAzure AD拡張機能に準拠しています。これらのトークンは、Linux、Microsoft PowerShellまたはその他の環境で実行されるツールおよびスクリプトからリクエストできます。また、Microsoft SDKを使用してプログラム的にこれらのトークンをリクエストすることもできます。

  • これらのトークンは、セキュアなチャネルを経由して送信されます。TCP/IPプロトコルとTransport Layer Security (TLS)のみを使用する必要があり、そうしないと、TLS以外の接続が許可されていないことを示すエラー・メッセージが表示されます。

  • トークンベースの認証では、TCPSプロトコル(PROTOCOL=TCPS)を構成し、SSL_SERVER_DN_MATCHパラメータをTRUEに設定する必要があります。

  • Azure ADユーザーが/@connect_identifierを使用してログインすると、TOKEN_AUTH=OAUTH設定は、トークン・ファイルがtokenという名前の場合に、TOKEN_LOCATIONで指定されたディレクトリの場所からアクセス・トークンを取得するようデータベース・クライアントに指示します。トークン・ファイル名がtokenと異なる場合は、TOKEN_LOCATIONパラメータを指定するときにファイル名とディレクトリの場所を使用する必要があります。

    TOKEN_LOCATIONパラメータは、Azure ADトークンベースの認証では必須です。データベース・クライアントはこの場所からトークンを取得し、データベース・サーバーに送信します。

  • クライアント・アプリケーションがAzure ADからトークンを取得するように更新されている場合は、TOKEN_AUTH=OAUTH設定をオーバーライドできます。Azure ADは、クライアントAPIを使用してdb-tokenを属性としてデータベース・クライアントに直接渡します。クライアントがこのリクエストを受信すると、クライアントはそれをデータベース・サーバーに送信します。

    この場合、TOKEN_AUTHおよびTOKEN_LOCATIONパラメータを指定する必要はありません。

  • 一般的なAzure ADトークンベースの認証プロセスは次のとおりです。
    1. Azure ADユーザーまたはアプリケーションが、最初に、サポートされているMicrosoft Azure AD認証フロー(リソース所有者のパスワード資格証明、認可コード、on-behalf-of (OBO)フローまたはクライアント資格証明)のいずれかを使用して、Azure ADからアクセス・トークンをリクエストします。

      Azure ADユーザーは、サポートされている任意のユーティリティを使用して接続し、トークンを取得してローカル・ファイル・ディレクトリに格納できます。

      Linux、Microsoft PowerShellまたはその他の環境で実行されるツールおよびスクリプトから、トークンをリクエストできます。Microsoft SDKを使用して、プログラムでリクエストすることもできます。

      Azure AD OAuth2アクセス・トークンを取得する方法の詳細な例は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

    2. その後、データベース・クライアントがトークンをデータベース・サーバーに送信します。データベース・サーバーはトークンを検証し(Azure AD公開キーを使用)、ユーザー名、アプリケーション・ロール、オーディエンスなど、様々な要求をトークンから抽出します。Azure ADプリンシパルがデータベース・スキーマにマップされている場合(排他的または共有)、ログインは完了します。

表6-2 Azure ADの値と例

デフォルト

なし

トークン・ファイルがtokenという名前である場合:

TOKEN_AUTH=OAUTH TOKEN_LOCATION="token_file_directory"

  • tnsnames.oraファイル:
    net_service_name=
        (DESCRIPTION=
          (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
          (SECURITY=
              (SSL_SERVER_DN_MATCH=TRUE)
              (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
              (TOKEN_AUTH=OAUTH)
              (TOKEN_LOCATION="/home/dbuser1/access-token"))
          (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
        )
    
  • sqlnet.oraファイル:
    SSL_SERVER_DN_MATCH=TRUE
    TOKEN_AUTH=OAUTH 
    TOKEN_LOCATION="/home/dbuser1/access-token"
    

これらの例では、トークン・ファイル名はtokenです。したがって、ディレクトリ・パス(/home/dbuser1/access-token)のみが指定されています。クライアントは、指定したパスでtokenファイルを自動的に検索し、アクセス・トークンを取得します。

トークン・ファイル名がtokenと異なる場合:

TOKEN_AUTH=OAUTH TOKEN_LOCATION="token_file_directory/token_filename"

  • tnsnames.oraファイル:
    net_service_name=
        (DESCRIPTION=
          (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
          (SECURITY=
              (SSL_SERVER_DN_MATCH=TRUE)
              (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
              (TOKEN_AUTH=OAUTH)
              (TOKEN_LOCATION="/home/dbuser1/access-token/mytoken"))
          (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
        )
    
  • sqlnet.oraファイル:
    SSL_SERVER_DN_MATCH=TRUE
    TOKEN_AUTH=OAUTH 
    TOKEN_LOCATION="/home/dbuser1/access-token/mytoken"
    

これらの例では、トークン・ファイル名はmytokenです。したがって、ファイル名とディレクトリ・パス(/home/dbuser1/access-token)の両方が指定されています。クライアントは、指定されたパスのmytokenファイルからアクセス・トークンを取得します。

6.10.10 TOKEN_LOCATION

TOKEN_LOCATIONパラメータは、トークン・ファイル・ディレクトリを指定するために使用します。このパラメータは、Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)またはMicrosoft Azure Active Directory (Azure AD)ユーザーのトークンベースの認証を構成する際に使用します。

用途

トークンベースの認証のためにトークン・ファイルが格納されるディレクトリの場所を指定します。Azure ADの場合、トークン・ファイル名を指定することもできます。データベース・クライアントはこの場所からトークンを取得して、データベース・サーバーに送信します。

このパラメータは、tnsnames.oraファイルまたはsqlnet.oraファイルでTOKEN_AUTHパラメータとともに使用するか、コマンドライン接続文字列の一部として直接使用します。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。

IAMに関する使用上のノート

TOKEN_LOCATIONパラメータは、IAMトークンベースの認証ではオプションです。このパラメータをTOKEN_AUTHパラメータとともに使用すると、db-tokenおよび秘密キーが格納されるデフォルトのディレクトリをオーバーライドできます。この場所は、db-tokenおよび秘密キーを取得するためにデータベース・クライアントによって使用されます。

IAMユーザーが/@connect_identifierを使用して接続を開始する場合(およびTOKEN_AUTHOCI_TOKENに設定されている場合)、データベース・クライアントは、デフォルト・ディレクトリまたはTOKEN_LOCATIONで指定された場所のいずれかからdb-tokenおよび秘密キーを取得します。次に、クライアントは秘密キーを使用してdb-tokenに署名し、データベース・サーバーにdb-tokenを送信します。

表6-3 IAMの値と例

デフォルト
  • Linuxの場合:

    /home/username/.oci/db-token

  • Windowsの場合:

    データベース・クライアントは、次の順序でデフォルト・ディレクトリを検索します。

    USERPROFILE環境変数が設定されている場合、クライアントはUSERPROFILEディレクトリ(C:\Users\usernameなど)を検索します。

    USERPROFILEが設定されていない場合、クライアントはHOMEPATH (\Users\usernameなど)を使用してHOMEDRIVEディレクトリ(C:など)を検索します。

    デフォルトのトークン場所のディレクトリの例:

    C:\Users\username\.oci\db-token

TOKEN_LOCATION="token_file_directory"

tnsnames.oraファイル:
net_service_name=
    (DESCRIPTION =
       (ADDRESS=(PROTOCOL=tcps)(HOST=sales-svr)(PORT=1521))
       (SECURITY=
          (SSL_SERVER_DN_MATCH=TRUE)
          (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
          (TOKEN_AUTH=OCI_TOKEN)
          (TOKEN_LOCATION="/home/oracle/.oci/db-token"))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=OCI_TOKEN
TOKEN_LOCATION="/home/oracle/.oci/db-token"

Azure ADに関する使用上のノート

TOKEN_LOCATIONパラメータは、Azure ADトークンベースの認証では必須です。このパラメータをTOKEN_AUTHパラメータとともに使用して、Azure AD OAuth2アクセス・トークンが格納されるディレクトリの場所を指定する必要があります。この場所は、アクセス・トークンを取得するためにデータベース・クライアントによって使用されます。

トークン・ファイルがtokenという名前である場合は、ディレクトリ・パスのみを指定します。トークン・ファイル名がtokenと異なる場合は、ファイル名とディレクトリ・パスを使用する必要があります。

Azure ADユーザーが/@connect_identifierを使用して接続を開始すると、データベース・クライアントは、TOKEN_LOCATIONで指定された場所からアクセス・トークンを取得し、トークンをデータベース・サーバーに送信します。

表6-4 Azure ADの値と例

デフォルト

なし

トークン・ファイルがtokenという名前である場合:

TOKEN_LOCATION="token_file_directory"

  • tnsnames.oraファイル:
    net_service_name=
        (DESCRIPTION=
          (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
          (SECURITY=
              (SSL_SERVER_DN_MATCH=TRUE)
              (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
              (TOKEN_AUTH=OAUTH)(TOKEN_LOCATION="/home/dbuser1/access-token"))
          (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
        )
    
  • sqlnet.oraファイル:
    SSL_SERVER_DN_MATCH=TRUE
    TOKEN_AUTH=OAUTH 
    TOKEN_LOCATION="/home/dbuser1/access-token"
    

これらの例では、トークン・ファイル名はtokenです。したがって、ディレクトリ・パス(/home/dbuser1/access-token)のみが指定されています。クライアントは指定されたパスのtokenファイルを自動的に検索して、アクセス・トークンを取得します。

トークン・ファイル名がtokenと異なる場合:

TOKEN_LOCATION="token_file_directory/token_filename"

  • tnsnames.oraファイル:
    net_service_name=
        (DESCRIPTION=
          (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
          (SECURITY=
              (SSL_SERVER_DN_MATCH=ON)
              (SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
              (TOKEN_AUTH=OAUTH)
              (TOKEN_LOCATION="/home/dbuser1/access-token/mytoken"))
          (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
        )
    
  • sqlnet.oraファイル:
    SSL_SERVER_DN_MATCH=TRUE
    TOKEN_AUTH=OAUTH 
    TOKEN_LOCATION="/home/dbuser1/access-token/mytoken"
    

これらの例では、トークン・ファイル名はmytokenです。したがって、ファイル名とディレクトリ・パス(/home/dbuser1/access-token)の両方が指定されています。クライアントは指定されたパスのmytokenファイルから、アクセス・トークンを取得します。

6.11 タイムアウト・パラメータ

tnsnames.oraファイルのタイムアウト・セクションでは、TNS接続文字列を介してタイムアウトと再試行の構成を指定できます。

次のパラメータを接続文字列のDESCRIPTIONレベルで設定できます。

6.11.1 CONNECT_TIMEOUT

用途

クライアントがOracle DatabaseへのOracle Net接続を確立するときのタイムアウト時間をmssecまたはminで指定します。

使用上のノート

このパラメータは、DESCRIPTIONパラメータの下に配置します。

CONNECT_TIMEOUTで指定されたタイムアウト間隔は、TCP接続のタイムアウト間隔のスーパーセットです。これには、リクエストされたサービスを提供するデータベース・インスタンスに接続される時間が含まれていますが、TCP接続の期間は含まれません。値とユニットの間のスペースあり、なしにかかわらず、様々なタイムアウトを受け入れます。単位が指定されない場合、デフォルトの単位はsecです。

タイムアウト間隔は、ADDRESS_LIST内の各ADDRESSおよびホスト名にマッピングされている各IPアドレスに適用されます。

CONNECT_TIMEOUTパラメータは、sqlnet.oraパラメータのSQLNET.OUTBOUND_CONNECT_TIMEOUTと同等で、このパラメータより優先されます。

net_service_name=
 (DESCRIPTION= 
  (CONNECT_TIMEOUT=10 ms)(RETRY_COUNT=3)
  (ADDRESS_LIST=
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
  (CONNECT_DATA=
   (SERVICE_NAME=sales.us.example.com)))

6.11.2 RETRY_COUNT

用途

接続試行を終了するまでに、ADDRESSリストを反復する回数を指定します。

使用上のノート

このパラメータは、DESCRIPTIONパラメータの下に配置します。

DESCRIPTION_LISTを指定している場合、指定した再試行回数に基づいて、各DESCRIPTIONが反復されます。

net_service_name= 
(DESCRIPTION_LIST=
 (DESCRIPTION=
  (CONNECT_TIMEOUT=10)(RETRY_COUNT=3)
  (ADDRESS_LIST=
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1a-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1b-svr)(PORT=1521)))
  (CONNECT_DATA=(SERVICE_NAME=sales1.example.com)))
 (DESCRIPTION=
  (CONNECT_TIMEOUT=60)(RETRY_COUNT=1)
  (ADDRESS_LIST=
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2a-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2b-svr)(PORT=1521)))
  (CONNECT_DATA=(SERVICE_NAME=sales2.us.example.com))))

6.11.3 RETRY_DELAY

用途

接続に対する後続の再試行間の遅延を秒単位で指定します。このパラメータは、RETRY_COUNTパラメータと組み合せることで機能します。

使用上のノート

このパラメータは、DESCRIPTIONパラメータの下に配置します。

DESCRIPTION_LISTを指定している場合、指定した再試行回数と説明の特定の遅延に基づいて、各DESCRIPTIONが反復されます。

net_service_name= 
(DESCRIPTION_LIST=
 (DESCRIPTION=
  (CONNECT_TIMEOUT=10)(RETRY_COUNT=3)(RETRY_DELAY=2)
  (ADDRESS_LIST=
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1a-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales1b-svr)(PORT=1521)))
  (CONNECT_DATA=(SERVICE_NAME=sales1.example.com)))
 (DESCRIPTION=
  (CONNECT_TIMEOUT=60)(RETRY_COUNT=2)(RETRY_DELAY=1)
  (ADDRESS_LIST=
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2a-svr)(PORT=1521))
   (ADDRESS=(PROTOCOL=tcp)(HOST=sales2b-svr)(PORT=1521)))
  (CONNECT_DATA=(SERVICE_NAME=sales2.us.example.com))))

6.11.4 TRANSPORT_CONNECT_TIMEOUT

用途

クライアントがOracle DatabaseへのOracle Net接続を確立するときのトランスポート接続タイムアウト時間をmssecまたはminで指定します。

使用上のノート

このパラメータは、DESCRIPTIONパラメータの下に配置されます。

TRANSPORT_CONNECT_TIMEOUTパラメータは、クライアントがデータベース・サーバーへのTCP接続を確立する時間をmssecまたはminで指定します。値とユニットの間のスペースあり、なしにかかわらず、様々なタイムアウトを受け入れます。デフォルト値は60 secondsです。単位が指定されない場合、デフォルトの単位はsecです。

タイムアウト間隔は、ADDRESS_LISTの記述内の各ADDRESSおよびホスト名にマッピングされている各IPアドレスに適用されます。TRANSPORT_CONNECT_TIMEOUTパラメータは、sqlnet.oraパラメータのTCP.CONNECT_TIMEOUTと同等で、このパラメータより優先されます。

net_service_name =
  (DESCRIPTION=
    (TRANSPORT_CONNECT_TIMEOUT=10 ms)
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
      (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
    (CONNECT_DATA=
      (SERVICE_NAME=sales.us.example.com)))

6.11.5 RECV_TIMEOUT

tnsnames.oraのパラメータRECV_TIMEOUTは、データベース・クライアントまたはサーバーが接続の確立後にピアからのデータを待機する時間を指定するために使用します。

用途

データベース・クライアントまたはサーバーが接続の確立後にピアからのデータを待機する時間をms (ミリ秒)、sec (秒)またはmin (分)単位で指定します。ピアは、指定の時間間隔内にデータを送信する必要があります。

時間、分、秒またはミリ秒単位で指定するには、それぞれhrminsecまたはmsキーワードを使用します。測定単位を指定してない場合、デフォルトの単位はsecになります。

使用上のノート

このパラメータは、DESCRIPTIONパラメータの下に配置されます。

このパラメータをクライアントに設定すると、サーバー・ホストの停止や、サーバーのビジー状態またはネットワーク接続の問題が原因で、受信操作が無期限または長期間待機状態のままになることがなくなります。指定した時間内にクライアントが応答データを受信しない場合、クライアントは「ORA-12535: TNS: 操作はタイムアウトしました。」および「ORA-12609: TNS: 受信タイムアウトが発生しました」というメッセージをsqlnet.logファイルにロギングします。

デフォルト値

なし

最小値

1 ms

推奨値

最小値1 msから4294967295 msまでの任意の数値。

RECV_TIMEOUT=10ms

または

RECV_TIMEOUT=10 ms

6.12 圧縮パラメータ

tnsnames.oraファイルの圧縮セクションでは、圧縮を有効にし、圧縮レベルを指定できます。これらのパラメータは、接続文字列のDESCRIPTIONレベルで設定できます。

6.12.1 COMPRESSION

tnsnames.oraファイルの圧縮パラメータは、データ圧縮を有効または無効にします。

用途

データ圧縮を有効または無効にします。

使用上のノート

このパラメータは、DESCRIPTIONパラメータの下に配置します。

クライアントの接続記述子にこのパラメータを設定すると、クライアント側のsqlnet.oraファイルのSQLNET.COMPRESSIONパラメータより優先されます。

デフォルト

off

  • on: データ圧縮を有効にします。

  • off: データ圧縮を無効にします。

net_service_name=
 (DESCRIPTION=
   (COMPRESSION=on)
      (ADDRESS_LIST=
         (ADDRESS= (PROTOCOL=tcp) (HOST=sales1-server) (PORT=1521))
         (ADDRESS= (PROTOCOL=tcp) (HOST=sales2-server) (PORT=1521)))
   (CONNECT_DATA=
       (SERVICE_NAME=sales.us.example.com)))

関連項目

6.12.2 COMPRESSION_LEVELS

tnsnames.oraファイルのCOMPRESSION_LEVELSパラメータは、圧縮レベルを指定します。

用途

圧縮レベルを指定します。

使用上のノート

圧縮レベルは、両端でどのレベルを使用するかを確認し、1つのレベルを選択するためのネゴシエーション時に使用されます。このパラメータは、DESCRIPTIONパラメータの下に配置します。

このパラメータはCOMPRESSIONパラメータとともに使用します。クライアントの接続記述子にこのパラメータを設定すると、クライアント側のsqlnet.oraファイルのSQLNET.COMPRESSION_LEVELSパラメータより優先されます。

デフォルト

low

  • low: 低CPU使用率と低圧縮率を使用します。

  • high: 高CPU使用率と高圧縮率を使用します。

net_service_name=
 (DESCRIPTION=
  (COMPRESSION=on)
  (COMPRESSION_LEVELS=(LEVEL=low)(LEVEL=high))
   (ADDRESS_LIST=
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521))
     (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521)))
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com)))