イベント・ポーリング表によるキャッシュ・イベントの処理
1つ以上の物理表が更新されたことをOracle BIサーバーに通知する方法として、Oracle BIサーバーのイベント・ポーリング表(イベント表)を使用できます。イベント表に追加される各行は、本番データベース内の本番表に対して発生する更新など、単一の更新イベントを表します。
Oracle BIサーバー・キャッシュ・システムは、イベント表から行を読み込み(ポーリング)、物理表の情報を行から抽出し、その物理表を参照する古いキャッシュ・エントリをパージします。
イベント表は、Oracle BIサーバーがアクセス可能なリレーショナル・データベース上に存在する物理表です。専用のデータベースにあるか、他の表も含まれるデータベースにあるかにかかわらず、固定のスキーマ(物理データベースでのイベント・ポーリング表の設定を参照)が必要です。通常は、管理ツールの物理レイヤーでのみ公開され、「物理表」ダイアログでOracle BIサーバー・イベント表として識別されます。
イベント表の使用は、古いキャッシュ・エントリを無効化する最も正確な手段の1つであり、多くの場合、最も信頼できる方法です。ただし、データベース表が更新されるたびに、イベント表を移入する必要があります。また、ポーリング間隔の間はキャッシュが必ずしも最新の状態ではないため、キャッシュ内のデータが古い可能性が常にあります。Oracle BIサーバー・イベント・ポーリング表の移入を参照してください。
イベント表を更新する一般的な方法は、データベースを移入する、抽出およびロードのスクリプトまたはプログラムに、SQLのINSERT
文を指定する方法です。INSERT
文によって、物理表が変更されるたびに1つの行がイベント表に追加されます。このプロセスが実施され、Oracle Analytics Serverリポジトリ内でイベント表が構成されると、キャッシュの無効化が自動的に行われます。イベント表を更新するスクリプトが、表に対する変更を正確に記録しているかぎり、指定されたポーリング間隔で、古いキャッシュ・エントリが自動的にパージされます。
このセクションには次のトピックが含まれます:
物理データベースでのイベント・ポーリング表の設定
各物理データベース上に物理イベント・ポーリング表を構成して、データベース内の変更を監視できます。
独自のデータベースでイベント表を構成することもできます。イベント表は、データベース内の表が変更されるたびに更新されます。
イベント・ポーリング表がOracle Databaseにある場合は、管理ツールの物理レイヤーで、イベント表をその独自のデータベース・オブジェクトで構成します。次に、イベント・ポーリング表の「データベース」ダイアログの「機能」タブで、機能PERF_PREFER_IN_LISTS
の選択が解除されていることを確認します。このガイドラインに従うことで、リスト内で許容される最大式数を超えるエラーが回避されます。
イベント・ポーリング表を作成するには、リポジトリ作成ユーティリティ(RCU)を実行し、物理データベース内にBIPLATFORMスキーマを作成します。RCUによってS_NQ_EPTという名前のイベント・ポーリング表が作成されます。リポジトリ作成ユーティリティの実行の詳細は、Oracle Analytics Serverのインストールと構成を参照してください。
イベント表は次の表に示す構造である必要があります。イベント表の配置場所によっては、一部の列にnull値を格納できます。列の名前は、次の表に記載されている列名に一致する必要があります。表示されているデータ・タイプは、Oracle Database用です。
イベント表の列 | データ型 | 説明 |
---|---|---|
CATALOG_NAME |
VARCHAR2 |
更新された物理表が位置するカタログの名前。 イベント表が、更新された物理表と同じデータベースにない場合のみ、CATALOG_NAME列を移入します。それ以外の場合は、null値に設定します。 |
DATABASE_NAME |
VARCHAR2 |
更新された物理表が位置するデータベースの名前。これは、管理ツールの物理レイヤーで定義されているデータベースの名前です。たとえば、物理データベースの名前が11308Productionで、管理ツールに表示される場合のデータベース名がSQL_Productionの場合、イベント表内のポーリングされる行には、データベース名としてSQL_Productionが含まれている必要があります。 イベント表が、更新された物理表と同じデータベースにない場合のみ、DATABASE_NAME列を移入します。それ以外の場合は、null値に設定します。 |
OTHER_RESERVED |
VARCHAR2 |
将来の拡張に備えて予約されています。この列は、null値に設定する必要があります。 |
SCHEMA_NAME |
VARCHAR2 |
更新された物理表が位置するスキーマの名前。 イベント表が、更新される物理表と同じデータベースにない場合のみ、SCHEMA_NAME列を移入します。それ以外の場合は、null値に設定します。 |
TABLE_NAME |
VARCHAR2 |
更新された物理表の名前。この名前は、管理ツールの物理レイヤーで表に対して定義されている名前に一致している必要があります。 null値は指定できません。 |
UPDATE_TS |
DATE |
イベント表に対する更新が発生する日時。これは、イベント表に追加される行ごとに増加する、キー(一意)値である必要があります。増加する一意の値であるためには、列のデフォルト値として現在のタイムスタンプを指定します。たとえば、Oracle Databaseの場合は、 null値は指定できません。 この列は、イベント表に追加される行ごとに増加する一意の値である必要があるため、1秒間に多くの挿入が行われる場合は、非常に高い精度の設定が必要になることがあります。このため、データベース機能の たとえば、Oracle DatabaseやTeradataの場合は、 |
UPDATE_TYPE |
NUMBER |
更新スクリプトに値1を指定して、標準の更新であることを指定します null値は使用できません。 |
Oracle BIサーバーは、イベント・ポーリング表に対して読取りと書込みの権限を持っている必要があります。サーバーは、指定された間隔でイベント表を読み取り、変更されたデータを探します。データベース表が変更されている場合は(たとえば、ロード処理時)、イベント表に行が追加されます。イベント表に行がある場合、基礎となるデータベースに変更されたデータがあります。変更された物理表に対応するキャッシュ・エントリが無効化され、イベント表から古い行が定期的に削除されます。次にイベント表を確認するときも、処理が繰り返されます。
ノート:
クラスタ化されたデプロイメントでは、1つのイベント・ポーリング表が、クラスタ内のすべてのOracle BIサーバー・ノードで共有されます。ただし、1つのイベント・ポーリング表を、複数のOracle BIサーバー・クラスタで共有することはできません。Oracle BIサーバーに、イベント・ポーリング表(データベース内の他の表ではない)への書込み権限を与えるには、次のタスクを実行します。
-
権限を持つ接続プールを使用して、管理ツールの物理レイヤーに、個別の物理データベースを作成します。
-
削除権限を持つ接続プールにユーザーを割り当てます。
-
イベント表を使用して権限が必要なデータベースを移入します。
Oracle BIサーバーは、イベント・ポーリング表への書込み権限は持っていますが、ユーザー問合せに答えを返すために使用される表への書込み権限は持っていません。
イベント・ポーリング表のアクティブ化
物理データベースに表を作成したら、Oracle BIサーバーでその表をアクティブ化できます。これを行うには、最初に物理表をインポートし、表オブジェクトをイベント・ポーリング表としてマークします。
物理表をインポートするには:
-
管理ツールで、リポジトリを開き、物理データベースからメタデータをインポートします。これを行うには、「ファイル」を選択し、「メタデータのインポート」を選択します。
-
ウィザードのステップに従います。「メタデータ型の選択」画面の「表」オプションを選択して、表のメタデータをインポートします。
「メタデータのインポート」ウィザードの詳細は、Oracle Analytics Serverメタデータ・リポジトリの管理のメタデータのインポートとデータ・ソースの操作を参照してください。
-
イベント・ポーリング表が複数ある場合は、イベント表ごとにステップ1および2を繰り返します。イベント表用に指定されているデータソースが、イベント表に対して読取り/書込み権限を持っていることを確認します。リポジトリは、表の読取りと表の行の削除を両方行うため、書込み権限が必要です。イベント表が、ビジネス・モデルおよびマッピング・レイヤーで公開される必要はありません。
表オブジェクトをイベント・ポーリング表としてマークするには:
表がOracle BIサーバー・イベント表として登録されると、表のプロパティが変わります。イベント表として登録すると、イベント・ポーリング表から結果をキャッシュする理由がないため、表をキャッシュ可能とマークするオプションが削除されます。
Oracle BIサーバー・イベント・ポーリング表の移入
Oracle BIサーバーでは、イベント・ポーリング表が移入されません。表が更新されるたびに行を挿入することによって、イベント表は移入されます。
このプロセスは、通常、データベース管理者によって構成されます。一般には、データベース管理者が、表が変更されるたびにポーリング表に行を挿入するロード・プロセスを変更します。これは、(トリガーをサポートするデータベース内で)データベース・トリガーを使用するロード・スクリプト、アプリケーション、または手動で行うことができます。イベント表の移入のプロセスが正しく行われないと、サーバーではポーリング表内の情報が正確で最新であるとみなされるため、Oracle BIサーバーのキャッシュのパージに影響します。
イベント・ポーリング表に関する問題のトラブルシューティング
イベント・ポーリング表に関する問題のトラブルシューティングは、アクティビティ・ログから開始できます。
キャッシュのポーリングに関して問題が発生した場合は、Oracle BIサーバー・アクティビティ・ログを検索して、サーバーとイベント表とのやり取りに関するエントリを確認できます。
-
obis1-diagnostic.logファイルは、Oracle BIサーバーに関するアクティビティを自動的に記録します。ログ・エントリは自明であり、Fusion Middleware Controlまたはテキスト・エディタで表示できます。
-
Oracle BIサーバーがイベント表のポーリングを行うと、管理者アカウント(インストール時に設定)を使用して、nqquery.logファイルに問合せが記録されます。ただし、管理者アカウントのログ・レベルが0に設定されている場合を除きます。最も役立つレベルの情報を提供するためには、管理者アカウントのログ・レベルを2に設定します。
obis1-diagnostic.logとnqquery.logは次の場所にあります。
BI_DOMAIN/servers/obisn/logs