| Oracle Application Serverリリース・ノート 10gリリース2(10.1.2)for Solaris Operating System (x86) and Solaris Operating System (x86-64) E05372-02 |
|
![]() 戻る |
![]() 次へ |
この章では、Oracle Reportsに関する問題について説明します。この章の内容は次のとおりです。
|
注意:
|
この項では、Oracle Reportsに関する一般的な問題とその対処方法について説明します。この項の内容は次のとおりです。
第18.1.5項「グループ上およびマトリックス・スタイルを指定したJSPベースのWebレポートで、サマリー列が位置揃えされない」
第18.1.6項「Oracle Enterprise Manager 10gでOracle ReportsのHTML出力のイメージが表示されない」
第18.1.7項「Acrobat Reader 7.0で拡張フォント・サブセット機能を使用すると、大容量のマルチバイト・レポートに文字位置のずれが生じる」
第18.1.10項「「ペーパー・デザイン」ビューで、複数行からなるテキストにインラインでHTMLタグを使用すると色が不正になる」
Oracle Reports 10gリリース2(10.1.2)では、自動保存機能が導入されました。これにより、Reports Builderの予期しないイベントやシステム障害が発生した場合に、保存していない変更がリカバリされます。自動保存を有効にすると、開いているレポートの保存していない変更を自動的にリカバリできます。
自動保存機能を有効にするには、次の手順を実行します。
Reports Builderで、「編集」→「プリファレンス」を選択して、「プリファレンス」ダイアログ・ボックスを表示します。
「プリファレンス」ダイアログ・ボックスの「一般」タブで、「自動保存」を選択します。
自動保存機能は、プリファレンス・ファイルのReports.auto_saveプロパティを変更することによっても有効化できます。このプリファレンス・ファイルは、Windowsではcauprefs.ora、UNIXプラットフォームではprefs.oraになります。ファイルを次のように変更します。
Reports.auto_save = [YES|NO] DEFAULT: NO
使用上の注意
自動保存を有効にした場合、開いているレポートで行った変更は、Reports Builderのメニュー、ツールバー、ツール・パレット、オブジェクト・ナビゲータ、プロパティ・インスペクタおよび他のエディタ・ウィンドウからの様々なイベントの発生時に、一時リカバリ・ファイルに自動的に保存されます。
新しいレポート定義の場合、自動保存はレポートが初めて保存された後に有効になります。
レポートの保存後は、現行のリカバリ・ファイルが削除されます。保存していない変更をリカバリしただけの場合でも、レポートを保存するとリカバリ・ファイルが削除されます。
一時リカバリ・ファイルは、元の定義ファイルと同じ場所に.rdf形式で作成および保存されます。リカバリ・ファイルの形式は、reportname_extension.rdfです。たとえば、元の定義ファイルemp.jspのリカバリ・ファイルはemp_jsp.rdfになります。emp_jsp.rdfファイルは、emp.jspファイルと同じ場所に保存されます。
リカバリ・ファイルが存在する、保存していないレポート定義ファイルを再度開いた場合、その変更内容を保存するように求められます。そのリカバリ・ファイルには、前回の自動保存イベントまでの変更内容が含まれています。変更がリカバリされた後、「保存」または「変更の破棄」オプションを選択する必要があります。「保存」オプションでは、保存されていない以前の変更内容が元のレポート定義ファイルに書き込まれます。「変更の破棄」オプションでは、リカバリされた変更内容が保存されません。レポートを閉じると、リカバリ・ファイルが削除されます。
リカバリ・ファイルを自動保存するときにエラーが発生した場合、自動保存を無効にするか、エラーのまま続行するかを選択するように求められます。
|
注意: 自動保存を有効にした場合、リカバリ・ファイルには、レポート定義ファイルの前回の保存以降に加えた変更がすべて含まれているものとみなされます。そのため、リカバリ・ファイルを保存する前に、リカバリ・ファイルに最新の変更内容が含まれていることを確認する必要があります。元のレポート定義ファイルがリカバリ・ファイルよりも新しいバージョンである場合、リカバリ・ファイルから読み取られた変更内容で元のレポート定義が上書きされないように、レポート定義を元に戻すことができます。 |
OracleAS Reports Servicesデモを正しく動作させるには、OracleAS Reports ServicesをインストールしたコンピュータでApache JServを構成しないでください。
OracleAS Portalでレポートをバッチ登録し、続いてそのレポートの登録を手動で編集すると、「名前を付けて保存」ダイアログ・ボックスが予期しないタイミングで表示される場合があります。
この問題を回避するには、OracleAS Portalでレポートの登録を編集する際に「表示名」プロパティを指定します。
OracleAS Portalでレポートを登録する方法の詳細は、『Oracle Application Server Reports ServicesレポートWeb公開ガイド』を参照してください。
DelimitedData出力では、同レベルのグループがサポートされていないため、メインの問合せに複数の問合せをリンクできません。
次に例を示します。
ケース1: Q1とQ2の間にリンク、Q2とQ3の間にリンクがあり、Q4がスタンドアロンの問合せであるとします。
Q1<-->Q2<-->Q3 Q4
この場合、DelimitedData出力は適切に生成されます。
ケース2: Q1とQ2の間にリンク、Q2とQ3の間にリンクがあり、さらにQ4とQ1の間にリンクがあるとします。
Q1<-->Q2<-->Q3 Q1<-->Q4
この場合、DelimitedData出力は適切に生成されません。かわりにXML出力を使用できます。
グループ上またはマトリックス・スタイルを指定したJSPベースのWebレポート出力で、サマリー列の値が左揃えされない場合、次の対処方法で適切に位置揃えできます。
Reports BuilderでJSPレポートを開きます。
「Webソース」ビューを選択します。
「Webソース」ビューで、サマリー列が定義されているセクションを探し、次の行を削除して余分なスペースを削除します。
<th class="summary_column_name"> </th>
OracleAS Web CacheがSSL対応、Oracle HTTP Serverが非SSL対応に構成されている場合、Oracle ReportsのHTML出力のイメージは、Oracle Enterprise Manager 10gで表示されません。これは、HTML出力に記述されているイメージのURLが、SSL対応のOracleAS Web Cacheポートを指定しているためです。これに対し、Oracle Reportsの過去のジョブ出力に対してOracle Enterprise Manager 10gから発行されるリクエストは非SSL対応です。
この問題を回避するには、Oracle HTTP ServerポートではなくOracleAS Web Cacheポートを指定するように、Reports Server用のURL内のServletプロパティを、targets.xmlファイルで編集します。targets.xmlファイルは、ORACLE_HOME/sysman/emdディレクトリにあります。
たとえば、OracleAS Web CacheがSSL対応で、リスニング・ポート番号が443の場合は、Reports ServerのターゲットのURL内のServletプロパティを、targets.xmlファイルで次の例のように編集します。
<Target TYPE="oracle_repserv" …..> ...... <Property NAME="Servlet" VALUE="https://xyz.mycompany.com:443/reports/rwservlet"/> ...... </Target>
Acrobat Reader 7.0で、デフォルトの拡張フォント・サブセット機能を使用する大容量のマルチバイトおよびUnicodeのPDFレポートを表示すると、一部の文字が誤った位置に表示されます。
この問題を回避するには、次のいずれかを実行します。
環境変数REPORTS_ENHANCED_SUBSETをNOに設定して、Oracle Reports 10gリリース2(10.1.2)より前のリリースで使用していたType 3フォントのサブセットの実装に戻します。
Acrobat Reader 6.0以前を使用します。
レポート内でSQL構文を使用すると、次の条件下でPL/SQLコンパイルに失敗することがあります。
ROW_NUMBER()など、Oracle Database 9.xより後のリリースで導入されたSQL構文が使用されている。
SQL構文がクライアント側のPL/SQLプロシージャで使用されている。
この問題を回避するには、次のいずれかを実行します。
Oracle Databaseリリース10.1.0.4以降を使用します。
SQL構文をサーバー側のストアド・プロシージャに移動します。
プロシージャではなく、SQL問合せでSQL構文を直接使用します。
Oracle Reports 10gリリース2(10.1.2)Patch 2より前のリリースで開発されたレポートでは、レポートをXML形式で保存する場合、レポートでPL/SQLパッケージを定義する際に、パッケージ仕様(場合によっては本文)がXMLレポートに保存されなくなる問題が発生することがあります。この問題を解決するには、次の手順のいずれかを実行します。
RDFが存在する場合、Oracle Reports 10gリリース2(10.1.2)Patch 2以降を使用して、XML出力ファイルを再生成します。
RDFが存在しない場合は、次の例のように、XMLを手動で編集してfunction要素にtype="packageSpec"またはtype="packageBody"(あるいはその両方)を追加します。
<programUnits> <function name="a" type="packageSpec"> <textSource> <![CDATA[ PACKAGE a IS function lire return date ; END a; ]]> </textSource> </function> <function name="a" type="packageBody"> <textSource> <![CDATA[ PACKAGE BODY a IS function lire return date is c2 date; begin c2 :=sysdate; return c2; end; END; ]]> </textSource> </function> <function name="cf_1formula" returnType="date"> <textSource> <![CDATA[ function CF_1Formula return Date is aa date; begin --aa :=a.lire; end; ]]> </textSource> </function> </programUnits>
次のいずれかの状況下では、Reports Builderの「ペーパー・デザイン」ビューでテキストが不正な色で表示される場合があります。
テキスト・オブジェクトが複数行のテキストで構成されており、2行目以降へ折り返されている。
テキスト・オブジェクトの「HTMLタグを含む」プロパティが「はい」に設定されている。
複数行のテキストの部分によって適用されている色が異なる。
|
注意: この問題は、「ペーパー・デザイン」ビューでのみ発生します。これ以外のフォーマットではすべて、レポートは正しい色で出力されます。 |
動的なrefcursorを含むレポートは、仮想メモリーのシステム・エラーによって失敗する場合があります。この問題を解決するには、オラクル社カスタマ・サポート・センターに問い合せて、特定のパッチを適用します。Linux x86、64ビット版SolarisおよびWindowsに対応したパッチが用意されています。
この項では、Oracle Reportsのベンダー固有の問題とその対処方法について説明します。この項の内容は次のとおりです。
次の例のように、HTMLCSSでフィールド・オブジェクトのスタイルをカスタマイズし、スタイルの一部として背景色と下線の両方を指定した場合、出力時に下線が正しく表示されない場合があります。
.ReportLevel {text-decoration:underline;color:blue; background-color:yellow}
これは、ブラウザの制限によるものです。下線と背景色の両方が指定されているフィールドで下線を絶対位置で指定した場合、ブラウザでは下線は表示されません。
150以上の列が含まれるJSPベースのWebレポートを実行すると、次の例のようにoracle.jsp.provider.JspCompileExceptionエラーが発生する場合があります。
500 Internal Server Error
OracleJSP: oracle.jsp.provider.JspCompileException:
Errors
...
6764 code too large for try statement catch( Throwable e)
{18 code too large public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException}
これは、Java言語に、多数のメソッドを含むJavaファイルのコンパイルを許可しないという制限があることが原因です。
この項では、Oracle Reportsのグローバリゼーション・サポートに関する問題とその対処方法について説明します。この項の内容は次のとおりです。
第18.3.2項「NLS_LANGがJA16EUCの場合、PostScriptフォント・マッピングでMS明朝フォントが動作しない」
第18.3.3項「Oracleのオブジェクト・タイプを含むマルチバイト・レポートでReports Builderがハングする」
第18.3.5項「Application Server ControlのReports Serverのジョブ・ステータス・メッセージに無効な文字が含まれる」
トルコ語環境で、イメージを含むレポートを拡張イメージを使用して実行する場合(NLS_LANGをTURKISH_TURKEY.TR8MSWIN125またはTURKISH_TURKEY.WE8ISO8859P9に設定する場合)、環境変数REPORTS_OUTPUTIMAGEFORMAT=[PNG|GIF]を設定します。
または、コマンドライン・キーワードOUTPUTIMAGEFORMAT=[PNG|GIF]を使用してレポート・リクエストの値を制御できます。
WindowsでReports Builderを使用して作成したレポートを、NLS_LANGがJA16EUCに設定されているSolarisまたはLinuxのReports Serverに配布する場合、PDFフォント・マッピングは機能しません。この問題は、次のフォントのいずれかがPostScriptのフォント・マッピング・エントリに使用されている場合に発生します。
"<MS Mincho in JP>"..... "<MS PMincho in JP>".....
この問題を回避するには、次のいずれかの作業を行います。
NLS_LANGをJA16SJISに設定します。
レポートの作成時に、PostScriptのフォント・マッピングでMS MinchoのかわりにMS Gothicを使用します。
Oracleのオブジェクト・タイプが埋め込まれたマルチバイト・レポートを実行すると、Reports Builderが応答しなくなることがあります。この問題は、今後のパッチ・セットで修正される予定です。
これは既知の問題です。
Solarisプラットフォームでは、Reports Builderのレポート・ウィザードで、UI文字列「Query Builder...」および「Import SQL Query...」が日本語および韓国語環境で切り捨てられます。この問題を解決するには、次のようにORACLE_HOME/guicommon/tk/admin/JA/Tk2Motif.rgbのTk2Motif*fontList設定を編集する必要があります。
日本語の場合:
Tk2Motif*fontList: -misc-fixed-medium-r-normal--14-130-75-75-*-*-*-*:
を次のように変更します。
Tk2Motif*fontList: -dt-gothic-medium-r-normal--14-*-*-*-m-*-jisx0208.1983-0:
韓国語の場合:
Tk2Motif*fontList: -*-*-medium-r-normal--16-*-*-*-*-*-*-*:
を次のように変更します。
Tk2Motif*fontList: -*-*-medium-r-normal--14-*-*-*-*-*-*-*:
中間層のキャラクタ・セットNLS_CHARACTERSET(NLS_LANGの3番目のフィールド)がサーブレット・ロケールのReports Servletレスポンスのエンコーディングに対応していない場合、Application Server Controlコンソールの「ジョブ・ステータス」ページのOracle Reportsステータス・メッセージに無効な文字が表示されることがあります。
|
注意: 中間層のデフォルトのエンコーディングは、サーブレットのエンコーディングとは異なることがあります。たとえば、LANGをjaまたはja_JP.eucJPに設定した場合、中間層システムのデフォルトのエンコーディングはEUCになります。しかし、このロケールではReports ServletのメッセージがShift_JISでエンコードされます。これは、ja_JPのデフォルトのエンコーディングが、サーブレットではShift_JISであるためです。 |
Oracle Enterprise Manager 10gでは、中間層のNLS_CHARACTERSETのメッセージがUTF8に変換されるため、「ジョブ・ステータス」ページのステータス・メッセージに無効な文字が表示されます。たとえば、LANGをjaに、NLS_LANGをJAPANESE_JAPAN.JA16EUCに設定して中間層を実行する場合、Reports ServletのメッセージはShift_JISでエンコードされます。しかし、Oracle Enterprise Manager 10gでは、元のメッセージがJA16EUCであるとみなされ、それがUTF8に変換されるため、ステータス・メッセージに無効なメッセージが表示されます。
新規に受信したジョブ・リクエストに重複がないか検出しているとき、そのジョブ・リクエストにキーワードTOLERANCEが含まれていると、Reports ServerはキーワードENVIDの値を無視します。その結果、ENVID以外のすべてのキーワードで値が同一のジョブを以前に受信している場合、そのジョブは重複とマークされます。
次にこの問題の例を示します。
| レポート・リクエスト | レポート | ENVID | TOLERANCE | 出力 |
|---|---|---|---|---|
| 1 | Japanese.rdf |
JA |
10 |
期待された出力 |
| 2 | Arabic.rdf |
UTF |
10 |
期待された出力 |
| 3 | Arabic.rdf |
AR |
10 |
リクエスト2と同じ(不正) |
| 4 | Japanese.rdf |
JA |
10 |
リクエスト1と同じ(正しい) |
この例では、リクエスト4はENVIDキーワードを含むすべてのキーワードにリクエスト1と同じ値を使用しており、リクエスト1の重複として正しく認識されます。しかし、リクエスト3はリクエスト2の重複として誤って認識されます。これは、両方のリクエストが、ENVIDキーワードを除くすべてのキーワードに同じ値を使用しているためです。その結果、ENVIDに変更があったことが、リクエスト3では受け入れられません。この問題を回避するには、コマンドラインでTOLERANCEを指定しないか、または重複ジョブの検出時に異なるものとして処理されるようにジョブ・リクエストにダミーのユーザー・パラメータを指定します。