8 ネーミング・メソッドの構成

データベース・サーバーに接続するクライアントの接続情報を構成する方法について説明します。

8.1 簡易接続ネーミング・メソッドの構成

簡易接続ネーミング・メソッドを使用すると、TCP/IP環境でtnsnames.oraファイルでサービス名を検索する必要がなくなります。さらに、このメソッドを使用するとネーミング・システムやディレクトリ・システムは必要ありません。

8.1.1 簡易接続ネーミング・メソッドの理解

簡易接続ネーミング・メソッドは、データベースへの簡単なTCP/IP接続を提供します。

概要

このネーミング・メソッドは、クライアントがデータベースのホスト名の他にオプションのポートとサービス名を使用してデータベースに接続できるようにすることで、ホスト・ネーミング・メソッドの機能を拡張します。


CONNECT username@[//]host[:port][/[service_name][:server_type][/instance_name]]
Enter password: password

この接続識別子は、次のような接続記述子に変換されます。

(DESCRIPTION= 
  (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=port))
  (CONNECT_DATA=
    (SERVICE_NAME=service_name)
    (SERVER=server_type)
    (INSTANCE_NAME=instance_name))
)

Oracle Databaseサーバーのインストールを「標準」モードで実行した場合、Oracleインスタンスで使用されるデフォルトのサービス名はデータベース名で、次の簡易接続構文を使用してそのインスタンスに接続できます。

SQLPLUS /nolog
SQL> CONNECT username@host/db_name
SQL> Enter password: password

簡易接続構文の例

次の例の接続文字列は、データベース・サーバーsales-server上のリスニング・エンドポイント1521を使用して、クライアントをデータベース・サービスのsales.us.example.comに接続します。
CONNECT scott@sales-server:1521/sales.us.example.com
CONNECT scott@//sales-server/sales.us.example.com
CONNECT scott@//sales-server.us.example.com/sales.us.example.com

各接続文字列の後に、データベース・サービスに接続するためのパスワードを入力する必要があります。

これらの接続文字列は、次の接続記述子に変換されます。
(DESCRIPTION= 
  (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
  (CONNECT_DATA=
    (SERVICE_NAME=sales.us.example.com)))

簡易接続ネーミングのための接続識別子

次のリストに、簡易接続の構文要素とそれぞれの説明を示します:

構文要素 説明

//

//を使用して、URLまたはJDBC接続を指定します。

URLまたはJDBC接続の場合、必須です。接続識別子の前にダブル・スラッシュ(//)を付ける必要があります。たとえば:

scott@//sales-server
Enter password: password

SQL接続の場合、オプションです。接続識別子の前にダブル・スラッシュ(//)を付けることができます。たとえば、次の接続文字列は意味的に同じです。

SQL> CONNECT scott@sales-server
SQL> CONNECT scott@//sales-server

host

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

ローカル・オペレーティング・システム構成でドメイン指定のときは、ホスト名は、ドメインで修飾されます。

値としてIPv4またはIPv6アドレスを使用できます。IPv6アドレスまたはIPv6アドレスに解決されるホスト名は、[2001:0db8:0:0::200C:417A][salesdb]のように大括弧で囲む必要があります。

port

省略可能。リスニング・ポートを指定します。

デフォルトは、1521です。

service_name

省略可能。データベースのサービス名を指定します。

ユーザーがサービス名を指定した場合、リスナーはその特定のデータベースにユーザーを接続します。サービス名を指定しない場合、リスナーはlistener.oraファイルのDEFAULT_SERVICE_listener_nameパラメータで指定されたデータベースに接続します。リスナーについてDEFAULT_SERVICE_listener_nameが設定されておらず、ユーザーがサービス名を簡易接続構文の一部として明示的に指定していない場合、リスナーはエラーを戻します。

server_type

省略可能。使用するデータベース・サーバーのタイプを指定します。

このパラメータを指定すると、リスナーはクライアントを特定のタイプのサービス・ハンドラに接続します。

server_typeパラメータの値は、dedicatedsharedおよびpooledです。簡易接続構文でサーバーが指定されていない場合、リスナーによってサーバーのタイプが選択されます(共有サーバーが構成済の場合は共有サーバー、それ以外の場合は専用サーバーが使用されます)。

ノート: Oracle Call Interfaceのマニュアルでは、serverはconnect_typeと呼ばれています。

instance_name

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

インスタンス名は、初期化パラメータ・ファイルのINSTANCE_NAMEパラメータから取得できます。

8.1.2 簡易接続プラスについて

Oracle Database 19cリリースから、Oracle Databaseへの接続にアプリケーションで使用する簡易接続構文が機能強化されました。新しいバージョンは簡易接続プラスと呼ばれます。

簡易接続プラスでは、Oracle Databaseのアプリケーション構成と一般的なユースケースのデプロイメントが簡略化されます。簡易接続プラスでは、tnsnames.orasqlnet.oraなどのOracle Netパラメータ・ファイルを構成する必要がなくなりました。簡易接続プラスでは、TNS_ADMIN環境変数を設定する必要がなくなりました。

この新しい機能によって、Oracle Database Cloud Servicesへのクライアント接続がネットワーク・セキュリティにTLSを使用するため、クライアント構成が簡単になります。新しい構文は次のとおりです。

[[protocol:]//]host1{,host12}[:port1]{,host2:port2}[/[service_name][:server][/instance_name]][?parameter_name=value{&parameter_name=value}]

疑問符(?)は名前/値ペアの始まりを示します。アンパーサンド(&)は名前/値ペアの間のデリミタです。

プロトコルの指定のサポート: 簡易接続アダプタは、接続文字列の一部としてプロトコルの指定をサポートします。このプロトコルは、接続文字列内の各ホストに適用されます。

マルチホストまたはポート・サポート: 簡易接続アダプタは、接続文字列内の複数のホストまたはポートを受け入れることができるようになりました。これは、クライアント接続のロード・バランシングに役立ちます。

名前/値ペア: 簡易接続アダプタは、名前と値のペアのリストを受け入れることができます。名前/値の各ペアは、DESCRIPTIONレベルのパラメータとして追加されます。次の名前がサポートされています。

  • ENABLE
  • FAILOVER
  • LOAD_BALANCE
  • RECV_BUF_SIZE
  • SEND_BUF_SIZE
  • SDU
  • SOURCE_ROUTE
  • RETRY_COUNT
  • RETRY_DELAY
  • CONNECT_TIMEOUT
  • TRANSPORT_CONNECT_TIMEOUT

たとえば、次の構文はセッション・データ・ユニット(SDU)を指定します

salesserver1:1521/sales.us.example.com?sdu=16384

次のような接続記述子に変換されます。

(DESCRIPTION=
  (SDU=16384) 
  (ADDRESS=(PROTOCOL=tcp)(HOST=saleserver1)(PORT=1521))
  (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))

同様に、次の構文は接続タイムアウト、トランスポート接続タイムアウト、および再試行回数の値を指定します

salesserver1:1521/sales.us.example.com?connect_timeout=60&transport_connect_timeout=30&retry_count=3&retry_delay=2

次のような接続記述子に変換されます。

(DESCRIPTION=
   (retry_count=3)(retry_delay=2)
   (connect_timeout=60)(transport_connect_timeout=30)
   (ADDRESS=(PROTOCOL=tcp)(HOST=salesserver1)(PORT=1521))
   (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com)))

セキュリティ属性: 次のSECURITY属性がTLSでサポートされています。

  • SSL_SERVER_DN_MATCH=on/off
  • SSL_SERVER_CERT_DN=longDN
  • WALLET_LOCATION=Wallet location

パラメータWALLET_LOCATIONは、Oracle DatabaseサーバーのOracle Database 23cでの使用は非推奨です。Oracle Databaseクライアントでの使用は非推奨ではありません。

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

8.1.3 簡易接続ネーミング・メソッドの例

例は、簡易接続ネーミングの構文と、各文字列がどのように接続記述子に変換されるかを示しています。

表8-1 簡易接続ネーミングの例

ネーミング・オプション 接続文字列 接続記述子

ホスト指定の簡易接続文字列。

ホスト名はsales-serverです。

sales-server
(DESCRIPTION=
   (CONNECT_DATA=
       (SERVICE_NAME=))
   (ADDRESS=
       (PROTOCOL=TCP)
       (HOST=sales-server)
       (PORT=1521)))

ホストおよびポート指定の簡易接続文字列。

ホスト名はsales-server、ポートは3456です。

sales-server:3456
(DESCRIPTION=
   (CONNECT_DATA=
       (SERVICE_NAME=))
   (ADDRESS=
       (PROTOCOL=TCP)
       (HOST=sales-server)
       (PORT=3456)))

ホストおよびサービス名指定の簡易接続文字列。

ホスト名はsales-server、サービス名はsalesです。

sales-server/sales
(DESCRIPTION=
  (CONNECT_DATA=
     (SERVICE_NAME=sales))
  (ADDRESS=
     (PROTOCOL=TCP)
     (HOST=sales-server)
     (PORT=1521)))

IPv6アドレス指定の簡易接続文字列。

ホストのIPv6アドレスは2001:0db8:0:0::200C:417A、ポートは80、サービス名はsalesです。

[2001:0db8:0:0::200C:417A]:80/sales

IPv6ホスト名は大括弧で囲む必要があります。

(DESCRIPTION=
  (CONNECT_DATA=
      (SERVICE_NAME=sales)
  (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=2001:0db8:0:0::200C:417A)
      (PORT=80)))

IPv6ホスト・アドレス指定の簡易接続文字列。

ホストはsales-server、ポートは80、サービス名はsalesです。

sales-server:80/sales
(DESCRIPTION=
  (CONNECT_DATA=
      (SERVICE_NAME=sales)
  (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=sales-server)
      (PORT=80)))

ホスト、サービス名およびサーバー指定の簡易接続文字列。

ホスト名はsales-server、サービス名はsales、サーバーはdedicated、インスタンス名はinst1です。

sales-server/sales:dedicated/inst1
(DESCRIPTION=
  (CONNECT_DATA=
      (SERVICE_NAME=sales)
      (INSTANCE_NAME=inst1)
      (SERVER=dedicated))
  (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=sales-server)
      (PORT=1521)))

ホストおよびインスタンス名指定の簡易接続。

ホスト名はsales-server、インスタンス名はinst1です。

sales-server//inst1
(DESCRIPTION=
   (CONNECT_DATA=
      (SERVICE_NAME=)
      (INSTANCE_NAME=inst1))
   (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=sales-server)
      (PORT=1521)))

ノート: 簡易接続プラス機能では、このネーミング・オプションがサポートされています。

名前/値ペアのリストがある簡易接続アダプタ。

SDURETRY_COUNTCONNECT_TIMEOUT

ホストはsalesserver、ポートは1521、サービス名はsalesです。

salesserver1:1521/sales?SDU=8128&retry_count=3&connect_timeout=10
(DESCRIPTION=
(SDU=8128)(retry_count=3)(connect_timeout=10)
(ADDRESS=(PROTOCOL=tcp)(HOST=saleserver1)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=sales)))

ノート: 簡易接続プラス機能では、このネーミング・オプションがサポートされています。

接続文字列に複数のホストまたはポートがある簡易接続アダプタ

ホストはsalesserver、ポートは1521、サービス名はsalesです。

salesserver1:1521,salesserver2,salesserver3:1522/sales
((DESCRIPTION=(LOAD_BALANCE=ON)
 (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server1)(PORT=1521))
 (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server2)(PORT=1522))
 (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server3)(PORT=1522)))
 (CONNECT_DATA=(SERVICE_NAME=sales)))

ノート: 簡易接続プラス機能では、このネーミング・オプションがサポートされています。

接続文字列の一部にプロトコルの指定がある簡易接続アダプタ。

ホストはsalesserver、ポートは1521、サービス名はsalesです。

tcps://salesserver1:1521/sales
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcps)(HOST=salesserver1)(PORT=1521))
(SECURITY=(SSL_SERVER_DN_MATCH=TRUE))
(CONNECT_DATA=(SERVICE_NAME=sales)))

ノート: 簡易接続プラス機能では、このネーミング・オプションがサポートされています。

次のSECURITY属性がTLSでサポートされています。

ホストはsales-server、ポートは1521、サービス名はsalesです。

tcps://sales-server:1521/sales?ssl_server_cert_dn="cn=sales,cn=OracleContext,dc=us,dc=example,dc=com"&wallet_location="/tmp/oracle"

パラメータWALLET_LOCATIONは、Oracle DatabaseサーバーのOracle Database 23cでの使用は非推奨です。Oracle Databaseクライアントでの使用は非推奨ではありません。

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

(DESCRIPTION= (ADDRESS=(PROTOCOL=tcps)(HOST=salesserver)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=sales))(SECURITY=(SSL_SERVER_DN_MATCH=TRUE)(SSL_SERVER_CERT_DN=cn=sales,cn=OracleContext,dc=us,dc=example,dc=com)(WALLET_LOCATION=/tmp/oracle)))

8.1.4 クライアントでの簡易接続ネーミングの構成

クライアントが簡易接続ネーミング・メソッドを使用する前に確認する必要がある要件および構成タスクについて学習します。

次の条件が満たされると、クライアントは、簡易接続ネーミングを使用して、Oracle Databaseに接続できます。

  • Oracle Net Servicesソフトウェアがクライアントにインストールされている。

  • Oracle TCP/IPプロトコルは、クライアントとデータベース・サーバーの両方でサポートされている。

  • 拡張接続記述子を必要とする機能がない。

外部プロシージャ・コール、異機種間サービスなどの追加の接続情報が必要な拡張機能を備えた大規模で複雑な環境には、簡易接続ネーミングは不向きです。このような場合は、別のネーミング・メソッドの使用をお薦めします。

簡易接続ネーミングは、インストール時に自動的に構成されます。使用前には、EZCONNECTsqlnet.oraファイルのNAMES.DIRECTORY_PATHパラメータで指定されていることを確認する必要があります。このパラメータは、Oracle Netが接続識別子を接続記述子に解決する際に使用できるネーミング・メソッドの順序を指定します。

ノート:

TCPS接続に簡易接続ネーミング・メソッド(PROTOCOL=TCPS)を使用する場合、SSL_SERVER_DN_MATCHは、デフォルトでTRUEに設定されます。SSL_SERVER_DN_MATCH=TRUEの設定では、クライアントは部分DNの一致を実行して、サーバーとリスナーの証明書が有効であることを確認します。

完全DN (部分DNではない)でチェックする場合は、SSL_SERVER_CERT_DNにもDNを指定する必要があります。SSL_SERVER_CERT_DNを設定していない場合は、クライアントがサーバーへの接続を確立するために、部分DN一致が成功する必要があります。SSL_SERVER_CERT_DNを設定すると、クライアントがサーバーへの接続を確立するために、(サーバーとリスナーの両方の証明書による)完全DN一致が成功する必要があります。

次の手順では、簡易接続ネーミング・メソッドが構成されていることを確認する方法について説明します。

  1. Oracle Net Managerを起動します。

  2. ナビゲータ・ペインで、「ローカル」を展開し、次に「プロファイル」を選択します。

  3. 右ペインのリストから、「ネーミング」を選択します。

  4. 「メソッド」タブをクリックします。

    「選択メソッド」リストにEZCONNECTがリストされていることを確認します。リストされていない場合は、ステップ5に進みます。リストされている場合は、ステップ7に進みます。

  5. 「使用可能なメソッド」リストから「EZCONNECT」を選択し、右矢印ボタンをクリックします。

  6. 「選択メソッド」リストで「EZCONNECT」を選択し、「上へ」ボタンを使用して選択済項目をリストの最上位に移動します。

  7. 「ファイル」メニューから「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルは、NAMES.DIRECTORY_PATHパラメータで更新され、次のようにhostnameが最初に表示されます。

    NAMES.DIRECTORY_PATH=(ezconnect, tnsnames)

8.1.5 DNS別名を使用するための簡易接続ネーミングの構成

ホスト・ネーミング・メソッドで提供されているように、ホスト名にDNS別名をオプションとして構成できます。

ホスト・ネーミングでは、クライアントは、次のパターンを使用する接続文字列を使用します。

CONNECT username@DNS_alias
Enter password: password

次の手順では、DNS別名の構成方法について説明します。

  1. リスナーにデータベース・サービスが登録されていることを確認します。

    データベースがリスナーを検出できる場合は、サービス名を含むデータベース・サービスに関する情報は、サービス登録中に動的にリスナーに登録されます。リスナーは、次の条件が満たされる場合に検出されます。

    • デフォルトの名前がLISTENERのリスナーが、ポート1521のTCP/IP上で実行されている場合

    • LOCAL_LISTENERパラメータが初期化ファイルに設定されている場合

    データベースでリスナーが見つからない場合は、リスナーの静的登録を構成できます。

  2. ホスト名解決環境を確立します。

    DNS、NISまたは集中管理されているTCP/IPホスト・ファイルの/etc/hostsなどのメカニズムを構成できます。たとえば、あるデータベースのsales.us.example.comというサービス名が、sales-serverという名前のコンピュータ上に存在する場合、/etc/hostsファイルのエントリは次のようになります。

    #IP address of server     host name       alias
    192.0.2.35              sales-server    sales.us.example.com
    

    サービス名のドメイン部分は、ネットワーク・ドメインと一致する必要があります。

  3. DNSの別名を使用してデータベースに接続します。

    前のステップの例を使用すると、クライアントは、次のように接続文字列でsales.example.comを使用できます。

    CONNECT username@sales.us.example.com
    Enter password: password
    

    クライアントとサーバーが同じus.example.comなどのドメインに所属していれば、クライアントは接続文字列にsalesを入力するだけでかまいません。

8.2 ローカル・ネーミング・メソッドの構成

ローカル・ネーミング・メソッドでは、ネットワーク・サービス名をtnsnames.oraファイルに追加します。各ネットワーク・サービス名は、接続記述子にマップされます。

次の例は、DESCRIPTIONに含まれる接続記述子にマップされるネットワーク・サービス名salesを示しています。DESCRIPTIONセクションにはプロトコル・アドレスが含まれており、接続先データベース・サービスを識別します。この例では、プロトコルはTCP/IP、ポートは1521です。

例8-1 ホスト名を含む接続記述子

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

次の例は、IPv6アドレスおよびポート番号1522で識別されるホストに接続するための有効なtnsnames.oraエントリを示しています。

例8-2 IPv6アドレスを含む接続記述子

salesdb =
  ( DESCRIPTION =
    ( ADDRESS=(PROTOCOL=tcp)(HOST=2001:0db8:1:1::200C:417A)(PORT=1522) )
    ( CONNECT_DATA = 
        (SERVICES_NAME=sales.example.com) )
  )

次の項目で説明するように、ローカル・ネーミングは、インストール中またはインストール後に構成できます。

8.2.1 インストール中のtnsnames.oraファイル構成

Oracle Net Configuration Assistantを使用すると、クライアントに対するネットワーク・サービス名の構成が可能となります。Oracle Universal Installerは、ソフトウェアのインストール後にOracle Net Configuration Assistantを起動します。構成は、インストール・モードによって異なります。

  • 管理者またはランタイム・インストレーション: Oracle Net Configuration Assistantでは、Oracle Databaseサービスへ接続するために、tnsnames.oraファイルにネットワーク・サービス名を構成するように求められます。

  • カスタム・インストレーション: Oracle Net Configuration Assistantでは、使用するネーミング・メソッドを選択するように求められます。ローカル・ネーミングを選択した場合、Oracle Net Configuration Assistantでは、Oracle Databaseサービスへ接続するために、tnsnames.oraファイル中のネットワーク・サービス名を構成するように求められます。

8.2.2 インストール後のtnsnames.oraファイル構成

ネットワーク・サービス名は、インストール後、いつでもtnsnames.oraファイルに追加できます。

ローカル・ネーミング・メソッドを構成するには、次の作業を実行します。

ノート:

Oracle Netとの接続を構成する前に、基礎となるネットワーク接続が稼働している必要があります。

タスク1   ネット・サービス名の構成

ネットワーク・サービス名を構成するには、次のいずれかの方法を使用します。

それぞれの方法で同様の機能が提供されます。ただし、Oracle Net Managerにはsqlnet.oraファイルでの追加の構成オプションがあります。

  • Oracle Enterprise Manager Cloud Controlを使用したネット・サービス名の構成

    次の手順では、Oracle Enterprise Manager Cloud Controlを使用してtnsnames.oraファイルのネットワーク・サービス名を構成する方法について説明します。

    1. Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。

    2. 「管理」リストから「ローカル・ネーミング」を選択し、構成ファイルの場所が含まれるOracleホームを選択します。

    3. 「ローカル・ネーミング」ページが表示されます。データベース・サーバーへのログインを求められる場合があります。

    4. 「類似作成」をクリックします。

      「ネット・サービス名の作成」ページが表示されます。

    5. 「ネット・サービス名」フィールドに名前を入力します。

      ネットワーク・サービス名は、クライアントのドメインで修飾できます。sqlnet.oraファイルのパラメータNAMES.DEFAULT_DOMAINが設定されていると、ネットワーク・サービス名は自動的にドメインによって修飾されます。

    6. 「データベース情報」セクションで次のようにサービス・サポートを設定します。

      1. 宛先サービス名を入力します。

        関連項目:

        使用するサービス名文字列の詳細は、「接続記述子について」を参照

      2. データベース接続タイプを選択します。

        接続タイプには「データベースのデフォルト」のデフォルト設定をお薦めします。専用サーバーが初期化パラメータ・ファイルで構成されている場合、「専用サーバー」を選択し、共有サーバー構成を使用せずに、リスナーに専用サーバーを起動させることができます。共有サーバーが初期化パラメータ・ファイルで構成され、接続時に常に共有サーバーが使用されるようにする場合は、「共有サーバー」を選択します。

        関連項目:

        共有サーバーの構成の詳細は、共有サーバー・アーキテクチャの構成を参照してください。

    7. アドレス・セクションで次のようにプロトコル・サポートを設定します。

      1. 「追加」をクリックします。

        「アドレスの追加」ページが表示されます。

      2. 「プロトコル」リストからリスナーがリスニングするように構成されているプロトコルを選択します。このプロトコルも、クライアント上にインストールする必要があります。

      3. 提供されたフィールドで選択したプロトコルに対して適切なパラメータ情報を入力します。

        関連項目:

        プロトコル・パラメータの設定の詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

      4. (オプション)「拡張パラメータ」セクションを使用して、このセッションにおける送受信操作に必要なI/Oバッファ・スペース制限を「合計送信バッファ・サイズ」および「合計受信バッファ・サイズ」フィールドに指定します。

        関連項目:

        バッファ・スペースの詳細は、「I/Oバッファ・スペースの構成」を参照してください

      5. 「OK」をクリックします。

        プロトコル・アドレスは、アドレス・セクションに追加されます。

    8. 「OK」をクリックして、ネットワーク・サービス名を追加します。

      ネットワーク・サービス名が「ローカル・ネーミング」ページに追加されます。

    9. アドレスに対して接続時フェイルオーバーおよびクライアント・ロード・バランシング・オプションを選択します。

    10. 「OK」をクリックします。

    関連項目:

  • Oracle Net Managerを使用したネット・サービス名の構成

    次の手順では、Oracle Net Managerを使用してtnsnames.oraファイルのネットワーク・サービス名を構成する方法について説明します。

    1. Oracle Net Managerを起動します。

    2. ナビゲータ・ペインで、「ローカル」メニューから「サービス・ネーミング」を選択します。

    3. ツールバーで「+」をクリックするか、「編集」メニューから「作成」を選択します。

      「Netサービス名ウィザード」の「ようこそ」ページが表示されます。

    4. 「ネット・サービス名」フィールドに名前を入力します。

      ネットワーク・サービス名は、クライアントのドメインで修飾できます。sqlnet.oraファイルのパラメータNAMES.DEFAULT_DOMAINが設定されていると、ネットワーク・サービス名は自動的にドメインによって修飾されます。

    5. 「次へ」をクリックします。

      「プロトコル」ページが表示されます。

    6. リスナーがリスニングするように構成されているプロトコルを選択します。このプロトコルも、クライアント上にインストールする必要があります。

    7. 「次へ」をクリックします。

      「プロトコル設定」ページが表示されます。

    8. 提供されたフィールドで選択したプロトコルに対して適切なパラメータ情報を入力します。

      関連項目:

      プロトコル・パラメータの設定の詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

    9. 「次へ」をクリックします。

      「サービス」ページが表示されます。

    10. 宛先サービス名を入力し、オプションでデータベース接続タイプを選択します。

      オラクル社では、接続タイプには「データベースのデフォルト」のデフォルト設定の使用をお薦めします。専用サーバーが初期化パラメータ・ファイルで構成されている場合、「専用サーバー」を選択し、共有サーバー構成を使用せずに、リスナーに専用サーバーを起動させることができます。共有サーバーが初期化パラメータ・ファイルで構成され、接続時に常に共有サーバーが使用されるようにする場合は、「共有サーバー」を選択します。

      関連項目:

    11. 「次へ」をクリックします。

      「テスト」ページが表示されます。

    12. ネットワーク・サービス名が機能するかどうかを確認するには、「テスト」をクリックし、Netサービス名ウィザードを終了するには、「終了」をクリックします。

      「テスト」をクリックすると、Oracle Netは構成済の接続記述子情報を使用して、データベース・サーバーに接続します。このため、リスナーとデータベースを実行していなければテストを正常に実行できません。実行されていない場合は、テストの前に、「Oracle Net ListenerとOracle Databaseサーバーの起動」を参照してコンポーネントを起動してください。テスト中、ステータスとテスト結果を示す「接続テスト」ダイアログ・ボックスが表示されます。テストが成功すると、次のメッセージが表示されます。

      The connection test was successful.
      

      テストが成功した場合は、「閉じる」をクリックして「接続テスト」ダイアログ・ボックスを閉じてからステップ13に進みます。

      テストが正常終了しなかった場合は、次の処置を行ってください。

      1. データベースとリスナーが実行されていることを確認し、「テスト」をクリックします。

      2. 「ログインの変更」をクリックして、接続に使用するユーザー名とパスワードを変更し、「テスト」をクリックします。

    13. 「終了」をクリックして、「Netサービス名ウィザード」を終了します。

    14. 「ファイル」メニューから「ネットワーク構成の保存」を選択します。

      関連項目:

  • Oracle Net Configuration Assistantを使用したネット・サービス名の構成

    次の手順では、Oracle Net Configuration Assistantを使用してtnsnames.oraファイルのネットワーク・サービス名を構成する方法について説明します。

    1. Oracle Net Configuration Assistantを起動します。

      「ようこそ」ページが表示されます。

    2. 「ローカル・ネット・サービス名構成」を選択してから、「次へ」をクリックします。

      「ネット・サービス名の構成」ページが表示されます。

    3. 「追加」をクリックし、「次へ」をクリックします。

      「ネット・サービス名の構成」ページが表示されます。

    4. 「サービス名」フィールドにネット・サービス名を入力します。

    5. 「次へ」をクリックします。

    6. ウィザードのプロンプトとオンライン・ヘルプに従って、ネットワーク・サービス名を作成します。

タスク2   第1番目のネーミング・メソッドとしてのローカル・ネーミングの構成

sqlnet.oraファイルのNAMES.DIRECTORY_PATHパラメータで第1番目のネーミング・メソッドとして指定するローカル・ネーミングを構成します。このパラメータは、Oracle Netが接続識別子を接続記述子に解決する際に使用するネーミング・メソッドの順序を指定します。

第1番目のネーミング・メソッドとしてローカル・ネーミング・メソッドを構成するには、次のいずれかの方法を使用します。

それぞれの方法で同じ機能が提供されます。

Oracle Enterprise Manager Cloud Controlを使用したローカル・ネーミングの構成

次の手順では、Oracle Enterprise Manager Cloud Controlを使用して第1番目のネーミング・メソッドとしてローカル・ネーミングを指定する方法について説明します。

  1. Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。

  2. 「管理」リストから「ネットワーク・プロファイル」を選択します。

  3. 「実行」をクリックします。

  4. 「ネーミング・メソッド」を選択します。

  5. 「使用可能なメソッド」リストから「TNSNAMES」を選択します。

  6. 「移動」をクリックして、選択したメソッドを「選択したメソッド」リストに移動します。

  7. 「昇格」ボタンを使用してTNSNAMESをリストの最上位に移動します。

  8. 「OK」をクリックします。

Oracle Net Managerを使用したローカル・ネーミングの構成

次の手順では、Oracle Net Managerを使用して第1番目のネーミング・メソッドとしてローカル・ネーミングを指定する方法について説明します。

  1. Oracle Net Managerを起動します。

  2. ナビゲータ・ペインで、「ローカル」メニューから「プロファイル」を選択します。

  3. 右ペインのリストから、「ネーミング」を選択します。

  4. 「メソッド」タブをクリックします。

  5. 「使用可能なメソッド」リストから「TNSNAMES」を選択し、右矢印ボタンをクリックします。

  6. 「選択メソッド」リストで「TNSNAMES」を選択し、「上へ」ボタンを使用して選択済項目をリストの最上位に移動します。

  7. 「ファイル」メニューから「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルは、NAMES.DIRECTORY_PATHパラメータで更新され、次のようにtnsnamesが最初に表示されます。

    NAMES.DIRECTORY_PATH=(tnsnames, EZCONNECT)
タスク3   他のクライアントへの構成のコピー

クライアントを1台構成してから、tnsnames.orasqlnet.oraの構成ファイルを他のクライアントの同じ場所にコピーします。これによって、ファイルの一貫性が保たれます。その他に、Oracle Net Assistantをすべてのクライアント上で使用できます。

タスク4   リスナーの構成

サーバー上のリスナーは、ネットワーク・サービス名用に構成したものと同じプロトコル・アドレスを使用してリスニングするように構成する必要があります。デフォルトでリスナーは、ポート1521のTCP/IPプロトコルを使用するように構成されています。

関連項目:

リスナー構成の詳細は、「Oracle Net Listenerの構成と管理」を参照してください

タスク5   データベースへの接続

クライアントは、次の構文を使用してデータベースへ接続できます。

CONNECT username@net_service_name

8.3 ディレクトリ・ネーミング・メソッドの構成

ディレクトリ・ネーミング・メソッドでは、Oracle Internet DirectoryやMicrosoft Active DirectoryなどのLDAP準拠ディレクトリ・サーバーに含まれる接続記述子に接続識別子をマップします。

ディレクトリでは、データベース・サービスおよびネットワーク・サービス名の集中管理が提供され、サービスの追加または再配置が容易になります。

データベース・サービス・エントリはインストール時に作成されます。ネットワーク・サービス名のエントリとネットワーク・サービス別名のエントリを作成および変更し、データベース・サービス・エントリを変更するには、Oracle Enterprise Manager Cloud ControlおよびOracle Net Managerを使用します。クライアントは、データベースへの接続にこれらのエントリを使用できます。

ディレクトリ・ネーミング・メソッドを構成するには、次の作業を実行します。

タスク1   ディレクトリのバージョンの互換性の検証

ネットワーク・サービス名を作成しようとしているコンピュータから次の検証ステップを実行します。

  1. コンピュータにOracle Net Serviceソフトウェアの最新リリースがインストールされていることを確認します。リリース情報は、「ヘルプ」メニューの「情報」オプションにあります。

  2. Oracle Internet Directoryコンフィギュレーション・アシスタントを実行して、ディレクトリ・サーバー、Oracleコンテキスト、Oracleスキーマのリリースを確認します。

タスク2   ネット・サービス名のディレクトリへの作成

データベース・サービス・エントリではなくネットワーク・サービス名を使用するようにクライアントを構成できます。次の手順では、ネットワーク・サービス名の作成方法について説明します。

ノート:

  1. Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。「「Net Services管理」ページへのアクセス」を参照してください。

  2. 「管理」リストから「ディレクトリ・ネーミング」を選択し、ディレクトリ・サーバーのあるOracleホームを選択します。

  3. 「実行」をクリックします。

    「ディレクトリ・ネーミング」ページが表示されます。

  4. 「ネット・サービス名」タブをクリックします。

  5. 結果セクションの「作成」をクリックします。

    「一般」タブのある「ネット・サービス名の作成」ページが表示されます。

  6. 「ネット・サービス名」フィールドに名前を入力します。

  7. データベース情報セクションで次のようにサービス・サポートを設定します。

    1. 宛先サービス名を入力します。「接続記述子について」を参照してください。

    2. データベース接続タイプを選択します。オラクル社では、接続タイプには「データベースのデフォルト」の使用をお薦めします。初期化パラメータ・ファイルで共有サーバーが構成されている場合は、次のオプションを使用できます。

      • 共有サーバー構成を使用せずに、リスナーに専用サーバーを起動させるには、「専用サーバー」を選択します。

      • 接続時に常に共有サーバーが使用されるようにするには、「共有サーバー」を選択します。

      共有サーバー・アーキテクチャの構成」を参照してください。

  8. アドレス・セクションで次のようにプロトコル・サポートを設定します。

    1. 「追加」をクリックします。

      「アドレスの追加」ページが表示されます。

    2. 「プロトコル」リストから、リスナーがリスニングするように構成されているプロトコルを選択します。このプロトコルも、クライアント上にインストールする必要があります。

    3. 提供されたフィールドで選択したプロトコルに対して適切なパラメータ情報を入力します。Oracle Database Net Servicesリファレンスを参照してください。

    4. (オプション)「拡張パラメータ」セクションを使用して、このセッションにおける送受信操作に必要なI/Oバッファ・スペース制限を「合計送信バッファ・サイズ」および「合計受信バッファ・サイズ」フィールドに指定します。「I/Oバッファ・スペースの構成」を参照してください。

    5. 「OK」をクリックします。

      プロトコル・アドレスは、アドレス・セクションに追加されます。

  9. 「OK」をクリックして、ネットワーク・サービス名を追加します。

    ネットワーク・サービス名が「ネット・サービス名」タブの結果セクションに追加されます。

    複数のプロトコル・アドレスを構成する方法については、リスナー・プロトコル・アドレスのリスト作成を参照してください。CONNECT_DATAオプションを追加で構成するには、拡張接続データ・パラメータについてを参照してください。

タスク3   データベース・サービス・エントリに対する接続情報の変更

ディレクトリ・ネーミングへのデータベース登録が完了すると、ディレクトリにデータベース・サービス・エントリが作成されます。デフォルトでは、このエントリにはプロトコル・アドレスで表されたリスナーの位置を含む、ネットワーク・ルート情報が含まれています。この情報を再作成したり、既存のネットワーク・ルート情報を変更できます。

ノート:

OracleNetAdminsグループまたはOracleContextAdminsグループのメンバーであるユーザーのみが、ディレクトリ内のデータベース・サービスに関するネットワーク情報を変更できます。これらのグループにユーザーを追加したり削除したりするには、「ディレクトリ・サーバーのエントリを追加または変更できるユーザー」を参照してください。

次の手順では、データベース・サービスのネットワーク・ルート情報を作成または変更する方法について説明します。

  1. Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。「「Net Services管理」ページへのアクセス」を参照してください。

  2. 「管理」リストから「ディレクトリ・ネーミング」を選択し、ディレクトリ・サーバーのあるOracleホームを選択します。

  3. 「実行」をクリックします。データベース・サーバーおよびディレクトリ・サーバーへのログインを求められる場合があります。

    「ディレクトリ・ネーミング」ページが表示されます。

  4. 「データベース・サービス」タブをクリックします。

  5. 「簡易検索」セクションで「Oracleコンテキスト」と検索基準を選択し、Oracleコンテキストのネットワーク・サービス名を確認します。

    データベース・サービス名が結果セクションに表示されます。

  6. 結果セクションでデータベース・サービスを選択し、「編集」をクリックします。

タスク4   ネット・サービス別名の作成

ディレクトリ・サーバーのネット・サービス別名によって、クライアントはデータベース・サービスまたはネットワーク・サービス名を代替名で参照できます。たとえば、salesというネットワーク・サービス名に対してsalesaliasというネットワーク・サービス別名を作成できます。salesaliasCONNECT scott@salesaliasとして使用してデータベースに接続すると、salesの接続記述子情報に解決されて使用されます。

ネットワーク・サービス別名の主な使用方法は、次の2つです。

  • クライアントがデータベース・サービスまたはネットワーク・サービス名を別の名前で参照する手段としてネットワーク・サービス別名を使用する方法。

  • データベース・サービスの1つのOracleコンテキストでネットワーク・サービス別名を使用し、別のOracleコンテキストでネットワーク・サービス名を使用する方法。この方法によって、データベース・サービスまたはネットワーク・サービス名をディレクトリ・サーバーで一度定義すると、他のOracleコンテキストを使用するクライアントで参照できます。ネットワーク・サービス別名の概要については、ネット・サービス別名のエントリの理解を参照してください。

ノート:

  • OracleNetAdminsグループまたはOracleContextAdminsグループのいずれかのメンバーであるユーザーのみが、ディレクトリのネットワーク・サービス別名エントリを作成または変更できます。OracleNetAdminsグループにユーザーを追加したり削除したりするには、「ディレクトリ・サーバーのエントリを追加または変更できるユーザー」を参照してください。

  • ネットワーク・サービス別名を作成したり、アクセスするには、Oracleホームが少なくともリリース9.2.0.4であることを確認してください。

  • Microsoft Active Directoryではネット・サービス別名はサポートされていません。

  • ネットワーク・サービス別名を使用する場合は、クライアントに対してNLS_LANG環境変数が設定されていることを確認してください。

ネットワーク・サービス別名を作成するには、次のいずれかの方法を使用します。

それぞれの方法で同様の機能が提供されます。

Oracle Enterprise Manager Cloud Controlを使用したネットワーク・サービス別名の構成

次の手順では、Oracle Enterprise Manager Cloud Controlを使用してネットワーク・サービス別名を構成する方法について説明します。

  1. Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。「「Net Services管理」ページへのアクセス」を参照してください。

  2. 「管理」リストから「ディレクトリ・ネーミング」を選択し、ディレクトリ・サーバーのあるOracleホームを選択します。

  3. 「実行」をクリックします。

    「ディレクトリ・ネーミング」ページが表示されます。

  4. 「ネット・サービス別名」タブをクリックします。

  5. 結果セクションの「作成」をクリックします。

    「ネット・サービス別名の作成」ページが表示されます。

  6. 「ネット・サービス別名」フィールドに別名として名前を入力します。

  7. 参照サービスの詳細セクションで、フィールドに次の情報を入力します。

    • Oracleコンテキスト: データベース・サービスまたはネットワーク・サービス名のOracleコンテキストを、リストから選択するかフィールドに入力します。

    • 参照サービス名: データベース・サービスのDNまたはネットワーク・サービス名を選択します。

  8. 「OK」をクリックして、ネットワーク・サービス別名を追加します。

    ネットワーク・サービス別名が「ディレクトリ・ネーミング」ページに追加されます。

Oracle Net Managerを使用したネットワーク・サービス別名の構成

次の手順では、Oracle Net Managerを使用してネットワーク・サービス別名を構成する方法について説明します。

  1. Oracle Net Managerを起動します。「Oracle Net Managerを使用したOracle Net Servicesの構成」を参照してください。

  2. ナビゲータ・ペインで、「ディレクトリ」メニューから「サービス・ネーミング」を選択します。

  3. 「別名」を選択します。

  4. 「編集」メニューから「作成」を選択します。

  5. 「ネット・サービス別名」フィールドにネットワーク・サービス別名を入力します。

  6. Oracleコンテキストと名前を選択します。

  7. 「作成」をクリックします。

  8. 「ファイル」メニューから「ネットワーク構成の保存」を選択します。

タスク5   クライアント検索の第1番目のネーミング・メソッドとしてのLDAPの構成

sqlnet.oraファイルのNAMES.DIRECTORY_PATHパラメータで、使用する第1番目のネーミング・メソッドとしてディレクトリ・ネーミングを構成します。このパラメータは、Oracle Netが接続識別子を接続記述子に解決する際に使用するネーミング・メソッドの順序を指定します。LDAPを第1番目のネーミング・メソッドとして構成するには、次のいずれかの方法を使用できます。

Oracle Enterprise Manager Cloud Controlを使用したLDAPの構成

次の手順では、Oracle Enterprise Manager Cloud Controlを使用して第1番目のネーミング・メソッドとしてディレクトリ・ネーミングを指定する方法について説明します。

  1. Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。「「Net Services管理」ページへのアクセス」を参照してください。

  2. 「管理」リストから「ネットワーク・プロファイル」を選択します。

  3. 「実行」をクリックします。

  4. 「ネーミング・メソッド」を選択します。

  5. 「使用可能なメソッド」リストから「LDAP」を選択します。

  6. 「移動」をクリックして、選択したメソッドを「選択したメソッド」リストに移動します。

  7. 「昇格」ボタンを使用してLDAPをリストの最上位に移動します。

  8. 「OK」をクリックします。

Oracle Net Managerを使用したLDAPの構成

次の手順では、Oracle Net Managerを使用して第1番目のネーミング・メソッドとしてディレクトリ・ネーミングを指定する方法について説明します。

  1. Oracle Net Managerを起動します。「Oracle Net Managerを使用したOracle Net Servicesの構成」を参照してください。

  2. ナビゲータ・ペインで、「ローカル」メニューから「プロファイル」を選択します。

  3. 右ペインのリストから、「ネーミング」を選択します。

  4. 「メソッド」タブをクリックします。

  5. 「使用可能なメソッド」リストから「LDAP」を選択し、右矢印ボタンをクリックします。

  6. 「選択メソッド」リストで「LDAP」を選択し、「上へ」ボタンを使用して選択済項目をリストの最上位に移動します。

  7. 「ファイル」メニューから「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルは、NAMES.DIRECTORY_PATHパラメータで更新され、次のようにldapが最初に表示されます。

    NAMES.DIRECTORY_PATH=(ldap, tnsnames, hostname)
タスク6   リスナーの構成

サーバー上のリスナーは、ネットワーク・サービス名用に構成したものと同じプロトコル・アドレスを使用してリスニングするように構成する必要があります。デフォルトでリスナーは、ポート1521のTCP/IPプロトコルでリスニングするように構成されています。リスナー構成の詳細は、「Oracle Net Listenerの構成と管理」を参照してください。

タスク7   データベースへの接続

データベース・サービスやネットワーク・サービス名のディレクトリの場所と一致するディレクトリ・エントリがデフォルトに構成されているクライアントは、次の構文を使用してデータベースに接続できます。

CONNECT username@connect_identifier

エントリのディレクトリの場所と一致しないディレクトリ・エントリがデフォルトに構成されているクライアントは、エントリの識別名または完全修飾名を使用する必要があります。完全修飾名の使用方法については、ディレクトリ情報ツリーの理解を参照してください。

8.3.1 ディレクトリ・ネーミング・サーバーでの複数のデフォルト・コンテキストの作成

複数のデフォルト・コンテキストを有効にするには、デフォルトのoracleContextとして使用するドメインとDN間の関連付けリストを付けて、orclCommonContextMapを定義します。

クライアントに、複数のOracleコンテキストが含まれるディレクトリでの検出機能を使用させる必要がある場合は、基本のadminコンテキストにorclCommonContextMap属性を定義できます。この属性は、orclDefaultSubscriber属性をオーバーライドします。名前参照を実行すると、検出操作によって2つの属性値が戻され、クライアントはそれらの値に基づいて、使用するOracleコンテキストを決定します。

orclCommonContextMap属性が定義されていない場合、orclDefaultSubscriberがデフォルトとして使用されます。orclCommonContextMapが定義されている場合、クライアントは、DNSドメインに関連付けられているデフォルトのOracleコンテキストをorclCommonContextMapから検索します。

LDIFファイル・エントリの例を次に示します。

$ ldapmodify -v -h sales-server -p 1389 -D cn=orcladmin -q
 dn: cn=Common,cn=Products,cn=OracleContext
 replace: orclCommonContextMap
 orclCommonContextMap:
 (contextMap=
   (domain_map=(domain=us.example.com)(DN="dc=example,dc=com"))
   (domain_map=(domain=uk.example.com)(DN="dc=sales,dc=com"))
  )
  

改行を含めずにcontextMapエントリを入力する必要があります。

8.3.2 ローカル・ネーミング・エントリのディレクトリ・ネーミング・サーバーへのエクスポート

tnsnames.oraファイル内に格納されているデータをディレクトリ・サーバーにエクスポートする方法を説明します。これらのタスクでは、ディレクトリ・サーバーがインストールされて実行中であると想定しています。

tnsnames.oraファイルがすでに存在する場合、そのネットワーク・サービス名は、ディレクトリ・サーバーへエクスポートできます。エクスポート手順は、一度に1つのドメインに対して実行します。

タスク1   ディレクトリ・サーバーでの構造の作成

ディレクトリ・サーバーで、ネットワーク・サービス名をインポートする構造のディレクトリ情報ツリー(DIT)を作成します。Oracleコンテキストの先頭までの構造を作成します。

たとえば、tnsnames.oraファイルでドメイン構造example.comがサポートされており、ディレクトリ内にこのドメインをレプリケートする場合は、次の図に示すように、そのディレクトリにドメイン・コンポーネント・エントリdc=comおよびdc=exampleを作成します。

図8-1 ディレクトリ・サーバー内のexample.com

図8-1の説明が続きます
「図8-1 ディレクトリ・サーバー内のexample.com」の説明

現在tnsnames.oraで使用しているドメイン構造をレプリケートできます。または、完全に異なる構造を作成することもできます。完全に異なる構造を導入すると、クライアントが接続文字列にネットワーク・サービス名を入力する方法が変更されます。構造を変更する前に、相対ネーミングおよび完全修飾ネーミングを検討することをお薦めします。

タスク2   Oracleコンテキストの作成

Oracle Internet Directoryコンフィギュレーション・アシスタントを使用して、タスク1で作成した各DITの位置の下にOracleコンテキストを作成します。Oracleコンテキストには、cn=OracleContextの相対識別名(RDN)があります。Oracleコンテキストには、その他のOracleコンポーネントのエントリとともに、ネットワーク・オブジェクト・エントリが格納されます。次の図では、cn=OracleContextdc=example,dc=comの下に作成されます。

図8-2 Oracleコンテキスト

図8-2の説明が続きます
「図8-2 Oracleコンテキスト」の説明
タスク3   ディレクトリ・サーバーの使用の構成

Oracleコンテキストを作成する際に作業の一部として構成が終了していない場合、Oracleホームをディレクトリ・サーバーで使用できるように構成します。Oracleホームは、エクスポートを実行できる構成にする必要があります。

タスク4   ディレクトリ・サーバーへのオブジェクトのエクスポート

tnsnames.oraファイルに含まれるネットワーク・サービス名をエクスポートするには、Oracle Enterprise Manager Cloud ControlrまたはOracle Net Managerのいずれかを使用します。

  • Oracle Enterprise Manager Cloud Controlを使用したオブジェクトのエクスポート

    次の手順では、Oracle Enterprise Manager Cloud Controlを使用してオブジェクトをエクスポートする方法について説明します。

    1. Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。「「Net Services管理」ページへのアクセス」を参照してください。

    2. 「管理」リストから「ディレクトリ・ネーミング」を選択し、ディレクトリ・サーバーのあるOracleホームを選択します。

    3. 「実行」をクリックします。

      「ディレクトリ・ネーミング」ページが表示されます。

    4. 「ネット・サービス名」タブをクリックします。

    5. 関連リンク・セクションで「ディレクトリ・サーバーへのネット・サービス名のインポート」をクリックします。

      「ディレクトリ・サーバーへのネット・サービス名のインポート」ページが表示されます。

    6. 「Oracle Internet Directory Server接続先」セクションの「Oracleコンテキスト」リストから、選択したネットワーク・サービス名のエクスポート先であるOracleコンテキストを選択します。

    7. 「インポートするネット・サービス名」セクションで、ネットワーク・サービス名を選択します。

    8. 「追加」をクリックして、ネットワーク・サービス名をディレクトリに追加します。

      ネットワーク・サービス名が「ディレクトリ・ネーミング」ページに追加されます。

  • Oracle Net Managerを使用したオブジェクトのエクスポート

    次の手順では、Oracle Net Managerを使用してオブジェクトをエクスポートする方法について説明します。

    1. Oracle Net Managerを起動します。「Oracle Net Managerを使用したOracle Net Servicesの構成」を参照してください。

    2. エクスポートするtnsnames.oraファイルがOracle Net Managerにロードされていない場合は、「ファイル」メニューから「ネットワーク構成を開く」を選択して、ディレクトリにエクスポートするtnsnames.oraファイルを選択します。

    3. 「ツール」メニューから「ディレクトリ」を選択し、「ネット・サービス名のエクスポート」を選択します。

      ディレクトリ・サーバー移行ウィザードが起動します。

    4. 「次へ」をクリックします。

      tnsnames.oraファイルで、複数ドメインを持つネットワーク・サービス名が検出された場合は、「ドメインの選択」ページが表示されます。ステップ5に進みます。

      ネットワーク・サービス名がドメインで修飾されていない場合、「ネット・サービス名の選択」ページが表示されます。ステップ6に進みます。

    5. エクスポート用のネットワーク・サービス名のネットワーク・ドメインを選択して、「次へ」をクリックします。

      「ネット・サービス名の選択」ページが表示されます。

    6. エクスポートするリストからネットワーク・サービス名を選択して、「次へ」をクリックします。

      「接続先コンテキストの選択」ページが表示されます。

    7. 「接続先コンテキストの選択」ページで、次を実行します。

      1. 「ディレクトリ・ネーミング・コンテキスト」リストから、Oracleコンテキストを含むディレクトリ・エントリを選択します。ディレクトリ・ネーミング・コンテキストは、1つまたは複数のOracleコンテキストを含むディレクトリ・サブツリーの一部です。

      2. 「Oracleコンテキスト」リストから、選択したネットワーク・サービス名のエクスポート先であるOracleコンテキストを選択します。

      3. 「次へ」をクリックします。

      「ディレクトリ・サーバーの更新」ページがエクスポート操作のステータスで表示されます。

    8. 「終了」をクリックして、ディレクトリ・サーバー移行ウィザードを終了します。

8.3.3 ディレクトリ・ネーミング・エントリのtnsnames.oraファイルへのエクスポート

ディレクトリ・ネーミング・エントリの作成後、そのエントリをローカルのtnsnames.oraファイルにエクスポートし、さらにそのファイルをクライアントに配布します。ディレクトリ・サーバーが一時的に使用できないときは、クライアントはローカルに保存したファイルを使用できます。

次の手順では、ローカルtnsnames.oraファイルにディレクトリ・ネーミングのエントリをエクスポートする方法について説明します。

  1. Oracle Enterprise Manager Cloud Controlの「Net Services管理」ページにアクセスします。

  2. 「管理」リストから「ディレクトリ・ネーミング」を選択し、ディレクトリ・サーバーのあるOracleホームを選択します。

  3. 「実行」をクリックします。

    「ディレクトリ・ネーミング」ページが表示されます。

  4. 「ネット・サービス名」タブをクリックします。

  5. 「簡易検索」セクションで「Oracleコンテキスト」と検索基準を選択し、特定のOracleコンテキストのネットワーク・サービス名を確認します。

    ネットワーク・サービス名が結果セクションに表示されます。

  6. 結果セクションで、「tnsnames.oraに保存」をクリックします。

    「処理中: tnsnames.oraファイルの作成」ページが表示され、作成中であることが通知されます。

8.3.4 ウォレットを使用するためのLDAPネーミング・アダプタの構成

クライアントLDAPネーミング・アダプタは、LDAPディレクトリへの接続中にLDAPバインドを認証し、接続文字列名を解決します。認証中にOracleウォレットを使用するようにアダプタを構成できます。

  1. LDAPサーバー証明書を取得し、Oracleウォレットを作成して、証明書およびLDAPユーザー資格証明をウォレット・トラストストアに格納します。
    1. openssl s_clientを使用して、LDAPディレクトリ・サーバーからLDAPサーバー証明書を取得します。
      openssl s_client -connect LDAP server host:port -showcerts -outform PEM

      -connect LDAP server host:portオプションは、接続のLDAPディレクトリ・サーバーのホスト名およびポートを指定します。-showcertsオプションは、サーバーによって送信されたLDAPサーバーの証明書リストを表示します。-outform PEMオプションは、サーバー証明書をファイル・システム・ディレクトリ(/tmp/ldapservercert.txtなど)にPEM形式で抽出します。

    2. 空のOracleウォレットを作成します。
      orapki wallet create -wallet wallet_directory

      -wallet wallet_directoryオプションは、ウォレットを作成するファイル・システム・ディレクトリの場所を指定します。

    3. LDAPサーバー証明書をウォレットに追加します。
      orapki wallet add -wallet wallet_directory -trusted_cert -cert

      -certオプションは、LDAPサーバー証明書を格納したファイル・システム・ディレクトリの場所(/tmp/ldapservercert.txtなど)を指定します。

    4. LDAPユーザー名のDNを使用して、ウォレットにエントリを作成します。
      mkstore -wrl wallet_directory -createEntry oracle.ldap.client.dn dn_of_ldap_username

      たとえば:

      mkstore -wrl /app/wallet -createEntry oracle.ldap.client.dn cn=userinldap,dc=example,dc=com

      Microsoft Active Directoryの場合、userPrincipalNameまたはダウンレベルのログオン名(sAMAccountName)属性を指定することもできます。

    5. LDAPパスワードを使用して、ウォレットにエントリを作成します。
      mkstore -wrl wallet_directory -createEntry oracle.ldap.client.password ldap_password
    6. ウォレットの自動ログインを有効にします。
      orapki wallet create -wallet wallet_directory -auto_login

      ノート:

      • mkstoreウォレット管理コマンドライン・ツールは、Oracle Database 23cでは非推奨であり、将来のリリースで削除される可能性があります。

        ウォレットの管理には、orapkiコマンドライン・ツールの使用をお薦めします。

      • 自動ログイン・ウォレットは、ファイル・システム権限によって保護されます。オペレーティング・システム・ユーティリティを使用して、クライアントに対してのみ読取りおよび書込み権限を付与することでウォレット・ディレクトリを保護します。

      • Oracleは、Oracle Database 23cで新しい自動ログイン・ウォレット・バージョン(7)を導入しました。Oracleローカル自動ログイン・ウォレットのバージョン6は非推奨です。

        ローカル自動ログイン・ウォレットは、orapkiで変更することで更新できます。

  2. WALLET_LOCATIONパラメータを使用して、sqlnet.oraファイルにウォレット・ディレクトリを指定します。
    WALLET_LOCATION=
      (SOURCE=
        (METHOD=file)
        (METHOD_DATA=
           (DIRECTORY=wallet_directory)))

    たとえば:

    WALLET_LOCATION=
      (SOURCE=
        (METHOD=FILE)
        (METHOD_DATA=
           (DIRECTORY=/app/wallet/)))

    このパラメータの構成の詳細は、WALLET_LOCATIONを参照してください。

    ノート:

    パラメータWALLET_LOCATIONは、Oracle DatabaseサーバーのOracle Database 23cでの使用は非推奨です。Oracle Databaseクライアントでの使用は非推奨ではありません。

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

  3. sqlnet.oraファイルでLDAP接続の認証設定を構成します。
    • NAMES.LDAP_AUTHENTICATE_BIND=TRUEを設定して、(WALLET_LOCATIONで定義された)ウォレット・ディレクトリを使用してLDAP接続が認証されるように指定します。

    • NAMES.LDAP_AUTHENTICATE_BIND_METHOD=LDAPS_SIMPLE_AUTHを設定して、LDAPS (LDAP over TLS接続)で簡易認証方式を使用します。

    これらの設定の構成の詳細は、NAMES.LDAP_AUTHENTICATE_BINDおよびNAMES.LDAP_AUTHENTICATE_BIND_METHODを参照してください。

  4. Oracle Net Managerを使用して、LDAPサーバーに1つ以上のディレクトリ・エントリを追加します。
  5. SQL*Plusまたはその他のデータベース・クライアントを使用して、名前解決を確認します。

8.4 集中化された構成プロバイダのネーミング・メソッドの構成

このネーミング・メソッドを使用すると、Azure App ConfigurationストアやOracle Cloud Infrastructure (OCI) Object Storageなどの集中化された構成プロバイダのJSONファイルに含まれる接続記述子に、接続識別子がマップされます。

オプションで、データベース資格証明(データベース・ユーザー名やデータベース・パスワードなど)およびOracle Call Interface属性(statement_cache_sizeprefetch_rowslob_prefetch_sizesession_poolなど)を集中化された構成プロバイダに格納することもできます。Azure Key VaultまたはOCI Vaultを使用してデータベース・パスワードを格納し、そのボールトへの参照を構成プロバイダに追加する必要があります。

ここでの接続識別子には、サーバー名やアプリケーション構成名、パス、認証の詳細など、構成プロバイダのインスタンス固有の詳細が含まれています。データベース・クライアントは、構成プロバイダから構成データを安全に参照して、データベースに接続できます。

次の集中化された構成プロバイダのいずれかを使用します:

8.4.1 Azure App Configurationストア

Azure App Configurationは、構成データのアプリケーション設定およびラベルを集中管理するサービスを提供します。

これにより、URIとしてネットワーク・サービス名パスを使用してアクセスできるキー値のペア(キー名値)を格納できます。

8.4.1.1 Azure App Configurationストアを使用するための前提条件

Azure App Configurationストアの使用を開始する前に、AzureポータルまたはAzure CLIまたはAPIを使用して、これらのステップを実行します。

  • OAuthアプリケーションを登録し、認可権限を付与します:

    Azure App Configurationストアの管理者は、アプリケーション登録を使用してOAuthアプリケーションをMicrosoft Azure Active Directoryに登録する必要があります。管理者は、Azure App Configurationストアにアクセスするために、このOAuthアプリケーションに認可権限を付与する必要もあります。

  • Azure App Configurationでキーを編成する方法を理解します:

    connect_descriptorで終わるキーは、キー値の識別子として機能し、データベース接続の対応する値を格納および取得するために使用されます。

    / (スラッシュ)、& (アンパサンド)または: (コロン)などの文字デリミタを使用して、キーを階層ネームスペースに編成することが一般的です。アプリケーションに適した規則を使用します。この例では、/ (スラッシュ)を文字デリミタとして使用してキーを編成します。

    connect_descriptor接尾辞のないキーの一部は、データベース・ユーザー名、データベース・パスワードおよびOCI属性を導出するための接頭辞として扱われます。データベース・クライアントは、導出した接頭辞がデータベース・ユーザー名として使用された後、user接尾辞で終わるキー、データベース・パスワードのpassword接尾辞で終わるキー、およびOCI属性のOCI接尾辞で終わるキーを検索します。

    アプリケーション・ユーザーは、アプリケーション要件に従って接続記述子を接頭辞の下に編成し、Azure App Configurationでこのようなすべてのキーの認証および認可を設定する必要があります。オプションで、同じ接頭辞の下にデータベース資格証明(データベース・ユーザーのユーザー名とパスワード)およびOracle Call Interface属性を追加できます:
    • prefix/connect_descriptor (必須)

    • prefix/user (オプション)

    • prefix/password (オプション)

    • prefix/oci (オプション)

    接続識別子にはキーの一部が含まれており、接頭辞としてconnect_descriptorを終了していません。データベース・クライアントは、connect_descriptoruserpasswordまたはociを追加してキーを完了し、そのキーを使用してAzure App Configurationストアを検索します。

    Azureの集中化された構成プロバイダのネーミングの構文:
    config-azure://{appconfig-name}[?key=prefix&label=value&option1=value1&option2=value2...]
    たとえば:
    sqlplus dbuser/@"config-azure://dbclient-appconfig?key=/app1/subapp1/&azure_client_id=client id&azure_client_secret=secret&azure_tenant_id=tenant id"

    この構文については、以降の項で詳しく説明します。

  • (オプション) Azure Key Vaultを作成し、認可権限を付与します:

    Oracle Database資格証明をAzure Key Vaultに格納する場合は、データベース・パスワードをシークレットとして格納したボールトを作成します。後でAzure App ConfigurationにKey Vault参照を追加します。

    Azure App Configurationストアの管理者は、このボールトにアクセスするために、登録されたOAuthアプリケーションに認可権限を付与する必要があります。

8.4.1.2 ステップ1: 接続記述子が設定されたキー値の作成

Azure App Configurationで接続記述子を使用してキー値のペアを作成します。

  1. Azureポータルで、アプリケーション構成を検索し、Azure App Configurationストアの構成エクスプローラ・ページに移動します。
  2. 「Create」をクリックし、「Key-value」を選択して新しいキー値を作成します。
    • Key: 選択した接頭辞にconnect_descriptor接尾辞が付いたキーを追加します。

      たとえば、database/sales/接頭辞の場合は、次のようにキーを追加します:
      database/sales/connect_descriptor
    • : 簡易接続構文または接続記述子の形式で接続記述子を指定して、キーの値を格納します。

      接続記述子の値は、(DESCRIPTION=または(DESCRIPTION_LIST=で始まる必要があります。DESCRIPTIONパラメータには、接続記述子コンテナを定義します。DESCRIPTION_LISTパラメータには、サービス名の接続記述子のリストを定義します。

      ノート:

      接続記述子に指定できるパラメータ名と値にはいくつかの制限があります。『Oracle Database Net Servicesリファレンス』にリストされている許可されるパラメータおよび値のみを指定してください。
    前述のイメージに示すように、database/sales/connect_descriptorキーの接尾辞connect_descriptorは、リスナーのプロトコル・アドレスと宛先サービスの接続情報を含む次の接続記述子の値(DESCRIPTION=で始まる)とペアになります:
    (DESCRIPTION=
        (ADDRESS=
            (PROTOCOL=tcp)
            (HOST=sales-server)
            (PORT=1521)
        )
        (CONNECT_DATA=
            (SERVER=DEDICATED)
            (SERVICE_NAME=sales.us.example.com)
        )
    )
8.4.1.3 ステップ2: データベース・ユーザー名およびパスワードのボールト参照の追加(オプション)

ステップ1で使用した接頭辞の下で、Oracle Databaseに対する認証用のデータベース・ユーザー名とパスワードを含むキー値のペアを作成します。パスワードの値はボールト参照です。

このステップは省略可能です。この構成では、データベース接続の接続識別子のデータベース資格証明を省略できます。
シークレットとして格納されたデータベース・パスワードでAzure Key Vaultを構成していることを確認します。
  1. Azure App Configurationストアの構成エクスプローラ・ページで、「Create」をクリックし、「Key-value」を選択して、データベース・ユーザー名を含むキー値のペアを追加します。
    • Key: 選択した接頭辞にuser接頭辞が付いたキーを追加します。

      たとえば、database/sales/接頭辞の場合は、次のようにキーを追加します:
      database/sales/user
    • Value: データベースのユーザー名を指定してキーの値を保存します。

    次のイメージに示すように、database/sales/userキーの接尾辞userは、その値としてscottとペアになります:

  2. 「Create」をクリックし、「Key Vault reference」を選択して、データベース・パスワードを含むキー値のペアを追加します。
    • Key: 選択した接頭辞にpassword接尾辞が付いたキーを追加します。

      たとえば、database/sales/接頭辞の場合は、次のようにキーを追加します:
      database/sales/password
    • Value: Azure Key Vaultに格納されているデータベースのパスワードのKey Vaultおよびシークレット値参照を選択します。

    次のイメージに示すように、database/sales/passwordキーの接尾辞passwordは、その値としてdbclient-sales-secret (vault1に格納)とペアになります:

8.4.1.4 ステップ3: Oracle Call Interfaceパラメータの追加(オプション)

同じ接頭辞で、Oracle Call Interface構成パラメータを使用してキー値のペアを作成します。

このステップは省略可能です。oraaccess.xmlファイルに構成されているOracle Call Interfaceのパラメータをこの構成でオーバーライドすることも、ファイルの構成を省略することもできます。
  1. Azure App Configurationストアの構成エクスプローラ・ページで、「Create」をクリックし、「Key-value」を選択してキー値をストアに追加します。
    • Key: 選択した接頭辞にoci/oci parameter name接尾辞が付いたキーを追加します。

      たとえば、database/sales/接頭辞にprefetch_rowsパラメータを指定するには、次のようにキーを追加します:
      database/sales/oci/prefetch_rows
      同様に、<session_pool> inactivity_timeoutパラメータを指定するには、次のようにキーを追加します:
      database/sales/oci/session_pool/inactivity_timeout
    • Value: 必要な構成パラメータを指定してキーの値を格納します。

    次のイメージに示すように、database/sales/oci/prefetch_rowsキーの接尾辞oci/prefetch_rowsは、100prefetch_rows値とペアになります:

8.4.1.5 ステップ4: Azure App Configurationストアの値を含む接続識別子の使用

データベース・クライアントの接続識別子で、Azure App Configuration名、キー・パスおよびAzure認証パラメータを使用します。

構文:
config-azure://{appconfig-name}[?key=prefix&label=value&option1=value1&option2=value2...]

構文の詳細は次のとおりです:

パラメータ 説明

config-azure:// {appconfig-name}

Azure App Configurationストアの名前。

config-azureは、Azure App Configurationストアを集中化された構成プロバイダとして使用するようにネーミング・アダプタに指示します。

key=prefix

Azure App Configurationでconnect_descriptor接尾辞を使用しないキーの接頭辞。

label=value

接続記述子に使用されるラベル。

ラベルは、同じキーが設定されたキー値を区別するために使用します。詳細は、Microsoft Azureのドキュメントを参照してください。

option=value

集中化された構成プロバイダ・ストアにアクセスするための認証方法および対応する認証パラメータ。

認証方式として、次のいずれかを設定します:
  • Azureサービス・プリンシパルまたはOAuth 2.0クライアント資格証明(デフォルト): AUTHENTICATION=AZURE_DEFAULT

    ノート: このフローでは、認証方法を明示的に指定せずに、認証パラメータを直接設定できます。デフォルトでは、AUTHENTICATION=AZURE_DEFAULT設定により、OAuth 2.0クライアント資格証明フローが提供されます。

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

  • Azure Managed IdentityまたはAzure Managed User Identity: AUTHENTICATION=AZURE_MANAGED_IDENTITY

これらのすべてのフローの認証パラメータ(AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRETなど)を設定します(AUTHENTICATIONを参照)。

:

異なる値で接続識別子文字列を指定する方法の例をいくつか見てみましょう:

  • デフォルトのOAuth 2.0クライアント資格証明認証を使用する場合:

    saleshrなどの複数のアプリケーションがある場合、salesの接続記述子をdatabase/sales接頭辞の下に、hrの接続記述子をdatabase/hr接頭辞の下に格納できます。

    次のネーミングの使用方法では、database/sales接頭辞の下のconnect_descriptorが参照されます:デフォルト・フローの認証方法は暗黙的であるため、AZURE_CLIENT_IDAZURE_CLIENT_SECRETおよびAZURE_TENANT_ID認証パラメータを使用してクライアント資格証明のみが指定されます:
    • 文字列に指定したデータベース資格証明を使用する場合:
      sqlplus dbuser/dbpassword@"config-azure://dbclient-appconfig?key=/database/sales/&azure_client_id=a1abc12-ab12-1ab1-a1b1-123a&azure_client_secret=A123B~AB123a~AB1234_abab&azure_tenant_id=123ab-12a12-1a2b1-a1b2"
    • Azure Key Vaultに保存したデータベース資格証明を使用する場合:
      sqlplus /@"config-azure://dbclient-appconfig?key=/database/sales/&azure_client_id=a1abc12-ab12-1ab1-a1b1-123a&azure_client_secret=A123B~AB123a~AB1234_abab&azure_tenant_id=123ab-12a12-1a2b1-a1b2"
    同様に、次のネーミングの使用方法では、database/hr接頭辞の下のconnect_descriptorが参照されます:
    • 文字列に指定したデータベース資格証明を使用する場合:
      sqlplus dbuser/dbpassword@"config-azure://dbclient-appconfig?key=/database/hr/&azure_client_id=a1abc12-ab12-1ab1-a1b1-123a&azure_client_secret=A123B~AB123a~AB1234_abab&azure_tenant_id=123ab-12a12-1a2b1-a1b2"
    • Azure Key Vaultに保存したデータベース資格証明を使用する場合:
      sqlplus /@"config-azure://dbclient-appconfig?key=/database/hr/&azure_client_id=a1abc12-ab12-1ab1-a1b1-123a&azure_client_secret=A123B~AB123a~AB1234_abab&azure_tenant_id=123ab-12a12-1a2b1-a1b2"
  • Azureサービス・プリンシパル認証を使用する場合:
    • 文字列に指定したデータベース資格証明を使用する場合:
      sqlplus dbuser/dbpassword@"config-azure://dbclient-appconfig?key=/database/sales/&authentication=azure_service_principal&azure_client_id=a1abc12-ab12-1ab1-a1b1-123a&azure_client_secret=A123B~AB123a~AB1234_abab&azure_client_certificate_path=/app/dbclient/certificate_for_authenticaion.txt&azure_tenant_id=123ab-12a12-1a2b1-a1b2"
    • Azure Key Vaultに保存したデータベース資格証明を使用する場合:
      sqlplus /@"config-azure://dbclient-appconfig?key=/database/sales/&authentication=azure_service_principal&azure_client_id=a1abc12-ab12-1ab1-a1b1-123a&azure_client_secret=A123B~AB123a~AB1234_abab&azure_client_certificate_path=/app/dbclient/certificate_for_authenticaion.txt&azure_tenant_id=123ab-12a12-1a2b1-a1b2"
  • Azure Managed Identity認証を使用する場合:
    • 文字列に指定したデータベース資格証明を使用する場合:
      sqlplus dbuser/dbpassword@"config-azure://dbclient-appconfig?key=/database/sales/&authentication=azure_managed_identity"
    • Azure Key Vaultに保存したデータベース資格証明を使用する場合:
      sqlplus /@"config-azure://dbclient-appconfig?key=/database/sales/&authentication=azure_managed_identity"

8.4.2 OCI Object StorageのJSONファイル

構成データは、JSONファイルとしてOracle Cloud Infrastructure (OCI) Object Storageに格納されます。

8.4.2.1 OCI Object StorageのJSONファイルを使用するための前提条件

OCI Object Storageの使用を開始する前に、Oracle Cloud Infrastructure (OCI)コンソール、またはOCI CLIかAPIを使用して、次のステップを実行します。

  • OCI Object Storageにバケットを作成します:

    OCI Object Storageサービスを使用して、Object Storageネームスペースのコンパートメント内にバケットを作成します。集中化された構成プロバイダのJSONファイルを、後でオブジェクトとしてこのバケットにアップロードします。

  • ポリシーを作成し、それをデータベース・ユーザーに割り当てます:

    OCI管理者は、セキュリティ・アクセス権をポリシーで付与する必要があります。OCI Identity and Access Management (IAM)ポリシーを作成し、それをデータベース・ユーザーに割り当てて、コンパートメント内のオブジェクト・ストレージ・リソースにアクセスします。

  • 集中化された構成プロバイダのJSONファイルの形式を理解します:

    接続記述子は、アプリケーション要件に基づいて、次のJSON形式のいずれかで、集中化された構成プロバイダのJSONファイルに編成する必要があります:
    • connect_descriptorサブオブジェクトを含む単一のオブジェクト

    • 各オブジェクトが独自のconnect_descriptorサブオブジェクトを持つ複数のオブジェクト(カンマ区切り)

    オプションで、userおよびpasswordサブオブジェクト(データベース・ユーザー名およびデータベース・パスワードを指定)およびociサブオブジェクト(Oracle Call Interface構成パラメータを指定)を同じファイルに追加できます。

    データベース・クライアントは、接続記述子、データベース・ユーザー名とパスワード、およびその他のOracle Call Interface属性を導出するために、JSONオブジェクト内の特定のネットワーク・サービス名を検索します。接続識別子は、OCI Object StorageエンドポイントからこれらのJSONオブジェクトを取得し、それを使用して格納された属性を特定します。これらの値がデータベース接続に使用されます。

    集中化された構成プロバイダJSON (CCJSON)の構文は次のとおりです:
    Centralized Configuration Provider JSON -> CCJSON_elements
    
    CCJSON_elements       -> CCJSON_elment
                          -> CCJSON_element, CCJSON_element
    
    CCJSON_element        -> '{' members '}'
    
    members               -> member
                          -> member, member
    
    member                -> cd
                          -> member, cd_related
    
    cd                    -> "connect_descriptor" : "<connect_descriptor>"
    
    cd_related            -> "user" : "<database user name>"
                          -> "password" : '{' password_data '}'
                          -> "oci" : '{' oci_config_members '}'
                          -> null
    
    password_data         -> '{' "type" : vault_type, 
                                 "value" : vault_value, 
                                 "authentication": authentication_value '}'
    
    vault_type            -> "ocivault"
                          -> "azurevault"
    
    vault_value           -> "<vault-specific identifier>"    
    
    authentication_value  -> '{' "azure_client_id" : "<client id>", 
                                 "azure_client_secret" : "<secret>",
                                 "azure_tenant_id" : "<tenant id>" '}'          
                          -> null
    
    oci_config_members    -> '{' oci_config_name : oci_config_value '}'
    
    oci_config_value      -> json_value
    
    oci_config_name       -> prefetch_rows
                          -> statement_cache_size
                          -> lob_prefetch_size 
                          -> session_pool
    
    session_pool          -> '{' "min" : value, "max" : value, 
                                 "increment" : value, "max_lifetime_session" : value, 
                                 "max_use_session" : value, "inactivity_timeout" : value '}'
    
    prefetch_rows         -> "prefetch_rows" : numeric_value
    
    statement_cache_size  -> "statement_cache_size" : numeric_value
    
    lob_prefetch_size     -> "lob_prefetch_size" : numeric_value
    
    numeric_value         -> "<number>"

    以降の各項で、これらの値を使用してJSONファイルを作成する方法を確認します。

  • (オプション)シークレットのボールトを作成し、認可権限を付与します:

    Oracle Database資格証明をOCI VaultまたはAzure Key Vaultに格納する場合は、データベース・パスワードをシークレットとして使用してボールトを作成します。このボールトへの参照をJSONファイルに後で追加します。

    OCI管理者は、このボールトにアクセスするための認可権限をデータベース・ユーザーに付与する必要があります。

8.4.2.2 ステップ1: 接続記述子が設定されたJSONファイルの作成

接続記述子を設定した集中化された構成プロバイダのJSONファイルを作成し、Oracle Cloud Infrastructure (OCI) Object Storageにアップロードします。

  1. 次のいずれかの形式でJSONファイルを作成します:
    • connect_descriptorサブオブジェクトで指定された単一オブジェクト:

      次の例は、sales.myexample.comサービスの接続記述子で構成されたサンプルsales.jsonファイルを示しています:
      { 
       "connect_descriptor": "(DESCRIPTION=
                                 (ADDRESS=
                                    (PROTOCOL=TCP)
                                    (HOST=my sales dbserver)
                                    (PORT=1521))
                                 (CONNECT_DATA=
                                    (SERVER=DEDICATED)
                                    (SERVICE_NAME=sales.myexample.com))
                              )" 
      }
    • 複数のオブジェクト(カンマ区切り)および別のconnect_descriptorサブオブジェクトが設定された各オブジェクト:

      次の例は、salesおよびhrオブジェクトに対して、複数の接続記述子で構成されたmulti.jsonファイルのサンプルを示しています。
      { 
       "sales" : { 
          "connect_descriptor": "(DESCRIPTION=
                                    (ADDRESS=
                                       (PROTOCOL=TCP)
                                       (HOST=my sales dbserver)
                                       (PORT=1521))
                                    (CONNECT_DATA=
                                       (SERVER=DEDICATED)
                                       (SERVICE_NAME=sales.myexample.com))
                                 )"
       },
       "hr" : { 
          "connect_descriptor": "(DESCRIPTION=
                                    (ADDRESS=
                                       (PROTOCOL=TCP)
                                       (HOST=my dbserver.my.example.com)
                                       (PORT=1521))
                                    (CONNECT_DATA=
                                       (SERVER=DEDICATED)
                                       (SERVICE_NAME=hr.my.example.com))
                                 )" 
       } 
      }

    ノート:

    接続記述子に指定できるパラメータ名と値にはいくつかの制限があります。『Oracle Database Net Servicesリファレンス』にリストされている許可されるパラメータおよび値のみを指定してください。
  2. JSONファイルをOCI Object Storageに格納します:

    OCIコンソールで、バケットの「オブジェクト・ストレージ - バケットの詳細」ページに移動し、「オブジェクト」の下のそのバケットにファイルをアップロードします。

8.4.2.3 ステップ2: ユーザー名およびパスワードのボールト参照の追加(オプション)

ステップ1で作成したJSONファイルに、Oracle Databaseへの認証用のデータベース・ユーザー名およびデータベース・パスワードを追加します。パスワードの値はボールト参照です。

このステップは省略可能です。この構成では、データベース接続の接続識別子のデータベース資格証明を省略できます。

シークレットとして格納されたデータベース・パスワードでOCI VaultまたはAzure Key Vaultを構成していることを確認します。
  1. JSONファイルでuserおよびpasswordオブジェクトを指定します。
    • user: データベース・ユーザー名。

    • password:
      • type: 使用するボールトのタイプ。OCI Vaultの場合はocivaultを、Azure Key Vaultの場合はazurevaultを指定します。

      • value: OCI Vaultの場合は、ボールトに格納されているシークレットのOracle Cloud Identifier (OCID)を指定します。この値は、OCIコンソールの「シークレット情報」の「シークレット詳細」ページから取得できます。たとえば: "ocid1.vaultsecret.my-secret-id"

        Azure Key Vaultの場合は、Azure Key VaultのURI値を指定します。この値をAzureポータルから取得することも、ボールトの詳細を示すREST APIを使用することもできます。たとえば: "https://dbclients.vault.azure.net/secrets/salesappaswd"

      • authentication: Azure Vaultストアにアクセスするための認証パラメータ:
        { 
          "azure_client_id" : "<client id>", 
          "azure_client_secret" : "<secret>",
          "azure_tenant_id" : "<tenant id>" 
        }

        接続識別子のコマンドラインで設定された認証パラメータを使用して、OCI Vaultにアクセスできます。

    次のsales.jsonファイルは、sales.myexample.comサービス用に構成されたuser属性およびpassword属性をconnect_descriptorとともに示しています。パスワードはAzure Key Vaultに格納されます。
    { 
     "connect_descriptor" : "(DESCRIPTION=
                               (ADDRESS=
                                  (PROTOCOL=TCP) 
                                  (HOST=my sales dbserver)
                                  (PORT=1521))
                               (CONNECT_DATA=
                                  (SERVER=DEDICATED)
                                  (SERVICE_NAME=sales.myexample.com))
                             )"
     "user" : "admin",  
     "password" : {
        "type" : "azurevault",
        "value" : "https://dbclient.vault.azure.net/secrets/salesdbpasswd",
        "authentication" : {
           "azure_client_id" : "a12a1b12-ab12-1ab1-a1b2-12345a123aba",
           "azure_client_secret" : "A1B1A~ABCabc~ABaAbAb1223ABAB12abc_abcd",
           "azure_tenant_id" : "1a123ab1-a1b2-1a12-a1b1-a12bcdab01234"
        }
     }
    }
    同様に、次のmulti.jsonファイルは、user属性およびpassword属性を、salesおよびhrオブジェクトに対して指定されたconnect_descriptorとともに示しています。パスワードはOCI Vaultに格納されます。
    { 
     "sales" : { 
        "connect_descriptor" : "(DESCRIPTION=
                                  (ADDRESS=
                                     (PROTOCOL=TCP)
                                     (HOST=my sales dbserver)
                                     (PORT=1521))
                                  (CONNECT_DATA=
                                     (SERVER=DEDICATED)
                                     (SERVICE_NAME=sales.myexample.com))
                                )"
        "user" : "admin", 
        "password" : { 
          "type" : "ocivault", 
          "value" : "ocid1.vaultsecret.my-secret-id"
        }
     },
     "hr" : { 
        "connect_descriptor" : "(DESCRIPTION=
                                  (ADDRESS=
                                     (PROTOCOL=TCP)
                                     (HOST=my dbserver.my.example.com)
                                     (PORT=1521))
                                  (CONNECT_DATA=
                                     (SERVER=DEDICATED)
                                     (SERVICE_NAME=hr.my.example.com))
                               )" 
        "user" : "admin", 
        "password" : { 
          "type" : "ocivault", 
          "value" : "ocid1.vaultsecret.my-secret-id" 
        }
     } 
    }
  2. 更新したJSONファイルをOCI Object Storageに格納します:

    OCIコンソールで、バケットの「オブジェクト・ストレージ - バケットの詳細」ページに移動し、「オブジェクト」の下のそのバケットにファイルをアップロードします。

8.4.2.4 ステップ3: Oracle Call Interfaceパラメータの追加(オプション)

同じJSONファイルに、Oracle Call Interfaceの構成パラメータを追加します。

このステップは省略可能です。oraaccess.xmlファイルに構成されているOracle Call Interfaceのパラメータをこの構成でオーバーライドすることも、ファイルの構成を省略することもできます。
  1. oci JSONオブジェクトにOracle Call Interfaceパラメータを指定します。
    次のsales.jsonファイルは、Oracle Call Interface属性と、sales.myexample.comサービス用に構成された接続記述子およびデータベース資格証明を示しています:
    { 
     "connect_descriptor": "(DESCRIPTION=
                              (ADDRESS=
                                (PROTOCOL=TCP)
                                (HOST=my sales dbserver)
                                (PORT=1521))
                              (CONNECT_DATA=
                                (SERVER=DEDICATED)
                                (SERVICE_NAME=sales.myexample.com))
                            )", 
     "user": "admin", 
     "password": { 
        "type": "ocivault", 
        "value": "ocid1.vaultsecret.my-secreti-id" 
     }, 
     "oci": { "statement_cache_size" : 5,
              "prefetch_rows" : 10, 
              "lob_prefetch_size": 1024, 
              "session_pool" : { "min" : 4, "max" : 10, "increment" : 2 }
     }
    } 
    同様に、次のmulti.jsonファイルは、Oracle Call Interface属性と、salesおよびhrオブジェクトに対して指定された接続記述子およびデータベース資格証明を示しています:
    { 
     "sales" : { 
       "connect_descriptor": "(DESCRIPTION=
                                (ADDRESS=
                                  (PROTOCOL=TCP)
                                  (HOST=my sales dbserver)
                                  (PORT=1521))
                                (CONNECT_DATA=
                                  (SERVER=DEDICATED)
                                  (SERVICE_NAME=sales.myexample.com))
                              )",   
       "user": "scott", 
       "password": { 
          "type": "ocivault", 
          "value": "ocid1.vaultsecret.oc1.my-secret-id" 
       }, 
       "oci":{ "statement_cache_size" : 5, 
               "prefetch_rows" : 10, 
               "lob_prefetch_size": 1024, 
               "session_pool" : { "min" : 4, "max" : 10, "increment" : 2 }
       } 
     },
     "hr" : { 
       "connect_descriptor": "(DESCRIPTION=
                                (ADDRESS=
                                  (PROTOCOL=TCP)
                                  (HOST=my dbserver.my.example.com)
                                  (PORT=1521))
                                (CONNECT_DATA=
                                  (SERVER=DEDICATED)
                                  (SERVICE_NAME=hr.my.example.com))
                              )" 
       "oci":{ 
       "statement_cache_size" : 6, 
       "prefetch_rows" : 10 
       } 
     } 
    }

    ノート:

    許可されているOracle Call Interfaceパラメータのみを指定してください。
  2. 更新したJSONファイルをOCI Object Storageに格納します:

    OCIコンソールで、バケットの「オブジェクト・ストレージ - バケットの詳細」ページに移動し、「オブジェクト」の下のそのバケットにファイルをアップロードします。

8.4.2.5 ステップ4: OCI Object Storageの値を含む接続識別子の使用

データベース・クライアントの接続識別子で、Oracle Cloud Infrastructure (OCI) Object Storageのサーバー名、キー・パスおよび認証パラメータを使用します。

構文:
config-ociobject://objectstorage-server-name/n/{namespaceName}/b/{bucketName}/o/{objectName}/[c/{networkServiceName}]?[option1=value1&option2=value2...]

構文の詳細は次のとおりです:

パラメータ 説明

config-ociobject:// objectstorage-server-name

OCI Object Storageのサーバー名。これは、OCIコンソールの「オブジェクトの詳細」ページで指定されたURLパス(URI)値です。この値は、https://接頭辞なしで指定します。

config-ociobjectは、OCI Object Storageを集中化された構成プロバイダとして使用するようにネーミング・アダプタに指示します。

n/{namespaceName}

JSONファイルを格納したOCI Object Storageネームスペース。

b/{bucketName}

JSONファイルを格納したOCI Object Storageバケット名。

o/{objectName}

ネットワーク・サービス名を検索して解決するためのJSONファイル。

c/{networkServiceName}

JSONファイルに2つ以上のネットワーク・サービス名が含まれている場合は、ネットワーク・サービス名。

option=value

集中化された構成プロバイダ・ストアにアクセスするための認証方法および対応する認証パラメータ。

認証方式として、次のいずれかを設定します:
  • OCI APIキー(デフォルト): AUTHENTICATION=OCI_DEFAULT

    ノート: このフローでは、認証方法を明示的に指定する必要はありません。デフォルトでは、AUTHENTICATION=OCI_DEFAULT設定によってOCI APIキー・フローが提供されます。

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

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

AUTHENTICATIONの説明に従って、デフォルトのOCI APIキー・フローの認証パラメータ(OCI_TENANCYOCI_USEROCI_FINGERPRINTOCI_KEY_FILEなど)を設定します。

OCIインスタンス・プリンシパル・フローおよびOCIリソース・プリンシパル・フローには、追加の認証パラメータは必要ありません。

:

異なる値で接続識別子文字列を指定する方法の例をいくつか見てみましょう:

  • 文字列で指定されたデータベース資格証明:
    sqlplus dbuser/@"config-ociobject://objectstorage.us-region-1.example.com/n/myappnamespace/b/dbclientapps/o/sales.json?oci_tenancy=ocid1.tenancy.oc1..aaabbb1234aaabbb&oci_user=ocid1.user.oc1..ababab12121212&oci_fingerprint=a1:bc:a1:1a:12:a1:a2:b1:b2:1b&oci_key_file=//app/mykey.pem"
  • OCI Vaultに格納されているデータベース資格証明:

    ボールト参照は、sales.jsonファイルで構成されています:
    sqlplus /@"config-ociobject://objectstorage.us-region-1.example.com/n/myappnamespace/b/dbclientapps/o/sales.json?oci_tenancy=ocid1.tenancy.oc1..aaabbb1234aaabbb&oci_user=ocid1.user.oc1..ababab12121212&oci_fingerprint=a1:bc:a1:1a:12:a1:a2:b1:b2:1b&oci_key_file=//app/mykey.pem"
  • JSONファイルで指定されたネットワーク・サービス名:

    multi.jsonファイル内の多くのネットワーク・サービス名間で特定の名前を示すネットワーク・サービス名(c/hr)を指定します:
    sqlplus dbuser/@"config-ociobject://objectstorage.us-region-1.example.com/n/myappnamespace/b/dbclientapps/o/multi.json/c/hr?oci_tenancy=ocid1.tenancy.oc1..aaabbb1234aaabbb&oci_user=ocid1.user.oc1..ababab12121212&oci_fingerprint=a1:bc:a1:1a:12:a1:a2:b1:b2:1b&oci_key_file=//app/mykey.pem"
  • デフォルトのOCI APIキー認証を使用する場合:

    デフォルト・フローの認証方法は暗黙的であるため、APIキー関連の値のみが、OCI_TENANCYOCI_USEROCI_FINGERPRINTおよびOCI_KEY_FILE認証パラメータを使用して指定されます。

    sqlplus dbuser/@"config-ociobject://objectstorage.us-region-1.example.com/n/myappnamespace/b/dbclientapps/o/sales.json?oci_tenancy=ocid1.tenancy.oc1..aaabbb1234aaabbb&oci_user=ocid1.user.oc1..ababab12121212&oci_fingerprint=a1:bc:a1:1a:12:a1:a2:b1:b2:1b&oci_key_file=//app/mykey.pem"
  • OCIインスタンス・プリンシパル認証を使用する場合:
    sqlplus dbuser/@"config-ociobject://objectstorage.us-region-1.example.com/n/myappnamespace/b/dbclientapps/o/multi.json/c/sales?authentication=oci_instance_principal"
  • OCIリソース・プリンシパル認証を使用する場合:
    sqlplus dbuser/@"config-ociobject://objectstorage.us-region-1.example.com/n/myappnamespace/b/dbclientapps/o/multi.json/c/sales?authentication=oci_resource_principal"