ヘッダーをスキップ

Oracle Application Server Reports Services レポートWeb公開ガイド
10gリリース2(10.1.2)
B25067-01
目次
目次
索引
索引

戻る 次へ

D
OracleAS Reports Servicesのトラブルシューティング

この付録では、OracleAS Reports Servicesを使用してレポートを配布する際に発生する可能性のある一般的な問題とその解決方法について説明します。また、問題の診断手順についても説明します。この付録には、次の項があります。

D.1 問題と解決策

この項では、一般的な問題と解決策について説明します。この項は次のトピックで構成されています。

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

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

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

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


注意

Oracle Reports 10gリリース2(10.1.2)のスケーラビリティの向上により、Reports Serverの安定性も、レポート・リクエストが正常に実行されるように改善されています。 


問題1

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

解決策1

マスター・ジョブが何らかの理由でハングすると、マスター・ジョブの終了を待機している重複ジョブもハングします。1つのマスター・ジョブに対して複数の重複ジョブが待機している場合は、問題に対処しないかぎり、そのマスター・ジョブがハングすると、サーバーが不安定になる場合があります。

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

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


注意

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

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

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


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

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

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

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

    • server_name.confファイル

    • reports.logファイル

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

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

問題2

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

解決策2

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

問題3

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

REP-52266: The in-process Reports Server failed to start.

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

解決策3

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

問題4

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

解決策4

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

トレースを有効にして(第20.1.2項「レポート・トレース」を参照)この問題が発生したら、前述の解決策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

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

この後、このジョブに対する更新はありません。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のフォーマットの後に続く次のイベントに注目してください。

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

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

REP-56048: Engine rwEng-0 crashed, job 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: Caught exception: {0}

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

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

問題1

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

解決策1

Oracle Reports 10gリリース2(10.1.2)では、次の新しいエラー・メッセージを特定のシナリオに適用し、焦点を絞ったトラブルシューティング・サポート情報がヘルプ・トピックの原因および処置に関する項で用意されています。

問題2

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

解決策2

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

問題3

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

解決策3

Oracle MetaLink(http://metalink.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 10gリリース2(10.1.2)ではUnitedLinux 1.0はサポートされていないため、このプラットフォームを使用してレポート・リクエストを実行することはできません。

問題5

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

解決策5

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

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

Reports Servlet(rwservlet)から送信された長期レポート・リクエストは、ASコンポーネントによっては、失敗したりエンジンのクラッシュやハングを引き起こす場合があります。

問題

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

解決策

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

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

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

問題

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

解決策

Oracle Reports 10gリリース2(10.1.2)では、この問題について、新しいマニュアルの次の各章で取り上げています。

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

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

REP-56048: Engine {0} crashed

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

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

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

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

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

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

    • server_name.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 10gリリース1(9.0.4)では、REPORTS_DEFAULT_DISPLAY環境変数により、DISPLAY環境変数への依存性が解消されます。デフォルトではREPORTS_DEFAULT_DISPLAY=YESです。REPORTS_DEFAULT_DISPLAYNOに設定されていないことを確認してください。


注意

この機能はIBM JDK 1.4(ヘッドレス・オプションはサポートしていません)においてサポートされていないので、IBM AIXプラットフォームでは使用できません。AIXでは、REPORTS_DEFAULT_DISPLAY=NOに設定し、DISPLAYをアクティブなX-Window表示画面に設定してください。 


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

問題3

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

解決策3

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

traceModule属性と他のトレース・オプションの詳細は、第3.2.1.13項「trace」を参照してください。トレースの詳細は、第20.1.2項「レポート・トレース」を参照してください。

問題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_HOME/guicommon/tk/admin/uiprint.txtに、次の行を追加します。

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

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

問題5

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

解決策5

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

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

問題6

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

解決策6

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

問題7

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

解決策7

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

デリミタ付き出力およびスプレッドシート出力の詳細は、Oracle Reportsのオンライン・ヘルプのデリミタ付き出力とスプレッドシート出力に関する項、および『Oracle Reportsレポート作成ガイド』の「拡張概念」の章を参照してください。第A.3.25項「DESFORMAT」も参照してください。

問題8

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

解決策8

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

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

次に例を示します。

dbx java core

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

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

D.1.6 過負荷状態でOPMNを使用するとインプロセス・サーバーに障害が発生する

OPMNの実装に関連する各種の問題により、インプロセス・サーバーは、過負荷状態の低速コンピュータで実行した場合に、タイムアウトになったり停止したりします。

問題1

インプロセス・サーバーが低速コンピュータでの起動に失敗すると、それがOC4J_BI_FORMS OC4Jインスタンスの起動シーケンスのトリガーとなります。

現時点では、pingserver?start=auto URLが渡されると、インプロセス・サーバーの状態がCORBAコールを通じて取得されます。このCORBAコールは、1秒でタイムアウトになります。したがって、サーバーを実行しているコンピュータが低速の場合、CORBAコールは失敗する可能性があります。このような障害が発生すると、インプロセス・サーバーは稼動しているにもかかわらず、稼動していないものと見なされるため、起動シーケンスが開始します。

インプロセス・サーバーを再起動すると、ネットワークに同じ名前の別のサーバーが存在するかどうかがチェックされます。同じ名前の別のサーバーが存在する場合、インプロセス・サーバーは停止します。その結果、CORBAコールが失敗し、OC4Jが再起動されます。

解決策1

Oracle Reports 10gリリース2(10.1.2)では、この問題に対応するために、次の変更が行われています。

問題2

インプロセス・サーバーが終了する前にpingがタイムアウトになります。

解決策2

OPMNは、インプロセス・サーバー(OC4J_BI_FORMS内)からのコールバックを待機する必要がありますが、第3.9項「レポート配布の最適化」で説明しているように、pingのタイムアウトは、そのコールバックがタイムアウトと見なされるまでの待ち時間を特定するための目安となります。

pingのタイムアウトを構成するには、opmn.xmlの次の要素にpingエントリを追加して、マシンの負荷にあった十分なタイムアウト値を指定します。

<ias-component id="OC4J">
...
<process-type id="OC4J_BI_Forms" module-id="OC4J">
...
<restart timeout="720" retry="2" />
...
<ping timeout="110" interval="30" />
...

また、opmn.xmlの次の要素を削除またはコメント・アウトして、URL pingをオフにすることもできます。

<category id="urlping-parameters">
  <data id="/reports/rwservlet/pingserver?start=auto" value="200" />
</category>

その後でOC4J_BI_Formsを再起動します。

Reports ServerでのOPMNの使用方法の詳細は、第2.1.2項「Oracle Process Manager and Notification ServerからのReports Serverの起動、停止および再起動」および第3.8項「Oracle ReportsとOracle Workflowの通信の構成」を参照してください。

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

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

問題

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

解決策

Oracle Reports 10gリリース2(10.1.2)では、右から左に表示する言語(ヘブライ語、アラビア語など)にフォント・サブセットを適用して、テキストが正しく右揃えされるようにPDF出力を改善することで、この問題に対応しています。しかし、UNIXプラットフォームでは、右揃えのテキストが正しく表示されない場合があります。

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

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

Web上でOracle FormsからOracle Reportsをコールする際の最も安全な方法は、Oracle Application Server 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)を参照してください。

『Oracle Application Server Forms Services利用ガイド』も参照してください。

問題1

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

FRM-41214: Unable to run report.

解決策1

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

問題2

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

FRM-41213: Unable to connect to the report server server_name.

解決策2

次を確認してください。

問題3

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

REP-503 You did not specify the name of a report.

解決策3

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

問題4

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

解決策4

次を確認してください。

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

問題5

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

解決策5

OTNにあるホワイト・ペーパー『Oracle Forms Services - Using Run_Report_Object() to call Reports with a parameter form』(http://otn.oracle.com/products/forms/pdf/10g/frmrepparamform.pdf)を参照してください。

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

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

問題

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

解決策

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

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

D.1.10 ユーザー・イグジットが含まれるレポートの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.11 インプロセス・サーバーを使用する際の印刷エラーとフォント・エラー

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

問題1

デフォルトのプリンタに出力すると、REP_3002エラー・メッセージが出力されます。たとえば、次のようなコマンドを入力したとします。

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

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

Error:"REP-3002: Error initializing printer.  Please make sure a printer is installed."
問題2

Oracle6i Graphics(OGD)グラフィックが含まれるレポートを配布すると、Reports Serverがレスポンスを停止します。

問題3

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

解決策

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

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

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

    HKEY_CURRENT_USER¥Software¥Microsoft¥Windows¥CurrentVersion¥Windows
    
    
  3. このキーのDeviceの文字列値をコピーします。次に例を示します。

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

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


    注意

    この対処方法は、Default Printerの値を変更するたびに実行する必要があります。

    この対処方法は、OPMN-managed Reports Serverでは機能しません。 


インプロセス・サーバーの実行の長所と短所は、第1章「OracleAS Reports Servicesのアーキテクチャについて」を参照してください。その他の詳細は、第3.4.10項「インプロセス・サーバーの指定」および第3.4.11項「インプロセス・サーバーの識別」を参照してください。

D.2 パフォーマンスの問題の診断

レポートの実行時間を改善する方法および全体的なパフォーマンスを効率化する方法の詳細は、第20章「Oracle Reportsのチューニング」を参照してください。

Oracle Reportsのトレース・オプションを使用して、Oracle Reportsのパフォーマンス関連の問題などをトレースおよび診断する方法の詳細は、第20.1.2項「レポート・トレース」を参照してください。

D.3 フォントの問題の診断

UNIXマシンでフォントを使用する際の一般的な問題および解決策の詳細は、第7章「クロス・プラットフォームの移植問題の解決」を参照してください。

D.4 印刷の問題の診断

UNIXでレポートを印刷する際の一般的な問題および解決策の詳細は、第5章「UNIXでのOracle Reportsによる印刷」第5.7項「よくある質問」を参照してください。

D.5 JDBC PDSの問題の診断

JDBC PDSを使用する際の一般的な問題および解決策の詳細は、第9章「JDBC PDSの構成と使用」第9.4項「トラブルシューティング情報」を参照してください。

D.6 OracleAS Portalの問題の診断

レポートをポートレットまたはアイテム・リンクとしてOracleAS Portalに公開する際の一般的な問題およびソリューションの詳細は、第12章「OracleAS Portalでのレポートの配布」第12.4項「トラブルシューティング情報」を参照してください。

D.7 グローバリゼーションの問題の診断

Oracle Reportsの一般的なグローバリゼーションの問題および解決策の詳細は、第18章「グローバリゼーションと双方向のサポートの実装」第18.7項「グローバリゼーションに関する問題のトラブルシューティング」を参照してください。

D.8 その他の解決策

Oracle MetaLink(http://metalink.oracle.com)には、さらに詳しい解決策が掲載されています。問題の解決策が見つからない場合は、オラクル社カスタマ・サポート・センターでサービス・リクエストを受け付けています。

オラクル社カスタマ・サポート・センターに問題のトラブルシューティングを依頼する場合は、次の手順を実行してください。

  1. 第20.1.2項「レポート・トレース」の説明に従って、レポートの実行をトレースします。

  2. オラクル社カスタマ・サポート・センターに問い合せます。オラクル社カスタマ・サポート・センターに問題のトラブルシューティングを依頼するには、必要に応じて、トレース情報、配布のシナリオ、レポート出力のサンプルなどが含まれるZipファイルを提供してください。

    関連項目

    • Oracle Technology Network(OTN)のOracle Application Serverのリリース・ノート。

     


戻る 次へ
Oracle
Copyright © 2003, 2005 Oracle.

All Rights Reserved.
目次
目次
索引
索引