D.1 Problems and Solutions

This section describes common problems and solutions. It contains the following topics:

D.1.1 Hanging Report Requests

When running report requests with Reports Server, the report request may "hang" for various reasons. This can lead to stability issues if not noticed in time. This section highlights such scenarios, explains the issues, how you can identify such patterns, take corrective measures, and gather sufficient information to raise such issues with Oracle Support Services.

To begin with, it is important to understand how Reports Server identifies duplicate jobs. When a job is submitted to Reports Server, it checks whether a similar job exists in its job queue. If it finds a currently running job that is the same as the submitted job, then Reports Server considers the submitted job a duplicate job and the currently running job as the master job. Reports Server does not execute the duplicate job; instead, it waits for the master job to finish and passes the same output to the duplicate job. Although an idle engine is available, the duplicate job is not submitted to the engine. This is expected behavior and does not mean that the request is hanging.

In addition to the Solutions provided in this section, refer to Section 24.4, "Tuning Reports Server Configuration".

Note:

Scalability improvements in Oracle Reports 10g Release 2 (10.1.2) and 11g Release 1 (11.1.1) improve the stability of Reports Server to ensure report requests complete successfully.

Problem 1

Master job "hangs" before finishing.

Solution 1

If a master job hangs for some reason, then the next duplicate job in line is made the master job.

Check the engineResponseTimeOut attribute in the engine element of the rwserver.conf file (see Section 8.2.1.9, "engine"). Set this attribute judiciously to avoid server instability. This enables Reports Server to automatically detect and recover from this type of hanging situation. You can also use the showjobs command to end the hanging job and allow Reports Server to continue processing other requests. For information about the showjobs command, see Section A.8.8, "SHOWJOBS".

For example, consider a scenario where you have a set of reports. The largest report takes a maximum of 5 minutes to run. In this case, you can set engineResponseTimeOut to 5 minutes.

Notes:

  • When an engine is executing the job, the engine updates the server with the latest status, such as formatting page 1, 2, and so on. If Reports Server does not receive any update from the engine for more than 5 minutes, it is assumed that the engine is hanging and therefore, Reports Server stops the engine.

  • When you have reports of various complexities that take 1 minute to 1 hour to run, you should specify ENGINERESPONSETIMOUT on the command line while running the report (see Section A.6.4, "ENGINERESPONSETIMEOUT").

  • If you have interactive jobs as well as scheduled and batch jobs, it is good practice to start one server for interactive jobs and one for batch and scheduled jobs. For performance and stability reasons, you should avoid using the same server for both interactive and batch/scheduled jobs.

Despite setting the engineResponseTimeOut attribute (or ENGINERESPONSETIMEOUT keyword on the command line) judiciously, if you still encounter instability and crashes, perform the following steps to report the problem to Oracle Support Services:

  1. Enable server tracing and logging (see Section 24.3.7, "Tracing Report Execution"). If it is not possible to enable tracing, enable logging alone by setting the log element's option attribute to failedJobs in the rwserver.conf file (see Section 8.2.1.13, "log"). When you enable logging, you can see the failed job reports in the reports.log file. Identify the report that is failing or causing the engine to hang.

  2. Enable engine diagnostic logging by modifying the engine element to include the diagnosis property in the rwserver.conf file (see "Properties" in Section 8.2.1.9, "engine"), then run the report that you identified in Step 1 to reproduce the hang.

  3. Report the hang to Oracle Support Services with the following information:

    • rwserver.conf file.

    • reports.log file.

    • Engine diagnostic output when the hang is reproduced.

    • Report definition file so that Oracle Support Services can reproduce the problem.

Problem 2

Reports Server stops responding or crashes when running report requests, exhibited by any of the following:

  • When a job is submitted through a browser, the browser seems to hang (no response).

  • A job is not submitted to an engine although the engine is idle.

  • Web commands do not work and the browser times out after some time.

  • Scheduled jobs are not run.

Solution 2

Restart Reports Server to attempt to recover from this problem. If the problem persists, report it to Oracle Support Services with the following information:

  • rwserver.conf file.

  • Approximate load on Reports Server at the time of the hang.

  • Thread dump of Reports Server, which you can obtain as follows:

    • On Solaris, use the kill -3 server_pid command when Reports Server hangs. This command writes the thread information to the console output. To redirect the thread information and error streams from the console to a file, modify the rwserver.sh file in the $ORACLE_INSTANCE/config/reports/bin directory. For example:

      exec $ORACLE_INSTANCE/config/reports/bin/rwserver "$@" > threaddump.txt 2>&1
      

      Note:

      This example is for the UNIX k shell. The code may be slightly different if you are using some other shell.

      If you are using the in-process Reports Server, use the Give kill -3 to WLS_REPORTS managed server process. The thread dump will be in FMW_HOME/user_projects/domains/domain_name/servers/WLS_REPORTS/logs/WLS_REPORTS.out

    • On Windows, the kill -3 command does not work. Instead, at a command prompt, type the command specified in Table D-1 to start Reports Server; when the issue is reproduced, shift focus to the command prompt window, then press Control+Break to get the thread dump.

      Table D-1 Commands to Obtain Thread Dump on Windows

      Reports Server Version Command

      11.1.1.x.x

      Set the environment variable COMPONENT_CONFIG_PATH to the Reports Server configuration directory and run the following command:

      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
      

Problem 3

The in-process Reports Server fails to start and the browser displays the following message while trying to run a report with the in-process Reports Server:

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

When the standalone server is started, it shuts down immediately.

Solution 3

Enable tracing (see Section 24.3.7, "Tracing Report Execution") and start the in-process Reports Server. The default Reports Server rwserver_diagnostic.log file should capture the actual cause of the problem:

  • Reports Server has failed to initialize one of the pluggable data sources or destinations. Correct the configuration for the pluggable data source (PDS) or destination and restart Reports Server. For general information about PDSs, see the Pluggable Data Sources section of the Oracle Reports online Help. For information about the Pluggable Data Sources, see Chapter 14, "Configuring and Using the Pluggable Data sources".

  • The engine has failed to start. Check the rwEng_{engNo}_diagnostic.log file in the $DOMAIN_HOME/servers/WLS_REPORTS/logs/reports directory. This file must contain the following lines:

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

    If the rwEng_{engNo}_diagnostic.log file does not contain these lines, it means that the engine has failed to start.

    If the CinitEngine return value in the file is negative, then it represents an error in initializing the Reports Engine.If the CinitEngine return value is not equal to zero, check the System environment variable PATH if you are using Windows and the LD_LIBRARY_PATH environment variable in setdomainenv.sh file which is located in DOMAIN_HOME/bin if you are using Solaris. For the in-process Reports Server, the values of PATH and LD_LIBRARY_PATH are taken from the System environment variable PATH for windows and LD_LIBRARY_PATH in setdomainenv.sh file which is located in DOMAIN_HOME/bin for Solaris.

Problem 4

Reports Engine crashes or hangs when running report requests.

Solution 4

Case 1: Consider the scenario where Reports Server is running thousands of reports every day, printing reports, and publishing them to the Web. In this scenario, the browser may wait for the response and eventually time out. Even Web commands to see the job queue may not work.

Turn on tracing (see Section 24.3.7, "Tracing Report Execution") and when this problem occurs, take a thread dump by running the kill -3 server_pid command on Solaris (as described under Solution 2. The following lines of code are the result of running the kill -3 server_pid command. These lines indicate a hang when Reports Server is trying to write the report to a network drive:

"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)

The trace file for this scenario is as follows:

[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

In this trace file, note the following:

  • A job with ID 15 is submitted at 6:26:47:321

  • A duplicate job is checked for at 6:26:48:212

  • rwEng-0 is obtained at 6:26:48:222

  • The engine started running at 6:26:48:222

  • The first page is formatted at 6:26:50:856

After this there is no update on the job. The Finished successfully line is not present. This indicates that there is a problem with the job.

The following example shows a trace file for a job that 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

In this trace file, after formatting the page 1, note the following:

  • The job finished successfully at 6:26:2:286

  • Duplicate jobs are notified at 6:26:3:7

  • Connection is released at 6:26:3:57

These lines were not present in the first example. All jobs must contain these lines in the Reports Server trace files. A missing event or abrupt end means that the job has not finished successfully and is a potential cause for the hang.

Case 2: Consider the scenario where the following error displays:

REP-56048: Engine rwEng-0 crashed, job Id: 17

In this scenario, check the Reports Server and engine trace files. A typical crash resembles the following in the Reports Server trace file:

[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)

In the engine trace file, the last few lines of the crash trace resemble the following:

[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)

Note:

The engine trace file ends abruptly whenever the engine crashes.

Action: Identify the report that is causing the engine crash. You can do this by identifying the job ID. In the preceding examples, the engine crashed while running jobid 17. In the server trace file, search for the jobid = 17 Get command line string. This line contains the complete command line that includes the report name also. Enable tracing and engine diagnosis. Run the problematic report multiple times to reproduce the crash. When the crash is reproduced, pass on the trace files and diagnosis output to Oracle Support Services for analysis.

D.1.2 Reports Server Activity Generates Error REP-50125

REP-50125 is a common error message issued in multiple situations involving Reports Server:

REP-50125: Caught exception: {0}

Cause: Oracle Reports has caught an internal exception.

Action: Contact Oracle Support Services for additional assistance.

Problem 1

The Cause and Action in the help topic for REP-50125 do not contain enough information to effectively identify and diagnose the problem.

Solution 1

With Oracle Reports 10g Release 2 (10.1.2), the following new error messages addressed specific scenarios to provide focused troubleshooting assistance in the Cause and Action exposed in the help topics:

  • REP-56126: Failed to parse server config file {0}

    Cause: Failed to parse server config file. XML syntax is wrong.

    Action: Correct the server config file and start the server.

  • REP-56127: Failed to decrypt <{0}> element

    Cause: Decrypt call failed on the element.

    Action: Please make sure encrypted attribute is set properly for the element.

  • REP-56128: Failed to initialize {0} destination. Nested Exception: {1}

    Cause: Destination initialization failed.

    Action: Please check and correct the configuration for the destination.

Problem 2

REP-50125 displays when starting up Reports Server.

Solution 2

Refer to Note 289748.1 on Oracle MetaLink at http://metalink.oracle.com: Troubleshooting Problems When Starting Up Reports Server.

Problem 3

REP-50125 displays when running report requests.

Solution 3

Refer to Note 290827.1 on Oracle MetaLink at http://metalink.oracle.com: Troubleshooting Failed Reports Requests Issued Against Reports Server.

Problem 4

REP-50125 displays with segmentation violation when starting Reports Server on SLES-8/UnitedLinux 1.0.

Solution 4

With Oracle Reports 10g Release 2 (10.1.2), SLES8 and SLES9 were supported. However, Oracle Reports 11g Release 1 (11.1.1) does not support UnitedLinux 1.0, so you cannot use this platform to run report requests.

Problem 5

REP-50125 displays when running reports on Linux with openmotif.

Solution 5

Only openmotif 2.1.30 (not higher) is supported for Oracle Reports 6i, 9i, and 10g on Linux.

D.1.3 Long Running Report Failure with Oracle Reports Servlet

Long running report requests submitted through Oracle Reports Servlet (rwservlet) may not succeed or cause crashing/hanging engines and timeouts on dependent AS components.

Problem

A report that runs for a long time with rwservlet does not finish.

Solution

Perform the following checks:

  • If you are running the report synchronously through your Web browser, verify that the failure is not caused by a timeout on the HTTP server. Submit the same job asynchronously; if it finishes successfully, modify the HTTP server timeout in the application server configuration or consider executing your long running reports asynchronously (which is the suggested method). You can leverage the Reports Server notification feature to inform your users when their job has finished.

  • Verify that your overall response time of the server has not had any significant changes, by looking at the Reports Server statistics in Enterprise Manager.

  • Verify that our database server is responding in a normal manner. Sometimes database load can have a significant impact on the performance, especially on long running reports.

D.1.4 Fonts Do Not Display Consistently On Different Platforms

Deploying reports on multiple platforms may result in font issues.

Problem

When you deploy a report on multiple platforms, font rendering and mapping is not consistent across all platforms.

Solution

With Oracle Reports 10g Release 2 (10.1.2), this issue was addressed in new documentation in the following chapters:

D.1.5 Running Reports on UNIX Platforms Generates REP-56048

REP-56048 is a common error message issued when running a report (for example, using rwservlet, rwclient, or through Oracle Forms) on UNIX. The Reports Server passes the job to a Report Engine that is responsible for running the report. The Report Engine crashes, resulting in this error:

REP-56048: Engine {0} crashed

Cause: Reports Server detected the specified engine crashed.

Action: Reports Server should restart another engine. Report the problem to Oracle Support Services with the test case that causes engine crash.

Refer to the solutions below and to Solution 4 in Section D.1.1, "Hanging Report Requests" to attempt to resolve the problem. If REP-56048 persists, perform the following steps to report the problem to Oracle Support Services:

  1. Enable server tracing and logging (see Section 24.3.7, "Tracing Report Execution"). If it is not possible to enable tracing, enable logging alone by setting the log element's option attribute to failedJobs in the rwserver.conf file (see Section 8.2.1.13, "log"). When you enable logging, you can see the failed job reports in the reports.log file. Identify the report that is failing or causing the engine to crash.

  2. Enable engine diagnostic logging by modifying the engine element to include the diagnosis property in the rwserver.conf file (see "Properties" in Section 8.2.1.9, "engine"), then run the report that you identified in Step 1 to reproduce the crash.

  3. Report the crash to Oracle Support Services with the following information:

    • rwserver.conf file.

    • reports.log file.

    • Engine diagnostic output when the crash is reproduced.

    • Report definition file so that Oracle Support Services can reproduce the problem.

Problem 1

REP-56048 displays when running reports on UNIX platforms, and character sets defined in NLS_LANG are other than WE8ISO8859P1 or IW8ISO8859P8.

Solution 1

Modify entries in Tk2Motif.rgb for mapping Oracle character set names and XLFD's CHARSET_REGISTRY to CHARSET_ENCODING (the last two fields; for example, iso8859-1). For more information, see:

You can also try to run this report with Reports Runtime (rwrun) to verify the environment settings before running it through the Report Engine.

Problem 2

REP-56048 displays when running reports on UNIX platforms, and DISPLAY environment variable is not set.

Solution 2

With Oracle Reports 10g Release 1 (9.0.4), the REPORTS_DEFAULT_DISPLAY environment variable removes the dependency on the DISPLAY environment variable. By default, REPORTS_DEFAULT_DISPLAY=YES. Make sure that REPORTS_DEFAULT_DISPLAY has not been set to NO.

For more information, see Section B.1.42, "REPORTS_DEFAULT_DISPLAY".

Problem 3

REP-56048 displays when tracing is enabled while running a big report.

Solution 3

If tracing is enabled, Reports Engine might crash for reports with large output. This may be due to the size of the trace file and that there was insufficient disk space, memory, or processor capacity available to create it. To avoid this error, enable engine diagnostic logging only by modifying the engine element to include the diagnosis property in the rwserver.conf file (see "Properties" in Section 8.2.1.9, "engine"), when diagnostic information is required to troubleshoot a problem with a report. You can also restrict the trace file generated using the traceModule attribute of the trace element in the rwserver.conf configuration file.

For general information about tracing, see Section 24.3.7, "Tracing Report Execution".

Problem 4

REP-56048 displays when DISTRIBUTE=YES on UNIX.

Solution 4

Distribution fails on UNIX if the PRINTER environment variable is not set to a valid printer when one of the destinations specified in the distribution file is a printer. Set the following environment variables:

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

In ORACLE_INSTANCE/config/FRComponent/frcommon/guicommon/tk/admin/uiprint.txt, add the following line:

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

For more information on report distribution, see Chapter 20, "Creating Advanced Distributions".

Problem 5

REP-56048 displays when printing a report on UNIX.

Solution 5

Oracle Reports uses the shell script rwlpr.sh for printing on UNIX. Directly modifying this file is not supported. Please contact Oracle Support Services for assistance.

For more information on printing on UNIX, see Chapter 10, "Printing on UNIX with Oracle Reports".

Problem 6

REP-56048 displays when running a report containing graphics on UNIX.

Solution 6

This error may result if Oracle Reports is linked against a version of Motif other than the operating system's default. Refer to the Oracle Reports chapter in the Oracle Fusion Middleware Release Notes for Microsoft Windows for the correct version of Motif to which to link.

Problem 7

REP-56048 displays when generating delimited report output for a matrix report.

Solution 7

Generate the report output to DelimitedData (DESFORMAT=DELIMITEDDATA) or spreadsheet (DESFORMAT=SPREADSHEET) output instead of Delimited. DelimitedData supports large reports, but the output in Microsoft Excel displays only data (as defined by the report data model), no layout information. To generate report output that preserves the formatting defined in report layout, use the output format DESFORMAT=SPREADSHEET.

For more information on delimited and spreadsheet output, see "About delimited output" and "About spreadsheet output" in the Oracle Reports online Help (and also in the "Advanced Concepts" chapter in the Oracle Reports Building Reports manual). Also see Section A.5.27, "DESFORMAT".

Problem 8

REP-56048 displays when running a report through the Reports Engine when none of the previous solutions resolve the problem.

Solution 8

This error may be related to your environment settings or caused by the report itself. By checking the Oracle Reports Servlet (rwservlet) showjobs page for your Reports Server, you should be able to determine the job that resulted in the error. If you are on a UNIX machine, there should be a core dump created in your environment. To facilitate searching for related bugs, extract a stack trace from this core dump. Note that the executable should be java rather than rwrun.

In previous releases, to get a stack trace from the core file, you ran a debugger on the runtime component. This is still applicable if you are able to reproduce the problem with only the rwrun component. However, if the crash occurs only through the Reports Server, then the engine will be called using a Java wrapper, and you must run the debugger on the Java executable. This will automatically load any Oracle Reports libraries.

For example:

dbx java core

This example is for dbx. Once you have the stack trace, you will be able to search Oracle MetaLink at http://metalink.oracle.com for any related issues using the last few calls in the stack.

If a particular job seems to be causing the problem, then the next step would be to try running that report with rwclient and rwrun. Running with rwclient removes the Web component from the environment. Running with rwrun is equivalent to bypassing the Reports Server and running with just the engine.

D.1.6 Font Issues with Right-to-Left Languages

Bidirectional support enables you to display report output in either a left-to-right or right-to-left orientation, depending on the requirements of your audience. Font issues with right-to-left languages generate imperfect report output.

Problem

Misalignment of right-aligned text and limitations requiring fixed width fonts.

Solution

With Oracle Reports 10g Release 2 (10.1.2), this issue was addressed with improvements to PDF output with font subsetting enabled for languages that read right to left (such as Hebrew and Arabic), ensuring that text will be accurately right-aligned. However, on UNIX platforms, you may see some misalignment for right-aligned text.

To resolve font issues related to right-to-left text, refer to the information in the following sections:

D.1.7 Errors When Running Reports from Oracle Forms Using RUN_REPORT_OBJECT

The most secure approach for calling Oracle Reports from Oracle Forms on the Web is to use Oracle Reports Services in combination with RUN_REPORT_OBJECT. For detailed information about using RUN_REPORT_OBJECT to call Oracle Reports from Oracle Forms, refer to the Oracle Application Server 10g Integrating Oracle Reports in Oracle Forms Services Applications white paper on OTN (http://otn.oracle.com/products/forms/pdf/10g/frm10gsrw10g.pdf).

Also refer to Oracle Fusion Middleware Forms Services Deployment Guide.

Problem 1

RUN_REPORT_OBJECT generates the following error:

FRM-41214: Unable to run report.

Solution 1

When deploying a report over the Web with output to be shown in the browser window, DESTYPE should be set to CACHE, not SCREEN or PREVIEW. To display the output of report in the browser use WEB.SHOW_DOCUMENT, rather than RUN_REPORT_OBJECT.

Problem 2

RUN_REPORT_OBJECT generates the following error:

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

Solution 2

Check the following:

  • Ensure that the Reports Server being referenced in the RUN_REPORT_OBJECT code is started.

  • Make sure that the Oracle WebLogic Server instance for Oracle Reports is started.

  • Make sure that parameters being passed to RUN_REPORT_OBJECT have no spaces in their values, or are enclosed in single quotes.

Problem 3

RUN_REPORT_OBJECT generates the following error:

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

Solution 3

Make sure that the report name is specified in the Property Inspector of the Report object in the Oracle Forms Object Navigator.

Problem 4

Unable to run report from a form and pass parameter from a form to the report.

Solution 4

Check the following:

  • Make sure that you are passing the parameters in the proper format from Oracle Forms. the initial value for the parameter is specified in the Property Inspector of the parameter in Reports Builder.

  • Make sure that the initial value for the parameter is specified in the Property Inspector of the parameter in Reports Builder.

  • Try passing the command line in a Before Report trigger or by using the report Parameter Form.

If the issue persists, enable report tracing (see Section 24.3.7, "Tracing Report Execution") to pinpoint the source of the problem.

Problem 5

Using a report Parameter Form (PARAMFORM=YES) in conjunction with RUN_REPORT_OBJECT fails with "Internal Server Error".

Solution 5

Refer to the Oracle Forms Services - Using Run_Report_Object() to call Reports with a parameter form white paper on OTN (http://otn.oracle.com/products/forms/pdf/10g/frmrepparamform.pdf).

D.1.8 Displaying Report Output in Microsoft Excel

Generating a report to delimited output to display in Microsoft Excel is a common requirement, which can be accomplished in a number of ways. Users are often unsure of which method to choose.

Problem

Which delimited output solution is best for given requirements?

Solution

Depending on your report definition and output display requirements, choose the appropriate method for generating your report to delimited output for Microsoft Excel:

  • Requirement: You have a paper layout report, which you want output to Microsoft Excel, but do not need rich formatting of the report layout.

    Output Solution: Generate your report to delimited output:

    • DESFORMAT=DELIMITED

    • DESFORMAT=DELIMITEDDATA (for use when you have problems running large volume reports with DELIMITED)

  • Requirement: You have a paper report, which you want to output to Microsoft Excel, including the rich formatting of the report layout.

    Output Solution: Generate your report to spreadsheet output:

    • DESFORMAT=SPREADSHEET

  • Requirement: You have a paper report, which you want to output to Microsoft Excel, including the rich formatting of the report layout. Additionally, you would like to deploy your report as a JSP.

    Output Solution: Since this is a JSP report, you cannot directly generate to a .xls file (DESTYPE=FILE),but you can save the output that displays in your browser as a .xls file. Refer to the Oracle Reports Building Reports manual to implement this solution using <rw:include>: Chapter 29, "Deploying a Web Layout Report to Microsoft Excel Output".

  • Output Requirement: You have a JSP-based Web report, which you want to output to Microsoft Excel.

    Solution: Since this is a JSP report, you cannot directly generate to a .xls file (DESTYPE=FILE), but you can save the output that displays in your browser as a .xls file. Refer to the chapter "Building a report for Spreadsheet Ouput" in the Oracle Reports Building Reports manual, available on the Oracle Technology Network.

For detailed information on spreadsheet output and delimited output, see the Oracle Reports online Help and Oracle Reports Building Reports manual.

D.1.9 Report Containing User Exit Fails on UNIX

User exits may exist in reports developed in prior releases of Oracle Reports.

Note:

With Oracle Reports 10g, you can call Java methods using the ORA_JAVA built-in package and the Java Importer. This reduces the need to have user exits in a report and allows for a more open and portable deployment. You may also use the ORA_FFI built-in package, which provides a foreign function interface for invoking C functions in a dynamic library. With the availability of these built-in packages, the use of user exits is deprecated in Oracle Reports, though makefiles are still be supplied to permit you to continue to work with existing user exits.

Problem

A report that contains a user exist fails when run on UNIX.

Solution

On UNIX, Reports Builder (rwbuilder) and Reports Runtime (rwrun) dynamically load the user exit library to successfully run reports that contain user exits. When running reports through Reports Server (rwserver), you must add the following environment variable in rwengine.sh to load the user exit library:

LD_PRELOAD=librw.so:user_exit_library; export LD_PRELOAD

D.1.10 Printing and Font Errors When Using In-process Reports Server

The in-process Reports Server does not recognize the default printer of a user currently logged on to Windows. This is because the service that runs the in-process Reports Server is logged on as the Local System.

Problem

Any of the following:

  • Printing to default printer fails with the REP_3002 error. For example, the following command:

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

    results in the following error:

    Error:"REP-3002: Error initializing printer.  Please make sure a printer is installed."
    
  • Deploying reports containing Oracle6i Graphics (OGD) graphics causes Reports Server to stop responding.

  • Font alignment problems in a PDF file output from an in-process Reports Server.

Solution

To work around all these issues:

  1. Open the Windows registry using a registry editor (for example, regedit.exe). Create a backup of the registry before you edit it.

  2. Navigate to the following key:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
    
  3. Copy the string value of Device for this key. For example:

    \\MOWGLI\sierra,winspool,Ne02:
    
  4. Navigate to the following key:

    HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Windows
    
  5. Paste the Device value copied from HKEY_CURRENT_USER (the string value of Device for this key will be empty).

    Note:

    This workaround must be applied every time you alter the value of the Default Printer.

    This workaround will not work on an OPMN-managed Reports Server.

The pros and cons of running an in-process Reports Server are explored in Chapter 2, "Understanding the Oracle Reports Services Architecture". For additional information, see Section 8.3, "Oracle Reports Servlet Configuration File" (server and inprocess parameter descriptions).