Tuning JVM heap size in R12.1.3



Introduction:
Many time we face the performance issue in e-business suite, specially in mid-tier.
And most of the time the issue is memory. JVM fall short of memory. This post will
demonstrate you about how to increase the JVM memory in middle tier.
If some one ask you a question as an APPS DBA, where will you change if you want to
change the memory sizing in middle tier. Without even thinking we should say CONTEXT FILE.
Thats right !!! Every thing in middle tier is controlled by CONTEXT FILE.
E-Business suite has some standard values for JVM memory that it set when you clone the instance.
You can see the memory values in CONTEXT FILE as given below.


Checking the current memory sizing for mid-tier

We have following variables defined in CONTEXT FILE which defines the memory allocation to different components of application.
s_forms_jvm_start_options -> For defining memory allocation for forms.
We will have 2 elements defined for forms: forms_jvm_start_options and forms_jvm_stop_options.

</pre>

<forms_jvm_start_options oa_var="s_forms_jvm_start_options">-server -verbose:gc -Xmx256M -Xms64M -XX:MaxPermSize=128M -XX:NewRatio=2 -XX:+PrintGCTimeStamps -XX:+UseTLAB -XX:+UseParallelGC -XX:ParallelGCThreads=2 -Djava.security.policy=$ORACLE_HOME/j2ee/oacore/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false -Doracle.security.jazn.config=/slot/ems1883/appmgr/inst/apps/ma1st210_rws60051rems/ora/10.1.3/j2ee/forms/config/jazn.xml</forms_jvm_start_options>

<forms_jvm_stop_options oa_var="s_forms_jvm_stop_options">-server -verbose:gc -Xmx256M -Xms64M -XX:MaxPermSize=128M -XX:NewRatio=2 -XX:+PrintGCTimeStamps -XX:+UseTLAB -XX:+UseParallelGC -XX:ParallelGCThreads=2 -Djava.security.policy=$ORACLE_HOME/j2ee/oacore/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false</forms_jvm_stop_options>

<pre>

-Xmx256M -> this mean maximum heap size is 256MB

-Xms64M  -> this mean initial heap size is 64MB

-XX:MaxPermSize -> specifies the the maximum size for the permanent generation heap

Similarly we have the following variables as well for oacore and oafm,
each having start_options and stop_options
s_oacore_jvm_start_options -> For defining memory allocation for oacore.
s_oafm_jvm_start_options   -> For defining memory allocation for oafm.

The above setup if for increasing the JVM size for 1 JVM. You can also increase the number
of JVM processes as well.

-bash-3.00$ grep nproc $CONTEXT_FILE
<frmsrv_nprocs oa_var=”s_frmsrv_nprocs”>1</frmsrv_nprocs>
<forms_nprocs oa_var=”s_forms_nprocs”>2</forms_nprocs>
<oacore_nprocs oa_var=”s_oacore_nprocs”>2</oacore_nprocs>
<oafm_nprocs oa_var=”s_oafm_nprocs”>1</oafm_nprocs>

If you see here we have nproc (number of JVM processes) defined for each of the component.
We can even change number of JVM processes for each component. How to change these
settings … keep reading !!!

Changing the JVM memory size

When you are changing the memory size, once cannot just increase the memory size.
One needs to check what is the current physical memory available on this system.
System I mean to say the host. Also one should see, how many environments are running on that host.

Depending on these factors, you need to come up with memory available to your host.

Example in my case I have a host with 8GB RAM. I have 2 environments available on this host.
 So that gives me 4GB RAM for each instance (Assuming that both the instances are of similar type).
So out of 4GM of physical RAM memory, I will need 1GB for database (my SGA_TARGET is set to 1G).
We are now left with 3GB of RAM memory. Most of the issues and processing goes with oacore.
So its a good idea to concentrate more on oacore and then on forms.
We can set -Xmx for s_oacore_jvm_start_options to 1024 and -Xms & -XX:MaxPermSize to 256M.
That mean 1 JVM process for oacore will not consume 1G memory.
We have defined 2 processes for oacore (s_oacore_nprocs parameter). So for oacore we have allocated 2G memory. We are not left with 1G memory.
Forms having max heap size (-Xmx256M) 256MB and 2 processes defined for the same.
Thats makes 512MB if memory for forms. So remaining 512MB can be allocated to oafm process.
Exmaple s_oacore_jvm_start_options will look as given below.


</pre>

<oacore_jvm_start_options oa_var="s_oacore_jvm_start_options">-server -verbose:gc -Xmx1024M -Xms256M -XX:MaxPermSize=256M -XX:NewRatio=2  -XX:+PrintGCTimeStamps -XX:+UseTLAB -XX:+UseParallelGC  -XX:ParallelGCThreads=2  -Dcom.sun.management.jmxremote -Djava.security.policy=$ORACLE_HOME/j2ee/oacore/config/java2.policy -Djava.awt.headless=true -Dhttp.webdir.enable=false -Doracle.security.jazn.config=/slot/ems1636/appmgr/inst/apps/tkr12r3d_rws60029rems/ora/10.1.3/j2ee/oacore/config/jazn.xml</oacore_jvm_start_options>

<pre>


Once you make the changes in context file, run autoconfig.
This will configure the memory sizing for mid-tier.

Steps:-

How to increase the Java memory settings or add another OA Core Process

From the logs seeing the GC is doing full clean, that happens when the heap is full

367243.151: [Full GC[Unloading class sun.reflect.GeneratedMethodAccessor412]
257650K->241508K(290048K), 0.9727990 secs]

Change these properties
<oacore_jvm_start_options oa_var="s_oacore_jvm_start_options">-server -verbose:gc -Xmx512M -Xms128M

<oacore_jvm_stop_options oa_var="s_oacore_jvm_stop_options">-server -verbose:gc -Xmx512M -Xms128M

-Xmx value to 2048M and -Xms value to 1024M

<oacore_server>

         <oacore_jvm_start_options oa_var="s_oacore_jvm_start_options">-server -verbose:gc -Xmx2048M -Xms1024M -

          <oacore_jvm_stop_options oa_var="s_oacore_jvm_stop_options">-server -verbose:gc -Xmx2048M -Xms1024M -


1. Edit Applications Context file $CONTEXT_FILE.
Location: $INST_TOP/appl/admin/SID_hostname.xml

2. Search for string s_oacore_jvm_start_options.

3. Change Xms and Xmx value. Repeat the same step for parameter s_oacore_jvm_stop_options.

4. Run Autoconfig.



Weblogic server Course contains

Oracle WebLogic Server 11g: Administration Essentials Course contains.


Volume-I

Trainer name: - Sujeet jha

Profile: - Senior Oracle Apps DBA



Mobile: +91 9818627685,070422 90713

Oracle Apps certified professional




1 Introduction
Objectives
Course Prerequisites
Course Objectives
Course Schedule
Facilities in Your Location
Summary

2 Introducing Oracle Fusion Middleware Platform
Objectives
Oracle Fusion Middleware
Oracle SOA and Oracle Web-Center Suites
Oracle Identity and Access Management
Oracle Business Intelligence
Oracle Portal, Forms, and Reports
Web Tier Components
Oracle Fusion Middleware Management Infrastructure
Oracle Coherence: In-Memory Data Grid
Relationship of Fusion Middleware Products to Web-Logic Server
Typical Oracle Fusion Middleware Environment
Summary

Practice 2 Overview: Logging In to the Lab Environment

3 Defining Java Enterprise Edition Terminology and Architecture
Objectives
Distributed Systems
How Standards Help
Java EE Standard
Java EE Architecture
Java Servlets
SimplestServlet.java
JavaServer Pages (JSP)
realsimple.jsp
Enterprise JavaBeans (EJBs)
Java Database Connectivity (JDBC)
Java Naming and Directory Interface (JNDI)
JNDI Tree
JNDI Contexts and Sub-contexts
Java Transaction API (JTA)
Java Message Service (JMS)
Java Authentication and Authorization (JAAS)
Java Management Extension (JMX)
Java EE Connector Architecture (JCA)
Client Application
Web Client
Proxy Server
Web Server
Firewalls
Application Servers
Web Application Server Configuration
Application Server Configuration

Practice 3 Overview: Defining Terminology and Architecture

4 Installing Oracle Web-Logic Server 11g
Objectives
Road Map
Oracle Web-Logic Server Installation
System Requirements
GUI Mode Installation
Choosing or Creating a Home Directory
Registering for Support
Choosing an Installation Type and Products
Choosing the JDK and Product Directory
Installation and Summary
Quick-Start
Road Map
Console and Silent Mode Installations
Post installation: Oracle Home
Oracle Web-Logic Server Directory Structure
Setting Environment Variables
Defining Environment Variables
List of Environment Variables and Their Meanings
Specialized Installations
Downloading Software from OTN
Practice 3 Overview: Installing Oracle WebLogic Server 11g



5 Configuring a Simple Domain
Objectives
Domain: Overview
Domain Diagram
Configuring a Domain
Starting the Domain Configuration Wizard
Creating a Domain Using the Domain Configuration Wizard
Creating a New WebLogic Domain and Selecting the Domain Source
Configuring Administrator Settings
Configuring Startup Mode and JDK
Customizing Optional Configuration
Configuring the Administration and Managed Servers
Configuring Clusters and Assigning Servers to Clusters
Creating an HTTP Proxy Application and Configuring Machines
Assigning Servers to Machines
Configuring JDBC Data Sources
Testing Data Source Connections
Running Database Scripts
Configuring the JMS File Store
Customizing Application and Service Targeting Configuration
Configuring RDBMS Security Store Database
Reviewing the WebLogic Domain
Creating the WebLogic
Domain Directory Structure
JVM Run-Time Arguments
Oracle WebLogic Server Dependencies
Configuring CLASSPATH
Starting Oracle WebLogic Administration Server
Starting Administration Server Using startWebLogic.sh
Starting the Administration Server by Using the java weblogic.Server
Stopping the Administration Server
Practice 5 Overview: Configuring a Simple Domain

6 Configuring a Domain Using Templates
Objectives
Custom Domain Templates
Domain Template Builder
Creating a Domain Template
Comparing Domain Templates
wls.jar Template
MedRecTemplate.jar Template
Extending an Existing Domain
Select Which Existing Domain to Extend
Select What You Want to Extend it With
Resolving Conflicts
Summary before Extending
Templates for SOA, JDeveloper, and Others
oracle.soa_template_11.1.1.jar Template
WLS Configuration in the Context of Other Products in the Fusion Middleware
Suite
RCU
SOA Installation
Practice 6 Overview: Using a Domain Template


7 Using Administration Console and WLST
Objectives
Benefits of Using the Administration Console
Accessing the Administration Console
Administration Console Login
Basic Navigation
Using the Help System
General Administration Console User Preferences
Advanced Console Options
Setting Basic Properties
Administration Console Monitoring
Configuration Change Management
Configuration Change Management Using the Administration Console Change
Center
Domain Configuration Repository
Configuration Change Process
Configuration Management Architecture
XML Schema for config.xml
WebLogic Scripting Tool (WLST)
Jython
Using Jython
WLST Modes
WLST Example
WLST Command Requirements
Running WLST Scripts
Importing WLST as a Jython Module
General WLST Commands
Offline WLST Commands
Creating a Domain: Example
Online WLST Commands
WebLogic JMX: Overview
Navigating JMX MBeans
Generating a WLST Script
Practice 7 Overview: Using the Administrative Console and WLST


8 Configuring Managed Servers
Objectives
Configuring Managed Servers
Creating a Managed Server with WLST
Starting Oracle WebLogic Managed Servers
Starting a Managed Server Using startManagedWebLogic.sh
Command-Line Requirements for Starting the Managed Server Using java
weblogic.Server
Starting a Managed Server Using the Administration Console
Shutting Down a Server
Shutting Down a Domain
Creating a Boot Identity File
Monitoring All Servers
Customizing the View for All Servers
Monitoring Individual Servers
Demonstration
Creating a Managed Server on a Remote Computer
pack and unpack: Examples
Managed Server Independence (MSI)
MSI Search Order
When the Administration Server Is Down
Running Multiple WLS Instances
Practice 8 Overview: Configuring a Managed Server

9 Configuring Node Managers
Objectives
Road Map
What Node Managers Can Do
Road Map
What Is a Machine?
Relationship of Machines to Other Components
Creating a Machine
Defining Names and OS of Machines
Assigning Servers to a Machine
Monitoring Machines and Servers
Configuring a Machine to Use a Node Manager
Node Manager Architecture
How a Node Manager Starts an Administration Server
How a Node Manager Starts a Managed Server
How a Node Manager Restarts an Administration Server
How a Node Manager Restarts a Managed Server
How a Node Manager Shuts Down a Server Instance
Versions of Node Managers
Node Manager Default Behaviors
Configuring a Java-Based Node Manager
Reconfiguring the Startup Service for a Windows Installation
Node Manager as a UNIX Daemon
Reviewing nodemanager.properties
Configuring a Script-Based Node Manager
Creating Management OS Users
Additional Configuration Information
Configuring the nodemanager.domains File
Defining the Administration Server Address
Setting Node Manager Environment Variables
Node Manager Configuration and Log Files
Practice 9 Overview: Configuring Machines and Node Managers





10 Viewing and Managing Logs in Oracle WLS Environment
Objectives
Oracle WebLogic Server Logs
Server and Domain Logs
Configuring Server Logging
Configuring Server Logging: Advanced
HTTP Access Logs
Apache Commons Logging API
Using the Console to View Logs
Using WLST to View Logs
Message Attributes
Message Severity
Message Catalog Using the Web
Message Catalog Cross-Reference
Log Filters
Creating a Log Filter
Applying a Log Filter
Using the Console to Monitor
Monitoring Running Servers
Customizing Views
Monitoring Individual Servers
Network-Addressing Environment
Network-Addressing Features
Practice 10 Overview: Viewing and Managing WLS Logs 10-30

11 Deployment Concepts
Objectives
Road Map
Overview of Deployment
What Is Deployed?
Deployment Process
Deployment Methods
Deployment Tools
Console Deployment Method
Console Deployment Production Mode
Preparing a New Application
Preparing a New Application: Targeting
Preparing a New Application: Settings
Deploying or Un-deploying Applications
Redeploying an Application
Starting and Stopping an Application
Editing Deployment Descriptors
Monitoring an Application
Application Testing
Deleting Applications
Command-Line Deployment
Deployment with weblogic.Deployer
More weblogic.Deployer Examples
Deploying Applications with WLST
Deploying an Application with WLST
Deployment with WLST
Road Map
Production Mode Flag
Auto deployment
Auto deploying using an Expanded Directory
Fast Swap and On-Demand Deployment
Role of Web Servers
A Typical Web Interaction
MIME Types
HTTP Status Codes
Static Content
Dynamic Content
Configuring Oracle HTTP Server to Serve Multiple WebLogic Servers
mod_wl_ohs.conf
Verifying Ports Used by OHS

12 Deploying Java EE Applications
Objectives
Road Map
Java EE Web Applications
Packaging Web Applications
Web Application Structure
Web Application Archive
Optional Configuration of Web Applications
web.xml
weblogic.xml
weblogic.xml Deployment Descriptor
URLs and Web Applications
Web Service Applications
Virtual Directory Mappings
Virtual Directory Mapping: Example
Road Map
EJB Applications
Types of EJBs
EJB Application Structure
weblogic-ejb-jar.xml
Administrator Tasks with EJBs
What Is an Enterprise Application?
Typical Java EE System
Java EE Enterprise Application
Why Enterprise Applications?
Enterprise Application Structure
weblogic-application.xml
Application Scoping
EAR Class Libraries
Java EE Library Support
WebLogic Java EE Shared Libraries
Shared Library References
Practice 12 Overview: Web Application Deployment Concepts



13 Advanced Deployment
Objectives
What Is a Deployment Plan?
Configuring an Application for Multiple Deployment Environments
Sample Deployment Plan
Creating a Deployment Plan
Creating a New Deployment Plan
weblogic.PlanGenerator
Using the Administration Console to Generate a Deployment Plan
Modifying and Saving Data to Create a New Plan
New Deployment Plan Shows Changed Values
Using an Existing Deployment Plan to Configure an Application
Using an Existing Deployment Plan
Directory Structure for Easier Production Deployment
Generic File-Loading Overrides
Performing a Sanity Check in Production With-out Disruption to the Clients
Road Map
Staged Deployment
Application Availability
Production Redeployment and Application Versioning
Web-Logic Production Redeployment
Production Redeployment
Advantages of Production Redeployment
Requirements and Restrictions for Production Redeployment
Redeploying a New Application Version
Redeploying Versus Distributing
Distributing a New Version of the Production Application
Distributing a New Application Version
Production Redeployment 13-36
Practice 13 Overview: Deploying Production Applications

14 Understanding JDBC and Configuring Data Sources
Objectives
JDBC Review
JDBC Data Sources
Data Source Scope
Multi-Tier Architecture
Type 4 Drivers
Web-Logic JDBC Drivers
What Is a Connection Pool?
JDBC Connection Pooling
Benefits of Connection Pools
Modular Configuration and Deployment of JDBC Resources
How Data Source Connection Pools Are Used
Creating a Data Source Using the Administration Console
Non-XA Configuration
Data Source Connection Properties
Test Configuration
Connection Pool Configuration
Connection Pool Advanced
Targeting a Data Source
Viewing the Server JNDI Tree via the Administration Console
Listing the JNDI Contents Via WLST
Demonstration
JDBC URLs
Connection Properties
Specifying Connection Properties
Monitoring and Testing a Data Source
Connection Pool Life Cycle
Fixing an Offline Data Source
Practice 14 Overview: Configuring JDBC Data Sources

15 Setting Up Java Message Service (JMS) Resources
Objectives
Message-Oriented Middleware
Point-To-Point Queue
Publish/Subscribe Topics
Oracle Web-Logic Server JMS Features
Web-Logic JMS Architecture
Typical JMS Messaging Process
Transacted Messaging
JMS Administrative Tasks
Oracle WLS JMS Implementation
Creating a JMS Server
Configuring a JMS Server
Targeting a JMS Server to a Managed Server
JMS Modules
Creating a JMS Module
Modular JMS Resource Configuration and Deployment
Connection Factories
Creating a Connection Factory
Configuring a Connection Factory
Destination
Queue Destinations
Topic Destinations
Creating a Destination (Topic)
Threshold, Quota, and Paging
Configuring Thresholds and Quotas
Durable Subscribers and Subscriptions
How a Durable Subscription Works
Configuring a Durable Subscription
Persistent Messaging
Creating a JMS Store
Creating a JDBC Store for JMS
Creating a JMS JDBC Store
Assigning a Store to a JMS Server
Persistent Connection Factory
Configuring Destination Overrides
Monitoring JMS Servers
Monitoring and Managing Destinations (Active Queues and Topics)
Monitoring Queues
Managing Messages in a Queue
Practice 15 Overview: Configuring JMS Resources

16 Introductions to Clustering
Objectives
What Is a Cluster?
Benefits of Clustering
What Can Be Clustered
Proxy Servers for HTTP Clusters
High Availability for EJBs
Selecting a Cluster Architecture
Cluster Architecture
Basic Cluster Architecture
Basic Cluster Architecture: Advantages and Disadvantages
Multitier Cluster Architecture
Multitier: Advantages and Disadvantages
Basic Cluster Proxy Architecture
Multitier Cluster Proxy Architecture
Proxy Web Server Plug-In Versus Load Balancer
Proxy Plug-Ins
OHS as Proxy Web Server
Request Flow When Using OHS
WLS HttpClusterServlet
Server Communication in a Cluster
One-To-Many Communications
Considerations When Using Unicast
Peer-To-Peer Communications
Cluster wide JNDI Naming Service
Name Conflicts and Resolution

17 Configuring a Cluster
Objectives
Preparing Your Environment
Hardware
IP Addresses and Host Names
Cluster Address
Methods of Configuring Clusters
Creating a Cluster by Using the Administration Console
Setting Cluster Attributes
Configuring Cluster Communication
Adding Cluster Members: Option 1
Adding Cluster Members: Option 2
Creating a Cluster with the Configuration Wizard
Creating a Cluster Using the Cluster MBean
Clusters and WLST
Synchronizing When Starting Servers in a Cluster
Configuring OHS as Proxy Server
Starting and Stopping OHS Manually
Verifying Access Through OHS
Successful Access of OHS Splash Page
Summary
Practice 17 Overview: Configuring Clusters

18 Managing Clusters
Objectives
Deploying Applications to a Cluster
Two-Phase Deployment
Considerations for Deploying to Cluster
Production Redeployment in a Cluster
Road Map
HTTP Session Failover
HTTP Session State Replication
HTTP Session In-Memory Replication
In-Memory Replication and Proxy Servers
In-Memory Replication
In-Memory Replication: Example
Requirements for In-Memory Replication
Configuring In-Memory Replication
Failover with Load Balancer
Replication Groups
Configuring Replication Groups
Replication Groups for Different Criteria
HTTP Session Persistence Using JDBC
Configuring JDBC Persistence
JDBC Persistent Table Configuration
HTTP Session Persistence Using Files
Configuring File Persistence
HTTP State Management Best Practices
Clustering EJB Objects: Replica-Aware Stub
EJB: Server Failure Situations
Load-Balancing Clustered EJB Objects
Stateless Session Bean Failover
Configuring EJB Clustering in Deployment Descriptors
Configuring EJB Clustering Using the Administration Console
Configuring Cluster able Stateless Session EJBs
State-ful Session Beans
Configuring Cluster-able State-ful Session EJBs
Read/Write Versus Read-Only -
Entity Bean Cluster-Aware Home Stubs -
EJB Best Practices -
Practice 18: Overview Managing Clusters

19 Security Concepts and Configuration
Objectives
Introduction to Oracle Web-Logic Security Service
Oracle Platform Security Services
Oracle WLS Security Architecture
Security Services
Overview of Security Concepts
Confidentiality
Credential Mapping
Security Realms
Security Model Options for Applications
How WLS Resources Are Protected
Users and Groups
Configuring New Users
Groups
Configuring New Groups
Configuring Group Memberships
Embedded LDAP Server
Configuring an Embedded LDAP
Security Roles
Configuring the Global Security Role
Security Policies
Policy Conditions
Protecting Web Applications
Specifying Protected Web Resources
Defining Policies and Roles for Other Resources
Configuring Authentication
Authentication Examples
Migrating Security Data
Exporting the WLS Default Authenticator Provider
Importing into a Different Domain
Summary
Practice 19: Overview Configuring Security for WLS Resources

20 Protecting Against Attacks
Objectives
Road Map
What Is SSL?
Trust and Identity
Using an SSL Connection
Enabling Secure Communication
Oracle WebLogic Server SSL Requirements
keytool Utility
Obtaining a Digital Certificate: keytool Examples
Configuring Keystores
Configuring SSL for an Oracle WebLogic Server
Road Map
Protecting Against Attacks
 Man-in-the-Middle Attacks
Man-in-the-Middle: Countermeasures
Configuring a Hostname Verifier
Denial of Service Attacks
Denial of Service Attacks: Countermeasures
Filtering Network Connections
Connection Filter
Excessive Resource Consumption
Large Buffer Attacks
Setting the Post Size
Connection Starvation
User Lockout
Configuring User Lockout
Unlocking Users
Protecting the Administration Console
Summary
Practice 20: Overview Configuring Keystores

21 Backup and Recovery Operations
Objectives
Review of Terms and Components
Homes: Oracle, Middleware, WebLogic
Understanding Backup and Recovery
Types of Backups
Backup Recommendations
Limitations and Restrictions for Backing up Data
Performing a Full Offline Backup
Backing Up a Domain Configuration
Backing Up an Instance Home
Creating a Record of Installations
Directories to Restore
Recovery after Disaster
Recovery of Homes
Recovery of a Managed Server
Recovery of the Administration Server Configuration
Restarting an Administration Server on a New Computer
Recovery of a Cluster
Restoring OPMN-Managed Components to a New Computer
Summary

Practice 21 Overview: Backing Up and Restoring Configuration and Data 

ORA-00059: Maximum Number Of DB_FILES Exceeded in 19C database

When I am adding datafile to my 19C database facing the below error. SQL> alter tablespace DATA  add datafile '/u01/data/data15.dbf&#...