OBIEE 11g – Horizontal Clustering

Hola … I was thinking about to post this thread from long time (since last 5 months) as I have been extensively involved in a OBIEE 11g platform build from scratch, playing with 3 nodes OBIEE installation , Vertical / horizontal clustering et all.

Now the game is over and I want to detail out each and every steps in details and the hurdles I have faced during step by step setup execution.

Honestly before writing this blog thread I have searched across web and googling around several sites to get consolidated Clustering steps and I never found it. This is nothing mean to wrong to other blogger who are posting excellent stuff in their blogs since ages but I feel each post on Horizontal Cluster lacks some information on details.

Idea is to perform 3 nodes horizontal clustering with one OBIEE instance running on each of the nodes. OBIEE version to be installed in with bundle patch version of p18283508. which will make final version to : (Build 140402.1431 64-bit)

There are few restrictions in terms of browser support for this version with IE11. See my previous post for the hack on IE11 to get this work done perfectly.

A little background from OBIEE 10g version just to understand why we made decision to go to OBIEE 11g.

  1. OBIEE 10g lacks features of 11g
  2. Platform wise 11g is more robust with enterprise architecture
  3. In 10g we had faced severe issue with memory in 32 bit architecture and in vertical clustering. The idea of vertical clustering is a crappy design with several architectural flaws which we want to get rid of in 11g
  4. We had 2 OBIEE 10g nodes with 12 instances running on each node is a nightmare to manage and control. Moreover it doesn’t use shared cache with max 4 GB memory address limitation in each sawserver and nqserver process which is a support pain to replenish instances with memory issue/leaks.

Okay so lets start a high level setup details:

  1. Install OBIEE on Node 1 – Primary Node
  2. Install OBIEE on Node 2 – Secondary Node
  3. Install OBIEE on Node 3 – Third Node
  4. Apply OBIEE Bundle patches on Node 1 , then Node 2 and then Node 3
  5. Apply customization , if required and ported from 10g
  6. Perform config chances in EM – Failover and Scaleout to add additional 2 nodes
  7. Perform config chances in EM – Failover
  8. Do Integration check and deploy the required RPD/Catalog on Shared NAS/NFS mount

I will explain the entire things in step by step. In my case it is 2 node cluster installation but for 3rd node the process is exactly same and no difference except extra host to be select on EM.

In above customization steps it is NOT required to have the below OS level file changes present as pre-requisite and you can do it later.

* soft nofile 131072
* hard nofile 131072
* soft nproc 131072
* hard nproc 131072

I assumed that you have right packages downloaded from OTN and right patches before continue.

In below steps I am planning to install OBIEE through Unix script using command line parameters so that no GUI is required. I have created my own response file to pass through certain command line steps which will install OBIEE RCU schema first, OBIEE11g and WLS and then perform some 10g ported customization and finally deploy respective catalog/rpd which is updated from 10g.

The scope for this thread is to define the Steps required to Horizontal cluster on multi-nodes. To save all Logs into a target file use command : script obiee_installation_log.txt  and then start command line execution. Finally once execution done type : exit. this will save entire log from buffer to target file and you can review it to see in details.


Execute weblogic command line params to install RCU. This is similar to what we have in GUI. A command line example is below which will drop existing RCU.

rcu -silent -dropRepository -compInfoXMLLocation /u00/media/ofm_rcu_linux_11/rcuHome/rcu/config/ComponentInfo.xml -storageXMLLocation /u00/media/ofm_rcu_linux_11/rcuHome/rcu/config/Storage.xml -databaseType ORACLE -connectString <Replace with database connect string as db:port:instance> -dbuser <SYDBA Username> -dbrole sysdba -schemaPrefix <SchemaPrefix> -component MDS -component BIPLATFORM -f < /u00/media/ofm_rcu_linux_11/rcuHome/rcuPassword.txt

A command line example is below which will create RCU.

rcu -silent -createRepository -compInfoXMLLocation /u00/media/ofm_rcu_linux_11/rcuHome/rcu/config/ComponentInfo.xml -storageXMLLocation /u00/media/ofm_rcu_linux_11/rcuHome/rcu/config/Storage.xml -databaseType ORACLE -connectString <Replace with database connect string as db:port:instance> -dbuser <SYDBA Username> -dbrole sysdba -schemaPrefix <SchemaPrefix> -component MDS -component BIPLATFORM -f < /u00/media/ofm_rcu_linux_11/rcuHome/rcuPassword.txt

Note that rcuPassword.txt could be any file which will act as source file for storing Sysdba User/Password and passed through command line.

N.B:- If you see any error like this that means you have trouble creating RCU and you have to perform clean-up this error before this:

9-28-2015 10-55-58 AM

The reason because RCU schema pre-exist and didn’t clean-up well. You have to find the schema name from below table acts as a RCU version history keeper and then delete those records/commit before proceed.

select * from System.SCHEMA_VERSION_REGISTRY$

2. Execute OBIEE installer with response file. A sample example below: This will be similar like doing Enterprise installation using UI.

cd /u00/media/bishiphome/Disk1
echo inventory_loc=$HOME/oraInventory > $HOME/oraInst.loc
echo inst_group=${OS_GROUP} >> $HOME/oraInst.loc
mkdir $HOME/oraInventory

./runInstaller -silent -response /u00/response_file -invPtrLoc $HOME/oraInst.loc -waitforcompletion

This will unset ORACLE_HOME (which is mandatory) , then creating Inventory Location with OS group and then continue installation with response file called response_file

If you are using response_file then for primary node installation below are important parameters you need to change in response_file. You can find the details of standard response for for OBIEE 11g installation in Oracle doc or just google it





So my OBIEE installation on Primary node completed and I used to get below issue whenever I ran command line / GUI:

[CONFIG] FAILED:Executing: opmnctl start coreapplication_obisch1
[CONFIG]:Modifying BI Configuration Files
[CONFIG] SUCCESS:Modifying BI Configuration Files
Configuration:BI Configuration failed
[CONFIG] Failed.
[ACTION]: BI Configuration

The installation of Oracle AS Common Toplevel Component, Oracle Business Intelligence Shiphome failed.

To avoid this I used to do a tweak and intercept of correcting the opmn.xml  while 40% of the installation is over and once you get this file created. This file located at directory :  /u00/app/Middleware/instances/instance1/config/OPMN/opmn.

Or else you can just keep watching on below during Installation and then make the changes on opmn.xml file:

[CONFIG]:Creating Instance
[CONFIG] SUCCESS:Creating Instance

Just take the backup of existing opmn.xml and then Change its contents…

<process-type id=”OracleBISchedulerComponent” module-id=”CUSTOM”>
– <module-data>
– <category id=”start-parameters”>
<data id=”start-executable” value=”$ORACLE_HOME/bifoundation/server/bin/” />
– <!– enable console log to be able to see process startup error –> f(clean);
<data id=”no-stdio” value=”false” />
– <category id=”stop-parameters”>
<data id=”stop-executable” value=”integrator” />
– <category id=”ping-parameters”>
<data id=”ping-type” value=”integrator” />
– <category id=”ready-parameters”>
<data id=”use-ping-for-ready” value=”true” />
<start timeout=”600″ retry=”1″ />
<stop timeout=”120″ />
<restart timeout=”720″ retry=”1″ />

<process-type id=”OracleBISchedulerComponent” module-id=”CUSTOM”>
<category id=”start-parameters”>
<data id=”start-executable” value=”$ORACLE_HOME/bifoundation/server/bin/” />
<!– enable console log to be able to see process startup error
<data id=”no-stdio” value=”false” />
<category id=”ping-parameters”>
<data id=”ping-url” value=”/”/>
<category id=”restart-parameters”>
<data id=”reverseping-timeout” value=”345″/>
<data id=”no-reverseping-failed-ping-limit” value=”3″/>
<data id=”reverseping-failed-ping-limit” value=”6″/>
<start timeout=”300″ retry=”3″/>
<stop timeout=”300″/>
<restart timeout=”300″ retry=”3″/>
<ping timeout=”60″ interval=”600″/>

This will make sure Scheduler start-up will be fine and no issue to Proceed the BI Configurations. This is just a hack a no reason why Oracle haven’t done this default in there installation package. You might need to do it across all secondary nodes.

The idea is you should be getting below to confirm entire Installation is done successfully.

[CONFIG] SUCCESS:Modifying BI Configuration Files
Configuration:BI Configuration completed successfully
The installation of Oracle AS Common Toplevel Component, Oracle Business Intelligence Shiphome completed successfully.


Now we have to scale-out to Node 2 (secondary) and then 3rd node.

For this in Node 2 we need to make sure:

  1. we will not re-execute RCU commands as we already have RCU in place during primary node installation
  2. we will make changes in response file and make sure we put DOMAIN_HOSTNAME= <primary node Ip/host> and SCALEOUT_BISYSTEM=true
  3. I would prefer to use INSTANCE_NAME=instance2 to identify it is 2nd instance in cluster
  4. All activities will continue here like installing OBIEE / Weblogic , configuration except Admin server installation.
  5. Each additional node in cluster will act like Managed server and its system components and only Primary server will act like Admin and Managed server both
  6. Node 2 installation would be pretty much faster than Node 1. In my experience Primary node takes 30-40 minutes while all secondary nodes will take ~15 minutes to do complete install. Anyway it again vary from system to system based on capacity but I did a tweak on Java memory parameters for faster start-up/shutdown and Installation on OS level.
  7. Performance enhancement for faster start-up/Installation.

Make changes in all OBIEE Node’s . Need root access. No reboot required

  1. Edit or create /etc/sysconfig/rngd to contain:

# Add extra options here

EXTRAOPTIONS=”-r /dev/urandom”

  1. Then “service rngd start”.
  2. If that works, then “chkconfig rngd on” ( to start it at boot ).
  3. Add this on .bash_profile in Unix as below:

export JAVA_OPTIONS=””

So finally in Node 2 the output should be look like this:

9-28-2015 8-17-49 PM


Repeat STEP 2 for Node 3 . It must be similar.


  1. Apply Patches on NODE 1 using Opatch
  2. Apply Patches on NODE 2 using Opatch
  3. Apply Patch on NODE 3

N.B:- You must be thinking why I am not doing performing Installation and patch in one node completely and then proceed to next node. It will not going to work during Scale-out phase of other nodes. The reason because Once Primary node is upgraded with latest bundle patch and you are trying to perform scale-out a version mismatch occurs  for secondary nodes and it is not being able to access the primary nodes module. In this case you will be getting below error:

[2015-09-28T17:57:31.608-04:00] [as] [ERROR] [] [] [tid: 38] [ecid: 0000L0LxUqL3b6G5uzd9iX1M2RR700000T,0] ERROR: Instance creation failed.[[
Caused by:


Lets do a quick sanity check first for Node 1.

top -u orabi should throw below running process on Node 1:

Process-Primary Node

top -u orabi should throw below running process on Node 2.

Process-Secondary Node

We can see Node 1 and 2 added in cluster. this means scale-out is successful and EM recognizes both node.

Also you see some of the processes are down on Node 2 from EM which is fine. Now we will see what additional steps we need to do.



If you are deploying RPD and Catalog it is recommended to deploy it now into share path (which you must have to do if you want 3 nodes to share the same RPD and Catalog).

  • So Go to EM-) Deployment-)Repository. Add new RPD and Catalog after “Lock and Edit”.
  • Apply and Activate changes.
  • For us we have common NAS/NFS mount shared and accessible from 3 OBIEE nodes. It looks like below: (Catalog final name is obfuscated due to security reason)

9-28-2015 4-17-15 PM

Now “Lock and Edit” and Go to EM-) Availability -) Failover -) Make secondary Host like below and Apply, Activate Changes.


Now perform “Restart All” . This will make all the processes up and running across all nodes. But note, we haven’t yet created OBIEE Managed server system components on secondary nodes.

Go to Capacity management -) Scalability -) Add one components on each secondary nodes. This is nothing but vertical clustering on horizontal cluster. If you add more than one components it will create more than one instance on single host.


Note that, more than one system components means more power and it will run more than 1 instance of sawserver, nqserver,Cluster Controller, nqScheduler and Javahost process. Do it if you need it else not required and single instance in each node with 64 bit architecture is enough capable to handle 700-1000 concurrent user request (considering OBIEE performance parameters have been correctly applied)

Hit “Apply” and “Activate Changes” . It will take some time to create additional processes and start them up on secondary nodes. Once this is done successfully then see the list of running process on secondary node by typing top -u orabi in unix session. And observe below that instance2 system components creates under below location on 2nd node.


After successful connections Failover EM screen will be like below:


I have faced several issues with EM not recognizing the new set of components and processes during Restart. In such cases do Individual component restart or try using opmnctl commands to restart opmn managed components else Bounce Primary node at once and then bounce secondary node once. This should resolve most of the problem otherwise it is bigger issue and something wrong during cluster setup process.

Now “Restart All” from EM and see all green means Horizontal Cluster setup process completed successfully :D :D

All Green


If you have any customization carried forward from 10g upgrade this is the right time to do that in each nodes one by one starting from Primary. Follow the steps to stop services on Primary and then make customization changes and then start on primary and then stop on secondary , do customization and then start services. This is standard process step by step.

My Observations:

  • Apparently RPD is share under Shared Path but physically RPD located under repository path below under each Nodes and when the opmnctl process starts up it loads the RPD from this physical path. So the concept of Shared RPD applicable when you open RPD in online mode and made some changes the change is reflected online and this location acts as temporary staging location and after changes in RPD become it sync with clustered nodes and propagated the changes.

For Primary: /u00/app/Middleware/instances/instance1/bifoundation/OracleBIServerComponent/coreapplication_obis1/repository

For Secondary:


  • Even in Horizontal cluster mechanism Cache has been create in individual nodes. Global Cache is a concept which is applicable during Cache seeding only and nowhere else.
  • If you want to do Vertical clustering on top of Horizontal its easy from EM.
  • After Clustering you can access Node 1 using its HostName . If Host1 is down you can still access Node 1 as WLS internal clustering/Load balance will automatically route the request to 2nd Node by the help of Clustered Controller module. If 2nd node also not found it will redirect request to 3rd Node.
  • The idea of WLS Horizonal clustering is High availability which tells even if Admin Server is down in Node 1 , clustered managed servers/nodes still can work and serve user query without having any downtime.
  • Don’t try to do Customization on STEP 7 before STEP 6 (EM and Failover changes plus adding instances on secondary nodes) because you might have some customization which require that instances directory to be created first inside Secondary nodes.
  • Entire activities above can be done using Unix scripts only. For e.g, even the Horizontal cluster/ Failover/ scalability can be done using WLS scripting and invoking python script from inside shell script. For me its easy to use EM UI to do this but certainly end to end steps possible through scripts.
  • You don’t need to have a successful RPD connections to DB exist while doing this as in those steps services will be bounced several times. You just need a basic placeholder RPD
  • You don’t need the tnsnames to be in ../MiddleWareHome/Oracle_BI1/network/admin path as long as you are using IP:port syntax in RPD connection pool. Else you might think about updating tnsnames.ora on that location to get connectivity with RPD if RPD use DB connect string
  • Note, if you have 3rd, 4th nodes to be added in horizontal cluster you can’t have Scheduler process and ClusterController process in system components for any additional nodes beyond 2nd nodes. This is because failover and cluster controller process can be only present in two nodes/hosts/servers and you have to manage the deployment such a way that both primary and secondary node shouldn’t go down at same time. So apart from Primary and 1 Secondary node Failover will not be available with high availability for Scheduler and ClusterController

Performance Tuning and OBIEE 10/11g

Hello friends, after long time , I am again back on track … I was quite busy with couple of my mandatory schedules for last couple of weeks!

So today my topic is what are the Performance tuning key measures useful while doing report Performance testing. There are lots and I just tried to pull most of them and cover the highlights which would be very helpful while doing the Report Performance testing. Actually this could be separated across several areas like sometime it would be from DB perspective, sometime Environment parameters and sometime it would be the Repository design perspective. However the target objective is same but we need to work well to understand the performance bottleneck from which angles! This will definitely come with the experience and the different challenging environment and every places different rules needs to be applied.

Database Environment Framework:

  • RAC/Cluster / Grid based in NAS and SAN storage – This is recommended in Enterprise Architecture Platform with robust and performance resilient framework.
  • Exadata / Greenplum Architecture – For high performance and high throughput the database Architecture should be robust and especially when there lot of in memory operations intended for better performance especially for transactional analysis.
  • Memory SGA/PGA/Buffer Cache/ Temp, Undo, Redo tablespaces should be optimized using the best practice guided suitable for the underlying hardware.
  • 64 bit Processor (Multicore- Parallel server) and hyper-thread architecture required for better performance on CPU based calculations

Database Tuning Aspects:

  • Bitmap Index / Unique Index (lookup Explain Plan for less Query Cost and Index required suitable for your scenario …typically for all the join keys involved in Dimensional Star modeling)
  • Partitioning is very important and key areas to get most effective performance benefit as most of the analysis involve the time dimension.
  • Gather Statistics or analyze 30% sample of table at-least for Cost Based Optimizer to use, otherwise Rule Based Optimizer will be used . Oracle recommendation to use DBMS_STATS.AUTO_SAMPLE_SIZE for fastest gathering of stats.
  • DB Compression significantly reduces DB block read and enhance performance
  • De-normalization required rather Normalized Snowflakes
  • Parallel query(DB Environment parameter) to get benefit of report accessed on partitioned data leveraging the parallel CPU processing speeds
  • Faster Aggregation – enable Oracle DB Star Transformation (Bitmap join Indexes)

Tuning OBIEE Environment :

  • Multinode Clustering – Horizontal/Vertical scale-out in terms of multiple Admin and Managed Server in Weblogic domain.
  • Leveraging BI Server Caching to get most benefits out of the Cached queries and return the same result without hitting the database multiple times.
  • Switch off Usage Tracking to avoid extra DB operations running against each query.
  • Tuning WLS Param / JVM memory parameters


  • Remove Snowflake across dimensions and create the Foreign Key for each Dim into Fact to create Star model
  • Bitmap Index for all Foreign Key columns (for Summary reports) and Bitmap Join Index (lowest granularity based query for detailed data)
  • NULL and NOT Null column in sync with RPD and Database to avoid full outer join with NVL
  • Number of Elements in OBIEE hierarchy definition to determine efficiency of Aggregated table
  • Fragmentation specification wherever required to logically hit different LTS based on fragmented data value sets
  • Limit the number of Initialization blocks to avoid the login performance degradation. However this feature improved in 11g to allow the database query fired once when that corresponding Values referred by Init block hitted.
  • Setting the query limit for a certain number of records and certain time window helps performance improvement for long running Ad-hoc analysis.
  • Limit the Concurrent user access by setting additional parameters
  • Number of DB connection to open settings in connection pool
  • Turn off higher Query log level to avoid File system IO based operations and performance degradation.
  • Manage optimally some key values like MAX_SESSION_LIMIT (to specify how long DB connections remain open with the accessed session), SERVER_THREAD_RANGE , DB_GATEWAY_THREAD_RANGE (DB and Server execution threaded execution)



  • Charting thread and Queue related parameters amendment (MaxQueue, MaxThreads)
  • Cache related tunable parameters:

<!– Remove from the cache everything older than N minutes –>




<!– AbsoluteMaxEntries is the enforced maximum number of entries. When this maximum is reached –>

<!– subsequent queries will fail until the maximum is no longer exceeded. –>


<!– CruiseEntries is amount of entries the OracleBI Presentation server tries to maintain in its cache. –>


<!– Forces the cache to attempt to remove an old entry when MaxEntries is exceeded. –>


<!– Cleanup this cache every N minutes. –>



  • Aggregated Tables /Mviews – Follow this approach if there are huge volume of data in detail fact table. Multi-level aggregated table based design return best results.
  • Typically the biggest gains for “Detail” reports performance is :

    •Star Transformation

    •Bitmap Join Indexes


  • The biggest gains for “Summary” reports:

    •Gathering Stats 30%


    •Star Transformation


OBIEE 11g – The Starters & the Concerns








Ω Ω Ω Ω Ω ……. Good day everybody and welcome back……… Ω Ω Ω Ω Ω

As promised that I will post a couple of interesting stuff down the line for next couple of days …Here it begins .. :)
In my recent execution of a OBIEE 11g development project several unforeseen events have been experienced which is either a product defect or an enhancement issue encompassing couple of 11g new features or the existing feature having enhancement issue. Most of them are from UI perspective and some of them from Repository perspective. I like to jot down those points that could be useful for future reference. All below issues noted are as per my observations that might not necessarily true as those depends on the situation and the environment where I have faced the problem.
I am quite sure there will be tons of problems on the way while upgrading the 10g to 11g especially from the customization perspective and architecture perspective. I will update it as soon as I will be facing such concern down the line …. !

♦ Issue #1

While  added a filter on Top 20 TRx measure value and then edit the same measure value from the report filter as below:
IFNULL(NNI Weekly.Curr Week TRx,0)  is in top  20
Changed the expression and after removing IFNULL I can see “Is in Top” option vanishes. So you can’t choose numbers anymore that in which ranges it belongs to.

♦ Issue #2

While restarting BI Components (Presentation Server, BI Server and Scheduler) from OFMW enterprise manager console it suddenly throws errors at the end of restart process. However the log and other information are not meaningful but the entire things were up and running behind the scene. Not really sure about what is the meaning of the error.
But it seems there is a communication delay between BI Server components and the Windows Process manager OPMN and once that delay is over all the components work perfectly in sync. Until OPMN also up and sync with BI components you will get error “Error 500–Internal Server Error” in bieehome page URL.

♦ Issue #3

Alternate inner coloring in pivot table row format actually overrides the measure column format label color specifications format once that measure bring from column section to row section.

♦ Issue #4

While you edit the page all the hidden page also visible and can also be edited like changing the entire page layout components. I think this is intentional and not an issue rather it gives the flexibility of altering the components even if those are hidden in actual dashboard page.

♦ Issue #5

The dashboard page level slider prompt control took unnecessary vertical whitespace from the end of the prompts till the Apply/Reset button causing the much more vertical section space for prompt. So even if, inside the control it is specified that the Button will be placed to the side of the prompt it doesn’t behave like that. So I think this is a bug to fix.

♦ Issue #6

Editing the compound layout from the dashboard page layout where it is specified to expose the view for say “Compound layout 3” rather default compound layout it should open the Layout 3 in the edit page. But it is not the case currently and always opens the default compound layout. I know, even the components specific editing feature was not there in 10g as well. But as a developer we could expect much more on that which helps our life cool.

♦ Issue #7

I encountered intermittently “Bad XML instance” while adding multiple prompt values in report filters and it doesn’t allow saving that report. Don’t know the reason about it but once I log off and log back in again everything is fine and I can even add those prompt criteria’s without issue.

♦ Issue #8

OFMW Enterprise Manager console weblogic  user is not case-sensitive and due to that reason when you enter using the user ‘WEBLOGIC’ say (all in caps though actual user is ‘weblogic’) you can logged in see all the pages and options and it allow to lock and edit the configuration button press. But once you click that you will see all the fields are still not editable and there will be no button called ‘ Release Configuration’ or ‘Activate Changes’ .So either it should allow all the functionalities or not allow to log into EM console at all .

♦ Issue #9

Changing the prompt text/label color and style will change the default section value of the prompt format as well. For e.g. if we change the prompt text color it will change the default value set in the prompt as well.

♦ Issue #10

Pivot table exclude is possible but not include in the non-designer mode. For e.g. once your report is ready and placed into the dashboard, right-click on some column and click to exclude some column from the pivot table display. You can do it. But you can’t get those excluded column back from the same section. Instead of that you have to click on reset page display or ‘Clear My Customization’ to get those column back into the pivot reports.

♦ Issue #11

Add to briefing book option is not displayed even if it is enabled in the dashboard layout against the displayed components. The problem happens when, instead of displaying the default compound layout or other compound layouts you are displaying the view like ‘View Selector’ etc.

♦ Issue #12

OBIEE 11g User Interface (UI) Performance Is Extremely Slow with Internet Explorer 8 (- IE version 8 – ) .Follow my previous post to get the details. Due to the browser problem several issues like below you can find while developing your reports.

♦ Changing the colors of the measure attribute behaves erratically and it doesn’t reflect on time in inline view and once the reports have been saved it is back on color.

♦ Sometime compound layout views displayed only without any control activated and hence browser needs to be closed after log-off and only solution to log back in.

♦ Issue can be appeared in Style Formatting for Graph. The spikes and the pointers (triangle, round) doesn’t display correctly.

♦ Issue #13

Saving the online 11g BI repository after modification of several components inside it ,the consistency checker failed throwing a weird kind of error message below:
[nQSError: 37005] Transaction update failed.
That is documented under Bug 9884975 (11G ADMIN TOOL RECEIVES NQSERROR: 37005 WHEN SAVING ONLINE RPD CHANGES  – version  Microsoft Windows (32-bit) )
And the resolution Patch 12909840 – GETTING ERROR: [46036] INTERNAL ASSERTION: CONDITION M_LOCK.ISACQUIRED() available on request from Oracle.

♦ Issue #14

11g RPD has thrown the error message while query on object from Physical layer and double-click that object to get the details.BI admin tool has thrown error “Object is orphaned and should be deleted”. The cause is unknown however I search the object and find it using pair of eyes and double clicking it is fine ! So weird no?

♦ Issue #15

I have encountered a strange error appeared while playing with OBIEE 11g repository. The error message as below:
“nQSError: 43113” – Message returned from OBIS
“nQSError: 46036” – Internal Assertion: Condition COLOCK_ISSET (value) , file server \objectmodel\Src\SORpObject.cpp , line 3
I have not found any such error logged in Oracle Support and not sure about the reason. However the problem resolved after closing the Admin tool without saving the changes and re-opening it!

♦ Issue #16

Graph slider (11g new feature) causes some unpredictable issues if you like to play with it more and more!(changing the sort order , randomly moved the column across several places in layout view , changing the measure data/column format). I had  faced some unpredictable issues and in place of Graph slider it displayed like an error with message and my slider control vanishes. However I got it back after 2-3 days after several restart. Might be a kind of rendering issue in IE8 is responsible for that. Now I switched to Firefox hence not having any problem until now.

♦ Issue #17

While adding the Groups (11g new features) inside catalog level, the values doesn’t change automatically until and unless Cancel button has been pressed. Once u click on Cancel button hold your mouse button and come to other section and release the button pressed you can see the value changed.

Ω Ω Ω Ω Ω ………..Until next.. Good Bye!  Stay tuned…………Ω Ω Ω Ω Ω

OBIEE 11g couple of Bugs/Issues

The big giant Oracle releases the major version of OBIEE in August 2010 after it is directly take over from Siebel and after quite lot a time OBIEE 10g matured. However there are the couple of the issues I identified during working in UI layer for OBIEE 11g ( . Somebody might notice this and somebody might ignore and expect some intermediate patch to correct those issues later.

I am hereby attaching the screenshots for those UI bugs which I truly think as a bug ! I will keep this thread up-to-date whenever I feel something is not right and on track :)







I would rather expect an intelligent cross-hair for below so that one cross- hair on Products will allow to move all the respective presentation columns under the presentation table and the other cross- hair on individual column to allow moving (drag and drop) them individually across the criteria selection pane.


The problem with mapviewer is that after you click on Logout and confirm the logout,still  in the next page it still redirects to the previous page .This really annoying !


Clicking on display “collapsible” link  for prompt layout results the Display layout shift at the bottom of the page. This seems to be an scripting issue and the problem is there for both Internet Explorer and Mozilla firefox .

Just Click on ‘-‘ beside “Display” and see the next layout .This is an issue ! The extra white space between prompt definition and display is not acceptable at all ….


I was just trying to move one Presentation column from Excluded section to Display Slider section of the dashboard layout of my Graph view of a report and unfortunately I am not being able to do that . This is weird and irritating! Ideal scenario is that when you are trying to move the excluded section column to either Sections region or Slider region the “Layout” should auto-scroll to top just to allow you to do that .But this is not the case !! Hence I think this is an issue.This has been found in my Mozilla Firefox 4.0 version as well as IE8 browser.

So currently the workaround is , I have to go around halfway to the layout for e.g. drag till Measures / Bars and Lines section and then scroll a bit and then again drag . Another workaround just to make a bigger browser screen just to make the “Full Screen View” and directly drag it.The ideal one probably to expand the layout region using the “up and down mouse arrow” in section separator just above “Layout” :)


In a single dashboard page I put 2 master reports and 1 detail report side by side and it causes column sort order spill over to next attribute in display and for the last display attribute it is out or region display.This results the problem of setting the Sort while my column heading interaction is On .

See below:

However I found that the issue happening for Mozilla firefox 4.0 version and it doesn’t cause any concern in IE8 .


Ohh… Oracle did a very good job delivering a so-called highly demanding product with loads of expectation to meet user expectations , however loads of end-user friendliness and developer friendliness have been overlooked ! Anyway in my today’s finding I did notice a WoW factor …. see below ! Attribute/column movement around the sections of Slider and Graph prompt is uni-directional :) i.e. you can move from left to right and not right to left !! That essentially means if you are having 5 attributes together in the Graph prompt section to make the lastly added attribute in the first of the list you have to perform the jugglery with the columns ! So ridiculous … :)(:

P.S:This issue has not been observed neither in movement of the attributes across measures section or nor during the movement in the criteria section .


OBIEE 11g Design Tips – The Best Practices

I had already composed the OBIEE design guidelines and best practices in my previous quite old post which mostly encircled the approach and best adopted strategies for previous release of OBIEE (aka Siebel Analytics 7.8.5) and OBIEE version. Refer to my previous post :

Here are the design tips and guidelines to adhere as per Oracle recommended Metadata Repository Builders guide of OBIEE11g . The excerpt from it directly compiled like below:

Design Tips for the Physical Layer

  • It is recommended that you use table aliases frequently in the Physical layer to
    eliminate extraneous joins, including the following:
    – Eliminate all physical joins that cross dimensions (inter-dimensional circular
    joins) by using aliases.
    – Eliminate all circular joins (intra-dimensional circular joins) in a logical table
    source in the Physical Model by creating physical table aliases.
    For example, say you have a Customer table that can be used to look up
    ship-to addresses, and using a different join, to look up bill-to addresses.
    Avoid the circular joins by aliasing the table in the Physical layer so that there
    is one instance for each purpose, with separate joins.
  • You might import some tables into the Physical layer that you might not use right
    away, but that you do not want to delete. To identify tables that you do want to
    use right away in the Business Model and Mapping layer, you can assign aliases to
    physical tables before mapping them to the business model layer.
  • An opaque view (a Physical layer table that consists of a SELECT statement)
    should be used only if there is no other solution to your modeling problem.
    Ideally, a physical table should be created, or alternatively a materialized view.
    Opaque views prevent the Oracle BI Server from generating its own optimized
    SQL, because they contain fixed SQL statements that are sent to the underlying
    data source.

Design Tips for the Business Model and Mapping Layer

  • Create the business model with one-to-many logical joins between logical
    dimension tables and the fact tables wherever possible. The business model
    should ideally resemble a simple star schema in which each fact table is joined
    directly to its dimensions.
     Every logical fact table must join to at least one logical dimension table. Note that
    when the source is a fully denormalized table or flat file, you must map its
    physical fact columns to one or more logical fact tables, and its physical dimension
    columns to logical fact tables.
  • Every logical dimension table should have a dimensional hierarchy associated
    with it. This rule holds true even if the hierarchy has only one level, such as a
    scenario dimension {actual, forecast, plan}.
  • Make sure that all appropriate fact sources map to the proper level in the
    hierarchy using aggregation content. You set up aggregation content in the Levels
    tab of the Logical Column dialog for the measure. Note that this is different from
    the Content tab of the Logical Table Source dialog, which is used to specify the
    grain of the source tables to which it maps.
  • Typically, logical fact tables should not contain any keys. The only exception is
    when you need to send Logical SQL queries against the Oracle BI Server from a
    client that requires keys. In this case, you need to expose those keys in both the
    logical fact tables, and in the Presentation layer.
  • Normally, all columns in logical fact tables are aggregated measures, except for
    keys required by external clients, or dummy columns used as a divider. Other
    non-aggregated columns should instead exist in a logical dimension table.
  • In some situations, you might want to have multiple logical fact tables in a single
    business model. For Logical SQL queries, the multiple logical fact tables behave as
    if they are one table. 
  • You can define calculations in either of the following ways:
    – Before the aggregation, in the logical table source. For example:
    sum(col_A *( col_B))
    – After the aggregation, in a logical column derived from two other logical
    columns. For example:
    sum(col A) * sum(col B)
    You can also define post-aggregation calculations in Answers or in Logical SQL
  • If you plan to use Oracle Scorecard and Strategy Management, it is a best practice
    to implement at least one time dimension in the Oracle BI repository you are using
    for your KPIs. This action is necessary because you use KPIs in scorecards to
    measure progress and performance over time. Note that an individual scorecard
    automatically picks up any dimension used by KPIs in that scorecard.
  • Aggregate sources should be created as separate logical table sources. For fact
    aggregates, use the Content tab of the Logical Table Source dialog to assign the
    correct logical level to each dimension.
  • Each dimension level in a hierarchy must have a unique level key. Also, each
    logical dimension table must have a unique primary key. Normally, this key is
    also used as the level key for the lowest hierarchy level.
  • Renaming columns in the Business Model and Mapping layer automatically
    creates aliases (synonyms) for Presentation layer columns that have the property
    Use Logical Column Name selected.
  • To prevent problems with aggregate navigation, ensure that each logical level of a
    dimension hierarchy contains the correct value in the field named Number of
    elements at this level. Fact sources are selected on a combination of the fields
    selected as well as the levels in the dimensions to which they map. By adjusting
    these values, you can alter the fact source selected by the Oracle BI Server. See
    “Creating Logical Levels in a Dimension” for more information about setting this

 Modeling Outer Joins
The following guidelines provide tips on how to model outer joins:

  • Due to the nature of outer joins, queries that use them are usually slower. Because
    of this, define outer joins only when necessary. Where possible, use ETL
    techniques to eliminate the need for outer joins in the reporting SQL.
  • Outer joins are always defined in the Business Model and Mapping layer. Physical
    layer joins do not specify inner or outer.
  • You can define outer joins by using logical table joins, or in logical table sources.
    Which type of outer join you use is determined by whether the physical join maps
    to a business model join, or to a logical table source join.
  • Be aware that outer joins in logical table sources are always included in a query,
    even if the none of the columns in one of the mapped physical tables are used.
    For example, assume that a logical table source is mapped to physical tables A and
    B. When no outer joins are defined, if physical table A is not required to satisfy a
    request, it is not included in the physical query. However, if the logical table
    source has an outer join defined to table A, table A is still included in the physical
    query, even if only physical table B is required to satisfy the request.
  • If you must define an outer join, try to create two separate dimensions, one that
    uses the outer join and one that does not. Make sure to name the dimension with
    the outer join in a way that clearly identifies it, so that client users can use it as
    little as possible.

 Design Tips for the Presentation Layer

  • You can show fewer columns than exist in the Business Model and Mapping layer.
    For example, you can exclude the key columns because they have no business
  • You can organize columns using a different structure from the table structure in
    the Business Model and Mapping layer.
  • You can display column names that are different from the column names in the
    Business Model and Mapping layer.
  • You can set permissions to grant or deny users access to individual subject areas,
    tables, and columns.
  • You can export logical keys to ODBC-based query and reporting tools.
  • You can create multiple subject areas for a single business model.
  • You can create a list of aliases (synonyms) for presentation objects that can be used
    in Logical SQL queries. This feature lets you change presentation column names
    without breaking existing reports.
    The following is a list of tips to use when designing the Presentation layer:
  • Because there is no automatic way to synchronize all changes between the
    Business Model and Mapping layer and the Presentation layer, it is best to wait
    until the Business Model and Mapping layer is relatively stable before adding
    customizations in the Presentation layer.
  • There are many ways to create subject areas, such as dragging and dropping the
    entire business model, dragging and dropping incremental pieces of the model, or
    automatically creating subject areas based on logical stars or snowflakes. See
    “Creating Subject Areas” for information about each of these methods. Dragging
    and dropping incrementally works well if certain parts of your business model are
    still changing.
  • It is a best practice to rename objects in the Business Model and Mapping layer
    rather than the Presentation layer, for better maintainability. Giving user-friendly
    names to logical objects rather than presentation objects ensures that the names
    can be reused in multiple subject areas. Also, it ensures that the names persist
    even when you need to delete and re-create subject areas to incorporate changes to
    your business model.
  • Be aware that members in a presentation hierarchy are not visible in the
    Presentation layer. Instead, you can see hierarchy members in Answers.
  • You can use the Administration Tool to update Presentation layer metadata to give
    the appearance of nested folders in Answers. See “Nesting Folders in Answers” for
    more information.
  • When setting up data access security for a large number of objects, consider
    setting object permissions by role rather than setting permissions for individual
    columns. See Chapter 13, “Applying Data Access Security to Repository Objects”
    for details.
  • When setting permissions on presentation objects, you can change the default
    permission by setting the DEFAULT_PRIVILEGES configuration setting in the
    NQSConfig.INI file.