tag:blogger.com,1999:blog-42382162062132812102024-03-14T07:51:38.533+05:30Notebook of Oracle BI<b>Name: Diptesh</b><br>Std: II<br>Div: BDipteshhttp://www.blogger.com/profile/17252932020323208384noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-4238216206213281210.post-21661953257754551472010-01-22T19:29:00.003+05:302011-02-04T18:49:47.907+05:30Oracle BI - RPD Change Java ToolHello World!<br />
<br />
This is my first JAVA tool for Oracle BI, so "Hello World!" :)<br />
<br />
I had to change RPD very frequently in NQSConfig.INI and restart services. This tool helps people working on OBIEE on Windows system and looking for a shortcut to change RPD and restart services on just one click or one line of command.<br />
<br />
<a name='more'></a><br />
System Requirements:<br />
<br />
<ul><li>Microsoft Windows 98 / XP / Vista </li>
<li>JRE 1.6 or above<br />
</li>
<li>Oracle BI EE 10g<br />
</li>
</ul><br />
<br />
<u><span style="font-size: small;"><b>How to use?</b></span></u><br />
<br />
Type java –jar ChangeRPD.jar <RPDFileName> [Restart OBI Server [Restart OBI Presentation Server [NQSConfig File]]]<br />
<br />
<b>RPDFilename:</b> Name of RPD file including ".rpd" extension. Parameter is required.<br />
<br />
<b>Restart OBI Server:</b> Y restarts Oracle BI Server. Default is not to restart the server. Parameter is optional.<br />
<br />
<b>Restart OBI Presentation Server:</b> Y restarts Oracle BI Server. Default is not to restart the server. Parameter is optional.<br />
<br />
<b>NQSConfig File:</b> NQSConfig File is path to NQSConfig.INI including filename. Default is C:\OracleBI\server\Config\NQSConfig.INI. Parameter is optional.<br />
<br />
Type java –jar ChangeRPD.jar help gives usage direction.<br />
<br />
<a href="http://sites.google.com/site/dipteshweb/ChangeRPD.jar">Download</a> <a href="http://sites.google.com/site/dipteshweb/ChangeRPD-src.rar">Source</a><br />
<br />
<br />
This is how I use it. I have created a .bat file<br />
<br />
<br />
########### CR.BAT ###########<br />
<br />
<span style="font-family: Courier New;">java –jar ChangeRPD.jar %1 %2 %3 %4<br />
</span><br />
##############################<br />
<br />
<br />
Then, I copied CR.BAT and ChangeRPD.jar to C:\WINDOWS.<br />
<br />
<span style="text-decoration: underline;"><b><br />
</b></span><br />
<span style="text-decoration: underline;"><b>Example:<br />
</b></span><br />
To change RPD, I type CR samplesales.rpd Y<br />
<br />
That changes Star = samplesales.rpd into the config file and restarts Oracle BI Server.<br />
<br />
<br />
<br />
This is free to use, modify, distribute. You can do enhancements over it, if you like. Share your views about it.Dipteshhttp://www.blogger.com/profile/17252932020323208384noreply@blogger.com0tag:blogger.com,1999:blog-4238216206213281210.post-23252790914045766392010-01-21T11:58:00.001+05:302010-01-22T08:34:46.466+05:30Oracle BI - Cross Column Conditional Formatting in Pivot Table (workaround)Pivot table is a great way to analyze a cube of data. Oracle BI supports pivot table, but conditional formatting having condition on the same column works correctly. If you configure condition which is based on the column other than the one you are formatting conditionally, the conditional formatting will appear in Table view but not in Pivot table view.<br />
<br />
Fortunately, I found a workaround for it.<br />
<a name='more'></a>This is a sample report.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCRN_SL1wJiQ4G40a9lByWdwlP9_N_Rv3DnL-ATz9kmnwGOO3e77RWqgGh4xGrhyphenhyphenPFo-h6SzFH_n_EjXvDvUO0RnLWDFUajGocqaA1ETqer5VFAs1fx5QKNtGKVAYyGEsskJsj8yUtEV4/s1600/SampleReport.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCRN_SL1wJiQ4G40a9lByWdwlP9_N_Rv3DnL-ATz9kmnwGOO3e77RWqgGh4xGrhyphenhyphenPFo-h6SzFH_n_EjXvDvUO0RnLWDFUajGocqaA1ETqer5VFAs1fx5QKNtGKVAYyGEsskJsj8yUtEV4/s640/SampleReport.jpg" width="640" /></a><br />
</div> I want to see region in a different color which has Billed Qty less than or equal to 50,000.<br />
This would not display desired results in Pivot table.<br />
<br />
Now the workaround is simple and has html markup involved.<br />
<br />
Go to criteria tab and modify the formula of Region attribute by clicking fx button.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPA5n2-fEiPSvNRYIIlQIQOONnDevyCwlXFuXekBMrYSruwfGx_nacj66nShyphenhyphenvp4A7ZYt-7CAhx16osJcF1ro33XTHrBRu8PQH9fqKhbG7nHJbnRKdO1T7pUpTaAY278cSRlypodJ9xqo/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPA5n2-fEiPSvNRYIIlQIQOONnDevyCwlXFuXekBMrYSruwfGx_nacj66nShyphenhyphenvp4A7ZYt-7CAhx16osJcF1ro33XTHrBRu8PQH9fqKhbG7nHJbnRKdO1T7pUpTaAY278cSRlypodJ9xqo/" width="640" /></a><br />
</div>The formula of the attribute will be<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">"D2 Market".M04 Region" || ''</span><br />
<br />
Here '<!--' is an HTML tag, which can be used to comment / remark / hide some text in browser.<br />
<br />
<span style="font-size: x-small;"><span style="color: #990000;">Note:</span> If you copy and paste above formula, correct single quote ( ' ) and double quotes ( " ) if required. Because while copying from browser, it may be replaced with some special characters.</span><br />
<br />
Now, time is to set format and conditional format.<br />
<br />
<br />
Set column format to HTML by clicking format hand icon and go to data format tab of Region tab.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkznI34vcRa7jNqKX0mUargpmReaOqqhP5adDa4IEo2Io-Kd00j_Rbzog03kxXjMZt7FVSnhplF-6Aonjg8S7rmgg8pxvT83qIcb9-lrfLo46nlN9bQWSVfOb3FSPbkOB4U_zvxbiIle4/s1600/HTMLFormat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkznI34vcRa7jNqKX0mUargpmReaOqqhP5adDa4IEo2Io-Kd00j_Rbzog03kxXjMZt7FVSnhplF-6Aonjg8S7rmgg8pxvT83qIcb9-lrfLo46nlN9bQWSVfOb3FSPbkOB4U_zvxbiIle4/s640/HTMLFormat.jpg" width="640" /></a><br />
</div><br />
To set Conditional Format, go to Conditional Format tab and click on add condition. Select Region here.<br />
<br />
You will have to enter values as:<br />
<br />
East<br />
West<br />
South<br />
North<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuocRUqV2hizPVfZ4xR0hWE40xuTxM5MH7jR6I1_RrvQLaE8LiknVHPUHd8vpRJKzMrx2XSoDcIPdF-JCIqeeH_xsT0IzIHEZbUN30FUdPVqbjLLdlqEWoAAUmNcIfsetErcaPtKCAydo/s1600/ConditionValue.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuocRUqV2hizPVfZ4xR0hWE40xuTxM5MH7jR6I1_RrvQLaE8LiknVHPUHd8vpRJKzMrx2XSoDcIPdF-JCIqeeH_xsT0IzIHEZbUN30FUdPVqbjLLdlqEWoAAUmNcIfsetErcaPtKCAydo/s640/ConditionValue.jpg" width="640" /></a><br />
</div><br />
<br />
When you use case statement, it doesn't appear in the list at the right side. If you have not used case statement then you would be able to see the values, but you will have to select all values which are <=50000.<br />
<br />
Then select formatting you want to be displayed. That's it, we are done. Now run the report in pivot table.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhACgoPnrQL3ZqSBK72VY6piBpLguUCCf3OKBQ2InJI31yyYpKrAWW9nSEm80TkbioswVB1fPG6-YktRR3znrPzB8_auWfLMRj7DiczyQwhjGeWH-GSL10PIDBfNnpSGy8rgqIf62FOmTs/s1600/ConditionalFormattingInPivot.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhACgoPnrQL3ZqSBK72VY6piBpLguUCCf3OKBQ2InJI31yyYpKrAWW9nSEm80TkbioswVB1fPG6-YktRR3znrPzB8_auWfLMRj7DiczyQwhjGeWH-GSL10PIDBfNnpSGy8rgqIf62FOmTs/s640/ConditionalFormattingInPivot.jpg" width="640" /></a><br />
</div>Dipteshhttp://www.blogger.com/profile/17252932020323208384noreply@blogger.com9tag:blogger.com,1999:blog-4238216206213281210.post-74763775146287112532010-01-03T00:05:00.016+05:302010-01-24T18:35:06.268+05:30Oracle BI - Localization - Translate Web Catalog Objects (Part 2)<a name='more'></a><br />
<br />
<object width="657" height="389"><param name="movie" value="http://www.youtube.com/v/TrsotY8_pL0&hl=en_US&fs=1&color1=0x2b405b&color2=0x6b8ab6&hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/TrsotY8_pL0&hl=en_US&fs=1&color1=0x2b405b&color2=0x6b8ab6&hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="657" height="389"></embed></object>Dipteshhttp://www.blogger.com/profile/17252932020323208384noreply@blogger.com0tag:blogger.com,1999:blog-4238216206213281210.post-56986753768944215202009-12-16T13:53:00.029+05:302010-01-24T18:39:12.089+05:30Oracle BI - Localization - Translate Metadata Objects (Part 1)Oracle BI supports dynamic name of a presentation object, which will be retrieved from a session variable.<br />
<br />
This feature enables translation of metadata objects into various languages. The topic of translation is referred as different terms i.e.<br />
<br />
Localization: Because the objects are displayed in local language.<br />
<br />
Globalization: This is seen in Siebel CRM application.<br />
Internationalization: Because, it supports users internationally.<br />
<br />
<br />
<a name='more'></a><br />
<br />
I am trying to document Localization in two parts<br />
Part 1: Localize / Translate Metadata Objects<br />
Part 2: <a href="http://dipteshs.blogspot.com/2010/01/oracle-bi-localization-translate-web.html">Localize / Translate Web Catalog Objects</a><br />
<br />
This post is related to part one. I've tried to show that in a recorded video below.<br />
<br />
<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/wq9PB5SmZdo&hl=en_US&fs=1&color1=0x2b405b&color2=0x6b8ab6&hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/wq9PB5SmZdo&hl=en_US&fs=1&color1=0x2b405b&color2=0x6b8ab6&hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>Dipteshhttp://www.blogger.com/profile/17252932020323208384noreply@blogger.com0tag:blogger.com,1999:blog-4238216206213281210.post-42273375436078202692009-11-25T22:52:00.037+05:302010-01-24T18:40:35.846+05:30Group your measure into a Dynamic Range - OBIEEThis was one of the interview questions, asked to me.<br />
<br />
Requirement was for a report, where user can see a measure and range in which that attribute is falling. Range had to be dynamic.<br />
<br />
<a name='more'></a><br />
<br />
The suggestion was to store a range in a separate dimension and then populate related foreign key in fact table. And dynamism would be achieved by changing range at the DB.<br />
<br />
Here is another solution which gives user flexibility of choosing range gap and changing the range dynamically from Dashboard.<br />
<br />
<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/QClfLvZBgI4&hl=en_US&fs=1&color1=0x2b405b&color2=0x6b8ab6&hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QClfLvZBgI4&hl=en_US&fs=1&color1=0x2b405b&color2=0x6b8ab6&hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>Dipteshhttp://www.blogger.com/profile/17252932020323208384noreply@blogger.com1tag:blogger.com,1999:blog-4238216206213281210.post-52666709338186242312009-11-08T23:10:00.003+05:302009-12-17T12:04:58.013+05:30Pass Values to Prompts or Promted ColumnsI had come across a question from my friend for passing values to prompts from an interface which is external to OBI. <br />
<br />
<a name='more'></a>To achieve the required results, there a URL format to be followed.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4OXPZOTEtcsVgctJ2Q9P7ZetzgPQGBwBclTZc1zzHM41z67r7Lrfmqfqihe80OOUhm-WzDcPcJ99C4Zw6llLsiFNANIOVApxg8DgRmrzTncsKD9COgKCBUVqPCb81wZhdifw2k87p6AM/s1600-h/Dashboard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4OXPZOTEtcsVgctJ2Q9P7ZetzgPQGBwBclTZc1zzHM41z67r7Lrfmqfqihe80OOUhm-WzDcPcJ99C4Zw6llLsiFNANIOVApxg8DgRmrzTncsKD9COgKCBUVqPCb81wZhdifw2k87p6AM/s400/Dashboard.jpg" /></a><br />
</div><br />
This is a dashboard page ("Page 1") having a prompt and a request. Here "M04 Region" and "M03 District" are prompted columns.<br />
<br />
Use this URL to pass values. I have set M04 Region="East" and M03 District="District 1"<br />
<br />
http://localhost/analytics/saw.dll?Dashboard&PortalPath=/users/administrator/_portal&Page=Page 1&Action=Navigate&col1="D2 Market"."M04 Region"&val1="East "&col2="D2 Market"."M03 District"&val2="District 1"<br />
<br />
I have just copied and pasted above URL into address bar and I got the results.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkjYOB2z5mTUBC0S_AW2cp7_gbIzSYXb2moMr3CSMJPVVQdE6Thp7N4rYCIurtsfjhM9BtUGaSFAaVOfa_I9y0tlDONsL5XMqaMlF6vefUPjIo2H0K-xrgsnz7TkRpHYgPPt3QJSnT9XA/s1600-h/Dashboard_Values_Set.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkjYOB2z5mTUBC0S_AW2cp7_gbIzSYXb2moMr3CSMJPVVQdE6Thp7N4rYCIurtsfjhM9BtUGaSFAaVOfa_I9y0tlDONsL5XMqaMlF6vefUPjIo2H0K-xrgsnz7TkRpHYgPPt3QJSnT9XA/s400/Dashboard_Values_Set.jpg" /></a><br />
</div><br />
This URL can be called from an application. (i.e. goURL method of JAVA). To add user name and password to it, append &nquser=username<user>&nqpassword=<password>password<br />
</password></user>Dipteshhttp://www.blogger.com/profile/17252932020323208384noreply@blogger.com1tag:blogger.com,1999:blog-4238216206213281210.post-30255168129116525962009-10-01T13:35:00.011+05:302009-10-22T12:49:48.899+05:30Oracle BI - Multiple RPDs on single OBI ServerLoading multiple RPD on a single OBI server is very easy. But there is an extra requirement to access multiple RPDs.<br />
<br />
<a name='more'></a><br />
<br />
You need as many presentation servers as number of RPDs loaded into OBI server. That means if you load 2 RPDs into the OBI Server, you will need two Presentation Servers and DSNs pointing to that OBI Server to access both RPDs.<br />
<br />
<br />
<br />
<ul><li>OBI Server Configuration</li>
<li>Analytics DSN Configuration</li>
</ul><span style="font-weight: bold;">OBI Server Configuration:</span><br />
Open NQSConfig.INI from \server\Config\ (Normally SAROOTDIR=C:\OracleBI in windows and /OracleBI/ for Unix)<br />
<br />
<br />
You will find Start = samplesales.rpd,DEFAULT;<br />
Add one more RPD. Star2 = paint.rpd;<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_5gqxDfjSXm7gMk9e81RKiQ8rTWJCFvZ0GvAn2b_EiWY7r1AlOZaNfisZy7c5Gd4JWXP0Zq4iDb4oXfaCYV301KlLUkntuiPrI4DshLIoj_kr0vROY4OkIeIDGK0JW_GThFPMitunOQ8/s1600-h/NQSConfig.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5389459172294150962" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_5gqxDfjSXm7gMk9e81RKiQ8rTWJCFvZ0GvAn2b_EiWY7r1AlOZaNfisZy7c5Gd4JWXP0Zq4iDb4oXfaCYV301KlLUkntuiPrI4DshLIoj_kr0vROY4OkIeIDGK0JW_GThFPMitunOQ8/s400/NQSConfig.JPG" style="cursor: pointer; display: block; height: 143px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
Now restart OBI Server.<br />
<br />
DEFAULT keyword in NQSConfig.INI specifies DEFAULT loaded and presented RPD. Default loaded RPD is samplesales.rpd. So when you login to Oracle BI, samplesales.rpd will be available to you for querying.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnN7ER028EB9RNNt51Lw4ZTghgcJf1KuChwu6TW8GVPr_KWhbnzu93LK83r9VupgRmnMvhyphenhyphen9-SG8zRjM02FNXsJiKA6U04KiLUXBdnFSS-ScJg3IsYkAVW_OPFwIhuH5IfeQTrqe6_FWA/s1600-h/BeforeODBCChange.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5389461540074151378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnN7ER028EB9RNNt51Lw4ZTghgcJf1KuChwu6TW8GVPr_KWhbnzu93LK83r9VupgRmnMvhyphenhyphen9-SG8zRjM02FNXsJiKA6U04KiLUXBdnFSS-ScJg3IsYkAVW_OPFwIhuH5IfeQTrqe6_FWA/s400/BeforeODBCChange.JPG" style="cursor: pointer; display: block; height: 227px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
<br />
Now we have to change the default RPD (Star) to Star2. That we can do by modifying DSN Entry.<br />
<br />
Go to Control Panel\Administrative Tools and open "Data Sources (ODBC)" OR type "odbcad32" in Run dialog box.<br />
<br />
Go to System DSN tab. Select AnalyticsWeb DSN and click "Configure...".<br />
<br />
Click Next on first dialog box, leaving all setting as it is.<br />
<br />
<sarootdir><user_home>Enter Login ID and password. Check "Change the default repository to" and enter "Star2" in the text box below. Click next and then Finish.<br />
<br />
</user_home></sarootdir><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhld1MScoghLFtzkF48EYWFtk6YoUoGmcurbQ_-REF5jV_RodwHt7afOCJgtTdMucDL7f4gzKjMBCh_cJkgtIXdEs3-BUra25ER44uSqVtwXZybelkygCf_FegCIaoAoo2UEB5Dnw0r6ng/s1600-h/ODBC.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5389463846584771026" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhld1MScoghLFtzkF48EYWFtk6YoUoGmcurbQ_-REF5jV_RodwHt7afOCJgtTdMucDL7f4gzKjMBCh_cJkgtIXdEs3-BUra25ER44uSqVtwXZybelkygCf_FegCIaoAoo2UEB5Dnw0r6ng/s400/ODBC.JPG" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbz3WsMBnRmV0ZVsA1-WInBBcDfK3wxI3lHxggxAKhW9n_L9SZqjkhyf8RCleK4b87qFCzJJBQmS-5s17jH-vEuUkx1r-DwZdlu6PFeWO83nm6JE4ZvefG-eZP3SaH5hgKRkFMcNpBBiE/s1600-h/ODBC2.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5389463856993693282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbz3WsMBnRmV0ZVsA1-WInBBcDfK3wxI3lHxggxAKhW9n_L9SZqjkhyf8RCleK4b87qFCzJJBQmS-5s17jH-vEuUkx1r-DwZdlu6PFeWO83nm6JE4ZvefG-eZP3SaH5hgKRkFMcNpBBiE/s400/ODBC2.JPG" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
<sarootdir><user_home>Now restart Oracle BI Presentation service. You will see second rpd in your Answers.<br />
<br />
</user_home></sarootdir><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrrDWOT135s8J0mBjEiOIl_cCuba5n27znh0Aar1VrG06kqkGuDb8bt-0MoF-cRQn-s_gCRRZGgzIVGlGXYKTSYUqneywdU9WlVCZpTfG2WKZtqjYek8PLOggoblmYukM30_BCOrJsUOs/s1600-h/AfterODBCChange.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5389463866409364226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrrDWOT135s8J0mBjEiOIl_cCuba5n27znh0Aar1VrG06kqkGuDb8bt-0MoF-cRQn-s_gCRRZGgzIVGlGXYKTSYUqneywdU9WlVCZpTfG2WKZtqjYek8PLOggoblmYukM30_BCOrJsUOs/s400/AfterODBCChange.JPG" style="cursor: pointer; display: block; height: 227px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><sarootdir><user_home><br />
</user_home></sarootdir>You can also access two RPDs on the same matching by creating <a href="http://dipteshs.blogspot.com/2009/09/multiple-oracle-bi-presentation.html">two Oracle BI Presentation Service</a>.<br />
<sarootdir><user_home><br />
</user_home></sarootdir>Dipteshhttp://www.blogger.com/profile/17252932020323208384noreply@blogger.com0tag:blogger.com,1999:blog-4238216206213281210.post-30609056041078696672009-09-27T16:16:00.014+05:302010-01-23T14:19:36.740+05:30Multiple OBI Presentation Services on same machine - WindowsHello Oracle BI practitioners, this is my first blog. I would be happy if I get any +ve or -ve comments.<br />
<br />
<a name='more'></a><br />
<br />
I was searching on how to run more than one Oracle BI Presentation Service (PS) on the same box, especially on windows.<br />
<br />
My requirement was to run / load two RPDs in same box and access, which lead me to the requirement of running multiple presentation services on same machine. I have read through few blogs and implemented the requirement. I am still looking for more information about Isapiconfig.xml, which will enable me to deploy my applications on IIS and point them to particular presentation service.<br />
<br />
<br />
<br />
This diagram illustrates the impacted part of OBI architecture:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh59ozB9FPs1pSdfAQjy1SYs9qMKozTIqWB0fkkNdjC02utuDZ-LwnzeGDZurdmDY7A8POJ2Oo0ZLoFKil_Ok4sWEUG5WgfeQbZ1Ewt4-qdoQZsfgjkLAdJCaC2o43NvQ-YP1prpOld9FY/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh59ozB9FPs1pSdfAQjy1SYs9qMKozTIqWB0fkkNdjC02utuDZ-LwnzeGDZurdmDY7A8POJ2Oo0ZLoFKil_Ok4sWEUG5WgfeQbZ1Ewt4-qdoQZsfgjkLAdJCaC2o43NvQ-YP1prpOld9FY/" width="400" /></a><br />
</div><br />
<br />
Below are high level steps to implement multiple presentation servers on same windows box.<br />
<ol><li>Deploy two applications to point to each presentation services</li>
<li>Create two presentation services</li>
</ol><br />
<br />
<span style="font-weight: bold;">1. Deploy applications on OC4J</span><br />
<br />
When you install OBI on OC4J, it deploys application "analytics" with default configurations on OC4J.<br />
<br />
To be safe while trying these, deploy two applications. One "OBI" and second "OBICustom".<br />
<br />
Goto http://localhost:9704/em/ and then login to Enterprise Manager. Click on Applications tab.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjuLEiizy9Jgk3pYCSUywPWFwPyrdNq1XufkvMYYjHuab_32d3v9E1bsN8iXip3HmSziGak4eTJFD7juB_phg6WL1vABQHf6ktzkyxS5Pz3WEBlxVR8kC8oAUjC4Iic3zfWknlVYI95b8/s1600/OC4J.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjuLEiizy9Jgk3pYCSUywPWFwPyrdNq1XufkvMYYjHuab_32d3v9E1bsN8iXip3HmSziGak4eTJFD7juB_phg6WL1vABQHf6ktzkyxS5Pz3WEBlxVR8kC8oAUjC4Iic3zfWknlVYI95b8/s400/OC4J.jpg" width="400" /></a><br />
</div><br />
<br />
Then click on Deploy button.<br />
<br />
Choose following options.<br />
<br />
<span id="idOriginalPage"><span style="font-weight: bold;">Archive Location</span>=</span>%SAROOTDIR%\web\analytics.war<br />
Select <span id="idOriginalPage"><span style="font-weight: bold;">Automatically create a new deployment plan.</span><br />
<br />
</span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhlb-JLqDnnDjRY1HI-NHXOijVWon-2kydeLLR5qRUOGwgKsq2D3QVr-aiLE1AsspmFWOEEOekzhfLNLg0rDoIz87cKywgEeVtSAxYbBhwlW5och9e8FxJbn2GQBCWD8ohaxtdQp3Y7d8/s1600-h/Deploy.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5391050839344197378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhlb-JLqDnnDjRY1HI-NHXOijVWon-2kydeLLR5qRUOGwgKsq2D3QVr-aiLE1AsspmFWOEEOekzhfLNLg0rDoIz87cKywgEeVtSAxYbBhwlW5och9e8FxJbn2GQBCWD8ohaxtdQp3Y7d8/s400/Deploy.jpg" style="cursor: pointer; display: block; height: 239px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><span id="idOriginalPage"><br />
and then Click Next button<br />
<br />
</span>Give Application Name and <span id="idOriginalPage">Context Root=</span>OBI<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaSt6EP-CNIzwlg48ppd_z-zX-1AcrJ-1E46zQeNQq1AsI0ZHW-At_WD9G71tKpu7JWcOIv-G8hp9pNRma9OxUnNrAFwR_kJ_VjGwSI3jaHYX15AY9EOZDVpbdPJht7i5SK4KRYX22e_Y/s1600-h/AppAttrib.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5391050831097585858" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaSt6EP-CNIzwlg48ppd_z-zX-1AcrJ-1E46zQeNQq1AsI0ZHW-At_WD9G71tKpu7JWcOIv-G8hp9pNRma9OxUnNrAFwR_kJ_VjGwSI3jaHYX15AY9EOZDVpbdPJht7i5SK4KRYX22e_Y/s400/AppAttrib.jpg" style="cursor: pointer; display: block; height: 239px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
Click on Next button and then click on Deploy button.<br />
<br />
It will take some time to deploy and display log<br />
<br />
Sample Log:<br />
<span id="idProgMessageLayerHeader" style="display: block; font-family: courier new; font-size: 78%; font-style: italic;"><span id="idProgMessageBox">[Sep 27, 2009 9:32:48 PM] Application Deployer for OBI STARTS.<br />
[Sep 27, 2009 9:32:48 PM] Copy the archive to C:\OracleBI\oc4j_bi\j2ee\home\applications\OBI.ear<br />
[Sep 27, 2009 9:32:49 PM] Initialize C:\OracleBI\oc4j_bi\j2ee\home\applications\OBI.ear begins...<br />
[Sep 27, 2009 9:32:49 PM] Unpacking OBI.ear<br />
[Sep 27, 2009 9:32:52 PM] Done unpacking OBI.ear<br />
[Sep 27, 2009 9:32:52 PM] Unpacking analytics.war<br />
[Sep 27, 2009 9:34:03 PM] Done unpacking analytics.war<br />
[Sep 27, 2009 9:34:03 PM] Initialize C:\OracleBI\oc4j_bi\j2ee\home\applications\OBI.ear ends...<br />
[Sep 27, 2009 9:34:03 PM] Starting application : OBI<br />
[Sep 27, 2009 9:34:03 PM] Initializing ClassLoader(s)<br />
[Sep 27, 2009 9:34:03 PM] Initializing EJB container<br />
[Sep 27, 2009 9:34:03 PM] Loading connector(s)<br />
[Sep 27, 2009 9:34:04 PM] Starting up resource adapters<br />
[Sep 27, 2009 9:34:04 PM] Initializing EJB sessions<br />
[Sep 27, 2009 9:34:04 PM] Committing ClassLoader(s)<br />
[Sep 27, 2009 9:34:04 PM] Initialize analytics begins...<br />
[Sep 27, 2009 9:34:04 PM] Initialize analytics ends...<br />
[Sep 27, 2009 9:34:04 PM] Started application : OBI<br />
[Sep 27, 2009 9:34:04 PM] Binding web application(s) to site default-web-site begins...<br />
[Sep 27, 2009 9:34:04 PM] Binding analytics web-module for application OBI to site default-web-site under context root OBI<br />
[Sep 27, 2009 9:34:04 PM] Binding web application(s) to site default-web-site ends...<br />
[Sep 27, 2009 9:34:04 PM] Application Deployer for OBI COMPLETES. Operation time: 75708 msecs</span></span><br />
Now one application is ready to be accessed. The URL will be http://localhost:9704/OBI/<br />
<br />
<span id="idProgMessageLayerHeader" style="display: block;"><span id="idProgMessageBox">Click Return<br />
</span></span><br />
Follow the same steps as above, except give Application Name and <span id="idOriginalPage">Context Root=</span>OBICustom<br />
The URL for OBICustom will be http://localhost:9704/OBICustom/<br />
<span id="idProgMessageLayerHeader" style="display: block;"><span id="idProgMessageBox"><br />
Click Return<br />
</span></span><br />
Now both application will look for a presentation service listening on port 9710. Next step is to modify OBICustom, to look for /connect to a presentation service listening on port 9712. For that, go to %SAROOTDIR%\oc4j_bi\j2ee\home\applications\OBICustom\analytics\WEB-INF\ and edit web.xml.<br />
<br />
Now locate <span style="font-family: courier new;"><param-name>oracle.bi.presentation.sawserver.Port</param-name></span><br />
and just below that <span style="font-family: courier new;"><param-value>9710</param-value></span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRxB7eVD9V43Evkx0_3j9SzqaULsxEDz9LUSg4jzCYoOxZ9XuX01KdREgBkCinIjFMgLSVhMepZmTHZet_FO-kwZNt1GX5Yyy6tNiNHQVwoK_u3WZqKN6feMLKpl8VSNy9HWVBmn41ZiE/s1600-h/WebXML.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5391056427442101842" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRxB7eVD9V43Evkx0_3j9SzqaULsxEDz9LUSg4jzCYoOxZ9XuX01KdREgBkCinIjFMgLSVhMepZmTHZet_FO-kwZNt1GX5Yyy6tNiNHQVwoK_u3WZqKN6feMLKpl8VSNy9HWVBmn41ZiE/s400/WebXML.jpg" style="cursor: pointer; display: block; height: 265px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
and modify port 9710 to 9712.<br />
<br />
Goto OC4J Enterprice Manager (http://localhost:9704//em/) and click on restart button and then Yes button.<br />
<br />
Let's move to next step.<br />
<br />
<span style="font-weight: bold;">2. Create presentation services</span><br />
<br />
We will need two copies of instanceconfig.xml.<br />
<br />
As we have OBI PS installed, which will listen on 9710; we can use the same instance for OBI application hosted on OC4J.<br />
<br />
For second OBI PS, go to %SADATADIR%\web\config\. You will find instanceconfig.xml in the folder. Create a copy of instanceconfig.xml and name it to instanceconfig_9712.xml. Edit instanceconfig_9712.xml.<br />
<br />
Search for the tag <span style="font-family: courier new;"> <ServerInstance></span>. Add <span style="font-family: courier new;"><Listener port="9712"></span> just below that. You can also modify <dsn><catalogpath><span style="font-family: courier new;"><CatalogPath></span> and<span style="font-family: courier new;"> <DSN> </span> for second instance of Presentation Service. I kept it same, but its possible to have different catalogs and DSNs for two of the PS.<br />
<br />
</catalogpath></dsn><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUcshrPeXEHAhjAz6Rqh2XL_XfcCBp7GULHa18JKO9EUND1CdDs_Y1RnVeEp-8dta56mxn0W6FubjiIMifhU7shEwdS1VE7_ZlymywyZBVf0gGozt-uVzRa6cAsUj3D9riUajwMFjQEKU/s1600-h/instanceconfig.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5391056432958149634" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUcshrPeXEHAhjAz6Rqh2XL_XfcCBp7GULHa18JKO9EUND1CdDs_Y1RnVeEp-8dta56mxn0W6FubjiIMifhU7shEwdS1VE7_ZlymywyZBVf0gGozt-uVzRa6cAsUj3D9riUajwMFjQEKU/s400/instanceconfig.jpg" style="cursor: pointer; display: block; height: 265px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
<serverinstance><serverinstance><listener port="9712"><listener port="9712"><dsn><catalogpath><dsn><catalogpath>Now create service using windows sc command.<br />
<br />
C:\Users\Diptesh>sc create OBICustomPS binPath= "%SAROOTDIR%\web\bin\sawserver.e<br />
xe -c %SADATADIR%\web\config\instanceconfig_9712.xml /service" DisplayName= "Ora<br />
cle BI PS"<br />
<br />
you will get a message<br />
<br />
[SC] CreateService SUCCESS<br />
<br />
Open Services from Control Panel -> Administrative Tools OR by typing services.msc in Run dialog box.<br />
<br />
</catalogpath></dsn></catalogpath></dsn></listener></listener></serverinstance></serverinstance><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJFQ7cg3bfXQj96Fqjf0l3k9188hoPvBiLDFnUX82M8ZjUmeLt8PU_X_EE87ZHlk1QcVPWRv-JiQDe5rYf4gina9G371Xkavif6FSC_3gA8_4ZctzL9giRA-WufeGcNIRCOfDq1LxB1e4/s1600-h/services.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5391056441573109170" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJFQ7cg3bfXQj96Fqjf0l3k9188hoPvBiLDFnUX82M8ZjUmeLt8PU_X_EE87ZHlk1QcVPWRv-JiQDe5rYf4gina9G371Xkavif6FSC_3gA8_4ZctzL9giRA-WufeGcNIRCOfDq1LxB1e4/s400/services.jpg" style="cursor: pointer; display: block; height: 293px; margin: 0px auto 10px; text-align: center; width: 400px;" /></a><br />
<serverinstance><serverinstance><listener port="9712"><listener port="9712"><dsn><catalogpath><dsn><catalogpath>Start "Oracle BI Presentation Service" and "Oracle BI PS"<br />
<br />
Now you can access two different urls on the same maching, which are based on two different OBI PS.<br />
<br />
To test that<br />
stop Oracle BI Presentation Service<br />
try to open http://localhost:9704/OBI.<br />
You won't be able to see login screen.<br />
Now start the service and visit the same url again. You should be able to see login screen.<br />
<br />
Follow same steps with Oracle BI PS and url http://localhost:9704/OBICustom. This proves your implementation of two PS on the same windows.<br />
<br />
Alternate methods to test:<br />
1. Catalog<br />
Create a copy of catalog (%SADATADIR%\web\catalog\samplesales)<br />
Name it as you want and modify <catalogpath> tag in instanceconfig_9712.xml.<br />
Restart presenation services. Now do some catalog related changes and those will not apper in the other url.<br />
<br />
2. DSN<br />
See <a href="http://dipteshs.blogspot.com/2009/10/oracle-bi-multiple-repositories-rpds-on.html">how to load multiple RPDs in one OBI server</a>. Create one more DSN and change DSN tag in instanceconfig_9712.xml. Restart services and access two different RPDs.<br />
<br />
If any IIS expert wants to give more detail on Isapiconfig.xml, which can help me to deploy same architecture on IIS is more than welcomed.<br />
<br />
</catalogpath></catalogpath></dsn></catalogpath></dsn></listener></listener></serverinstance></serverinstance>Dipteshhttp://www.blogger.com/profile/17252932020323208384noreply@blogger.com7