Tuesday, 6 March 2012

Service Oriented Architecture Concepts



XML,XSD,Xpath,Xslt
W/S, WSDL,SOAP        

Intro to SCA - Architecture
   . Logical
   . Physical
Intro to MDS (Mata Data Store)
Intro to Dehyderation Store


BPEL (Business Process Execution Language)
  *  Language Structure
        .  Partnerlinks
        .  Process
        .  scope, compensation block
        .  variables
        .  Sequence
        .  Activities
  
   *   SCA with Simple BPEL with request reply activities
   *   SCA with BPEL and reference
   *   Using assign activity
   *   Expressions
   *   Swithch/Case
   *   Looping
  
   *   Difference b/w Sync and Async BPEL

   *   Fault Handling
          .  Fault types
          .  BPEL System faults
          .  Creating and raising custom fault
          .  Creating fault in WSDL
          .  Catch all and catch specific fault
          .  Fault policy
               .  Human intervention action
               .  Retry action
               .  and introduction to Java actionand other remaining actions
          .  Fault binding
               .  Composite and component level
          .  Fault handling in Sync BPEL
          .  Fault handling in Async BPEL
          .  Industry Best practices


    *   Correlation
    *   Dynamic Partner link
    *   Parallel processing
    *   Working with preference properties
    *   Transaction Management
        .  Introduction 2-phase commit.
           XA (Global Transaction)
        .  Transactions in Sync BPEL / invokes
        .  Transactions in Async BPEL / invokes
        .  Transaction controlling properties
        .  Check point
        .  Roll back fault
        .  Industry best practices

    *   Compensation
        . Why compensation
        . How to compensate
        . Compensation block of scope
        . Compensating scope
        . Industry best practices

    *   Pick activity
        .  Pick
        .  On message
        .  On timer (SLA implementation)
        .  wait activity

    *   Working with email notifications
        . congifuguring email server
        . working with email notification activity

    *   Introduction to Adapters (JCA architecture)
    *   DB Adapter
        .  Introduction to DB adater
        .  Configuring Data source
        .  What is multi data source
        .  Configuring DBAdapter connection factory
        .  Performing CRUD (Create Read Update and Delete) on table
        .  Calling stored procedure
        .  Introduction to Wrapper packages
        .  Polling
             .  Delete and logical delete strategy
             .  Debatching
             .  fine tuning polling configuration
                  . Transaction management
                  . Tuning polling interval
        .  DB Adapter best practices
        .  Execute plain SQL statement
    *   Oracle Apps Adapter
        . Introduction to Apps adapter
        . Configuring Apps Adapter - CF
        . Introduction to Business events
        . Using business events
        . Introduction to XML Gateway
    *   JMS Adapter
        .  Introduction to JMS
        .  Configuring JMS Adapter
              .  Configuring persistent store
              .  Configuring JMS server
              .  Configure JMS Module
              .  Configure JMS Q CF
              .  Configure JmS Q
              .  Configure JMS topic
              .  Configuring JMSAdapter CF
        .  Introduction to JMS operations
        .  Publishing a message to JMS Q
        .  Consuming a message from JMS Q
        .  Introduction to Opaque Schema
    *   Introduction to AQ and MQ
    *   File Adapter
        . Introduction to file adapter
        . Native Schema
             . CSV (Comma seperated value)
             . Fixed length
             . Introduction to cobol copy book
        . Physical Directory & Logical directory
        . Writing to a file
        . Dynamic file name
        . Reading from a file
        . De batching
    *  Introduction to FTP

    *  Human Workflow
       . Introduction to HW
       . Configuring users and groups
       . Introduction to worklist app
       . Create simple Human approval task
       . Generate ADF screens for Human task
       . Deploying ADF application (Human Task)
       . Working with HT (Approve/reject and etc.,)

    *  Signal Concept in BPEL
       .  Understanding Master & worker BPEL processes
       .  Sending signal from Master BPEL
       .  Receiving signal in worker BPEL
       .  Sending signal from worker BPEL
       .  Receiving signal in master BPEL
       .  Best practices

    *  Mediator
       . Introduction to mediator
       . Working with routing rule
       . Working with filter condition

    *  Business Rules
       .  Introduction to business rules
       .  Working with Facts
       .  Working with Rules and rule sets
       .  Introduction to decission table
       .  BPEL to invoke BR
       .  Working with BR run time (SOA composer)
  
    *  EDN (Event Driven Network Model)
       .  Introduction to EDN
       .  Defining events
       .  Rasing event from Mediator
       .  Rasing event from BPEL
       .  Receiving event from BPEL
       .  Receiving event from Mediator

   *   Sensors
       .  Introduction to sensors
       .  Sensors at composite level
       .  Creating BPEL activity sensor
       .  Creating BPEL variable sensor
       .  Creating BPEL JMS sensor action
       .  Introduction to other sensor actions
       .  Industry best practices

   *   BAM (Business Activity Monitoring)
       .  Introduction to BAM
       .  Configuring BAM Adapter
       .  Using BAM console
           . Using Architect console to create BAM              
             objects
           . Using report console to create BAM               
             report
           . Using active viewer console to view              
             BAM Report
           . Using BAM adapter in BPEL to populate              
             BAM objects
           . Introduction / configure BAM message              
             source
           . Industry best practices

   * SOA Reference Architecture

   * Introduction to B2B

   * Intro to Web logic administration

   * Possible ways of deploying SCA

   * Introduction to customization of SCA      
     deployment (deployment migration)

UserWarning: MDS-91002: MDS Application runtime MBean for "soa-infra" is not available. "deleteMetadata" operation failure


You are trying to clean up the MDS using below steps:
  1. Execute SOA_HOME/common/bin/wlst.sh
  2. Connect to admin server by running connect()
  3. Enter the domain config by running domainConfig()
  4. Delete Metadata by running deleteMetadata('soa-infra', 'soa_server1','/apps/AIAMetaData/**')


You encounter below error:


UserWarning: MDS-91002: MDS Application runtime MBean for "soa-infra" is not available. "deleteMetadata" operation failure


The SOA Managed Server is up and so s the SOAINFRA. What could be the possible reason?


The reason for the above error is the name of the managed server used. In case your admin renamed the default managed server on which SOA is deployed (the default name is soa_server1) you would get the above stated error.


So in case you get the above error, check with your admin the name of the SOA managed server. So in case your SOA managed server name is SOA_MS_1, the MDS purge command would be as follows:


deleteMetadata('soa-infra', 'soa_ms_1','/apps/AIAMetaData/**')

The default CharSet ISO-8859-1 is not a unicode character set warning while starting SOA Managed server


ISSUE:

You get the following warning message while trying to start Admin/managed server for SOA Suite 11g.The message can be seen on the .out file:

Solution (Enabling Unicode Support)
Your operating system configuration can influence the behavior of characters supported by Oracle SOA Suite.On a UNIX operating system, Oracle highly recommends that you enable Unicode support by setting the LANG and LC_ALL environment variables to a locale with the UTF-8 character set. This enables the operating system to process any character in Unicode. SOA technologies are based on Unicode.If the operating system is configured to use a non-UTF-8 encoding, SOA components may function in an unexpected way. For example, a non-ASCII file name can make the file inaccessible and cause an error. Oracle does not support problems caused by operating system constraints.

In a design-time environment, if you are using Oracle JDeveloper, select Tools -> Preferences -> Environment -> Encoding -> UTF-8 to enable Unicode support.

Set locale to UTF-8
Login to the UNIX Box and type below commands
export LANG=”en_US.UTF-8”
export LC_ALL=”en_US.UTF-8”

Check the locale settings now by typing locale command>

bash-3.00$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=en_US.UTF-8

SOA 11g Configuration Files and Log Files Location


Applies to:

Oracle SOA Platform - Version: 11.1.1.1.0 and later   [Release: 11gR1 and later ]
Information in this document applies to any platform.

Goal


The intent of this note is to list the important configuration and log files used to diagnose SOA 11g problems.

Solution

Throughout this note we will refer to the following:
- $ MIDDLEWARE_HOME =
- $ DOMAIN_HOME = $ MIDDLEWARE_HOME/user_projects/domains/

Here is a list of files to look for:
1.Domain configuration under 
$DOMAIN_HOME/config  directory
   - Config.xml
   - jdbc/-Jdbc.xml
   - jms/-Jms.xml files under

2. Adapter configuration under 
$MIDDLEWARE_HOME//soa/connectors/   directory. ( Oracle_SOA1 is the default name)
  - AppsAdapter.rar
  - DbAdapter.rar
  - FtpAdapter.rar
  - MQSeriesAdapter.rar
  - SocketAdapter.rar
  - AqAdapter.rar
  - FileAdapter.rar
  - JmsAdapter.rar
  - OracleBamAdapter.rar
If you are experiencing problems related to the adapter, please send us the appropriate adapter's rar file.
Also provide the Adapter's deployment plan (Plan.xml).

3. Admin Server log files under 
$DOMAIN_HOME/servers//logs  directory
 - Access.log
 - -Diagnostic.log
 - .log

4. SOA Server log files under 
$DOMAIN_HOME/servers//logs  directory
 - . log
  - -Diagnostic.log
  - .log 

Configure Transaction Timeout for BPEL on SOA 11g


Applies to:

Oracle SOA Platform - Version: 11.1.1.1.0 to 11.1.1.5.0 - n Above

Goal

During runtime you may be seeing errors in the log similar to the following:

The transaction was rolled back
or
Transaction Rolledback.: weblogic.transaction.internal.TimedOutException: Transaction timed out

The solution is typically to increase the transaction timeout for the process.  

Solution

As a general rule, you should keep the following relation between the timeout parameters:

syncMaxWaitTime < BPEL EJB's transaction timeout < Global Transaction Timeout
Note: This recommendation are ONLY applicable to Sync Processes. Additionally the default Timeout setting that comes with SOA 11g installation does not comply with this rule. You might need to adjust the setting according to your particular business needs.

1. Setting syncMaxWaitTime:

This property controls the maximum time the process result receiver will wait for a result before returning for Sync processes.

For SOA 11g R1 PS1 (11.1.1.1.0 to 11.1.1.5):
* Login into EM
* Expand SOA and right click on "soa-infra" and select: SOA Administration -> BPEL Properties
* Click on "More BPEL Configuration Properties..." link
* Locate syncMaxWaitTime and change it.


-- Alternative Method -- For SOA 11g R1 (11.1.1.1.0) ONLY:
* Take backup of bpel-config.xml, located at: /user_projects/domains//config/soa-infra/configuration/.
* Open the bpel-config.xml file.
* Edit the value for the syncMaxWaitTime property.
* Save the changes.
* Restart Oracle WebLogic Server.

Note: Since 11.1.1.2, bpel-config.xml is no longer available into the file system and therefore the only chance for modification is through EM Console.


2. Setting the transaction timeout for BPEL EJBs:
The timeout properties for the EJBs control the particular timeout setting for the SOA application, overriding the global setting specified by the JTA timeout (See step 3).

Note: Prior implement next steps, ensure to shutdown SOA managed server. Otherwise you will get errors, see following document for details Note 1271369.1




* Log into Oracle WebLogic Administration Console.
* Click Deployments.
* Expand soa-infra -> EJBs.
* Following EJBs need to be updated:
BPELActivityManagerBean
BPELDeliveryBean
BPELDispatcherBean
BPELEngineBean
BPELFinderBean
BPELInstanceManagerBean
BPELProcessManagerBean
BPELSensorValuesBean
BPELServerManagerBean
* You can change the parameter in the Configuration tab for the Transaction Timeout setting.
* Click Save.
* Save the Plan.xml to some known location
* Start SOA Managed Server


3. Setting the global transaction timeout at Weblogic Domain Level:


This property controls the transaction timeout seconds for active transactions. If the transaction is still in the "active" state after this time, it is automatically rolled back.


   * Log into Oracle WebLogic Administration Console.
   * Click Services -> JTA.
   * Change the value of Timeout Seconds (the default is 30).
   * Click Save.
   * Restart Oracle WebLogic Server.

How to Check Fusion Middleware and WebLogic Component Versions



Oracle Fusion Middleware - Version: 11.1.1.1.0 to 11.1.1.5.0 - Release: to Oracle11g
Information in this document applies to any platform.

Goal
This document describes how to determine the versions of installed Fusion Middleware Components and Weblogic Server.

Note:
Fusion Middleware components including WebLogic Server, RCU, and components such as SOA, Identity Management, Portal-Forms-Reports-Discover, and JDeveloper must have concordant versions. This affects configuration, but not installation, and can cause a variety of failures, including ClassDefNotFound exceptions when trying to configure a new domain or managed server.


1. To determine the WebLogic Server version. There are several ways to confirm the version:
  •  Enter this command with the weblogic environment enabled:
$ java weblogic.version

  • Look in the file Middleware Home/registry.xml, and note the component tag
  • The exact WLS version can be checked using the following commands:

    On Unix:
cat $MW_HOME/wlserver_10.3/.product.properties | grep WLS_PRODUCT_VERSION

On Windows:
type %MW_HOME%\wlserver_10.3\.product.properties | findstr WLS_PRODUCT_VERSION
  • Use SmartUpdate to check the Product Version:

    On Unix:
$MW_HOME/utils/bsu/bsu.sh -view -status=applied -prod_dir=$MW_HOME/wlserver_10.3 | grep ProductVersion

On Windows:
%MW_HOME%\utils\bsu\bsu.sh -view -status=applied -prod_dir=$MW_HOME\wlserver_10.3 | findstr ProductVersion

You should see a result such as this:
ProductVersion: 10.3 MP5

2. For JDeveloper, look in the Middleware Home/registry.xml file for the following:


3. For Fusion Middleware products, use the command Oracle Home/Opatch/opatch lsinventory and note the output:
Installed Top-level Products (2):

Application Server 11g SOA Patchset 11.1.1.3.0
Oracle SOA Suite 11g 11.1.1.2.0
There are 2 products installed in this Oracle Home.


4. For the MDS version, look in the file RCU Home/rcu/log/logdir./mds.log:
REPOS_VERSION CONSTANT VARCHAR2(32) := '11.1.1.56.27' (this is for 11.1.1.3)

To get the schema version from the database, login to the database as sysdba and enter the command as shown (example here for 11.1.1.3):
SQL> select comp_id, comp_name, version from schema_version_registry;

COMP_ID
------------------------------
COMP_NAME
--------------------------------------------------------------------------------
VERSION
------------------------------
IAU
Audit Service
11.1.1.3.0

MDS
Metadata Services
11.1.1.2.0

OID
Oracle Internet Directory
11.1.1.3.0

OIF
Oracle Identity Federation Database Schema
11.1.1.2.0

ORAESS
Enterprise Scheduler Service
11.1.1.2.0

ORASDPLS
SIP Infrastructure Location Service
11.1.1.2.0

ORASDPSDS
SIP Infrastructure Subscriber Data Service
11.1.1.2.0

ORASDPXDMS
Presence
11.1.1.2.0

8 rows selected.

You can also get the schema prefix from the database using the following command:
SQL> select username, created from dba_users order by 2;

USERNAME CREATED
------------------------------ ---------
OE 12-MAY-10
SH 12-MAY-10
BI 12-MAY-10
PM 12-MAY-10
TEST01_MDS 21-JAN-11
TEST01_IAU 21-JAN-11
TEST01_IAU_APPEND 21-JAN-11
TEST01_IAU_VIEWER 21-JAN-11
TEST01_ORAESS 21-JAN-11
ODS 21-JAN-11
ODSSM 21-JAN-11

USERNAME CREATED
------------------------------ ---------
TEST01_OIF 21-JAN-11
TEST01_ORASDPXDMS 21-JAN-11
TEST01_ORASDPLS 21-JAN-11
TEST01_ORASDPSDS 21-JAN-11

Weblogic Server Development Mode Vs Production Mode


While configuring any Weblogic domain the there are two modes the domain can be configured with.
- Development Mode
- Production Mode

The question is how to decide which mode to use:
Let’s say you are developing your applications. The process will involve multiple redeployments to the server. In this case you would wish for a relaxed security configuration on the server. Also you would wish for features like auto deployment of your code. In such scenarios use the Development Mode.

Now consider you got your application working right, ready to go live. In this mode you would definitely wish for a full fledged security. Consider using the Production Mode here.
The differences between the two modes are stated below:

1.       SSL
In development mode you can use the demonstration digital certificates and the demonstration keystores provided by the WebLogic Server security services. With these certificates, you can design your application to work within environments secured by SSL where as in Production Mode you should not use the demonstration digital certificates and the demonstration keystores. If you do so, a warning message is displayed.

2.       Application Deployment
In Development Mode WebLogic Server instances can automatically deploy and update applications that reside in the domain_name/autodeploy directory (where domain_name is the name of a domain) where as in Production Mode the auto-deployment feature is disabled, so you must use the WebLogic Server Administration Console, the weblogic.Deployer tool, or the WebLogic Scripting Tool (WLST).
3.   
     Lock And Edit Feature
In Development Mode any configuration change being done by a user doesn’t need him to take a Lock and Edit session, where as in Production Mode the user needs to procure a Lock and Edit session before trying to make any configurational changes.

Important Considerations:

  It is recommended that this method be used only in a single-server development environment.
  You can always switch the domain startup mode from Development to Production and Vice Versa
  Oracle recommends usage of JRockit instead of Sun JDK in Production Mode. This recommendation depends on platform on which your domain runs. For platforms like Solaris SunJDK is recommended even in Production Mode. JRockit works well on OEL/Red hat Linux platforms.


Monday, 5 March 2012

Understanding Out of Memory (OOM) in Weblogic


As Fusion or Weblogic  Admin one is supposed to encounter Out of Memory (OOM )issues now and then. Why talk about Fusion or Weblogic admins this issue can be encountered on multiple products like the Oracle Applications EBS, Hyperion, OTM, Oracle Application server and many other products .What seems common across all these products is the use of Application server.  All the above mentioned products use some or the other application server over which the applications are deployed.

For example the latest Oracle SOA Suite 11g uses Weblogic 10.3 Application Server while EBS Release 12 uses Oracle Application Server 10g. The point I am trying to make is the Out of Memory issue is not product specific but is related to Application Servers running Oracle-Sun JVMs. Application servers like Oracle Weblogic, IBM Websphere and Oracle Application Server facilitate running Java Virtual Machines on which the Java Applications can be deployed and executed. Out of memory issue is related to filled up space issues in these JVMs which makes it generic across all the above mentioned application servers.

Before understanding OOM let’s first understand the memory used by the JVM. The Java Virtual Machine (JVM) has the following types of memory:

 Heap memory is the runtime data area from which memory for all class instances and arrays is allocated
Non-heap memory includes the method area and memory required for the internal processing or optimization of the JVM. It stores per-class structures such as a runtime constant pool, field and method data, and the code for methods and constructors.
Native memory is the virtual memory managed by the operating system.


When the above mentioned memory is insufficient for a deployed application, a java.lang.OutOfMemoryError is thrown. There will be different error messages for OutOfMemoryErrors in each type of memory. They are listed below:

-          Heap memory error. When an application creates a new object but the heap does not have sufficient space and cannot be expanded further, an OutOfMemoryError will be thrown with the following error message:

java.lang.OutOfMemoryError: Java heap space


-          Non-heap memory error:When the permanent generation is full, the application will fail to load a class or to allocate an interned string, and an OutOfMemoryError will be thrown with the following error message:

java.lang.OutOfMemoryError: PermGen space

-          Native memory error: The Java Native Interface (JNI) code or the native library of an application and the JVM implementation allocate memory from the native heap. An OutOfMemoryError will be thrown when an allocation in the native heap fails. For example, the following error message indicates insufficient swap space, which could be caused by a configuration issue in the operating system or by another process in the system that is consuming much of the memory:

java.lang.OutOfMemoryError: request bytes for .
Out of swap space?

After having understood the OOM issue the question is why would the code encounter an OOM at all. This could be for more than one reason.

An insufficient memory problem could be due

1.       Either to a problem with the configuration ie the application really needs that much memory

2.       Or to a performance problem in the application that requires you to profile and optimize to reduce the memory use. Configuring memory settings and profiling an application to reduce the memory use are beyond the scope of this post and I would cover them in my forth coming posts.

The issues are mentioned below:

a.       Memory Leaks

The JVM is responsible for automatic memory management, which reclaims the unused memory for the application. However, if an application keeps a reference to an object that it no longer needs, the object cannot be garbage collected and will occupy space in the heap until the object is removed. Such unintentional object retention is referred to as a memory leak. If the application leaks large amounts of memory, it will eventually run out of memory, and an OutOfMemoryError will be thrown. In addition, garbage collection may take place more frequently as the application attempts to free up space, thus causing the application to slow down.

b.      Finalizers

Another possible cause of an OutOfMemoryError is the excessive use of finalizers. The java.lang.Object class has a protected method called finalize. A class can override this finalize method to dispose of system resources or to perform cleanup before an object of that class is reclaimed by garbage collection. The finalize method that can be invoked for an object is called a finalizer of that object. There is no guarantee when a finalizer will be run or that it will be run at all. An object that has a finalizer will not be garbage collected until its finalizer is run. Thus, objects that are pending for finalization will retain memory even though the objects are no longer referenced by the application, and this could lead to a problem similar to a memory leak.

c.       Deadlocks

A deadlock occurs when two or more threads are each waiting for another to release a lock. The Java programming language uses monitors to synchronize threads. Each object is associated with a monitor, which can also be referred as an object monitor. If a thread invokes a synchronized method on an object, that object is locked. Another thread invoking a synchronized method on the same object will block until the lock is released. Besides the built-in synchronization support, the java.util.concurrent.locks package that was introduced in J2SE 5.0 provides a framework for locking and waiting for conditions. Deadlocks can involve object monitors as well as java.util.concurrent locks.

Typically, a deadlock causes the application or part of the application to become unresponsive. For example, if a thread responsible for the graphical user interface (GUI) update is deadlocked, the GUI application freezes and does not respond to any user action.

d.      Looping Threads
Looping threads can also cause an application to hang. When one or more threads are executing in an  infinite loop, that loop may consume all available CPU cycles and cause the rest of the application to be unresponsive.
e.      High Lock Contention
Synchronization is heavily used in multithreaded applications to ensure mutually exclusive access to a shared resource or to coordinate and complete tasks among multiple threads. For example, an application uses an object monitor to synchronize updates on a data structure. When two threads attempt to update the data structure at the same time, only one thread is able to acquire the object monitor and proceed to update the data structure. Meanwhile, the other thread blocks as it waits to enter the synchronized block until the first thread finishes its update and releases the object monitor. Contended synchronization impacts application performance and scalability.

Hope the above article helps you to understand the basics of OOM issues in Application Servers. OOM issues could be a night mare for any admin given the cause is memory leak. But we will discuss methods to resolve such scenarios soon. Also I plan to post on ways to alter JVM settings on Weblogic server.

 Below are URLs to guides/documents that has been used by me for compilation of above article:

Monitoring and Managing Java SE 6 Platform Applications (http://java.sun.com/developer/technicalArticles/J2SE/monitoring/)

Large number of instances in the SOA 11g dehydration store causes EM console performance issues


SOA Suite 11g R1(11.1.1.3,11.1.1.4,11.1.1.5)

Scenario and Symptoms:

The BPEL Engine Audit level is set to Development.

The BPEL engine is load tested with some huge number of transactions causing to generate large number of instances in the dehydration store(SOAINFRA Schema)

The number of instances is say 10-50 Lacs.The developers complain about EM Console being very slow. Drilling into composites and instances take minutes.Below activities in EM console take time:

1.       EM Login Page Load time
2.       Time taken for logging in to the EM
3.       Time taken to render homepage for SOAINFRA
4.       Expanding the SOAINFRA and each partition within
5.       Time taken to render home page for each  deployed composite
6.       Time taken to render details for each instance of any deployed composite

Cause:

Large number of instances in the dehydration store with audit level set to Development. When you login to EM console it tries to load the large amounts of instance and fault data from database leading to slowing up the EM console response time.

Solution:

Improving the Loading of Pages in Oracle Enterprise Manager Fusion Middleware Control Console
You can improve the loading of pages that display large amounts of instance and fault data in Oracle Enterprise Manager Fusion Middleware Control Console by setting two properties in the Display Data Counts section of the SOA Infrastructure Common Properties page.

These two properties enable you to perform the following:
  • Disable the fetching of instance and fault count data to improve loading times for the following pages:
    • Dashboard pages of the SOA Infrastructure, SOA composite applications, service engines, and service components
    • Delete with Options: Instances dialog

    • These settings disable the loading of all metrics information upon page load. For example, on the Dashboard page for the SOA Infrastructure, the values that typically appear in the Running and Total fields in the Recent Composite Instances section and the Instances column of the Deployed Composites section are replaced with links. When these values are large, it can take time to load this page and other pages with similar information.
    • Specify a default time period that is used as part of the search criteria for retrieving recent instances and faults for display on the following pages:
    • Dashboard pages and Instances pages of the SOA Infrastructure, SOA composite applications, service engines, and service components
    • Dashboard pages of services and references
    • Faults and Rejected Messages pages of the SOA Infrastructure, SOA composite applications, services, and references
    • Faults pages of service engines and service components

Other Suggestions/Best Practices:

1. Purge the instance-The moment we purge the instances, we see good performance.The flipside is you cannot be purging data regularly in production (to meet SLAs). My take is if you are in development server you can afford frequent purging of the instances. In Stage/Prod the Audit level would be set to production,hence performance issues due to large number of instances would not be seen. After you purge the dehydration store make sure you shrink the SOAINFRA tables along with indexes (or rebuild indexes)

2. Set Audit Level to Production/Off-The flip side is developers won't be able to troubleshoot issues with their composites. Go ahead with these settings in Production.

3. Another strategy is Switching the audit configuration to 'Deferred' which allows the auditing operations to be performed in an ansynchronous manner resulting in performance comparable to setting the audit level to disabled.Please refer Tuning BPEL audit performance [ID 1328382.1].This is recommended in production.Also can be applied to Dev/Stage environments.

4. As the number of record grows in the dehydration the EM console takes longer time to return information about instances. I believe this is a result of bad performing querries and full table scans. Generate an AWR report and see if you can tune some querries and build some indexes on tables. Get this gone by the DBAs.

5. Using a fast single threaded server(eg M5000/9000) for database instead of using slow CMT servers like the Sun T5140/5240. Please refer Migration from fast single threaded CPU machine to CMT UltraSPARC T1 and T2 results in increased CPU reporting and diminished performance [ID 781763.1]

6. Try using M series boxes for the application tier as well. But if you have to use CMT servers like T5240 make sure you follow note 860459.1 and apply the steps in the solution part to adapt all the components with CMT machine.