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