21 Tuning Oracle Business Activity Monitoring

You can tune Oracle Business Activity Monitoring (BAM) to optimize its performance in monitoring business services and processes in the enterprise.

About Oracle Business Activity Monitoring

Oracle Business Activity Monitoring (BAM) provides the tools for monitoring business services and processes in the enterprise.

It allows correlation of market indicators to the actual business process and to change business processes quickly or taking corrective actions if the business environment changes.

Oracle BAM also provides the necessary tools and runtime services for creating dashboards that display real-time data inflow and define rules to send alerts under specified conditions.

For information on how to monitor your BAM installation's performance, see Monitoring Oracle BAM Performance in Monitoring Business Activity with Oracle BAM.

Tuning BAM Server Parameters

You can improve performance of the BAM server by following certain tuning recommendations.

BAM performance largely depends on the performance of the following components:

BAM performance also depends on good data object design strategies at design time and on having good data object purging strategies at runtime.

While BAM 12c can support much larger transaction volumes (data arrival rates into BAM), BAM 12c is an operational analytics product, not a business intelligence product.

Hence, it is recommended that data that is of analytical value for operational decision-making be kept in BAM. For most customers, this means storing about 5-30 days of transactional data in BAM. Resting data sizes typically comparable to a data warehouse are not useful for operational decision-making, so such data volumes do not constitute a mainstream use case for BAM 12c.

The tuning suggestions listed and described in Table 21-1 can be used to improve performance of the BAM Server:

Table 21-1 Essential BAM Server Tuning

Parameter Problem Tuning Recommendation Trade-offs

Max connections to BAMDatasource

Default: 50

The number of concurrent connection to the data source consistently reaches max limit.

Increase count as long as the performance continues to scale linearly.

This is set at the WebLogic level. The value can be determined mainly based on the number of processors, listening source threading model and max concurrent request settings of embedded servers.

Increasing the count will most likely increase the system resources usage.

Viewset Expiry Time

Default: 180 seconds

Viewsets are lingering after the DC connection is lost.

Decrease the expiry time value so that viewsets do not linger.

See Monitoring Viewsets in Monitoring Business Activity with Oracle BAM for information on how to find and modify this parameter.



Default: Info

You need granular diagnostic logs to identify a problem.


Your system is running fine and you do not need detailed logs.

Keeping the default of INFO will help performance.

For more information on using the BAM Diagnostic Framework, see Using the BAM Diagnostic Framework in Monitoring Business Activity with Oracle BAM.

If your system slows down, you do not have detailed logs to identify a problem.

ASM (Automatic Server Migration)

Default: WSM

You want to migrate a SOA Suite installation with BAM to High Availability. Because BAM is a real-time system, you should enable ASM.

ASM is used so High Availability can occur faster than WSM. Given that BAM is a real-time system, ASM is required for BAM HA.


JVM heap size

Default: -Xms768m -Xmx1536m

Oracle BAM is running slowly and an out-of-memory exceptions occur.

Increase the heap size to 2 GB. Use the following command with the -Xms2048m and -Xmx2048m arguments:

setenv USER_MEM_ARGS "-Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=768m"

Increasing the JVM heap size for BAM could affect other SOA components.

For more heap size tuning tips, see Tuning Tips for Heap Sizes in Tuning Performance of Oracle WebLogic Server.

Other Tuning Strategies

If Oracle BAM is running more slowly than expected, you can try other tuning strategies.

Creating an Index Column

If throughput of data into a data object from an Enterprise Message Source or other source is slow, create an index column for the primary key column. See Adding Index Columns in Monitoring Business Activity with Oracle BAM for more information.

Tuning Loggers

The default Oracle Diagnostic Logging Level for all loggers is Notification. For stress testing and production environments, consider using the lowest acceptable logging level, such as ERROR or WARNING.

The loggers in BEAM that can affect BAM performance are as follows:


For information about locating these loggers and changing their Oracle Diagnostic Logging Level, see Configuring Log Files in Administering Oracle SOA Suite and Oracle Business Process Management Suite.

Tuning Continuous Query Service

The Continuous Query Service (CQS) is a BAM-specific wrapper around the Continuous Query Language (CQL) engine within the Oracle Complex Event Processing Service Engine. The CQS is a pure push system: query results are delivered automatically. The CQS supports both stream (non-persistent) and archived relation (persistent) data objects.

When you create a query, the CQS sets up tables in the CQL engine, registers the query, and listens for data changes from the persistence engine. The query result is processed in the CQL engine, then pushed to the CQS and on to the report cache.

For information on how to monitor continuous queries for performance issues, see Monitoring Continuous Queries in Monitoring Business Activity with Oracle BAM. Once you understand how your current system is performing, you can try to improve performance by tuning the knobs described in Table 21-2. Note that for most of these parameters, tuning for performance means losing diagnostic information.

Table 21-2 Tuning the Continuous Query Service

Parameter Problem Tuning Recommendation

Data Object type

Default: None

You have arbitrarily designated simple data objects as stream, archived stream, and archived relation, and are not sure what to do.

Categorize your data objects as stream if you do not care about historical data.

See Data Object Types in Monitoring Business Activity with Oracle BAM for detailed descriptions of each data object type and relation.

Data Object purging

Default: Disabled

By default, data object retention is not set. Many rows in the data object cause performance issues.

Customer can set Data Object retention in the Data Object Retention tab to specify how many days they want to keep the data in a Data Object. When the specified number of days has elapsed, the data rows are automatically purged.

See Setting Data Retention in a Data Object in Monitoring Business Activity with Oracle BAM for information on how to find and change this setting.

Replay for Archived Stream Data Objects

Data parsing is slow for archived stream data objects.

Specify a smaller Replay Unit or a lower Replay Amount to reduce the amount of past data retained in memory. This reduces the time and memory to parse data retrieved from the database.

Time Window on Input Streams

You have chosen to turn an Active Data query into a continuous query and are receiving out-of-memory exceptions.

Decrease the time window size on the Active Data stream. This restricts the amount of memory the window uses to store elements.

To get an idea of how much the window size affects memory usage, consider a scenario where the Window Size = 1 hour (RANGE 1 hour) and the event size = 100 bytes. If the event rate is 1000 events / second, then the window will contain 1000 * 3600 events when it is full. The memory consumed is 1000 * 3600 * 100 bytes = ~340 MB.

See Enabling Active Data in a View in Monitoring Business Activity with Oracle BAM for information on how to configure the window size on an active data view.

Active Data Collapsing Interval

Default: Unchecked

You have checked the box for Active Data Collapsing to make data aggregation active. You want more frequent snapshots or need to free up memory.

Define a smaller Interval to make the view update more frequently and to reduce the amount of aggregated data stored in memory.

You can maximize your memory usage by taking note of the evaluation interval, the event size, and the event rate. Given the following values:

  • Interval: Every 5 minutes
  • Event Size: 100 bytes
  • Event Rate: 1000 events/second

The maximum size of the aggregated view is 5 * 60 * 1000 = 300,000 events = ~28 MB.

See Using Active Data in Monitoring Business Activity with Oracle BAM for information on finding the Active Data Collapsing setting.

Slow Changing Dimension for Data Object Dimension Tables

Default: Unchecked

Continuous queries on dimension tables are slow and consuming memory.

Check this property to activate it. This indicates that the data in this dimension table changes infrequently.

For information on specifying slow-changing dimensions for a data object, see Specifying Slow-Changing Dimensions for a Data Object in Monitoring Business Activity with Oracle BAM.

Query Type

Default: SQL

You are experiencing out-of-memory exceptions and most of your queries are continuous.

Use schedule query (SQL) where you do not expect frequent output. This saves memory because SQL involves JDBC resources while CQL stores data in memory.