プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド
12c (12.2.1.3.0)
E90222-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

D.1 問題と解決策

この項では、一般的な障害と解決策について説明します。内容は次のとおりです。

D.1.1 レポート・リクエストのハング

Reports Serverでレポート・リクエストを実行すると、レポート・リクエストが様々な理由でハングすることがあります。このハングが適切なタイミングで検出されない場合は、安定性が損なわれる場合があります。ここでは、このようなシナリオに焦点をあて、問題を解説し、このようなパターンの特定方法と対処方法を示します。さらに、オラクル社カスタマ・サポート・センターに問題を報告する際に必要な情報の収集方法についても説明します。

まず第一に、Reports Serverでどのように重複ジョブが識別されるかを理解することが重要です。ジョブがReports Serverに送信されると、ジョブ・キューに同様のジョブが存在していないかどうかがチェックされます。送信されたジョブが現在実行中のジョブと同じ場合、Reports Serverでは送信されたジョブを重複ジョブ、現在実行中のジョブをマスター・ジョブと判断します。Reports Serverでは重複ジョブが実行されずに、マスター・ジョブの終了を待機してから、同じ出力を重複ジョブに渡します。アイドル・エンジンが利用可能であっても、重複ジョブはエンジンに送信されません。これは正常な動作であり、リクエストがハングしたわけではありません。

この項で説明する解決策以外の詳細は、第24.3項「Reports Server構成のチューニング」を参照してください。


注意:

Oracle Reports 11.1.2/11.1.1および 12cリリース(12.2.1.3)のスケーラビリティの向上により、Reports Serverの安定性がさらに高まり、レポート・リクエストは必ず正常に実行されるようになりました。

問題1

マスター・ジョブが終了前にハングします。

解決策1

マスター・ジョブがなんらかの理由でハングすると、行内における次の重複ジョブがマスター・ジョブとなります。

rwserver.confファイルのengine要素にあるengineResponseTimeOut属性を確認してください(第7.2.1.8項「engine」を参照)。サーバーが不安定にならないよう、この属性は慎重に設定します。これにより、Reports Serverはこのようなハング状況を自動的に検出し、回復できるようになります。また、showjobsコマンドを使用してハングしたジョブを終了し、Reports Serverで他のリクエストを処理させることもできます。showjobsコマンドの詳細は、第A.8.8項「SHOWJOBS」を参照してください。

たとえば、一連のレポートを実行する必要があるとします。最も大きいレポートは、実行に最大5分かかります。このような場合は、engineResponseTimeOutを5分に設定することができます。


注意:

  • エンジンでジョブが実行されると、サーバーは最新のステータスに更新されます。たとえば、ページ1、2というようにフォーマットが行われます。5分経過してもReports Serverがエンジンから更新情報を受信しない場合、エンジンがハングしていると見なされ、Reports Serverはエンジンを停止します。

  • 複雑なレポートで実行に1分から1時間かかる場合、レポートの実行中に、コマンドラインでENGINERESPONSETIMOUTを指定します(第A.6.4項「ENGINERESPONSETIMEOUT」を参照)。

  • スケジュールされているジョブやバッチ・ジョブのほかに対話型のジョブがある場合は、前者と後者で1台ずつ個別のサーバーを起動することをお薦めします。パフォーマンスと安定性の理由から、対話型のジョブとバッチ・ジョブまたはスケジュールされたジョブの両方に同じサーバーを使用しないでください。


engineResponseTimeOut属性またはコマンドラインのENGINERESPONSETIMEOUTキーワードを慎重に設定したにもかかわらず、サーバーが不安定になったりクラッシュしたりする場合は、次の手順を実行して、オラクル社カスタマ・サポート・センターに報告してください。

  1. サーバーのトレースとログを有効にします(第24.2.5項「レポート実行のトレース」を参照)。トレースを有効にできない場合、rwserver.confファイルでlog要素のoption属性をfailedJobsに設定することでログのみを有効にします(第7.2.1.12項「log」を参照)。ログを有効にすると、失敗したジョブ・レポートをreports.logファイルで確認できます。失敗したレポートまたはエンジンのハングを引き起こしたレポートを特定します。

  2. rwserver.confファイルのengine要素を編集し、diagnosisプロパティを追加してエンジンの診断ログを有効にします(第7.2.1.8項「engine」「プロパティ」を参照)。その後、ステップ1で特定したレポートを実行し、ハングを再現します。

  3. 次の情報を添えて、オラクル社カスタマ・サポート・センターにハングの問題を報告します。

    • rwserver.confファイル

    • reports.logファイル。

    • ハングが再現されたときのエンジンの診断結果の出力

    • レポート定義ファイル(オラクル社カスタマ・サポート・センターにおける問題再現用)

問題2

レポート・リクエストの実行中に、次のような現象でReports Serverがレスポンスを停止したりクラッシュします。

  • ブラウザを通じてジョブが送信されると、ブラウザがハングします(レスポンスがない)。

  • エンジンがアイドル状態であるのに、ジョブがエンジンに送信されません。

  • Webコマンドが機能せず、しばらくしてブラウザがタイムアウトになります。

  • スケジュールされているジョブが実行されません。

解決策2

問題から回復するために、Reports Serverを再起動します。それでも問題が解決しない場合は、次の情報を添えて、オラクル社カスタマ・サポート・センターに報告してください。

  • rwserver.confファイル

  • ハング時のReports Serverのおおよその負荷率

  • Reports Serverのスレッド・ダンプ: これは、次の手順で出力できます。

    • Solarisの場合、Reports Serverがハングしたとき、kill -3 server_pidコマンドを使用します。このコマンドは、スレッド情報をコンソール出力に書き込みます。スレッド情報とエラー・ストリームの出力先をコンソールからファイルに変更するには、$DOMAIN_HOME/reports/bin/ディレクトリのrwserver.shファイルを修正します。例:

      $DOMAIN_HOME/reports/bin/rwserver
      

      注意:

      これは、UNIX kシェルの場合の例を示しています。他のシェルを使用している場合は、コードが多少異なることがあります。

      インプロセスReports Serverを使用している場合、WLS_REPORTSで管理しているサーバー・プロセスに対してGive kill -3を使用します。スレッド・ダンプはFMW_HOME/user_projects/domains/domain_name/servers/WLS_REPORTS/logs/WLS_REPORTS.outに出力されます。

    • Windowsの場合、kill -3コマンドは機能しません。かわりに、コマンド・プロンプトで表D-1に示すコマンドを入力し、Reports Serverを起動します。問題が再現されたら、コマンド・プロンプト・ウィンドウに移動し、[Ctrl]キーを押しながら[Break]キーを押してスレッド・ダンプを出力します。

      表D-1 Windowsでスレッド・ダンプを出力するためのコマンド

      Reports Serverのバージョン コマンド

      11.1.1.x.x

      環境変数COMPONENT_CONFIG_PATHをReports Server構成ディレクトリに設定し、次のコマンドを実行します。

      ORACLE_HOME/jdk/bin/java –Xmx256M –classpath %REPORTS_CLASSPATH% oracle.reports.server.RWServer oracle_home=ORACLE_HOME server=server_name showui=yes|nobatch=yes|no
      

      10.1.2.0.2

      ORACLE_HOME/jdk/bin/java –Xmx256M –classpath %REPORTS_
      CLASSPATH% oracle.reports.server.RWServer oracle_
      home=ORACLE_HOME server=server_name showui=yes|no
      batch=yes|no
      

      9.0.4

      ORACLE_HOME/jdk/bin/java
      -Xbootclasspath/p:$OH/vbroker4/lib/vbjboot.jar –Xmx256M
      –classpath %REPORTS_CLASSPATH%
      oracle.reports.server.RWServer oracle_home=ORACLE_HOME
      server=server_name showui=yes|no batch=yes|no
      

      9.0.2

      ORACLE_HOME/jdk/bin/java –Xmx256M –classpath %REPORTS_
      CLASSPATH% oracle.reports.server.RWServer oracle_
      home=ORACLE_HOME server=server_name showui=yes|no
      batch=yes|no
      

問題3

インプロセスReports Serverでレポートを実行しようとすると、インプロセスReports Serverが起動に失敗し、ブラウザに次のメッセージが表示されます。

REP-52266: インプロセスReports Serverの起動に失敗しました。

スタンドアロン・サーバーを起動すると、すぐに停止します。

解決策3

トレースを有効にして(第24.2.5項「レポート実行のトレース」を参照)、インプロセスReports Serverを起動してください。デフォルトでは、Reports Serverのrwserver_diagnostic.logファイルに実際の問題の原因が記録されます。

  • Reports Serverが、いずれかのプラガブル・データ・ソースまたはプラガブル宛先の初期化に失敗しました。プラガブル・データ・ソース(PDS)またはプラガブル宛先の構成を修正して、Reports Serverを再起動してください。PDSの一般情報については、Oracle Reportsのオンライン・ヘルププラガブル・データ・ソースに関する項を参照してください。

  • エンジンが起動に失敗しました。$DOMAIN_HOME/servers/WLS_REPORTS/logs/reportsディレクトリのrwEng_{engNo}_diagnostic.logファイルを確認します。このファイルには、次の行が含まれている必要があります。

    Debug 50103 (EngineImpl:EngineImpl): CInitEngine returns 0
    Info 55003 (RWEngine:init): Register this engine to Oracle Reports Server server_name
    

    rwEng_{engNo}_diagnostic.logファイルにこれらの行が存在しない場合は、エンジンが起動に失敗したことを示します。

    このファイルのCinitEngine戻り値が負の値の場合は、Reports Engineの初期化時にエラーが発生したことを示します。CinitEngine戻り値がゼロ以外の場合は、Windowsを使用している場合はシステム環境変数PATHを確認し、Solarisを使用している場合はDOMAIN_HOME/binにあるsetdomainenv.shファイルのLD_LIBRARY_PATH環境変数を確認します。インプロセスReports Serverでは、PATHおよびLD_LIBRARY_PATHの値は、Windowsではシステム環境変数PATHから取得され、SolarisではDOMAIN_HOME/binにあるsetdomainenv.shファイルのLD_LIBRARY_PATHから取得されます。

問題4

レポート・リクエストを実行するとReports Engineがクラッシュまたはハングします。

解決策4

ケース1: Reports Serverで毎日大量のレポートを実行し、レポートの印刷やWebへの公開も行っている場合。この場合では、ブラウザがレスポンスを待機し、最終的にタイムアウトになる場合があります。ジョブ・キューを確認するためのWebコマンドも、機能しないことがあります。

トレースを有効にします(第24.2.5項「レポート実行のトレース」を参照)。そして、この問題が発生したら、「解決策2」で説明した「kill -3 server_pid」コマンドをSolarisで実行して、スレッド・ダンプを出力します。次に示すコード行は、kill -3 server_pidコマンドの実行結果です。これらの行は、Reports Serverがネットワーク・ドライブにレポートを書き込もうとしたときにハングしたことを示しています。

"RequestProcessor[7]" daemon prio=5 tid=0x1835f210 nid=0x181c waiting on condition [224cf000..224cfd88]
   at java.io.FileOutputStream.write (Native Code)
   at oracle.reports.utility.copyFile (Utility.java:424)
   at oracle.reports.server.DesFile.sendFile(DesFile.java:74)
   at oracle.reports.server.Destination.send(Destination.java:484)
   at oracle.reports.server.JobObject.distribute(JobObject.java:1582)
   at oracle.reports.server.JobManager.updateJobStatus(JobManager.java:2231)
   at oracle.reports.server.EngineCommImpl.updateEngineJobStatus(
      EngineCommImpl.java:134)
   at oracle.reports.server._EngineCommImplBase._invoke(
      _EngineCommImplBase.java:94)
   at com.sun.corba.se.internal.corba.ServerDelegate.dispatch
      (ServerDelegate.java:353)
   at com.sun.corba.se.internal.iiop.ORB.process(ORB.java:280)
   at com.sun.corba.se.internal.iiop.RequestProcessor.process
      (RequestProcessor.java:81)
   at com.sun.corba.se.internal.orbutil.ThreadPool$PooledThread.run
      (ThreadPool.java:106)

このシナリオのトレース・ファイルは次のとおりです。

[2005/5/31 6:26:47:321] Info 50132 (JobObject:reset): jobid = 15 Get command line:
server=vin report=c:\backup\reps\emp.rdf destype=file desformat=html
desname=c:\test.html userid=scott@ora9i authid=vnhegde
[2005/5/31 6:26:48:92] Debug 50103 (JobManager:firstToRun): job 15 is first to run
[2005/5/31 6:26:48:212] Debug 50103 (ConnectionImpl:runJob): Job queue for jobid =
  15 is 0
[2005/5/31 6:26:48:212] Debug 50103 (ConnectionImpl:runJob): jobid = 15 is in
  current queue
[2005/5/31 6:26:48:212] Debug 50103 (ConnectionImpl:runJob): Calling
  findDuplicatedJob for jobid = 15
[2005/5/31 6:26:48:212] Debug 50103 (JobManager:findDuplicatedJob): Found no
  duplicated job for job 15
[2005/5/31 6:26:48:212] Debug 50103 (ConnectionImpl:runJob): No Duplicate jobs for
  jobid = 15
[2005/5/31 6:26:48:212] Debug 50103 (ConnectionImpl:runJob): Job 15 is Enqueued
[2005/5/31 6:26:48:212] Debug 50103 (JobManager:firstToRun): job 15 is first to
  run
[2005/5/31 6:26:48:212] Debug 50103 (JobManager.runJobLocal): Trying to get engine
  for Job 15
[2005/5/31 6:26:48:212] Debug 50103 (EngineManager:getIdleEngine): Target max
  engines = 1
[2005/5/31 6:26:48:222] Debug 50103 (EngineManager:getIdleEngine): rwEng-0 is used
  = true
[2005/5/31 6:26:48:222] Debug 50103 (EngineManager:getIdleEngine): rwEng-0 state
  is 1
[2005/5/31 6:26:48:222] State 56004 (EngineInfo:setState): Engine rwEng-0 state
  is: Reserved
[2005/5/31 6:26:48:222] Debug 50103 (JobManager.runJobLocal): Job 15 got Engine
  rwEng-0
[2005/5/31 6:26:48:222] Debug 50103 (JobManager:runJobInEngine): Job 15 calling
  setCommand on engine rwEng-0
[2005/5/31 6:26:48:222] Debug 50103 (EngineManager:updateEngineState): Engine
  rwEng-0 status is 3
[2005/5/31 6:26:48:222] State 56004 (EngineInfo:setState): Engine rwEng-0 state
  is: Running
[2005/5/31 6:26:48:222] Debug 50103 (EngineManager:updateEngineState): Engine
  rwEng-0 status is 5
[2005/5/31 6:26:48:222] State 56004 (EngineInfo:setState): Engine rwEng-0 state
  is: Idle
[2005/5/31 6:26:48:232] Debug 50103 (JobManager:runJobInEngine): Send job 15 to
  engine rwEng-0
[2005/5/31 6:26:48:232] Debug 50103 (EngineManager:updateEngineState): Engine
  rwEng-0 status is 3
[2005/5/31 6:26:48:232] State 56004 (EngineInfo:setState): Engine rwEng-0 state
  is: Running
[2005/5/31 6:26:48:482] State 56016 (JobManager:updateJobStatus): Job 15 status
  is: Running the report Initializing report
[2005/5/31 6:26:48:482] Debug 50103 (JobManager:updateJobStatus): Finished
  updating job: 15
[2005/5/31 6:26:50:856] State 56016 (JobManager:updateJobStatus): Job 15 status
  is: Running the report Formatting page 1
[2005/5/31 6:26:50:856] Debug 50103 (JobManager:updateJobStatus): Finished
  updating job: 15
[2005/5/31 6:26:52:468] Debug 50103 (RWCacheItem:addFile): add file
  'test33347112.htm' for job 15
[2005/5/31 6:26:52:468] Debug 50103 (RWCache:updateCurrentCapacity): Current cache
  capacity is 197239

このトレース・ファイルでは、次のイベントに注目してください。

  • ID 15のジョブが6:26:47:321に送信されています。

  • 重複ジョブが6:26:48:212にチェックされています。

  • rwEng-06:26:48:222に取得されています。

  • エンジンが6:26:48:222で実行を開始しています。

  • 最初のページが6:26:50:856でフォーマットされています。

この後、このジョブに対する更新はありません。Finished successfully行も存在しません。これは、ジョブに問題があることを示しています。

次の例は、正常に終了したジョブのトレース・ファイルです。

[2005/5/31 6:25:57:198] Info 50132 (JobObject:reset): jobid = 14 Get command line:
server=vin report=c:\backup\reps\emp.rdf destype=file desformat=html
desname=c:\test.html userid=scott@ora9i authid=vphegde
[2005/5/31 6:25:58:80] Debug 50103 (ConnectionImpl:runJob): Job queue for jobid =
  14 is 0
[2005/5/31 6:25:58:90] Debug 50103 (ConnectionImpl:runJob): jobid = 14 is in
  current queue
[2005/5/31 6:25:58:90] Debug 50103 (ConnectionImpl:runJob): Calling
  findDuplicatedJob for jobid = 14
[2005/5/31 6:25:58:90] Debug 50103 (JobManager:findDuplicatedJob): Found no
  duplicated job for job 14
[2005/5/31 6:25:58:90] Debug 50103 (ConnectionImpl:runJob): No Duplicate jobs for
  jobid = 14
[2005/5/31 6:25:58:90] Debug 50103 (ConnectionImpl:runJob): Job 14 is Enqueued
[2005/5/31 6:25:58:90] Debug 50103 (JobManager:firstToRun): job 14 is first to run
[2005/5/31 6:25:58:90] Debug 50103 (JobManager.runJobLocal): Trying to get engine
  for Job 14
[2005/5/31 6:25:58:90] Debug 50103 (EngineManager:getIdleEngine): Target max
  engines = 1
[2005/5/31 6:25:58:90] Debug 50103 (EngineManager:getIdleEngine): rwEng-0 is used
  = true
[2005/5/31 6:25:58:90] Debug 50103 (EngineManager:getIdleEngine): rwEng-0 state is
  1
[2005/5/31 6:25:58:90] State 56004 (EngineInfo:setState): Engine rwEng-0 state is:
  Reserved
[2005/5/31 6:25:58:90] Debug 50103 (JobManager.runJobLocal): Job 14 got Engine
  rwEng-0
[2005/5/31 6:25:58:90] Debug 50103 (JobManager:runJobInEngine): Job 14 calling
  setCommand on engine rwEng-0
[2005/5/31 6:25:58:100] Debug 50103 (EngineManager:updateEngineState): Engine
  rwEng-0 status is 3
[2005/5/31 6:25:58:100] State 56004 (EngineInfo:setState): Engine rwEng-0 state
  is: Running
[2005/5/31 6:25:58:100] Debug 50103 (EngineManager:updateEngineState): Engine
  rwEng-0 status is 5
[2005/5/31 6:25:58:100] State 56004 (EngineInfo:setState): Engine rwEng-0 state
  is: Idle
[2005/5/31 6:25:58:100] Debug 50103 (JobManager:runJobInEngine): Send job 14 to
  engine rwEng-0
[2005/5/31 6:25:58:110] Debug 50103 (EngineManager:updateEngineState): Engine
  rwEng-0 status is 3
[2005/5/31 6:25:58:110] State 56004 (EngineInfo:setState): Engine rwEng-0 state
  is: Running
[2005/5/31 6:25:58:350] State 56016 (JobManager:updateJobStatus): Job 14 status
  is: Running the report Initializing report
[2005/5/31 6:25:58:350] Debug 50103 (JobManager:updateJobStatus): Finished
  updating job: 14
[2005/5/31 6:26:0:663] State 56016 (JobManager:updateJobStatus): Job 14 status is:
  Running the report Formatting page 1
[2005/5/31 6:26:0:663] Debug 50103 (JobManager:updateJobStatus): Finished updating
  job: 14
[2005/5/31 6:26:2:256] Debug 50103 (RWCacheItem:addFile): add file
  'test54106877.htm' for job 14
[2005/5/31 6:26:2:256] Debug 50103 (RWCache:updateCurrentCapacity): Current cache
  capacity is 182329
[2005/5/31 6:26:2:286] State 56016 (JobManager:updateJobStatus): Job 14 status is:
  Finished successfully
[2005/5/31 6:26:3:7] Debug 50103 (JobManager:notifyWaitingJobs): Master job 14
  notify its duplicated jobs.
[2005/5/31 6:26:3:7] Debug 50103 (JobManager:updateJobStatus): Finished updating
  job: 14
[2005/5/31 6:26:3:7] Debug 50103 (EngineManager:updateEngineState): Engine rwEng-0
  status is 1
[2005/5/31 6:26:3:7] State 56004 (EngineInfo:setState): Engine rwEng-0 state is:
  Ready
[2005/5/31 6:26:3:57] Info 56013 (ConnectionManager:release): Connection 1 is
  released

このトレース・ファイルでは、ページ1のフォーマットの後に続く次のイベントに注目してください。

  • ジョブが6:26:2:286で正常終了しています。

  • 重複ジョブが6:26:3:7で通知されています。

  • 接続が6:26:3:57で切断されています。

これらの行は、最初の例には存在しませんでした。すべてのジョブにはReports Serverトレース・ファイルでこれらの行が存在している必要があります。イベントの欠落や強制終了は、ジョブが正常に終了していないことを示しており、ハングの原因と考えられます。

ケース2: 次のエラーが表示される場合。

REP-56048: エンジンrwEng-0に障害が起きました、ジョブID: 17

このシナリオでは、Reports Serverとエンジンのトレース・ファイルを確認します。通常のクラッシュでは、Reports Serverトレース・ファイルは次のようになります。

[2005/6/1 3:38:35:156] Exception 50125 (org.omg.CORBA.COMM_FAILURE:   vmcid: SUN
  minor code: 208 completed: Maybe 
    at com.sun.corba.se.internal.iiop.IIOPConnection.purge_
    calls(IIOPConnection.java:438)
    at com.sun.corba.se.internal.iiop.ReaderThread.run(ReaderThread.java:70)
): Internal error org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 208
  completed: Maybe
[2005/6/1 3:38:35:156] Info 56029 (EngineManager:shutdownEngine): Shutting down
  engine rwEng-0
[2005/6/1 3:38:36:137] Exception 50125 (org.omg.CORBA.COMM_FAILURE:   vmcid: SUN 
  minor code: 201  completed: No
    at com.sun.corba.se.internal.iiop.ConnectionTable.getConnection
    (ConnectionTable.java:148)
    at com.sun.corba.se.internal.iiop.ConnectionTable.getConnection
      (ConnectionTable.java:65)
    at com.sun.corba.se.internal.iiop.GIOPImpl.getConnection(GIOPImpl.java:67)
    at com.sun.corba.se.internal.corba.ClientDelegate.createRequest
      (ClientDelegate.java:652)
    at com.sun.corba.se.internal.corba.ClientDelegate.createRequest
      (ClientDelegate.java:594)
    at com.sun.corba.se.internal.corba.ClientDelegate.request
      (ClientDelegate.java:886)
    at org.omg.CORBA.portable.ObjectImpl._request(ObjectImpl.java:431)
    at oracle.reports.engine._EngineClassStub.shutdown(_EngineClassStub.java:173)
    at oracle.reports.server.EngineManager.shutdownEngine(EngineManager.java:1354)
    at oracle.reports.server.JobManager.runJobInEngine(JobManager.java:974)
    at oracle.reports.server.JobManager.runJobLocal(JobManager.java:1779)
    at oracle.reports.server.JobManager.dispatch(JobManager.java:1045)
    at oracle.reports.server.ConnectionImpl.runJob(ConnectionImpl.java:1274)
    at oracle.reports.server._ConnectionImplBase._invoke
      (_ConnectionImplBase.java:401)
    at com.sun.corba.se.internal.corba.ServerDelegate.dispatch
      (ServerDelegate.java:353)
    at com.sun.corba.se.internal.iiop.ORB.process
      (ORB.java:280)
    at com.sun.corba.se.internal.iiop.RequestProcessor.process
      (RequestProcessor.java:81)
    at com.sun.corba.se.internal.orbutil.ThreadPool$PooledThread.run
      (ThreadPool.java:106)
): Internal error org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201 
  completed: No
[2005/6/1 3:38:36:147] State 56004 (EngineInfo:setState): Engine rwEng-0 state is:
  Shutdown
[2005/6/1 3:38:36:147] Info 56047 (EngineManager:remove): Reports Server shut down
  engine rwEng-0
[2005/6/1 3:38:36:147] State 56016 (JobManager:updateJobStatus): Job 17 status is:
  Terminated with error:
REP-56048: Engine rwEng-0 crashed, job Id: 17
[2005/6/1 3:38:36:157] Debug 50103 (JobManager:notifyWaitingJobs): Master job 17
  notify its duplicated jobs.
[2005/6/1 3:38:36:157] Debug 50103 (JobManager:updateJobStatus): Finished updating
  job: 17
[2005/6/1 3:38:36:157] Exception 56048 (): Engine rwEng-0 crashed, job Id: 17
oracle.reports.RWException: IDL:oracle/reports/RWException:1.0
   at oracle.reports.server.JobManager.runJobInEngine(JobManager.java:1009)
   at oracle.reports.server.JobManager.runJobLocal(JobManager.java:1779)
   at oracle.reports.server.JobManager.dispatch(JobManager.java:1045)
   at oracle.reports.server.ConnectionImpl.runJob(ConnectionImpl.java:1274)
   at oracle.reports.server._ConnectionImplBase._invoke
      (_ConnectionImplBase.java:401)
   at com.sun.corba.se.internal.corba.ServerDelegate.dispatch
      (ServerDelegate.java:353)
   at com.sun.corba.se.internal.iiop.ORB.process
      (ORB.java:280)
   at com.sun.corba.se.internal.iiop.RequestProcessor.process
      (RequestProcessor.java:81)
   at com.sun.corba.se.internal.orbutil.ThreadPool$PooledThread.run
      (ThreadPool.java:106)

エンジンのトレース・ファイルでは、クラッシュのトレースを示す最後の数行が次のようになります。

[2005/6/1 3:38:34:575] (rwfdt:rwfdtprint) Distributing the report
[2005/6/1 3:38:34:585] (rwfdt:rwfdtpredo) running
[2005/6/1 3:38:34:585] (rwfdt:rwfdtpredo) no preformat of pages requested, quit
[2005/6/1 3:38:34:585] (rwfdt:rwfdtni_NextInstance) running
[2005/6/1 3:38:34:595] (rwfdt:rwfdtni_NextInstance) quit
[2005/6/1 3:38:34:595] (rwfdt:rwfdtgcf_GenCachefile) running
[2005/6/1 3:38:34:615] (rwfdt:rwfdtgcf_GenCachefile) Cache file is
  D:\orawin\reports\cache\03564661.htm
[2005/6/1 3:38:34:615] (rwfdt:rwfdtgcf_GenCachefile) quit
[2005/6/1 3:38:34:615] (rwfdt:rwfdtprint) caching output from backend drivers
[2005/6/1 3:38:34:755] (C Engine)

注意:

エンジンのトレース・ファイルは、エンジンがクラッシュすると中断します。

処置: エンジンのクラッシュを引き起こしているレポートを特定します。これには、ジョブIDを特定します。前述の例の場合、エンジンはjobid 17の実行中にクラッシュしています。サーバーのトレース・ファイルで、jobid = 17 Get command line文字列を検索します。この行には、レポート名も含む完全なコマンド行が含まれています。トレースとエンジンの診断を有効にします。問題のあるレポートを何度か実行し、クラッシュを再現します。クラッシュが再現されたら、トレース・ファイルと診断の出力をオラクル社カスタマ・サポート・センターに送り、分析を依頼します。

D.1.2 Reports ServerのアクティビティによりエラーREP-50125が生成される

REP-50125は、Reports Serverが関係する様々な状況で生成される一般的エラー・メッセージです。

REP-50125: 例外の取得: {0}

原因: Oracle Reportsで内部例外が発生しました。

処置: オラクル社カスタマ・サポート・センターにサポートを依頼してください。

問題1

REP-50125のヘルプ・トピックの原因および処置に関する項には、問題を効率的に特定し診断するための十分な情報が記載されていません。

解決策1

Oracle Reportsでは、次のエラー・メッセージを特定のシナリオに適用し、ヘルプ・トピックに表示される原因および処置で、焦点を絞ったトラブルシューティング情報を提供しています。

  • REP-56126: サーバー構成ファイル{0}の解析に失敗しました

    原因: サーバー構成ファイルの解析が失敗しました。XML構文に誤りがあります。

    処置: サーバー構成ファイルを修正して、サーバーを起動してください。

  • REP-56127: <{0}>要素の復号化に失敗しました

    原因: 要素に対する復号化コールが失敗しました。

    処置: encrypted属性が要素に正しく設定されていることを確認してください。

  • REP-56128: {0}宛先の初期化に失敗しました。ネストされた例外: {1}

    原因: 宛先の初期化が失敗しました。

    処置: 宛先の構成を確認し、修正してください。

問題2

Reports Serverの起動時にREP-50125が表示されます。

解決策2

My Oracle Support(http://support.oracle.com)で、Reports Serverの起動時の問題に関するトラブルシューティングのノート289748.1を参照してください。

問題3

レポート・リクエストを実行するとREP-50125が表示されます。

解決策3

My Oracle Support(http://support.oracle.com)で、Reports Serverに発行されたレポート・リクエストの失敗に関するトラブルシューティングのノート290827.1を参照してください。

問題4

SLES-8/UnitedLinux 1.0でReports Serverを起動すると、セグメンテーション違反とともにREP-50125が表示されます。

解決策4

Oracle Reports 10g リリース2 (10.1.2)では、SLES8とSLES9がサポートされていました。ただし、Oracle Reports 12c (12.2.1.3.0)ではUnitedLinux 1.0はサポートされていないため、このプラットフォームを使用してレポート・リクエストの実行はできません。

問題5

Linuxでopenmotifを使用してレポート・リクエストを実行すると、REP-50125が表示されます。

解決策5

Linux上のOracle Reports 6i、9iおよび10gでは、openmotif 2.1.30のみがサポートされます。

D.1.3 Oracle Reports Servletを使用して長期レポートを実行すると失敗する

Oracle Reports Servlet (rwservlet)経由で送信された長期レポート・リクエストは、ASコンポーネントによっては、正常に実行されなかったり、エンジンのクラッシュやハング、タイムアウトが発生する場合があります。

問題

rwservletを使用して長期にわたって実行しているレポートが終了しません。

解決策

次のことを確認してください。

  • Webブラウザから同期式にレポートを実行している場合は、この障害がHTTPサーバーのタイムアウトによるものかどうかを確認します。同じジョブを非同期で送信してみます。正常に終了する場合は、アプリケーション・サーバー構成のHTTPサーバーのタイムアウトを変更するか、長期レポートを非同期で実行すること(この方法をお薦めします)を検討してください。Reports Serverの通知機能を利用すると、ジョブが終了したことをユーザーに通知できます。

  • Reports ServletでReports Serverの統計を調べ、サーバーの全般的レスポンス時間が大幅に変化していないかどうかを確認します。

  • データベース・サーバーが正常にレスポンスしているかどうかを確認します。長期にわたって実行されるレポートでは特に、データベースの負荷がパフォーマンスに重大な影響を及ぼす場合があります。

D.1.4 プラットフォームによってフォントの表示が異なる

複数のプラットフォームにレポートを配布すると、フォントの問題が生じる場合があります。

問題

複数のプラットフォームにレポートを配布した場合に、プラットフォーム間のフォントの表示およびマッピングが一致しません。

解決策

次に示す章でこの問題を取り上げます。

D.1.5 UNIXプラットフォームでレポートを実行するとREP-56048が生成される

REP-56048は、UNIXでrwservletrwclient、Oracle Formsなどを使用してレポートを実行したときに発行される、一般的なエラー・メッセージです。Reports Serverは、レポートを実行するReport Engineにジョブを渡します。そのReport Engineがクラッシュすると、このエラーが発生します。

REP-56048: エンジン{0}に障害が起きました

原因: Reports Serverで、指定したエンジンのクラッシュが検出されました。

処置: Reports Serverで別のエンジンを再起動します。エンジンがクラッシュするテスト・ケースとともに、問題をオラクル社カスタマ・サポート・センターに報告してください。

後述の解決策および第D.1.1項「レポート・リクエストのハング」「解決策4」を参照し、問題に対処します。それでもREP-56048が発生する場合は、次の手順を実行して、問題をオラクル社カスタマ・サポート・センターに報告してください。

  1. サーバーのトレースとログを有効にします(第24.2.5項「レポート実行のトレース」を参照)。トレースを有効にできない場合、rwserver.confファイルでlog要素のoption属性をfailedJobsに設定することでログのみを有効にします(第7.2.1.12項「log」を参照)。ログを有効にすると、失敗したジョブ・レポートをreports.logファイルで確認できます。失敗したレポートまたはエンジンのクラッシュを引き起こしたレポートを特定します。

  2. rwserver.confファイルのengine要素を変更し、diagnosisプロパティを追加してエンジンの診断ログを有効にします(第7.2.1.8項「engine」「プロパティ」を参照)。その後、ステップ1で特定したレポートを実行し、クラッシュを再現します。

  3. 次の情報を添えて、オラクル社カスタマ・サポート・センターにクラッシュの問題を報告します。

    • rwserver.confファイル

    • reports.logファイル。

    • クラッシュが再現されたときのエンジンの診断結果の出力

    • レポート定義ファイル(オラクル社カスタマ・サポート・センターにおける問題再現用)

問題1

UNIXプラットフォームでレポートを実行したときに、NLS_LANGWE8ISO8859P1またはIW8ISO8859P8以外の文字セットが定義されている場合、REP-56048が表示されます。

解決策1

Oracleの文字セット名およびXLFDのCHARSET_REGISTRYCHARSET_ENCODINGとのマッピングに使用されるTk2Motif.rgb内のエントリを修正します(最後の2つのフィールド。iso8859-1など)。詳細は、次を参照してください。

また、Report Engineでレポートを実行する前に、Reports Runtime (rwrun)を使用してこのレポートを実行し、環境設定を確認することもできます。

問題2

UNIXプラットフォームでレポートを実行したときに、DISPLAY環境変数が設定されていない場合、REP-56048が表示されます。

解決策2

Oracle Reportsでは、REPORTS_DEFAULT_DISPLAY環境変数により、DISPLAY環境変数への依存性が解消されています。デフォルトではREPORTS_DEFAULT_DISPLAY=YESです。REPORTS_DEFAULT_DISPLAYNOに設定されていないことを確認してください。

第B.1.43項「REPORTS_DEFAULT_DISPLAY」を参照してください。

問題3

巨大なレポートを実行しているときにトレースを有効にすると、REP-56048が表示されます。

解決策3

トレースを有効にした場合、膨大な出力のレポートを実行したときに、Reports Engineがクラッシュすることがあります。これは、トレース・ファイルのサイズの問題と、トレースの作成に使用できるディスク領域、メモリーまたはプロセッサ処理能力が不十分であることが原因と考えられます。このエラーを防止するには、レポートの問題をトラブルシューティングするために診断情報が必要になる場合に、rwserver.confファイルのengine要素を変更して、diagnosisプロパティを追加し、エンジンの診断ログを有効にします(第7.2.1.8項「engine」「プロパティ」を参照)。rwserver.conf構成ファイルのtrace要素にあるtraceModule属性を使用して、生成されるトレース・ファイルを制限することもできます。

トレースの詳細は、第24.2.5項「レポート実行のトレース」を参照してください。

問題4

UNIXでDISTRIBUTE=YESに設定するとREP-56048が表示されます。

解決策4

配布ファイルに指定されている宛先の1つがプリンタの場合、PRINTER環境変数が有効なプリンタに設定されていないと、UNIXで配布エラーが発生します。次の環境変数を設定します。

PRINTER=printer_name; export PRINTER
TK_PRINTER=printer_name; export TK_PRINTER
TK_PRINT_STATUS="echo %n is valid"; export TK_PRINT_STATUS
TK_PRINT=echo; export TK_PRINT

ORACLE_INSTANCE/config/FRComponent/frcommon/guicommon/tk/admin/uiprint.txtに、次の行を追加します。

printer_name:PostScript:1:test:default.ppd:

レポートの配布の詳細は、第20章「拡張配布の作成」を参照してください。

問題5

UNIXでレポートを印刷するとREP-56048が表示されます。

解決策5

Oracle Reportsでは、UNIXでの印刷にrwlpr.shシェル・スクリプトを使用します。このファイルを直接変更することはできません。オラクル社カスタマ・サポート・センターにサポートを依頼してください。

UNIXでの印刷の詳細は、第10章「UNIXでのOracle Reportsによる印刷」を参照してください。

問題6

UNIXでグラフィックが含まれるレポートを実行するとREP-56048が表示されます。

解決策6

オペレーティング・システムのデフォルト以外のMotifバージョンにOracle Reportsがリンクされている場合に、このエラーが発生することがあります。リンク先となる正しいMotifのバージョンについては、『Oracle Fusion Middlewareリリース・ノート for Microsoft Windows』の「Oracle Reports」を参照してください。

問題7

マトリックス・レポートのデリミタ付きレポート出力を生成するとREP-56048が表示されます。

解決策7

レポート出力を、デリミタ付きではなく、DelimitedData (DESFORMAT=DELIMITEDDATA)またはスプレッドシート(DESFORMAT=SPREADSHEET)出力に生成してください。DelimitedDataを使用すると、大量のレポートをサポートできますが、Microsoft Excelの出力には、レポート・データ・モデルで定義されているデータのみが表示され、レイアウト情報は表示されません。レポート・レイアウトに定義されているフォーマットを維持したレポート出力を生成するには、DESFORMAT=SPREADSHEET出力フォーマットを使用します。

デリミタ付き出力とスプレッドシート出力の詳細は、Oracle Reportsのオンライン・ヘルプで、「デリミタ付き出力について」と「スプレッドシート出力について」(およびOracle Reportsレポート作成のためのユーザーズ・ガイドマニュアルの高度なコンセプトの章)を参照してください。また、第A.5.27項「DESFORMAT」も参照してください。

問題8

前述の解決策で問題を解決できなかった場合に、Reports Engineからレポートを実行すると、REP-56048が表示されます。

解決策8

このエラーは、環境設定に関連しているか、レポート自体の問題によって発生する場合があります。Reports ServerでOracle Reports Servlet (rwservlet)のshowjobsページを調べると、エラーを引き起こしているジョブを特定できます。UNIXマシンを使用している場合は、実行環境にコア・ダンプが作成されます。関連するバグを簡単に検索できるよう、このコア・ダンプからスタック・トレースを抽出します。実行可能ファイルは、rwrunではなく、javaになることに注意してください。

以前のリリースでは、コア・ファイルからスタック・トレースを抽出するために、ランタイム・コンポーネントでデバッガを実行していました。この方法は、rwrunコンポーネントのみで問題を再現できる場合は、現在でも有効です。ただし、Reports Serverを使用した場合でのみクラッシュが発生する場合、Javaラッパーを使用してエンジンがコールされるため、Java実行可能ファイルでデバッガを実行する必要があります。これにより、すべてのOracle Reportsライブラリが自動的にロードされます。

例:

dbx java core

この例は、dbxの場合を示しています。スタック・トレースを抽出したら、My Oracle Support(http://support.oracle.com)で、スタックにある最後の数コールを使用して、関連する問題を検索できます。

特定のジョブが問題の原因と思われる場合、次の手順として、rwclientおよびrwrunを使用して、そのレポートを実行します。rwclientを使用して実行すると、Webコンポーネントが環境から削除されます。rwrunを使用して実行すると、Reports Serverをバイパスしてエンジンのみで実行することと同様になります。

D.1.6 右から左に表示する言語のフォントの問題

双方向サポートは、利用対象者の要件に応じて、左から右または右から左の方向にレポート出力を表示できるようにします。右から左に表示する言語にはフォントの問題があるため、レポート出力の生成が完全ではありません。

問題

右揃えのテキストが正しく表示されず、固定幅フォントを必要とする制限が生じます。

解決策

PDF出力が改善され、右から左に読む言語(ヘブライ語、アラビア語など)のフォント・サブセット化が有効になり、テキストを正確に右揃えできるようになりました。しかし、UNIXプラットフォームでは、右揃えのテキストが正しく表示されない場合があります。

右から左に表示するテキストの問題に対処するには、次の各項を参照してください。

D.1.7 RUN_REPORT_OBJECTを使用してOracle Formsからレポートを実行する際のエラー

Web上でOracle FormsからOracle Reportsをコールする際に最もセキュアな方法は、Oracle Reports ServicesをRUN_REPORT_OBJECTとともに使用することです。RUN_REPORT_OBJECTを使用してOracle FormsからOracle Reportsをコールする方法の詳細は、OTNにあるホワイト・ペーパー『Oracle Application Server 10g Integrating Oracle Reports in Oracle Forms Services Applications』(http://otn.oracle.com/products/forms/pdf/10g/frm10gsrw10g.pdf)を参照してください。

Forms Servicesデプロイメント・ガイドも参照してください。

問題1

RUN_REPORT_OBJECTで次のエラーが生成されます。

FRM-41214: レポートを実行できません

解決策1

Webでレポートを配布し、ブラウザ・ウィンドウに出力を表示する場合は、DESTYPEを、SCREENまたはPREVIEWではなく、CACHEに設定します。ブラウザにレポート出力を表示するには、RUN_REPORT_OBJECTではなく、WEB.SHOW_DOCUMENTを使用します。

問題2

RUN_REPORT_OBJECTで次のエラーが生成されます。

FRM-41213: Reports Server: server_nameに接続できません

解決策2

次を確認してください。

  • RUN_REPORT_OBJECTコードで参照されているReports Serverが起動していることを確認します。インプロセスReports Serverが起動していないと、RUN_REPORT_OBJECTでは自動的には開始されません。

  • Oracle ReportsのOracle WebLogic Serverインスタンスが起動していることを確認します。

  • RUN_REPORT_OBJECTに渡されるパラメータの値にスペースが使用されていないこと、およびパラメータが一重引用符で囲まれていることを確認します。

問題3

RUN_REPORT_OBJECTで次のエラーが生成されます。

REP-503 レポートの名前が指定されていません。

解決策3

Oracle Formsオブジェクト・ナビゲータのレポート・オブジェクトのプロパティ・インスペクタに、レポート名が指定されていることを確認します。

問題4

フォームからレポートを実行して、フォームからレポートにパラメータを渡すことができません。

解決策4

次を確認してください。

  • Oracle Formsから渡すパラメータが正しいフォーマットであることを確認します。パラメータの初期値は、Reports Builderのパラメータのプロパティ・インスペクタで指定されます。

  • パラメータの初期値が、Reports Builderのパラメータのプロパティ・インスペクタで指定されていることを確認します。

  • Before Reportトリガーまたはレポート・パラメータ・フォームを使用して、コマンドラインを渡します。

それでも問題が解決しない場合、レポートのトレースを有効にして(第24.2.5項「レポート実行のトレース」を参照)、問題の原因を絞り込みます。

問題5

レポート・パラメータ・フォーム(PARAMFORM=YES)をRUN_REPORT_OBJECTとともに使用するとエラーになり、Internal Server Errorが発生します。

解決策5

OTN(http://otn.oracle.com/products/forms/pdf/10g/frmrepparamform.pdf)にあるOracle Forms ServicesのRun_Report_Object()を使用したパラメータ・フォームでのReportsのコールに関するホワイト・ペーパーを参照してください。

D.1.8 Microsoft Excelでのレポート出力の表示

Microsoft Excelに表示するためにデリミタ付きのレポート出力を生成することは、一般的な要件であり、様々な方法で実現できます。しかし、どの方法を選択したらよいかわからない場合があります。

問題

要件に最も適したデリミタ付き出力のソリューションがわかりません。

解決策

レポートの定義および出力ディスプレイの要件に応じて、Microsoft Excel用のデリミタ付きレポート出力を生成する適切な方法を選択します。

  • 要件: ペーパー・レイアウト・レポートがあり、Microsoft Excelに出力する必要はあるが、レポート・レイアウトをリッチ・フォーマットにする必要はありません。

    出力ソリューション: デリミタ付きのレポート出力を生成します。

    • DESFORMAT=DELIMITED

    • DESFORMAT=DELIMITEDDATA (DELIMITEDを使用すると、大量のレポートの実行に問題が生じる場合)

  • 要件: ペーパー・レポートがあり、レポート・レイアウトをリッチ・フォーマットにすることを含めて、Microsoft Excelに出力する必要があります。

    出力ソリューション: スプレッドシート形式のレポート出力を生成します。

    • DESFORMAT=SPREADSHEET

  • 要件: ペーパー・レポートがあり、レポート・レイアウトをリッチ・フォーマットにすることを含めて、Microsoft Excelに出力する必要があります。さらに、レポートをJSPとして配布する必要があります。

    出力ソリューション: JSPレポートであるため、直接.xlsファイル(DESTYPE=FILE)に生成することはできませんが、ブラウザに表示される出力を.xlsファイルとして保存することはできます。<rw:include>を使用してこのソリューションを実行する方法の詳細は、Oracle Reportsレポート作成のためのユーザーズ・ガイドマニュアルの第29章「Microsoft Excel出力へのWebレイアウト・レポートの配布」を参照してください。

  • 出力要件: JSPベースのWebレポートがあり、Microsoft Excelに出力する必要があります。

    ソリューション: JSPレポートであるため、直接.xlsファイル(DESTYPE=FILE)に生成することはできませんが、ブラウザに表示される出力を.xlsファイルとして保存することはできます。Oracle Reportsレポート作成のためのユーザーズ・ガイドマニュアル(Oracle Technology Networkで入手できます)のスプレッドシート出力のレポートの作成を参照してください。

スプレッドシート出力およびデリミタ付き出力の詳細は、Oracle Reportsのオンライン・ヘルプおよびOracle Reportsレポート作成のためのユーザーズ・ガイドマニュアルを参照してください。

D.1.9 ユーザー・イグジットが含まれるレポートのUNIXでの障害

ユーザー・イグジットは、以前のリリースのOracle Reportsで開発されたレポートに存在する場合があります。


注意:

Oracle Reports 10gでは、ORA_JAVA組込みパッケージおよびJava Importerを使用してJavaメソッドをコールできます。これによってレポートでのユーザー・イグジットの必要性が軽減され、さらにオープンでポータブルな配置が可能になります。また、ダイナミック・ライブラリのC関数を呼び出すための外部関数インタフェースを提供する、ORA_FFIビルトイン・パッケージを使用することもできます。これらの組込みパッケージが使用可能になったことにより、ユーザー・イグジットの使用はOracle Reportsでは非推奨になっています。ただし、makefileは、既存のユーザー・イグジットを引き続き使用できるようにするために提供されています。

問題

UNIXでユーザー・イグジットが含まれるレポートを実行すると失敗します。

解決策

UNIXでは、Reports Builder (rwbuilder)とReports Runtime (rwrun)によってユーザー・イグジット・ライブラリが動的にロードされ、ユーザー・イグジットが含まれるレポートが正常に実行されます。Reports Server (rwserver)を使用してレポートを実行する場合は、rwengine.shに次の環境変数を追加して、ユーザー・イグジット・ライブラリをロードする必要があります。

LD_PRELOAD=librw.so:user_exit_library; export LD_PRELOAD

D.1.10 インプロセスReports Serverを使用する際の印刷エラーとフォント・エラー

インプロセスReports Serverでは、現在Windowsにログオンしているユーザーのデフォルト・プリンタが認識されません。これは、インプロセスReports Serverを実行しているサービスがLocal Systemとしてログオンされているためです。

問題

次のような問題があります。

  • デフォルトのプリンタに出力すると、REP_3002エラー・メッセージが出力されます。次に、コマンドの例を示します。

    http://myrepsrvr.example.com:7777/reports/rwservlet?report=myrep.rdf&destype=printer&desformat=html
    

    この場合、次のエラー・メッセージが表示されます。

    Error:"REP-3002: Error initializing printer.  Please make sure a printer is installed."
    
  • Oracle6i Graphics (OGD)グラフィックが含まれるレポートを配布すると、Reports Serverがレスポンスを停止します。

  • インプロセスReports ServerからPDFファイルを出力すると、フォントの位置に問題が発生します。

解決策

これらの問題をすべて対処する手順は、次のとおりです。

  1. レジストリ・エディタ(regedit.exeなど)を使用してWindowsのレジストリを開きます。編集する前に、レジストリのバックアップを作成します。

  2. 次に示すキーにナビゲートします。

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
    
  3. このキーのDeviceの文字列値をコピーします。例:

    \\MOWGLI\sierra,winspool,Ne02:
    
  4. 次に示すキーにナビゲートします。

    HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Windows
    
  5. HKEY_CURRENT_USERからコピーしたDeviceの値を貼り付けます(このキーのDeviceの文字列値は空になります)。


    注意:

    この回避策は、Default Printerの値を変更するたびに実行する必要があります。

    この回避策は、OPMN-managed Reports Serverでは機能しません。


インプロセスReports Serverの実行の長所と短所の詳細は、第2章「Oracle Reports Servicesのアーキテクチャの理解」を参照してください。詳細は、第7.3項「Oracle Reports Servlet構成ファイル」(serverパラメータとinprocessパラメータの説明)を参照してください。

D.1.11 Reports Runtimeの実行時にプレースホルダ列値でレコードがシフト・ダウンされる

Reports Runtimeでのレポートの実行時に、プレースホルダ列値でレコードがシフト・ダウンされます。ただし、Reports Builderでレポートを処理すると、レポート出力は正しくフォーマットされます。Reports Runtimeでは、プレースホルダ列と式列の間に依存関係を設定する必要があります。

問題

Reports Runtimeの実行では、次の場合に、値でレコードがシフト・ダウンされます。

  • レポートに、式列から設定された値を持つプレースホルダ列が含まれる場合。

  • レポートに、式列のプロシージャ・コールから導出された値を持つプレースホルダ列が含まれる場合。

解決策

この問題を解決するには、次の手順を実行します。

  1. Oracle Reportデータ・モデルから、プレースホルダ列に対するプロパティ・パレットを選択します。たとえば、選択した列はCP_1です。

  2. 「PL/SQL式」列プロパティをダブルクリックします。

  3. 次の例に示すように、プレースホルダ列から式列へのsrw.referenceを入力します。

    function CP_1Formula return Number is
    Begin
    srw.reference (:CF_1);
    end;
    

    ここで、CF_1は式列であり、srw.referenceがプレースホルダ列と式列の間の依存関係を設定します。

  4. 「コンパイル」を選択します。

  5. 必要に応じて、前述の手順を他のプレースホルダ列についても繰り返します。

  6. レポートを保存し、Reports Runtimeを再実行します。プレースホルダ列でレコードがシフト・ダウンされなくなります。