Tuesday Jan 07, 2014

OBIEE 11.1.1: Load Testing Oracle Business Intelligence Enterprise Edition (OBIEE) 11g Using Oracle Load Testing (OLT) 12.x

Published whitepaper on Load Testing Oracle Business Intelligence Enterprise Edition (OBIEE) 11g Using Oracle Load Testing (OLT) 12.x) which can be found at: https://support.oracle.com/epmos/faces/DocumentDisplay?id=1611188.1

(Oracle Support Document 1611188.1)

Tuesday Dec 11, 2012

OBIEE 11.1.1 - (Updated) Best Practices Guide for Tuning Oracle® Business Intelligence Enterprise Edition (Whitepaper)

Applies To: This whitepaper applies to OBIEE release,

Introduction: One of the most challenging aspects of performance tuning is knowing where to begin. To maximize Oracle® Business Intelligence Enterprise Edition performance, you need to monitor, analyze, and tune all the Fusion Middleware / BI components. This guide describes the tools that you can use to monitor performance and the techniques for optimizing the performance of Oracle® Business Intelligence Enterprise Edition components.

You can find new updated copy of OBIEE Tuning Guide Whitepaper on Support note OBIEE 11g Infrastructure Performance Tuning Guide (Doc ID 1333049.1)

Disclaimer: All tuning information stated in this guide is only for orientation, every modification has to be tested and its impact should be monitored and analyzed. Before implementing any of the tuning settings, it is recommended to carry out end to end performance testing that will also include to obtain baseline performance data for the default configurations, make incremental changes to the tuning settings and then collect performance data. Otherwise it may worse the system performance.

Wednesday Sep 19, 2012

OBIEE 11.1.1 - How to enable HTTP compression and caching in Oracle iPlanet Web Server

1. To implement HTTP compression / caching, install and configure Oracle iPlanet Web Server 7.0.x for the bi_serverN Managed Servers (refer to document http://docs.oracle.com/cd/E23943_01/web.1111/e16435/iplanet.htm)

2. On the Oracle iPlanet Web Server machine, open the file Administrator's Configuration (obj.conf) for editing. (Guidelines for modifying the obj.conf file is available at http://download.oracle.com/docs/cd/E19146-01/821-1827/821-1827.pdf)

3. Add the following lines in obj.conf file inside <Object name="default"> . </Object> and restart the Oracle iPlanet Web Server machine:

#HTTP Caching

<If $path =~ '^(.*)\.(jpg|jpeg|gif|png|css|js)$'>
ObjectType fn="set-variable" insert-srvhdrs="Expires:$(httpdate($time + 864000))"


<If $path =~ '^(.*)\.(jpg|jpeg|gif|png|css|js)$'>
PathCheck fn="set-cache-control" control="public,max-age=864000"


#HTTP Compression


Output fn="insert-filter" filter="http-compression" vary="false" compression-level="9" fragment_size="8096"

Monday May 07, 2012

OBIEE 11.1.1 - Increase Timeouts in Oracle HTTP Server (OHS) plug-in (mod_wl_ohs.conf)

If you are seeing "Failure of server APACHE bridge" error when try to open large BIP report. This is due to your current Oracle HTTP Server (OHS) timeout parameters defined in plug-in file that are reaching amount of time the plug-in waits for a response to a request from WebLogic Server.

For each <Location> section in OHS file mod_wl_ohs.conf, set the following timeouts for example:

<Location /analytics>
      SetHandler weblogic-handler
       WebLogicCluster <servername>:9704
       WLIOTimeoutSecs 6000
       WLSocketTimeoutSecs 600

# BI Publisher
<Location /xmlpserver>
     SetHandler weblogic-handler
     WebLogicCluster <servername>:9704
     WLIOTimeoutSecs 6000
     WLSocketTimeoutSecs 600


Thursday Apr 05, 2012

OBIEE 11.1.1 - BI Design Best Practices Whitepaper V1.5

  • Oracle BI Principles.
  • Repository design best practices.
  • Dashboards and reports design best practices.
  • 10g Upgrade considerations.

This version includes some additional best practices and improvements specific to

Click here to download (Right click or option-click the link and choose "Save As..." to download this pdf file)

Tuesday Feb 28, 2012

OBIEE 11.1.1 - IBM JDK Tuning for WebLogic 11G under AIX 6.x

Modify setOBIDomainEnv.sh:

Each lines like:
        if [ "${JAVA_VENDOR}" = "IBM" ] ; then
                # 64-bit IBM JVM is the only JVM supported for AIX
                # assume to always use Managed server memory args for 64-bit IBM JVM
                SERVER_MEM_ARGS="-Xms2048m -Xmx2048m -Xmns512m -Xmnx512m -Xss2m -Xrs -Xgcpolicy:gencon -Xverify:none"
                export SERVER_MEM_ARGS

    -Xms<size>        set initial Java heap size
    -Xmx<size>        set maximum Java heap size
    -Xss<size>         set java thread stack size
    -Xrs                    reduce use of OS signals by Java/VM (see documentation)

      Sets the initial size of the new (nursery) heap to the specified value when using -Xgcpolicy:gencon. By default, this option is selected internally according to your system's capability. This option will return an error if you try to use it with -Xmn.
      Sets the maximum size of the new (nursery) heap to the specified value when using -Xgcpolicy:gencon. By default, this option is selected internally according to your system's capability. This option will return an error if you try to use it with -Xmn.
With no parameters, enables the verifier. Note that this is the default; used on its own, this option has no effect.

Additional parameters to review:

You can force the JVM to use large pages, which is more efficient memory management.
Java VM command line option: -Xlp64K

You should also consider using huger pages.
PPC64 supports 4K(default) and 16M (although this is more likely to speed things up but unlikely solve your heap problem...)
General info for AIX and PPC:
Java vm command line:
AIX: Requests the JVM to allocate the Java heap (the heap from which Java objects are allocated) with large (16 M pages, if a sizeis not specified. If large pages are not available, the Java heap is allocated with the next smaller page size that is supported by the system. AIX requires special configuration to enable large pages.

For more information about configuring AIX support for large pages, see http://publib.boulder.ibm.com/infocenter/aix/v6r1/topic/com.ibm.aix.prftungd/doc/prftungd/large_page_ovw.htm.
The SDK supports the use of large pages only to back the Java heap shared memory segments. The JVM uses shmget() with the SHM_LGPG and SHM_PIN flags to allocate large pages. The -Xlp option replaces the environment variable IBM_JAVA_LARGE_PAGE_SIZE, which is now ignored if set.
AIX, Linux, and Windows only: If a <size> is specified, the JVM attempts to allocate the JIT code cache memory using pages of that size. If unsuccessful, or if executable pages of that size are not supported, the JIT code cache memory is allocated using the smallest available executable page size."

You should also turn on verbose gc.
Java VM command line option:  –verbose:gc

Consider some of the following Java VM command line options (some IBM vm specific):
- -Xgcpolicy:subpool "Uses an improved object allocation algorithm to achieve better performance when allocating objects on the heap. This option might improve performance on large SMP systems"
- -Xcompressedrefs "Use -Xcompressedrefs in any of these situations: When your Java applications does not need more than a 25 GB Java heap. When your application uses a lot of native memory and needs the JVM to run in a small footprint."
- -Xcompactexplicitgc "Enables full compaction each time System.gc() is called."
- -Xcompactgc "Compacts on all garbage collections (system and global)."
- -Xsoftrefthreshold<number> "Sets the value used by the GC to determine the number of GCs after which a soft reference is cleared if its referent has not been marked. The default is 32, meaning that the soft reference is cleared after 32 * (percentage of free heap space) GC cycles where its referent was not marked." Reducing this will clear out soft  references sooner. If any soft referenced-based caching is being used, cache hits will go down but memory will be freed up faster. But this will not directly solve your OOM problem: "All soft references are guaranteed to have been cleared before the OutOfMemoryError is thrown.
The default (no compaction option specified) makes the GC compact based on a series of triggers that attempt to compact only when it is beneficial to the future performance of the JVM."

Monday Jan 23, 2012

OBIEE 11.1.1 - Count(Distinct) with multiple Logical Table Sources

Usually, when a metric is based on aggregation rule « Count(distinct) », it can be calculated only in the main fact table. In aggregate tables the IDs required to perform the « distinct » are not available anymore. But sometimes the IDs required are available on the aggregate table and you want to map the measure not only on the main fact table but also on the aggregate table. Unfortunately, even if you map the column properly on all logical table sources, the aggregate table is still never used for this measure.

For instance, in SampleApp, create on Fact “F0 Sales Base Measures” a measure “# distinct Products”. This column is mapped not only on the main fact table, but also on aggregate tables:

When use other measures, the aggregate table works fine. So when run the following query, it is expected that an aggregate table will be used.

SELECT 0 s_0, “A – Sample Sales”.”Base Facts”.”# Distinct Products” s_1 FROM “A – Sample Sales” ORDER BY 1

But instead I get the following physical SQL:


select distinct count(distinct T42433.Prod_Key) as c1 from SAMP_REVENUE_F T42433 /* F10 Billed Rev. */)

Select distinct 0 as c1, D1.c1 as c2 From SAWITH0 D1

This happens because BI Server never executes Count(distinct) on aggregate tables. The principle is that the distinct clause can be applied only on the fact table at the lowest level of aggregation. Fortunately it is possible to override this default behavior.

On the column, go to aggregation tab, and override the main aggregation rule for each logical table source. Note that this option is available only if you select Count(distinct) as the main aggregation rule.

Save the modifications, purge/disable BI Server cache, and run the same query again. Now get the right physical SQL:


select distinct count(distinct T42442.Prod_Key) as c1 from SAMP_REVENUE_FA2 T42442 /* F21 Rev. (Aggregate 2) */)

Select distinct 0 as c1, D1.c1 as c2 from SAWITH0 D1

Monday Dec 05, 2011

OBIEE 11.1.1 - Windows 2003 Tuning Parameters

Below table describes how to tune the Windows 2003 operating system to optimize the performance of your Oracle® Business Intelligence Enterprise Edition.


Default Value

Suggested Value


This parameter controls the amount of time the OS waits to reclaim a port after an application closes a TCP connection, has a default value of 4 minutes. During a heavy users load, these limits may be exceeded resulting in an address in use: connect exception.

Tip: In registry set this parameter using following:


Value: TcpTimedWaitDelay

Value Type:  dword

Data:  30 (decimal)




The number of user-accessible ephemeral ports that can be used to source outbound connections is configurable using this parameter.

Tip: In registry set this parameter using following:


Value: MaxUserPort

Value Type: dword

Data: 65534 (decimal)



Tune Windows 2003 (32 bit) /3GB switch

Important Note: It is only recommended to enable /3GB, if BI Presentation Services (32bit) crashes due to 2 GB process virtual memory limit. Using the /3GB switch allocates 1 GB to the kernel and 3 GB to the User-mode space. Therefore it is strongly recommended to implement following settings when /3GB switch is applied, in order to make sure OBIEE and Windows stability:

1. Using a range of memory for the /userva=xxxx switch that is within the range of 2900 to 3030. The following sample boot.ini file demonstrates how to use the new switch to tune a server to allocate 2,900 MB of User-mode virtual memory and 1,196 MB of Kernel-mode virtual memory. This increases the available kernel space by 172 MB:

[boot loader]



[operating systems]

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /NoExecute=OptOut /3GB /Userva=2900

2. Increase the SystemPages in registry: The setting being updated controls the allocable memory for the operational system caches, file caches among others, and the value being set will tell Windows to calculate the value itself on the side of the maximum allocable resources.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

Open the Data: SystemPages

Enter its new value (hex): FFFFFFFF

3. After applying above settings, reboot the server.

OBIEE 11.1.1 - Database connection pool tuning

The maximum connection size needs to be set in the repository for each DB connection pool. Maximum connections parameter in each connection pool of the repository should be set to a very large value. It controls the number connections which can be made by BI server to the database.


Use OBIS performance counters in EM to determine if more or fewer DB connections are required.  For a simple sizing calculation, let’s assume there are peak N users concurrently downloading dashboard pages.  On average, each dashboard page executes L logical queries.  On average, each logical query executes P physical queries.  Then the number of DB connections required for this load would be N * L * P.  If fewer connections are specified, then response times will increase.

Sunday Nov 27, 2011

OBIEE 11.1.1 - How to configure HTTP compression / caching on Oracle BI Mobile app

Applies to: OBIEE

Supported Physical Devices and OS:

The Oracle BI Mobile application with HTTP compression / caching configurations is tested on following devices:

  • iPhone 4S, 4, 3GS.
  • iPad 2 and 1.

Note these devices must be running the latest version of the iOS version, i.e. iOS 4.2.1 / iOS 5 is also supported.

Configuring Pre-requisites:

Prior to configuration, the Oracle Web tier software must be installed on server, as described in product documentation i.e. Enterprise Deployment Guide for Oracle Business Intelligence in Section 3.2, "Installing Oracle HTTP Server." The steps for configuring the compression and caching on Oracle HTTP Server are described in this PA blog at https://blogs.oracle.com/pa/entry/obiee_11g_user_interface_ui and in Oracle Support Doc ID 1312299.1.

Configuration Steps in Oracle BI Mobile application:

1. Download the BI Mobile app from the Apple iTunes App Store. The link is http://itunes.apple.com/us/app/oracle-business-intelligence/id434559909?mt=8 .

2. Add Server for example https://pew801.us.oracle.com:7777/analytics/ , here is how your “Server Setting” screen should look like on your OBI Mobile app:

















 Performance Gain Test (using Oracle® HTTP Server with OBIEE)

The test with/without HTTP compression / caching was conducted on iPhone 4S / iPad 2 to measure the throughput (i.e. total bytes received) for Oracle® Business Intelligence Enterprise Edition.

Below table shows the throughput comparison with / without HTTP compression / caching settings for SampleApp using “QuickStart” dashboard accessing reports i.e. Overview, Details, Published Reporting and Scorecard. Testing shows that total bytes received reduced from 2.3 MB to 723 KB.

a. Test Results > Without HTTP Compression / Caching setting - Total Throughput (in Bytes) captured below:

Total Bytes Statistics: 




Sample graph snapshot of a navigation transaction:

b. Test Results > With HTTP Compression / Caching settings - Total Throughput (in Bytes) captured below:

Total Bytes Statistics:  




Sample graph snapshot of a navigation transaction:







Thursday Nov 17, 2011

OBIEE 11.1.1 - Disable Wrap Data Types in WebLogic Server 10.3.5

By default, JDBC data type’s objects are wrapped with a WebLogic wrapper. This allows for features like debugging output and track connection usage to be done by the server. The wrapping can be turned off by setting this value to false. This improves performance, in some cases significantly, and allows for the application to use the native driver objects directly.

Tip: How to Disable Wrapping in WLS Administration Console

You can use the Administration Console to disable data type wrapping for following JDBC data sources in bifoundation_domain domain:

Data Source Name





To disable wrapping for each JDBC data source (as stated in above table):

1.     If you have not already done so, in the Change Center of the Administration Console, click Lock & Edit.

2.     In the Domain Structure tree, expand Services, then select Data Sources.

3.     On the Summary of Data Sources page, click the data source name for examplemds-owsm”.

4.     Select the Configuration: Connection Pool tab.

5.     Scroll down and click Advanced to show the advanced connection pool options.

6.     In Wrap Data Types, deselect the checkbox to disable wrapping.

7.     Click Save.

8.     To activate these changes, in the Change Center of the Administration Console, click Activate Changes.

Important Note: This change does not take effect immediately—it requires the server be restarted.

Monday Nov 14, 2011

OBIEE 11.1.1 - Built-in BI Metrics for Performance Monitoring

You can use Fusion Middleware Control metrics to monitor System Components (BI processes) and WebLogic Server processes.



·         Use Oracle Enterprise Manager (EM) URL to monitor end to end OBIEE real time performance: http://<server>:7001/em

·         In Oracle Business Intelligence 11g, the perfmon URL is still valid to use i.e. http://<server>:9704/analytics/saw.dll?Perfmon

Wednesday Oct 26, 2011

OBIEE 11.1.1 - Tuning basic “init.ora” Oracle Database Parameters

The following table provides basic important “init.ora” parameters to tune for Oracle® Business Intelligence instance. Consider following these basic recommendations to set the database parameters. Ultimately, however, the DBA should monitor on periodic basis the database health and tune parameters.


The following table provides information on some important performance-related database initialization parameters to tune for Oracle® 11g Database:

Database Parameter for OBIEE db instance


- whatever is needed to support the expected number of BI applications and application servers.



- the default value for this parameter is too small for systems such as WebLogic Server.

- It is important to set the value of OPEN_CURSORS high enough to prevent system from running out of open cursors.

- Note: assuming that a session does not open the number of cursors specified by OPEN_CURSORS, there is no added overhead to setting this value higher than actually needed.

Monday Sep 26, 2011

OBIEE 11.1.1 - Weblogic Server AD provider - circular group references

If you see BIEE Weblogic Managed Server JVM seg faults and then restarts when a user logs in, check the user group memberships in Active Directory. If the user belongs to groups in a circular reference (group A belongs to group B that belongs to group A), without additional configuration parameters, the JVM may segfaults.

The managed server thread dump (kill -3) would show a trace similar to:

"[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'" waiting for lock netscape.ldap.LDAPSearchListener@xxxxx WAITING
    java.lang.Object.wait(Native Method)
 .... many more ....

To workaround that, set in weblogic administration console the "Max Group Membership Search Level" for the AD provider.


Wednesday Sep 14, 2011

OBIEE 11.1.1 - perfmon URL for BI System Components Performance Monitoring

Note in Oracle Business Intelligence 11g, the perfmon URL is still valid to use i.e.  http://<server:port>/analytics/saw.dll?Perfmon