Oracle Call Interfaceを使用したOracle Databaseへのアクセス

Oracle Call Interface (OCI)で開発したアプリケーションを使用する場合、OCI接続文字列またはEssbaseサーバー上のtnsnames.ora構成ファイルで定義されたネット・サービス名を使用して、Essbaseロード・ルールをOracle Databaseに接続できます。

Oracle Call Interface接続文字列を使用したルール・プロパティ

OCI接続文字列を使用してEssbaseロード・ルールをOracle Databaseに接続するには、

  1. Essbase Webインタフェースで、既存のルールを開くか、新しいルールを作成します(「ルールのアクセスと編集」「新しいディメンション構築ルールの作成」または「新しいデータ・ロード・ルールの作成」を参照)。

  2. 「ソース・プロパティ」をクリックします。


    Essbase Webインタフェースのルール・エディタにある「ソース・プロパティ」ボタン

  3. 「SQLプロパティ」をクリックします。

  4. 「プロパティ」から、「Oracle Call Interface (OCI)」を選択します。

  5. 「サーバー」フィールドに、Oracle Database接続文字列を<host>:<port>/<service_name>の形式で入力します。

  6. 「問合せ」フィールドに、Oracle Databaseから必要なデータにアクセスするSQL問合せを入力します。

  7. 「ユーザー名」および「パスワード」フィールドに、Oracle Databaseスキーマへのアクセスに必要な資格証明を指定します。この情報はデータのプレビューに使用されますが、ルールには保存されません。


    「SQLプロパティ」ダイアログ。「プロパティ」オプションには、「Oracle Call Interface (OCI)」が選択されています。「サーバー」フィールドには、DatabaseServerName:PortNumber/ServiceNameという形式のOCI接続文字列が示されています。「問合せ」フィールドには、サンプルSQL問合せが示されています。「ユーザー名」と「パスワード」が入力されています。

  8. 「プレビュー」をクリックして、ルールがデータを接続および取得できるようにし、ルールを保存して閉じます。

構成ファイルに事前定義されたOracle Call Interfaceを使用したロード・ルール

Essbaseサーバーの構成ファイルに定義されているnet_service_nameを使用して、Essbaseロード・ルールをOracle Databaseに接続するには、

  1. Essbaseサーバーで、<Oracle Home>/network/adminに構成ファイル(たとえば、tnsnames.oraという名前)を作成します。

    構成ファイルがすでに存在する場合は、Oracle Call Interface (OCI)を使用してOracle Databaseに接続するための有効なエントリがあることを確認してください。それ以外の場合は、ここで構成します。例を次に示します。

    OCISQL =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = oraclehost.example.com)(PORT = 1521))
        )
        (CONNECT_DATA =
          (service_name = orcl.example.com)
          (SERVER = DEDICATED)
        )
      )
    • net_service_nameはOCISQLです。この名前を書き留めます。次のステップで必要になります。
    • ホストはoraclehost.example.comです。
    • ポートは1521です。
    • サービス名はorcl.example.comです。
  2. Essbase Webインタフェースで、既存のデータ・ロードまたはディメンション構築ルールを開くか、新しいものを作成します(「ルールのアクセスと編集」「新しいディメンション構築ルールの作成」または「新しいデータ・ロード・ルールの作成」を参照)。

  3. 「ソース・プロパティ」をクリックします。


    Essbase Webインタフェースのルール・エディタにある「ソース・プロパティ」ボタン

  4. 「SQLプロパティ」をクリックします。

  5. 「プロパティ」から、「Oracle Call Interface (OCI)」を選択します。

  6. 「サーバー」フィールドに、tnsnames.ora構成ファイルで使用されるnet_service_nameを入力します。ステップ1で示した例に基づいて、OCISQLと入力します。

  7. 「問合せ」フィールドに、Oracle Databaseから必要なデータにアクセスするSQL問合せを入力します。

  8. 「ユーザー名」および「パスワード」フィールドに、Oracle Databaseスキーマへのアクセスに必要な資格証明を指定します。この情報はデータのプレビューに使用されますが、ルールには保存されません。


    「SQLプロパティ」ダイアログ。「プロパティ」オプションには、「Oracle Call Interface (OCI)」が選択されています。「サーバー」フィールドには、OCI接続net_service_nameがあります。「問合せ」フィールドには、サンプルSQL問合せが示されています。「ユーザー名」と「パスワード」が入力されています。

  9. 「プレビュー」をクリックして、ルールがデータを接続および取得できるようにし、ルールを保存して閉じます。

接続のトラブルシューティング

Windowsでは、Oracle Call Interface (OCI)接続文字列を使用した、データのプレビュー、またはルールによるディメンション構築やデータ・ロードの実行が失敗し、次のエラー・メッセージが表示される場合があります:

Attempt to connect to OCI failed. [ORA-12638: Credential retrieval failed].

この問題の原因は、バージョン19c Oracle Databaseサーバーおよび19cクライアント(この場合はEssbaseサーバーがインストールされているクライアント)で設定がないか、tnsnames.ora (またはsqlnet.ora)で次の設定が構成されていることです: SQLNET.AUTHENTICATION_SERVICES=(NTS)

解決策は、Essbaseサーバー・マシンでSQLNET.AUTHENTICATION_SERVICES=(NONE)を構成することです。

  1. <Oracle Home>/network/adminで、構成ファイルを見つけます。

  2. そのファイルを開き、SQLNET.AUTHENTICATION_SERVICES=(NONE)を追加します

  3. Essbaseアプリケーションを再起動します。

ノート:

Oracle Database 19cのSQLNET.AUTHENTICATION_SERVICESドキュメントの使用上のノートを参照してください。