Tuesday, 15 March 2011

Changing the default URL of OBIEE


We have a limitation that we can only install one OBIEE server and 1 presentation server on a machine
So basically even if we have a number of web servers running on different ports, we would still be able to work only with 1 catalog at a time (We are talking about a 1 machine system here)
It is important to note that only 1 OBIEE server is possible on a machine but this limitation does not trouble us a lot. We can specify a number of repositories in nqsconfig.ini file and an OBIEE server will load all those repositories
A sample of one such log loading 2 repositories is below
2011-03-14 23:06:26
     Copyright (c) 1997-2009 Oracle Corporation, All rights reserved
2011-03-14 23:06:26
     [36007] Loading repository E:\OracleBusinessIntelligenceEnterproseEdition\OracleBI\server\Repository\Reports.rpd.
2011-03-14 23:06:27
     [14055] Loading subject area: HR ...
2011-03-14 23:06:27
     [14056] Finished loading subject area: HR.
2011-03-14 23:06:27
     [36007] Loading repository E:\OracleBusinessIntelligenceEnterproseEdition\OracleBI\server\Repository\paint.rpd.
2011-03-14 23:06:28
     [14055] Loading subject area: Paint ...
2011-03-14 23:06:28
     [14056] Finished loading subject area: Paint.
2011-03-14 23:07:17
     [nQSError: 43059] Init block 'yesterday': Dynamic refresh of repository scope variables has failed.
     [nQSError: 16001] ODBC error state: S1000 code: 12170 message: [Oracle][ODBC][Ora]ORA-12170: TNS:Connect timeout occurred.
2011-03-14 23:08:00
     [58002] Query Cache loaded with 13 entries from saved cache files.
2011-03-14 23:08:00
     [43030] :                       Oracle BI Server started.  Version: 10.1.3.4.1.090414.1900.

Below is a screenshot of the nqsconfig.ini file






So, we can load multiple OBIEE repositories on a single OBI server.

Now we have to figure out ways in which we can use host multiple webcats on the same machine. Unfortunately this is not possible. Since only 1 presentation service can be hosted on a machine and since each presentation service would have only 1 instanceconfig.xml file which can again have only 1 entry of a webcat so basically we can have only 1 presentation service running

Again it must be noted that hosting different web servers on the same machine operating at different ports will not solve this as it is the OBIEE presentation service which is a limitation and not the web server

Now let’s start building the above concept and see how we can change the default url on the portal. Below is the url structure of OBIEE











Using a proxy server is obviously the best mechanism of hiding the details of your server but we will try to understand the ways in which we can change individual parts of the above URL

Below link is a good post to understand proxy servers

Now we can hide the ip address of the actual web server either by using virtual ip or by using the using a load balancer.
The port is the port on which the web server is operating. This port is configurable at the time on installation of the web server.
The next thing is the context root of the application. This is like a mapping to analytics.war package on the portal. These is some discussion on this package in my previous post as well

I will now describe a step by step process to change this mapping. This part deals with the web server you are working with. I have a default OC4J container installed along with the OBIEE application on windows platform.

Below is a screenshot of the home page of enterprise manager. Click on the ‘Deploy’ button (The last in the array of buttons)


Give the path of analytics.war package. This would be under <OracleBIHome>\web

Give your new application name and your context root. This context root will be a part of your new URL
Below screenshot shows your final settings. Click on the ‘Deploy’ button at the bottom of the page

The below page shows that the new application is deployed
















Below page shows the new application i.e. ‘newapp’




















Below page shows the old application i.e. ‘analytics’


Now let’s talk about changing the next part of the url i.e. servlet mapping

This part is again very simple. Change the web.xml file in the <OracleBIHome>\OracleBI\web\app\WEB-INF path

Then get into the following path on command prompt
<OracleBIHome>\OracleBI\web













Run the command: jar -cf analytics.war -C app .





Pick the analytics.war file in <OracleBIHome>\OracleBI\web path.

Then deploy the application as discussed above. I deployed another application called ‘newapp2’ which has the edited web.xml file. Below is the screenshot. Note that 'saw.dll' has been changed to 'vishal.dll'



10 comments:

gerardnico said...

Just a little comment on the screenshot of the nqsconfig.ini file.

You can have only one default repository and they must have different names.

such as:
report = reports.rpd, DEFAULT;
paint = paint.rpd;

The default is use to make a default client connection when you don't specify the repository that you want to use. ie report or paint. In the above, you will make a connection on report.

The second comment is that I get all posts in my mailbox with the label obiee. Then be careful when you label your post. This post has only one label : "OBIEE URL change analytics.war". Try to split them.

Cheers
Nico

Vishal Pathak said...

Many thanks for taking your time out to read my posts , Sir

Thanks again to point out the nqsconfig.ini mistake. This will help other readers too.

I have corrected my labels too and will try to make them more meaningful henceforth

Regards,
Vishal

prashanth said...

Can i Rename or customize Virtual Ip in the url
example:

http://abc:9704/analytics to
http://xyz:9704/analytics

Vishal Pathak said...

IP address identifies your server on the network. Any local change in the OBIEE application will not be good enough to identify the server(with the change) on the network.Again there is no mechanism to do it.
Changing the ip address has to be at OS level. There are various mechanisms for this. One of these is configuring virtual ip (as you rightly said), the other is using a load balencer to mask your webserver etc

Anonymous said...

Hi Vishal,

I am pretty new to OBIEE, so pardon me with the basic level questions put forth.

I have 2 oracle databases, primary server and standbby server. Incase of a faiover can the OBIEE change the underlying db connections from the primary server to the standby server for DR and High avalibilty purposes? If yes how is it done?

Also would like to know whether we would have to manually change the connection details to the standby server or there is some kind of an automatic connection change to the standby server?

Vishal Pathak said...

Well, We do not have an out of the box failover mechanism till OBIEE 10.3.4.1.
Following link can help you implement it in OBIEE 11G
http://gerardnico.com/wiki/dat/obiee/connection_pool

This does not mean that we do not have a way out. I will need some more info to find a solution for you.
1. Is your failover DB server stable and reliable?
2. Do you want to hedge yourself against the network problems or against sudden database shutdown

We can reference repository variables in the connection pool (VALUEOF('Repository_variable') (without quotes).
We can have some logic built into these variables to make a failover mechanism

Anonymous said...

Vishal,

We want to add a default parameter in the url configuration.

The parameter is PortalPage, this is an example of the url that we neeed by default.

http://host:port/analytics/saw.dll?PortalPages

Thanks and regards

Vishal Pathak said...

I have never tried this but I believe, to achieve this, you will have to change the servlet's code which is definitely not advisable.

How about adding a javascript code to the default dashboard which appends the required parameter and then loads a separate dashboard page.
The default dashboard can just has this javascript code to redirect to the desired page with desired parameters. The user will never know about this intermediate dashboard if we hide it

Please let me know if this helps

Regards,
Vishal

Anonymous said...

Hi Vishal,
I liked your both of the posts. Can you please provide me the details on Siteminder SSO configuration with OBIEE? Also, we want to use IBM IHS web server for load balancing.

Vishal Pathak said...

Well, the answer requires a seperate article.

In short, follow the following steps

1. Create a user for impersonation and configure instanceconfig.xml as described in the following link
http://docs.oracle.com/cd/E12096_01/books/AnyDeploy/AnyDeploySSO3.html

2. Use Cryptotools utility to register the user in the presentation server credential store.

Note: Instanceconfig.xml should be properly configured to identify credentialstore

3. Optionally, configure log out and log in urls in the instanceconfig.xml
<Auth><SSO enabled="true"><LogoffUrl>HTTP://servername/analytics/saw.dll?Logoff</LogoffUrl></SSO></Auth>