この章では、Oracle Reportsに関する問題について説明します。この章の内容は次のとおりです。
注意:
|
この項では、Oracle Reportsに関する一般的な問題とその対処方法について説明します。この項の内容は次のとおりです。
第20.1.6項「グループ上およびマトリックス・スタイルを指定したJSPベースのWebレポートで、サマリー列が位置揃えされない」
第20.1.7項「Oracle Enterprise Manager 10gでOracle ReportsのHTML出力のイメージが表示されない」
第20.1.8項「Acrobat Reader 7.0で拡張フォント・サブセット機能を使用すると、大容量のマルチバイト・レポートに文字位置のずれが生じる」
第20.1.10項「レポートをXMLとして保存するとPL/SQLパッケージ仕様または本文(あるいはその両方)が失われる」
第20.1.11項「「ペーパー・デザイン」ビューで、複数行からなるテキストにインラインでHTMLタグを使用すると色が不正になる」
Oracle Reports 10gリリース2(10.1.2)では、Borland社のVisiBrokerではなく、業界標準であるSun社のJava Developer's Kit Object Request Broker(JDK ORB)が使用されます。これによって、複数のサブネットにわたるクライアントからのReports Serverリクエストのサポートが提供され、サブネット内および複数のサブネットで、動的なReports Serverの検出のためのブロードキャスト・メカニズムが使用されます。JDK ORBに関連する変更の詳細は、『Oracle Application Server Reports ServicesレポートWeb公開ガイド』を参照してください。
9.0.4.3より前のリリースには9.0.4.2用のパッチを適用し、Oracle Reports(9.0.4)クライアントと10gリリース2(10.1.2)サーバーの間、およびOracle Reports(9.0.4)サーバーと10gリリース2(10.1.2)クライアントの間で、ORBの下位互換性を持つようにします。9.0.4.3以降では、このパッチはインストールに組み入れられる予定です。
Bug 4092150は、関連するプラットフォーム固有情報を含む公開済のバグです。原則的にRNにはバグ番号は記載されませんが、この場合は例外です。
このパッチに関するプラットフォーム固有の詳細は、Bug 4092150を参照してください。
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のグローバリゼーション・サポートに関する問題とその対処方法について説明します。この項の内容は次のとおりです。
第20.3.2項「NLS_LANGがJA16EUCの場合、PostScriptフォント・マッピングでMS明朝フォントが動作しない」
第20.3.3項「Oracleのオブジェクト・タイプを含むマルチバイト・レポートでReports Builderがハングする」
第20.3.4項「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が応答しなくなることがあります。この問題は、今後のパッチ・セットで修正される予定です。
これは既知の問題です。
中間層のキャラクタ・セット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
を指定しないか、または重複ジョブの検出時に異なるものとして処理されるようにジョブ・リクエストにダミーのユーザー・パラメータを指定します。