Pages

Tuesday, January 29, 2013

Upgrade Repository and Presentation Catalog from OBIEE 10g to 11g



Pre-Requisites

• Start up all the OBIEE 11g related services (BI Services and Web logic Server) and check that you can log in to Enterprise Manager,WLS Admin Console and OBIEE Answers.
Enterpise Manager   : http://localhost:7001/em
WLS Admin Console : http://localhost:7001/console
OBIEE Answers/DashBoard   : http://localhost:9704/analytics  


• All the releventrelevant TNS names used in the 10g rpd connections are present in <OBIEE_MW_HOME>/Oracle_BI1/network/admin/tnsnames.ora file


Step-1


Navigate to <OBIEE_MW_HOME>/Oracle_BI1/bin/ua.bat . This batch file is the Upgrade Assistant wizard. Launch the wizard by double clicking on it.
Once this launches, it specifies the version(11.1.1.3.0) the upgraded rpd will be. Click NEXT


 

 

Step-2

In this page select "Upgrade Oracle BI RPD and Presentation Catalog" radio button. Click NEXT
 

Step-3

Here check the "Upgrade Repository (RPD)" checkbox.
Specify the location of the 10g RPD file.
Enter the Administrator credentials of the old 10g RPD file.
Specify the password for the upgraded 11g RPD and confirm it once again.

 


Step-4

Specify the Weblogic Admin Console username and password. Port number is 7001
Click Next..

 



 
During the examination process, Upgrade Assistant checks for the following:
• The source directory exists.
• The source directory is readable and contains a file for upgrade.
Under the Status column, the word succeeded should appear. If instead, the word failed appears, inspect the log file for details.




 Step-5

Check the upgrade summary and click UPGRADE to start the upgrade process.
  


 Step-6

Once the upgrade process completes the process log output is available at <OBIEE_MW_HOME>\Oracle_BI1\upgrade\logs

 



 The new rpd will be named as OldPaint_BI001.rpd and placed at the following path:
<OBIEE_MW_HOME>\instances\instance1\bifoundation\OracleBIServerComponent\coreapplication_obis1\repository.
As part of upgrade, security is also upgraded from 10g to 11g. This includes the Users and Groups.
Manual customizations to files like instanceconfig.xml are not upgraded and must be redone after upgrade. Same applies for nqconfig.ini, even though the nqconfig.ini parameters are fully controlled from the Enterprise Manager in OBIEE 11g.
 

Hope you will find this article useful during your upgrade process...

Freeze Column Headers in OBIEE 11g (11.1.1.6.0)

We have a new feature in OBIEE 11.1.1.6.0 that freezes the data column header. So when a user scrolls down to the bottom of the report, the column header stays in place and only the data rows move. This is similar to the ‘Freeze Panes’ option in MS Excel.
By default this Freeze option is not enabled. We need to turn ON by adding set of attributes in  instanceconfig.xml file under <Views> element, between <GridView>… </GridView> class.



To do this..
Navigate to the path “<MiddlewareHome>\instances\instance2\config\OracleBIPresentationServicesComponent\coreapplication_obips1″ and open instanceconfig.xml file  and add the below entry between <Views> and </Views> tag

<GridViews>
<DefaultScrollingEnabled>true</DefaultScrollingEnabled>
<DefaultRowFetchSlicesCount>400</DefaultRowFetchSlicesCount>
<DefaultColumnFetchSlicesCount>300</DefaultColumnFetchSlicesCount>
<DefaultFreezeHeadersClientRowBlockSize>100</DefaultFreezeHeadersClientRowBlockSize>
<DefaultFreezeHeadersClientColumnBlockSize>15</DefaultFreezeHeadersClientColumnBlockSize>
</GridViews>


The entry in instanceconfig.xml should looks as below screenshot.




Note: Here I am enabling the Column Header freeze option with the Scroll bar if my request contains more than 400 records.
E.g. in Table view and Pivot view


I configured for 400 rows, So..what happens if the record count increases after 400 records?
We can click on “Get more rows” to get more rows as shown in below screen.


Try this it works.

Compare features in OBIEE 10g and 11g

When we compare OBIEE 10g and OBIEE 11g, there is lot of enhancements in services provided by OBIEE 11g and some changes in terminology is also there in OBIEE 11g.

Some important points/enhancements in OBIEE 11g when compared to OBIEE 10g are listed below
  1. OBIEE 11g uses WebLogic Server as the application server as compared to Oracle AS or OC4J in OBIEE 10g.
  2. The clustering process in much easier and automated in OBIEE 11g.
  3. We can now model lookup tables in the repository.
  4. The new UI called Unified Framework now combines Answers, Dashboards, and Delivers.
  5. A new column called the hierarchical column in introduced.
  6. BI Publishers is fully and seamlessly integrated with OBIEE 11g.
  7. New time series functions PERIOD ROLLING and AGGREGATE AT are introduced.
  8. In OBIEE 11g we can create KPIs to represent business metrics.
  9. The aggregate persistence wizard creates indexes automatically.
  10. The session variables get initialized when they are actually used in OBIEE 11g unlike OBIEE 10g where they were initialized as soon as a user logs in.
  11. OBIEE 11g now supports Ragged (Unbalanced) and Skipped Hierarchy.
  12. You can also define Parent-Child hierarchy in OBIEE 11g as well.
  13. SELECT_PHYSICAL command is supported in OBIEE 11g.
In OBIEE 11g there are some changes in the terminology as well.
  • iBots are renamed as Agents.
  • Requests are renamed as Analyses.
  • Charts are renamed as Graphs.
  • Presentation Columns are renamed as Attribute Columns. 

What are the primary differences between the OBIEE 10g and 11g security models and what happens during upgrade?


Security Task/Object OBIEE 10g OBIEE 11g What happens during upgrade from 10g to 11g?
Define Users and Groups in RPD file using OBIEE Admin Tool Default N/A. By default, users are defined in embedded WLS LDAP via FMW EM Console, or alternatively, in external LDAP. By default, existing users and groups migrated to embedded WLS LDAP. Existing groups are automatically mapped to an Application role.
Defining security policies Policies in the catalog and repository can be defined to reference groups within a directory. Policies are defined in terms of application roles, which map to users and groups in a directory. 10g catalog groups are automatically migrated in the upgraded catalog and assigned the same privileges, access and membership.
“Administrator” user Unique user with full administrative privileges. No single user named tor full administrative privileges. Administration can be performed by any user who is member of BIAdministrators group. “Administrator” user automatically added as member of “BIAdministrators” group in embedded WLS LDAP and granted Administrator role. The user specified during OBIEE 11g installation (i.e. “weblogic”, “biadmin”) is also a member of the BIAdministrators group.
Repository Encryption Available on sensitive elements only - i.e. user passwords, connection pool passwords, etc. Entire RPD encrypted via a password. Prompted to set a repository password while running the upgrade assistant. Do not lose this password as there is no feature to recover a lost password.
External Authentication and OBIEE Initialization (Init) Blocks Init blocks are required for external PDAP or external table authentication. Init blocks not required for WLS embedded LDAP. Init blocks are required for external LDAP or external table authentication. Upgraded RPD will continue to point to 10g LDAP or external tables. Initblocks may need to be modified to ensure that depreciated, or reserved word, variable names are renamed. NOTE: If you intend to use another LDAP server, such at Oracle Identity Management (OID), then you must upgrade to the embedded LDAP server. Please see Upgrade Guide for further details.
Catalog Groups Defined in Presentation Server Administration link Available for backward compatibility. Use of Application Roles in FMW EM Console recommended. Existing groups will be migrated. Recommendation is to use application roles instead. Privileges on catalog objects may be granted to an application role via BI Presentation server Administration link.
SA System Subject Area Optional Available for backward compatibility and requires init blocks and external tables. Use of Embedded LDAP is recommended. Upgraded 10g RPD will point to external tables, Initblocks may need to be modified to ensure that depreciated, or reserved word, variable names are renamed.
“Everyone” Presentation Server Group Default Replaced with AuthenticatedUser role. “Everyone” group migrated to AuthenticatedUser role.


I just want to consolidate basic difference between the legacy (!) OC4J instance for OBIEE 10g and the newbies Weblogic Server Instance for OBIEE 11g and viola …. here you go …


 

Thursday, January 24, 2013

Starting Services in OBIEE 11g

Before you complete the steps below the following Windows Services should **not** be running.

a. Oracle Process Manager (instance1)
b. Oracle Weblogic NodeManager

1) Start NodeManager from the Command Prompt

Cd <MIDDLEWARE_HOME>\wlserver_10.3\server\bin

startNodeManager.cmd

Wait till you see message "Secure socket listener start at port"

2) Start Admin server from command prompt

Cd <MIDDLEWARE_HOME>\user_projects\domains\bifoundation_domain\bin

startWebLogic.cmd

It will ask for user name / password, specify the user details that you have mentioned at the time of 11g install

Wait till you see message Admin server is in running mode.

3) Now start Managed server from GUI

Access WebLogic console from a browser

http://<machinename>:7001/console

Login, Environment > servers > Control > select bi_server1 > click on start

It would take some time for Managed server to start. Wait till you see Running status.

4) Now start the OBIEE components from command prompt

Cd C:\OBIEE\instances\instance1\bin

opmnctl startall


How to stop / start individual OBIEE 11g System Components from the OPMN

 

BI Service:

opmnctl stopproc ias-component=coreapplication_obis1
opmnctl startproc ias-component=coreapplication_obis1

Javahost:

opmnctl stopproc ias-component=coreapplication_obijh1
opmnctl startproc ias-component=coreapplication_obijh1

Presentation Service:

opmnctl stopproc ias-component=coreapplication_obips1
opmnctl startproc ias-component=coreapplication_obips1

Scheduler Service:

opmnctl stopproc ias-component=coreapplication_obisch1
opmnctl startproc ias-component=coreapplication_obisch1

Cluster Service:

opmnctl startproc ias-component=coreapplication_obiccs1
opmnctl stopproc ias-component=coreapplication_obiccs1


Sometimes I have a configuration change to make or need to restart a specific system component in one of my servers, here is a list of stop / start commands for each of the system components...

Wednesday, January 23, 2013

OBIEE 11.1.1.6.2 Writeback

Detailed Write Back steps in OBIEE 11.1.1.6.2


Step 1


Amend the instanceconfig.xml and add the LightWriteback entry as shown below with in the server instance tags

The instanceconfig.xml file is located in $MW_HOME/instances/instance1/config/OracleBIPresentationServicesComponent
/coreapplication_obips1 directory




Add the LightWriteback tag just above the /ServerInstance tag as in above example.

<LightWriteback>true</LightWriteback>

Restart the OPMN services for the instanceconfig amendment above to take effect

Login to Analytics http://<hostname>:9704/analytics

Set privileges within Administration screen




Add roles or users to the Write back privileges above

Step 2


Create a table used to store the write back table and import it into the physical layer in RPD









Ensure the connection pool user has required privileges to insert / update data on this table

Step 3

 



 

 

 

 

In Business Model, switch on the Writable property for all required columns



This completes the one time setup required to carry out write back functionality. Following steps are required for setting up an actual write back



Step 4

 

 

Create a new analysis with the required columns









Select the Column Properties using the drop down arrow on each column













Choose the column property and Tick the Enable Write Back check box on the Write Back tab for the required column. In my case, I have enabled only for USD Amount.

Note: If the ‘Writable’ flag is not enabled in RPD then this check box also cannot be enabled

Step 5

 



 





 

 

 


Note that only the USD_AMT column is displayed as editable

Choose the Edit Table View option and click on Table View Properties

 

 

 

 

 

 

 

 

 

 









Tick the Enable Write Back on enter a Template Name. I entered ‘RPA’ and this can be any user given name. Note this name is case sensitive. Below you will see how to create this template called RPA used here



Step 6


Click on the advanced tab of the analysis






























Here under the Analysis XML box we want to note down all the columnID's that we will be using to populate the Writeback table with

Make a note of the columnIDs for the required columns. These will be used in the next step


Step 7

 

Create XML file as below and place it in




$MW_HOME/instances/instance1/bifoundation/OracleBIPresentationServicesComponent/coreapplication_obips1
/analyticsRes/customMessages directory if the analytics res directory has been deployed.

Please see the Deploying analyticsRes for custom Messages post that we have created that wont ever get overwritten by Oracle Patches etc

If you dont want to use the analyticsRes custom messages folder then you can use the seeded folder


If the directory ‘customMessages’ does not exist then create one in the path mentioned

 

--------Start of XML--------

<?xml version="1.0" encoding="utf-8" ?>

<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">

   <WebMessageTable lang="en-us" system="WriteBack" table="Messages">

      <WebMessage name="RPA">

         <XML>

            <writeBack connectionPool="Writeback">

                 <insert></insert>

                <update>update encumbered_rpa set usd_amt = @{cbe48633dbeb2bda8},update_date = sysdate,updated_by = '@{cb26f41933b0c7d7c}' where product_id = @{c9c0a2069f38dda8c}</update>

            </writeBack>

         </XML>

      </WebMessage>

   </WebMessageTable>

</WebMessageTables>

-------End------


 

Within the update tags have the update statement that gets executed in the database using the columnIDs picked from the Advanced tab

Save the XML as RPA.xml
Bounce the OPMN service for this XML to be loaded and available for use

 

Step 8

 

Run the report that was created in Step 4
 












If all the steps are carried as they should be then you will see two buttons as in the above screen shot. The Update functionality is ready.

Amend the value of any editable field and hit the Update button then the change is carried out in the database and the screen gets refreshed with the new value. The statement that is given in the XML template between the update tags gets executed.

Revert button is used to undo any changes that are not yet sent to the database.

If you have noticed, the insert statement is left blank. But the same XML can be amended to provide the functionality of insert. If the amended record exists in DB, then the update statement is issued and if the amended record does not exist in DB then the insert statement is issued.

You don’t necessarily have a insert statement with the insert tags. You can use a function call here or you can issue an update statement to a different table. Using this base functionality you can deliver tailor made solutions fit for purpose.

Tuesday, January 22, 2013

OBIEE11g: "NULL" Value in Prompts

In OBIEE 11g when we create a prompt on a column we can see "NULL" value is in the prompt. As it is the unwanted value we have to suppress this value. We can achieve this by following the below steps...

Step 1 : NULL is getting displayed in the Prompt



Step2 : Edit the prompt and look for the column on which the prompt is created

Step3 : Open the RPD in Online or Offline mode. Go to the physical layer and select the table, expand the table and select the column

Step 4 : Edit the properties of the column by double clicking on it.




Step 5 : Unchecked the Check box which says "Nullable".


Step 6 : Save the RPD and check the same on the dashboard. Now you can see the NULL value got disappeared.
NOTE : After saving the RPD changes it will take some time to reflect the result on the dashboard. Immediately you can not see the NULL value disappeared. It will take about an hour or so to reflect if you make the changes in Online Mode. If you restart the services then you can see the immediate expected result.
After making the changes in Online mode and saving it dont forget to clear the cache.

Sunday, January 13, 2013

Changing Brand Name (Next to Oracle Logo) and Browser Title

1. To change Brand Name (Next to Oracle Logo) on the Business Intelligence home page ,

Alter kmsgHeaderBIBrandName attribute of productmessages.xml file under <Middleware_Home>\Oracle_BI1\bifoundation\web\msgdb\l_en\messages.
  
2. To change OBIEE 11G browser Title

To change the OBIEE 11G browser Title name to your custom text Open productmessages.xml from <Middleware_Home>\Oracle_BI1\bifoundation\web\msgdb\l_en\messages. Search for kmsgProductPortal attribute and change its value with your custom text.

Example:

<WebMessage name="kmsgHeaderBIBrandName"><TEXT>4i Apps BI</TEXT></WebMessage>
<WebMessage name=”kmsgProductPortal”><TEXT>Haree BI Interactive Dashboards</TEXT>
</WebMessage>


save it and stop and start the Opmn to restart all OBIEE 11G services.

OBIEE Pivot Table nulls to Zeros for empty Rows

When you create a pivot table and you see nulls in the measures part , You want to see 0 or 0.00 instead

Just change the data format on the report column in the report itself too

Custom format

#,##0.00;-#,##0.00;0.00

For Nulls if you want zeros 0 instead of null then enter:
#,##0;-#,##0;0

For a Dash
#,##0;-#,##0;-

A custom Message instead of null
#,##0;-#,##0;no data

OBIEE Pivot Table insert a word in Top Left Cell

Place static code in Answers Request or Dashboard "Contains HTML"



 <script  type="text/javascript"  language="javascript">
window.setTimeout(InsertText,100);
function InsertText() {
   if (document.body!=null)
  {
    var cols = document.getElementsByTagName('td');
      for (var x=0; x<cols.length; x++) {
  if (cols[x].className == 'PTCC' && cols[x].innerHTML.indexOf('')!=-1)
    cols[x].innerHTML = 'PIVOT TABLE';
}
 
   } else {
      window.setTimeout(InsertText,100);
   }
}
</script>
<style type="text/css">
.PTCC
{          
             color:#335C85;
             background-color:#ffff99;
             font-family:Arial;
             font-size:8pt;
             font-weight:bold;
             text-align:center;         
}       
</style>


Replace the class name PTCC with the appropriate class name using page source.

Eg: