Oracle Call Interfaceを使用したOracle Databaseへのアクセス
Oracle Call Interface (OCI)で開発されたアプリケーションを使用する場合は、OCI接続文字列またはEssbaseサーバー上のtnsnames.ora構成ファイルで定義されたネット・サービス名を使用して、Essbaseロード・ルールをOracle Databaseに接続できます。
Oracle Call Interface接続文字列を使用したルール・プロパティ
OCI接続文字列を使用してEssbaseロード・ルールをOracle Databaseに接続するには、
-
Essbase Webインタフェースで、既存のルールをオープンするか、新規ルールを作成します(「ルールのアクセスと編集」、「新しいディメンション構築ルールの作成」または「新しいデータ・ロード・ルールの作成」を参照)。
-
「ソース・プロパティ」をクリックします。

-
「SQLプロパティ」をクリックします。
-
「プロパティ」から、「Oracle Call Interface (OCI)」を選択します。
-
「サーバー」フィールドに、Oracle Database接続文字列を
<host>:<port>/<service_name>の形式で入力します。 -
「問合せ」フィールドに、Oracle Databaseから必要なデータにアクセスするSQL問合せを入力します。
-
「ユーザー名」および「パスワード」フィールドに、Oracle Databaseスキーマへのアクセスに必要な資格証明を指定します。この情報はデータのプレビューに使用されますが、ルールには保存されません。

-
「プレビュー」をクリックして、ルールがデータを接続および取得できることを確認し、ルールを保存して閉じます。
構成ファイルに事前定義されたOracle Call Interfaceを使用したロード・ルール
Essbaseサーバー上の構成ファイルで定義されているnet_service_nameを使用して、Essbaseロード・ルールをOracle Databaseに接続するには、
-
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です。
- net_service_nameは
-
Essbase Webインタフェースで、既存のデータ・ロード・ルールまたはディメンション構築ルールをオープンするか、新規ルールを作成します(「ルールのアクセスと編集」、「新しいディメンション構築ルールの作成」または「新しいデータ・ロード・ルールの作成」を参照)。
-
「ソース・プロパティ」をクリックします。

-
「SQLプロパティ」をクリックします。
-
「プロパティ」から、「Oracle Call Interface (OCI)」を選択します。
-
「サーバー」フィールドに、
tnsnames.ora構成ファイルで使用されるnet_service_nameを入力します。ステップ1に示した例に基づいて、OCISQLと入力します。 -
「問合せ」フィールドに、Oracle Databaseから必要なデータにアクセスするSQL問合せを入力します。
-
「ユーザー名」および「パスワード」フィールドに、Oracle Databaseスキーマへのアクセスに必要な資格証明を指定します。この情報はデータのプレビューに使用されますが、ルールには保存されません。

-
「プレビュー」をクリックして、ルールがデータを接続および取得できることを確認し、ルールを保存して閉じます。
接続性のトラブルシューティング
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)を構成することです。
-
<Oracle Home>/network/adminで、構成ファイルを見つけます。 -
ファイルを開いて
SQLNET.AUTHENTICATION_SERVICES=(NONE)を追加します -
Essbaseアプリケーションを再起動します。
ノート:
Oracle Database 19cについては、SQLNET.AUTHENTICATION_SERVICESドキュメントの使用上のノートを参照してください。