Feeds:
Posts
Comments

Archive for November, 2012

Recently I have installed sample app v207.  After using image couple of time, I was not able to restart OBIEE BI Server and Presentation services. After digging into log files I found below message.

oracle.ods.virtualization.engine.util.DirectoryException: LDAP Error 49 : [LDAP: error code 49 – Password Policy Error :9000: GSL_PWDEXPIRED_EXCP :Your Password has expired. Please contact the Administrator to change your password.]

 

There is not much information regarding a fix for this problem in linux based VM. Most of the instructions described in related blogs need OID management services client. I was able to fix this problem using below steps.

Open a terminal in VM and follow below commands.

cd /home/oracle/oid/Oracle_IDM1/ldap/bin

export ORACLE_HOME=/home/oracle/oid/Oracle_IDM1/
export ORACLE_INSTANCE=/home/oracle/oid/bioid2/

/* TNS Names for OID are in /home/oracle/oid/bioid2/config folder. Tnsname for OID is NOT ORCL. It is OIDDB */ I spent several hours to figure this out. Thanks to APP DBA website.

 

Below commands unlocks super user account

./oidpasswd unlock_su_acct=true connect=OIDDB

 

Navigate to folder where ldapmodify resides.

cd /home/oracle/oid/Oracle_IDM1/bin

Create “pwdreset.ldif”  file using vi editor.  Enter below lines.

dn: cn=orcladmin,cn=Users,dc=us,dc=oracle,dc=com
changetype: modify
replace: userpassword
userpassword: Admin123

 

Run below command to reset password

./ldapmodify -h obieesampleapp.us.oracle.com  -p 3060 -D cn=orcladmin -w Admin123 -f pwdreset.ldif

create pwdpolicydef.ldif file has below

dn:cn=pwdpolicyentry, cn=common,cn=products,cn=oraclecontext
changetype:modify
replace: pwdmaxage
pwdmaxage: 15552000
changetype:modify
replace: pwdexpirewarning
pwdexpirewarning: 1209600
changetype:add
add: pwdgraceloginlimit
pwdgraceloginlimit: 5

 

Run below command to increase password expiration age.

./ldapmodify -h obieesampleapp.us.oracle.com -p 3060 -D cn=orcladmin -w Admin123 -f pwdpolicydef.ldif

 

Useful bog http://blog.csdn.net/lele5000/article/details/8057797

Read Full Post »

OBIEE has a fairly simple EDIT interface for allowing ad-hoc users to create and modify reports (analysis). Sometimes you will come across business use cases where using edit is simply too much for users. Business users deserve a simple interface for dynamically filtering a data set that is presented in dashboard. It has to be simple and easy to use for users with basic level of technical capabilities.

In this article we will discuss few options for building “Dynamic Where Conditions” to offer simple filtering capability at runtime.

Below is an example of dashboard that allows users to select Column, Operator and Value to filter results.

concept

As shown in below screenshot, Product & Region prompts are built using out-of-box functionality.

prompt_for_operator

Main Concept behind this example is the ability of OBIEE to support presentation variables in where conditions. We don’t need to use jQuery to achieve this functionality. However I’m using jQuery to make this little nicer and also have the capability to prevent invalid input values and build only valid WHERE conditions.

Details:

prompt details

Where clauses in Analysis:

where_conditions

jQuery Scripts:

Add below javaScript to Dashboard.

<head>
<style type=”text/css”>

.CVFormatCell{text-align:left;}
.PromptStepTitleCell{display:none;}
.promptButtonsCell{display:none;}
</style>
<script src=”http://code.jquery.com/jquery-latest.js”> </script>
<script type=”text/javascript”>
function setForm() {

var i=0;
$(‘form’).each(function() {
i++;

if (i == 2) {
var myForm = $(this);

$(myForm).find(“label”).each(function(){
if ( $(this).attr(“title”) == ” “) {
$(this).parent().parent().hide();
}
});

var j = 0;
$(“.promptEditBoxField”).each(function(){

j++;
if ( ( j >= 4) && ( j <= 6)) {
$(this).hide();
}
});
}

});

}
</script>

<script type=”text/javascript”>

var oparrtxt = [ “Equal To”, “Not Equal To”, “Less Than”, “Greater Than” ];
var oparrsym = [ ” = “, ” != “, ” < ” , ” > ” ];
var coldisplay = [‘Revenue’, ‘Fixed Cost’, ‘Variable Cost’, ‘Unit Price’, ‘Discount Amt’];
var colformula = [‘”Base Facts”.”1- Revenue”‘, ‘”Base Facts”.”11- Fixed Costs”‘, ‘”Base Facts”.”10- Variable Costs”‘, ‘”Simple Calculations”.”20  Actual Unit Price”‘, ‘”Base Facts”.”3- Discount Amount”‘]

function clickApply() {
var i=0;
$(‘form’).each(function() {
i++;

if (i == 2) {
var $forminputs = $(“.promptTextField, .promptEditBoxField”);
var where1 = “1=1”;
var where2 = “1=1”;
var where3 = “1=1″;

if ( ($forminputs.eq(4).val() == ‘–Select Value–‘) || ($forminputs.eq(6).val() == ”)) {
//alert(‘no value selected’)
}
else {
where1 = colformula[jQuery.inArray($forminputs.eq(4).val(), coldisplay)] + ‘ ‘ + oparrsym[jQuery.inArray($forminputs.eq(5).val(), oparrtxt)] + $forminputs.eq(6).val() ;
}

if ( ($forminputs.eq(7).val() == ‘–Select Value–‘) || ($forminputs.eq(9).val() == ”)) {
//alert(‘no value selected’)
}
else {
where2 = colformula[jQuery.inArray($forminputs.eq(7).val(), coldisplay)] + ‘ ‘ + oparrsym[jQuery.inArray($forminputs.eq(8).val(), oparrtxt)] + $forminputs.eq(9).val() ;
}

if ( ($forminputs.eq(10).val() == ‘–Select Value–‘) || ($forminputs.eq(12).val() == ”)) {
//alert(‘no value selected’)
}
else {
where2 = colformula[jQuery.inArray($forminputs.eq(10).val(), coldisplay)] + ‘ ‘ + oparrsym[jQuery.inArray($forminputs.eq(11).val(), oparrtxt)] + $forminputs.eq(12).val() ;
}

$forminputs.eq(13).val( where1);
$forminputs.eq(14).val( where2);
$forminputs.eq(15).val( where3);

$forminputs.eq(13).hide();
$forminputs.eq(14).hide();
$forminputs.eq(15).hide();

}
});

$(“#gobtn”).click();

}
</script>

<script type=”text/javascript”>
function clear11FilterDisplay() {
$(“.FilterCell”).each(function(){
if( ($(this).html() == ‘1 = 1’) || ($(this).html() == ‘1=1’)){
$(this).parent().html(‘ ‘);
}
});

}
</script>
<script type=”text/javascript”>

$(document).ready(function(){

setForm();
});
</script>
</head>

Custom Apply button:

Add below to Dashboard to create “Apply” button.

<input type=”button” id=”Apply” name=”Apply” value=”Apply” onClick=”clickApply()” class=”button” />

dashboard_setup

jQuery Scripts in Analysis:

Add below script to analysis to remove prompt labels and 1=1 conditions from displaying in filter view.

<script type=”text/javascript”>

setForm();
clear11FilterDisplay();
</script>

analysis

Result:

result

Conclusion:

This is just a simple example of what can be done using dynamic where conditions. I can see several practical applications for this technique to improve usability of BI applications.

Feel free to drop a comment on how you can leverage this concepts to improve your business.

Read Full Post »