6 tnsnames.oraファイル内のローカル・ネーミング・パラメータ
tnsnames.ora
構成ファイル内で指定するOracle Netサービス名ローカル・ネーミング・パラメータについて学習します。
- ローカル・ネーミング・パラメータの概要
tnsnames.ora
ファイルは、ローカル・ネーミング・メソッドの場合に接続記述子にマップされるネットワーク・サービス名を含む構成ファイルです。 - tnsnames.oraの一般的な構文
この例では、tnsnames.ora
ファイルの一般的な構文を確認できます。 - tnsnames.oraファイルでの複数記述子の使用
この例では、複数のアドレスがある2つの接続記述子について確認できます。 - tnsnames.oraファイル内の複数のアドレス・リスト
tnsnames.ora
ファイルでは、それぞれ固有の特性を備えている、複数のアドレス・リストがある複数の接続記述子がサポートされています。tnsnames.ora
ファイル内で複数のアドレス・リストを構成する方法について学習します。 - Oracle Connection Managerによる接続時フェイルオーバーとクライアント・ロード・バランシング
tnsnames.ora
の接続記述子にOracle Connection Manager用のプロトコル・アドレスが2つ以上ある場合は、そのファイルに接続時フェイルオーバー用とロード・バランシング用のパラメータを含めることもできます。 - 接続記述子の説明
接続記述子の指定には、DESCRIPTION
パラメータを使用します。複数の接続記述子の識別には、DESCRIPTION_LIST
パラメータを使用します。 - プロトコル・アドレス
tnsnames.ora
ファイルのプロトコル・アドレス・セクションでは、リスナー・プロトコル・アドレスを指定します。 - 説明のオプション・パラメータ
DESCRIPTION
パラメータに接続記述子コンテナを構成するには、これらのパラメータを使用します。 - 接続データ・セクション
プロトコル・アドレスを使用してネットワーク接続を構成する方法について説明します。 - セキュリティ・セクション
tnsnames.ora
ファイルのセキュリティ・セクションでは、Oracleセキュリティ機能で使用するこれらのセキュリティ関連パラメータを指定します。 - タイムアウト・パラメータ
tnsnames.ora
ファイルのタイムアウト・セクションでは、TNS接続文字列を介してタイムアウトと再試行の構成を指定できます。 - 圧縮パラメータ
tnsnames.ora
ファイルの圧縮セクションでは、圧縮を有効にし、圧縮レベルを指定できます。これらのパラメータは、接続文字列のDESCRIPTION
レベルで設定できます。
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
ファイルを確認する順序は次のとおりです:
-
環境変数
TNS_ADMIN
で指定されたディレクトリ -
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
ディレクトリ)
-
-
読取り専用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)))
この構文は、次のように動作します。
-
クライアントは、次のように示される最初のOracle Connection Managerのプロトコル・アドレスに接続します。
(ADDRESS=(PROTOCOL=tcp)(HOST=host1)(PORT=1630))
-
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)))
-
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
この構文は、次のように動作します。
-
クライアントはランダムに
ADDRESS_LIST
を選択します。選択したADDRESS_LIST
に障害がある場合は別のアドレスにフェイルオーバーします。これは、LOAD_BALANCE
パラメータとFAILOVER
パラメータをon
に設定した場合に示されます。 -
ADDRESS_LIST
が選択されると、クライアントは、まず、そのADDRESS_LIST
に指定されているポート1630を使用するOracle Connection Managerプロトコル・アドレスを使用してOracle Connection Managerに接続します。 -
次に、Oracle Connection Managerは、
ADDRESS_LIST
に指定されているプロトコル・アドレスを使用してデータベース・サービスに接続します。
6.6 接続記述子の説明
接続記述子の指定には、DESCRIPTION
パラメータを使用します。複数の接続記述子の識別には、DESCRIPTION_LIST
パラメータを使用します。
- DESCRIPTION_LIST
tnsnames.ora
ファイルのDESCRIPTION_LIST
ネットワーク・パラメータは、特定のネット・サービス名について接続記述子のリストを定義します。 - DESCRIPTION
tnsnames.oraファイルのDESCRIPTIONネットワーク・パラメータは、接続記述子のコンテナを指定します。
6.6.1 DESCRIPTION_LIST
tnsnames.ora
ファイルのDESCRIPTION_LIST
ネットワーク・パラメータは、特定のネット・サービス名について接続記述子のリストを定義します。
用途
特定のネット・サービス名に関する接続記述子のリストを定義します。
例6-6 例
net_service_name=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=...)
(CONNECT_DATA=(SERVICE_NAME=sales.example.com)))
(DESCRIPTION=
親トピック: 接続記述子の説明
6.6.2 DESCRIPTION
tnsnames.oraファイルのDESCRIPTIONネットワーク・パラメータは、接続記述子のコンテナを指定します。
用途
接続記述子のコンテナを指定します。
使用上のノート
複数のDESCRIPTION
パラメータを使用する場合、それらをDESCRIPTION_LIST
パラメータの下に置きます。
例6-7 例
net_service_name=
(DESCRIPTION=
(ADDRESS=...)
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))
親トピック: 接続記述子の説明
6.7 プロトコル・アドレス
tnsnames.ora
ファイルのプロトコル・アドレス・セクションでは、リスナー・プロトコル・アドレスを指定します。
リスナーのプロトコル・アドレスが1つのみの場合、ADDRESS
パラメータを使用します。アドレスが複数ある場合は、ADDRESS_LIST
パラメータを使用します。
- ADDRESS
ADDRESS
ネットワーク・パラメータはtnsnames.ora
ファイル内にあり、1つのリスナーについてADDRESS_LIST
またはDESCRIPTION
パラメータの下のプロトコル・アドレスを指定します。 - HTTPS_PROXY
tnsnames.ora
のパラメータHTTPS_PROXY
を使用して、Transport Layer Security (TLS)クライアント接続をトンネリングするためのHTTPプロキシ・ホスト名を指定する方法を学習します。 - HTTPS_PROXY_PORT
tnsnames.ora
のパラメータHTTPS_PROXY_PORT
を使用して、Transport Layer Security (TLS)クライアント接続をトンネリングするためのフォワードHTTPプロキシ・ホスト名を指定する方法を学習します。 - ADDRESS_LIST
ADDRESS_LIST
ネットワーク・パラメータは、プロトコル・アドレスの数を指定します。
6.7.1 ADDRESS
ADDRESS
ネットワーク・パラメータはtnsnames.ora
ファイル内にあり、1つのリスナーについてADDRESS_LIST
またはDESCRIPTION
パラメータの下のプロトコル・アドレスを指定します。
用途
単一のリスナー・プロトコル・アドレスを指定します。
使用上のノート
このパラメータは、ADDRESS_LIST
パラメータまたはDESCRIPTION
パラメータの下に配置します。
例
net_service_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-svr)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
親トピック: プロトコル・アドレス
6.7.2 HTTPS_PROXY
tnsnames.ora
のパラメータHTTPS_PROXY
を使用して、Transport Layer Security (TLS)クライアント接続をトンネリングするためのHTTPプロキシ・ホスト名を指定する方法を学習します。
用途
トンネリングTLSクライアント接続のHTTPプロキシ・ホスト名を指定します。
使用上のノート
クライアントはHTTP CONNECTメソッドを使用して、フォワードHTTPプロキシ上にセキュアな接続をトンネリングできます。これにより、クライアント側のファイアウォールにアウトバウンド・ポートをオープンする必要がなくなるため、パブリック・クラウド・データベースにアクセスしやすくなります。このパラメータはPROTOCOL=TCPS
が指定されている接続記述子に対してのみ適用可能です。これは、インターネットのホストに接続する必要があるイントラネット・ユーザーのWebブラウザ設定に似ています。クライアントの問合せによっては、フォワードWebプロキシ読取りタイムアウトをより高い値に増やしてください。そうしないと、フォワードWebプロキシがクライアントからのリクエストがないものと見なして接続をクローズします。
正常に接続できるかどうかは、特定のプロキシ構成によって決まります。データ転送のパフォーマンスは、プロキシの能力によって異なります。パフォーマンスが重要な本番環境ではこの機能を使用しないことをお薦めします。
組織のネットワーク構成およびセキュリティ・ポリシーによっては、HTTPプロキシのtnsnames.ora
を構成するのみでは不十分な場合があります。たとえば、一部のネットワークではHTTPプロキシのユーザー名とパスワードが必要となります。
18cより前のバージョンのOracle Clientでは、HTTPプロキシを介した接続はサポートされません。
HTTPプロキシを介さずに、関連するポートを使用してoraclecloud.com
ドメイン内のホストへのアウトバウンド接続を開くには、ネットワーク管理者に連絡してください。たとえば、ポート1522です。
デフォルト
なし
値
インターネットのホストへのアウトバウンド接続を行えるHTTPプロキシ・ホスト名。
例
HTTPS_PROXY=www-proxy.example.com
親トピック: プロトコル・アドレス
6.7.3 HTTPS_PROXY_PORT
tnsnames.ora
のパラメータHTTPS_PROXY_PORT
を使用して、Transport Layer Security (TLS)クライアント接続をトンネリングするためのフォワードHTTPプロキシ・ホスト・ポートを指定する方法を学習します。
用途
トンネリングTLSクライアント接続のフォワードHTTPプロキシ・ホスト・ポートを指定します。
使用上のノート
HTTP CONNECTメソッドを受信するHTTPプロキシ・ホスト・ポートをフォワードします。 このパラメータはHTTPS_PROXY_PORT
とともに使用してください。この値が有効になるのは、SQLNET.USE_HTTPS_PROXY=1
がsqlnet.ora
に設定されている場合のみです。
デフォルト
なし
値
ポート番号
例
HTTPS_PROXY_PORT=80
親トピック: プロトコル・アドレス
6.7.4 ADDRESS_LIST
ADDRESS_LIST
ネットワーク・パラメータは、プロトコル・アドレスの数を指定します。
用途
プロトコル・アドレスのリストを定義します。
使用上のノート
リスナーのプロトコル・アドレスが1つのみの場合、ADDRESS_LIST
は不要です。
このパラメータは、DESCRIPTION
パラメータまたはDESCRIPTION_LIST
パラメータの下に配置します。
例
net_service_name=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))
親トピック: プロトコル・アドレス
6.8 説明のオプション・パラメータ
DESCRIPTION
パラメータに接続記述子コンテナを構成するには、これらのパラメータを使用します。
- ENABLE
サポートされているTCPトランスポートでキープアライブ機能を有効にするには、ENABLE
パラメータを使用します。 - FAILOVER
複数のプロトコル・アドレスに対して接続時フェイルオーバーを有効または無効にするには、FAILOVER
パラメータを使用します。 - LOAD_BALANCE
複数のプロトコル・アドレスに対してクライアント・ロード・バランシングを有効または無効にするには、LOAD_BALANCE
パラメータを使用します。 - RECV_BUF_SIZE
RECV_BUF_SIZE
パラメータは、セッションの受信操作用バッファ領域を指定するために使用します。 - SDU
セッション・データ・ユニット(SDU)のサイズを構成するには、SDU
パラメータを使用します。 - SEND_BUF_SIZE
SEND_BUF_SIZE
パラメータは、セッションの送信操作用バッファ領域を指定するために使用します。 - SOURCE_ROUTE
複数のプロトコル・アドレスを介したルーティングを有効にするには、SOURCE_ROUTE
パラメータを使用します。 - TYPE_OF_SERVICE
Oracle Rdbデータベースに使用するサービスのタイプを指定するには、TYPE_OF_SERVICE
パラメータを使用します。
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 FAILOVER
複数のプロトコル・アドレスに対して接続時フェイルオーバーを有効または無効にするには、FAILOVER
パラメータを使用します。
用途
複数のプロトコル・アドレスに対して接続時フェイルオーバーを使用可能または使用禁止にします。
使用上のノート
このパラメータをon
、yes
またはtrue
に設定すると、Oracle Netは、接続時に最初のプロトコル・アドレスに障害があった場合に別のアドレスにフェイルオーバーします。このパラメータをoff
、no
またはfalse
に設定すると、Oracle Netは、1つのプロトコル・アドレスを使用します。
このパラメータは、DESCRIPTION_LIST
パラメータ、DESCRIPTION
パラメータまたはADDRESS_LIST
パラメータの下に配置します。
ノート:
listener.ora
のSID_LIST_
listener_name
セクションには、GLOBAL_DBNAME
パラメータを設定しないでください。静的に構成されたグローバル・データベース名では、接続時フェイルオーバーは無効になります。
デフォルト
on
: DESCRIPTION_LIST
、DESCRIPTION
およびADDRESS_LIST
パラメータの場合
値
-
yes
|on
|true
-
no
|off
|false
例
net_service_name=
(DESCRIPTION=
(FAILOVER=on)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))
親トピック: 説明のオプション・パラメータ
6.8.3 LOAD_BALANCE
複数のプロトコル・アドレスに対してクライアント・ロード・バランシングを有効または無効にするには、LOAD_BALANCE
パラメータを使用します。
用途
複数のプロトコル・アドレスに対してクライアント・ロード・バランシングを使用可能または使用禁止にします。
使用上のノート
このパラメータをon
、yes
またはtrue
に設定すると、Oracle Netは、無作為の順序でアドレスのリストを進み、各種リスナーまたはOracle Connection Managerのプロトコル・アドレスにかかる負荷を均衡化します。パラメータをoff
、no
またはfalse
に設定すると、Oracle Netでは、接続に成功するまでプロトコル・アドレスを順番に試します。
このパラメータは、DESCRIPTION_LIST
パラメータ、DESCRIPTION
パラメータまたはADDRESS_LIST
パラメータの下に配置します。
デフォルト
on
: DESCRIPTION_LIST
の場合
値
-
yes
|on
|true
-
no
|off
|false
例
net_service_name=
(DESCRIPTION=
(LOAD_BALANCE=on)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
親トピック: 説明のオプション・パラメータ
6.8.4 RECV_BUF_SIZE
RECV_BUF_SIZE
バラメータは、セッションの受信操作用バッファ領域を指定するために使用します。
用途
セッションの受信操作に使用するバッファ領域をバイト数で指定します。
使用上のノート
このパラメータは、TCP/IP、TLS付きTCP/IP、SDPの各プロトコルでサポートされます。
このパラメータは、DESCRIPTION
パラメータの下またはプロトコル・アドレスの最後に配置します。
クライアントの接続記述子にこのパラメータを設定すると、クライアント側のsqlnet.ora
ファイルのRECV_BUF_SIZEパラメータが上書きされます。
ノート:
オペレーティング・システムによっては、他のプロトコルもこのパラメータをサポートしている場合があります。他のプロトコルの詳細は、オペレーティング・システムのマニュアルを参照してください。
デフォルト
このパラメータのデフォルト値は、オペレーティング・システムによって異なります。Linux 2.6オペレーティング・システムのデフォルト値は87380バイトです。
例
net_service_name
= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521) (RECV_BUF_SIZE=11784)) (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521) (RECV_BUF_SIZE=11784)) (CONNECT_DATA= (SERVICE_NAME=sales.us.example.com)))net_service_name
= (DESCRIPTION= (RECV_BUF_SIZE=11784) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=hr1-server)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=hr2-server)(PORT=1521))) (CONNECT_DATA= (SERVICE_NAME=hr.us.example.com)))
親トピック: 説明のオプション・パラメータ
6.8.5 SDU
セッション・データ・ユニット(SDU)のサイズを構成するには、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.6 SEND_BUF_SIZE
SEND_BUF_SIZE
バラメータは、セッションの送信操作用バッファ領域を指定するために使用します。
用途
セッションの送信操作に使用するバッファ領域をバイト数で指定します。
使用上のノート
このパラメータは、TCP/IP、TLS付きTCP/IP、SDPの各プロトコルでサポートされます。
このパラメータは、DESCRIPTION
パラメータの下またはプロトコル・アドレスの最後に配置します。
クライアントの接続記述子にこのパラメータを設定すると、クライアント側のsqlnet.ora
ファイルのSEND_BUF_SIZE パラメータが上書きされます。
ノート:
オペレーティング・システムによっては、他のプロトコルもこのパラメータをサポートしている場合があります。他のプロトコルの詳細は、オペレーティング・システムのマニュアルを参照してください。
デフォルト
このパラメータのデフォルト値は、オペレーティング・システムによって異なります。Linux 2.6オペレーティング・システムのデフォルト値は16KBです。
例
net_service_name
= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-server)(PORT=1521) (SEND_BUF_SIZE=11784)) (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-server)(PORT=1521) (SEND_BUF_SIZE=11784))) (CONNECT_DATA= (SERVICE_NAME=sales.us.example.com)))net_service_name
= (DESCRIPTION= (SEND_BUF_SIZE=11784) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=hr1-server)(PORT=1521) (ADDRESS=(PROTOCOL=tcp)(HOST=hr2-server)(PORT=1521))) (CONNECT_DATA= (SERVICE_NAME=hr.us.example.com)))
親トピック: 説明のオプション・パラメータ
6.8.7 SOURCE_ROUTE
複数のプロトコル・アドレスを介したルーティングを有効にするには、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.8 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.9 接続データ・セクション
プロトコル・アドレスを使用してネットワーク接続を構成する方法を学習します。
ネットワーク・オブジェクトは、プロトコル・アドレスによって識別されます。接続が確立されると、クライアントとリクエストの受信者(リスナーまたはOracle Connection Manager)が同じプロトコル・アドレスで構成されます。クライアントは、このアドレスを使用して接続リクエストを特定のネットワーク・オブジェクトが存在する場所に送信し、受信者はこのアドレスでリクエストのリスニングを行い、クライアント情報が自分の持っているアドレス情報に一致するかどうかに基づいて接続を許可します。
- COLOCATION_TAG
- CONNECT_DATA
CONNECT_DATA
パラメータは、接続サービスを定義するために使用します。 - FAILOVER_MODE
- GLOBAL_NAME
- HS
- INSTANCE_NAME
- KERBEROS5_PRINCIPAL
KERBEROS5_PRINCIPAL
パラメータは、Kerberos資格証明キャッシュ(CC)ファイルに関連付けられたKerberosプリンシパル名を設定するために使用します。 - RDB_DATABASE
- SHARDING_KEY
SHARDING_KEY
パラメータを使用して、データベース接続リクエストを適切なシャードにルーティングします。 - SUPER_SHARDING_KEY
複合シャーディングの場合、SUPER_SHARDING_KEY
パラメータを使用して、データベース・リクエストをシャードのコレクション(シャード領域)にルーティングします。 - SERVER
- SERVICE_NAME
6.9.1 COLOCATION_TAG
用途
リスナーに対して、同じcolocation_tag
を持つすべての接続を同じデータベース・インスタンスにルーティングするように指示します。
使用上のノート
このパラメータは、CONNECT_DATA
パラメータとともに使用します。
パラメータ値は、英数字文字列にする必要があります。
例
net_service_name=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=...)
(ADDRESS=...))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(COLOCATION_TAG=abc)))
ノート:
ある条件下、たとえばインスタンスの最大ロードに達した場合や、サービスに対して新しいインスタンスが追加または削除された場合は、同じデータベース・インスタンスに対して同じcolocation_tag
を持つクライアント接続のコロケーションは一貫していない可能性があります。
親トピック: 接続データ・セクション
6.9.2 CONNECT_DATA
CONNECT_DATA
パラメータは、接続サービスを定義するために使用します。
用途
SERVICE_NAME
など、接続先サービスを定義します。
使用上のノート
このパラメータは、DESCRIPTION
パラメータの下に配置します。CONNECT_DATA
では、「接続データ・セクション」にリストされている追加パラメータが許可されます。
例
net_service_name= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521))) (CONNECT_DATA= (SERVICE_NAME=sales.us.example.com)))
親トピック: 接続データ・セクション
6.9.3 FAILOVER_MODE
用途
実行時に最初のリスナーが失敗した場合に別のリスナーにフェイルオーバーするようOracle Netに指示します。
使用上のノート
構成によっては、実行していたセッションまたはSELECT
文が自動的にフェイルオーバーされます。
この種類のフェイルオーバーは、透過的アプリケーション・フェイルオーバー(TAF)と呼ばれます。接続時フェイルオーバーのFAILOVERパラメータと混同しないでください。
このパラメータは、CONNECT_DATA
パラメータの下に配置します。
追加のパラメータ
FAILOVER_MODE
は、次のパラメータをサポートします。
-
BACKUP
: フェイルオーバー・ノードをネット・サービス名により指定します。フェイルオーバー・ノードに対しては個別のネット・サービス名を作成する必要があります。 -
TYPE
: フェイルオーバー・タイプを指定します。Oracle Call Interface(OCI)アプリケーションでは、デフォルトで3種類のOracle Netフェイルオーバー機能を使用できます。-
SESSION
: セッションをフェイルオーバーします。たとえば、ユーザーの接続が消失した場合、バックアップ上にそのユーザーの新規セッションが自動的に作成されます。このタイプのフェイルオーバーは、リカバリ選択を試行しません。 -
SELECT
: オープン・カーソルを持つユーザーはフェッチに失敗してもフェッチを継続できます。ただしこのモードでは、通常の検索操作を行うクライアント側にオーバーヘッドが生じます。 -
NONE
: これがデフォルトで、フェイルオーバー機能は使用されません。フェイルオーバーが実行されないように、明示的に指定することもできます。
-
-
METHOD
: 1次ノードからバックアップ・ノードへのフェイルオーバーの実行速度を指定します。-
BASIC
: フェイルオーバー時に接続を確立します。このオプションでは、フェイルオーバー時間までバックアップ・データベース・サーバーでの作業はほとんど不要です。 -
PRECONNECT
: 接続を事前に確立します。フェイルオーバーは高速に行われますが、バックアップ・インスタンスはサポートされた各インスタンスからの接続すべてをサポートできる必要があります。
-
-
TRANSACTION
: リカバリ可能なエラーの後、データベースで現行のデータベース・トランザクションが完了するようにします。このパラメータはCOMMIT_OUTCOME=TRUE
パラメータとともに使用します。 -
RETRIES
: フェイルオーバー後の接続試行回数を指定します。DELAY
が指定されている場合、RETRIES
は5回の試行回数にデフォルト設定されます。 -
DELAY
: 接続試行の間隔を秒数で指定します。RETRIES
が指定されている場合、DELAY
は1秒にデフォルト設定されます。
ノート:
コールバック関数が登録されている場合、RETRIES
パラメータおよびDELAY
パラメータは無視されます。
関連項目:
構成情報の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
親トピック: 接続データ・セクション
6.9.4 GLOBAL_NAME
用途
Oracle RDBデータベースを識別します。
使用上のノート
このパラメータは、CONNECT_DATA
パラメータの下に配置します。
例
net_service_name
=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=...)
(ADDRESS=...))
(CONNECT_DATA=
(SERVICE_NAME=generic)
(RDB_DATABASE=[.mf]mf_personal.rdb)
(GLOBAL_NAME=alpha5)))
親トピック: 接続データ・セクション
6.9.5 HS
用途
Oracle以外のシステムには異機種間サービスを介して接続するようにOracle Netに指示します。
使用上のノート
このパラメータは、CONNECT_DATA
パラメータの下に配置します。
デフォルト
なし
値
ok
例
net_service_name
=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=...)
(ADDRESS=...))
(CONNECT_DATA=
(SID=sales6)
)
(HS=ok))
関連項目:
構成情報の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
親トピック: 接続データ・セクション
6.9.6 INSTANCE_NAME
用途
アクセスするデータベース・インスタンスを識別します。
使用上のノート
値は、初期化パラメータ・ファイルのINSTANCE_NAME
パラメータに指定されている値に設定します。
このパラメータは、CONNECT_DATA
パラメータの下に配置します。
例
net_service_name
=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=...)
(ADDRESS=...))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(INSTANCE_NAME=sales1)))
関連項目:
INSTANCE_NAME
の使用方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
親トピック: 接続データ・セクション
6.9.7 KERBEROS5_PRINCIPAL
KERBEROS5_PRINCIPAL
パラメータは、Kerberos資格証明キャッシュ(CC)ファイルに関連付けられたKerberosプリンシパル名を設定するために使用します。
用途
Oracle DatabaseクライアントのKerberos認証を構成する場合、単一のOracle Databaseクライアントで複数のKerberosプリンシパルを指定できます。
これはオプションのパラメータです。指定すると、資格証明キャッシュ内のプリンシパル名(SQLNET.KERBEROS5_CC_NAME
を使用して指定)がパラメータ値と一致するかどうかを検証するために使用されます。
使用上のノート
このパラメータは、tnsnames.ora
ファイルのCONNECT_DATA
パラメータとともに使用します。または、オプションのKERBEROS5_PRINCIPAL
パラメータとともに接続文字列にKERBEROS5_CC_NAME
を指定して、別のKerberosプリンシパルとして接続することもできます。
各Kerberosプリンシパルには、有効な資格証明キャッシュが必要です。Oracle Databaseでは、資格証明キャッシュから取得された値に対してKERBEROS5_PRINCIPAL
がチェックされます。2つの値が一致しない場合、ユーザーは認証されません。
例
krbprinc1.example.com
を使用して外部認証され、このプリンシパルの資格証明キャッシュが/tmp/krbuser1/krb.cc
にあるユーザーkrbuser1
の場合、接続文字列は次のようになります。
net_service_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-svr)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=sales.example.com))
(SECURITY=
(KERBEROS5_CC_NAME=/tmp/krbuser1/krb.cc)
(KERBEROS5_PRINCIPAL=krbprinc1@example.com)))
ノート:
/tmp/krbuser1/krb.cc
ファイルのプリンシパルにkrbprinc1@example.com
の値が含まれていない場合、接続は失敗します。
krbprinc2.example.com
を使用して外部認証され、このプリンシパルの資格証明キャッシュが/tmp/krbuser2/krb.cc
にあるユーザーkrbuser2
の場合、接続文字列は次のようになります。
net_service_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-svr)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=sales.example.com))
(SECURITY=
(KERBEROS5_CC_NAME=/tmp/krbuser2/krb.cc)
(KERBEROS5_PRINCIPAL=krbprinc2@example.com)))
親トピック: 接続データ・セクション
6.9.8 RDB_DATABASE
用途
Oracle RDBデータベースのファイル名を指定します。
使用上のノート
このパラメータは、CONNECT_DATA
パラメータの下に配置します。
例
net_service_name
=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=...)
(ADDRESS=...))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(RDB_DATABASE= [.mf]mf_personal.rdb)))
親トピック: 接続データ・セクション
6.9.9 SHARDING_KEY
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
VARCHAR
、NVARCHAR
、CHAR
、NCHAR
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.10 SUPER_SHARDING_KEY
複合シャーディングの場合、SUPER_SHARDING_KEY
パラメータを使用して、データベース・リクエストをシャードのコレクション(シャード領域)にルーティングします。
用途
シャードのコレクションのシャード領域キーを指定します。シャード領域はシャードのセットで、キーの値の範囲またはリストに対応するデータが格納されます。データベース接続リクエスト中に指定された値に基づいて、リクエストは適切なシャード領域に直接ルーティングされます。
使用上のノート
このパラメータは、接続文字列またはtnsnames.ora
ファイルのCONNECT_DATA
セクションで指定します。
SUPER_SHARDING_KEY
パラメータは、簡易テキスト形式でシャードのコレクションのシャード領域キーを指定するために使用します。このパラメータはASCII文字セットのみをサポートし、特殊文字はサポートしません。スーパー・シャーディング・キーでサポートされているデータ型は、シャーディング・キーのものと同じです。
SUPER_SHARDING_KEY_B64
パラメータは、シャード領域キーの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.11 SERVER
用途
クライアントを特定タイプのサービス・ハンドラに接続するようにリスナーに指示します。
使用上のノート
このパラメータは、CONNECT_DATA
パラメータの下に配置します。
値
-
dedicated
: クライアントのリクエストが専用サーバーによって処理されるかどうかを指定します。
ノート:
-
クライアントが共有サーバー・プロセスでデータベースに接続するには、共有サーバーはデータベース初期化ファイルに構成されている必要があります。
-
sqlnet.ora
ファイルのUSE_DEDICATED_SERVERパラメータは、このパラメータよりも優先されます。
例
net_service_name
=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=...)
(ADDRESS=...))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)
(SERVER=dedicated)))
親トピック: 接続データ・セクション
6.9.12 SERVICE_NAME
用途
アクセスするOracle Databaseデータベース・サービスを識別します。
使用上のノート
値は、初期化パラメータ・ファイルのSERVICE_NAMES
パラメータに指定されている値に設定します。
このパラメータは、CONNECT_DATA
パラメータの下に配置します。
例
net_service_name
=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=...)
(ADDRESS=...))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.example.com)))
親トピック: 接続データ・セクション
6.10 セキュリティ・セクション
tnsnames.ora
ファイルのセキュリティ・セクションでは、Oracleセキュリティ機能で使用するこれらのセキュリティ関連パラメータを指定します。
- AUTHENTICATION_SERVICE
tnsnames.ora
のパラメータAUTHENTICATION_SERVICE
は、認証サービスを有効化するために使用します。 - IGNORE_ANO_ENCRYPTION_FOR_TCPS
IGNORE_ANO_ENCRYPTION_FOR_TCPS
パラメータは、この特定のTNS別名についてSQLNET.ENCRYPTION_CLIENT
パラメータを無視する必要があるかどうかを指定します。 - KERBEROS5_CC_NAME
tnsnames.ora
のパラメータKERBEROS5_CC_NAME
は、Kerberos資格証明キャッシュ(CC)ファイルへの完全パス名を指定するために使用します。 - OCI_COMPARTMENT
OCI_COMPARTMENT
パラメータを使用して、クライアント接続のデータベース・インスタンスを保持するコンパートメントのOracle Cloud Identifier (OCID)を指定します。 - OCI_DATABASE
OCI_DATABASE
パラメータを使用して、クライアント接続でアクセスするデータベースのOracle Cloud Identifier (OCID)を指定します。 - OCI_IAM_URL
OCI_IAM_URL
パラメータを使用して、OCI Database as a Service (DBaaS)上のOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーを認証するためのデータベース・トークンを取得するためにデータベース・クライアントが接続する必要があるエンドポイントURLを指定します。 - OCI_TENANCY
OCI_TENANCY
パラメータを使用して、ユーザーのテナンシのOracle Cloud Identifier (OCID)を指定します。 - PASSWORD_AUTH
この設定を使用すると、クライアント接続では、ユーザーのデータベースへのログインにIAMユーザー名およびIAMデータベース・パスワードが使用されます。 - SECURITY
SECURITY
パラメータは、接続のセキュリティ・プロパティを変更するために使用します。 - SSL_DISABLE_WEAK_EC_CURVES
SSL_DISABLE_WEAK_EC_CURVES
パラメータは、弱い楕円曲線暗号(ECC)曲線の使用を無効にするために使用します。 - SSL_SERVER_CERT_DN
SSL_SERVER_CERT_DN
パラメータは、データベース・サーバーの識別名(DN)を指定するために使用します。 - SSL_SERVER_DN_MATCH
SSL_SERVER_DN_MATCH
パラメータは、識別名(DN)一致によるサーバー側の証明書検証を強制的に実施するために使用します。 - SSL_VERSION
SSL_VERSION
パラメータは、接続に使用する有効なTransport Layer Security (TLS)バージョンを定義するために使用します。 - TOKEN_AUTH
TOKEN_AUTH
パラメータは、Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザー、またはMicrosoft Entra ID (旧称はMicrosoft Azure Active Directory)のMicrosoft Azureユーザーについて、トークンベースの認証を構成するために使用します。 - TOKEN_LOCATION
TOKEN_LOCATION
パラメータは、トークンベースの認証のためにトークン・ファイルが格納されるディレクトリの場所を指定するために使用します。 - WALLET_LOCATION
tnsnames.ora
ファイルのWALLET_LOCATION
パラメータは、Oracleウォレットが格納される別の場所を指定するために使用します。
6.10.1 AUTHENTICATION_SERVICE
tnsnames.ora
のパラメータAUTHENTICATION_SERVICE
は、認証サービスを有効化するために使用します。
用途
認証サービスを有効にします。認証をインストールした場合は、AUTHENTICATION_SERVICE
をNONE
に設定するか、リストに示した認証方法のいずれかに設定することをお薦めします。
使用上のノート
-
このパラメータは、
tnsnames.ora
ファイルのSECURITY
セクションで使用するか、または接続文字列の一部として直接使用します。この値は、
sqlnet.ora
ファイル内でも設定できます。AUTHENTICATION_SERVICE
パラメータは、sqlnet.ora
のパラメータSQLNET.AUTHENTICATION_SERVICES
と同等です。接続文字列で指定したパラメータ値が優先されます。なお、複数の値を取得できる
SQLNET.AUTHENTICATION_SERVICES
パラメータとは異なり、AUTHENTICATION_SERVICE
パラメータには1つの認証サービスのみを指定できます。 -
AUTHENTICATION_SERVICE=ALL
を使用すると、サーバーにより、次の各方法を使用して認証が試みられます:-
ネットワーク層上のサービス、KerberosまたはRADIUSなどの、データベース外部のサービスに基づく認証。
-
管理オペレーティング・システム・グループ内のオペレーティング・システム・ユーザーのメンバーシップに基づく認証。グループ名はプラットフォーム固有です。この認証は管理接続にのみ適用されます。
-
データベースによって実行される認証。
-
ディレクトリ・サーバー内に保管された資格証明に基づく認証。
サーバーはリストの上位に示された認証方法を使用しようとして失敗した場合、それより下位にリストされた認証方法にフォールバックします。
-
-
ローカル・データベース・パスワード認証(外部認証なし)を使用する場合は、クライアント・パフォーマンスの向上のために
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_SERVICE
をNONE
に設定すると、ユーザーは有効なユーザー名とパスワードを使用することでデータベースにアクセスできます。 -
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: credential retrieval failed
エラーで失敗します。通常のユーザー名およびパスワード・ベースの認証では、値を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 IGNORE_ANO_ENCRYPTION_FOR_TCPS
IGNORE_ANO_ENCRYPTION_FOR_TCPS
パラメータは、この特定のTNS別名についてSQLNET.ENCRYPTION_CLIENT
パラメータを無視する必要があるかどうかを指定します。
用途
この特定のTNS別名についてSQLNET.ENCRYPTION_CLIENT
パラメータを無視する必要があるかどうかを指定します。
使用上のノート
SQLNET.ENCRYPTION_SERVER
をrequired
に設定する必要がある場合は、SQLNET.ENCRYPTION_CLIENT
とSQLNET.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.3 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
と同等です。接続文字列で指定したパラメータ値が優先されます。
値と例
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)を実行していることを示しています。 -
ノート:
複数のKerberosプリンシパルを認証する場合は、追加のKerberosプリンシパルを接続文字列を介して直接指定するか、tnsnames.ora
ファイルで指定できます。
デフォルト
-
LinuxおよびUNIXオペレーティング・システムの場合:
/tmp/krb5cc_userid
-
Microsoft Windowsオペレーティング・システムの場合:
c:\tmp\krbcache
6.10.4 OCI_COMPARTMENT
OCI_COMPARTMENT
パラメータを使用して、クライアント接続のデータベース・インスタンスを保持するコンパートメントのOracle Cloud Identifier (OCID)を指定します。
用途
データベース・トークン・リクエストのスコープを定義します。この値は、指定されたコンパートメント内のみのデータベースへのトークン・リクエストを開始するようにデータベース・クライアントに指示します。
使用上のノート
OCI Database as a Service (DBaaS)上でOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーのトークンベース認証を構成する場合に、このパラメータをPASSWORD_AUTH
、OCI_IAM_URL
およびOCI_TENANCY
パラメータとともに使用できます。オプションのOCI_DATABASE
パラメータを使用して、接続のコンパートメント内のデータベース・インスタンスを指定することもできます。
この構成では、データベース・クライアントはIAMユーザー名およびIAMデータベース・パスワードを使用して、IAMデータベース・トークンのみをリクエストできます。クライアントは、APIキー、委任トークン、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパルまたはインスタンス・プリンシパルのIAMデータベース・トークンをリクエストできません。
OCI_DATABASE
が設定されていない場合、OCI_COMPARTMENT
パラメータはオプションです。OCI_DATABASE
を設定する場合は、トークン・リクエストがそのコンパートメント内の指定されたデータベースに対するものになるように、OCI_COMPARTMENT
も設定する必要があります。
OCI_COMPARTMENT
とOCI_DATABASE
の両方を設定しない場合、テナンシ全体がトークン・リクエストのスコープになります。
このパラメータは、tnsnames.ora
ファイルまたはsqlnet.ora
ファイルのSECURITY
セクションの下で使用するか、コマンドライン接続文字列の一部として直接使用します。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。
デフォルト
なし
値
データベース・トークンのアクセスを許可するIAMコンパートメントのOCID。OCIコンソールの「コンパートメント」情報ページから、コンパートメントのOCID値を取得できます。
コンパートメントOCIDは次の構文を使用します。
OCI_COMPARTMENT=compartment_OCID
構文オプションの詳細は、Oracle Cloud ID (OCID)に関する項を参照してください。
例
tnsnames.ora
ファイル:net_service_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
(SECURITY=
(SSL_SERVER_DN_MATCH=TRUE)
(SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
(PASSWORD_AUTH=OCI_TOKEN)
(OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken)
(OCI_TENANCY=ocid1.tenancy..12345)
(OCI_COMPARTMENT=ocid1.compartment..12345)
(OCI_DATABASE=ocid1.autonomousdatabase.oc1.12345))
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
)
sqlnet.ora
ファイル:SSL_SERVER_DN_MATCH=TRUE
PASSWORD_AUTH=OCI_TOKEN
OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken
OCI_TENANCY=ocid1.tenancy..12345
OCI_COMPARTMENT=ocid1.compartment..12345
OCI_DATABASE=ocid1.autonomousdatabase.oc1.12345
親トピック: セキュリティ・セクション
6.10.5 OCI_DATABASE
OCI_DATABASE
パラメータを使用して、クライアント接続でアクセスするデータベースの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
、OCI_TENANCY
およびOCI_COMPARTMENT
パラメータとともに使用できます。
この構成でデータベース・クライアントがIAMデータベース・トークンをリクエストできるのは、IAMユーザー名とIAMデータベース・パスワードを使用する場合のみです。クライアントは、APIキー、委任トークン、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパルまたはインスタンス・プリンシパルのIAMデータベース・トークンはリクエストできません。
OCI_DATABASE
値は、トークン・リクエストを指定されたデータベースのみに制限します。OCI_DATABASE
を設定する場合は、トークン・リクエストがそのコンパートメント内の指定されたデータベースに対するものになるように、OCI_COMPARTMENT
も設定する必要があります。
このパラメータは、tnsnames.ora
ファイルまたはsqlnet.ora
ファイルのSECURITY
セクションの下で使用するか、コマンドライン接続文字列の一部として直接使用します。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。
デフォルト
なし
値
クライアント接続にアクセスするデータベースのOCID。データベースのOCID値は、OCIコンソールの「データベース詳細」ページから取得できます。
データベースOCIDは次の構文を使用します。
OCI_DATABASE=database_OCID
構文オプションの詳細は、Oracle Cloud Identifier (OCID)ドキュメントを参照してください。
例
tnsnames.ora
ファイル:net_service_name=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1522))
(SECURITY=
(SSL_SERVER_DN_MATCH=TRUE)
(SSL_SERVER_CERT_DN="C=US,O=example,CN=OracleContext")
(PASSWORD_AUTH=OCI_TOKEN)
(OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken)
(OCI_TENANCY=ocid1.tenancy..12345)
(OCI_COMPARTMENT=ocid1.compartment..12345)
(OCI_DATABASE=ocid1.autonomousdatabase.oc1.12345))
(CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
)
sqlnet.ora
ファイル:SSL_SERVER_DN_MATCH=TRUE
PASSWORD_AUTH=OCI_TOKEN
OCI_IAM_URL=https://auth.us-region-1.example.com/v1/actions/generateScopedAccessBearerToken
OCI_TENANCY=ocid1.tenancy..12345
OCI_COMPARTMENT=ocid1.compartment..12345
OCI_DATABASE=ocid1.autonomousdatabase.oc1.12345
親トピック: セキュリティ・セクション
6.10.6 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
セクションの下で使用するか、コマンドライン接続文字列の一部として直接使用します。接続文字列で指定されたパラメータ値は、他で指定された値より優先されます。
デフォルト
なし
値
<authentication_regional_endpoint>/v1/actions/generateScopedAccessBearerToken
この値は、<authentication_regional_endpoint>をリージョンのAPIエンドポイントURLに置き換えることで導出できます。適切なAPIエンドポイントURLを取得するには、Identity and Access Managementデータ・プレーンAPIに関する項を参照してください。
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.7 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.8 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データベース・パスワード・ベリファイア認証の場合:
ノート: IAMユーザー名およびIAMデータベース・パスワードをIAMデータベース・パスワード・ベリファイアとともに使用することがデフォルトの構成であるため、クライアントに追加パラメータを設定する必要はありません。 ただし、クライアント側の |
tnsnames.ora ファイル:
sqlnet.ora ファイル:
|
IAMユーザー名とIAMデータベース・パスワードによるIAMトークンベース認証の場合:
ノート: トークンベースの認証では、TCPSプロトコル( |
tnsnames.ora ファイル:
sqlnet.ora ファイル:
これらの例では、オプションの |
6.10.9 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.10 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
値
-
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.11 SSL_SERVER_CERT_DN
SSL_SERVER_CERT_DN
パラメータは、データベース・サーバーの識別名(DN)を指定するために使用します。
用途
データベース・サーバーの識別名(DN)を指定します。
使用上のノート
サーバーDNは、事前にクライアント側で認識しておく必要があります。そうしていないと、クライアントはSSL_SERVER_CERT_DN
でサーバーのDNを指定できません。クライアントは、この情報を使用して、各サーバーに予定しているDNリストを取得し、データベース・サーバーのDNがそのサービス名と一致していることを確認します。完全DN一致を使用する場合は、このパラメータをサーバーDNに設定する必要があります(たとえば、SSL_SERVER_CERT_DN="finance, cn=OracleContext,c=us,o=example"
)。部分DN一致の場合は、このパラメータを含めないでください。
このパラメータは、sqlnet.ora
のSSL_SERVER_DN_MATCHパラメータと併用することで完全DN一致が有効になります。
例
finance
=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL = tcps) (HOST = finance)
(PORT = 1575)))
(CONNECT_DATA=
(SERVICE_NAME=finance.us.example.com))
(SECURITY=
(SSL_SERVER_CERT_DN="cn=finance,cn=OracleContext,c=us,o=example")))
親トピック: セキュリティ・セクション
6.10.12 SSL_SERVER_DN_MATCH
SSL_SERVER_DN_MATCH
パラメータは、識別名(DN)一致によるサーバー側の証明書検証を強制的に実施するために使用します。
用途
識別名(DN)一致によるサーバー側証明書の検証を強制します。
使用上のノート
サーバーの証明書チェーンの検証に加えてDN一致を強制すると、クライアントはDN一致による別のチェックを実行します。
部分DN一致または完全DN一致のいずれかを構成できます。部分DN一致は、サーバーのCNにホスト名が含まれているときに発生します。完全DN一致は、サーバーの完全なDNに対して発生します。一致を強制しないと、サーバーのアイデンティティの偽装が可能になります。
完全DN一致を有効にするには、sqlnet.ora
ファイルに加えて、tnsnames.ora
のパラメータSSL_SERVER_CERT_DNも構成してください。
デフォルト
NO
値
-
YES
|ON
|TRUE
|1
:部分または完全DN一致を強制します。DNがサービス名と一致している場合、接続は成功します。DNがサービス名と一致していない場合、接続は失敗します。
-
NO
|OFF
|FALSE
|0
:DN一致は強制しません。DNがサービス名と一致していない場合、接続は成功しますが、エラーが
sqlnet.log
ファイルに記録されます。
例
SSL_SERVER_DN_MATCH=YES
関連トピック
親トピック: セキュリティ・セクション
6.10.13 SSL_VERSION
SSL_VERSION
パラメータは、接続に使用する有効なTransport Layer Security (TLS)バージョンを定義するために使用します。
用途
データベース・サーバーが通信するシステムで実行する必要があるTLSのバージョンを定義します。デフォルトでは、データベース・サーバーとクライアントは最も強いセキュリティ・プロトコルをネゴシエートします。セキュリティ要件によって特定のプロトコル・バージョンの使用が強制されていないかぎり、このパラメータを変更することはお薦めしません。
使用上のノート
クライアント、リスナーおよびデータベース・サーバーは、互換性のあるバージョンを使用する必要があります。このパラメータは、よりセキュアなTLSプロトコルの使用を強制し、古いTLSプロトコルのみで動作するクライアントを許可しないように、必要な場合にのみ変更してください。TLS 1.0またはTLS 1.1を指定する必要がある場合は、よりセキュアな接続を可能にするためにTLS 1.2も含めます。現行のデフォルトでは、複数のセキュリティ・コンプライアンス要件に必要なバージョンであるTLS 1.2を使用しています。
SSL_VERSION
をundetermined
に設定すると、最もセキュアなTLSプロトコル・バージョンが使用されます。特定の接続の接続文字列のSSL_VERSION=undetermined
設定を使用して、sqlnet.ora
ファイルで構成されたSSL_VERSION
値をオーバーライドできます。
SSL_VERSION
に値を設定しないと、サポートされているすべてのTLSプロトコル・バージョンが、最もセキュアなバージョンから試行されます。これは通常、最も一般的な構成で、TLSネゴシエーション中に最も強力なプロトコルが選択されます。
デフォルト
undetermined
値
undetermined
| 1.0
| 1.1
| 1.2
バージョン番号は、TLSv1.0、TLSv1.1およびTLSv1.2などのTLSバージョンに対応します。
ノート:
sqlnet.ora
のパラメータADD_SSLV3_TO_DEFAULT
は、このパラメータには影響しません。
構文と例
-
単一のTLSバージョンを指定するには:
SSL_VERSION=TLS_protocol_version
たとえば:SSL_VERSION=1.2
- 複数のTLSバージョンを指定するには、次のように
or
演算子を使用します:SSL_VERSION=TLS_protocol_version1 or TLS_protocol_version2
たとえば:SSL_VERSION=1.1 or 1.2
SSL_VERSION=1.0 or 1.1 or 1.2
親トピック: セキュリティ・セクション
6.10.14 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 (クラウドまたはオンプレミス)に接続できます。
この設定では、/
(スラッシュ)ログインを使用すると、データベース・クライアントはトークン・ファイルを検索します。
このパラメータは、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_AUTH
がOCI_TOKEN
に設定されている場合)、TOKEN_AUTH=OCI_TOKEN
設定および/@connect_identifier
は、デフォルト・ディレクトリまたはTOKEN_LOCATION
で指定された場所(IAMトークンベース認証を使用)からdb-token
および秘密キーを取得するようデータベース・クライアントに指示します。 -
クライアントAPIを使用してトークンをOracle Databaseに送信する:
クライアント・アプリケーションがIAMからトークンを取得するように更新されている場合は、
TOKEN_AUTH=OCI_TOKEN
設定をオーバーライドできます。クライアント・アプリケーションは、IAMからdb-token
および秘密キーを取得し、クライアントAPIを使用して属性としてデータベース・クライアントに送信します。この場合、TOKEN_AUTH
およびTOKEN_LOCATION
パラメータを指定する必要はありません。 -
一般的なIAMトークンベースの認証のプロセス:
-
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
コマンドの詳細を参照してください。 -
OCI CLIは、(プロファイルの一部としてIAMユーザー資格証明を格納する)
config
ファイルを参照し、IAMを呼び出してdb-token
を取得します。db-token
および秘密キー・ファイルは、デフォルトまたは指定されたトークンの場所に書き込まれます。 -
TOKEN_LOCATION
パラメータを指定して、db-token
および秘密キー・ファイルが格納されるデフォルト・ディレクトリをオーバーライドできます。データベース・クライアントは、デフォルト・トークンの場所または
TOKEN_LOCATION
で指定された場所からdb-token
および秘密キーを取得し、秘密キーを使用してdb-token
に署名し、データベース・サーバーに送信します。データベース・サーバーはdb-token
を検証し、ユーザーのグループ・メンバーシップ情報を取得します。IAMユーザーがデータベース・スキーマにマップされている場合(排他的または共有)は、ログインが完了します。
-
ノート:
別のIAM資格証明であるIAMデータベース・パスワードを使用して、IAMからdb-token
をリクエストすることもできます。このdb-token
はベアラー・トークンで、秘密キーは付属していません。IAMユーザー名およびIAMデータベース・パスワードを使用して、このトークンをリクエストするようにデータベース・クライアントを構成できます。アプリケーションはこのタイプのdb-token
をクライアントに渡すことはできません。この場合、別のパラメータ設定(PASSWORD_AUTH=OCI_TOKEN
)を使用します。
トークンを取得するためにアプリケーションまたはツールを必要とするAPIキー、セキュリティ・トークン、リソース・プリンシパル、サービス・プリンシパル、インスタンス・プリンシパルおよび委任トークンとは異なり、IAMデータベース・パスワードは、データベース・クライアントのみがトークンを取得するために使用できます。「PASSWORD_AUTH」を参照してください。
表6-1 IAMの値と例
デフォルト | 値 | 例 |
---|---|---|
なし |
|
tnsnames.ora ファイル:
sqlnet.ora ファイル:
これらの例では、オプションの |
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_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トークンベースの認証のプロセス:
-
Azureユーザーまたはアプリケーションが、最初に、サポートされている認証フローのいずれか(リソース所有者のパスワード資格証明、認可コード、on-behalf-of (OBO)フローまたはクライアント資格証明)を使用してEntra IDからアクセス・トークンをリクエストします。
Azureユーザーは、サポートされている任意のユーティリティを使用して接続し、トークンを取得し、それをローカル・ファイル・ディレクトリに格納できます。
Linux、Microsoft PowerShellまたはその他の環境で実行されるツールおよびスクリプトから、トークンをリクエストできます。Microsoft SDKを使用して、プログラムでリクエストすることもできます。Entra ID OAuth2アクセス・トークンを取得する方法の詳細な例は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
-
その後、データベース・クライアントがトークンをデータベース・サーバーに送信します。データベース・サーバーは、トークンを検証し(Entra ID公開キーを使用)、ユーザー名、アプリケーション・ロール、オーディエンスなど、様々な要求をトークンから抽出します。Entra IDプリンシパルがデータベース・スキーマにマップされている場合(排他的または共有)、ログインは完了します。
-
表6-2 Entra IDの場合の値と例
デフォルト | 値 | 例 |
---|---|---|
なし |
トークン・ファイルが
|
tnsnames.ora ファイル:
sqlnet.ora ファイル:
これらの例では、トークン・ファイル名は |
トークン・ファイル名が
|
tnsnames.ora ファイル:
sqlnet.ora ファイル:
これらの例では、トークン・ファイル名は |
6.10.15 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_AUTH
がOCI_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の値と例
値 | 例 |
---|---|
|
tnsnames.ora ファイル:
sqlnet.ora ファイル:
|
Entra IDに関する使用上のノート
TOKEN_LOCATION
パラメータは、Azureトークンベースの認証では必須です。このパラメータをTOKEN_AUTH
パラメータとともに使用して、Entra ID OAuth2アクセス・トークンの格納先であるディレクトリの場所を指定する必要があります。この場所は、アクセス・トークンを取得するためにデータベース・クライアントによって使用されます。
トークン・ファイルがtoken
という名前である場合は、ディレクトリ・パスのみを指定します。トークン・ファイル名がtoken
と異なる場合は、ファイル名とディレクトリ・パスを使用する必要があります。
Azureユーザーが/@connect_identifier
を使用して接続を開始すると、データベース・クライアントにより、TOKEN_LOCATION
で指定されている場所からアクセス・トークンが取得され、そのトークンがデータベース・サーバーに送信されます。
Entra IDの場合のデフォルト設定
なし
Entra IDの場合の値と例
値 | 例 |
---|---|
トークン・ファイルが
|
tnsnames.ora ファイル:
sqlnet.ora ファイル:
これらの例では、トークン・ファイル名は |
トークン・ファイル名が
|
tnsnames.ora ファイル:
sqlnet.ora ファイル:
これらの例では、トークン・ファイル名は |
6.10.16 WALLET_LOCATION
tnsnames.ora
ファイルのWALLET_LOCATION
パラメータは、Oracleウォレットが格納される別の場所を指定するために使用します。
用途
このパラメータは、接続固有のウォレットを示します。このパラメータは、様々な接続がクライアント側で異なるウォレットを使用する必要がある場合に使用できます。
使用上のノート
WALLET_LOCATION
は、sqlnet.ora
ファイルとtnsnames.ora
ファイルの両方で使用できます。tnsnames.ora
でWALLET_LOCATION
を使用すると、特定のtnsnames.ora
サービスのsqlnet.ora
内のWALLET_LOCATION
がオーバーライドされます。
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
レベルで設定できます。
- CONNECT_TIMEOUT
tnsnames.ora
のパラメータCONNECT_TIMEOUT
は、クライアントがデータベース・インスタンスへのOracle Net接続を確立するまでの時間(ミリ秒、秒または分)を指定するために使用します。 - RETRY_COUNT
tnsnames.ora
パラメータRETRY_COUNT
を使用して、接続試行を終了する前のADDRESS
リストが横断する回数を指定します。 - RETRY_DELAY
tnsnames.ora
のパラメータRETRY_DELAY
は、接続の再試行間の遅延を秒単位で指定するために使用します。 - TRANSPORT_CONNECT_TIMEOUT
tnsnames.ora
パラメータTRANSPORT_CONNECT_TIMEOUT
を使用して、トランスポート接続タイムアウト期間をミリ秒、秒または分単位で指定します。 - RECV_TIMEOUT
tnsnames.ora
のパラメータRECV_TIMEOUT
は、データベース・クライアントまたはサーバーが接続の確立後にピアからのデータを待機する時間を指定するために使用します。
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
は、接続の再試行間の遅延を秒単位で指定するために使用します。
用途
接続に対する後続の再試行間の遅延を秒単位で指定します。このパラメータは、RETRY_COUNT
パラメータと組み合せることで機能します。
使用上のノート
このパラメータは、DESCRIPTION
パラメータの下に配置します。
DESCRIPTION_LIST
を指定している場合、指定した再試行回数と説明の特定の遅延に基づいて、各DESCRIPTION
が反復されます。
例
net_service_name
=
(DESCRIPTION_LIST=
(DESCRIPTION=
(CONNECT_TIMEOUT=10)(RETRY_COUNT=3)(RETRY_DELAY=2)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales1a-svr)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=sales1b-svr)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=sales1.example.com)))
(DESCRIPTION=
(CONNECT_TIMEOUT=60)(RETRY_COUNT=2)(RETRY_DELAY=1)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales2a-svr)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=sales2b-svr)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=sales2.us.example.com))))
親トピック: タイムアウト・パラメータ
6.11.4 TRANSPORT_CONNECT_TIMEOUT
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
レベルで設定できます。
- COMPRESSION
tnsnames.ora
ファイルの圧縮パラメータは、データ圧縮を有効または無効にします。 - COMPRESSION_LEVELS
tnsnames.ora
ファイルのCOMPRESSION_LEVELS
パラメータは、圧縮レベルを指定します。
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)))
関連トピック
親トピック: 圧縮パラメータ