The reference installation I have based my tips on is a 2 node SOA 11.1.1.7 clustered environment connected to a 2 node Oracle Database RAC 11.2.0.3.4 environment (non-Exadata).
Database settings
Database settings that worked that were proven to work best for my projects:
SETTING
|
VALUE
|
COMMENT
|
processes
|
1200
|
|
sessions
|
665 | |
session_cached_cursors
|
100
|
|
parallel_max_servers
|
5
|
|
session_cached_cursors
|
300
|
|
LOG_BUFFER
|
1048576+
|
|
Db_cache_size *
|
0 or 1000m+
|
|
undo_retention
|
0
|
|
memory_target *
|
15g
|
|
memory_max_target *
|
15g
|
|
sga_target *
|
0
|
Automatic memory management
|
Sga_max_size *
|
0
|
Automatic memory management
|
Shared_servers
|
0 (use dedicated
services)
|
|
DISTRIBUTED_LOCK_TIMEOUT
|
700 (must > JTA
transaction time out)
|
Index partitioning for RAC
For tuning the SOA dehydration store for RAC I used the following Oracle document as a referencehttp://www.oracle.com/technetwork/database/availability/maa-fmw-soa-racanalysis-427647.pdf
For reducing index contention in RAC database I partitioned the following indexes (the default partition settings where sufficient for my projects)
- WI_STRANDED / WORK_ITEM
- DLV_MESSAGE_CIKEY / DLV_MESSAGE
- DLV_MESSAGE_DATE_ECID / DLV_MESSAGE
- AT_PK / AUDIT_TRAIL
- DLV_MESSAGE_PK / DLV_MESSAGE
- CS_PK / CUBE_SCOPE
- STATE_TYPE_CIKEY / DLV_MESSAGE
Secure Files for optimized LOB storage
Oracle Fusion Middleware Service Oriented Architecture (SOA) Suite is a database intensive middleware system with multiple components that store many different types of data in the Database. During a single invocation of a composite, multiple inserts and updates of unstructured data like documents, messages, faults and payloads may take place. The amount of data in the Oracle SOA Suite database grows very quickly and this rapid growth is especially relevant for such unstructured data as it may affect not only the manageability of the database, but also its performance. Audit Trails, Business Decision Rules, Sensors, EDN and multiple other objects in the Oracle FW SOA Schemas make intensive use of unstructured data in lobs, clobs and blobs. SecureFiles is a feature introduced in Oracle Database 11g that is specifically engineered to deliver high performance for this type of unstructured data. (Source: http://www.oracle.com/technetwork/database/availability/oraclefmw-soa-11gr1-securefiles-1842740.pdf)Beside other benefits Secure Files eliminates the infamous (HW) enqueue contention wait events with using Basic Files for LOB storage. In most cases for me the (HW) enqueue contention wait events were the main reason for performance issues with the SOA DB.
Additional settings:
DEDUPLICATION and COMPRESSION set to LOW (Note: requires additional DB Compression license)
PCTFREE to 20 for the following tables:
o composite_instance
o cube_instance
o cube_scope
o dlv_messages
o dlv_subscriptions
o xml_document
o mediator_payload
o mediator_case_detail
o mediator_audit_document
o audit_details
I did not experimented with table partitioning because without table partitioning performance requirements were already met on my projects. But if you want or have to get the most out of the configuration, I recommend to consider table partitioning based on the performance numbers provided in the SOA Secure Files white paper.RAC patches on top of 11.2.0.3.4
I recommend to always use the latest patch bundle 4 on top of 11.2.0.3 (latest non-Exadata patchset for 11.2) and install the following one-off patches to solve specific Secure Files issues:
- 13787307
- 13775960
- 12614359
Tablespace separation
As a best practice I also recommend to separate the indexes and LOB segments into separate table spaces. Especially on SOA 10g using Basic Files and RAC I have noticed a significant reduction of wait events when using separate table spaces for the indexes and LOB segments so I have reused this best practices when introduction secure files. Also from a space management perspective this gives benefits.As a final note, I want to mention 2 things:
1) I want to state again that the provided tuning guidelines in this posting serve as a reference not meaning that they will provide the most optimal performance in all situations...at least I can say that they probably won't harm.
2) Leverage AWR reports or the Oracle Enterprise Manager 12c to monitor & analyse DB performance during SOA performance testing. On many occasions they proved to be my best friend to find performance bottlenecks.