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

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

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

ローカル・ネーミング・メソッドでは、ネットワーク・サービス名を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.1.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.1.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.2 ディレクトリ・ネーミング・メソッドの構成

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

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

プロトコル固有パラメータおよびディレクトリ使用パラメータは、外部構成ファイル(ldap.orasqlnet.oraなど)内で指定するか、データベース・クライアント接続識別子で直接指定することができます。

8.2.1 ネット・サービス名、データベース・サービスおよび別名エントリの構成

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リファレンスを参照してください。

        ノート:

        オプションで、sqlnet.oraファイルを構成するかわりに接続識別子でLDAPパラメータを直接指定できます。「接続識別子でのLDAPパラメータの直接指定」を参照してください。
      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グループに対するユーザーの追加や削除については、「ディレクトリ・サーバーのエントリを追加または変更できるユーザー」を参照してください。

    • 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.2.2 ディレクトリ・ネーミング・サーバーでの複数のデフォルト・コンテキストの作成

複数のデフォルト・コンテキストを有効にするには、デフォルトの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.2.3 ディレクトリ・ネーミング・サーバーへのローカル・ネーミング・エントリのエクスポート

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.2.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 23aiでは非推奨であり、将来のリリースで削除される可能性があります。

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

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

      • Oracle Database 23aiでは、新しい自動ログイン・ウォレット・バージョン(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 23aiでの使用は非推奨です。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.2.5 接続識別子でのLDAPパラメータの直接指定

ディレクトリ・ネーミング・メソッドでは、データベース・クライアント接続識別子でのLDAPパラメータの使用により、LDAP名前参照を指定するための代替方法が提供されます。この機能を使用すると、データベースへの接続のために外部構成ファイル(ldap.oraまたはsqlnet.ora)を構成する必要がありません。

LDAP名前参照のためにldap.oraおよびsqlnet.oraの一部として指定された値は、接続識別子で直接渡されます。ldap.oraまたはsqlnet.oraが存在しており、接続識別子でLDAPパラメータを使用している場合は、接続識別子の値が優先されます。

接続識別子の構文

ldap[s]://host[:port]/name[,context][?parameter1=value1{&parameter2=value2}]

たとえば:

sqlplus "<user_name>/<password>@ldaps://<host_name>:<port>/cn=sales,cn=oraclecontext?DIRECTORY_SERVER_TYPE=oid&WALLET_LOCATION=/oracle/network/admin&AUTHENTICATE_BIND=true&AUTHENTICATE_BIND_METHOD=LDAPS_SIMPLE_AUTH"

ここでは、<user_name>/<password>により、接続のデータベースのユーザー名とパスワードを指定します。

次に、ldap[s]://host[:port]/name[,context]を使用して指定する、プロトコル固有のパラメータを示します:

構文要素 説明 デフォルト値

ldap[s]

これは必須パラメータです。プロトコル(LDAPLDAPSなど)を指定します。

LDAPSプロトコルではTLS接続が使用されます。

該当なし

host

これは必須パラメータです。LDAPディレクトリ・サーバーが実行されているホストの名前を指定します。

該当なし

port

これはオプションのパラメータです。LDAP接続のポート番号を指定します。

LDAPプロトコルの場合は389

LDAPSプロトコルの場合は636

name

これは必須パラメータです。接続文字列内のサービス名を解決するLDAPエントリを指定します。

このエントリは、指定されたコンテキストのOracleContextコンテナに含まれている必要があります。

該当なし

context

これはオプションのパラメータです。OracleContextを含むディレクトリ・ネーミング・コンテキストを指定します。

たとえば、コンテキストは次のようになります:

cn=OracleContext,dc=example,dc=com

cn=OracleContext

次に、parameter=valueを使用して指定する、ディレクトリ使用パラメータを示します。これらはすべてオプション・パラメータです:

構文要素 説明 デフォルト値

directory_server_type

LDAPベースの名前参照に使用するディレクトリ・サーバーを指定します。

次の値をとります。

  • OID (Oracle Internet DirectoryまたはOracle Unified Directory)

  • AD (Microsoft Active Directory)

DIRECTORY_SERVER_TYPEを参照してください。

OID

authenticate_bind

LDAPネーミング・アダプタで認証にウォレットを使用するかどうかを指定します。

値はtrueまたはfalseです。

AUTHENTICATE_BINDを参照してください。

false

wallet_location

Oracleウォレットが格納されるディレクトリを指定します。

WALLET_LOCATIONを参照してください。

該当なし

authenticate_bind_method

クライアントLDAPネーミング・アダプタの認証方式を指定します。

値としてはLDAPS_SIMPLE_AUTHまたはNONEを指定できます。

AUTHENTICATE_BIND_METHODを参照してください。

NONE

ノート:

directory_server_typewallet_locationauthenticate_bindおよびauthenticate_bind_methodパラメータは、位置に依存しません。

接続識別子の例

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

  • すべてのパラメータあり:

    文字列ですべての必須パラメータとオプション・パラメータが指定されています。

    "scott/password@ldaps://ldapserver:636/cn=orcl,cn=OracleContext,dc=example,dc=com?DIRECTORY_SERVER_TYPE=oid&WALLET_LOCATION=/wallet&AUTHENTICATE_BIND=true&AUTHENTICATE_BIND_METHOD=LDAPS_SIMPLE_AUTH"
  • ディレクトリ・サーバーなし:

    デフォルトのディレクトリ・サーバー(OID)が使用されます:

    "scott/password@ldaps://ldapserver:636/cn=orcl,cn=OracleContext,dc=example,dc=com?WALLET_LOCATION=wallet&AUTHENTICATE_BIND=true&AUTHENTICATE_BIND_METHOD=LDAPS_SIMPLE_AUTH"
  • authenticate_bindなし:

    デフォルトのauthenticate_bind値(false)が使用されます。そのため、authenticate_bind_methodは無視されます。

    "scott/password@ldaps://ldapserver:636/cn=orcl,cn=OracleContext,dc=example,dc=com?DIRECTORY_SERVER_TYPE=oid&WALLET_LOCATION=wallet&AUTHENTICATE_BIND_METHOD=LDAPS_SIMPLE_AUTH"
  • 管理コンテキストあり:

    コンテキスト名の値がcn=OracleContext,dc=example,dc=comとして指定されています。

    "scott/password@ldaps://ldapserver:636/cn=orcl,cn=OracleContext,dc=example,dc=com?DIRECTORY_SERVER_TYPE=oid&WALLET_LOCATION=/wallet&AUTHENTICATE_BIND=true&AUTHENTICATE_BIND_METHOD=LDAPS_SIMPLE_AUTH"
  • 管理コンテキストなし:

    コンテキスト値(cn=OracleContext,dc=example,dc=com)がnullです。

    “scott/password@ldaps://ldapserver:636/orcl?DIRECTORY_SERVER_TYPE=oid&WALLET_LOCATION=/wallet&AUTHENTICATE_BIND=true&AUTHENTICATE_BIND_METHOD=LDAPS_SIMPLE_AUTH"
  • 最小限のパラメータ:

    最小限のプロトコル固有パラメータが指定されています(プロトコルはldaps、ホストはldapserver、ポートは636、コンテキストは文字列ごとに異なります)。

    "scott/password@ldaps://ldapserver:636/cn=orcl,cn=OracleContext,dc=example,dc=com"
    "scott/password@ldaps://ldapserver:636/cn=orcl"
    "scott/password@ldaps://ldapserver:636/orcl"
  • システム・ウォレットを使用:

    WALLET_LOCATION値が接続識別子およびsqlnet.oraファイルで指定されていません。この場合は、クライアントで、オペレーティング・システムのデフォルトの証明書ストアにあるウォレットが使用されます。

    "scott/password@ldaps://ldapserver:636/cn=orcl,cn=OracleContext,dc=example,dc=com?DIRECTORY_SERVER_TYPE=oid"
  • LDAPプロトコルを使用:

    これらの文字列では、LDAPプロトコルはOID構成のために指定されています。

    "scott/password@ldap://ldapserver:2389/cn=orcl,cn=OracleContext,dc=example,dc=com?DIRECTORY_SERVER_TYPE=oid&AUTHENTICATE_BIND=false"
    "scott/password@ldap://ldapserver:2389/cn=orcl,cn=OracleContext,dc=example,dc=com"
  • ディレクトリ・サーバーおよびユーザー名とパスワードによる認証あり

    DIRECTORY_SERVER_TYPE値は、AD (Microsoft Active Directoryを使用)として指定されています。AUTHENTICATE_BINDおよびAUTHENTICATE_BIND_METHODの値で、LDAPS_SIMPLE_AUTH(ユーザー名とパスワードに基づく認証を提供する)が指定されています。

    "scott/password@ldaps://ldapserver:636/cn=orcl?DIRECTORY_SERVER_TYPE=AD&WALLET_LOCATION=/wallet&AUTHENTICATE_BIND=true&AUTHENTICATE_BIND_METHOD=LDAPS_SIMPLE_AUTH"
  • ディレクトリ・サーバーおよびWindowsネイティブ認証あり

    DIRECTORY_SERVER_TYPE値は、AD (Microsoft Active Directoryを使用)として指定されています。AUTHENTICATE_BINDの値はtrueとして指定されています。これは、デフォルトのLDAPS_SIMPLE_AUTH=NONE設定を意味します。これにより、Windowsログイン資格情報を使用してWindowsネイティブ認証が提供されます。

    "scott/password@ldap://ldapserver:389/cn=orcl?DIRECTORY_SERVER_TYPE=AD&AUTHENTICATE_BIND=true"

8.2.6 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 集中化された構成プロバイダのネーミング・メソッドの構成

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

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

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

ノート:

JDBCでは、Azure App ConfigurationストアとOCI Object Storageに加え、組込みの集中化された構成プロバイダ(HTTPSプロバイダやファイル・プロバイダなど)がサポートされています(Oracle Database JDBC開発者ガイドを参照)。また、ODP.NETでは、Webアプリケーションとデスクトップ・アプリケーションのローカル・ファイル・システム・アクセスがサポートされています(Oracle Data Provider for .NET開発者ガイドを参照)。

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

8.3.1 Azure App Configurationストア

構成データをキー/値のペアとしてAzure App Configurationストアに格納します。それらには、URIとしてネットワーク・サービス名のパスを使用してアクセスできます。

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

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

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

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

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

    Oracle Database資格証明とOracleウォレット・データをAzure Key Vaultに格納できます。

    • Oracle Database資格証明を格納するには:

      データベース・パスワードをシークレットとして格納したAzure Key Vaultを作成します。

    • Oracleウォレット・データを格納するには:

      マルチテナント・クラウド・サービス環境で実行されているSQLNETクライアント・アプリケーションでは、ウォレットをリモート・ストアに格納できます。これらのアプリケーションではローカル・システム・ファイルに格納されているウォレットにアクセスできない場合があるため、この機能は、ウォレットの保持にファイル・システム・アクセスを必要とする相互Transport Layer Security (mTLS)接続に特に役立ちます。

      ウォレット・データを格納するには、まず自動ログイン・ウォレット・ファイル(cwallet.sso)をBase64形式に変換してから、Base64形式のcwallet.sso値をシークレットとして格納したAzure Key Vaultを作成します。

      1. cwallet.ssoファイルをBase64形式に変換します。

        cwallet.ssoBase64に変換するための一般的な方法は、Linuxで次のopensslコマンドを使用することです:

        cat cwallet.sso | base64 -w 0 > file_to_upload

        ここでは、file_to_uploadにより、変換するcwallet.ssoファイルを指定しています。

      2. cwallet.ssoファイルのBase64形式の文字列の内容を新規行のないシークレット・コンテンツとして貼り付けることで、Azure Key Vaultを作成します。

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

    これらのステップの実行方法の詳細は、Azure Key Vaultのドキュメントを参照してください。

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

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

    connect_descriptorのキー(connect_descriptorで終わるキー)では、接続記述子(TNS接続文字列とも呼ばれる)が格納されます。

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

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

    • prefix/user (オプション)

    • prefix/password (オプション)

    • prefix/wallet_location (オプション)

    • prefix/oci (オプション)

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

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

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

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

8.3.1.2 ステップ1: 接続記述子を使用したキー/値の作成

接続記述子を使用してキー/値のペアを作成します。これには、リスナーのプロトコル・アドレス、および宛先サービスの接続情報が含まれます。

  1. Azureポータルで、App Configurationを検索してから、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=
        (ADDRESS=
            (PROTOCOL=tcp)
            (HOST=sales-server)
            (PORT=1521)
        )
        (CONNECT_DATA=
            (SERVER=DEDICATED)
            (SERVICE_NAME=sales.us.example.com)
        )
    )
8.3.1.3 ステップ2: ユーザー名およびパスワードのボールト参照の追加(オプション)

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

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

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

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

  3. 「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.3.1.4 ステップ3: ウォレットのボールト参照の追加(オプション)

同じ接頭辞の下に、ウォレットの場所を含むキー/値のペアを作成します。ウォレットの場所の値はボールト参照です。

このステップは省略可能です。この構成では、Azure App Configurationを使用して、Oracleウォレットをリモート・ストアに格納できます。
  1. Azure App Configurationストアを使用するための前提条件」の説明に従って、ウォレット・データをシークレットとして格納してAzure Key Vaultを作成してあることを確認します。
  2. Azure App Configurationストアの構成エクスプローラ・ページで、「Create」をクリックし、「Key Vault reference」を選択して、ウォレットの場所を含むキー/値のペアを追加します。
    • Key: 選択した接頭辞に、wallet_location接尾辞を含むキーを追加します。

      たとえば、database/sales/接頭辞の場合は、次のようにキーを追加します:
      database/sales/wallet_location
    • Value: ウォレット・データ格納用に作成したAzure Key Vaultに対応するKey Vaultおよびシークレット値を選択します。

    次の図で示すように、database/sales/wallet_locationキーでの接尾辞wallet_locationは、その値としてのabcwallet (vault1に格納)とペアになっています。

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

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

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

      ノート:

      Oracle Call Interface開発者ガイドでリストされている、許可されているOracle Call Interfaceパラメータのみを指定していることを確認してください。
      たとえば、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.3.1.6 ステップ5: 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ストアの名前。

key=prefix

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

label=value

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

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

option=value

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

認証方式:

AUTHENTICATIONパラメータを使用して次のいずれかの認証方式を設定します:

  • Azureサービス・プリンシパル(またはOAuth 2.0クライアント資格証明)の場合: AUTHENTICATION=AZURE_DEFAULT

    ノート: これはデフォルト設定です。つまり、OAuth 2.0クライアント資格証明の認証方式はデフォルトで暗黙的に指定されるため、AUTHENTICATIONパラメータを明示的に指定する必要はありません。この場合は、この設定を省略できます。

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

  • Azure Managed Identity (またはAzure Managed User Identity)の場合: AUTHENTICATION=AZURE_MANAGED_IDENTITY

認証パラメータ:

AUTHENTICATIONでの説明に従って、選択した認証方式に対応する認証パラメータを設定します。

たとえば、デフォルトのOAuth 2.0クライアント資格証明の認証方式を使用する場合は、AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRETなどの認証パラメータを設定します。

すべての認証パラメータの詳細は、Azure App Configurationストアの認証パラメータを参照してください。

:

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

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

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

    次のネーミングの使用方法では、database/sales接頭辞の下のconnect_descriptorが参照されます:ここでは、AUTHENTICATION=AZURE_DEFAULT設定は省略されています。デフォルト・フローの認証方式は暗黙的であるため、AZURE_CLIENT_IDAZURE_CLIENT_SECRETおよびAZURE_TENANT_ID認証パラメータを使用してクライアント資格証明のみが指定されます。
    • 文字列に指定したデータベース資格証明を使用する場合:
      sqlplus dbuser@"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@"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@"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@"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.3.2 OCI Object StorageのJSONファイル

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

8.3.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)ポリシーを作成し、それをデータベース・ユーザーに割り当てて、コンパートメント内のオブジェクト・ストレージ・リソースにアクセスします。

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

    Oracle Database資格証明とOracleウォレット・データをOCI VaultまたはAzure Key Vaultに格納できます。

    • Oracle Database資格証明を格納するには:

      データベース・パスワードをシークレットとして格納したOCI VaultまたはAzure Key Vaultを作成します。

    • Oracleウォレット・データを格納するには:

      マルチテナント・クラウド・サービス環境で実行されているSQLNETクライアント・アプリケーションでは、ウォレットをリモート・ストアに格納できます。これらのアプリケーションではローカル・システム・ファイルに格納されているウォレットにアクセスできない場合があるため、この機能は、ウォレットの保持にファイル・システム・アクセスを必要とする相互Transport Layer Security (mTLS)接続に特に役立ちます。

      ウォレット・データを格納するには、まず自動ログイン・ウォレット・ファイル(cwallet.sso)をBase64形式に変換してから、Base64形式のcwallet.sso値をシークレットとして格納したOCI VaultまたはAzure Key Vaultを作成します。

      1. cwallet.ssoファイルをBase64形式に変換します。

        cwallet.ssoBase64に変換するための一般的な方法は、Linuxで次のopensslコマンドを使用することです:

        cat cwallet.sso | base64 -w 0 > file_to_upload

        ここでは、file_to_uploadにより、変換するcwallet.ssoファイルを指定しています。

      2. cwallet.ssoファイルのBase64形式の文字列の内容を新規行のないシークレット・コンテンツとして貼り付けることで、OCI VaultまたはAzure Key Vaultを作成します。

    後でこれらのボールトへの参照をJSONファイルに追加します。OCI管理者は、OCI Vaultにアクセスするための認可権限をデータベース・ユーザーに付与する必要があります。同様に、Azure App Configurationストアの管理者は、Azure Key Vaultへのアクセスのために、登録されたOAuthアプリケーションに認可権限を付与する必要があります。

    これらのステップの実行方法の詳細は、OCI VaultのドキュメントまたはAzure Key Vaultのドキュメントを参照してください。

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

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

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

    オプションで、userおよびpasswordサブオブジェクト(データベース・ユーザー名とパスワードを指定するため)、wallet_locationサブオブジェクト(ウォレット・ディレクトリを指定するため)、および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 '}'
                          -> "wallet_location" : '{' wallet_data '}'
                          -> "oci" : '{' oci_config_members '}'
                          -> nul
    
    password_data         -> '{' "type" : vault_type, 
                                 "value" : vault_value, 
                                 "authentication": authentication_value '}'
    
    wallet_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ファイルを作成する方法を確認します。

8.3.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.3.2.3 ステップ2: ユーザー名およびパスワードのボールト参照の追加(オプション)

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

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

  1. OCI Object StorageのJSONファイルを使用するための前提条件」の説明に従って、データベース・パスワードをシークレットとして格納したOCI VaultまたはAzure Key Vaultを作成してあることを確認します。
  2. 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 Key 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" 
        }
     } 
    }
  3. 更新したJSONファイルをOCI Object Storageに格納します:

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

8.3.2.4 ステップ3: ウォレットのボールト参照の追加(オプション)

同じJSONファイルに、ウォレットの場所を追加します。ウォレットの場所の値はボールト参照です。

このステップは省略可能です。この構成では、OCI Object Storageを使用してリモート・ストアにOracleウォレットを格納できます。
  1. OCI Object StorageのJSONファイルを使用するための前提条件」の説明に従って、ウォレット・データをシークレットとして格納したOCI VaultまたはAzure Key Vaultを作成してあることを確認します。
  2. ウォレット・データを含むwallet_locationオブジェクトを指定します。
    • type: 使用するボールトのタイプ。OCI Vaultの場合はocivaultを、Azure Key Vaultの場合はazurevaultを指定します。

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

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

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

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

    次のsales.jsonファイルでは、userpasswordおよびwallet_location属性が示されており、sales.myexample.comサービス用に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"
        }
     },
     "wallet_location" : {
        "type" : "azurevault",
        "value" : "https://dbclient.vault.azure.net/secrets/saleswallet"
        "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ファイルでは、userpasswordおよびwallet_location属性が示されており、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-password-secret-id"
        } 
        "wallet_location" : {
          "type" : "ocivault",
          "value" : "ocid2.vaultsecret.my-wallet-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-password-secret-id" 
        } 
        "wallet_location" : {
          "type" : "ocivault",
          "value" : "ocid2.vaultsecret.my-wallet-secret-id"
        }
     } 
    }
  3. 更新したJSONファイルをOCI Object Storageに格納します:

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

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

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

このステップは省略可能です。oraaccess.xmlファイルに構成されているOracle Call Interfaceのパラメータをこの構成でオーバーライドすることも、ファイルの構成を省略することもできます。oraaccess.xmlファイルは、クライアント側の構成ファイルであり、デプロイメント中に、選択したOCIパラメータを構成できます。
  1. oci JSONオブジェクトにOracle Call Interfaceパラメータを指定します。

    ノート:

    Oracle Call Interface開発者ガイドでリストされている、許可されている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-password-secret-id" 
     }, 
     "wallet_location" : {
        "type" : "ocivault",
        "value" : "ocid2.vaultsecret.my-wallet-secret-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-password-secret-id" 
       }, 
       "wallet_location" : {
          "type" : "ocivault",
          "value" : "ocid2.vaultsecret.my-wallet-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 
       } 
     } 
    }
  2. 更新したJSONファイルをOCI Object Storageに格納します:

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

8.3.2.6 ステップ5: 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://接頭辞なしで指定します。

n/{namespaceName}

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

b/{bucketName}

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

o/{objectName}

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

c/{networkServiceName}

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

option=value

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

認証方法:

AUTHENTICATIONパラメータを使用して次のいずれかの認証方式を設定します:

  • OCI APIキーの場合: AUTHENTICATION=OCI_DEFAULT

    ノート: これはデフォルト設定です。つまり、OCI APIキーの認証方式はデフォルトで暗黙的に指定されるため、AUTHENTICATIONパラメータを明示的に指定する必要はありません。この場合は、この設定を省略できます。

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

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

これらの認証方式の詳細は、AUTHENTICATIONを参照してください。

認証パラメータ:

選択した認証方式に対応する認証パラメータを設定します。

  • デフォルトのOCI APIキーの認証方式を使用する場合は、OCI_TENANCYOCI_USEROCI_FINGERPRINTOCI_KEY_FILEなどの認証パラメータを設定します。OCI Object Storageの認証パラメータを参照してください。

  • 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キー認証を使用する場合:

    ここでは、AUTHENTICATION=OCI_DEFAULT設定は省略されています。デフォルト・フローの認証方式は暗黙的であるため、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"

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

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

8.4.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.4.2 Easy Connect Plusのサポート

Oracle Database 19c以降では、Oracle Databaseに接続するためにアプリケーションで使用する簡易接続構文で、Easy Connect Plusと呼ばれる拡張機能がサポートされています。

Easy Connect Plus機能では、一般的なユースケースの場合のOracle Databaseのアプリケーション構成およびデプロイメントが簡略化されます。tnsnames.orasqlnet.oraなどのOracle Netパラメータ・ファイルを構成する必要はありません。TNS_ADMIN環境変数を設定する必要もありません。

この拡張機能があると、簡易接続で、TCPプロトコルとTCPSプロトコルの両方がサポートされます(以前は、TCPトランスポート・プロトコルのみがサポートされていました)。これにより、クライアント構成が、ネットワーク・セキュリティのためにTCPS接続が必須であるOracle Database Cloud Serviceに簡略化されます。

構文:

Easy Connect Plus機能を使用した、拡張された簡易接続構文は、次のとおりです:

[[protocol:]//]host1{,host12}[:port1]{,host2:port2}{;host1{,host12}[:port1]}[/[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
  • アドレス・リスト: Oracle Database 23ai以降では、共通の特性があるプロトコル・アドレスのアドレス・リストを1つ以上指定できます。

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

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

ノート:

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

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

  • ADDRESSパラメータを使用して単一のプロトコル・アドレスを指定:

    次の構文ではセッション・データ・ユニット(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=1min&transport_connect_timeout=30sec&retry_count=3&retry_delay=2

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

    (DESCRIPTION=
       (retry_count=3)(retry_delay=2)
       (connect_timeout=1min)(transport_connect_timeout=30sec)
       (ADDRESS=(PROTOCOL=tcp)(HOST=salesserver1)(PORT=1521))
       (CONNECT_DATA=(SERVICE_NAME=sales.us.example.com))
    )
  • ADDRESS_LISTパラメータを使用して複数のプロトコル・アドレスを指定:

    次の構文ではセッション・データ・ユニット(SDU)を指定しています

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

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

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

関連トピック

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

簡易接続文字列の例いくつかと、各文字列がどのように接続記述子に変換されるかを確認します。

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

ホストあり。

ホスト名は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)))

Easy Connect Plus機能を使用した簡易接続文字列の例をいくつか次に示します:

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

名前/値のペアのリスト(SDURETRY_COUNTおよびCONNECT_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)))

TLSでサポートされているSECURITY属性あり。

ホストは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"

ノート: Oracle Databaseサーバーの場合、パラメータWALLET_LOCATIONは、Oracle Database 23aiとの使用は非推奨です。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)))

複数のプロトコル・アドレスを指定するためのADDRESS_LISTあり。

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

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

8.4.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.4.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を入力するだけでかまいません。