Preventing Forms 11g Memory Jump after RUN_REPORT_OBJECT by Using a JVMCONTROLLER
Preventing Forms 11g Memory Jump after RUN_REPORT_OBJECT by Using a JVMCONTROLLER
Titleimage
Posted by Patrick Hamou on 2017:09:26 16:27:50
APPLIES TO: Oracle Reports Developer, Oracle Forms
Oracle Reports Developer - Version 11.1.1.1.0 and later
Oracle Forms - Version 11.1.1.1.0 and later
Information in this document applies to any platform.
Applies to Forms and Reports 11g
GOAL - Preventing Forms 11g Memory Jump, RUN_REPORT_OBJECT (RRO)
In 10g, the JVM pooling feature could only be used by the Java Importer. For this reason, methods such as the one mentioned in NOTE 266073.1 were needed to reduce memory usage when using RUN_REPORT_OBJECT (RRO). However, in 11g, with JVM pooling enabled, Oracle Forms Services uses a shared JVM controller for Oracle Reports requests resulting in less overall memory usage. Here is a method for configuring a jvmcontroller to start when a form using RRO is called via a specific formsweb.cfg configuration section.
SOLUTION - Oracle Enterprise Manager Fusion Middleware Control 11g
Note: The screen shots shown here are from an 11g install on Windows. The configuration on an 11g UNIX installation is very similar. However, some obvious differences on UNIX are that there is no Windows Task Manager to show the dejvm process and the delimiters in the CLASSPATH are colons (:) as opposed to semi-colons (;).
First, create a new RRO specific jvmcontroller. Bring up Oracle Enterprise Manager Fusion Middleware Control 11g (EM) and open the JVM Configuration option as indicated below:
2. Use the “Create Like” option to create a new jvmcontroller configuration called “repjvmc” like the “example” configuration.
3. In this example, the following parameters where used in jvmcontroller “repjvmc”
jvmoptions = -Xms512m -Xmx1024m #Stands for initial heap and max heap. Normally you should not need to modify these.
classpath = ORACLE_HOME\jlib\zrclient.jar;ORACLE_HOME\reports\jlib\rwrun.jar # Replace ORACLE_HOME with your actual directory. These .jar files are needed for RRO.
maxsessions = 50 # Specifies how many Forms runtime processes are allowed to attach to a JVM before a new child JVM is created.
logdir = #The directory for the jvmcontroller log files. For this jvmcontroller, the file will be called repjvmc.log as the log file is named after the jvmcontroller.
Logging = on #Recommend leaving “on” until verification that all is working okay. Then turn on only when necessary.
4. If not already set, recommend setting the value of “allowJVMControllerAutoStart” to “true” in the default section of the formsweb.cfg
5. In the default section of the formsweb.cfg, add “jvmcontroller=%jvmcontroller%” to the value of “otherparams”. For example ->
otherparams=obr=%obr% record=%record% tracegroup=%tracegroup% log=%log% term=%term% ssoProxyConnect=%ssoProxyConnect% jvmcontroller=%jvmcontroller%
6. One can directly reference a particular jvmcontroller in a Forms url by specifying a parameter like “…..&otherparams=jvmcontroller=repjvmc” for our case here. However, in this example we will configure a specific jvmcontroller to be associated with a particular formsweb.cfg configuration section called “reportsjvm”.
To do this we set the otherparams parameter in the “reportsjvm” configuration section as follows:
obr=%obr% record=%record% tracegroup=%tracegroup% log=%log% term=%term% ssoProxyConnect=%ssoProxyConnect% jvmcontroller=repjvm
Note that the following image only shows the last part of the line.
7. Run a form that calls reports via RRO using the config section that you created - “reportsjvm”
http://machine.domain:port/forms/frmservlet?config=reportsjvm
8. Once you accomplish your RRO call to reports in your form, you will see the jvmcontroller process start as indicated by the following
a. A dejvm process will start as is shown by the windows task manager image below:
b. From the Forms -> JVM Controllers option in EM, you will see the following:
c. You can click on the eyeglasses icon to the right of your jvmcontroller and see information like the following:
IMPORTANT NOTE: Before restarting the Oracle WebLogic managed server, all the JVM Controller processes (dejvm) started by that server must be stopped. Otherwise, WLS_FORMS will not restart after a shutdown. See Stop dejvm Before Stopping and Restarting WLS_FORMS
10.8.5 Starting and Stopping JVM Controllers with Fusion Middleware Control
and
10.7 Managing JVM Controllers from the Command Line
Note also: If too much memory is consumed, then the Reports Server can hang. If this is the case, you will see the following in the system event log:
"Error in BIO read. Program will now exit" and / or "Resource-Exhaustion-Detect"
Posted by Patrick Hamou on 2017:09:26 16:27:50