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

tnsnames.ora構成ファイル内で指定するOracle Netサービス名ローカル・ネーミング・パラメータについて学習します。

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

tnsnames.oraファイルは、ローカル・ネーミング・メソッドの場合に接続記述子にマップされるネットワーク・サービス名を含む構成ファイルです。

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

通常、Oracle Database Configuration Assistant (DBCA)やOracle Net Configuration Assistant (NETCA)などのツールでは、tnsnames.oraファイルが、Oracle Databaseインストールの場合はORACLE_HOME/network/adminディレクトリ、Oracle Grid Infrastructureインストールの場合はGRID_HOME/network/adminディレクトリ、読取り専用Oracleホームの場合は対応するORACLE_BASE_HOME/network/adminディレクトリに作成されます。なお、複数のデータベースをインストールしてある場合は、このファイルは、DBCAまたはNETCAが実行されているOracleホームまたはGridホーム(または読取り専用インスタンスの場合はOracleベース・ホーム)に作成されます。

tnsnames.oraファイルを確認する順序は次のとおりです:

  1. 環境変数TNS_ADMINで指定されたディレクトリ

  2. TNS_ADMIN環境変数が設定されていないか、このファイルがTNS_ADMINディレクトリにない場合:

    • LinuxおよびUNIXの場合: ORACLE_HOME/network/adminディレクトリ(または、読取り専用Oracleホームの場合はORACLE_BASE_HOME/network/adminディレクトリ)

    • Windowsの場合: ORACLE_HOME\network\adminディレクトリ(または、読取り専用Oracleホームの場合はORACLE_BASE_HOME\network\adminディレクトリ)

  3. 読取り専用Oracleホームの場合に、このファイルがOracleベース・ホームに見つからないとき:

    • LinuxおよびUNIXの場合: ORACLE_HOME/network/adminディレクトリ

    • Windowsの場合: ORACLE_HOME\network\adminディレクトリ

ノート:

  • Windowsでは、ORACLE_HOMEの場所は、ORACLE_HOME\bin\oracle.keyファイル(ORACLE_HOMEが定義されているWindowsレジストリ・キーの名前が含まれている)によって決まります。また、TNS_ADMIN環境変数は、プロセスの環境内でそれが設定されている場合に使用されます。環境内でTNS_ADMIN環境変数を定義していないか、プロセスが環境がないサービスである場合は、Windowsにより、レジストリでTNS_ADMINパラメータがスキャンされます。

  • Oracle Instant Clientでは、tnsnames.oraはOracle Instant Clientソフトウェアのサブディレクトリにあります。たとえば、/opt/oracle/instantclient_release_number/network/adminディレクトリなどです。

6.2 tnsnames.oraの一般的な構文

この例では、tnsnames.oraファイルの一般的な構文を確認できます。

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

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

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

6.3 tnsnames.oraファイルでの複数記述子の使用

この例では、複数のアドレスがある2つの接続記述子について確認できます。

tnsnames.oraファイルには、1つ以上の接続記述子を持つネット・サービス名を含めることができます。各接続記述子には、1つ以上のプロトコル・アドレスを含めることができます。

tnsnames.oraのパラメータ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ファイルは、それぞれに独自の特性を備えた複数のアドレス・リストを持つ接続記述子をサポートしています。tnsnames.oraファイル内で複数のアドレス・リストを構成する方法について学習します。

次の例は、2つのアドレス・リストを示しています。最初のアドレス・リストの特性は、クライアント・ロード・バランスがあり、接続時フェイルオーバーがないことです。こうした設定は、そのADDRESS_LIST内のプロトコル・アドレスにのみ適用されます。2番目のプロトコル・アドレス・リストでは、クライアント・ロード・バランシングは有効化されませんが、接続時フェイルオーバーは有効化されます。こうした設定は、そのADDRESS_LISTに含まれているプロトコル・アドレスにのみ適用されます。クライアントは、まず、最初のプロトコル・アドレスまたは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 
    

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は、もう1つのOracle Connection Managerの最初のプロトコル・アドレスに接続します。最初のプロトコル・アドレスへの接続が失敗した場合は、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 DESCRIPTIONパラメータの例

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

tnsnames.oraのパラメータADDRESSでは、プロトコル・アドレスを指定します。複数のアドレスの指定にはADDRESS_LISTを使用し、1つのリスナーの指定にはDESCRIPTIONを使用します。

用途

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

使用上のノート

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

ADDRESSパラメータの例

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とともに使用します。HTTPS_PROXY_PORTパラメータの値は、sqlnet.oraファイルでSQLNET.USE_HTTPS_PROXY=1が設定されている場合のみ反映されます。

デフォルト

なし

ポート番号

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 説明のオプション・パラメータ

DESCRIPTIONパラメータに接続記述子コンテナを構成するには、これらのパラメータを使用します。

6.8.1 ENABLE

サポートされているTCPトランスポートでキープアライブ機能を有効にするには、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 EXPIRE_TIME

EXPIRE_TIMEパラメータは、リモート・サーバー接続がアクティブになっていることを確認する頻度(分単位)を指定するために使用します。

用途

リモート・サーバー接続がアクティブになっていることを確認する頻度(分単位の時間間隔)を指定します。

使用上のノート

Oracle Net Servicesにより、プローブがアイドル・アクティビティの後に送信されるようにTCPのキープアライブ設定のパラメータがチューニングされます。

終了した接続の検出機能の使用に関する制限は、次のとおりです。

  • Bequeathed接続には使用できません。
  • プローブ・パケットにより通信量がわずかに増加するため、ネットワーク・パフォーマンスが低下する可能性があります。
  • オペレーティング・システムによっては、その他のイベントと接続プローブ・イベントを区別するために、サーバーで追加の処理が必要になる場合があります。これも、ネットワーク・パフォーマンスの低下を招く可能性があります。

デフォルト

0

最小値

0

推奨値

10


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

6.8.3 FAILOVER

複数のプロトコル・アドレスに対して接続時フェイルオーバーを有効または無効にするには、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.4 LOAD_BALANCE

複数のプロトコル・アドレスに対してクライアント・ロード・バランシングを有効または無効にするには、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.5 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.6 SDU

セッション・データ・ユニット(SDU)のサイズを構成するには、SDUパラメータを使用します。

用途

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

使用上のノート

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

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

デフォルト

8192バイト(8 KB)

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.7 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.8 SOURCE_ROUTE

複数のプロトコル・アドレスを介したルーティングを有効にするには、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))

6.8.9 TYPE_OF_SERVICE

Oracle Rdbデータベースに使用するサービスのタイプを指定するには、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.8.10 USE_SNI

TLS接続に対して、CONNECT_DATAのパラメータを使用してServer Name Indication (SNI)値を設定するには、USE_SNIパラメータを使用します。

用途

接続記述子によるTLS接続に対して、CONNECT_DATAのパラメータを使用してSNI値の設定を有効または無効にします。

使用上のノート

USE_SNIが設定されており、CONNECT_DATAにSNI用のサポートされているパラメータのどれかが指定されている場合は、これらのパラメータを使用してSNI値が設定されます。このSNI値は、その後リスナーによって使用されて、クライアントとのTLSハンドシェイクを実行する必要なく、リクエストを処理するための適切なサービス・ハンドラが選択されます。SNIを設定するためのサポートされているCONNECT_DATAのパラメータには、SERVICE_NAMEINSTANCE_NAMESERVERおよびCOLOCATION_TAGがあります。

USE_SNIが設定されており、CONNECT_DATAに前述のサポートされているパラメータのどれかが含まれていない場合は、SNI値は設定されず、リスナーによって、クライアントとの通常のTLSハンドシェイクが実行されて接続リクエストがフェッチされます。

  • CONNECT_DATAを使用してSNI値を設定するには、ON | TRUE | YES
  • CONNECT_DATAを使用してSNI値を設定しない場合は、OFF | FALSE | NO

デフォルト値

OFF

net_service_name=
            (DESCRIPTION=
              (USE_SNI=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))

ノート:

SNIのサポートは、23.7以降のすべてのバージョンで使用できますが、以前のバージョンでは使用できません。

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

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

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

6.9.1 CONNECT_DATA

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.2 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.3 CONNECTION_ID_PREFIX

このパラメータを使用して、アプリケーション固有のIDを接続識別子に追加します。

使用上のノート

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


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

ノート:

CONNECTION_ID_PREFIX値は、システム生成の接続ID値に内部的に追加され、接続文字列でCONNECTION_IDとして送信されます。CONNECTION_ID_PREFIXは、次の[a...z] [A...Z] [0...9] _文字セットに制限された8バイトの英数字識別子である必要があります。

6.9.4 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パラメータは無視されます。

6.9.5 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.6 HS

用途

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

使用上のノート

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

デフォルト

なし

ok

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

6.9.7 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.8 POOL_BOUNDARY

POOL_BOUNDARYパラメータは、データベース常駐接続プーリング(DRCP)またはプロキシ常駐接続プーリング(PRCP)のいずれかによる暗黙的な接続プーリングの有効化に使用します。

用途

DRCP (データベース・サーバー側)またはPRCP (Traffic DirectorモードのOracle Connection Manager用)のいずれかにより暗黙的な接続プーリングを有効にします。この設定では、アプリケーション・セッションを解放してDRCPまたはPRCPプールに戻す時間境界を指定します。文またはトランザクションの境界に、暗黙的な接続プーリングを設定できます。

このパラメータ設定を省略すると、暗黙的な接続プーリングは無効になります。

使用上のノート

  • このパラメータは、tnsnames.oraファイルの接続文字列のCONNECT_DATAセクション、簡易接続構文、またはコマンドライン接続文字列の一部として直接指定します。

  • このパラメータはプール接続にのみ適用できます。アプリケーション層でDRCPまたはPRCPを構成するには、クライアントがSERVER=POOLED設定を使用してサーバー・タイプをPOOLEDとして指定する必要があります。

  • STATEMENTに設定した場合、セッションが暗黙的にステートレスになると、セッションは解放され接続プールに戻されます。セッション内のすべてのオープン・カーソルが完了までフェッチされ、アクティブなトランザクション、一時表または一時LOBがない場合、セッションは暗黙的にステートレスになります。

    部分的にフェッチされたカーソル、一時LOB、グローバルまたはプライベート一時表から最小限のセッション状態を作成するアプリケーションには、STATEMENT値を使用します。

  • TRANSACTIONに設定すると、トランザクションが暗黙的または明示的に終了した場合、またはトランザクションが使用できず、セッションがステートレスである場合、セッションは接続プールに解放されます。プールへの解放により、アクティブなカーソル、一時表および一時LOBがクローズされます。

    部分的にフェッチされたカーソル、一時LOB、グローバルまたはプライベート一時表から多数のセッション状態を作成するアプリケーション、およびトランザクションのコミットまたはロールバックを随時行うアプリケーションには、TRANSACTIONを使用します。

  • 文の実行後または一時LOBの作成後に、TRANSACTION境界内でコミットまたはロールバックを実行した場合は、次のようになります:

    • その後のフェッチ操作で、ORA-01001などの無効カーソル関連エラーが発生する場合があります。

    • その後に一時LOBを使用すると、ORA-22922が発生する場合があります。

    • 永続LOBの操作は、暗黙的なリリース後でも続行できます。ただし、別のインスタンスで暗黙的な操作が実行されると、ORA-43887エラーが発生する場合があります。そのような場合は、操作を再試行する必要があります。

  • アプリケーションが接続文字列のPOOL_BOUNDARY=STATEMENTまたはPOOL_BOUNDARY=TRANSACTION属性とともにセッション・プーリングAPIを使用する場合、接続文字列の設定がプーリングAPIより優先されます。文またはトランザクションの境界ディレクティブを使用してセッションが解放され接続プールに戻され、セッション・リリースAPIコールはオーバーライドされます。

デフォルト

なし

値と例

STATEMENT: 文境界に暗黙的な接続プーリングを設定する場合

簡易接続文字列:
sales1-server:1521/sales.us.example.com:pooled?pool_boundary=statement
tnsnames.oraの接続記述子:
inst1=
    (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
        (CONNECT_DATA=
            (SERVICE_NAME=sales.us.example.com)
            (SERVER=POOLED)
            (POOL_BOUNDARY=STATEMENT))
    ) 

TRANSACTION: トランザクション境界に暗黙的な接続プーリングを設定する場合

簡易接続文字列:
sales1-server:1521/sales.us.example.com:pooled?pool_boundary=transaction
tnsnames.oraの接続記述子:
inst1=
    (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
        (CONNECT_DATA=
            (SERVICE_NAME=sales.us.example.com)
            (SERVER=POOLED)
            (POOL_BOUNDARY=TRANSACTION))
    ) 
次のtnsnames.oraの接続記述子の例は、様々なモードで暗黙的な接続プーリングを設定する方法を示しています。
inst1s=
    (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
        (CONNECT_DATA=
            (SERVICE_NAME=sales.us.example.com)
            (SERVER=POOLED)
            (POOL_BOUNDARY=STATEMENT))
    )
inst1t=
    (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcp)(HOST=proxy-server)(PORT=1522))
        (CONNECT_DATA=
            (SERVICE_NAME=sales.us.example.com)
            (SERVER=POOLED)
            (POOL_BOUNDARY=TRANSACTION))
    )

inst1sアプリケーション・インスタンスの場合、POOL_BOUNDARY=STATEMENTは暗黙的な接続プールが文境界で適用されることを指定します。HOST=sales-serverおよびPORT=1521は、データベース・サーバーを通じたDRCP接続を指定します。

inst1tアプリケーション・インスタンスの場合、POOL_BOUNDARY=TRANSACTIONは暗黙的な接続プーリングがトランザクション境界で適用されることを指定します。HOST=proxy-serverおよびPORT=1522は、Traffic DirectorモードのOracle Connection Managerを介したPRCP接続を指定します。

6.9.9 POOL_CONNECTION_CLASS

このパラメータを使用して、データベース常駐接続プーリング(DRCP)接続の接続クラスを明示的に指定します。

使用上のノート

このパラメータは、接続識別子のCONNECT_DATAセクションにある接続文字列に追加します。このパラメータが優先され、この接続文字列を使用してアプリケーションによってプログラム的に設定されたプロパティをオーバーライドします。


ServerPool =
 (DESCRIPTION=
   (ADDRESS=(PROTOCOL=tcp) (HOST=sales-svr) (PORT=1521))
   (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)(SERVER=POOLED)(POOL_CONNECTION_CLASS=value)))

関連トピック

6.9.10 POOL_NAME

POOL_NAMEパラメータは、マルチプール・データベース常駐接続プーリング(DRCP)接続のプール名を指定するために使用します。

用途

マルチプールDRCP内の各接続のプール名を指定します。これにより、クライアント・アプリケーションまたはサービスが特定のDRCPプールからの接続を確立できます。

この設定により、DRCPは適切なプール・サーバーとの接続をマークします。このパラメータを設定しない場合、接続は、デフォルト・プールがアクティブな場合にデフォルト・プールから確立されます。

使用上のノート

このパラメータは、tnsnames.oraファイルのCONNECT_DATAセクションで、またはコマンドライン接続文字列の一部として直接使用します。

クライアントがPOOL_NAME=pool_nameおよびSERVER=POOLED設定で接続すると、DRCPは、指定されたプール名のDRCPプールがデータベースに追加されているかどうかをチェックします:
  • プールが存在しない場合は、エラーが返されます。

  • 指定されたプール名のプールが存在し、アクティブである場合は、指定されたプール・サーバーから接続が確立されます。

  • 指定されたプール名のプールは存在するが非アクティブである場合、試行された新しい接続に対してエラーが返されます。接続がすでに確立されており、プールが非アクティブになっている場合、これらの接続は、stop_pool()プロシージャで使用されるdrainTimeパラメータ(DRCPプールを停止するためにコールされる)に基づいて処理されます。

データベース管理者は、PDBまたはCDBレベルでDRCPプールを追加します。静的データ・ディクショナリ・ビューDBA_CPOOL_INFOには、既存のDRCPプールに関する情報が含まれています。たとえば、次の問合せでは、使用可能なすべてのアクティブ・プールがリストされます。
SELECT * FROM DBA_CPOOL_INFO WHERE status='ACTIVE';

DRCPプール名

デフォルト

なし

(DESCRIPTION=
  (ADDRESS=
    (PROTOCOL=TCP)
    (HOST=sales-svr)
    (PORT=1522)
  )
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com)
    (SERVER=POOLED)
    (POOL_NAME=mypool)
  )
)

関連トピック

6.9.11 POOL_PURITY

このパラメータを使用して、前のセッション状態で保持されていない新しいセッションがアプリケーションに必要かどうか、または前のセッションを再利用するかどうかを指定します。

使用上のノート

Oracle Database 21c以降では、特定のプラガブル・データベース(PDB)に対してデータベース常駐接続プーリング(DRCP)を構成できます。このパラメータは、接続識別子のCONNECT_DATAセクションにある接続文字列に追加して、純正値の属性をDRCP接続リクエストに設定します。

このパラメータが優先され、この接続文字列を使用してアプリケーションによってプログラム的に設定されたプロパティをオーバーライドします。

NEW/SELF


ServerPool =
 (DESCRIPTION=
   (ADDRESS=(PROTOCOL=tcp) (HOST=sales-svr) (PORT=1521))
   (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)(SERVER=POOLED)(POOL_PURITY=value)))

関連トピック

6.9.12 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.13 SHARDING_KEY

SHARDING_KEYパラメータを使用して、データベース接続リクエストを適切なシャードにルーティングします。

用途

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

使用上のノート

このパラメータは、接続文字列またはtnsnames.oraファイルの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=(host=sales-east1)(port=1522))
    (ADDRESS=(host=sales-east2)(port=1522))
  )
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com)
    (SHARDING_KEY=40598230)
  )
 )

例6-9

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

6.9.14 SHARDING_KEY_ID

このパラメータを使用して、(シャーディング・キー値ではなく)シャーディング・キーの一意のSHA-256 IDを使用して、データベース接続リクエストをシャードにルーティングします。

用途

ハッシュを使用してシャーディング・キーを暗号化する場合は、このパラメータを使用して、シャーディング・キーに割り当てられた一意のSHA256ハッシュ値を指定します。データベース接続リクエストの間に指定された値に基づいて、リクエストは適切なシャードに直接ルーティングされます。

使用上のノート

このパラメータは、ディレクトリベースのシャーディングに使用します。

このパラメータは、接続文字列またはtnsnames.oraファイルのCONNECT_DATAセクションで設定します。

簡易テキスト形式のシャーディング・キーのSHA256ハッシュ値。この値は、RAWデータ型のみをサポートします。

値は一重引用符で囲む必要があります。

デフォルト

なし

net_service_name=
 (DESCRIPTION= 
   (ADDRESS_LIST=
    (ADDRESS=(host=sales-east1)(port=1522))
    (ADDRESS=(host=sales-east2)(port=1522))
   )
   (CONNECT_DATA=
     (SERVICE_NAME=sales.us.example.com)
     (SHARDING_KEY_ID='7E01C6D3F5AF3116668AFB6B2376DAA457165A34020617884C216F1ADAA25C7B')
   )
 )

6.9.15 SUPER_SHARDING_KEY

複合シャーディングの場合、SUPER_SHARDING_KEYパラメータを使用して、データベース・リクエストをシャードのコレクション(シャード領域)にルーティングします。

用途

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

使用上のノート

このパラメータは、接続文字列またはtnsnames.oraファイルの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=(host=sales-east1)(port=1522))
    (ADDRESS=(host=sales-east2)(port=1522))
  )
  (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=(host=sales-east1)(port=1522))
    (ADDRESS=(host=sales-east2)(port=1522))
  )
  (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.16 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.17 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.9.18 TUNNEL_SERVICE_NAME

このパラメータを設定して、クライアントCMANを識別するようにします。

用途

サーバーCMANリスナーは、リクエストされたクライアントIDへのトンネル接続を持つゲートウェイに接続をルーティングします。

使用上のノート

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


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

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

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

6.10.1 AUTHENTICATION_SERVICE

tnsnames.oraのパラメータAUTHENTICATION_SERVICEは、認証サービスを有効化するために使用します。

用途

認証サービスを有効にします。認証をインストールした場合は、AUTHENTICATION_SERVICENONEに設定するか、リストに示した認証方法のいずれかに設定することをお薦めします。

使用上のノート

  • このパラメータは、tnsnames.oraファイルのSECURITYセクションで使用するか、または接続文字列の一部として直接使用します。

    この値は、sqlnet.oraファイル内でも設定できます。AUTHENTICATION_SERVICEパラメータは、sqlnet.oraのパラメータSQLNET.AUTHENTICATION_SERVICESと同等です。接続文字列で指定したパラメータ値が優先されます。

    なお、複数の値を取得できるSQLNET.AUTHENTICATION_SERVICESパラメータとは異なり、AUTHENTICATION_SERVICEパラメータには1つの認証サービスのみを指定できます。

  • AUTHENTICATION_SERVICE=ALLを使用すると、サーバーにより、次の各方法を使用して認証が試みられます:

    1. ネットワーク層上のサービス、KerberosまたはRADIUSなどの、データベース外部のサービスに基づく認証。

    2. 管理オペレーティング・システム・グループ内のオペレーティング・システム・ユーザーのメンバーシップに基づく認証。グループ名はプラットフォーム固有です。この認証は管理接続にのみ適用されます。

    3. データベースによって実行される認証。

    4. ディレクトリ・サーバー内に保管された資格証明に基づく認証。

    サーバーはリストの上位に示された認証方法を使用しようとして失敗した場合、それより下位にリストされた認証方法にフォールバックします。

  • ローカル・データベース・パスワード認証(外部認証なし)を使用する場合は、クライアント・パフォーマンスの向上のためにAUTHENTICATION_SERVICE=NONEを設定します。

  • オペレーティング・システム認証では、SQL*Plusを使用した接続時にAS SYSDBA句を使用するなど、CDBルートに対して管理接続を試みたときに、任意のユーザー名およびパスワードを使用してデータベースにアクセスできます。

    CDBルートへの接続の例を次に示します。

    sqlplus ignored_username/ignored_password AS SYSDBA

    先行するコマンドを発行したオペレーティング・システム・ユーザーがすでに適切な管理オペレーティング・システム・グループのメンバーである場合、接続は成功します。これは、Oracleによって最初にグループ・メンバーシップが確認されることで、サーバーでユーザー名とパスワードが無視されるためです。

デフォルト

ALL

ノート:

Database Configuration Assistant (DBCA)とともにOracle Databaseをインストールすると、このパラメータはsqlnet.oraファイルでNTSに設定できます。

Oracle Net Servicesで使用可能な認証方式:

  • NONE: Microsoft Windowsオペレーティング・システム固有の認証を含め、認証方式を使用しません。AUTHENTICATION_SERVICENONEに設定すると、ユーザーは有効なユーザー名とパスワードを使用することでデータベースにアクセスできます。

  • ALL: すべての認証方式を採用します。

  • BEQ: Microsoft Windows以外のオペレーティング・システムに対する固有のオペレーティング・システム認証を採用します。

  • KERBEROS5: Kerberos認証を採用します。

  • RADIUS: リモート認証ダイアルイン・ユーザー・サービス(RADIUS)認証を採用します。

  • TCPS: TLS認証を採用します。

  • NTS: Microsoft Windowsオペレーティング・システム固有の認証を採用します。この場合、ユーザーは、Windowsネイティブ認証を使用してOS資格証明によりデータベース(CDBルート)に対して認証する必要があります。外部パスワードは必要ありません。NTSは、OSユーザーのグループ・メンバーシップを確認します。たとえば、OSユーザーがORA_DBAグループのメンバーである場合、このユーザーはSYSDBAとしてデータベースにログインできます。

    ノート:

    AUTHENTICATION_SERVICE=NTS設定では、NTS認証を使用してSQL*Plusを介して接続し、外部パスワード(SQL*Plus SYSTEM/passwordなど)を指定しようとすると、接続はORA-12638、00000、「adapter_nameの資格証明の取得に失敗しました %s」エラー・メッセージを表示して失敗します。通常のユーザー名およびパスワード・ベースの認証では、値をNONEに設定します。

net_service_name=
    (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcps)(HOST=sales-svr)(PORT=1521))
        (SECURITY=(AUTHENTICATION_SERVICE=KERBEROS5))
        (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
    )

6.10.2 AZURE_DB_APP_ID_URI

AZURE_DB_APP_ID_URIパラメータは、Microsoft Entra ID (旧称はMicrosoft Azure Active Directory)に登録されているOracle DatabaseインスタンスのアプリケーションID URIを指定するために使用します。

用途

Entra IDでデータベース・インスタンスを一意に識別する、アプリケーションID URIを指定します。

このURI値は、トークンベースの認証の間にデータベース・トークン・リクエストの認可スコープ(権限)を構成するために使用されます。
$Scope = "database_app_id_uri/scope"
たとえば:
$Scope = "https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3/session:scope:connect"

ここでは、アプリケーションID URI https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3はスコープの一部です。

使用上のノート

このパラメータは必須です。これは、AZURE_INTERACTIVEAZURE_SERVICE_PRINCIPALAZURE_MANAGED_IDENTITYおよびAZURE_DEVICE_CODE認証フローの場合はTOKEN_AUTHパラメータとともに設定する必要があります。

JDBCシン・クライアントの場合は、接続文字列、簡易接続構文、tnsnames.oraファイルまたはプロパティでこのパラメータを指定できます。シック・クライアント(OCIとInstant Client)と、ODP.NETコアおよび管理対象データベース・クライアントの場合は、接続文字列、sqlnet.oraファイル、簡易接続構文またはtnsnames.oraファイルでこのパラメータを指定できます。接続文字列で指定したパラメータ値が優先されます。

デフォルト

なし

Azureポータルにログインすることで、アプリケーションID URI値を取得できます。これは、「アプリの登録」 - 「概要」ページでアプリケーションID URI値としてリストされます。

なお、これは、Oracle Databaseセキュリティ・ガイドで示すように、Oracle DatabaseインスタンスをEntra IDテナンシに登録する間に指定した値です。

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=AZURE_INTERACTIVE)
          (AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=AZURE_INTERACTIVE
AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3
簡易接続文字列:
tcps:sales-svr:1521/sales.us.example.com?TOKEN_AUTH=AZURE_INTERACTIVE&AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3

これらの例では、CLIENT_IDTENANT_IDおよびREDIRECT_URIパラメータは指定されていません。CLIENT_IDおよびTENANT_IDは、シック・クライアント(OCIとInstant Client)を使用する場合の必須パラメータです。これらのパラメータは、JDBCシン、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこれらの値を自動的に取得できます。

6.10.3 CLIENT_CERTIFICATE

CLIENT_CERTIFICATEパラメータは、データベース・クライアント・アプリケーションを認証するクライアント証明書へのファイル・システム・パスを指定するために使用します。

用途

Microsoft Entra IDでデータベース・クライアント・アプリケーションを認証するクライアント証明書へのファイル・システム・パス。クライアント証明書はAzureクラウド・リソースのデジタル証明書であり、クライアントで、Entra IDアクセス・トークンのリクエスト時にこの証明書を資格証明として使用してそのアイデンティティが証明されます。これは、AZURE_SERVICE_PRINCIPALトークンベースの認証フローに使用されます。

ノート:

JDBCシン・クライアントと、ODP.NETコアおよび管理対象データベース・クライアントのみで(OCIとInstant Clientなどのシック・クライアントではない)、証明書ベースの認証がサポートされています。

使用上のノート

  • Entra IDクライアントでは、クライアントIDとクライアント・シークレットを使用してEntra ID OAuth2データベース・アクセス・トークンが取得されます。クライアント・シークレットが構成されていない場合は、クライアント・ドライバで、Azure SDK構成内のAZURE_CLIENT_CERTIFICATE_PATH環境変数からクライアント証明書のファイル・システム・パスが自動的に読み取られます。アプリケーション・クライアントがパブリックである場合は、それでクライアントIDのみが使用されます。

    サービス・プリンシパルでの証明書の使用の詳細は、Microsoftのドキュメントを参照してください。

  • このパラメータは省略可能です。SDKを構成していない場合にそれを設定できます。

    クライアント・ドライバがクライアント・シークレットで構成されている場合、このパラメータは無視されます。

  • このパラメータは、接続文字列、簡易接続構文またはtnsnames.oraファイルでTOKEN_AUTH=AZURE_SERVICE_PRINCIPAL設定とともに指定できます。接続文字列で指定したパラメータ値が優先されます。

  • 証明書ファイルでサポートされている形式は次のとおりです:

    • .pem (暗号化された電子メール)

    • .pfx (個人情報交換)

      この形式はパスワードで保護されています。そのファイルが.pfx形式の場合は、対応するAZURE_CLIENT_CERTIFICATE_PASSWORDパラメータも設定する必要があります。

  • この証明書は、OracleウォレットやAzure Key Vaultに格納できません。

    この証明書は、データベースにアクセスするための資格証明であるため、ファイル・システム上で保護する必要があります。

デフォルト

なし

Azure証明書ファイルへのフル・パス(ファイル名を含む)

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=AZURE_SERVICE_PRINCIPAL)
          (AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3)
          (CLIENT_CERTIFICATE=ORACLE_HOME/.azure/certificates/my-app.pem))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
簡易接続文字列:
tcps:sales-svr:1521/sales.us.example.com?TOKEN_AUTH=AZURE_SERVICE_PRINCIPAL&AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3&CLIENT_CERTIFICATE=ORACLE_HOME/.azure/certificates/my-app.pem

これらの例では、CLIENT_IDおよびTENANT_IDパラメータは指定されていません。これらのパラメータは、JDBCシン、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこれらの値を自動的に取得できます。

6.10.4 CLIENT_ID

CLIENT_IDパラメータは、データベース・クライアントのMicrosoft Entra IDアプリ登録のIDを指定するために使用します。

用途

Entra IDアプリ登録の間にデータベース・クライアントに割り当てた、クライアントIDを指定します。これはデータベース・サーバーのクライアントIDではないことに注意してください。このアプリケーションは、Azureトークンベースの認証の間にユーザーのアクセス・トークンの取得をリクエストするデータベース・クライアントです。

使用上のノート

このパラメータは、AZURE_INTERACTIVEAZURE_SERVICE_PRINCIPALAZURE_MANAGED_IDENTITYおよびAZURE_DEVICE_CODE認証フローの場合は、次のようにTOKEN_AUTHパラメータとともに使用します。

  • AZURE_MANAGED_IDENTITY認証フローは、Azure環境(Azure App ServiceやAzure仮想マシンなど)でホストされているクライアント側またはサーバー側アプリケーションに適用されます。

    JDBCシン・クライアントと、ODP.NETコアおよび管理対象データベース・クライアントの使用時は、クライアント・ドライバで、システム割り当てマネージドIDが使用されます。システム割り当てマネージドIDは、Entra IDによってアプリケーションに割り当てられる暗黙的なアイデンティティであり、デフォルトでAzure SDKで構成されます。オプションで、このパラメータを設定して明示的にユーザー割り当てマネージドIDのクライアントIDをアプリケーションに割り当てることができます。

    Azure SDKを使用しない、シック・クライアント(OCIとInstant Client)の使用時は、このパラメータを設定してユーザー割り当てマネージドIDをアプリケーションに割り当てる必要があります。

  • 他の認証フローの場合、JDBCシン・クライアントと、ODP.NETコアおよび管理対象データベース・クライアントの使用時は、クライアント・ドライバで、Azure SDK構成内でそのクライアントIDが検索されます。この場合、このパラメータはオプションです。

    OCIとInstant Clientの使用時は、このパラメータを設定する必要があります(TENANT_IDなどのその他の必須パラメータも設定する)。そうしないと、必須パラメータを構成するよう求めるエラー・メッセージが表示されます。

なお、このパラメータは、OCIとInstant Clientの場合は必須です。これは、JDBCシン・クライアントと、ODP.NETコアおよび管理対象データベース・クライアントの使用時のみオプションです。

JDBCシン・クライアントの場合は、接続文字列、簡易接続構文、tnsnames.oraファイルまたはプロパティでこのパラメータを指定できます。シック・クライアント(OCIとInstant Client)と、ODP.NETコアおよび管理対象データベース・クライアントの場合は、接続文字列、sqlnet.oraファイル、簡易接続構文またはtnsnames.oraファイルでこのパラメータを指定できます。接続文字列で指定したパラメータ値が優先されます。

デフォルト

なし

Azureポータルにログインすることで、クライアントID値を取得できます。これは、アプリケーション登録- 概要ページにアプリケーション(クライアント) ID値としてリストされます。

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=AZURE_INTERACTIVE)
          (AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3)
          (CLIENT_ID=123ab4cd-1a2b-1234-a12b-aa00123b2cd3)
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=AZURE_INTERACTIVE
AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3
CLIENT_ID=123ab4cd-1a2b-1234-a12b-aa00123b2cd3
簡易接続文字列:
tcps:sales-svr:1521/sales.us.example.com?TOKEN_AUTH=AZURE_INTERACTIVE&AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3&CLIENT_ID=123ab4cd-1a2b-1234-a12b-aa00123b2cd3

これらの例では、TENANT_IDおよびREDIRECT_URIパラメータは指定されていません。シック・クライアント(OCIとInstant Client)の使用時は、TENANT_IDは必須です。このパラメータは、JDBCシンと、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこの値を自動的に取得できます。

6.10.5 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.6 KERBEROS5_CC_NAME

tnsnames.oraのパラメータKERBEROS5_CC_NAMEは、Kerberos資格証明キャッシュ(CC)ファイルへの完全パス名を指定するために使用します。

用途

Kerberos CCファイルへの完全パス名を指定します。

使用上のノート

  • このパラメータは、tnsnames.oraファイルのSECURITYセクションで使用するか、または接続文字列の一部として直接使用します。

    この値は、sqlnet.oraファイル内でも設定できます。KERBEROS5_CC_NAMEパラメータは、sqlnet.oraのパラメータSQLNET.KERBEROS5_CC_NAMEと同等です。接続文字列で指定したパラメータ値が優先されます。

  • このパラメータは、KDCによって戻される資格証明を暗号化形式で格納するために複数のプリンシパルをサポートします。

    okinitoklistokdstryユーティリティを使用して、すべてのKerberosプリンシパルの暗号化キャッシュ・ファイルを構成できます。これらのユーティリティは、KERBEROS5_CC_NAMEを使用してキャッシュ・パスを指定した場合にのみ、暗号化されたキャッシュ・ファイルで使用できます。

  • KERBEROS5_CC_NAMEは、すべての追加Kerberosユーザーおよびプリンシパルに必須です。オプションで、KERBEROS5_PRINCIPALパラメータを設定して、資格証明キャッシュ(KERBEROS5_CC_NAMEで指定)に関連付けられたKerberosプリンシパル名を指定できます。KERBEROS5_PRINCIPALは、接続文字列、sqlnet.oraファイルまたはtnsnames.oraファイルで設定できます。

    Oracle Databaseでは、資格証明キャッシュから取得された値に対してKERBEROS5_PRINCIPALがチェックされます。2つの値が一致しない場合、ユーザーは認証されません。

値および例

KERBEROS5_CC_NAMEの値は、次の形式を使用して指定できます。
  • Oracleデータベースでディレクトリ・キャッシュが使用されている場合:
    • KERBEROS5_CC_NAME=complete_path_to_cc_file

      たとえば:

      KERBEROS5_CC_NAME=/tmp/kcache

      KERBEROS5_CC_NAME=D:\tmp\kcache

    • KERBEROS5_CC_NAME=FILE:complete_path_to_cc_ file

      たとえば:

      KERBEROS5_CC_NAME=FILE:/tmp/kcache

  • OracleデータベースでネイティブWindowsキャッシュが使用されている場合:
    • KERBEROS5_CC_NAME=OSMSFT://

    • KERBEROS5_CC_NAME=MSLSA:

    OSMSFTオプションとMSLSAオプションは、ファイルがMicrosoft Windows上にありMicrosoft Kerberos Key Distribution Center (KDC)を実行していることを示しています。

デフォルト

デフォルト値は、次のように、オペレーティング・システムによって異なります。
  • LinuxおよびUNIXオペレーティング・システムの場合: /tmp/krb5cc_userid

  • Microsoft Windowsオペレーティング・システムの場合: c:\tmp\krbcache

6.10.7 KERBEROS5_PRINCIPAL

KERBEROS5_PRINCIPALパラメータは、Kerberos資格証明キャッシュ(CC)ファイルに関連付けられたKerberosプリンシパル名を設定するために使用します。

用途

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

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

使用上のノート

このパラメータは、tnsnames.oraファイルのSECURITYセクションで使用するか、sqlnet.oraファイルで設定します。または、KERBEROS5_CC_NAMEパラメータとともに接続文字列にKERBEROS5_PRINCIPALを設定して、別のKerberosプリンシパルとして接続することもできます。

接続文字列で指定されたパラメータ値は、sqlnet.oraファイルまたはtnsnames.oraファイルで指定された値より優先されます。

各Kerberosプリンシパルには、有効な資格証明キャッシュが必要です。Oracle Databaseでは、資格証明キャッシュから取得された値に対してKERBEROS5_PRINCIPALがチェックされます。2つの値が一致しない場合、ユーザーは認証されません。

  • Kerberosプリンシパルkrbprinc1@example.comを使用して外部認証され、このプリンシパルの資格証明キャッシュが/tmp/krbuser1/krb.ccにあるユーザーkrbuser1の場合、tnsnames.oraファイルの接続記述子は次のようになります。
    
    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)))
    
    sqlnet.oraファイル:
    SQLNET.KERBEROS5_CC_NAME=/tmp/krbuser1/krb.cc
    KERBEROS5_PRINCIPAL=krbprinc1@example.com
  • Kerberosプリンシパルkrbprinc2@example.comを使用して外部認証され、このプリンシパルの資格証明キャッシュが/tmp/krbuser2/krb.ccにあるユーザーkrbuser2の場合、tnsnames.oraファイルの接続記述子は次のようになります。
    
    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)))
    
    sqlnet.oraファイル:
    SQLNET.KERBEROS5_CC_NAME=/tmp/krbuser2/krb.cc
    KERBEROS5_PRINCIPAL=krbprinc2@example.com

ノート:

/tmp/krbuser1/krb.ccファイルのプリンシパルにkrbprinc1@example.comの値が含まれていない場合、接続は失敗します。

6.10.8 OCI_COMPARTMENT

OCI_COMPARTMENTパラメータを使用して、クライアント接続のデータベース・インスタンスを保持するコンパートメントのOracle Cloud Identifier (OCID)を指定します。

用途

データベース・トークン・リクエストのスコープを定義します。この値は、指定されたコンパートメント内のみのデータベースへのトークン・リクエストを開始するようにデータベース・クライアントに指示します。このパラメータは、OCI Database as a Service (DBaaS)上でOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーのトークンベースの認証を構成する場合に使用します。

使用上のノート

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

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

このパラメータは、PASSWORD_AUTHおよびTOKEN_AUTH認証設定とともに使用できます。
  • PASSWORD_AUTH構成では、データベース・クライアントはIAMユーザー名およびIAMデータベース・パスワードを使用して、IAMデータベース・トークンのみをリクエストできます。

  • TOKEN_AUTH構成では、データベース・クライアントは、APIキー、委任トークン、セキュリティ・トークン、リソース・プリンシパルまたはインスタンス・プリンシパル資格証明を使用してIAMデータベース・トークンをリクエストできます。OCI_INTERACTIVEOCI_API_KEYOCI_INSTANCE_PRINCIPALOCI_DELEGATION_TOKENおよびOCI_RESOURCE_PRINCIPAL認証フローを使用して、データベース・クライアントがIAMシングル・サインオン(SSO)資格証明によりdb-tokenを直接取得できるようにすることもできます。

このパラメータは、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
簡易接続構文:
tcps:sales-svr:1521/sales.us.example.com?TOKEN_AUTH=OCI_INTERACTIVE&OCI_COMPARTMENT=ocid1.compartment..12345&OCI_DATABASE=ocid1.autonomousdatabase.oc1.12345

6.10.9 OCI_CONFIG_FILE

OCI_CONFIG_FILEパラメータは、Oracle Cloud Infrastructure (OCI)構成ファイルが格納されるディレクトリの場所を指定するために使用します。

用途

OCI構成ファイルのディレクトリの場所を指定します。このファイルには、OCI Identity and Access Management (IAM)ユーザーのクライアント接続情報がプロファイルの一部として格納されます。SDK、CLIおよびその他のOCIツールでは、IAMトークンベースの認証中に、このファイルを使用してIAMユーザー資格証明にアクセスします。

使用上のノート

これはオプションのパラメータです。このパラメータを設定しない場合、データベース・クライアントは、C:/user-profile/.oci/configにあるデフォルトの構成ファイルからユーザーのプロファイルを取得します。このパラメータを使用すると、デフォルトの構成ファイルの場所をオーバーライドできます。この場合、データベース・クライアントは、OCI_CONFIG_FILEで指定された場所でプロファイルを検索します。

このパラメータは、OCI_API_KEYおよびOCI_INTERACTIVE認証フローでは、TOKEN_AUTHパラメータとともに使用できます。
  • OCI_INTERACTIVE認証フローを使用するとき、このパラメータが設定されておらず、構成ファイルがデフォルトの場所にも存在しない場合、Oracle Databaseは、ユーザーが選択できるリージョンIDのリストを表示し、ユーザーにリージョンIDの指定を求めます。

  • OCI_API_KEY認証フローを使用するとき、このパラメータが設定されておらず、デフォルトの構成ファイルも存在しない場合は、ORA-50109エラー・メッセージが返されます。この場合、構成ファイルの場所を含めるようにこのパラメータを設定する必要があります。

JDBCシン・クライアントの場合、簡易接続構文またはtnsnames.ora接続文字列でこのパラメータを指定できます。ODP.NETコア・クラスおよびODP.NET管理対象ドライバ・クラスの場合は、sqlnet.oraファイル、簡易接続構文またはtnsnames.ora接続文字列でこのパラメータを指定できます。接続文字列で指定したパラメータ値が優先されます。

デフォルト

なし

OCI構成ファイルへのフル・パス(ファイル名を含む)

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_INTERACTIVE)
          (OCI_CONFIG_FILE=/home/dbuser1/config))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=OCI_INTERACTIVE
OCI_CONFIG_FILE=/home/dbuser1/config
簡易接続文字列:
tcps:sales-svr:1521/sales.us.example.com?TOKEN_AUTH=OCI_INTERACTIVE&OCI_CONFIG_FILE=/home/dbuser1/config

これらの例では、オプションのOCI_PROFILEパラメータが指定されていません。したがって、クライアントは指定された構成ファイル・ディレクトリからDEFAULTプロファイルを自動的に取得します。

6.10.10 OCI_DATABASE

OCI_DATABASEパラメータを使用して、クライアント接続でアクセスするデータベースのOracle Cloud Identifier (OCID)を指定します。

用途

データベース・トークン・リクエストのスコープを定義します。データベースOCID値は、コンパートメント内の指定されたデータベースへのトークン・リクエストを開始するようデータベース・クライアントに指示します。このパラメータは、OCI Database as a Service (DBaaS)上でOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーのトークンベースの認証を構成する場合に使用します。

使用上のノート

これはオプションのパラメータです。このパラメータを設定して、アクセスを特定のデータベースにのみ制限できます。OCI_DATABASEを設定する場合は、OCI_COMPARTMENTパラメータを使用して特定のコンパートメント識別子も指定する必要があります。

このパラメータは、PASSWORD_AUTHおよびTOKEN_AUTH認証設定とともに使用できます。
  • PASSWORD_AUTH構成では、データベース・クライアントはIAMユーザー名およびIAMデータベース・パスワードを使用して、IAMデータベース・トークンのみをリクエストできます。

  • TOKEN_AUTH構成では、データベース・クライアントは、APIキー、委任トークン、セキュリティ・トークン、リソース・プリンシパルまたはインスタンス・プリンシパル資格証明を使用してIAMデータベース・トークンをリクエストできます。OCI_INTERACTIVEOCI_API_KEYOCI_INSTANCE_PRINCIPALOCI_DELEGATION_TOKENおよびOCI_RESOURCE_PRINCIPAL認証フローを使用して、データベース・クライアントがIAMシングル・サインオン(SSO)資格証明によりdb-tokenを直接取得できるようにすることもできます。

このパラメータは、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
簡易接続構文:
tcps:sales-svr:1521/sales.us.example.com?TOKEN_AUTH=OCI_INTERACTIVE&OCI_COMPARTMENT=ocid1.compartment..12345&OCI_DATABASE=ocid1.autonomousdatabase.oc1.12345

6.10.11 OCI_IAM_URL

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

用途

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-region-1.example.comとして使用する場合、OCI_IAM_URL値は次のようになります。
https://auth.us-region-1.example.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.12 OCI_PROFILE

OCI_PROFILEパラメータは、Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーのプロファイル名を指定するために使用します。

用途

IAMユーザーのプロファイル名を指定します。このプロファイルは、OCI構成ファイルに格納されているクライアント接続情報であり、IAMトークンベースの認証中に使用されます。

使用上のノート

  • これはオプションのパラメータです。DEFAULTという名前のプロファイルが、構成ファイルですでに設定されています。データベース・クライアントは、OCI構成ファイル(デフォルトのC:/user-profile/.OCI/configディレクトリの場所またはOCI_CONFIG_FILEで指定された場所)からDEFAULTプロファイルを取得します。

  • このパラメータを指定して、構成ファイルで設定されたDEFAULTプロファイルをオーバーライドし、IAMユーザーに新しいプロファイル名を割り当てることができます。

    このパラメータが設定されておらず、プロファイルも構成ファイルに存在しない場合は、プロファイルが存在しないためにトークンベースの認証が失敗したことを示すエラー・メッセージが表示されます。

  • このパラメータは、OCI_API_KEYおよびOCI_INTERACTIVE認証フローでは、TOKEN_AUTHパラメータとともに使用できます。

    JDBCシン・クライアントの場合、簡易接続構文またはtnsnames.ora接続文字列でこのパラメータを指定できます。ODP.NETコア・クラスおよびODP.NET管理対象ドライバ・クラスの場合は、sqlnet.oraファイル、簡易接続構文またはtnsnames.ora接続文字列でこのパラメータを指定できます。接続文字列で指定したパラメータ値が優先されます。

  • DEFAULT: これは、特定のプロファイルで値が明示的に定義されておらず、プロファイルが構成ファイルに設定されているデフォルト・プロファイルから継承されることを意味します。

  • profile_name: 構成ファイルで設定されたDEFAULTプロファイルをオーバーライドするには、新しい構成プロファイル名(たとえば、ADMIN_USER)を指定します。

デフォルト

DEFAULT

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_INTERACTIVE)
          (OCI_CONFIG_FILE=/home/dbuser1/config))
          (OCI_PROFILE=ADMIN_USER))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=OCI_INTERACTIVE
OCI_CONFIG_FILE=/home/dbuser1/config
OCI_PROFILE=ADMIN_USER
簡易接続文字列:
tcps:sales-svr:1521/sales.us.example.com?TOKEN_AUTH=OCI_INTERACTIVE&OCI_CONFIG_FILE=/home/dbuser1/config&OCI_PROFILE=ADMIN_USER

6.10.13 OCI_TENANCY

OCI_TENANCYパラメータを使用して、ユーザーのテナンシのOracle Cloud Identifier (OCID)を指定します。

用途

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

使用上のノート

OCI Database as a Service (DBaaS)上でOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーのトークンベース認証を構成する場合に、このパラメータを必須の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.14 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.15 REDIRECT_URI

REDIRECT_URIパラメータは、Microsoft Entra IDクライアント・アプリケーション用に登録されているリダイレクトURIを指定するために使用します。

用途

Entra IDクライアント・アプリケーション用に登録されている、リダイレクトURI (または返信URL)を指定します。これは、AZURE_INTERACTIVEトークンベースの認証フローに使用されます。このURLは、Entra認証エンドポイントから認可コードを取得し、認可コードを受信するために使用するポートを決定します。

使用上のノート

これはオプションのパラメータです。このパラメータを指定しない場合は、最も一般的なリダイレクトURLである、デフォルト値http://localhostが使用されます。

このパラメータは、ご自分のユースケースに必要な場合にのみ指定します。認可サーバーでは、Oracle Databaseセキュリティ・ガイドで示しているように、クライアント・アプリケーション用のリダイレクトURIをAzureポータルで登録してある場合のみ、指定したアドレスにユーザーがリダイレクトされます。

このパラメータは、接続文字列、簡易接続構文またはtnsnames.oraファイルでTOKEN_AUTH=AZURE_INTERACTIVE設定とともに指定できます。接続文字列で指定したパラメータ値が優先されます。

デフォルト

すべてのクライアント用のデフォルトのリダイレクトURIは次のとおりです:
http://localhost

Azureポータルにログインすることで、リダイレクトURI値を取得できます。すべてのURI値は、Entra IDサービスの「アプリの登録」 - 「認証」ページでリダイレクトURIとしてリストされます。

なお、これは、データベース・クライアント・アプリケーションをEntra IDに登録する間に指定した値です。

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=AZURE_INTERACTIVE)
          (AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3)
          (REDIRECT_URI=http://localhost:1575))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
簡易接続文字列:
tcps:sales-svr:1521/sales.us.example.com?TOKEN_AUTH=AZURE_INTERACTIVE&AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3&REDIRECT_URI=http://localhost:1575

これらの例では、CLIENT_IDおよびTENANT_IDパラメータは指定されていません。CLIENT_IDおよびTENANT_IDは、シック・クライアント(OCIとInstant Client)を使用する場合の必須パラメータです。これらのパラメータは、JDBCシン、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこれらの値を自動的に取得できます。

6.10.16 SECURITY

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

用途

接続のセキュリティ・プロパティを変更します。

使用上のノート

このパラメータは、DESCRIPTIONパラメータの下に配置します。SECURITYでは、「セキュリティ・セクション」にリストされている追加パラメータが許可されます。

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.17 SSL_CERTIFICATE_ALIAS

sqlnet.oraまたはtnsnames.oraのパラメータSSL_CERTIFICATE_ALIASは、Transport Layer Security (TLS)接続で使用する証明書別名を指定するために使用します。

用途

Oracle Databaseウォレットにクライアントおよびサーバー証明書を格納するときに指定した、別名を指定します。

TLS接続を暗号化するときは、データベース・クライアントとデータベース・サーバーの両方で署名付き証明書を提供する必要があります。この証明書は、Oracle DatabaseウォレットまたはMicrosoft証明書ストア(MCS)に格納できます。使用できる証明書が複数ある場合は、ユーザーまたはアプリケーションの設定で、接続する特定の証明書を指定できます。この選択は、グラフィカル・ユーザー・インタフェース(GUI)を介してユーザーが手動で行うことも、サムプリントまたは別名を使用してアプリケーションによって自動的に行うこともできます。サムプリントまたは別名により、証明書を一意に識別できます。

このパラメータにより、指定された別名を使用して特定の証明書を自動的に選択するように、クライアントまたはサーバーに指示します。したがって、ユーザーは、ウォレットで使用可能なリストから正しいクライアント証明書を手動で選択する必要はありません。

使用上のノート

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

orapkiは、Oracle Databaseの証明書およびウォレットの管理に役立ちます。別名の値を取得するには、次のコマンドを実行します:
orapki wallet display -wallet <wallet directory> -pwd <wallet password> -complete

証明書別名

デフォルト

なし

  • tnsnames.oraファイル:

    net_service_name= 
      (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcps)(HOST=sales-svr)(PORT=1521)) 
        (SECURITY=(SSL_CERTIFICATE_ALIAS=my_cert))
      ) 
  • 簡易接続文字列:

    tcps://salesserver:1521/sales.us.example.com?SSL_CERTIFICATE_ALIAS=my_cert
  • sqlnet.oraファイル:

    SSL_CERTIFICATE_ALIAS=my_cert

6.10.18 SSL_CERTIFICATE_THUMBPRINT

sqlnet.oraまたはtnsnames.oraのパラメータSSL_CERTIFICATE_THUMBPRINTは、Transport Layer Security (TLS)接続で使用する証明書サムプリントを指定するために使用します。

用途

X509証明書のサムプリント署名を指定します。これらのサムプリントは証明書用に自動的に生成されます。

TLS接続を暗号化するときは、データベース・クライアントとデータベース・サーバーの両方で署名付き証明書を提供する必要があります。この証明書は、Oracle DatabaseウォレットまたはMicrosoft証明書ストア(MCS)に格納できます。使用できる証明書が複数ある場合は、ユーザーまたはアプリケーションの設定で、接続する特定の証明書を指定できます。この選択は、グラフィカル・ユーザー・インタフェース(GUI)を介してユーザーが手動で行うことも、サムプリントまたは別名を使用してアプリケーションによって自動的に行うこともできます。サムプリントまたは別名により、証明書を一意に識別できます。

このパラメータにより、指定されたサムプリントを使用して特定の証明書を自動的に選択するように、クライアントまたはサーバーに指示します。したがって、ユーザーが証明書ストア内の使用可能なリストから正しい証明書を手動で選択する必要はありません。

使用上のノート

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

クライアント証明書のSHA-1とSHA-256の両方のサムプリント情報を指定できます。

orapkiは、Oracle Databaseの証明書およびウォレットの管理に役立ちます。サムプリント値を取得するには、次のコマンドを実行します。
orapki wallet display -wallet <wallet directory> -pwd <wallet password> -complete

クライアント証明書のSHA-1またはSHA-256サムプリント(<Algorithm>:<Hash>形式)

たとえば:

SHA1:1B:11:01:5A:B1:2C:20:B2:12:34:3E:04:7B:83:47:DE:70:2E:4E:11
SHA256:B3:8A:5B:1A:03:63:83:92:2B:5D:E1:53:61:EE:03:94:0A:56:B4:56:41:7E:41:24:41:9B:88:EB:C6:1E:11:23

または

SHA1:1B11015AB12C20B212343E047B8347DE702E4E11
SHA256:B38A5B1A036383922B5DE15361EE03940A56B456417E4124419B88EBC61E1123

デフォルト

なし

  • tnsnames.oraファイル:

    net_service_name= 
      (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcps)(HOST=sales-svr)(PORT=1521)) 
        (SECURITY=(SSL_CERTIFICATE_THUMBPRINT=SHA1:1B:11:01:5A:B1:2C:20:B2:12:34:3E:04:7B:83:47:DE:70:2E:4E:11))
      ) 
    net_service_name= 
      (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcps)(HOST=sales-svr)(PORT=1521)) 
        (SECURITY=(SSL_CERTIFICATE_THUMBPRINT=SHA1:1B11015AB12C20B212343E047B8347DE702E4E11))
      ) 
  • 簡易接続文字列:

    tcps://salesserver:1521/sales.us.example.com?SSL_CERTIFICATE_THUMBPRINT=SHA1:1B11015AB12C20B212343E047B8347DE702E4E11
  • sqlnet.oraファイル:

    SSL_CERTIFICATE_THUMBPRINT=SHA256:B38A5B1A036383922B5DE15361EE03940A56B456417E4124419B88EBC61E1123

6.10.19 SSL_CLIENT_AUTHENTICATION

SSL_CLIENT_AUTHENTICATIONパラメータは、データベース・クライアントがTransport Layer Security (TLS)を使用して認証されるかどうかを指定するために使用します。

用途

TLS接続でクライアント認証を有効にします。接続は一方向または双方向(相互TLSまたはmTLS)です。

使用上のノート

TRUEに設定すると、双方向TLS接続が開始されます。クライアントとサーバー(リスナーを含む)の両方が相互に認証します。たとえば、サーバー構成(サーバー側sqlnet.ora)でこのパラメータをTRUEに設定すると、サーバーはクライアントの認証を試みます。リスナー構成(listener.ora)でTRUEに設定すると、リスナーはクライアントの認証を試みます。

FALSEに設定すると、クライアントのみがサーバーおよびリスナーを一方向TLS接続として認証します。たとえば、サーバー構成でこのパラメータをFALSEに設定すると、サーバーはクライアントを認証しません。リスナー構成でFALSEに設定すると、リスナーはクライアントを認証しません。

OPTIONALに設定すると、サーバーは次のように動作します。
  • クライアントが証明書を送信すると、クライアントの認証後に接続は双方向TLS接続として完了します。

  • クライアントが証明書を送信しないと、接続は一方向TLS接続として完了します。

このパラメータ設定が、サーバーまたはリスナー(片側)とクライアント(もう一方側)で一貫していることを確認します。そうしないと、接続が失敗する可能性があります。たとえば、サーバーまたはリスナー構成でクライアント認証を有効にする場合は、クライアント構成でも有効にする必要があります。

デフォルト

TRUE

  • TRUE | ON | YES | 1: mTLSを有効にします

  • FALSE | OFF | NO | 0: 一方向TLSを有効にします

  • OPTIONAL: TLSとmTLSの両方を有効にします

SSL_CLIENT_AUTHENTICATION=FALSE

6.10.20 SSL_DISABLE_WEAK_EC_CURVES

SSL_DISABLE_WEAK_EC_CURVESパラメータは、弱い楕円曲線暗号(ECC)曲線の使用を無効にするために使用します。

用途

キー長が256ビット未満の弱いECC曲線の使用を無効にします。このパラメータは、データベース・サーバー(sqlnet.ora)、クライアント(sqlnet.oraまたはtnsnames.oraの接続文字列)またはリスナー(listener.ora)で設定できます。

使用上のノート

デフォルトでは、このパラメータはFALSEに設定され、すべてのECC曲線を使用できるようになります。ECC曲線のキー・サイズが256ビット以上である、オラクル社で承認されている曲線のみを使用できるようにする場合は、このパラメータをTRUEに設定します。

TRUEに設定した場合は、次のECC曲線のみを使用できます:
  • secp256r1

  • secp384r1

  • secp521r1

  • x25519

  • TRUE | ON | YES | 1: ECC曲線のキー長が256ビット以上である、オラクル社で承認されているECC曲線のみを有効にします

  • FALSE | OFF | NO | 0: すべてのECC曲線を有効にします

デフォルト

FALSE

  • tnsnames.oraファイル:

    net_service_name= 
      (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcps)(HOST=sales-svr)(PORT=1521)) 
        (SECURITY=(SSL_DISABLE_WEAK_EC_CURVES=TRUE))
      ) 
  • sqlnet.oraファイルまたはlistener.oraファイル内:

    SSL_DISABLE_WEAK_EC_CURVES=TRUE

6.10.21 SSL_SERVER_CERT_DN

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

用途

DN一致用にデータベース・サーバーのDNを指定します。DN一致では、リスナー証明書とサーバー証明書に別のクライアント側チェックが追加され、証明書がクライアントが期待する正しいものであることを確認します。

使用上のノート

  • このパラメータをtnsnames.oraファイルまたは接続文字列に設定して、完全DN一致を強制します。部分DN一致の場合は、このパラメータを含めないでください。

  • SSL_SERVER_DN_MATCHパラメータがONに設定されている場合にのみ、SSL_SERVER_CERT_DNパラメータの値がリスナーおよびサーバー証明書の完全なDNと一致します。

    SSL_SERVER_CERT_DNに値を指定するために、クライアントは事前にサーバーDNを知っている必要があります。クライアントは、SSL_SERVER_CERT_DNを使用して、クライアントが接続するリスナーとデータベース・サーバーの両方の証明書DNをチェックします。

  • リスナーとサーバーの両方に同じ証明書を使用することをお薦めします。リスナーとサーバーで異なるDNを持つ別の証明書を使用すると、完全DN一致は失敗します。この場合、同じDNで新しい証明書を取得するか(完全DN一致用に)、DN一致の方法を変更する必要があります。

  • Oracle Database 23ai以降、セキュリティの向上のため、DN一致動作が拡張されています。完全DN一致では、SSL_SERVER_CERT_DNの完全なDNが、リスナー証明書とサーバー証明書の両方のDNと照合されます。以前のリリースでは、完全DN一致はサーバー証明書の完全なDNのみをチェックしていました。

    以前の弱いDN一致動作(つまり、サーバー証明書だけをチェックする)に戻す場合は、SSL_ALLOW_WEAK_DN_MATCH=TRUEを設定します。ただし、SSL_ALLOW_WEAK_DN_MATCHパラメータは非推奨であり、将来のリリースで削除されるため、注意が必要です。新しい証明書を取得するか、DN一致の方法を変更することをお薦めします。

データベース・サーバー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.22 SSL_SERVER_DN_MATCH

SSL_SERVER_DN_MATCHパラメータは、識別名(DN)一致によるサーバー側の証明書検証を強制的に実施するために使用します。

用途

DN一致によるサーバー側証明書の検証を強制します。

このDN一致パラメータをクライアントに追加する目的は、Transport Layer Security (TLS)接続のセキュリティをさらに向上させることです。TLS接続はクライアントに依存して、データベース・サーバー証明書が有効であり、信頼できるルート証明書によって署名されているかどうかを検証します。リスナー証明書とサーバー証明書のDN一致では、リスナー証明書とサーバー証明書に別のクライアント側チェックが追加され、証明書がクライアントが期待する正しいものであることを確認します。

使用上のノート

  • このパラメータをTRUEに設定すると、サーバーの証明書チェーンの検証に加えて、クライアントはDN一致を通じてリスナーとサーバーに対して別のチェックを実行します。

  • 部分DN一致または完全DN一致のいずれかを構成できます。

    部分DN一致を通じて、クライアントはHOSTパラメータ(クライアントのsqlnet.oraファイル内または接続文字列内にある)を、証明書DNまたは証明書のサブジェクト代替名(SAN)フィールドにあるホスト名と照合します。クライアントはリスナーとサーバーの両方の証明書に対して、次の順序でHOSTをチェックします:
    1. まず、クライアントはHOSTをリスナー証明書のDNにあるホスト名と比較します。たとえば、DNのCN部分です。
      "c=us,o=examplecorporation,cn=sales.us.example.com"
    2. リスナー証明書のDNで一致が見つからない場合、クライアントはHOSTをリスナー証明書のSANフィールドにあるホスト名と比較します。たとえば:
      "DNS:sales.us.example.com"

      リスナー証明書のSANフィールドに一致が見つからない場合、クライアントはサーバーへ接続しようとせず、接続は失敗します。

    3. リスナー証明書のチェックが成功すると、クライアントはサーバー証明書に対して同様のチェックを実行します。つまり、クライアントはまずHOSTをサーバー証明書のDNにあるホスト名と比較します。

    4. サーバー証明書のDNで一致が見つからない場合、クライアントはHOSTをサーバー証明書のSANフィールドにあるホスト名と比較します。

    完全DN一致を通じて、クライアントはSSL_SERVER_CERT_DNの完全なDNを、リスナー証明書とサーバー証明書の両方の証明書DNと照合します。完全DN一致を強制するには、tnsnames.oraファイルか接続文字列のSSL_SERVER_CERT_DNパラメータを使用して、完全なDNを指定します。

  • リスナーとサーバーの両方に同じ証明書を使用することをお薦めします。

    リスナーとサーバーで異なるDNを持つ別の証明書を使用すると、完全DN一致は失敗します。この場合、同じDNで新しい証明書を取得するか(完全DN一致用に)、DN一致の方法を変更する必要があります。部分DN一致を構成してあるときは、リスナー証明書とサーバー証明書の両方の証明書DNまたはSANフィールドにHOSTが見つからない場合にもそれが失敗する可能性があります。

  • Oracle Database 23aiより前は、サーバー証明書のホスト名とSANに対してのみ、部分的なDN一致がチェックされていました。一致が見つからなかった場合は、ホスト名とSANとともに、SERVICE_NAMEパラメータもチェックされました。同様に、完全DN一致は、サーバー証明書内の完全なDNに対してのみチェックされました。

    以前の弱いDN一致動作(つまり、サーバー証明書だけをチェックし、DNの部分一致のサービス名チェックを許可する)に戻す場合は、SSL_ALLOW_WEAK_DN_MATCH=TRUEを設定します。ただし、SSL_ALLOW_WEAK_DN_MATCHパラメータは非推奨であり、将来のリリースで削除されるため、注意が必要です。新しい証明書を取得するか、DN一致の方法を変更することをお薦めします。

デフォルト

NO

  • YES | ON | TRUE | 1:

    部分または完全DN一致を強制します。DNがリスナー証明書とサーバー証明書の両方のホスト名またはSANと一致する場合、接続は成功します。DNがサーバーまたはリスナー証明書のホスト名またはSANと一致しない場合、接続は失敗します。

  • NO | OFF | FALSE | 0:

    DN一致は強制しません。DNがサーバーまたはリスナー証明書のホスト名またはSANと一致しない場合、接続は成功しますが、sqlnet.logファイルにエラーが記録されます。

SSL_SERVER_DN_MATCH=YES

6.10.23 SSL_VERSION

SSL_VERSIONパラメータは、接続に使用する有効なTransport Layer Security (TLS)バージョンを定義するために使用します。

用途

データベース・サーバーが通信するシステムで実行する必要があるTLSのバージョンを定義します。デフォルトでは、データベース・サーバーとクライアントは最も強いセキュリティ・プロトコルをネゴシエートします。セキュリティ要件によって特定のプロトコル・バージョンの使用が強制されていないかぎり、このパラメータを変更することはお薦めしません。

使用上のノート

  • クライアント、リスナーおよびデータベース・サーバーは、互換性のあるバージョンを使用する必要があります。このパラメータは、よりセキュアなTLSプロトコルの使用を強制し、古いTLSプロトコルのみで動作するクライアントを許可しないように、必要な場合にのみ変更してください。現行のデフォルトでは、複数のセキュリティ・コンプライアンス要件に必要なバージョンであるTLS 1.3を使用しています。TLS 1.2を指定する必要がある場合は、よりセキュアな接続を可能にするためにTLS 1.3も含めます。

  • sqlnet.oralistener.oraおよびcman.oraに加えて、このパラメータをtnsnames.oraSECURITYセクションで指定することも、接続文字列の一部として直接指定することもできます。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。

  • Database 23ai以降、Transport Layer Securityプロトコル・バージョン1.0および1.1の使用はサポートされなくなりました。

    データベース・クライアントおよびサーバーは最も安全なプロトコルおよび暗号アルゴリズムの使用をネゴシエートするため、ほとんどの場合、この変更による影響はありません。ただし、TLS 1.0または1.1が指定されている場合は、これを削除してデータベース・サーバーおよびクライアントが最も安全なプロトコルを選択できるようにするか、プロトコルにTLS 1.2またはTLS 1.3、あるいはその両方を指定する必要があります。最も安全な最新のプロトコルを使用することをお薦めします。そのプロトコルはTLS 1.3で、Oracle Database 23aiで導入されています。

  • Oracle Database 23ai以降では、データベースのサーバーとクライアントの接続でSecure Socket Layer v3プロトコル(SSLv3)がサポートされなくなり、sqlnet.oraのパラメータADD_SSLV3_TO_DEFAULTが削除されました。

    データベースのサーバーとクライアント間の接続を保護する上で、SSLv3はあまり安全ではないプロトコルです。SSLv3を使用するかわりに、サーバーとクライアント間で共通する最もセキュアなプロトコルを、データベースのサーバーとクライアントがネゴシエートできるようになります。Oracle Database 23aiには、証明書ベースのネットワーク暗号化用にTLS 1.2およびTLS 1.3プロトコルが用意されています。

  • SSL_VERSIONundeterminedに設定すると、最もセキュアなTLSプロトコル・バージョンが使用されます。特定の接続の接続文字列のSSL_VERSION=undetermined設定を使用して、sqlnet.oralistener.oraまたはcman.oraファイルで構成されたSSL_VERSION値をオーバーライドすることもできます。

  • SSL_VERSIONに値を設定しないと、サポートされているすべてのTLSプロトコル・バージョンが、最もセキュアなバージョンから試行されます。これは通常、最も一般的な構成で、TLSネゴシエーション中に最も強力なプロトコルが選択されます。

undetermined | TLSv1.2 | TLSv1.3

デフォルト

undetermined

構文と例

  • 単一のプロトコル・バージョンを指定するには:
    SSL_VERSION=TLS_protocol_version
    たとえば:
    SSL_VERSION=TLSv1.3
  • 複数のプロトコル・バージョンを指定するには、カッコで囲んだカンマ区切りの値文字列を使用します。
    SSL_VERSION=(TLS_protocol_version1,TLS_protocol_version2)
    たとえば:
    SSL_VERSION=(TLSv1.2,TLSv1.3)

    ノート:

    tnsnames.oraファイルまたは接続文字列の一部としてこのパラメータを指定するとき、プロトコル・バージョンをカッコで囲まないでください。そうしないと、設定が正しく解析されません。たとえば:

    net_service_name=
      (DESCRIPTION=
         (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver)(PORT=1522))
         (SECURITY=(SSL_VERSION=TLSv1.2,TLSv1.3)) 
      )
    

6.10.24 TENANT_ID

TENANT_IDパラメータは、Microsoft Entra IDテナントのIDを指定するために使用します。

用途

Entra IDアプリケーションが登録されている、Entra IDテナントのIDを指定します。これは、Entra ID内のデータベース・インスタンスを一意に識別する、AzureテナンシIDです。

使用上のノート

  • このパラメータは、AZURE_INTERACTIVEAZURE_SERVICE_PRINCIPALAZURE_MANAGED_IDENTITYおよびAZURE_DEVICE_CODEトークンベースの認証フローでは、TOKEN_AUTHパラメータとともに使用します。

  • このパラメータは、シック・クライアント(OCIとInstant Client)の場合は必須です。これは、JDBCシン・クライアントと、ODP.NETコアおよび管理対象データベース・クライアントの使用時はオプションです。

    JDBCシン・クライアントと、ODP.NETコアおよび管理対象データベース・クライアントの使用時は、Azure SDKを構成してあれば、クライアント・ドライバでSDK構成内のテナントIDが自動的に検索されます。SDKを構成していない場合は、このパラメータを設定する必要があります。

    OCIとInstant Client(それらではAzure SDKは使用されない)の使用時は、このパラメータを設定する必要があります(CLIENT_IDなどのその他の必須パラメータも設定する)。そうしないと、必須パラメータを構成するよう求めるエラー・メッセージが表示されます。

  • JDBCシン・クライアントの場合は、接続文字列、簡易接続構文、tnsnames.oraファイルまたはプロパティでこのパラメータを指定できます。シック・クライアント(OCIとInstant Client)と、ODP.NETコアおよび管理対象データベース・クライアントの場合は、接続文字列、sqlnet.oraファイル、簡易接続構文またはtnsnames.oraファイルでこのパラメータを指定できます。接続文字列で指定したパラメータ値が優先されます。

デフォルト

なし

Azureポータルにログインすることで、テナントID値を取得できます。これは、テナント・プロパティ・ページにテナントIDとしてリストされます。

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=AZURE_INTERACTIVE)
          (AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3)
          (TENANT_ID=1a123ab1-a1b1-1a2b-a1b2-a12bcdab0123)
          (REDIRECT_URI=http://localhost:1575))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=AZURE_INTERACTIVE
AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3
TENANT_ID=1a123ab1-a1b1-1a2b-a1b2-a12bcdab0123
REDIRECT_URI=http://localhost:1575
簡易接続文字列:
tcps:sales-svr:1521/sales.us.example.com?TOKEN_AUTH=AZURE_INTERACTIVE&AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3&TENANT_ID=1a123ab1-a1b1-1a2b-a1b2-a12bcdab0123&REDIRECT_URI=http://localhost:1575

これらの例では、CLIENT_IDパラメータは指定されていません。シック・クライアント(OCIとInstant Client)の使用時は、CLIENT_IDが必要です。このパラメータは、JDBCシンと、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこの値を自動的に取得できます。

6.10.25 TOKEN_AUTH

TOKEN_AUTHパラメータは、Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザー、またはMicrosoft Entra ID (旧称はMicrosoft Azure Active Directory)のMicrosoft Azureユーザーについて、トークンベースの認証を構成するために使用します。

用途

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

この設定では、/ (スラッシュ)ログインを使用すると、Oracle Databaseクライアントによって、トークン・ファイルが検索されるか、シングル・サインオン(SSO)資格証明を使用してトークンが直接取得されます。

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

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

  • OCI 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に設定する必要があります。

  • ファイルの場所を使用してトークンをOracle Databaseに送信する:

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

  • クライアントAPIを使用してトークンをOracle Databaseに送信する:

    クライアント・アプリケーションが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ユーザーがデータベース・スキーマにマップされている場合(排他的または共有)は、ログインが完了します。

  • Oracle Databaseクライアントを使用してトークンをOracle Databaseに直接送信する:

    この機能は、JDBCシン・クライアントと、ODP.NETコアおよび管理対象データベース・クライアントを使用する環境で使用できます。JDBCシン・クライアントの場合は、tnsnames.oraまたは簡易接続の接続文字列でこれを設定できます。ODP.NETコアおよび管理対象データベース・クライアントの場合は、sqlnet.oratnsnames.oraまたは簡易接続の接続文字列でこれを設定できます。接続文字列で指定したパラメータ値が優先されます。

    この機能の構成については、JDBCシン・クライアントの場合はOracle Database JDBC開発者ガイドを参照し、ODP.NETクライアントの場合はOracle Data Provider for .NET開発者ガイドを参照してください。

    次の認証フローにより、データベース・クライアントでIAM SSO資格証明を使用してdb-tokenを直接取得できます。

    • OCI対話型:

      TOKEN_AUTH=OCI_INTERACTIVEは、OCI対話型フローを指定します。これは、Webブラウザを使用して対話形式でトークン・リクエストを認証し、クライアント側のWebアプリケーションまたはデスクトップ・アプリケーションに役立ちます。

      データベース・クライアントは、デフォルト・ディレクトリまたはOCI_CONFIG_FILEパラメータで指定された場所に格納されているOCI構成ファイルから、デフォルト・プロファイル(DEFAULTという名前)を取得します。有効なリージョンのリストに対してユーザーのリージョンを検証した後、クライアントはWebブラウザでユーザーに対して認証リクエストを起動し、IAMのユーザー名とパスワード、およびIAMで必要な追加のファクタを使用してログインするように求めます。

      オプションで、OCI_PROFILEパラメータを指定して、構成ファイルで設定されたDEFAULTプロファイルをオーバーライドできます。

    • OCI APIキー:

      TOKEN_AUTH=OCI_API_KEYは、OCI APIキー・フローを指定します。これは、IAMで認識されるAPIキーを使用して、IAMでトークン・リクエストを認証します。

      データベース・クライアントは、デフォルトの構成ファイル・ディレクトリまたはOCI_CONFIG_FILEで指定された場所にあるOCI構成ファイル内のユーザーのDEFAULTプロファイルから、APIキーのファイル・システムの場所を読み取ります。

      オプションで、OCI_PROFILEパラメータを指定して、構成ファイルで設定されたユーザーのDEFAULTプロファイルをオーバーライドできます。

    • OCIインスタンス・プリンシパル:

      TOKEN_AUTH=OCI_INSTANCE_PRINCIPALは、OCIインスタンス・プリンシパル・フローを指定します。これは、OCIコンピュート・インスタンスで実行されているアプリケーションに対するOCIインスタンス・プリンシパルとして、IAMでトークン・リクエストを認証します。

    • OCI委任トークン:

      TOKEN_AUTH=OCI_DELEGATION_TOKENは、OCI委任トークン・フローを指定します。これは、OCI Cloud Shellで実行されているアプリケーションに対する委任トークンを使用して、IAMでトークン・リクエストを認証します。

    • OCIリソース・プリンシパル:

      TOKEN_AUTH=OCI_RESOURCE_PRINCIPALは、OCIリソース・プリンシパル・フローを指定します。これは、(OCIファンクションとして)コンテナで実行されているアプリケーションに対するOCIリソース・プリンシパルとして、IAMでトークン・リクエストを認証します。

    • デフォルト:

      TOKEN_AUTH=OCI_DEFAULTは、デフォルト・フローを指定します。この設定では、クライアント・ドライバは事前定義済の環境変数をSDK構成から読み取り、各認証フローを順番に評価し、アプリケーションが実行されている環境に基づいて最も適切なフローを割り当てます。

      ドライバでOCI_DEFAULTを使用して各認証フローが評価される順序:
      1. OCI APIキー: ドライバは最初に、OCI_CONFIG_FILEパラメータで指定された場所またはデフォルトの場所($HOME/.oci/config)に構成ファイルが存在するかどうかをチェックします。その後ドライバは、OCI_PROFILEパラメータで構成された名前またはデフォルト名(DEFAULT)と一致するプロファイルがファイルに含まれているかどうかをチェックします。最後に、ドライバはプロファイルがkey_fileという名前のエントリで構成されているかどうかをチェックします。これらのチェックがすべて成功した場合は、APIキーを使用した認証が使用されます。これらのチェックのいずれかが失敗した場合、ドライバは次のステップに進みます。

      2. OCI委任トークン: ドライバは最初に、OCI_CONFIG_FILE環境変数が設定されているかどうかをチェックします。その後ドライバは、OCI_CONFIG_FILE環境変数によって構成された場所にファイルが存在するかどうかをチェックします。次にドライバは、DEFAULTというプロファイルがファイルに含まれているかどうかをチェックします。最後に、ドライバはプロファイルがdelegation_token_fileというエントリで構成されているかどうかをチェックします。これらのチェックがすべて成功した場合は、委任トークンを使用した認証が使用されます。これらのチェックのいずれかが失敗した場合、ドライバは次のステップに進みます。

      3. OCIリソース・プリンシパル: ドライバは最初に、OCI_RESOURCE_PRINCIPAL_VERSION環境変数が設定されているかどうかをチェックします。その後ドライバは、変数がバージョン2.2または1.1に設定されているかどうかをチェックします。変数が2.2に設定されている場合、ドライバは、OCI_RESOURCE_PRINCIPAL_PRIVATE_PEMOCI_RESOURCE_PRINCIPAL_RPSTおよびOCI_RESOURCE_PRINCIPAL_REGION環境変数も設定されているかどうかをチェックします。それ以外の場合で、変数が1.1に設定されている場合、ドライバは、OCI_RESOURCE_PRINCIPAL_RPT_ENDPOINT環境変数も設定されているかどうかをチェックします。バージョンに必要な変数が設定されている場合は、リソース・プリンシパルとしての認証が使用されます。変数が設定されていない場合、ドライバは次のステップに進みます。

      4. OCIインスタンス・プリンシパル: ドライバは、インスタンス・メタデータ・サービスに証明書をリクエストします。サービスのベースURLはhttp://169.254.169.254/opc/v2/です。ただし、v2サービス・リクエストが失敗した場合は、http://169.254.169.254/opc/v1/のフォールバックURLが使用されます。v2またはv1サービスへのリクエストが成功した場合は、インスタンス・プリンシパルとしての認証が使用されます。リクエストが失敗した場合、ドライバは次のステップに進みます。

      5. 認証フローを使用して認証できないことを示すエラーがドライバからレポートされます。

    OCIデータベース・トークン・ポリシーによって、コンパートメント内の特定のデータベース(1つまたは複数)にのみアクセスするよう制限されている場合、これらすべての認証フローに対してOCI_DATABASEおよびOCI_COMPARTMENTパラメータも指定する必要があります。

ノート:

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

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

IAMのデフォルト設定

なし

表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および秘密キーを自動的に取得します。

TOKEN_AUTH=OCI_INTERACTIVE

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_INTERACTIVE))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=OCI_INTERACTIVE

これらの例では、オプションのOCI_CONFIGおよびOCI_PROFILEパラメータは指定されていません。したがって、クライアントはデフォルトの構成ファイル・ディレクトリからDEFAULTプロファイルを自動的に取得します。

TOKEN_AUTH=OCI_API_KEY

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_API_KEY))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=OCI_API_KEY

これらの例では、オプションのOCI_CONFIGおよびOCI_PROFILEパラメータは指定されていません。したがって、クライアントはデフォルトの構成ファイル・ディレクトリに格納されているDEFAULTプロファイルからAPIキー値を自動的に取得します。

TOKEN_AUTH=OCI_INSTANCE_PRINCIPAL

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_INSTANCE_PRINCIPAL))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=OCI_INSTANCE_PRINCIPAL

TOKEN_AUTH=OCI_DELEGATION_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_DELEGATION_TOKEN))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=OCI_DELEGATION_TOKEN

TOKEN_AUTH=OCI_RESOURCE_PRINCIPAL

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_RESOURCE_PRINCIPAL))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=OCI_RESOURCE_PRINCIPAL

Entra IDに関する使用上のノート

  • Entra IDアクセス・トークン:

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

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

  • トークンベースの認証に必要な設定:

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

  • ファイルの場所を使用してトークンをOracle Databaseに送信する:

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

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

  • クライアントAPIを使用してトークンをOracle Databaseに送信する:

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

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

  • 一般的なAzureトークンベースの認証のプロセス:

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

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

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

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

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

  • Oracle Databaseクライアントを使用してトークンをOracle Databaseに直接送信する:

    この機能は、JDBCシン・クライアント、シック・クライアント(Oracle Call Interface (OCI)とOracle Database Instant Client、JDBCシック、ODP.NET管理対象外またはPythonシック)、ODP.NETコア・クラスまたはODP.NET管理対象ドライバ・クラスを使用する環境で使用できます。

    シック・クライアントの場合は、対話型フローのみがサポートされています(TOKEN_AUTH=AZURE_INTERACTIVE)。

    JDBCシン・クライアントの場合は、tnsnames.oraまたは簡易接続の接続文字列でこれを設定できます。シック・クライアントと、ODP.NETコアおよび管理対象データベース・クライアントの場合は、tnsnames.ora、接続文字列またはsqlnet.oraファイルでこれを設定できます(REDIRECT_URIおよびCLIENT_CERTIFICATEを除く)。接続文字列で指定したパラメータ値が優先されます。

    JDBCクライアントの場合のこの機能の構成方法については、Oracle Database JDBC開発者ガイドを参照してください。ODP.NETクライアントの場合は、Oracle Data Provider for .NET開発者ガイドを参照してください。OCIとInstant Clientの場合は、Oracle Call Interface開発者ガイドを参照してください。

    次の認証フローにより、データベース・クライアントでAzure SSO資格証明を使用してアクセス・トークンを直接取得できます。

    • Azure OAuth2対話型:

      TOKEN_AUTH=AZURE_INTERACTIVEは、Azure OAuth2対話型フローを指定します。これは、Webブラウザを使用して対話形式でトークン・リクエストを認証し、クライアント側のWebアプリケーションまたはデスクトップ・アプリケーションに役立ちます。

      Azureユーザーが/@connect_identifierを使用してログインすると(また、TOKEN_AUTHAZURE_INTERACTIVEに設定されている場合)、TOKEN_AUTH=AZURE_INTERACTIVE設定と/@connect_identifierにより、データベース・クライアント・ドライバが、Entra IDからアクセス・トークンを直接取得するように指示されます。これは、ツール(SQLclなど)にログインしている、各自の環境でブラウザ・ウィンドウを開いて認証を行うことができる人間のユーザー向けです。

      ユーザーがまだログインしていない場合は、データベース・クライアントにより、ユーザーに対して認証リクエストが開始され、Azureユーザー名およびパスワードを使用してログインするよう求められます(ユーザーがWebアプリケーションを使用している場合はダイアログ・ボックスが表示され、ユーザーがコマンドライン・シェルで作業している場合はプロンプトが表示されます)。Azureアカウントにログインすると、ユーザーはクライアント・アプリケーション(その登録されているリダイレクトURI)にリダイレクトされます。

      オプションで、デフォルトのリダイレクトURI値(http://localhost)をオーバーライドする必要がある場合にはREDIRECT_URIパラメータを設定できます。

      トークン・リクエストの認可スコープを構成するには、AZURE_DB_APP_ID_URIパラメータを設定する必要があります。

      CLIENT_IDパラメータとTENANT_IDパラメータは、JDBCシンと、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこれらの値を自動的に取得できます。CLIENT_IDTENANT_IDは、OCIとInstant Clientの場合は必須パラメータです。

    • Azureサービス・プリンシパル:

      TOKEN_AUTH=AZURE_SERVICE_PRINCIPALは、Azureサービス・プリンシパル・フローを指定します。これは、クライアント・シークレットまたはクライアント証明書のいずれかを使用してトークン・リクエストをサービス・プリンシパルとして認証し、サーバー側アプリケーション(マイクロサービスやバックエンド・アプリケーションなど)に役立ちます。

      トークン・リクエストの認可スコープを構成するには、AZURE_DB_APP_ID_URIパラメータを設定する必要があります。

      CLIENT_IDTENANT_IDおよびCLIENT_CERTIFICATEパラメータは、JDBCシンと、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこれらの値を自動的に取得できます。CLIENT_IDTENANT_IDは、OCIとInstant Clientの場合は必須パラメータです。

    • AzureマネージドID:

      TOKEN_AUTH=AZURE_MANAGED_IDENTITYは、Azure管理対象アイデンティティ・フローを指定します。これは、AzureマネージドIDとしてEntra IDを使用してトークン・リクエストを認証します。Azure環境(Azure App ServiceまたはAzure仮想マシンなど)でホストされているクライアント側またはサーバー側アプリケーションに役立ちます。

      トークン・リクエストの認可スコープを構成するには、AZURE_DB_APP_ID_URIパラメータを設定する必要があります。

      CLIENT_IDパラメータを設定すると、トークン・リクエストを認証するためのユーザー割り当てマネージドIDを構成できます。このパラメータは、JDBCシンと、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこの値を自動的に取得できます。CLIENT_IDは、OCIとInstant Clientの場合は必須です。

    • Azureデバイス・コード:

      TOKEN_AUTH=AZURE_DEVICE_CODEは、Azureデバイス・コード・フローを指定します。これは、対話形式でトークン・リクエストを認証します。人間のユーザー用、またはブラウザ・サポート(たとえば、SQLclなどのコマンドライン環境)がないか制限されているプラットフォーム上で実行されているクライアント側アプリケーション用です。

      データベース・クライアントは、ツールの標準出力を介してデバイス・コードとEntra IDログインURLを表示し、ユーザーに、ブラウザをサポートしているデバイス(携帯電話やラップトップなど)にデバイス・コード、Azureユーザー名およびAzureパスワードを入力するよう求めます。Webブラウザでのログインが完了すると、Azure SDKによってクライアントにアクセス・トークンが返されます。クライアントは、アクセス・トークンをデータベースに送信し、データベース・ユーザー・セッションを認可します。

      トークン・リクエストの認可スコープを構成するには、AZURE_DB_APP_ID_URIパラメータを設定する必要があります。

      CLIENT_IDパラメータとTENANT_IDパラメータは、JDBCシンと、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこれらの値を自動的に取得できます。CLIENT_IDTENANT_IDは、OCIとInstant Clientの場合は必須パラメータです。

      ノート:

      Azureポータルで、Entra IDアプリケーションに対してAzure OAuth2対話型フローおよびAzureデバイス・コード・フローを明示的に有効にする必要があります。これを行うには、アプリケーション登録- 認証ページの「詳細設定」で、パブリック・クライアント・フローの許可「はい」に設定します。
    • デフォルト:

      TOKEN_AUTH=AZURE_DEFAULTは、デフォルト・フローを指定します。この設定では、クライアント・ドライバは事前定義済の環境変数をSDK構成から読み取り、各認証フローを順番に評価し、アプリケーションが実行されている環境に基づいて最も適切なフローを割り当てます。

      ドライバでAZURE_DEFAULTを使用して各認証フローが評価される順序:
      1. クライアント・シークレット資格証明を使用したAzureサービス・プリンシパル: ドライバは、クライアントIDとクライアント・シークレットがドライバへのパラメータとして、またはSDK環境変数として構成されているかどうかをチェックします。どちらも構成されている場合、ドライバはクライアント・シークレットを使用したサービス・プリンシパルとして認証します。そうでない場合、ドライバは次のステップに進みます。

      2. クライアント証明書資格証明を使用したAzureサービス・プリンシパル: ドライバは、クライアントIDとクライアント証明書がドライバへのパラメータとして、またはSDK環境変数として構成されているかどうかをチェックします。どちらも構成されている場合、ドライバはクライアント証明書を使用したサービス・プリンシパルとして認証します。そうでない場合、ドライバは次のステップに進みます。

      3. Azureユーザー名資格証明: ドライバは、クライアントID、ユーザー名およびパスワードがドライバへのパラメータとして、またはSDK環境変数として構成されているかどうかをチェックします。すべてが構成されている場合、ドライバはユーザー名およびパスワードを使用したサービス・プリンシパルとして認証します。そうでない場合、ドライバは次のステップに進みます。

      4. Azure管理対象アイデンティティ: ドライバは、MSI_ENDPOINTまたはIDENTITY_ENDPOINT環境変数が設定されているかどうかをチェックします。いずれかが設定されている場合、ドライバは構成されたエンドポイントを使用して管理対象アイデンティティとして認証します。どちらも設定されていない場合、ドライバはAZURE_TENANT_IDおよびAZURE_FEDERATED_TOKEN_FILE環境変数が設定されているかどうかをチェックします。どちらも設定されている場合、ドライバは構成されたトークン・ファイルを使用して管理対象アイデンティティとして認証します。どちらも設定されていない場合、ドライバはAzure Instance Metadata Service (IMDS)エンドポイントにアクセス・トークンをリクエストします。リクエストが成功した場合、ドライバは管理対象アイデンティティとして認証します。そうでない場合、ドライバは次のステップに進みます。

      5. Visual Studio資格証明: ODP.NETコア・クラスおよびODP.NET管理対象ドライバ・クラスの場合、ドライバはVisual Studio資格証明認証フローを介してAzureユーザーをさらに評価します。ドライバは、TENANT_IDパラメータまたはAZURE_TENANT_ID環境変数が設定されているか、およびAzureユーザーがVisual Studioにログインしているかをチェックします。両方のチェックが成功した場合は、Visual Studio資格証明による認証が使用されます。そうでない場合、ドライバは次のステップに進みます。

      6. 認証フローを使用して認証できないことを示すエラーがドライバからレポートされます。

Entra IDの場合のデフォルト設定

なし

表6-2 Entra IDの場合の値と例

TOKEN_AUTH=OAUTH

  • トークン・ファイルがtokenTOKEN_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ファイルを自動的に検索し、アクセス・トークンを取得します。

  • トークン・ファイル名がtokenTOKEN_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ファイルからアクセス・トークンを取得します。

TOKEN_AUTH=AZURE_INTERACTIVE

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=AZURE_INTERACTIVE)
          (AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3)
          (REDIRECT_URI=http://localhost:1575))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=AZURE_INTERACTIVE
AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3
REDIRECT_URI=http://localhost:1575

これらの例では、CLIENT_IDおよびTENANT_IDパラメータは指定されていません。これらのパラメータは、JDBCシン、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこれらの値を自動的に取得できます。シック・クライアント(OCIとInstant Client)では、これらのパラメータを指定する必要があります。

TOKEN_AUTH=AZURE_SERVICE_PRINCIPAL

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=AZURE_SERVICE_PRINCIPAL)
          (AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=AZURE_SERVICE_PRINCIPAL
AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3

これらの例では、CLIENT_IDTENANT_IDおよびCLIENT_CERTIFICATEパラメータは指定されていません。CLIENT_IDTENANT_IDは、JDBCシンと、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこれらの値を自動的に取得できます。シック・クライアント(OCIとInstant Client)では、これらのパラメータを指定する必要があります。

TOKEN_AUTH=AZURE_MANAGED_IDENTITY

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=AZURE_MANAGED_IDENTITY)
          (AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=AZURE_MANAGED_IDENTITY
AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3

これらの例では、CLIENT_IDパラメータは指定されていません。このパラメータは、JDBCシンと、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこの値を自動的に取得できます。シック・クライアント(OCIとInstant Client)では、このパラメータを指定する必要があります。

TOKEN_AUTH=AZURE_DEVICE_CODE

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=AZURE_DEVICE_CODE)
          (AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
     ) 
sqlnet.oraファイル:
SSL_SERVER_DN_MATCH=TRUE
TOKEN_AUTH=AZURE_DEVICE_CODE
AZURE_DB_APP_ID_URI=https://application.example.com/123ab4cd-1a2b-1234-a12b-aa00123b2cd3

これらの例では、CLIENT_IDおよびTENANT_IDパラメータは指定されていません。これらのパラメータは、JDBCシン、ODP.NETコアおよび管理対象データベース・クライアントの場合はオプションです。それらではAzure SDK構成からこれらの値を自動的に取得できます。シック・クライアント(OCIとInstant Client)では、これらのパラメータを指定する必要があります。

6.10.26 TOKEN_LOCATION

TOKEN_LOCATIONパラメータは、トークンベースの認証のためにトークン・ファイルが格納されるディレクトリの場所を指定するために使用します。

用途

トークン・ファイル・ディレクトリの場所を指定します。このパラメータは、Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザー、またはMicrosoft Entra IDのMicrosoft Azureユーザーに対してトークンベースの認証を構成する間に使用します。データベース・クライアントはこの場所からトークンを取得し、データベース・サーバーに送信します。Entra IDの場合は、ディレクトリの場所とともにトークン・ファイル名を指定することもできます。

このパラメータは、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を送信します。

IAMのデフォルト設定

  • Linuxの場合:

    /home/username/.oci/db-token

  • Windowsの場合:

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

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

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

    たとえば、Windowsにおけるデフォルトのトークンの場所ディレクトリは次のとおりです。

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

IAMの値と例

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"

Entra IDに関する使用上のノート

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

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

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

Entra IDの場合のデフォルト設定

なし

Entra IDの場合の値と例

トークン・ファイルが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.10.27 WALLET_LOCATION

tnsnames.oraファイルのWALLET_LOCATIONパラメータは、Oracleウォレットが格納される別の場所を指定するために使用します。

用途

このパラメータは、接続固有のウォレットを示します。このパラメータは、様々な接続がクライアント側で異なるウォレットを使用する必要がある場合に使用できます。

使用上のノート

  • パラメータWALLET_LOCATIONは、Oracle DatabaseサーバーのOracle Database 23aiでの使用は非推奨です。Oracle Databaseクライアントおよびリスナーでの使用は非推奨ではありません。

    Oracle Databaseサーバーの場合、WALLET_LOCATIONを使用するかわりに、WALLET_ROOTシステム・パラメータを使用することをお薦めします。

  • 接続文字列パラメータMY_WALLET_DIRECTORYは、Oracle Database 23aiで非推奨になりました。

    接続文字列でWALLET_LOCATIONを使用して、sqlnet.ora WALLET_LOCATION設定をオーバーライドすることをお薦めします。sqlnet.oraおよびtnsnames.oraで同じパラメータを使用できるように、接続文字列のWALLET_LOCATIONが更新されました。この変更により、覚えておく必要があるパラメータが簡素化されます。MY_WALLET_DIRECTORYのかわりにWALLET_LOCATIONを使用するようにクライアント接続文字列を変更することをお薦めします。

    tnsnames.oraWALLET_LOCATIONを使用すると、特定のtnsnames.oraサービスのsqlnet.ora内のWALLET_LOCATIONがオーバーライドされます。tnsnames.ora WALLET_LOCATION設定を使用すると、クライアント接続で、証明書を使用する個別のTLS接続を確立できます。これにより、クライアントは異なるTLS証明書を使用した複数のTLS接続を同じクライアント・プロセスで開始します。

  • 複数のTLSセッションに依存する必要がある単一のクライアントが存在する場合は、このパラメータを使用します。たとえば、複数のプラガブル・データベース(PDB)へのアクセスが必要なクライアントが、それぞれ独自のID (証明書)を持つ場合です。この機能により、クライアントが各PDBの正しいIDに接続するように構成できます。構成が完了すると、マルチスレッド・クライアントは、同時TLSセッションで異なる証明書を持つ複数のウォレットにアクセスできます。

デフォルト

なし


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=(wallet_location=/home/oracle/wallets/databases)))

ssl_certs1 = 
    (DESCRIPTION = 
       (ADDRESS=(PROTOCOL=tcps)(HOST=shobeen.us.example.com) (PORT=1750))
       (CONNECT_DATA=(SID=sales_pdb)) 
       (SECURITY=(WALLET_LOCATION=/oracle/wallets/certificates/sales_cert))
     )
ssl_certs2 = 
    (DESCRIPTION = 
       (ADDRESS=(PROTOCOL=tcps)(HOST=shobeen.us.example.com) (PORT=1750))
       (CONNECT_DATA=(SID=marketing_pdb)) 
       (SECURITY=(WALLET_LOCATION=/oracle/wallets/certificates/marketing_cert))
     )

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

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

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

6.11.1 CONNECT_TIMEOUT

tnsnames.oraのパラメータCONNECT_TIMEOUTは、クライアントがデータベース・インスタンスへのOracle Net接続を確立するまでの時間(ミリ秒、秒または分)を指定するために使用します。

用途

msまたはmsec (ミリ秒)、sec (秒)またはmin (分)で、クライアントがOracle DatabaseへのOracle Net接続を確立するためのタイムアウト期間を指定します。

使用上のノート

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

  • 単位が指定されない場合、デフォルトの単位はsecです。

    値とユニットの間のスペースあり、なしにかかわらず、様々なタイムアウトを受け入れます。たとえば:

    CONNECT_TIMEOUT=10 ms

    または

    CONNECT_TIMEOUT=10ms
  • CONNECT_TIMEOUTで指定されたタイムアウト間隔は、TCP接続のタイムアウト間隔のスーパーセットです。これには、リクエストされたサービスを提供するデータベース・インスタンスに接続される時間が含まれていますが、TCP接続の期間は含まれません。

    タイムアウト間隔は、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

tnsnames.oraパラメータRETRY_COUNTを使用して、接続試行を終了するまでに、ADDRESSリストが横断する回数を指定します。

用途

接続試行を終了するまでに、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

tnsnames.oraパラメータRETRY_DELAYを使用して、接続再試行間の遅延を指定します。

用途

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

使用上のノート

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

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

  • 単位が指定されない場合、デフォルトの単位はsecです。

    値と単位の間のスペースの有無にかかわらず構成できます。たとえば:

    RETRY_DELAY=800 ms

    または

    RETRY_DELAY=800ms

net_service_name=
(DESCRIPTION_LIST=
  (DESCRIPTION=
   (CONNECT_TIMEOUT=10)(RETRY_COUNT=3)(RETRY_DELAY=800ms)
   (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=myhost1)(PORT=1521))
    (ADDRESS=(PROTOCOL=tcp)(HOST=myhost2)(PORT=1521)))
   (CONNECT_DATA=(SERVICE_NAME=example1.com)))
  (DESCRIPTION=
   (CONNECT_TIMEOUT=60)(RETRY_COUNT=1)(RETRY_DELAY=5sec)
   (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=myhost3)(PORT=1521))
    (ADDRESS=(PROTOCOL=tcp)(HOST=myhost4)(PORT=1521)))
   (CONNECT_DATA=(SERVICE_NAME=example2.com))))

関連トピック

6.11.4 TRANSPORT_CONNECT_TIMEOUT

tnsnames.oraパラメータTRANSPORT_CONNECT_TIMEOUTを使用して、トランスポート接続タイムアウト期間をミリ秒、秒または分単位で指定します。

用途

トランスポート接続タイムアウト時間をmsまたはmsec (ミリ秒)、sec (秒)またはmin (分)で指定して、クライアントがOracle DatabaseへのOracle Net接続を確立できるようにします。

使用上のノート

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

  • デフォルト値は60 secです。単位が指定されない場合、デフォルトの単位はsecです。

    値とユニットの間のスペースあり、なしにかかわらず、様々なタイムアウトを受け入れます。

    TRANSPORT_CONNECT_TIMEOUT=10 ms

    または

    TRANSPORT_CONNECT_TIMEOUT=10ms
  • タイムアウト間隔は、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またはmsec (ミリ秒)、sec (秒)、min (分)またはhr (時間)で、データベース・クライアントまたはサーバーが接続の確立後にピアからのデータを待機する期間を指定します。ピアは、指定の時間間隔内にデータを送信する必要があります。

使用上のノート

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

  • 測定単位を指定してない場合、デフォルトの単位はsecになります。

    値とユニットの間のスペースの有無にかかわらず、期間を受け入れます。たとえば:

    RECV_TIMEOUT=10 ms

    または

    RECV_TIMEOUT=10ms
  • このパラメータをクライアントに設定すると、サーバー・ホストの停止や、サーバーのビジー状態またはネットワーク接続の問題が原因で、受信操作が無期限または長期間待機状態のままになることがなくなります。

    指定した時間内にクライアントが応答データを受信しない場合、クライアントは「ORA-12535: TNS: 操作はタイムアウトしました。」および「ORA-12609: TNS: 受信タイムアウトが発生しました」というメッセージをsqlnet.logファイルにロギングします。

デフォルト値

なし

最小値

1 ms

許容範囲

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

net_service_name=
 (DESCRIPTION= 
  (CONNECT_TIMEOUT=10ms)(RETRY_COUNT=3)(RECV_TIMEOUT=10ms)
  (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.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)))

関連トピック