ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド
11g リリース 1 (11.1.1)
B61375-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

24.6 データのフォーマット

データがデータソースから取り出されると、Oracle Reportsによりレポート・レイアウトが生成され、出力がフォーマットされます。ペーパー・レイアウトに要する時間は多くの要因に依存しますが、一般に次のことが関係しています。

Webレイアウトのルールは少し異なり、Oracle Reportsでは、Webページの所有もレンダリング・メカニズムの制御も行われません。データが通常のJSPページに送られるだけです。

この項では、レポートのフォーマットの確認およびチューニングについて説明します。

24.6.1 ペーパー・レイアウト

デフォルトのペーパー・レイアウトを生成すると、Oracle Reportsでは、オブジェクトが別のオブジェクトに重なって表示されないように、ほとんどすべてのオブジェクトが枠で囲まれます。実行時は、すべてのレイアウト・オブジェクト(枠、フィールド、ボイラープレートなど)が調べられ、オブジェクトが重なって表示される可能性が判別されます。明らかに重なって表示される可能性がない場合(たとえば、ボイラープレート・テキスト列のヘッダー)は、オブジェクトを直接囲む枠が削除されます。これにより、Oracle Reportsによるフォーマットが必要なオブジェクトの数が減り、結果として、パフォーマンスが向上します。

可変で、水平または垂直あるいはその両方の方向に拡張または縮小可能に定義されているオブジェクトには、追加の処理が必要です。この場合、Oracle Reportsでは、そのオブジェクトと周辺のオブジェクトをフォーマットする前に、そのオブジェクト・サイズのインスタンスを決める必要があります。固定サイズが割り当てられたオブジェクトの場合は、そのサイズとオブジェクト間の位置関係がわかっているため、処理のオーバーヘッドは生じません。

次に、ペーパー・レイアウトの作成時にパフォーマンスの向上に役立つガイドラインを示します。

  • 非グラフィカル・レイアウト・オブジェクト(ボイラープレート・テキストやテキスト付きフィールドなど)は、そのフィールドの「垂直拡張度」プロパティおよび「水平拡張度」プロパティを「固定」に設定してサイズを固定します。特に、繰返し枠とそのコンテンツのサイズを固定に設定すると、パフォーマンスが向上します。可変サイズの非グラフィカル・オブジェクトでは、Oracle Reports Builderがオブジェクトをフォーマットする前にそのサイズを決める必要があるため、処理のオーバーヘッドが生じます。一方、固定の非グラフィカル・オブジェクトでは、追加の処理が必要ないため、オーバーヘッドが少なくなります。

  • グラフィカル・レイアウト・オブジェクト(イメージやグラフなど)は、そのオブジェクトの「垂直拡張度」および「水平拡張度」プロパティを「可変」に設定してサイズを変更可能にします。固定のグラフィカル・オブジェクトでは、そのコンテンツを適切なサイズにスケーリングする必要があるため、処理のオーバーヘッドが大きくなります。可変オブジェクトはそのコンテンツに合せて拡張または縮小されるため、スケーリングは必要ありません。

  • テキスト・フィールドの行数は1行で済むようにし、その内容が指定した幅に収まるようにします(SUBSTRファンクションを使用するなどの方法により)。テキスト・フィールドの行数が複数になる場合、Oracle Reports Builderでは、ワード・ラップ・アルゴリズムによりフィールドのフォーマットが必要になります。テキスト・フィールドは必ず1行になるようにすると、フォーマット時にワード・ラップ・アルゴリズムによる処理のオーバーヘッドを回避できます。

  • 同一フィールドやボイラープレート・テキスト内では、複数の異なるフォーマット属性(フォントなど)の使用は極力少なくします。フォーマットにより長い時間が必要となるためです。

  • レポート問合せでSUBSTRファンクションを使用して、データベース・レベルでデータを切り捨てます。Report Builderレイアウトでフィールドから文字列を切り捨てる方法は避けます。

  • ペーパー・レイアウトのみのレポートでは、.rdfおよび.repファイルのほうが.jspファイルよりも高速に実行されます。.rdf.repファイルのフォーマットはシリアライズされており、解析が不要なためです。また、.repファイルは現行プラットフォーム用に最適化されているため、.rdfファイルよりも高速に実行されます。

24.6.1.1 フォーマット・トリガー

フォーマット・トリガーを使用すると、オブジェクトの外観の無効化、有効化および変更を動的に実行できます。フォーマット・トリガーは、実行時に関連するオブジェクトのインスタンスが作成されフォーマットされるたびに起動されるため、その使用には注意が必要です。

次の例を考えてみます。

表レポートに、垂直に拡張する繰返し枠が1つあり、その「ページ保護」プロパティが「はい」に設定されています。レポートのフォーマット時に、最初のページの下部に1行分の余白が残ります。Oracle Reportsでは、繰返し枠の次のインスタンスでフォーマットを開始し、関連するフォーマット・トリガーを起動します。繰返し枠内のオブジェクトの1つが拡張されたことがわかると、繰返し枠のこのインスタンスは次のページに移動されます。繰返し枠のフォーマット・トリガーが再起動されます。この場合、繰返し枠は1回だけ表示されますが(2番目のページの最上部)、フォーマット・トリガーは2回起動されます。フォーマット・トリガーが特定のオブジェクトに対して何回実行されるかわからないため、フォーマット・トリガー内ではDMLを実行しないようにしなければなりません。

この例では、フォーマット・トリガー内にINSERT文があると、データ行が2行挿入されてしまいます。

繰返し枠には、データをフィルタリングするフォーマット・トリガーを使用することもできます。ただし、フィルタリングは適切なレベルで使用することで、レポートのパフォーマンスを向上させるだけでなく、この種のレポートで必要とされる複雑さを軽減することもできます。

可能であれば、次の順序でフィルタリングを行います。

  • サーバーからデータが返されないようにSQL文を変更します。

  • グループ・フィルタを使用して、データ・モデルにフィルタリングを導入します。

  • フォーマット・トリガー内でreturn falseを使用します。

フォーマット・トリガーは、その起動回数が最小限になるように、オブジェクトまたは枠階層のできるだけ高いレベルに配置してください。例:

図24-1 フォーマット・トリガー

図24-1の説明が続きます
「図24-1 フォーマット・トリガー」の説明

Oracle Reports内でトリガーやPL/SQLプログラム・ユニットを定義するときは必ず、コードの効率性を最大にしてください。たとえば、フィールドの表示属性を動的に変更して基準値を超えた値を強調するには、SRW.SET_TEXT_COLORビルトイン・プロシージャなどの個別のビルトインを使用してその属性を変更します。

PL/SQLチューニングに関連する一般的問題の詳細は、Oracle Database PL/SQL言語リファレンスを参照してください。

レイアウト・オブジェクト(枠や繰返し枠など)はビットマップ・ファイルとしてレンダリングされないため、これらのオブジェクトに透明な境界線と塗りつぶしパターンを割り当てると、パフォーマンスが向上します。

24.6.1.2 イメージ出力

イメージのサポートに関連する環境変数を慎重に設定することによって、イメージを含むレポートのパフォーマンスを向上させることができます。

PDFファイルまたはプリンタへのグラフ出力のパフォーマンスの向上

REPORTS_GRAPH_IMAGE_DPI環境変数は、PDFファイルまたはプリンタにグラフを出力する際のインチ当たりのドット数(DPI)を指定します。この環境変数のデフォルト値は、72 DPIに設定されています。これは、レポートのファイル・サイズを小さくするとともに、レポートの生成に要する時間を最小化するためです。72 DPIより高い値を指定すると、PDFファイルやプリンタに出力されるグラフのイメージ解像度が向上します。ただし、これにより、ファイル・サイズが大きくなるだけでなく、レポート出力の生成に、より時間がかかります。

値を250に設定すると、Oracle Reportsグラフを含むレポートの生成時間が、同じレポートを72 DPIの値に設定して生成する場合の5から6倍になります。PDFファイルのサイズも5から6倍になります。

この機能は、PDF出力およびプリンタ出力専用になっているため、現時点のOracle Reports配布機能ではサポートされていません。


注意:

DPI値を250超に設定し、グラフの大きさを5"x5"より大きくすると、JVMのOut Of Memoryエラーを回避するために、REPORTS_JVM_OPTIONS環境変数を使用してJVMヒープ・サイズの値を変更することも必要になります。


詳細は、第B.1.50項「REPORTS_GRAPH_IMAGE_DPI」を参照してください。

JPEG/GIF/PNG出力イメージ形式のパフォーマンスの向上

入力イメージ形式がJPEGの場合、REPORTS_OUTPUTIMAGEFORMAT環境変数をGIFまたはPNGに設定しないことをお薦めします。設定すると、イメージのサイズがさらに大きくなり、パフォーマンスが低下する場合があります。同様に、入力イメージ形式がGIFまたはPNGの場合、REPORTS_OUTPUTIMAGEFORMAT環境変数をJPEGに設定しないことをお薦めします。パフォーマンスを向上させるには、入力と出力の両方に同じ形式を使用します。

詳細は、第B.1.58項「REPORTS_OUTPUTIMAGEFORMAT」を参照してください。

JPEGイメージのパフォーマンスの向上

REPORTS_JPEG_QUALITY_FACTOR環境変数によって、JPEGイメージに求められるイメージ画質のレベルが指定されます。JPEGイメージの画質とイメージのサイズのトレードオフが制御されます。イメージの画質がよいほど、イメージ・ファイルのサイズが大きくなり、パフォーマンスが低下します。パフォーマンスを向上させるには、値を0に設定します。デフォルト値は100(最高画質)です。値を75に設定すると、適切な圧縮率を維持したまま、イメージの画質が向上します。

詳細は、第B.1.52項「REPORTS_JPEG_QUALITY_FACTOR」を参照してください。

24.6.2 WebレイアウトとJSPレポート定義

Oracle Reportsでは、好みのWebオーサリング・ツールを使用してWebページの静的部分を設計してから、Oracle Reports Builderを使用してページの適切なセクションに動的部分(データ)を挿入できます。設計の悪いWebページは、体感パフォーマンスに影響を与えます。または、事前定義済のOracle Database Webテンプレートを使用して、Webページを構築することもできます。

JSPファイルには、Javaコードを記述しないようにします。表示ロジックにビジネスおよびデータ・アクセスJavaコードを混在させると、JSPのフットプリントが増大し、システム・リソースの使用と管理の効率性が制限されます。

Webページのカスタマイズされたフォーマットは、常に負荷の高い操作になります。Oracle Reportsでネイティブに実行できないフォーマット(データ・ブロックのフォアグラウンド・カラーの変更など)は、すべてJavaを使用して実行してください。フォーマット目的で、PL/SQLラッパーを使用することはお薦めしません。

.jspレポート定義には、ペーパー・レイアウト定義とWebレイアウト定義の両方を含めることができます。Oracle Reportsでは、レポートの実行時に、常にペーパー・レイアウト定義が最初にフォーマットされます。JSPレポートのWebレイアウト・セクションに、ペーパー・レイアウト・オブジェクトを参照する<rw:include>タグが含まれている場合があるためです。JSPレポートにペーパー・レイアウト・オブジェクトへの参照がない場合、SUPPRESSLAYOUTコマンドライン・キーワードを使用して、Oracle Reportsでペーパー・レイアウトのフォーマットが実行されないようにすることをお薦めします。