ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Business Intelligence Publisher管理者ガイド
リリース11g (11.1.1)
B66709-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

F メモリー・ガード機能の有効化

この項では、過剰なデータを生成するレポート・リクエストが原因で生じるメモリー障害からシステムを保護するために用意された構成設定について説明します。

内容は以下のとおりです。


注意:

メモリー・ガードはOracle BI Publisher 11.1.1.7.10以降のバージョンには適用されますが、それより前のバージョンでは使用できない場合があります。Oracle BI Publisher 11.1.1.7.10の詳細は、「11.1.1.7.10.の新機能」を参照してください。


F.1 メモリー・ガード機能とは

BI Publisherは、過剰な量のデータを生成するレポート・リクエストを遮断することにより、Oracle BI Publisherサーバー・インスタンスをメモリー不足エラーから保護するオプションを提供する一連の機能を備えています。このようなメモリー・ガード機能は、構成ファイルに設定するプロパティ・セットで構成されます。これらのプロパティを使用すると、データ・サイズを検査してシステムでレポート・リクエストの処理を続行するか、終了するかを判断する条件および処理ポイントを構成できます。データ・サイズが原因で処理が終了すると、ユーザーにエラー・メッセージが返されます。システムでこれらの設定を有効にする前に、テスト・モードを使用できます。テスト・モードではレポートは拒否されませんが、結果がログ・ファイルに書き込まれるので、本番環境で設定を有効にする前に終了対象のリクエストを確認できます。

F.2 主な機能

メモリー・ガード機能には9個のプロパティがあります。いくつかのプロパティを組み合せて使用し、処理を終了する条件を詳細に定義します。主な設定は次のとおりです。

オンライン処理の最大許容データ・サイズの指定

この機能では、オンライン・レポート表示の最大許容データ・サイズを指定できます。最大データ・サイズを設定した場合、ユーザーがオンライン表示でレポートを開くと、次の処理が行われます。

  1. ユーザーが、ブラウザでのオンライン表示用にレポートを送信します。

  2. データ・エンジンがレポート用のデータを生成します。

  3. ドキュメントが生成される前に、データのサイズ(バイト単位)が検査されます。

  4. 生成されたデータが最大設定を超える場合、レポート処理は終了します。ユーザーに次のメッセージが表示されます。

    実行しようとしているレポートは、このサーバーに設定されたデータ制限を超えています。データを削減するパラメータを使用して再実行するか、このレポートをスケジュールしてください。質問がある場合は管理者に問い合せてください。

    ユーザーは、データを制限するパラメータを設定して(レポートで使用できる場合)オンラインで再送信するか、BI Publisherスケジューラを使用してレポートを送信することが可能です。

この機能を有効にするには、プロパティONLINE_REPORT_MAX_DATA_SIZEを設定します。

オンライン処理の最小空きメモリーしきい値の指定

この設定では、空きJVM領域の最小値を指定できます。これにより、2つの要素(現行使用量およびレポート・データのサイズ)に基づいて、レポートを実行するかどうかを制御できます。この機能では、組み合せて使用する複数のプロパティを設定する必要があります。JVM領域のしきい値、JVMがしきい値を下回った場合のレポートの最大許容レポート・サイズ、およびレポートを一時停止して使用可能なJVMの空き領域が増加するのを待つ最大待機時間を指定します。

これらのプロパティを設定した場合、ユーザーがオンライン表示でレポートを開くと、次の処理が行われます。

  1. ユーザーが、ブラウザでのオンライン表示用にレポートを送信します。

  2. データ・エンジンがレポート用のデータを生成します。

  3. JVMメモリーが検査されます。使用可能なJVMメモリーがしきい値を上回る場合、レポートは通常どおり処理され、システムの介入は行われません。

    使用可能なJVMメモリーがしきい値を下回る場合、レポート・データのサイズが検査され、空きメモリー未満のオンライン・レポート・データ・サイズの設定と比較されます。レポート・データがこのしきい値を下回る場合、レポートの処理は続行します。

    レポート・データ・サイズがしきい値を超えている場合、レポートは一時停止して、空きメモリーが使用可能になるのを待機します。レポートは、待機時間の設定で指定された時間待機します。指定された待機時間内に空きメモリーが最小値を超えて回復しない場合、レポート・リクエストは拒否されます。

データ・エンジンで生成可能な最大データ・サイズの設定

この設定では、データ・モデルの実行で生成可能なデータに対して絶対制限を設定します。この設定は、オンライン・レポート・リクエストとスケジューラ経由で送信されたリクエストの両方に適用されます。データ・エンジンによって生成されたファイルのサイズが制限を超える場合、データ・エンジンはデータ・モデルの実行を終了して、次の例外をスローします。

「oracle.xdo.dataengine.diagnostic.XMLSizeLimitException: 生成されたXML出力(NNNNNNバイト)は指定のファイル・サイズ制限(NNNNNバイト)を超えています。」

レポート・リクエストがスケジューラ経由で送信された場合、そのジョブは「レポート・ジョブ履歴」ページに失敗と表示されます。前述の例外エラーは、カーソルをステータスの上に置くと表示されます。レポート・リクエストがオンラインで送信された場合、ユーザーにエラー「データXMLを取得できません。」が表示されます。

自動データベース・フェッチ・サイズの設定

この設定では、データ・セット列の合計数と問合せ列の合計数に基づいて、実行時にデータベース・フェッチ・サイズの計算と設定を行います。このプロパティを設定すると、サーバー・レベルおよびデータ・モデル・レベルのデータベース・フェッチ・サイズのプロパティがオーバーライドされます。このプロパティは、設定時にすべてのデータ・モデルに適用されるので、処理時間が大幅に遅くなる可能性があります。この設定は、何百もの列を使用した複雑な問合せを頻繁に処理するBI Publisherの実装(Oracle Fusion Applicationsの実装など)で使用することをお薦めします。ほとんどの一般的なBI Publisherの実装で、この設定を使用することはお薦めしません。

F.3 メモリー・ガード・オプションの構成

メモリー・ガード機能を実装するには、このプロパティ・セットを、次の場所にあるxmlp-server-config.xmlファイルに追加します。

{BI Publisher Repository}/Admin/Configuration/xmlp-server-config.xml

表1でプロパティ設定について説明します。

表F-1 メモリー・ガードのプロパティおよび説明

プロパティ 説明

ONLINE_REPORT_MAX_DATA_SIZE

デフォルト値: 20000000

最大許容オンライン・レポート・データ・サイズをバイト単位で設定します。オンライン・レポート・リクエストは、データ・モデルの実行から返されたレポート・データ・サイズがこのプロパティの値を超えると必ず即座に拒否されます。

このプロパティが構成ファイルに設定されていないか設定値が負の値の場合、この条件は無視されるので、この設定に基づいて拒否されるリクエストはありません。

ONLINE_REPORT_FREE_MEMORY_THRESHOLD

デフォルト値: 100000000

レポート・リクエストの拒否を判定する、空きJVMメモリーのしきい値(バイト単位)。ランタイムから返されたJVM空きメモリーがこのプロパティの値を下回ると、サーバーはレポート・データ・サイズをチェックして、リクエストを受け入れるか拒否するかを決定します。このプロパティは、次の3つのプロパティと組み合せて使用します。

  • ONLINE_REPORT_MAX_DATA_SIZE_UNDER_FREE_MEMORY_THRESHOLD

  • MINIMUM_SECOND_RUN_GARBAGE_COLLECTION

  • WAIT_SECOND_FOR_FREE_MEMORY

このプロパティ値が設定されていないか設定値が負の値の場合、この条件は無視されます。このプロパティはオンライン・レポート・リクエスト専用です。

ONLINE_REPORT_MAX_DATA_SIZE_UNDER_FREE_MEMORY_THRESHOLD

デフォルト値: 10000000 (バイト)

空きJVMメモリーがONLINE_REPORT_FREE_MEMORY_THRESHOLDに設定されている特定のしきい値を下回る場合の最大許容レポート・データ・サイズ(バイト単位)。リクエストのレポート・データ・サイズがこのプロパティの値を超えると、リクエストは拒否されます。

このプロパティが有効になるのは、ONLINE_REPORT_FREE_MEMORY_THRESHOLDが正の値に設定されている場合のみです。このプロパティはオンライン・レポート・リクエスト専用です。

MINIMUM_SECOND_RUN_GARBAGE_COLLECTION

デフォルト値: 300 (秒)

2つの連続するガベージ・コレクション実行間隔の最小時間範囲(秒単位)。この値を設定して、JVMガベージ・コレクションのオーバーランを回避します。サーバーでは120秒の最小時間が強制されるので、値がこの最小時間を下回っていると120秒にリセットされます。

WAIT_SECOND_FOR_FREE_MEMORY

デフォルト値: 30 (秒)

空きJVMメモリーがしきい値を超えて回復するまで、レポートの実行リクエストが待機する最大時間(秒単位)。このプロパティ値が有効になるのは、正の値のONLINE_REPORT_FREE_MEMORY_THRESHOLDが指定されている場合のみです。WAIT_SECOND_FOR_FREE_MEMORYの値未満の時間内に空きメモリーが回復すると、リクエストはただちにドキュメントの生成を続行します。WAIT_SECOND_FOR_FREE_MEMORY秒後、空きメモリーが依然としてしきい値を下回っている場合、リクエストは拒否されます。このプロパティ値を大きくすれば、ブラウザがリクエストの実行を待機する時間が長くなります。

MEMORY_GOVERNOR_MODE

デフォルト値: test

有効な値: productionおよびtest

この設定を使用すると、テスト・モードでメモリー・ガード機能を実行できます。テスト・モードでは、すべてのメモリー・チェックとロギングが実行されますが、終了や拒否されるリクエストはありません。BI Publisherログ・ファイルの結果を表示して、本来ならば終了または拒否されたはずのリクエストを確認できます。この機能を使用すると、実際のシステムで別の機能を有効にする前に、メモリー問題の原因となっているリクエストを特定できます。ログ・レベルは警告以上に設定する必要があります。

XML_DATA_SIZE_LIMIT

デフォルト値: 2GB

データ・モデルの実行で生成可能な最大XMLデータ・サイズ(バイト単位)。この設定は、オンライン・レポート・リクエストとスケジューラ経由で送信されたリクエストの両方に適用されます。データ・エンジンによって生成されたファイルのサイズがこのプロパティの設定値を超える場合、データ・エンジンはデータ・モデルの実行を終了して例外をスローします。このプロパティ値が有効になるのは、XML_DATA_SIZE_LIMITが正の整数値に設定されている場合のみです。

このプロパティの値に単位が指定されていない場合はバイト単位とみなされます(例: 1000000バイト)。MBおよびGBを使用してメガバイトまたはギガバイトを指定することもできます(例: 1MB、2GB)。

DB_FETCH_SIZE_AUTO

デフォルト値: false

処理では、データ・セット列の合計数と問合せ列の合計数に基づいて、実行時にデータベース・フェッチ・サイズの計算と設定を行います。このプロパティ値が有効になるのは、DB_FETCH_SIZE_AUTOがtrueに設定されている場合のみです。このプロパティを設定すると、サーバー・レベルおよびデータ・モード・レベルのデータベース・フェッチ・サイズのプロパティがオーバーライドされます。

ENABLE_DATAMODEL_DIAGNOSTIC

デフォルト値: false

ENABLE_DATAMODEL_DIAGNOSTICのプロパティ値をtrue設定すると、データ・セットの詳細、メモリーおよびSQL実行時間の情報がログ・ファイルに書き込まれます。デバッグ目的限定で、このプロパティをtrueに設定することをお薦めします。trueに設定すると、処理時間が増大します。


F.4 構成ファイルのエントリ例

次に、xmlp-server-config.xmlファイル内のメモリー・ガード・プロパティのエントリ例を示します

({BI Publisher Repository}/Admin/Configuration/xmlp-server-config.xml)。

<property name="ONLINE_REPORT_MAX_DATA_SIZE" value="2000000" /> 
<property name="ONLINE_REPORT_FREE_MEMORY_THRESHOLD" value="100000000" />
<property name="ONLINE_REPORT_MAX_DATA_SIZE_UNDER_FREE_MEMORY_THRESHOLD" value="1000000" /> 
<property name="MINIMUM_SECOND_RUN_GARBAGE_COLLECTION" value="300" /> 
<property name="WAIT_SECOND_FOR_FREE_MEMORY" value="30" /> 
<property name="MEMORY_GOVERNOR_MODE" value="test" /> 
<property name="XML_DATA_SIZE_LIMIT" value="2GB"/> 
<property name="DB_FETCH_SIZE_AUTO" value="true"/> 
<property name="ENABLE_DATAMODEL_DIAGNOSTIC" value="true"/>