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ドキュメントの使用上のノートを参照してください。