Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 11g リリース 1 (11.1.1) B61375-04 |
|
前 |
次 |
この項では、一般的な障害と解決策について説明します。内容は次のとおりです。
Reports Serverでレポート・リクエストを実行すると、レポート・リクエストが様々な理由でハングすることがあります。このハングが適切なタイミングで検出されない場合は、安定性が損なわれる場合があります。ここでは、このようなシナリオに焦点をあて、問題を解説し、このようなパターンの特定方法と対処方法を示します。さらに、オラクル社カスタマ・サポート・センターに問題を報告する際に必要な情報の収集方法についても説明します。
まず第一に、Reports Serverでどのように重複ジョブが識別されるかを理解することが重要です。ジョブがReports Serverに送信されると、ジョブ・キューに同様のジョブが存在していないかどうかがチェックされます。送信されたジョブが現在実行中のジョブと同じ場合、Reports Serverでは送信されたジョブを重複ジョブ、現在実行中のジョブをマスター・ジョブと判断します。Reports Serverでは重複ジョブが実行されずに、マスター・ジョブの終了を待機してから、同じ出力を重複ジョブに渡します。アイドル・エンジンが利用可能であっても、重複ジョブはエンジンに送信されません。これは正常な動作であり、リクエストがハングしたわけではありません。
この項で説明する解決策以外の詳細は、第24.4項「Reports Server構成のチューニング」を参照してください。
注意: Oracle Reports 10g リリース2 (10.1.2)および11g リリース1 (11.1.1)のスケーラビリティの向上により、Reports Serverの安定性がさらに高まり、レポート・リクエストは必ず正常に実行されるようになりました。 |
問題1
マスター・ジョブが終了前にハングします。
解決策1
マスター・ジョブがなんらかの理由でハングすると、行内における次の重複ジョブがマスター・ジョブとなります。
rwserver
.conf
ファイルのengine
要素にあるengineResponseTimeOut
属性を確認してください(第8.2.1.9項「engine」を参照)。サーバーが不安定にならないよう、この属性は慎重に設定します。これにより、Reports Serverはこのようなハング状況を自動的に検出し、回復できるようになります。また、showjobs
コマンドを使用してハングしたジョブを終了し、Reports Serverで他のリクエストを処理させることもできます。showjobs
コマンドの詳細は、第A.8.8項「SHOWJOBS」を参照してください。
たとえば、一連のレポートを実行する必要があるとします。最も大きいレポートは、実行に最大5分かかります。このような場合は、engineResponseTimeOut
を5分に設定することができます。
注意:
|
engineResponseTimeOut
属性またはコマンドラインのENGINERESPONSETIMEOUT
キーワードを慎重に設定したにもかかわらず、サーバーが不安定になったりクラッシュしたりする場合は、次の手順を実行して、オラクル社カスタマ・サポート・センターに報告してください。
サーバーのトレースとログを有効にします(第24.3.7項「レポート実行のトレース」を参照)。トレースを有効にできない場合、rwserver
.conf
ファイルでlog
要素のoption
属性をfailedJobs
に設定することでログのみを有効にします(第8.2.1.13項「log」を参照)。ログを有効にすると、失敗したジョブ・レポートをreports.log
ファイルで確認できます。失敗したレポートまたはエンジンのハングを引き起こしたレポートを特定します。
rwserver
.conf
ファイルのengine
要素を編集し、diagnosis
プロパティを追加してエンジンの診断ログを有効にします(第8.2.1.9項「engine」の「プロパティ」を参照)。その後、ステップ1で特定したレポートを実行し、ハングを再現します。
次の情報を添えて、オラクル社カスタマ・サポート・センターにハングの問題を報告します。
rwserver
.conf
ファイル
reports.log
ファイル
ハングが再現されたときのエンジンの診断結果の出力
レポート定義ファイル(オラクル社カスタマ・サポート・センターにおける問題再現用)
問題2
レポート・リクエストの実行中に、次のような現象でReports Serverがレスポンスを停止したりクラッシュします。
ブラウザを通じてジョブが送信されると、ブラウザがハングします(レスポンスがない)。
エンジンがアイドル状態であるのに、ジョブがエンジンに送信されません。
Webコマンドが機能せず、しばらくしてブラウザがタイムアウトになります。
スケジュールされているジョブが実行されません。
解決策2
問題から回復するために、Reports Serverを再起動します。それでも問題が解決しない場合は、次の情報を添えて、オラクル社カスタマ・サポート・センターに報告してください。
rwserver
.conf
ファイル
ハング時のReports Serverのおおよその負荷率
Reports Serverのスレッド・ダンプ: これは、次の手順で出力できます。
Solarisの場合、Reports Serverがハングしたとき、kill -3
server_pid
コマンドを使用します。このコマンドは、スレッド情報をコンソール出力に書き込みます。スレッド情報とエラー・ストリームの出力先をコンソールからファイルに変更するには、$ORACLE_INSTANCE/config/reports/bin
ディレクトリのrwserver.sh
ファイルを修正します。例:
exec $ORACLE_INSTANCE/config/reports/bin/rwserver "$@" > threaddump.txt 2>&1
注意: これは、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 |
環境変数 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: The in-process Reports Server failed to start.
スタンドアロン・サーバーを起動すると、すぐに停止します。
解決策3
トレースを有効にして(第24.3.7項「レポート実行のトレース」を参照)、インプロセスReports Serverを起動してください。デフォルトでは、Reports Serverのrwserver_diagnostic.log
ファイルに実際の問題の原因が記録されます。
Reports Serverが、いずれかのプラガブル・データ・ソースまたはプラガブル宛先の初期化に失敗しました。プラガブル・データ・ソース(PDS)またはプラガブル宛先の構成を修正して、Reports Serverを再起動してください。PDSの一般情報については、Oracle Reportsのオンライン・ヘルプのプラガブル・データ・ソースに関する項を参照してください。プラガブル・データ・ソースの詳細は、第14章「プラガブル・データ・ソースの構成と使用」を参照してください。
エンジンが起動に失敗しました。$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.3.7項「レポート実行のトレース」を参照)。そして、この問題が発生したら、「解決策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-0
が6: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: 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
文字列を検索します。この行には、レポート名も含む完全なコマンド行が含まれています。トレースとエンジンの診断を有効にします。問題のあるレポートを何度か実行し、クラッシュを再現します。クラッシュが再現されたら、トレース・ファイルと診断の出力をオラクル社カスタマ・サポート・センターに送り、分析を依頼します。
REP-50125
は、Reports Serverが関係する様々な状況で生成される一般的エラー・メッセージです。
REP-50125: Caught exception: {0}
原因: Oracle Reportsで内部例外が発生しました。
処置: オラクル社カスタマ・サポート・センターにサポートを依頼してください。
問題1
REP-50125
のヘルプ・トピックの原因および処置に関する項には、問題を効率的に特定し診断するための十分な情報が記載されていません。
解決策1
Oracle Reports 10g リリース2 (10.1.2)では、次の新しいエラー・メッセージを特定のシナリオに適用し、焦点を絞ったトラブルシューティング・サポート情報がヘルプ・トピックの原因および処置に関する項で用意されていました。
REP-56126: Failed to parse server config file {0}
原因: サーバー構成ファイルの解析が失敗しました。XML構文に誤りがあります。
処置: サーバー構成ファイルを修正して、サーバーを起動してください。
REP-56127: Failed to decrypt <{0}> element
原因: 要素に対する復号化コールが失敗しました。
処置: encrypted属性が要素に正しく設定されていることを確認してください。
REP-56128: Failed to initialize {0} destination. Nested Exception: {1}
原因: 宛先の初期化が失敗しました。
処置: 宛先の構成を確認し、修正してください。
問題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 11g リリース1 (11.1.1)ではUnitedLinux 1.0はサポートされていないため、このプラットフォームを使用してレポート・リクエストの実行はできません。
問題5
Linuxでopenmotifを使用してレポート・リクエストを実行すると、REP-50125
が表示されます。
解決策5
Linux上のOracle Reports 6i、9iおよび10gでは、openmotif 2.1.30のみがサポートされます。
Oracle Reports Servlet (rwservlet
)経由で送信された長期レポート・リクエストは、ASコンポーネントによっては、正常に実行されなかったり、エンジンのクラッシュやハング、タイムアウトが発生する場合があります。
問題
rwservlet
を使用して長期にわたって実行しているレポートが終了しません。
解決策
次のことを確認してください。
Webブラウザから同期式にレポートを実行している場合は、この障害がHTTPサーバーのタイムアウトによるものかどうかを確認します。同じジョブを非同期で送信してみます。正常に終了する場合は、アプリケーション・サーバー構成のHTTPサーバーのタイムアウトを変更するか、長期レポートを非同期で実行すること(この方法をお薦めします)を検討してください。Reports Serverの通知機能を利用すると、ジョブが終了したことをユーザーに通知できます。
Enterprise ManagerでReports Serverの統計を調べ、サーバーの全般的レスポンス時間が大幅に変化していないかどうかを確認します。
データベース・サーバーが正常にレスポンスしているかどうかを確認します。長期にわたって実行されるレポートでは特に、データベースの負荷がパフォーマンスに重大な影響を及ぼす場合があります。
複数のプラットフォームにレポートを配布すると、フォントの問題が生じる場合があります。
問題
複数のプラットフォームにレポートを配布した場合に、プラットフォーム間のフォントの表示およびマッピングが一致しません。
解決策
Oracle Reports 10g リリース2 (10.1.2)では、この問題について、新しいドキュメントにおいて次の各章で取り上げていました。
第9章「Oracle Reportsでのフォントの管理」(特にOracle Reportsにおけるフォント処理メカニズムの詳細は、第9.1項「フォントの使用」を参照)
第12章「フォント・モデルおよびクロス・プラットフォームの配布」(特に第12.3.1項「プラットフォームによって異なるフォント」および第12.3.2項「フォントに関連する問題の解決」を参照)
REP-56048
は、UNIXでrwservlet
、rwclient
、Oracle Formsなどを使用してレポートを実行したときに発行される、一般的なエラー・メッセージです。Reports Serverは、レポートを実行するReport Engineにジョブを渡します。そのReport Engineがクラッシュすると、このエラーが発生します。
REP-56048: エンジン{0}に障害が起きました
原因: Reports Serverで、指定したエンジンのクラッシュが検出されました。
処置: Reports Serverで別のエンジンを再起動します。エンジンがクラッシュするテスト・ケースとともに、問題をオラクル社カスタマ・サポート・センターに報告してください。
後述の解決策および第D.1.1項「レポート・リクエストのハング」の「解決策4」を参照し、問題に対処します。それでもREP-56048が発生する場合は、次の手順を実行して、問題をオラクル社カスタマ・サポート・センターに報告してください。
サーバーのトレースとログを有効にします(第24.3.7項「レポート実行のトレース」を参照)。トレースを有効にできない場合、rwserver
.conf
ファイルでlog
要素のoption
属性をfailedJobs
に設定することでログのみを有効にします(第8.2.1.13項「log」を参照)。ログを有効にすると、失敗したジョブ・レポートをreports.log
ファイルで確認できます。失敗したレポートまたはエンジンのクラッシュを引き起こしたレポートを特定します。
rwserver
.conf
ファイルのengine
要素を変更し、diagnosis
プロパティを追加してエンジンの診断ログを有効にします(第8.2.1.9項「engine」の「プロパティ」を参照)。その後、ステップ1で特定したレポートを実行し、クラッシュを再現します。
次の情報を添えて、オラクル社カスタマ・サポート・センターにクラッシュの問題を報告します。
rwserver
.conf
ファイル
reports.log
ファイル
クラッシュが再現されたときのエンジンの診断結果の出力
レポート定義ファイル(オラクル社カスタマ・サポート・センターにおける問題再現用)
問題1
UNIXプラットフォームでレポートを実行したときに、NLS_LANG
にWE8ISO8859P1
またはIW8ISO8859P8
以外のキャラクタ・セットが定義されている場合、REP-56048
が表示されます。
解決策1
Oracleのキャラクタ・セット名およびXLFDのCHARSET_REGISTRY
とCHARSET_ENCODING
とのマッピングに使用されるTk2Motif.rgb
内のエントリを修正します(最後の2つのフィールド。iso8859-1
など)。詳細は、次を参照してください。
また、Report Engineでレポートを実行する前に、Reports Runtime (rwrun
)を使用してこのレポートを実行し、環境設定を確認することもできます。
問題2
UNIXプラットフォームでレポートを実行したときに、DISPLAY
環境変数が設定されていない場合、REP-56048
が表示されます。
解決策2
Oracle Reports 10g (9.0.4)では、REPORTS_DEFAULT_DISPLAY
環境変数により、DISPLAY
環境変数への依存性が解消されています。デフォルトではREPORTS_DEFAULT_DISPLAY=YES
です。REPORTS_DEFAULT_DISPLAY
がNO
に設定されていないことを確認してください。
詳細は、第B.1.42項「REPORTS_DEFAULT_DISPLAY」を参照してください。
問題3
巨大なレポートを実行しているときにトレースを有効にすると、REP-56048
が表示されます。
解決策3
トレースを有効にした場合、膨大な出力のレポートを実行したときに、Reports Engineがクラッシュすることがあります。これは、トレース・ファイルのサイズの問題と、トレースの作成に使用できるディスク領域、メモリーまたはプロセッサ処理能力が不十分であることが原因と考えられます。このエラーを防止するには、レポートの問題をトラブルシューティングするために診断情報が必要になる場合に、rwserver
.conf
ファイルのengine
要素を変更して、diagnosis
プロパティを追加し、エンジンの診断ログを有効にします(第8.2.1.9項「engine」の「プロパティ」を参照)。rwserver
.conf
構成ファイルのtrace
要素にあるtraceModule
属性を使用して、生成されるトレース・ファイルを制限することもできます。
トレースの詳細は、第24.3.7項「レポート実行のトレース」を参照してください。
問題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
の場合を示しています。スタック・トレースを抽出したら、Oracle MetaLink(http://metalink.oracle.com
)で、スタックにある最後の数コールを使用して、関連する問題を検索できます。
特定のジョブが問題の原因と思われる場合、次の手順として、rwclient
およびrwrun
を使用して、そのレポートを実行します。rwclient
を使用して実行すると、Webコンポーネントが環境から削除されます。rwrun
を使用して実行すると、Reports Serverをバイパスしてエンジンのみで実行することと同様になります。
双方向サポートは、利用対象者の要件に応じて、左から右または右から左の方向にレポート出力を表示できるようにします。右から左に表示する言語にはフォントの問題があるため、レポート出力の生成が完全ではありません。
問題
右揃えのテキストが正しく表示されず、固定幅フォントを必要とする制限が生じます。
解決策
Oracle Reports 10g リリース2 (10.1.2)では、右から左に表示する言語(ヘブライ語、アラビア語など)にフォント・サブセットを適用して、テキストが正しく右揃えになるようにPDF出力を改善することで、この問題に対応していました。しかし、UNIXプラットフォームでは、右揃えのテキストが正しく表示されない場合があります。
右から左に表示するテキストの問題に対処するには、次の各項を参照してください。
第23.4項「双方向サポート」では、右から左に表示する言語のレポートを設計する際に使用できるオプションについて説明します。
第11.4項「双方向(BiDi) PDFファイルの生成」では、双方向(BiDi)言語のPDFファイルを生成する手順について説明します。
第B.1.30項「REPORTS_ALLOW_DB_CONNECT_STRING」。この環境変数によって、useridパラメータでDB接続文字列を使用できるようになります。
第B.1.31項「REPORTS_BIDI_ALGORITHM」では、双方向(BiDi)言語(アラビア語やヘブライ語など)の双方向レイアウト・アルゴリズムを切り替える環境変数について説明します。
第12.6項「マルチバイトPDF出力の生成」では、UNIXで固定幅フォントに対処する方法の例を示します。
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
)を参照してください。
『Oracle Fusion Middleware 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
次を確認してください。
RUN_REPORT_OBJECT
コードで参照されているReports Serverが起動していることを確認します。
Oracle ReportsのOracle WebLogic Serverインスタンスが起動していることを確認します。
RUN_REPORT_OBJECT
に渡されるパラメータの値にスペースが使用されていないこと、およびパラメータが一重引用符で囲まれていることを確認します。
問題3
RUN_REPORT_OBJECT
で次のエラーが生成されます。
REP-503 You did not specify the name of a report
.
解決策3
Oracle Formsオブジェクト・ナビゲータのレポート・オブジェクトのプロパティ・インスペクタに、レポート名が指定されていることを確認します。
問題4
フォームからレポートを実行して、フォームからレポートにパラメータを渡すことができません。
解決策4
次を確認してください。
Oracle Formsから渡すパラメータが正しいフォーマットであることを確認します。パラメータの初期値は、Reports Builderのパラメータのプロパティ・インスペクタで指定されます。
パラメータの初期値が、Reports Builderのパラメータのプロパティ・インスペクタで指定されていることを確認します。
Before Reportトリガーまたはレポート・パラメータ・フォームを使用して、コマンドラインを渡します。
それでも問題が解決しない場合、レポートのトレースを有効にして(第24.3.7項「レポート実行のトレース」を参照)、問題の原因を絞り込みます。
問題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のコールに関するホワイト・ペーパーを参照してください。
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レポートの作成マニュアルを参照してください。
ユーザー・イグジットは、以前のリリースのOracle Reportsで開発されたレポートに存在する場合があります。
注意: Oracle Reports 10gでは、 |
問題
UNIXでユーザー・イグジットが含まれるレポートを実行すると失敗します。
解決策
UNIXでは、Reports Builder (rwbuilder
)とReports Runtime (rwrun
)によってユーザー・イグジット・ライブラリが動的にロードされ、ユーザー・イグジットが含まれるレポートが正常に実行されます。Reports Server (rwserver
)を使用してレポートを実行する場合は、rwengine.sh
に次の環境変数を追加して、ユーザー・イグジット・ライブラリをロードする必要があります。
LD_PRELOAD=librw.so:user_exit_library; export LD_PRELOAD
インプロセスReports Serverでは、現在Windowsにログオンしているユーザーのデフォルト・プリンタが認識されません。これは、インプロセスReports Serverを実行しているサービスがLocal Systemとしてログオンされているためです。
問題
次のような問題があります。
デフォルトのプリンタに出力すると、REP_3002
エラー・メッセージが出力されます。たとえば、次のようなコマンドを入力したとします。
http://myrepsrvr.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."
Oracle6i Graphics (OGD)グラフィックが含まれるレポートを配布すると、Reports Serverがレスポンスを停止します。
インプロセスReports ServerからPDFファイルを出力すると、フォントの位置に問題が発生します。
解決策
これらの問題をすべて対処する手順は、次のとおりです。
レジストリ・エディタ(regedit.exe
など)を使用してWindowsのレジストリを開きます。編集する前に、レジストリのバックアップを作成します。
次に示すキーにナビゲートします。
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
このキーのDevice
の文字列値をコピーします。例:
\\MOWGLI\sierra,winspool,Ne02:
次に示すキーにナビゲートします。
HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Windows
HKEY_CURRENT_USER
からコピーしたDevice
の値を貼り付けます(このキーのDevice
の文字列値は空になります)。
注意: この回避策は、Default Printerの値を変更するたびに実行する必要があります。 この回避策は、OPMN-managed Reports Serverでは機能しません。 |
インプロセスReports Serverの実行の長所と短所の詳細は、第2章「Oracle Reports Servicesのアーキテクチャの理解」を参照してください。詳細は、第8.3項「Oracle Reports Servlet構成ファイル」(serverパラメータとinprocessパラメータの説明)を参照してください。