Monday, August 18, 2008

OBIEE Identifying the server.

If you are working in a "Development Street" like environment, (separate Development, Testing, Acceptance and Production machines) , most of the time the data on these machines will not be the same. In most organizations the refresh rate for the production system is higher then on the other systems. On most development and test system you usually only have a subset of the production data. Problems can arise when during the development process you create “hard copies” of your reports (paper/pdf etc). These tend to start roaming trough the organization, and when they accidently land on a managers desk he/she might misinterpret the data.

Solution 1 would be to hardcode the “source name” on the report or in a repository variable. But… report and repositories are transported back and forth between the different “Development Street” parts, so there is no SOx compliant guarantee that the report is correctly identified.

Solution 2 is to dynamically put the server name and IP-address on the report. Problem is that OBIEE doesn’t have build in variables holding these values.
As long as your repository connects to at least one Oracle database, then you can use this method, using the Oracle sys_context function

In your repository make two new initiation blocks called:

INIT_ENV_TERMINAL

INIT_ENV_IP_ADDRESS

For the data source use:
SELECT sys_context('USERENV', 'TERMINAL') FROM dual

And
SELECT sys_context('USERENV', 'IP_ADDRESS') FROM dual

Put the data in repository variables named TERMINAL and IP_ADRESS.

In your reports you can call these variables using:

VALUEOF(TERMINAL) and VALUEOF(IP_ADDRESS)

Till Next Time

This article was original written for the Ciber Knowledge Blog:
http://knowledge.ciber.nl/weblog/?p=127

No comments: