Wednesday, October 29, 2008

OBIEE Clearing the log

Even if you have limited the maximum size of the log file ( you sometimes want a Q&D cleanup. For that I create an empty log file in the log directory called NQQuerylogEmpty.log. I made a small batfile on the desktop of the development server:

net stop "Oracle BI Server"
Copy E:\OracleBI\server\Log\NQQueryEmpty.log
net start "Oracle BI Server"

That way I can do a Q&D reset and now that the next entry is my query.

Till Next Time

Monday, October 27, 2008

OBIEE No language dropdown on loginscreen

If you don't want users to choose any other languages then the one you have defined, goto instanceconfig.xml and set the required languages between the AllowedLanguages tags. If you keep to one language the dropdown list will not appear.

Till Next Time

Saturday, October 25, 2008

OBIEE using google maps (Q&D style)

While I was waiting for a plane back home on London City Airport, I had some time left...... I thought I digg into how to use Google maps from OBIEE.

Step 1: Get a Google Maps API Key from:

Since the Google maps API uses a key generate based on the IP and name from calling server be sure your on your webserver when calling this. Get a key based on your own OBIEE server adress: http://vmobiee:9704/analytics/

Step 2: Create a report with a at least a combined adress column and an RCOUNT (forget it in the picture):

Step 3: Add a narrative view to report with the following script in the prefix area

?!?script src="" type="text/javascript"!?!?!?/script!?! ?!?script type="text/javascript"!?!
var map1 = null; var geocoder1 = null;
function initialize1(address1) { if (GBrowserIsCompatible()) { map1 = new GMap2(document.getElementById(1),{size:new GSize(400,300)}); geocoder1 = new GClientGeocoder(); map1.setCenter(new GLatLng(37.4419, -122.1419), 13); } if (geocoder1) { geocoder1.getLatLng( address1, function(point1) { if (!point1) { alert(address1 + " not found"); } else { map1.setCenter(point1, 13); map1.addOverlay(new GMarker(point1));
} } ); } }
var map2 = null; var geocoder2 = null;
function initialize2(address2) { if (GBrowserIsCompatible()) { map2 = new GMap2(document.getElementById(2),{size:new GSize(400,300)}); geocoder2 = new GClientGeocoder(); map2.setCenter(new GLatLng(37.4419, -122.1419), 13); } if (geocoder2) { geocoder2.getLatLng( address2, function(point2) { if (!point2) { alert(address2 + " not found"); } else { map2.setCenter(point2, 13); map2.addOverlay(new GMarker(point2));
} } ); } }
var map3 = null; var geocoder3 = null;function initialize3(address3) { if (GBrowserIsCompatible()) { map3 = new GMap2(document.getElementById(3),{size:new GSize(400,300)}); geocoder3 = new GClientGeocoder(); map3.setCenter(new GLatLng(37.4419, -122.1419), 13); } if (geocoder3) { geocoder3.getLatLng( address3, function(point3) { if (!point3) { alert(address3 + " not found"); } else { map3.addOverlay(new GMarker(point3));map3.setCenter(point3, 13); } } ); } }
?!?/script!?! ?!?/head!?!
Replace ?!? and !?! with tag symbols

This code is for max 3 maps on a page but easily extenbel to any higher number.

More info on the google map API

In the narrative part add

:?!?div id="@7" style="width: 400px; height:
300px;text-align:center;"!?! ?!?script type="text/javascript"!?! initialize@7('@6') ?!?/script!?!
?!?/div!?!@1, @6

Where @7 is the rcount column and @6 is the google adress.

Now put it all on the dashboard:

Till Next Time
Edit if you are using IE you migth want to look also here:

Friday, October 24, 2008

OBIEE Ritmann Mead BI Training Days Day 3

Mark gave a good demo on how the mapping in OBI-apps works and how you can customize it. It's based on Informatica Powercenter, but if your OWB skills are up to speed you can easily pick it up. Check out Marks blog:

All in All it was a good course covering a lot of the Oracle BI stack! Even better there was enough room and expertise to ask you personal question.

My advise: If you are into BI using Oracle, try to catch this course.

Till Next Time.

(on a lighter note: The way back to the Netherlands was a nigthmare...... London City Airport closed because af a security alert! (according to the Chinese Whispers: Unknown flued in the lady toilets ..... ;-) , while standing in the line to get into the airport, the rumors that Steve Jobs of Apple had died spread....Luckely for Steve this wasn't true.... A wheel of my suitcase broke so I had to drag it for a mile....)

Thursday, October 23, 2008

Wednesday, October 22, 2008

OBIEE Ritmann Mead BI Training Days Day 1

Did a lot OBIEE indepth discussions, got some new blog ideas....... Some new insights on using max_queries_per_drive_join and max_parameters_per_drive_join.

Great meal at 'The Grapes' in the evening (

Till Next Time

Friday, October 10, 2008

OBIEE replacing siebelbug.gif (Powered by Oracle)

Did you ever wanted to replace this: by this:
Or any other picture you can find.....
Make a copy of the productmessages.xml to it's customMessages folder. Edit the entry for kmsgPoweredByAnchor to the new picture. You will have to do this for every language.
Till Next Time

OBIEE using the webservices

My Collegue Bas Piepers wrote a couple of good articles on how to use the OBIEE webservice:

Till Next Time

Thursday, October 9, 2008

OBIEE Skin and Style Naming

Discovered today that you can't use underscores or in Skin and StyleNames.
so MyCompagny_SKIN_A and "MyCompagny SKIN A" are illegal . MyCompagnySKINA is allowed.

(yep, I know it's in the documentation........)

Till Next Time

Wednesday, October 8, 2008

OBIEE Portal customization part 2 "the portalcontent"

After the Login screen ( and the portalbanner ( it's time for the portalcontent. Most of this screenpart is controlled by portalcontent.css.
Active Tab:

Appearance: portalcontent.css => .TabHiFont
Inactive Tab:
Appearance: portalcontent.css => a.TabDimFont
Space between tabs:

Appearance: portalcontent.css => .TabSep
Thickness of the bar below the tabs:

Appearance: portalcontent.css => .TabLineTable
Tab Background image's

Appearance: .TabHiCell, .TabHiSep, .TabDimCell, .TabDimSep

Appearance: portalcontent.css => .minibuttonOn
Dashboard Sections:

Of course this posting doesn't include all possible CSS settings but it gives you a good starting point.

Till Next Time
This article was original written for the Ciber Knowledge Blog:

Tuesday, October 7, 2008

OBIEE Show Thousands Separator in Chart

A customer wantend no thousand seperator by default for the y-axis in there graphs:
This is very easy when add: ShowThousandsSeparator='False' in the ValueScale tag in the PCXML file of the graph

Till Next Time

OBIEE update tutorials

The people at OTN have updated "Oracle by example" section for OBIEE:

Till Next Time

Saturday, October 4, 2008

OBIEE ReportAggregateEnabled

My list of things I want to blog about is getting hugher every day. Today it stands at 32. As with most bloggers my biggest problem is R&D time. Luckily more and more people start blogging on OBIEE.
One of those people is Kevin Custer. He made a great entry on "ReportAggregateEnabled" here: This is one of those things you have look at when you work "complex" grand totals. It is not in the documentation only on metalink3 : SR 3-159350471

Till Next Time

Friday, October 3, 2008

OBIEE Multiple Java Versions

Noticed today that OBIEE doesn't really like having multiple Java versions assigned, when updating from 3.3.x to 3.4.x be sure to point to the orignal JDK. You can find the original loaction in the instanceconfig.xml between the JavaHome tags.

Till Next Time

Wednesday, October 1, 2008

OBIEE the "developersprompt"

When I'm developing a dashboard I often want to play around with some basic settings like cache hit & seed and loglevel. Normally you have go back to answers or your administration panel to change these settings (temporarily). I always advice my developers to make a 'developersprompt'......It's a simple LOV prompt which returns me 3 presentation variables (dp_cache{0,1}, dp_seed{0,1} and dp_log{0,1,2}.

In the prefix of each report we default add:

(you can find the postfix block in the advanced tab of your report)

When developing your dashboard you can playaround with different settings to find the optimum. Leave the prompt on the dashboard and make in only 'available' for administrators or developers, so that in time of "trouble" your are quickly able to bypass the cache or turn on logging.

Till Next Time