Monday, September 29, 2014

OOW14 day 0

w00t! One compound word? Mind-boggling!



As a first time OOW participant, when I arrived at Moscone this morning, the sheer size, grandeur and general over-the-top-ness hit me like a brick. Seeing it in pics and on youtube is one thing but experiencing first hand...wow. KScope back in June was a family party in comparison! Which isn't a bad thing by the way

For me, Sunday was all about getting my bearings and participating - both as audience as well as speaker - in the ODTUG sessions. "Figures" you may say as I'm more on the hands-on and technical side of things rather than sales + marketing presentations and - again - you'd be 100% correct.

First things first though: heart-attack and vessel constricting breakfast with my good friend Robin Moffatt. Because. BACON!



In hindsight I probably shouldn't have taken the ubercaffeinated version of coffee offered there since combined with the adrenaline of pre-OOW-presentation makes fingers tingle. Lesson learned for next time!

I was part of the ODTUG Sunday Symposium (big h/t to ODTUG in general and Stewart in particular on that one), so let's jump into the action:

SESSIONS!


Engaging Oracle Business Intelligence Users Through Collaborative and Embedded BI

Christian Screen provided a nice, visual overview of the evolution and life-cycle of BI initiatives from birth to near-death (a state which you hopefully never reach). Accompanying this life-cycle are all aspects of collaboative and embedded BI he showed in the form of biteamwork as well as real-life examples of embedding BI content into any web-portal - literally at the click of a button. Really clever stuff utilizing and extraction and direct referencing of the divs inside the rendered OBI GUI. Neat!
Unfortunately I had to realize about that time that my phone takes really BAD pictures when the lighting is low and you're in a sombre room.


2014 Swiss Community Brunch

I had to skip this one when I saw just where the Hyatt is situated geographically and how long it would take me to get there and back again (unintended Lord Of the Ring reference) without missing my scheduled sessions.
OOW is huge, OOW is crammed full of content...OOW is tricky in terms of scheduling your activities! 


Oracle Business Intelligence Development in the Cloud

Stewart was up next and immediately disappointed some pin the audience since his talk wasn't going to the BICS - the Oracle BI Could Services - but rather actual OBIEE development work in the cloud. Gotta read the abstract of the session as well, gents, not just the title ;-)
Anyhow a presentation not for the faint of heart as things got technical very quickly with MDS XML, Git, Jenkins, push, merge, branch. I loved it and if you're doing OBIEE dev and don't know how you could manage it across multi-dev departments? Well have a look what he was talking about. May be an interesting starting point for you.


No Silver Bullet: Oracle Business Intelligence Enterprise Edition Performance in the Real World

Good old Robin Moffatt! I've Stewart had set the techie tone with his then it definitely went "downhill" in a very good sense - the technical one - from there and I think reached the abyss with my presentation thereafter. More and more "Ey?" and "WTH?" faces in the crowd.
I've seen this presentation of Robin before and I just love it. Firstly because Robin trashes "best practices"...the only real "best practice" there is, is "use your brain". I agree 100%. All other so called "best practices" are contextual and need to be adapted to the actual situation, so "it depends".

His approach of tracking and analyzing performance and capacity issues is neat to say the least and everytime I discuss these subjects with him there's stuff to add and something new to try out. But I digress.

Performance and capacity tracking isn't magic but neither is it "follow this 10 point list....oh and by the way disable logging and use caching". Ah my pet hates. NO! You want to do performance mgmt? Get Robins presentation. Read it. Understand it. Adapt it to your situation. Do it.

I'll try to add links to the presentations as (if) they become available and do a complete wrap-up after OOW with a link list so you have a single point to go to in order to access all of it. 


Neos Voyage in Oracle Business Intelligence Enterprise Edition

My presentation. Was fun, but I lost about 80% of the audience mentally after slide 8 or 9. NQS function calls? Recursive ODBC calls from the BI server through the BI server into its own instantiated RPD in order to have it as a data source within itself?

As promised for those who stuck around until the end and want to dig deeper themselves: shoot me an email on christian dot berg at dimensionality dot ch and I will get back to you with the RPD you need to make this work. 

Quick Dive into Big Data ETL with Oracle Data Integrator 12c and Oracle Big Data Connectors

Last content session of the day was Mark Rittman and this also was a presentation I'd seen before but let me just say this: I don't know how he does it. Mark has this way of just writing slides on the darndest (pardon my french) of topics and make it look and sound like he was writing a grocery shopping list for Friday afternoon. Precise, to the point, gets the information across, not overcomplicated and definitely without all the sales and marketing hubbub.

Best wide-ranging overview of Oracle's Big Data initiatives in the wider Business Analytics context you can read right now.

Funny addition: after the presentation there was a definite fan-club behaviour going on and I just couldn't help myself. Apologies again Mark, but here goes:




All in all a very productive day with meeting tons of people. The number of ex-colleagues, fellow community members and ACEs you run into here is just immense.

Gotta rush now to get some breakfast before today's sessions. I'll do an extra post on Sundays ACE dinner later.

Oracle OpenWorld 14 Day -1

Saturday was a rather quiet day. After having spent 2 hours on Friday night, trying to get the connectivity working in my hotel room, Friday started out with another almost 2 hours which culminated on a recabling of the room and replacement modem to finally get things working. After that I was able to put the finishing touches to my presentation.

Lunch was...american. Very american. Think 50s-type diner. Think chili-chedder-hot-dog. Think fries. LOVE IT! There was some mutual "prying away from work" going on there and Stewart Bryson and Kevin McGinley completed our epic-food triumvirate. Great find Stewart and thanks for saying on "I have my heart set on Lori's". Not the last time I go there this week!






Then: check-in time!


Feels good :-)

Later in the afternoon I joined a whole funky bunch of ODTUG people at a place called "Toronados" for beer. Really good beer. IPA galore you could say and you'd be correct. Sarah Zumbrum, THAT Jeff Smith, Monty Latiolais, Tim Gorman, Joel Kallman, Danny Bryant, Kellyn Pot'Vin...I can't even name them all (anymmore).




After too many weird-named (but all the more tasty) beverages we trudded off to a dinner with current and ex RittmanMead guys from which I zombied my way back to bed since the 30+ hours travelling and a really bad night of sleep had simply killed me by then.

Hard start. Off to day 0!

Tuesday, July 29, 2014

THINK and UNDERSTAND before you give "advice"


One tag. Rant.

Every now and then when I'm on the OTN forums, I run into gems like this: https://community.oracle.com/thread/3589607

The problem isn't the question - it's the "answer" which is both mind-blowingly wrong on so many levels and ends with the usual childish "Gimme points, I crave attention!" footer. I'm not going to go into details on the technical solution since that's covered in my response to the thread itself, but let me just make one thing clear:

Use content from a presentation like Jeff's without thinking just to - wrongly - "prove" your point and you will tick me off. Seriously.

Why did Jeff include the 1=1 join option? Did you see that it was an option and not the ultimate answer ® ? Do you even know what a content level is?

< / rant >

Wednesday, March 19, 2014

Purging corrupted OBIEE web catalog users

Sometimes it can happen that user profiles within a web catalog become corrupted for any number of reasons. In order for these user profiles to be correctly re-initialized, there's more to be done than just drop /users/JohnDoe from the web catalog.

All in all there are three distinct places which need to be cleaned:
  • /users/JohnDoe
  • /system/users/123456
  • /system/acocuntids/987654
This is really important since especially the third place contains the translation between the userid and the effective GUID of the user. I've written a little script which takes the absolute path to the web catalog in question as well as the user to be purged and kills everything that's necessary.

NOTE: This is a quick&dirty solution and I haven't fool-proofed it with any check like "does the folder exist" etc. so use it cautiously and on your own risk.

I may get around to rendering it safer later-on, but since I was asked for it once more just today I thought I'd put it out there.


#!/bin/bash
#
# Purpose: Completely purge a named user from the web catalog with all his content.
#
# Requires absolute path to webcat as param 1 and user name as param 2
#
#
# Author: Christian Berg
# Initial creation: 28/01/2014
# Absolutely no warranty, use at your own risk
# Please include this header in any copy or reuse of the script you make
#
# Current version: 1.0
#
# Change log:
#        CBERG 28/01/2014 Intial creation
#


########################################################################################
# Step 1: Kill the users personal folder plus content with its accompagning .atr       #
########################################################################################

cd $1/root/users

find -type d -name $2 | xargs rm -rf
find -name $2.atr | xargs rm -f

########################################################################################
# Step 2: Kill the users entries in /system/users                                      #
# Two files will be affected "username" and "username.atr"                             #
# Removal happens one-by-one                                                           #
########################################################################################

cd $1/root/system/security/users

find -name $2 | xargs rm -f
find -name $2.atr | xargs rm -f

########################################################################################
# Step 3: Kill the users entries in /system/accountids                                 #
# Two files will be affected. Accountids contains the translation from GUID to         #
# username, so the actual username resides within the files content rather than its    #
# name. Bulk removal.                                                                  #
########################################################################################

cd $1/root/system/security/accountids

grep -r -l $2 . | xargs rm -f

echo User $2 has been purged from the web catalog.

exit 0

Thursday, February 27, 2014

Working around opatch - Prerequisite check "CheckSystemSpace" failed.

I recently ran into the situation where the primary mount for a Linux tech account running an OBI install was just way too small to get OBIEE 11.1.1.7.140114 through.
Prerequisite check "CheckSystemSpace" failed.
The details are:
Required amount of space(17499.766MB) is not available.
So with a bit of hacking I got around it by displacing the ./patch_storage directory and forcing opatch to stop doing a file system check (basically no "df -h" )

1.) displace ./patch_storage to a mount with enough space (but keep a backup in place just in case...)
cp -r /FMWH/Oracle_BI1/.patch_storage /data/NASmnt00001/

mv /FMWH/Oracle_BI1/.patch_storage_bkp


2.) create a symbolic link to take the place of ./patch_storage
ls -s /data/NASmnt00001/.patch_storage ./.patch_storage
After this step if you execute opatch normally, it will still fail with "CheckSystemSpace" failed.


3.) Have opatch omit the space check:

opatch napply -silent /data/NASmnt00001/11.1.1.7.140114 -id 16569379,16913445,16997936,17300045,17300417,17922352,17922552,17922577,17922596 OPatch.SKIP_VERIFY_SPACE=true

Done.

(h/t @G_Ceresa for being picky and getting on my nerves with "That's not proper." ... I said it's a hack, mate ;-))

Tuesday, January 21, 2014

How-To: File hunt for OBIEE GUI changes

Among the questions I receive and that frequently come up on OTN, treated in blog posts etc. are questions pertaining to: How do I change a part of the GUI of OBIEE? Now in this post you'll find the answer to that specific question, but the point here today isn't simply to say "do X in Y", but rather "how do you get to know that you need to change X in Y?".

Mind you, I'm doing these changes quick and dirty to make them instantly visible. The proper way is to create and deploy your own style + skin package within which you do those changes (or alternative post over at my buddies at RittmanMead as well as my own one)!

The single most important things when working with anything relating to the GUI is: Firefox with Firebug (or Internet Explorer with F12 Developer Tools)

The target is to move the image in the title view to the right of the actual title text.


In order to understand what actually needs to be touched in terms of files you right-click on the logo and choose "Inspect Element with Firebug".


This will show you the detailed information on the object within the HTML with its style inheritance through the CSS and all the bits you need to dig further.


In this case you see that the table class is "TitleTable" (the two tr's you see inside are once the logo and once the title text). In order to find the file which controls this, do a search within the vanilla msgdb folder. In this example I'm using the SampleApp v309:


"viewmessages.xml" can be disregarded since it doesn't figure in the actual rendering process, but "standardviewtemplates.xml" is the one we really want.


Now that may look a bit unreadable at first glance, but following the Firebug output above, one can quickly see how the XML controls GUI generation by matching the standardviewtemplates.xml content with the page HTML:

 

Once this matching is done, you can use an editor like Notepad++ to clean the XML (indent, highlight, collapsible etc) to make the standardviewtemplates.xml more readable and manageable.
Target now is to switch the positions of the title logo and the title text, but the logo before the help icon since the help "?" should still be at the far right-hand side.
So a switch of the two respective "sawm:if name=..." is necessary...


...in order to get to a situation where the sawm:if's are in the order desired: title, logo and then help:


In my case I overwrite the existing central (vanilla) standardviewtemplates.xml with the modified version, but as said initially, I strongly suggest that all such changes should be done in custom style+skin packages!

After a bounce of the presentation server service the modified GUI is up and ready:


Cheers!

Thursday, September 12, 2013

Basic. Fundamental. Kowledge.

Currently, I'm a happy camper since two blog posts were recently written on absolutely fundamental subjects which for me fall into the category: "Know and understand these concepts or just please don't touch any OBIEE RPD, thanks."

First post is from Andy Rocha over at RittmanMead and concerns LTSs and outer join pruning:
http://www.rittmanmead.com/2013/09/outer-join-lts-pruning-its-here/

Second one is from Jeff McQuigg on dimensionsal hierarchies and - by extension - the "dreaded" content level tab:
http://greatobi.wordpress.com/2013/09/10/the-single-most-important-thing-to-know-about-the-obi-rpd/


Both of these posts touch on subjects which are the subject of questions about 10 times a week on forums.oracle.com and comunities.oracle.com ...each!
LTS modelling (one vs several), non-conformed dimensionalities in business models (leading to nQSError: 14025 and his buddies) and all the other beautiful and powerful options that the RPD gives you are still amongst the least understood subjects.

These are basics which must be understood. Comprehension is mandatory! Not just slavish adherence to "best practice guides" or "replicating what the guy before you did".

Thursday, September 5, 2013

Sending OBIEE content to non-OBIEE users through agents

I often get to hear the following question concerning OBIEE agents:

"Why can't we send out personalized content (filtered data / row-level security) to non-OBIEE users by simply using their email address residing in the data?"


Killer answer: Security!

Think about it: If you use "Get Recipients from the Analysis used in the Agent Condition", it will actually perform a complete login with authentication + authorization through the security realm and only the fetch the data.

Now imagine that you bypass this "because it's so convenient to just have the email in the data". And now imagine me doing this:

update MYTABLE set EMAIL = 'uber.h4xx0r@somenastyplace.thief';
commit;


I think this should be answer enough as to why you do NOT want to be able to do this.
At all.

Thursday, August 29, 2013

Custom style and skin in OBIEE 11.1.1.7

When upgrading existing customized installations of OBIEE to 11.1.1.7, one thing that you may run into is a subtle change in the usage of the vanilla style and skin of the application.

FusionFX has become the default, but isn't immediately or better directly suited as a basis for your own custom style and skin.
The reason for that is, that FusionFX itself is only a subset of a full style+skin package and the vanilla application continues to use a lot of blafp.

Oh yes, /web/app/res also has become /web/appv2/res for some reason or another within Oracle_BI1, so here's what you find in there:




A cursory glance at the folder contents of FusionFX and blafp side-by-side shows quite some differences already:




Whipping out out trusty Firebug and what an out-of-the-box applications actually renders, we see blafp used for the application header:




while we see FusionFX being the source for the dashboards themselves:




As most GUI customizations replace first and foremost the logos in the application header and then moving on to the look & feel of the dashboards and analyses, this logically means that adapting the default FusionFX will only get you halfway to your destination.

What you need to do, in order to have a full and complete basis for your own custom skin, which contains all files and artifacts while retaining the slick FusionFX look (it does look a lot leaner and nicer now), is to merge the two into one package. doing this couldn't be any simpler than this:
1.) clone s_blafp and sk_blafp
2.) copy all the content of s_FusionFX and sk_FusionFX into the respective blafp folders, replacing all existing files





Since FusionFX is a modified subset of blafp, you'll retain all base blafp files and gain the modified and "newer" FusionFX files which supersede blafp.

All you need to do now, is rename the resulting folders...







...push them to the /analyticsRes/ directory (or whatever directory holds the deployment of your custom style and skin), reference it in the instanceconfig.xml and, voila, you've got a complete and fully customizable 11.1.1.7 style and skin package.