ODTUG Aggregator ODTUG Blogs http://localhost:8080 Tue, 12 Dec 2017 08:46:03 +0000 http://aggrssgator.com/ Oracle Code Online December 2017 http://www.oralytics.com/2017/12/oracle-code-online-december-2017.html This week Oracle Code will be having an online event consisting of 5 tracks and with 3 presentations on each track. This online Oracle Code event will be given in 3 different geographic regions on 12th, 13th and 14th December. <img src="https://lh3.googleusercontent.com/-QN7IVkrs_EY/Wi5uoE7VQ8I/AAAAAAAAMRk/vl5VhEx3d24YMF32axWI_OYG-q8AZC8twCHMYCw/NewImage.png?imgmax=1600" alt="NewImage" title="NewImage.png" border="0" width="650" height="400" /> I've been selected to give one of these talks, and I've given this talk at some live Oracle Code events and at JavaOne back in October. The present is pre-recorded and I recorded this video back in September. I hope to be online at the end of some of these presentations to answer any questions, but unfortunately due to changes with my work commitments I may not be able to be online for all of them. The moderator for these events will take your questions (or you can send them to me here) and I will write a blog post answering all your questions. Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-8960840801377201332 Mon Dec 11 2017 06:45:00 GMT-0500 (EST) Summary of my 2017 year https://gianniceresa.com/2017/12/summary-2017-year/ <p>December is here, UKOUG Tech17 is over, and this means only one thing: end of year is coming.</p> <p>I generally like to take few minutes to look back to my year and review what I did, so I can better plan the year after.</p> <h2>Five conferences</h2> <p>This year, like already 2016, was rich in travels and conferences for me. It started with Finland and <a href="http://www.ougf.fi/index.php/en/" target="_blank" rel="noopener">OUGF</a> Harmony 2017 in Helsinki, followed by a Italy and <a href="http://www.itoug.it/" target="_blank" rel="noopener">ITOUG</a> Tech Day 2017 in Milano and Netherlands with <a href="https://www.nloug.nl/" target="_blank" rel="noopener">nlOUG</a> Tech Experience 2017. Then some calmer months and it started again with Germany and <a href="https://www.doag.org/en/home/" target="_blank" rel="noopener">DOAG</a> 2017 in Nuremberg and finally United Kingdom with <a href="https://www.ukoug.org/home/" target="_blank" rel="noopener">UKOUG</a> Tech17 in Birmingham.</p> <p>Topics were various: from DevOps with Docker for OBIEE, to building a RPD from scratch in 45 minutes. From Oracle Data Visualization Desktop custom plugins to EPM sources in OBIEE.</p> <h2>Ups and downs blogging</h2> <p>This year has also been probably the first full year for my blog (yes, this one). I do not really have fixed schedules for writing, it depends instead on what I do and discover or experience. One of the main topics of the year has been Docker of course.</p> <p><a href="https://gianniceresa.com/2017/09/obiee-12c-docker-from-scratch/" target="_blank" rel="noopener">Docker</a> clearly changed my way to work with Oracle tools starting from mid 2016. Nowadays most of my sandboxes and environments are Docker based. It&#8217;s easier, faster and require less resources, so definitely a positive thing.<br /> Only exceptions are the pre-built VM like <a href="http://www.oracle.com/technetwork/middleware/bi-foundation/obiee-samples-167534.html" target="_blank" rel="noopener">OBIEE SampleApp</a> or weird VMs like Exalogic to install HFM, Planning and Essbase on Linux.</p> <h2>Oracle ACE</h2> <p>Finally, last but definitely not least: getting an email informing me that I have been chosen to receive the Oracle ACE award. This clearly made my year !</p> <p><img class="alignleft size-full wp-image-589" src="https://gianniceresa.com/wp-content/uploads/2017/12/O_ACELogo_clr.gif" alt="Oracle ACE" width="144" height="54" />I&#8217;m really proud and happy to be an Oracle ACE. My career started reading and following few Oracle ACE and ACE Directors who were sharing their knowledge and experience online on blog posts and conferences. Also thanks to them I kept improving and learning more things.</p> <p>At some point I had the feeling it was now time to start giving back to the community what I received and that&#8217;s when I started presenting at conferences, writing blogs, contributing to the Oracle Developer Community forums etc.</p> <p>There is still a missing point I will keep trying to develop: manage to contribute to an Oracle User Group directly by setting up an event or meetups. So far it didn&#8217;t work also because of &#8220;political&#8221; issues on how local groups are managed and run. But I don&#8217;t give up on this one !</p> <h2>What about 2018?</h2> <p>Next year will probably be similar to 2017. I already sent many abstracts to various conferences and already got some replies. Unfortunately I also already had to cancel one conference where I was selected to speak because of agenda and budgeting conflicts, but I still count in attending at least 3-4 event over the year.</p> <p>Still not sure about the topics which are going to keep me busy in 2018, for sure some graph database if only Oracle focus a bit on on-prem solutions again instead of cloud only. OBIEE &amp; related tools for sure as I will not really give up so easily until the tools are dead.</p> <p>And for sure I will also keep answering on the ODC forums as it&#8217;s also a place where I get some ideas for blog posts (when same questions come back again and again it must means there is still space to fill covering that topic).</p> <p>So &#8230; stay tuned!</p> <p>The post <a rel="nofollow" href="https://gianniceresa.com/2017/12/summary-2017-year/">Summary of my 2017 year</a> appeared first on <a rel="nofollow" href="https://gianniceresa.com">Gianni&#039;s world: things crossing my mind</a>.</p> Gianni Ceresa https://gianniceresa.com/?p=591 Sun Dec 10 2017 12:19:31 GMT-0500 (EST) UKOUG Tech17: Chocolate and Knowhow Sharing https://danischnider.wordpress.com/2017/12/10/ukoug-tech17-chocolate-and-knowhow-sharing/ <p>For the first time, I had the chance to attend and speak at the UKOUG Technology Conference. In these three days at UKOUG Tech17 in Birmingham, I attended some very good sessions, had many interesting discussions about Oracle databases, data warehousing and performance tuning, met nice people and tasted a lot of chocolate.</p> <p><span id="more-530"></span></p> <p><img title="inmemory_dwh.jpg" src="https://danischnider.files.wordpress.com/2017/12/iinmemory_dwh.jpg?w=600&#038;h=300" alt="Inmemory dwh" width="600" height="300" border="0" /><br /><em>My session about Oracle Database In-Memory (Photo: Twitter <a href="https://twitter.com/Boneist/status/938427105288781824">@Boneist</a>)</em></p> <p>In my presentation <a href="https://danischnider.files.wordpress.com/2017/12/ukoug_inmemory_and_dwh.pdf">Oracle Database In-Memory &amp; Data Warehouse: The Perfect Combination?</a> I made a little joke about Swiss chocolate (&#8220;the compression ratio of Toblerone in UK is lower than in the rest of the world&#8221;). That was not the only part about chocolate at the <a href="http://tech17.ukoug.org">UKOUG Tech17</a>. Chocolate and other food and drinks seem to be an important part of this conference. <a href="https://twitter.com/ChandlerDBA">Neil Chandler</a> presented a session about histograms and chocolate, <a href="https://twitter.com/richardfoote">Richard Foote</a> talked about the response time of buying milk, and I heard some rumours that <a href="https://twitter.com/ora600pl">Kamil Stawiarski</a> mentioned beer in his session about tablespaces (unfortunately I missed this presentation).</p> <p><img title="richardfoote.jpg" src="https://danischnider.files.wordpress.com/2017/12/irichardfoote.jpg?w=310&#038;h=200" alt="Richardfoote" width="310" height="200" border="0" /> <img title="neilchandler.jpg" src="https://danischnider.files.wordpress.com/2017/12/ineilchandler.jpg?w=254&#038;h=200" alt="Neilchandler" width="254" height="200" border="0" /><br /><em>Richard Foote talks about milk, Neil Chandler about chocolate</em></p> <p>Despite allusions to food and drinks, the UKOUG Tech17 was <span style="text-decoration:underline;">not</span> a gourmet conference. Fortunately I was prepared to the quality of food and coffee from <a href="https://twitter.com/MDWidlake">Martin Widlake</a>’s blog post <a href="https://mwidlake.wordpress.com/2017/11/29/ukoug-conference-survival-guide/">UKOUG Conference Survival Guide</a>. But the quality of coffee should not be the reason to go to a technical conference. The content of the sessions is much more important, and here the quality was <span style="text-decoration:underline;">much</span> better. Unlike some of my colleagues, I used most of the time to attend as many sessions as possible. Sometimes it was hard to decide, because there were so many interesting subjects to listen to at the same time. Up to 11 sessions were presented in parallel (even more, if you count the Apps17 and JDE17 sessions that were available, too). Fortunately, a good mobile app is available for the conference. This allowed me to plan my schedule and find the most interesting sessions for me. I mainly attended sessions of the Database and the Business Analytics stream, 5 to 6 sessions on each day. Most of them were good or even excellent from my point of view. In a very few cases, I expected something else from the title and abstract of a session. But switching to another session was almost impossible, because the rooms in the ICC Birmingham are spread all over the building, and it takes a long time to walk to another session (and to find the right room).</p> <p>Although I was listening to many presentations, there was still time for chats and discussions with colleagues, other speakers and attendees. Thanks to my Trivadis colleague <a href="https://twitter.com/ChrisAntognini">Christian Antognini</a>, I had the opportunity to talk to <a href="https://twitter.com/vldbb">Nigel Bayliss</a>, product manager of the Oracle optimizer. Because we had some performance problems with incremental statistics a few days ago in a customer project, I was interested to talk to him about the changes in Oracle 12.2 in this area. Details will follow in my next blog post &#8211; hopefully soon.</p> <p>A complete description of all the sessions I attended would go too far in this blog post. I limit the summary on three highlights, one on each of the conference days:</p> <ul> <li>On Monday, I attended Richard Foote’s presentation <a href="http://tech17.ukoug.org/default.asp?p=16630&amp;dlgact=shwprs&amp;prs_prsid=13329&amp;day_dayid=116">Real World Examples on how to use AWR Reports to Solve Performance Issues</a>. In this very entertaining session, Richard Foote explained several examples of AWR reports to show different kinds of performance issues that may happen in real projects. Of course, he changed the reports slightly (all databases were called BOWIE and the servers usually ZIGGY), but the examples showed impressively how you can proceed to find the source of a performance problem as fast as possible.</li> <li>On Tuesday, before the session <a href="http://tech17.ukoug.org/default.asp?p=16630&amp;dlgact=shwprs&amp;prs_prsid=13313&amp;day_dayid=118">Five Things you Might not Have Known About the Oracle Database</a> of <a href="https://twitter.com/SQLMaria">Maria Colgan</a> and <a href="https://twitter.com/dominic_giles">Dominic Giles</a>, I was quite sure I will know all the “five things”. But during the session I wrote down several interesting details (even more than five) that I did not know. The session inspired me to read more in the Oracle documentation. There is always something “new” to discover and features to investigate.</li> <li>On Wednesday, the session <a href="http://tech17.ukoug.org/default.asp?p=16630&amp;dlgact=shwprs&amp;prs_prsid=13008&amp;day_dayid=120">Histograms are Evil Like Chocolate is Evil</a> of <a href="https://twitter.com/ChandlerDBA">Neil Chandler</a> was not only very entertaining, but informative too. Neil introduced the different types of histograms and the extensions in Oracle 12c, but also explained in detail how they can be efficiently used and configured and in which cases histograms may cause problems. A very good presentation about a subject I thought do be familiar with, but learned some more details about it.</li> </ul> <p>Currently, not all presentations are available (yet) in the UKOUG download area. I hope that this will change, because it’s worth for me to browse through some of the slides again.</p> <p>The title of Neil’s presentation brings us back to the chocolate: A few days before the UKOUG Tech17 conference, I became an Oracle ACE. Therefore, I was invited to the Oracle ACE Dinner on Monday evening and to a chocolate tasting on Tuesday. As far as I knew before from Twitter, this chocolate tasting seems to be traditional on many conferences, so I hope that I don’t eat too much chocolate in the next few years. Anyway &#8211; it was not only a pleasure to taste and compare chocolate from all parts of the world, but mainly to meet other Oracle ACEs and talk to them about Oracle stuff, but also about chocolate, beer and other important topics.</p> <p><img title="chocolate_tasting.jpg" src="https://danischnider.files.wordpress.com/2017/12/ichocolate_tasting.jpg?w=450&#038;h=600" alt="Chocolate tasting" width="450" height="600" border="0" /><br />Chocolate tasting, organized by <a href="https://twitter.com/oracleace">Oracle ACE Program</a></p> <p><img title="ace_dinner.jpg" src="https://danischnider.files.wordpress.com/2017/12/iace_dinner.jpg?w=450&#038;h=253" alt="Ace dinner" width="450" height="253" border="0" /><br />Oracle ACE Dinner (Photo: Twitter <a href="https://twitter.com/oracleace/status/938004639177494529">@connor_mc_d</a>)</p> <p><img title="chocolate_tasting2.jpg" src="https://danischnider.files.wordpress.com/2017/12/ichocolate_tasting2.jpg?w=450&#038;h=255" alt="Chocolate tasting2" width="450" height="255" border="0" /><br />Chocolate tasting (Photo: Twitter <a href="https://twitter.com/lleturgez/status/938127421190098944">@lleturgez</a>)</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danischnider.wordpress.com/530/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danischnider.wordpress.com/530/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=danischnider.wordpress.com&#038;blog=80273571&#038;post=530&#038;subd=danischnider&#038;ref=&#038;feed=1" width="1" height="1" /> Dani Schnider http://danischnider.wordpress.com/?p=530 Sun Dec 10 2017 11:40:12 GMT-0500 (EST) ODTUG December News http://www.odtug.com/p/bl/et/blogaid=754&source=1 The ODTUG December News includes information about the abstract public voting sign-ups, ODTUG Kscope18 Community Service Day donations, Oracle Cloud Customer Connect upcoming webinars, ODTUG community news, and upcoming ODTUG webinars. ODTUG http://www.odtug.com/p/bl/et/blogaid=754&source=1 Thu Dec 07 2017 11:34:37 GMT-0500 (EST) Choosing a Planning & Forecasting Method https://www.us-analytics.com/hyperionblog/choosing-a-planning-forecasting-method <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/choosing-a-planning-forecasting-method" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/3-steps-faster-financial-forecasting-1.jpg?t=1512662316771" alt="3-steps-faster-financial-forecasting-1.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p><span>Many companies are considering ditching traditional budgeting for more flexible or more detailed methods.</span></p> <p><span><span><strong>Choosing a new method calls for careful consideration — understanding what will realistically work for your organization.&nbsp;</strong></span></span><span>Read on to explore alternative methods and the various facets of each, including:</span></p> <ul> <li><span>The pros and cons of rolling forecasts</span></li> <li><span>The pros and cons of zero-based budgeting</span></li> <li><span>Challenges that come with each method</span></li> <li><span>Getting started with each method</span></li> <li><span>Tools to optimize and support the method you choose</span></li> <li><span>And more!</span></li> </ul> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fchoosing-a-planning-forecasting-method&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/choosing-a-planning-forecasting-method Thu Dec 07 2017 11:31:46 GMT-0500 (EST) 3 Signs You Need to Automate Your Account Reconciliation Process https://www.us-analytics.com/hyperionblog/3-signs-you-need-to-automate-your-account-reconciliation-process <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/3-signs-you-need-to-automate-your-account-reconciliation-process" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/3%20Reasons%20Why%20You%20Should%20Automate%20Your%20Account%20Reconcilation%20Process.jpg?t=1512966730140" alt="3 Reasons Why You Should Automate Your Account Reconcilation Process.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p><span><br>For most organizations, the account reconciliation process is manual, time consuming, and a major bottleneck in the financial close process. Medium to large companies commonly reconcile thousands of accounts during the quarter-end or <a href="https://www.us-analytics.com/oracle-hfm-administration-5-tips-for-a-stress-free-month-end-close">month-end close</a>, yet <strong>65 percent rely on manual methods to determine whether adjustments are required</strong>.&nbsp;</span></p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2F3-signs-you-need-to-automate-your-account-reconciliation-process&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Yasmin Morrison https://www.us-analytics.com/hyperionblog/3-signs-you-need-to-automate-your-account-reconciliation-process Wed Dec 06 2017 13:26:00 GMT-0500 (EST) Rittman Mead at UKOUG 2017 http://www.rittmanmead.com/blog/2017/12/rittman-mead-at-ukoug-2017/ <p>For those of you attending the <a href="http://tech17.ukoug.org">UKOUG</a> this year, we are giving three presentations on OBIEE and Data Visualisation.</p> <p>Francesco Tisiot has two on Monday:</p> <ul> <li>14.25 // Enabling Self-Service Analytics With Analytic Views &amp; Data Visualization From Cloud to Desktop - Hall 7a</li> <li>17:55 // OBIEE: Going Down the Rabbit Hole - Hall 7a</li> </ul> <p>Federico Venturin is giving his culinary advice on Wednesday:</p> <ul> <li>11:25 // Visualising Data Like a Top Chef - Hall 6a</li> </ul> <p>And Mike Vickers is diving into BI Publisher, also on Wednesday</p> <ul> <li>15:15 // BI Publisher: Teaching Old Dogs Some New Tricks - Hall 6a</li> </ul> <p>In addition, Sam Jeremiah and I are also around, so if anyone wants to catch up, grab us for a coffee or a beer.</p> Jon Mead 2dff70aa-02af-44ea-b292-b1443d25fe9f Mon Dec 04 2017 03:58:46 GMT-0500 (EST) PBCS and EPBCS Updates (December 2017): Support Removed for Workspace, Using Firefox with Smart View, and More https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2017-december-updates <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2017-december-updates" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/PBCS%20and%20EPBCS%20December%20update.jpg?t=1512966730140" alt="PBCS and EPBCS December update.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The December updates for Oracle's<span>&nbsp;</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">Planning &amp; Budgeting Cloud Service (PBCS) and Enterprise Planning and Budgeting Cloud Service (EPBCS)</a><span>&nbsp;are here.&nbsp;</span>This blog post outlines several new features for both applications, enhancements, removal of support, and fixed defects.</p> <p><em>The monthly update for PBCS and EPBCS will occur on Friday, December 15 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fpbcs-and-epbcs-2017-december-updates&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2017-december-updates Fri Dec 01 2017 14:23:00 GMT-0500 (EST) FCCS Updates (December 2017): Advanced Consolidation Features, New Custom Functions, and More https://www.us-analytics.com/hyperionblog/fccs-updates-december-2017 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/fccs-updates-december-2017" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/FCCS%20december%20update.jpg?t=1512966730140" alt="FCCS december update.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The December updates for <a href="https://www.us-analytics.com/hyperionblog/faq-oracle-financial-consolidation-and-close-cloud-service-fccs">Oracle's<span>&nbsp;Financial Consolidation and Close Cloud Service</span>&nbsp;(FCCS)</a><span> are here</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">.</a><span>&nbsp;</span>This blog post outlines an array of new features, fixed defects, considerations, and more.</p> <p><em>The monthly update for FCCS will occur on Friday, December 15 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ffccs-updates-december-2017&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/fccs-updates-december-2017 Fri Dec 01 2017 13:40:00 GMT-0500 (EST) EPRCS Updates (December 2017): Considerations for Management Reporting, Report Packages, and More https://www.us-analytics.com/hyperionblog/eprcs-updates-december-2017 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/eprcs-updates-december-2017" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/EPRCS%20december%20update.jpg?t=1512966730140" alt="EPRCS Updates (December 2017): Considerations for Management Reporting, Report Packages, and More" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The December updates for <a href="https://www.us-analytics.com/hyperionblog/enterprise-performance-reporting-cloud">Oracle Enterprise Performance Reporting Cloud Service (EPRCS)</a><span>&nbsp;are here</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">.</a><span>&nbsp;</span>This blog post outlines new features, fixed defects, and considerations.</p> <p><em>The monthly update for EPRCS will occur on Friday, December 15 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Feprcs-updates-december-2017&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/eprcs-updates-december-2017 Fri Dec 01 2017 12:49:00 GMT-0500 (EST) ARCS Updates (December 2017): On-Prem to Cloud Migration, Removal of Support, and More https://www.us-analytics.com/hyperionblog/arcs-product-update-december-2017 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/arcs-product-update-december-2017" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/ARCS%20december%20update.jpg?t=1512966730140" alt="ARCS december update.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The December updates for Oracle's<span>&nbsp;</span><a href="https://www.us-analytics.com/hyperionblog/faq-account-reconciliation-cloud-service-arcs">Account Reconciliation Cloud Service (ARCS</a>) are here. In this blog post, we’ll outline new guidelines for on-prem to cloud migration, fixed defects, and considerations.</p> <p>We’ll let you know any time there are updates to ARCS or any other Oracle EPM cloud products. Check the&nbsp;<a href="https://www.us-analytics.com/hyperionblog">US-Analytics Oracle EPM &amp; BI Blog</a><span>&nbsp;</span>every month.</p> <p><em>The monthly update for Oracle ARCS will occur on Friday, December 15 during your normal daily maintenance window.</em></p> <h3 style="text-align: center;"></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Farcs-product-update-december-2017&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/arcs-product-update-december-2017 Fri Dec 01 2017 11:36:00 GMT-0500 (EST) Upcoming December Webinars http://www.odtug.com/p/bl/et/blogaid=753&source=1 ODTUG's Online Education: Is there a topic you would like covered but do not see here? We are happy to take webinar suggestions. Email us at kgately@odtug.com. ODTUG http://www.odtug.com/p/bl/et/blogaid=753&source=1 Thu Nov 30 2017 12:19:10 GMT-0500 (EST) OBIA 11g : Analyzing ODI ETL Load Performance - Part 2 https://blogs.oracle.com/biapps/obia-11g-%3A-analyzing-odi-etl-load-performance-part-2 <p style="text-align: justify;">In the <a href="https://blogs.oracle.com/biapps/obia-11g-%3a-analyzing-odi-etl-load-performance-part-1">part1</a> in this series, we showed how you can identify the top running maps in a load plan. In this blog, we list certain parameter/settings at ODI/Database/Network level that can influence the overall load plan timings.</p> <u>ODI Settings</u> <p style="text-align: justify;">1) Check the number of parallel sessions configured against the ODI agent. Recommendation is to have NOT more than 5 ODI sessions configured to run in parallel. If your server is not sized up properly, this may have to be reduced further. You can find this setting against the definition of the ODI Physical&nbsp; agent&nbsp;&nbsp;- Maximum number of parallel sessions property (in ODI studio).<br /> &nbsp;<br /> 2) Confirm if memory settings for the ODI Managed server are as per the BIAPPS technote. Refer to the following doc id in My Oracle Support website which specifies the recommended memory settings. Oracle Business Intelligence Applications Version 11g Performance Recommendations (Doc ID <a href="https://support.oracle.com/oip/faces/secure/km/DocumentDisplay.jspx?id=1963225.1">1963225.1</a>)</p> <p style="text-align: justify;">3) Ensure that you are on the relevant ODI patches. Refer to the BIAPPS documentation/certification matrix for your BIAPPS release to get the exact ODI patch to be on.</p> <p style="text-align: justify;">3) Check the WLS settings for Connection pool of ODI repository in WLS. Below are the recommended WLS settings.</p> <ol> <li style="text-align: justify;"><strong>Initial Capacity</strong> - The number of connection that will be opened when WLS starts. Set to 5 for frequent used ones like ODI and BIACOMP.</li> <li style="text-align: justify;"><strong>Minimum Capacity - </strong>The minimum number of physical connections that this connection pool will always contain after it is initialized. Set to <strong>5</strong> for all repositories with high load (E.g. ODI, SDS, BIACOMP)</li> <li style="text-align: justify;"><strong>Maximum Capacity - </strong>The maximum number of physical connections that this connection pool can contain. <ol> <li>Master, Work, BIACOMP and SDS repositories should be set to <strong>100</strong>.</li> <li>This parameter can be modified based on the customer hardware configuration, which might help improve the overall LP (if the customer finds UNKNOWN Gaps in LP). It is found that CPU utilization increases when this parameter is higher.</li> </ol> </li> <li style="text-align: justify;"><strong>Shrink Frequency - </strong>The number of seconds to wait before shrinking a connection pool that has incrementally increased to meet demand. For all connections this should be <strong>300</strong>. This will then match the TestFrequency and ensure that the connections are released if not used.&nbsp;</li> <li style="text-align: justify;"><strong>Seconds to Trust an Idle Pool Connection -</strong> The number of seconds within the last usage of a connection, that WebLogic Server trusts that the connection is still viable and will skip the connection test, either before delivering it to an application or during the periodic connection testing process.Should be <strong>10 </strong>for all repositories to prevent unnecessary tests. 10 is weblogic default and recommendation for production environments</li> </ol> <p style="text-align: justify;">5) If the SDE mappings are taking long, the customer can experiment with the Array Fetch Size against the ODI physical connections. The array fetch size against the source/target connection is known to impact the load duration.</p> <p style="text-align: justify;">6) Ensure the ODI repository database schema has been analyzed. If you have done a lot of load plan runs, consider purging old ODI session logs to reduce the size of the ODI repository database.</p> <u>Database Settings</u> <p style="text-align: justify;">1) Check the number of sessions and processes setup at your database. Set processes parameter to atleast 500 and sessions parameter to atleast 3000 for the database. Run the below query with a DBA user to check the current setting.<br /> SELECT NAME,VALUE FROM V$PARAMETER WHERE name in (&#39;processes&#39;,&#39;sessions&#39;);</p> <p style="text-align: justify;">2) For Full load , you could consider keeping the database in NOARCHIVELOG mode with forcelogging turned off. Refer to BIAPPS Performance tech note Oracle Business Intelligence Applications Version 11g Performance Recommendations (Doc ID <a href="https://support.oracle.com/oip/faces/secure/km/DocumentDisplay.jspx?id=1963225.1">1963225.1</a>). Note: NOARCHIVELOG mode can impact the ability to restore the database in case of a crash. So please talk to the DBA before deciding to use this option.</p> <p style="text-align: justify;">3) Ensure redo logs are adequate. The default of 3 redo logs, each of 50MB size is not adequate for BIAPPS loads especially when the volumes are high. Refer to tech note above.</p> <p style="text-align: justify;">4) Ensure SDS/DW/ODI/BIACM schemas have adequate free tablespace size. Also if the tablespaces files are set to autoextend, ensure that the increment by is set adequately high (Especially for DW and SDS schemas). Consider setting incrementby from 500MG to 1GB for DW/SDS tablespace files. Before full load, estimate the size of your database and then ensure that the initial size of the tablespace is big enough to hold the data.</p> <p style="text-align: justify;">5) Run AWR reports and use SQL advisor periodically to fine tune long running queries.</p> <p style="text-align: justify;">6) Partition large fact tables. Tables are not partitioned Out of the box.</p> <u>Network Settings</u> <p style="text-align: justify;">1) Ensure that ODI agent is as close as possible to the Database. They should be on the same LAN at a minimum.&nbsp;</p> <p style="text-align: justify;">2) Ensure there are no timeouts set at either the database or the network especially for the connection used by the ODI agent. Agent connections can tend to remain inactive for a long time (more than an hour for long running load plans). If Sessions remain in a particular state and nothing is happening for long and you don&#39;t notice any activity in the database, then agent might have lost connection with the ODI repository. Refer to the ODI Documentation on Stale Sessions for more details. Typically an agent restart should fix the problem. However check where the timeouts are present and then relax/remove them for ODI connections.&nbsp;</p> Gunaranjan Vasireddy https://blogs.oracle.com/biapps/obia-11g-%3A-analyzing-odi-etl-load-performance-part-2 Thu Nov 30 2017 04:10:00 GMT-0500 (EST) My Sessions at DOAG 2017 https://danischnider.wordpress.com/2017/11/30/my-sessions-at-doag-2017/ <p>This year, I had the opportunity to present three sessions at the DOAG conference in Nuremberg &#8211; one on each conference day. Here a short summary of the sessions and links to the downloads.</p> <p><span id="more-511"></span></p> <p>Like every year, the DOAG conference in Nuremberg, organized by the German Oracle User Group (DOAG), was an exciting and well organized event. I had the pleasure to listen to many interesting presentations, meet colleagues, friends, customers and other interesting people, and have a lot of interesting chats and discussions. Of course, I could write a few words about each session I attended, but the risk that I forgot somebody to mention would be too high. So, I focus on my own sessions in this blog post.</p> <p> </p> <h1>Analytic Views: Einsatzgebiete im Data Warehouse</h1> <p><strong><em>(Analytic Views: Use Cases in Data Warehouse)</em></strong></p> <p>In this presentation, I explained the concepts of the three new metadata objects <em>Attribute Dimension</em>, <em>Hierarchy </em>and <em>Analytic View</em> in Oracle 12c Release 2 and showed some demos of how they can be used in SQL queries. In data warehouses, they will typically be used in BI tools, in ad-hoc queries or as source for specific ETL jobs. From my point of view, the success (or failure) of this very powerful and flexible database feature depends on the integration with BI tools. As soon as there are easy-to-use import functions available in tools like OBIEE, there is a good chance that Analytic Views will be used in many data warehouse environments. The live demos in the presentation were based on the Oracle Live SQL tutorial <a href="https://livesql.oracle.com/apex/livesql/file/tutorial_EDVE861IJ168OTUP6ZZ01MX84.html">Creating an Analytic View for the Sales History (SH) Sample Schema</a>.</p> <p>Downloads: <a href="https://danischnider.files.wordpress.com/2017/11/doag2017_analytic_views_en.pdf">Presentation (English)</a>, <a href="https://danischnider.files.wordpress.com/2017/11/doag2017_analytic_views.pdf">Presentation (German)</a>, <a href="https://danischnider.files.wordpress.com/2017/11/doag_analytic_views.pdf">Article (German)</a></p> <p><img title="Analytic_Views.jpg" src="https://danischnider.files.wordpress.com/2017/11/ianalytic_views1.jpg?w=600&#038;h=450" alt="Analytic Views" width="600" height="450" border="0" /></p> <p><em>Photo: Twitter (<a href="https://twitter.com/ABuckenhofer/status/932945951823745024">@Buckenhofer</a>)</em></p> <p> </p> <h1>Data Vault Forum</h1> <p>Since a couple of years, a forum session for the Data Vault community is organized as part of the DOAG conference. Its purpose is to share knowledge and practical experience from different Data Vault projects. Because the community of this data modeling technique is still small in German speaking countries, most of the attendees of this session were the same as last year. But nevertheless we had interesting discussions about the choice of suitable business keys, bi-temporal historization, validities of Links and the performance of data extraction from Data Vault. Actually, it was planned that my Trivadis colleague Peter Welker will chair this forum session, but because he had another appointment at the same time, he asked me to lead the discussion. So, it was not one of “my” sessions, to be honest.</p> <p><img title="Data_Vault_Forum.jpg" src="https://danischnider.files.wordpress.com/2017/11/idata_vault_forum1.jpg?w=597&#038;h=164" alt="Data Vault Forum" width="597" height="164" border="0" /></p> <p><em>Photo: Twitter (<a href="https://twitter.com/dani_schnider/status/933366926969012224">@dani_schnider</a>) </em></p> <p> </p> <h1>Partitionierungsstrategien im Data Warehouse</h1> <p><strong><em>(Data Vault Partitioning Strategies)</em></strong></p> <p>Loading data into a Data Vault schema is easy, but how to extract information from there in an efficient way? This is a typical challenge in many Data Vault projects, when the number and the size of tables increases during the lifecycle of the data warehouse system. Partitioning tables in Data Vault can help to solve this problem, but what is the best way to do that? In this session, I introduced three different partitioning strategies that can help to solve performance issues in Data Vault. Although I had the idea for this session in a customer project at the beginning of this year, I used an imaginary “project” for my presentation: a craft beer brewery. In addition to the presentation, I published a <a href="https://danischnider.files.wordpress.com/2017/11/wp_data_vault_partitioning_strategies3.pdf">Trivadis white paper “Data Vault Partitioning Strategies”</a> just before the DOAG conference. It contains the same strategies and examples as the presentation, but explains more details for each partitioning approach.</p> <p>Downloads: <a href="https://danischnider.files.wordpress.com/2017/11/doag2017_data_vault_partitioning_en.pdf">Presentation (English)</a>, <a href="https://danischnider.files.wordpress.com/2017/11/doag2017_data_vault_partitioning.pdf">Presentation (German)</a>, <a href="https://danischnider.files.wordpress.com/2017/11/doag_data_vault_partitionierung.pdf">Article (German)</a></p> <p><img title="DV_Partitioning.jpg" src="https://danischnider.files.wordpress.com/2017/11/idv_partitioning1.jpg?w=600&#038;h=450" alt="DV Partitioning" width="600" height="450" border="0" /></p> <p><em>Photo: Twitter (<a href="https://twitter.com/dani_schnider/status/933665417167560704">@dani_schnider</a>)</em></p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danischnider.wordpress.com/511/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danischnider.wordpress.com/511/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=danischnider.wordpress.com&#038;blog=80273571&#038;post=511&#038;subd=danischnider&#038;ref=&#038;feed=1" width="1" height="1" /> Dani Schnider http://danischnider.wordpress.com/?p=511 Wed Nov 29 2017 19:09:30 GMT-0500 (EST) Using the Oracle Data Visualization Dimension Player Plugin http://blog.performancearchitects.com/wp/2017/11/29/using-the-oracle-data-visualization-dimension-player-plugin/ <p>Author: Cameron Ross, Performance Architects</p> <p>Oracle’s <a href="http://www.oracle.com/technetwork/middleware/oracle-data-visualization/index.html">Data Visualization (DV) Desktop</a> provides users with the ability to quickly generate visualizations at the click of a button. One neat feature of DV Desktop is the ability to implement newly-released plugins from the <a href="https://www.oracle.com/solutions/business-analytics/data-visualization/library.html">Oracle Analytics Library</a>, where you will find a plugin called the “Dimension Player.” This plugin gives you the ability to quickly filter your visualizations using any of your dimensional columns.</p> <p>To get the Dimension Player go to the Analytics Library, search for “Dimension Player,” and then click “Download:”</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR1.png"><img class="alignnone size-medium wp-image-2193" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR1-163x300.png" alt="" width="163" height="300" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR1-163x300.png 163w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR1-556x1024.png 556w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR1.png 563w" sizes="(max-width: 163px) 100vw, 163px" /></a></p> <p>Once the plugin completes downloading, find the “DV Desktop” install in the file directory. Once there, copy and paste the zipped file into the folder labeled “Plugins” (if this is the first time you’re bringing in a custom plugin, then you’ll need to create the folder).</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR2.png"><img class="alignnone size-medium wp-image-2192" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR2-300x180.png" alt="" width="300" height="180" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR2-300x180.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR2-768x462.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR2-1024x616.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR2-624x375.png 624w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Once the zip file is imported into the “Plugins” folder, start up your DV Desktop instance. Create a new project using any of the data sources. Using the left side of the screen, click the “Visualizations” tab and verify that the new “Dimension Player” visual is there:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR3.png"><img class="alignnone size-medium wp-image-2191" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR3-130x300.png" alt="" width="130" height="300" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR3-130x300.png 130w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR3-444x1024.png 444w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR3.png 577w" sizes="(max-width: 130px) 100vw, 130px" /></a></p> <p>Next, we will create a simple bar chart that displays “Product Subcategory” and “Sales” to show how the Dimension Player impacts this visual. Using the “Year” column in the Dimension Player, this automatically changes the graph based off of the years given.</p> <p>2013:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR4.png"><img class="alignnone size-medium wp-image-2190" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR4-300x183.png" alt="" width="300" height="183" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR4-300x183.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR4-768x469.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR4-1024x626.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR4-624x381.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR4.png 1555w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>2014:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR5.png"><img class="alignnone size-medium wp-image-2189" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR5-300x183.png" alt="" width="300" height="183" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR5-300x183.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR5-768x470.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR5-1024x626.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR5-624x382.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR5.png 1552w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>2015:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR6.png"><img class="alignnone size-medium wp-image-2188" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR6-300x183.png" alt="" width="300" height="183" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR6-300x183.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR6-768x468.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR6-1024x624.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR6-624x380.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR6.png 1553w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>The Dimension Player can be a very useful tool if there are a set of visuals that are better seen through all of the different options of a dimensional column (Gender, Race, Year, Location, etc.). The nicest part is that all of this can be done with the click of the button. This is just one of many visualizations that are on the Oracle Analytics Library page that can bring lots of value to any DV project and make portraying data much easier for the end user.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2187 Wed Nov 29 2017 05:14:14 GMT-0500 (EST) Orlando From the Eyes of a Local http://www.odtug.com/p/bl/et/blogaid=752&source=1 With ODTUG Kscope18 just over 6 months away, we're getting very excited about all the activities and attractions that Orlando has to offer! Here's a list of a few "hot spots" that we encourage you to check out during your stay in Orlando. ODTUG http://www.odtug.com/p/bl/et/blogaid=752&source=1 Tue Nov 28 2017 09:45:44 GMT-0500 (EST) Lookering at Version Control https://blog.redpillanalytics.com/lookering-at-version-control-d8e3966b7a8f?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8e1Ue0Z4xScS_9jmzqH7jA.png" /></figure><p>If you follow Red Pill Analytics at all, you know that we have our hands in a bit of everything when it comes to data and analytics; having the opportunity to work with various tools and technologies is one of the many benefits to working at RPA. One particular tool that we have found ourselves working with more and more as of late is <a href="https://looker.com/">Looker</a>. Looker continues to demonstrate success while gaining a ton of traction in the Business Intelligence and Analytics space and has no doubt won the praise of us Red Pillians. Offering both cloud and on-premise options for their customers, Looker is a data visualization tool with a modeling layer. Hold onto that thought.</p><p>And if you follow Red Pill Analytics, you know that we are big fans of all things version control. In fact, if you work with Oracle Business Intelligence Enterprise Edition (OBIEE) and are still using MUDE, passing around a .rpd file so that everyone can “commit to master”, or going as far as designating times that each developer can deploy changes or work online, all things I have seen or experienced working with various clients, you should have a look at <a href="http://redpillanalytics.com/checkmate/">Checkmate</a>. That being said, RPA’s Checkmate is a multi-faceted tool that does more than version control but I digress…</p><p>Back to Looker. At a high level, Looker stores objects in two places — the internal application database for things like metadata, Looks (reports), and some dashboards as well as in files written in LookML, Looker’s proprietary domain-specific language (DSL). LookML is cool. LookML is really cool. It is really cool because it serves as the abstraction layer between the reporting and the database layers and it allows developers to code as simple or as complex as required. In other words: it is flexible. Having the LookML abstraction (or logical, or semantic) layer for modeling provides all of the things a modeling layer should provide: standardization, repeatability, scalability, DRY coding, the list goes on. LookML helps separate Looker from pure data visualization tools and allows it to scale to the enterprise. Don’t get me wrong, there is a time and a place where pure data visualization tools suffice but there are countless use cases where a logical layer of abstraction is a should or even a must have.</p><p>For anyone new to LookML or apprehensive about writing code, Looker does an exceptional job of publishing documentation on <a href="https://docs.looker.com/data-modeling/learning-lookml/what-is-lookml">LookML</a>. The IDE is also intuitive and provides dynamic lists and definitions as LookML is being written. Additionally, auto-complete functionality helps to speed things along.</p><p>What does all of this have to do with version control? The LookML files I have been going on about are typically stored in a Git repository using Looker’s native Git integration. <strong><em>Looker’s native Git integration!</em></strong> After following the four-step process of creating a Git repository, creating a Looker project, linking the project to the repository, and granting Looker access to write to the repository, that is all it takes to get going with a Git-linked Looker project.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BtgQ22E1J__yKvxCnS6eBw.png" /><figcaption>That’s the ticket!</figcaption></figure><p>Looker maintains a master branch and a development branch specific to each developer’s user account. Depending on the project configurations, developers can develop on his or her branch, commit code, and commit to master or open a pull request to have code deployed. The Git integration saw some significant enhancements with the release of Looker 5.0. Among the enhancements is the ability to create shared branches, switch branches, and read-only access to other developers’ branches. To grab a quote from RPA’s Stewart Bryson:</p><blockquote>This is truly fantastic. Feature branches. Built right into a BI tool.</blockquote><blockquote>-Stewart, sometime last month, via Slack</blockquote><p>I don’t disagree. Most BI tools either need a third-party companion tool such as Checkmate to manage version control or they can be set up in a round-about way to allow source code to be stored and accessed in a repository but Looker takes the cake on this one. Not that there is anything wrong with third-party applications to manage version control; have I mentioned <a href="http://www.redpillanalytics.com/checkmate">Checkmate</a> yet for those of you using OBIEE? Third-party applications are great but we created Checkmate because there were a handful problems that needed to be solved, one of those being version control. Native version control built right into a BI tool, as Stewart said, is truly fantastic.</p><p>Normally, this topic would be a good candidate to walk through some of the setup and functionality step-by-step but the folks at Looker have already done that <a href="https://docs.looker.com/data-modeling/getting-started/version-control-and-deploying-changes">here</a> and I’m not one for reinventing the wheel. Head on over to the <a href="https://docs.looker.com/">Looker docs</a> and see for yourself.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/225/1*wgUq-3vJiZxLvqZLsK7jEw.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d8e3966b7a8f" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/lookering-at-version-control-d8e3966b7a8f">Lookering at Version Control</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Mike Fuller https://medium.com/p/d8e3966b7a8f Mon Nov 27 2017 11:46:43 GMT-0500 (EST) Make SQL Great Again baseball cap http://www.oralytics.com/2017/11/blog-post.html Make SQL great again baseball cap <br /><img alt="Screenshot 2017 11 22 12 15 18" border="0" height="512" src="https://lh3.googleusercontent.com/-Xbpa6gW5Naw/WhVqkuLplfI/AAAAAAAAMRU/4EMPqcU1HBgkXsqa6gqO26Pyhkli2tc3ACHMYCw/Screenshot%2B2017-11-22%2B12.15.18.png?imgmax=800" title="Screenshot 2017-11-22 12.15.18.png" width="423" /> <br />Let me know if you would like to order one. <br />They cost €15 + P&amp;P Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-748145500290152518 Wed Nov 22 2017 07:09:00 GMT-0500 (EST) Zero-Based Budgeting: Pros, Cons & What to Know Before Getting Started https://www.us-analytics.com/hyperionblog/zero-based-budgeting <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/zero-based-budgeting" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/zero-based%20budgeting.jpg?t=1512966730140" alt="zero-based budgeting.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Zero-based budgeting (ZBB) is less common than traditional budgeting and <strong><a href="https://www.us-analytics.com/hyperionblog/should-you-use-rolling-forecasts-weighing-the-pros-and-cons">rolling forecasts</a></strong>. However, it’s been getting some attention in the last few years. Whereas traditional budgeting allows you to include items from the previous year, ZBB requires organizations to justify every dollar in detail.</p> <p>Building a budget from zero might seem like a tedious process, but it can help you make the best decisions for your company in the long run. In this blog post, we’ll cover some of the pros and cons of zero-based budgeting. And, we’ll look at some questions you need to ask before getting started with ZBB in Hyperion Planning.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fzero-based-budgeting&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/zero-based-budgeting Tue Nov 21 2017 10:19:51 GMT-0500 (EST) Oracle Data Integration Cloud Platform: Everything You Need to Know https://www.us-analytics.com/hyperionblog/oracle-data-integration-cloud-platform <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/oracle-data-integration-cloud-platform" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/data%20integration.jpg?t=1512966730140" alt="Oracle Data Integration Cloud Platform: Everything You Need to Know" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Oracle has a new data integration solution in the cloud — combining features from all your favorite on-prem data governance and data integration tools.</p> <p>Oracle’s Data Integration Cloud Platform (DIPC) seeks to bring together everything you need from a data integration, data governance, and data quality solution in one platform. With this one tool, you’re able to connect to hundreds of data sources — on-prem and in the cloud.</p> <p>In this blog post, we’ll cover the features included in DIPC as well as uses cases, benefits, and security.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Foracle-data-integration-cloud-platform&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Becky Wagner https://www.us-analytics.com/hyperionblog/oracle-data-integration-cloud-platform Mon Nov 20 2017 17:05:05 GMT-0500 (EST) Using Date Based Partitioning for OTBI Extracts with Data Sync to Improve Performance http://www.ateam-oracle.com/using-date-based-partitioning-for-otbi-extracts-with-data-sync-to-improve-performance/ For other A-Team articles about BICS, OAC, and Data Sync, click here Introduction The Data Sync tool provides the ability to extract from both on-premise, and cloud data sources, and to load that data into BI Cloud Service (BICS), Oracle Analytics Cloud Service (OAC), and other relational databases. I have previously written about the tool&#8217;s ability [&#8230;] Richard Williams http://www.ateam-oracle.com/?p=47450 Mon Nov 20 2017 14:03:55 GMT-0500 (EST) The Good, The Bad, and the Gorgeous https://blog.redpillanalytics.com/the-good-the-bad-and-the-gorgeous-f0cc856e556f?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*X3b3H8SLIHKrokFkTbGR3g.png" /></figure><h4>Some tips, tricks and thoughts on using Google Data Studio</h4><p>Red Pill Analytics recently delivered a solution that exclusively used Google Cloud Platform. Our client, a marketing team at Google, wanted to know how they were engaging with users across several online channels. We used Google Analytics, YouTube Analytics, AdWords, among other sources via BigQuery to bring data into Data Studio. For those of you not aware, Data Studio is Google’s cloud data visualization offering. (You can read more about what Google has to say about it <a href="https://www.google.com/analytics/data-studio/">here</a>).</p><h4>Are You Connected?</h4><p>Data Studio has a large number of native connectors that will allow you to connect to data in sources such as Google Analytics, YouTube Analytics, BigQuery, MySQL, and Google Sheets to name a few. A criticism I first had about Data Studio was the inability to join data sources within the application. Simply put, if you want to import several sources into Data Studio and use them in one visualization, you will have to combine them elsewhere. For several of our data sources, this was no big deal. In fact, Google Analytics data in particular works flawlessly with the Google Analytics native connector found in Data Studio. However, we had several sources that didn’t have quite the level of detail we needed in the native connector. This led us to use Data Transfer Service, which is a utility in BigQuery that will transfer data from Google owned and operated services. Hard to think of where they came up with the name, right? (More on that later).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UAI2bce9-bHJTdC3gG_4Ug.png" /></figure><p>The Data Studio page to the left are similar to the pages we delivered at Gooogle, and were created with the Google Analytics connector in Data Studio using data collected on <a href="http://redpillanalytics.com">redpillanalytics.com</a>. Want to take a guess as to how much customization to the data source was needed to produce that report? 1 column. I created the “Returning Users” column logically from other available columns brought in by Google Analytics. We did similar pages for other data sets for Google, with minimal logical customization needed. Yes, some of the connectors to the Google products and data sets behind them really are that good.</p><h4>Plug-n-Play? Not Quite</h4><p>There are quite a few connectors available for Data Studio that natively connect to data sources. But how about if you have data that isn’t coming from one of those? Data Studio has the ability to bring in data from Google Sheets or more importantly, BigQuery. (For those of you unfamiliar with BigQuery you can read more <a href="https://cloud.google.com/bigquery/">here</a>.) We were able to get our hands on BigQuery’s Data Transfer Service, which allowed us to load data into a Google Cloud Project from serveral sources (Firebase, YouTube and AdWords to name a few).</p><p>When it came time to create visualizations on those data sets in BigQuery, we initially found that it was difficult to create visuals that told a coherent story, were filterable on the same prompts, and felt part of a cohesive whole. This is because Data Studio does not support joins between data sources (as I said before). This was somewhat surprising as there are other popular data visualization tools that allow this functionality. But I digress…</p><p>Being the resourceful guy that I am, I rolled up my sleeves, brushed off my SQL skills and started creating database, er, BigQuery views to handle the more complex logic that Data Studio couldn’t. Once the views were written, it was easy to connect Data Studio to them with the BigQuery connector and create visualizations.</p><h4>Asking the Right Questions</h4><p>Another thing that is notable about Data Studio is its pixel perfect nature. The ability to place anything anywhere on the canvas is so refreshing. Compared to preformatted, designated areas for reports and prompts, Data Studio exhibits a sense of freedom not usually experienced in data viz, BI or analytics tools.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*p0kdxFaqP1B0g0jLjqlnCg.png" /><figcaption><em>I guess it isn’t that bad…</em></figcaption></figure><p>Like any new found freedom, it can be hard to know what to do, and we often start causing trouble because we don’t know any better. To the left is what happens when you try to port the old world into the new one.</p><p>While the dashboard I created isn’t terrible, it doesn’t play to the strengths of the tool. And this is because of an old world mentality. The use of simple (and not helpful) titles, relying on the user to “figure it out” and overall, the lack of a story. These were common dashboard and reporting mistakes made with enterprise tools like OBIEE. Data Studio restricts the ability to make those mistakes with the freedom to structure as you see fit. And this freedom means that we need to ask questions. (Check out my <a href="https://blog.redpillanalytics.com/hunters-eat-better-than-gatherers-4484b548e2d4">blog</a> for more thoughts on that topic.)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mqkccGzIIszvr8w3EES9BQ.png" /></figure><p>Let’s contrast my craft brewery report with the one to the left, which is an overview of Red Pill’s YouTube performance. Let’s start at the top and work our way down.</p><p>We can see some filter controls at the top: one for the date range, and one for the country code. I’ve worked at clients where there have been over 20 prompts on a dashboard. If you need so many filter controls, you don’t know what questions you’re asking.</p><p>Moving down a level, we can see we have some scorecards, which introduce the consumer to what we are talking about. Scorecards such as these can help set the tone and a frame of reference for more detailed visualizations. Additionally, the trending for these scorecards is as simple as defining the period of time we wanted to trend for. Defaults include last period (whatever the equivalent amount of time is selected for the report) or last year, but there are ways to customize as well. Think about how hard that would be in most other tools!</p><p>Finally, we get into the guts of the report page. You’ll notice that each visualization answers a question. You’ll also notice that we don’t have any tables in the report. While tables are fantastic for doing detailed analysis, being used as seed data for machine learning or statistical analysis, they look and act terribly on dashboards. Focusing our attention to answering questions and getting answers gives us a better output, and utilizes the tool as it should be.</p><h4>The Silent Cartographer</h4><p>Data Studio loves mapping data. Not only does it love it, it is good at it. Gone are the days of creating tedious map layers, curating geo data types and ensuring that lat-long values are correct. All that is required in Data Studio is setting data types correctly, which is incredibly simple.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OCm8pUTEKd7KWnaQh3FdrQ.png" /></figure><p>You can see to the left is the drop down menu used for setting the geography type. Set the data type to the corresponding value set, and away you go! I’ve found that the code values correlate to geo ISO codes, and non-code values are names. The example to the left is from YouTube Analytics example we saw above.</p><h4>Sharing is Caring</h4><p>Another notable feature about Data Studio is its integration with Google Drive. This allows for easy sharing and collaboration with others. There are several options once you share, which will permit users to view, edit or become owners of the report. These permissions will also be inherited if the report is moved to a different folder; the users that have access to that folder will also have those permissions. Gone are the days of guessing which security groups a person is in or if that group has access to the report, because with Google Drive, it is pretty darn easy to know who has access to what.</p><p>One other thing to note is that data connectors are also stored in Google Drive, rather than being stored within the report. (However when a data connector is created, it is saved into the creator’s Google Drive home.) This means that the data connectors could be edited by multiple people and used within multiple reports. The same type of permission logic I talked about above is present here allowing for edits to be made by those with access to a Drive folder. Though it is worth noting that there is another level of nuance here. Data can be secured by setting a data source to query as the user (the default is to query as the owner) allowing for data level security to be implemented.</p><h4>Four Stars and Two Thumbs Up</h4><p>There is definitely some nuance that accompanies more complex data in Data Studio, but that is to be expected with any tool. Safe to say, I think that Data Studio is abound with awesome features, and I would be happy to use it with clients again.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f0cc856e556f" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/the-good-the-bad-and-the-gorgeous-f0cc856e556f">The Good, The Bad, and the Gorgeous</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Phil Goerdt https://medium.com/p/f0cc856e556f Mon Nov 20 2017 10:30:12 GMT-0500 (EST) OAC - PBCS Connectivity http://beyond-just-data.blogspot.com/2017/11/oac-pbcs-connectivity.html <span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I am not one to re-post Oracle Documentation or Oracle Readme's and pretend to make it my own.&nbsp; My intent for any of my blog posts is to extend the information provided or provide clarity.</span></span><br /><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">The OAC 17.3.5 (August 2017) release extended connectivity to PBCS / EPBCS.</span></span><br /><br /><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">The configuration / setup instructions can be found here.&nbsp; <a href="https://docs.oracle.com/en/cloud/paas/analytics-cloud/acabi/integrating-oracle-planning-and-budgeting.html" target="_blank">OAC PaaS Docs</a></span></span><br /><div class="MsoNormal"><br /></div><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">If you need to see pictures of this process you can do internet search for other blog posts that another person produced.</span></span><br /><br /><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I followed each of these and when I attempted to connect and import metadata I received the following:</span></span><br /><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://4.bp.blogspot.com/-XvEPqSuYeN4/Wg8qxXxGKmI/AAAAAAAAMOs/66PqmAK3xhYb4sxmnaueaHZ1KcrsC4S1ACLcBGAs/s1600/Fail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="588" data-original-width="894" height="262" src="https://4.bp.blogspot.com/-XvEPqSuYeN4/Wg8qxXxGKmI/AAAAAAAAMOs/66PqmAK3xhYb4sxmnaueaHZ1KcrsC4S1ACLcBGAs/s400/Fail.png" width="400" />&nbsp;</a></span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">the NQSAdminTool.log file was not too helpful</span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://3.bp.blogspot.com/-d_Gh6J84vb8/Wg8ynrPOe2I/AAAAAAAAMO8/jxRWUJIXO6IRierINXOVMiZleB-xnUO1ACLcBGAs/s1600/log.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="348" data-original-width="1080" height="128" src="https://3.bp.blogspot.com/-d_Gh6J84vb8/Wg8ynrPOe2I/AAAAAAAAMO8/jxRWUJIXO6IRierINXOVMiZleB-xnUO1ACLcBGAs/s400/log.png" width="400" /></a></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">However, I got to thinking; for the connectivity to Essbase Cloud I needed to open up ports on my Cloud Compute.&nbsp; I checked with my contact within my contact within Product Development and this was confirmed.</span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">So after logging into myCloudService and switching to the Compute Console / Network</span></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-PFYbt4q-mHE/Wg83xos8AuI/AAAAAAAAMPU/ByISo6EScMw_41dw1-wkvqzFRPA-Ikv8gCLcBGAs/s1600/MyCloudServices.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="181" data-original-width="756" height="95" src="https://2.bp.blogspot.com/-PFYbt4q-mHE/Wg83xos8AuI/AAAAAAAAMPU/ByISo6EScMw_41dw1-wkvqzFRPA-Ikv8gCLcBGAs/s400/MyCloudServices.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span></span></div><br /><br /><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I created a new Security Application with connectivity on port 9506</span></span></div><br /><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span></span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"></span></span></div><div style="text-align: center;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://4.bp.blogspot.com/-d4cveWXaseg/Wg8yskfyo6I/AAAAAAAAMPA/L3_q6W8U7JYEnNoTIReVSvh7P4WhiQtSgCLcBGAs/s1600/JavaHost1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="406" data-original-width="780" height="166" src="https://4.bp.blogspot.com/-d4cveWXaseg/Wg8yskfyo6I/AAAAAAAAMPA/L3_q6W8U7JYEnNoTIReVSvh7P4WhiQtSgCLcBGAs/s320/JavaHost1.png" width="320" /></a>&nbsp;</span></span></div><br /><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Next<span style="color: #0000ee;"><u>,</u></span> I created a Security Rule with the Destination ANALYTICS/<i>instance</i>/ora_bi_infraadmin</span></span><br /><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://2.bp.blogspot.com/-iwU3m2j65S0/Wg8yu1x2cAI/AAAAAAAAMPE/YFbBhndX51we9KJfyjico-5y3HfZSgqLQCLcBGAs/s1600/2017-11-13_17-06-09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="654" data-original-width="784" height="266" src="https://2.bp.blogspot.com/-iwU3m2j65S0/Wg8yu1x2cAI/AAAAAAAAMPE/YFbBhndX51we9KJfyjico-5y3HfZSgqLQCLcBGAs/s320/2017-11-13_17-06-09.png" width="320" /></a></span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Then back to my OAC Client Admin tool.&nbsp; I provided all the necessary connection information and Voila!&nbsp; I am able to import my EPBCS cubes into my RPD. </span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://3.bp.blogspot.com/-zA5u_6LdJgk/Wg8qxQ_t4OI/AAAAAAAAMOo/63FSFusdHXM46mgGhhEekqolEvMc3nz6QCLcBGAs/s1600/Success.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="588" data-original-width="893" height="262" src="https://3.bp.blogspot.com/-zA5u_6LdJgk/Wg8qxQ_t4OI/AAAAAAAAMOo/63FSFusdHXM46mgGhhEekqolEvMc3nz6QCLcBGAs/s400/Success.png" width="400" /></a></span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">&nbsp;Until next time! </span></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><span style="font-size: small;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span><br /><br /> Wayne D. Van Sluys tag:blogger.com,1999:blog-7768091516190336427.post-5049716925672267060 Fri Nov 17 2017 14:33:00 GMT-0500 (EST) What’s EPRCS? Management Reporting from Oracle EPM, BI & ERP Data https://www.us-analytics.com/hyperionblog/enterprise-performance-reporting-cloud <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/enterprise-performance-reporting-cloud" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Oracle%20EPRCS.jpg?t=1512966730140" alt="Oracle EPRCS.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Finding a solution that allows for collaborative financial reporting that retains data integrity is an important goal for many organizations. It’s not a decision to take lightly, and you probably have a lot of questions about each tool you’re looking at.</p> <p>If you use Oracle EPM, BI, and/or ERP technology, you’re likely considering Oracle Enterprise Performance Reporting Cloud Service — a management and narrative reporting tool designed specifically for your Oracle systems.</p> <p>To help you decide if EPRCS is a good fit for you, we’ve covered frequently asked questions in this blog post. If you prefer video, skip straight to the <a href="https://www.us-analytics.com/video-oracle-enterprise-performance-reporting-cloud-service-eprcs">EPRCS demo</a> for a visual tour.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fenterprise-performance-reporting-cloud&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/enterprise-performance-reporting-cloud Fri Nov 17 2017 13:34:40 GMT-0500 (EST) Bulk Loading Zone https://blog.redpillanalytics.com/bulk-loading-zone-becac864cb12?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BnoWCI5PJP9qfuhCZ_SIHw.png" /></figure><p>Whether its an enterprise application, the automobile you drive, or <a href="https://www.theguardian.com/technology/2016/oct/12/english-man-spends-11-hours-trying-to-make-cup-of-tea-with-wi-fi-kettle">your favorite tea kettle</a>, seemingly everything in the world today produces data. This results in a need to transfer data to a place where people and technology can make sense of it. Typically, the faster data can be transferred and more data that can be stored in a centralized location, the better. One method of speeding up the data transfer process is to avoid running multiple insert statements and complete load tasks en masse, a function commonly referred to as bulk loading. <a href="https://streamsets.com/products/sdc/">StreamSets Data Collector</a> and <a href="https://www.snowflake.net/">Snowflake Data Warehouse</a> have emerged as front-runners for transferring and storing data, respectively, and conveniently work well together when bulk loading data.</p><p>Bulk loading data into Snowflake Data Warehouse is achieved using two basic commands: PUT and COPY INTO. Think of it like this: <em>put </em>the data somewhere Snowflake can see it and <em>copy </em>the data <em>into </em>Snowflake; pretty straightforward. As is often the case, these two commands support several options and can be made to be more complex but at their core, it is as simple as it sounds.</p><p>So where can Snowflake see the data? Answer: in an internal stage (user, table, or named) or an external stage, which amounts to any AWS S3 Bucket that Snowflake is given access to. With an internal stage, <a href="https://docs.snowflake.net/manuals/user-guide/snowsql.html">SnowSQL</a> or an equivalent client is used to upload files using the PUT command. Externally staged data files have a bit more freedom in that any technology that can ship files to S3 can be used. Enter StreamSets Data Collector.</p><p>StreamSets Data Collector (SDC) includes Amazon S3 as a destination (the PUT) and a JDBC Executor that can be called from the S3 destination using event framework, also called <em>triggers</em>,<em> </em>(the COPY INTO).</p><p>Focusing on externally staged data, the first step is to create an S3 bucket to be used for staging the data files. Red Pill Analytics already has a bucket for SDC prototyping in our account; that will do just fine.</p><p>Next, Snowflake needs access to read from the bucket; the following statement will create an external stage. <strong><em>Note</em></strong><em>: It is also possible to read straight from an S3 bucket without defining a stage. </em>This particular statement creates a stage called streamsets_test in the rpa_demo.publicschema.</p><pre>create stage rpa_demo.public.streamsets_test url = &#39;s3://&lt;bucket&gt;&#39; credentials = (aws_key_id = &#39;&lt;aws_key&gt;&#39; aws_secret_key = &#39;&lt;aws_secret_key&gt;&#39;);</pre><p>And then a table in the same database.schema to serve as the target. The pipeline will be configured to create JSON files so only one variant-type column is necessary:</p><p>create table rpa_demo.public.streamsets(v variant);</p><p>Lastly, a file format to facilitate loading JSON data rounds out the Snowflake setup:</p><pre>create file format rpa_demo.public.json type = &#39;JSON&#39; compression = &#39;auto&#39;;</pre><p>Now to configure the SDC pipeline. The source can be <a href="https://streamsets.com/connectors">any origin that StreamSets supports</a>. I’ve recently been working on an Oracle RDS database that contains TPC-DI data so I’ll run with that for now by using the JDBC Query Consumer. <strong>Important</strong>: To connect to a database via JDBC, the appropriate JDBC driver needs to exist or be added to the SDC external libraries. This remains true for loading data to Snowflake Data Warehouse.</p><p>A JDBC connection string and simple query using SDC syntax for incremental mode (if required) are all that is needed for this stage. This example will query data in the TRADE table:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5rQ0Wz_dLUGEVzqZ--RJGQ.png" /></figure><p>Any of the SDC processors can be used to perform additional data processing at this point but rather than adding complexity, going straight from source to target will help keep it simple. With that said, the next step is to add the Amazon S3 destination using the same bucket that was created as a Snowflake external stage. The S3 destination needs a bucket name and its corresponding keys:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*q8p0OeW6f1Jh-znQrzcqxA.png" /></figure><p>Triggers are enabled by simply checking the box labeled <em>Produce Events</em> on the S3 destination:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OseLUhhnWJhm5LY_Zb_2Xg.png" /></figure><p>The JDBC Executor is now able to be called after data files are written to S3. By placing the SQL statement below in the JDBC Executor <em>SQL Query</em> configuration, only the statement (not the data) will be issued to Snowflake via a JDBC call. Snowflake will then handle the connection back to the S3 bucket based on the setup/configurations above and bulk load the data into the specified destination; in this case,rpa_demo.public.streamsets.</p><pre>copy into rpa_demo.public.streamsets<br> from @streamsets_test<br> file_format = &#39;json&#39;;</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_j3jAfeN5834jjg9Neqr-Q.png" /></figure><p>The pipeline is ready to go. On your mark, get set, start the pipeline! As expected, SDC has created a .json file in S3…</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1gtIh5p6EZDX2mBtI6d5eA.png" /></figure><p>…and the data has been copied into Snowflake.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nrR9J1UmMGOa-moah1NnsA.png" /></figure><p>Success!</p><p>As an aside — SDC also provides a JDBC Producer destination which can be used to load Snowflake and is sufficient in many, usually smaller scale, use cases. The JDBC Producer loads records using insert statements with bind variables; use PUT/COPY INTO when bulk loading is desirable.</p><p>Be sure to check back for follow-up blogs on how to enhance the basic process outlined in this post.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=becac864cb12" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/bulk-loading-zone-becac864cb12">Bulk Loading Zone</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Mike Fuller https://medium.com/p/becac864cb12 Fri Nov 17 2017 10:40:14 GMT-0500 (EST) Allies: Oracle Data Miner, Data Visualization, and R Enterprise https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/ <p>Phew, it’s been a looong time since I last blogged. The frequency of my blogs is inversely related to my workload, so suffice it to say that there are lots of people interested in BI, Data Visualization, and Advanced Analytics right now!</p> <p>I have had a blog post brewing in my head about all the new features of Data Visualization Desktop 4.0, but instead of showing you all the new and additional features (like everyone is doing now, therefore adding zero collective value), I want to show you how I’m demoing some of the new features using a full analytics stack, not just DV. The various advanced analytics options <em>complement </em>each other, not replace each other!</p> <p><strong>Background</strong></p> <p>A topic that is coming up more frequently with customers is Advanced Analytics in Oracle, specifically around R, an open source statistics programming language and software environment. I was first introduced to R in college during my capstone statistics classes but never used it post-undergrad. In grad school, we were taught to use SPSS, but by then I had already been “real-world” programming for a few years and found it easier to code my own stats programs versus learning someone else’s. …But I still had R as a base.</p> <p>I’ve really been excited about the opportunity to relearn R for showing customers Oracle’s strength in the advanced analytics arena using R. This includes Oracle R Enterprise, Advanced Analytics in the Oracle database, Advanced Analytics in Oracle Business Intelligence, and Advanced Analytics &amp; R in Data Visualization. …Yep, I finally get to use my R and statistics skills nearly 20 years after I learned them. Okay, I’ve re-learned them.</p> <p>A flow that I recently presented was one using Oracle Data Miner (via the tutorial example) to filter out the insurance customers with the greatest LTV. I won’t go into too many details on this piece as I want to dedicate a blog or two to this tool on its own.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image001.jpg"><img data-attachment-id="1863" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image001-12/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image001.jpg?w=840" data-orig-size="624,317" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image001" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image001.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image001.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image001.jpg?w=840" alt="" class="alignnone size-full wp-image-1863" srcset="https://epmqueen.files.wordpress.com/2017/11/image001.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image001.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image001.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>I am using the example from Oracle Data Miner that shows the flow in SQL*Developer to identify the best LTV (long term value) of customers. If you haven’t already gone through the tutorial for installing and creating flows in Data Miner, I highly recommend taking the hour or so to learn the process.</p> <p>A table that is part of this process is called “INSUR_CUST_LTV_SAMPLE”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image002.png"><img data-attachment-id="1864" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image002-9/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image002.png?w=840" data-orig-size="265,156" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image002" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image002.png?w=840?w=265" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image002.png?w=840?w=265" src="https://epmqueen.files.wordpress.com/2017/11/image002.png?w=840" alt="" class="alignnone size-full wp-image-1864" srcset="https://epmqueen.files.wordpress.com/2017/11/image002.png 265w, https://epmqueen.files.wordpress.com/2017/11/image002.png?w=150 150w" sizes="(max-width: 265px) 100vw, 265px" /></a></p> <p>This has proven to be a fun set of data to work with, and also real-world applicable. Before heading to ORE, let’s take a look at some fun with the data in DVD 4.0.</p> <p>First things first…</p> <ol start="1"> <li>Create the Connection in DVD<br /> <a href="https://epmqueen.files.wordpress.com/2017/11/image003.jpg"><img data-attachment-id="1865" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image003-10/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image003.jpg?w=840" data-orig-size="624,494" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image003" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image003.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image003.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image003.jpg?w=840" alt="" class="alignnone size-full wp-image-1865" srcset="https://epmqueen.files.wordpress.com/2017/11/image003.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image003.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image003.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> </li> <li>Create the Data Set to use from the Connection and connect to “INSUR_CUST_LTV_SAMPLE”.<br /> <a href="https://epmqueen.files.wordpress.com/2017/11/image004.jpg"><img data-attachment-id="1866" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image004-10/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image004.jpg?w=840" data-orig-size="624,140" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image004" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image004.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image004.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image004.jpg?w=840" alt="" class="alignnone size-full wp-image-1866" srcset="https://epmqueen.files.wordpress.com/2017/11/image004.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image004.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image004.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> </li> <li>Create a new project with the new Data Set. From here, you can create whatever your mind can imagine or wonder.<br /> <a href="https://epmqueen.files.wordpress.com/2017/11/image005.jpg"><img data-attachment-id="1867" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image005-12/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image005.jpg?w=840" data-orig-size="625,298" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image005" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image005.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image005.jpg?w=840?w=625" src="https://epmqueen.files.wordpress.com/2017/11/image005.jpg?w=840" alt="" class="alignnone size-full wp-image-1867" srcset="https://epmqueen.files.wordpress.com/2017/11/image005.jpg 625w, https://epmqueen.files.wordpress.com/2017/11/image005.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image005.jpg?w=300 300w" sizes="(max-width: 625px) 100vw, 625px" /></a></p> </li> </ol> <p>One piece I’ve really enjoyed in 4.0 (not to get ahead of myself), is the “Explain” function. You can choose any Attribute in your data element list and see how that attribute correlates to other attributes and facts or find anomalies in your data. Basically, DVD goes through a series of R and Python scripts to teach you about your own data. Sidebar: If you are curious about the different R and Python scripts available to you in DVD, go to the following folder and see for yourself:</p> <p>R:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image006.jpg"><img data-attachment-id="1868" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image006-11/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image006.jpg?w=840" data-orig-size="624,449" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image006" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image006.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image006.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image006.jpg?w=840" alt="" class="alignnone size-full wp-image-1868" srcset="https://epmqueen.files.wordpress.com/2017/11/image006.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image006.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image006.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>Python:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image007.jpg"><img data-attachment-id="1869" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image007-9/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image007.jpg?w=840" data-orig-size="624,348" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image007" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image007.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image007.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image007.jpg?w=840" alt="" class="alignnone size-full wp-image-1869" srcset="https://epmqueen.files.wordpress.com/2017/11/image007.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image007.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image007.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>When I ran “Explain” on “SEX” (right-clicking on “Sex” and choosing “Explain SEX”</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image008.png"><img data-attachment-id="1870" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image008-12/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image008.png?w=840" data-orig-size="312,227" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image008" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image008.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image008.png?w=840?w=312" src="https://epmqueen.files.wordpress.com/2017/11/image008.png?w=840" alt="" class="alignnone size-full wp-image-1870" srcset="https://epmqueen.files.wordpress.com/2017/11/image008.png 312w, https://epmqueen.files.wordpress.com/2017/11/image008.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image008.png?w=300 300w" sizes="(max-width: 312px) 100vw, 312px" /></a></p> <p>I get many different panes of information. Here are a few:</p> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image009-12/'><img width="150" height="90" src="https://epmqueen.files.wordpress.com/2017/11/image009.jpg?w=150&#038;h=90" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image009.jpg?w=150&#038;h=90 150w, https://epmqueen.files.wordpress.com/2017/11/image009.jpg?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1871" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image009-12/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image009.jpg" data-orig-size="624,375" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image009" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image009.jpg?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image009.jpg?w=624" /></a> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image010-10/'><img width="150" height="90" src="https://epmqueen.files.wordpress.com/2017/11/image010.jpg?w=150&#038;h=90" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image010.jpg?w=150&#038;h=90 150w, https://epmqueen.files.wordpress.com/2017/11/image010.jpg?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1872" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image010-10/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image010.jpg" data-orig-size="624,373" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image010" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image010.jpg?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image010.jpg?w=624" /></a> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image011-11/'><img width="150" height="90" src="https://epmqueen.files.wordpress.com/2017/11/image011.jpg?w=150&#038;h=90" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image011.jpg?w=150&#038;h=90 150w, https://epmqueen.files.wordpress.com/2017/11/image011.jpg?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1873" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image011-11/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image011.jpg" data-orig-size="623,374" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image011" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image011.jpg?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image011.jpg?w=623" /></a> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image012-10/'><img width="150" height="90" src="https://epmqueen.files.wordpress.com/2017/11/image012.jpg?w=150&#038;h=90" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image012.jpg?w=150&#038;h=90 150w, https://epmqueen.files.wordpress.com/2017/11/image012.jpg?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1874" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image012-10/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image012.jpg" data-orig-size="624,374" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image012" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image012.jpg?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image012.jpg?w=624" /></a> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image013-10/'><img width="150" height="90" src="https://epmqueen.files.wordpress.com/2017/11/image013.jpg?w=150&#038;h=90" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image013.jpg?w=150&#038;h=90 150w, https://epmqueen.files.wordpress.com/2017/11/image013.jpg?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1875" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image013-10/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image013.jpg" data-orig-size="623,373" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image013" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image013.jpg?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image013.jpg?w=623" /></a> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image014-10/'><img width="150" height="91" src="https://epmqueen.files.wordpress.com/2017/11/image014.jpg?w=150&#038;h=91" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image014.jpg?w=150&#038;h=91 150w, https://epmqueen.files.wordpress.com/2017/11/image014.jpg?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1876" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image014-10/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image014.jpg" data-orig-size="624,377" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image014" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image014.jpg?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image014.jpg?w=624" /></a> <p>And then, you can take these visualizations and use them immediately in your project.</p> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image015-7/'><img width="150" height="90" src="https://epmqueen.files.wordpress.com/2017/11/image015.jpg?w=150&#038;h=90" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image015.jpg?w=150&#038;h=90 150w, https://epmqueen.files.wordpress.com/2017/11/image015.jpg?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1877" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image015-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image015.jpg" data-orig-size="625,376" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image015" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image015.jpg?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image015.jpg?w=625" /></a> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image016-9/'><img width="150" height="69" src="https://epmqueen.files.wordpress.com/2017/11/image016.jpg?w=150&#038;h=69" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image016.jpg?w=150&#038;h=69 150w, https://epmqueen.files.wordpress.com/2017/11/image016.jpg?w=298 298w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1878" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image016-9/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image016.jpg" data-orig-size="625,289" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image016" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image016.jpg?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image016.jpg?w=625" /></a> <p>So…enough with DVD. Let’s move to ORE…</p> <p>Oracle R Enterprise allows you to connect to Oracle databases via the R interface. This can be done via RStudio or by invoking R via the command line.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image017.jpg"><img data-attachment-id="1879" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image017-6/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image017.jpg?w=840" data-orig-size="624,436" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image017" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image017.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image017.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image017.jpg?w=840" alt="" class="alignnone size-full wp-image-1879" srcset="https://epmqueen.files.wordpress.com/2017/11/image017.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image017.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image017.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>To use ORE, we need to invoke the ORE library.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image018.jpg"><img data-attachment-id="1880" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image018-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image018.jpg?w=840" data-orig-size="624,439" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image018" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image018.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image018.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image018.jpg?w=840" alt="" class="alignnone size-full wp-image-1880" srcset="https://epmqueen.files.wordpress.com/2017/11/image018.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image018.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image018.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>The first thing we need to do is connect to the database. <a href="https://epmqueen.files.wordpress.com/2017/11/image019.jpg"><img data-attachment-id="1881" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image019-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image019.jpg?w=840" data-orig-size="624,440" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image019" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image019.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image019.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image019.jpg?w=840" alt="" class="alignnone size-full wp-image-1881" srcset="https://epmqueen.files.wordpress.com/2017/11/image019.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image019.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image019.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>From the built in R datasets, let’s create a table in our Oracle database. Let’s choose ‘airquality’.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image020.jpg"><img data-attachment-id="1882" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image020-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image020.jpg?w=840" data-orig-size="624,437" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image020" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image020.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image020.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image020.jpg?w=840" alt="" class="alignnone size-full wp-image-1882" srcset="https://epmqueen.files.wordpress.com/2017/11/image020.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image020.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image020.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>We aren’t limited to just datasets. We can create random datasets to send to the database. Here, we are creating a data frame in which the x values are 1-5 and the y values are a-e.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image021.jpg"><img data-attachment-id="1883" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image021-8/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image021.jpg?w=840" data-orig-size="624,438" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image021" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image021.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image021.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image021.jpg?w=840" alt="" class="alignnone size-full wp-image-1883" srcset="https://epmqueen.files.wordpress.com/2017/11/image021.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image021.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image021.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>Next, let’s create another data frame with different, but similar parameters.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image022.png"><img data-attachment-id="1884" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image022-6/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image022.png?w=840" data-orig-size="657,465" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image022" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image022.png?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image022.png?w=840?w=657" src="https://epmqueen.files.wordpress.com/2017/11/image022.png?w=840" alt="" class="alignnone size-full wp-image-1884" srcset="https://epmqueen.files.wordpress.com/2017/11/image022.png 657w, https://epmqueen.files.wordpress.com/2017/11/image022.png?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image022.png?w=300 300w" sizes="(max-width: 657px) 100vw, 657px" /></a></p> <p>Let’s create a table with the data frames we have created from thin air.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image023.jpg"><img data-attachment-id="1885" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image023-6/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image023.jpg?w=840" data-orig-size="624,441" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image023" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image023.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image023.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image023.jpg?w=840" alt="" class="alignnone size-full wp-image-1885" srcset="https://epmqueen.files.wordpress.com/2017/11/image023.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image023.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image023.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>Let’s see the list of all of our database tables from R:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image024.jpg"><img data-attachment-id="1886" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image024-6/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image024.jpg?w=840" data-orig-size="624,436" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image024" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image024.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image024.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image024.jpg?w=840" alt="" class="alignnone size-full wp-image-1886" srcset="https://epmqueen.files.wordpress.com/2017/11/image024.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image024.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image024.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>AIRQUALITY, DF1, and DF2. Exactly what we would expect.</p> <p>Let’s see what’s in the R list:</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image025.jpg"><img data-attachment-id="1887" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image025-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image025.jpg?w=840" data-orig-size="624,440" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image025" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image025.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image025.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image025.jpg?w=840" alt="" class="alignnone size-full wp-image-1887" srcset="https://epmqueen.files.wordpress.com/2017/11/image025.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image025.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image025.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>Since we did not add “airquality” to our R list, it doesn’t show.</p> <p>Let’s save our “airquality” to our lists. Note that it was already there for me, so I got an “error”.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image026.jpg"><img data-attachment-id="1888" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image026-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image026.jpg?w=840" data-orig-size="624,437" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image026" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image026.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image026.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image026.jpg?w=840" alt="" class="alignnone size-full wp-image-1888" srcset="https://epmqueen.files.wordpress.com/2017/11/image026.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image026.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image026.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>To show the proof that R is working with the Oracle database, here are our listings in SQL*Developer.</p> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image027-6/'><img width="150" height="114" src="https://epmqueen.files.wordpress.com/2017/11/image027.png?w=150&#038;h=114" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image027.png?w=150&#038;h=114 150w, https://epmqueen.files.wordpress.com/2017/11/image027.png?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1889" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image027-6/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image027.png" data-orig-size="630,477" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image027" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image027.png?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image027.png?w=630" /></a> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image028-7/'><img width="150" height="135" src="https://epmqueen.files.wordpress.com/2017/11/image028.png?w=150&#038;h=135" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image028.png?w=150&#038;h=135 150w, https://epmqueen.files.wordpress.com/2017/11/image028.png?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1890" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image028-7/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image028.png" data-orig-size="450,404" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image028" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image028.png?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image028.png?w=450" /></a> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image029-4/'><img width="150" height="132" src="https://epmqueen.files.wordpress.com/2017/11/image029.png?w=150&#038;h=132" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image029.png?w=150&#038;h=132 150w, https://epmqueen.files.wordpress.com/2017/11/image029.png?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1891" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image029-4/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image029.png" data-orig-size="427,377" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image029" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image029.png?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image029.png?w=427" /></a> <a href='https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image030-3/'><img width="150" height="38" src="https://epmqueen.files.wordpress.com/2017/11/image030.jpg?w=150&#038;h=38" class="attachment-thumbnail size-thumbnail" alt="" srcset="https://epmqueen.files.wordpress.com/2017/11/image030.jpg?w=150&#038;h=38 150w, https://epmqueen.files.wordpress.com/2017/11/image030.jpg?w=300 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="1892" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image030-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image030.jpg" data-orig-size="624,157" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image030" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image030.jpg?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image030.jpg?w=624" /></a> <p>To show we can also do “R” things, here is an example of a summary of our data store.</p> <p><a href="https://epmqueen.files.wordpress.com/2017/11/image031.jpg"><img data-attachment-id="1893" data-permalink="https://realtrigeek.com/2017/11/16/allies-oracle-data-miner-data-visualization-and-r-enterprise/image031-3/" data-orig-file="https://epmqueen.files.wordpress.com/2017/11/image031.jpg?w=840" data-orig-size="624,437" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image031" data-image-description="" data-medium-file="https://epmqueen.files.wordpress.com/2017/11/image031.jpg?w=840?w=300" data-large-file="https://epmqueen.files.wordpress.com/2017/11/image031.jpg?w=840?w=624" src="https://epmqueen.files.wordpress.com/2017/11/image031.jpg?w=840" alt="" class="alignnone size-full wp-image-1893" srcset="https://epmqueen.files.wordpress.com/2017/11/image031.jpg 624w, https://epmqueen.files.wordpress.com/2017/11/image031.jpg?w=150 150w, https://epmqueen.files.wordpress.com/2017/11/image031.jpg?w=300 300w" sizes="(max-width: 624px) 100vw, 624px" /></a></p> <p>So there’s the quick and dirty on how you can tie together Data Miner, Data Visualization, and ORE. These Advanced Analytics are not “or” decisions, they are easily “and” decisions!</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/epmqueen.wordpress.com/1862/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/epmqueen.wordpress.com/1862/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=realtrigeek.com&#038;blog=70089387&#038;post=1862&#038;subd=epmqueen&#038;ref=&#038;feed=1" width="1" height="1" /> Sarah Craynon Zumbrum http://realtrigeek.com/?p=1862 Thu Nov 16 2017 20:07:08 GMT-0500 (EST) How to Implement Transparent Data Encryption (TDE) in an Oracle Database http://blog.performancearchitects.com/wp/2017/11/15/how-to-implement-transparent-data-encryption-tde-in-an-oracle-database/ <p>Author: Cameron Ross, Performance Architects</p> <p>The reason for using <a href="http://www.oracle.com/technetwork/database/security/tde-faq-093689.html">Oracle Transparent Data Encryption Oracle (TDE)</a> column encryption is to protect confidential data, such as credit card and social security numbers, stored in table columns. TDE column encryption encrypts and decrypts data transparently when data passes through the SQL layer with no modification required to any existing application.</p> <p>The first step to implementing Oracle TDE is to create a wallet file location that will store all of the encryption key information. Below is a screenshot after manually creating the “orcl_wallet” folder in the file directory on the machine where the Oracle database is installed:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-1.png"><img class="alignnone size-medium wp-image-2174" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-1-300x157.png" alt="" width="300" height="157" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-1-300x157.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-1-768x402.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-1-624x326.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-1.png 855w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>The next step is to specify the location of the wallet in the “sqlnet.ora” file, located in the “NETWORK/admin” folder.</p> <ul> <li>ENCRYPTION_WALLET_LOCATION =(SOURCE =(METHOD = FILE)(METHOD_DATA =(DIRECTORY = ’file location’)))</li> </ul> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-2.png"><img class="alignnone size-medium wp-image-2173" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-2-300x113.png" alt="" width="300" height="113" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-2-300x113.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-2-768x290.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-2-624x235.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-2.png 954w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Then, open up a command window and connect to “sqlplus” using the “sys” as an “sysdba” account.   As an alternative, a user assigned the “SYSKM” privilege also login.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-3.png"><img class="alignnone size-medium wp-image-2172" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-3-300x159.png" alt="" width="300" height="159" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-3-300x159.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-3-624x330.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-3.png 679w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>After logging into “sqlplus,” execute the following commands to create, open, and set the master key:</p> <ul> <li>ADMINISTER KEY MANAGEMENT CREATE KEYSTORE ‘file location’ IDENTIFIED BY ‘password’; <ul> <li>This command creates the keystore file in the location that was inserted into the sqlnet.ora file</li> </ul> </li> <li>ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY ‘password’; <ul> <li>This command opens the keystore to enable encrypting columns or tablespaces</li> </ul> </li> <li>ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY ‘password’ WITH BACKUP; <ul> <li>This command sets up the master key that controls all of the keys that are used to encrypt specific columns</li> </ul> </li> </ul> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-4.png"><img class="alignnone size-medium wp-image-2171" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-4-300x164.png" alt="" width="300" height="164" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-4-300x164.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-4-624x342.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-4.png 676w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Query “V_$ENCRYPTION_WALLET” to ensure that the “STATUS” column is set to “OPEN” and that the “WALLET_TYPE” column is set to “PASSWORD.” This ensures that the wallet has been set up correctly and is open.</p> <p>One advanced feature of TDE is being able to set the wallet for auto-login. This opens the wallet and key store automatically whenever the database is started.   If auto-login is not enabled, commands to open the key store must be executed each time the database is started.</p> <p>To enable auto-login, enter the following statements:</p> <ul> <li>ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE ‘file location’ IDENTIFIED BY ‘password’;</li> <li>After entering the “Create Auto Login” command, use the “Startup Force” command to restart the database instance. The reason to restart the database instance is so that it can switch the wallet type from “password” to “auto-login.”</li> </ul> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-5.png"><img class="alignnone size-medium wp-image-2170" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-5-300x162.png" alt="" width="300" height="162" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-5-300x162.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-5.png 418w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>To ensure that the auto-login is set to “Wallet,” log in to the database via any SQL querying tool and query the “V_$ENCRYPTION_WALLET” table. Ensure that your “WALLET_TYPE” column is set to “AUTOLOGIN” and that the “STATUS” column is set to “OPEN.”</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-6.png"><img class="alignnone size-medium wp-image-2169" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-6-300x120.png" alt="" width="300" height="120" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-6-300x120.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/cam-6.png 609w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>&nbsp;</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2168 Wed Nov 15 2017 05:16:30 GMT-0500 (EST) UPDATE: OAC - Import Essbase Cloud to OAC-BI Admin Tool http://beyond-just-data.blogspot.com/2017/11/update-oac-import-essbase-cloud-to-oac.html <span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><br /></span></span><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">In my post <a class="OAVLIQC-c-g" href="https://www.blogger.com/blogger.g?blogID=7768091516190336427#editor/target=post;postID=3314267337444036097;onPublishedMenu=template;onClosedMenu=template;postNum=7;src=postname">OAC - Import Essbase Cloud to OAC-BI Admin Tool </a></span></span><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><br /></span></span><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">I shared that the Essbase 11.1.2.3.500 Database Type does not work for importing Essbase metadata and that you needed to use the Essbase 9 type the switch back to Essbase 11.1.2.3.500 in order to pass the consistency check.</span></span><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><br /></span></span><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Well I opened an SR and was told that this fixed in the OAC 17.4.1 patch and related BI Admin Tool.&nbsp;&nbsp;</span></span><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><br /></span></span><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">So I have updated my Database Type in my Essbase Connection</span></span><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><br /></span></span><div class="separator" style="clear: both; text-align: center;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><a href="https://4.bp.blogspot.com/-AiZ2-r3NQCQ/WgoujpjjtoI/AAAAAAAAMOM/2DfDMOengVwdihVWcBbi_G3kYux_gcNfQCLcBGAs/s1600/bad.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="324" data-original-width="571" height="226" src="https://4.bp.blogspot.com/-AiZ2-r3NQCQ/WgoujpjjtoI/AAAAAAAAMOM/2DfDMOengVwdihVWcBbi_G3kYux_gcNfQCLcBGAs/s400/bad.png" width="400" /></a></span></span></div><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">And when I attempted to import metadata I still get the error.</span></span><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">&nbsp;</span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><a href="https://1.bp.blogspot.com/--t0luYQ8oxs/WgoujXFrnqI/AAAAAAAAMOI/4uXKkq5WrgkTtr6sFxsaS08HmtgfFMW9wCLcBGAs/s1600/Fail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="430" data-original-width="982" height="175" src="https://1.bp.blogspot.com/--t0luYQ8oxs/WgoujXFrnqI/AAAAAAAAMOI/4uXKkq5WrgkTtr6sFxsaS08HmtgfFMW9wCLcBGAs/s400/Fail.png" width="400" /></a></span></span></div><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Since i am in the test mode I figured I would see if the Essbase 11 database type worked.</span></span><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">&nbsp;</span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><a href="https://4.bp.blogspot.com/-pzTp_39Grfo/WgoujP6DuHI/AAAAAAAAMOA/I7p0ZxcxBfE6XkmH2K_wflpOJqL3pNbjgCLcBGAs/s1600/Good.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="535" data-original-width="574" height="372" src="https://4.bp.blogspot.com/-pzTp_39Grfo/WgoujP6DuHI/AAAAAAAAMOA/I7p0ZxcxBfE6XkmH2K_wflpOJqL3pNbjgCLcBGAs/s400/Good.png" width="400" /></a></span></span></div><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">&nbsp;And... low and behold it does.</span></span><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><br /></span></span><div class="separator" style="clear: both; text-align: center;"><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><a href="https://4.bp.blogspot.com/-hA7JksTk5zk/WgoujWM--II/AAAAAAAAMOE/u2YCfIjS_RsBKc-LesuEw9-gtYjeasf2gCLcBGAs/s1600/Success.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="680" data-original-width="987" height="275" src="https://4.bp.blogspot.com/-hA7JksTk5zk/WgoujWM--II/AAAAAAAAMOE/u2YCfIjS_RsBKc-LesuEw9-gtYjeasf2gCLcBGAs/s400/Success.png" width="400" /></a></span></span></div><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><br /></span></span><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Now I no longer need to switch the Database Type to 9 then to 11.1.2.3.500 each time I need to import metadata.&nbsp; And I can leave the Database Type set to Essbase 11 and it will pass consistency check. </span></span><br /><br /><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Until next time.</span></span> Wayne D. Van Sluys tag:blogger.com,1999:blog-7768091516190336427.post-1648846484093790828 Mon Nov 13 2017 18:54:00 GMT-0500 (EST) Upgrading Hyperion Soon? Document These 4 Things https://www.us-analytics.com/hyperionblog/upgrading-hyperion-soon-document-these-4-things <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/upgrading-hyperion-soon-document-these-4-things" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Upgrade%20Hyperion%20Soon%20-%20Document%20these%204%20things.jpg?t=1512966730140" alt="Upgrading Hyperion Soon? Document These 4 Things" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p><br>There are many reasons for having to upgrade your Oracle EPM enterprise software, including:</p> <ul> <li>Compatibility with new operating systems</li> <li>New features or functionality that could benefit your business</li> <li>Support from Oracle if your current version is falling off support and maintenance</li> <li>Mergers, acquisitions, chart of account restructures, and consolidation of multiple systems</li> </ul> <p>No matter your reason for upgrading, documentation should be a priority. Good documentation paves the way for a smooth transition and successful migration.</p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fupgrading-hyperion-soon-document-these-4-things&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/upgrading-hyperion-soon-document-these-4-things Fri Nov 10 2017 06:11:00 GMT-0500 (EST) What’s New in Oracle Data Visualization? (Update on V4 Desktop Version) https://www.us-analytics.com/hyperionblog/oracle-data-visualization-v4 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/oracle-data-visualization-v4" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/oracle%20data%20visualization%20v4.jpg?t=1512966730140" alt="oracle data visualization v4.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The recent release of <a href="https://www.us-analytics.com/hyperionblog/oracle-analytics-cloud-questions">Oracle Analytics Cloud (OAC)</a> V4 comes with many changes to Oracle Data Visualization (DV) Desktop version.&nbsp; The latest version of DV expands upon the current features — visual data storytelling, end user self-service, and mobile accessibility — to give you an even better user experience.</p> <p>In this blog post we’ll give you an overview of several new features made to…</p> <ul> <li>Your Homepage</li> <li>Data actions</li> <li>The storytelling interface</li> <li>Data flows<br><br></li> </ul> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Foracle-data-visualization-v4&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/oracle-data-visualization-v4 Thu Nov 09 2017 13:46:43 GMT-0500 (EST) Modernizing an Outdated Financial Close Process https://www.us-analytics.com/hyperionblog/modernizing-an-outdated-financial-close-process <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/modernizing-an-outdated-financial-close-process" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Modern%20finance.jpg?t=1512966730140" alt="Modernizing an Outdated Financial Close Process" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p><br>When you hear “A.B.C.: Always Be Closing!” — you probably think of an angry Alec Baldwin in <em>Glengarry Glen Ross</em> yelling at a room of real estate agents. It’s the motto of salespeople, but it completely applies to the world of accounting, if you think of it in terms of financial close.</p> <p>A continuous, or extended, financial close is where we’re headed. Though this might be the most important part of the modern financial close, other aspects include automating time-consuming manual tasks and delivering high value and reduced cycle times.</p> <p>In this blog post, we’ll address each aspect of a modern <a href="https://www.us-analytics.com/solutions/financial-close-consolidation">financial close</a>, starting with a continuous financial close cycle.</p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fmodernizing-an-outdated-financial-close-process&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/modernizing-an-outdated-financial-close-process Thu Nov 09 2017 12:07:00 GMT-0500 (EST) ODTUG Kscope18 Update #2 http://www.odtug.com/p/bl/et/blogaid=751&source=1 Opal Alapat, the ODTUG Kscope18 Conference Chair, shares some updates about ODTUG Kscope18. ODTUG http://www.odtug.com/p/bl/et/blogaid=751&source=1 Wed Nov 08 2017 12:48:46 GMT-0500 (EST) ODTUG Kscope18 Update #2 http://kscope18.odtug.com/p/bl/et/blogaid=751&source=1 Opal Alapat, the ODTUG Kscope18 Conference Chair, shares some updates about ODTUG Kscope18. ODTUG http://kscope18.odtug.com/p/bl/et/blogaid=751&source=1 Wed Nov 08 2017 12:48:46 GMT-0500 (EST) Renaming Presentation Tables in OBIEE 12c http://blog.performancearchitects.com/wp/2017/11/08/renaming-presentation-tables-in-obiee-12c/ <p>Author: Linda Stewart, Performance Architects</p> <p>Today I was working in an <a href="http://www.oracle.com/technetwork/middleware/bi-enterprise-edition/overview/index.html">Oracle Business Intelligence Enterprise Edition (OBIEE) 12c</a> RPD (Version 12.2.1.2, the on-premise Oracle BI solution) and I dragged my table from the logical level to the presentation level.  I wanted to rename the table, but the name in the property sheet was locked.</p> <p>The solution is to set a property in the “Tools &gt; Option &gt; General” tab.</p> <p>Let’s walk through the solution:</p> <p>My logical table object is: “Fact_PC_Reconciliation_Extension” and I want the presentation table object name to be: “Fact &#8211; PC Reconciliation Report.”</p> <p>If I go to the presentation layer and right-click my table, I then can select “Properties” from the menu:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS1.png"><img class="alignnone size-medium wp-image-2184" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS1-159x300.png" alt="" width="159" height="300" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS1-159x300.png 159w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS1.png 205w" sizes="(max-width: 159px) 100vw, 159px" /></a></p> <p>The property sheet has the “Name” value greyed out and it cannot be edited:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS2.png"><img class="alignnone size-medium wp-image-2183" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS2-300x294.png" alt="" width="300" height="294" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS2-300x294.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS2.png 602w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>To fix this, click “Tools &gt; Options” and then in the “General” tab, check “Edit presentation names” and click “OK:”</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS3.png"><img class="alignnone size-medium wp-image-2182" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS3-255x300.png" alt="" width="255" height="300" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS3-255x300.png 255w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS3.png 359w" sizes="(max-width: 255px) 100vw, 255px" /></a></p> <p>Reopen the menu for the table by right clicking on “Presentation Table name”:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS4.png"><img class="alignnone size-medium wp-image-2181" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS4-145x300.png" alt="" width="145" height="300" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS4-145x300.png 145w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS4.png 205w" sizes="(max-width: 145px) 100vw, 145px" /></a></p> <p>Notice that we now have two new menu options: “Rename Wizard” and “Rename.”  Open “Properties:”</p> <p>The value for “Name” is now unlocked and we can rename the “Presentation Table.”</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS5.png"><img class="alignnone size-medium wp-image-2180" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS5-300x294.png" alt="" width="300" height="294" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS5-300x294.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS5.png 609w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>After renaming:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS6.png"><img class="alignnone size-medium wp-image-2179" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS6-300x196.png" alt="" width="300" height="196" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS6-300x196.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/LS6.png 588w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>I hope this blog might save some others some time when working in the RPD.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2178 Wed Nov 08 2017 05:59:00 GMT-0500 (EST) Getting Started with Strategic Modeling in EPBCS https://www.us-analytics.com/hyperionblog/strategic-modeling-with-epbcs <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/strategic-modeling-with-epbcs" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/EPBCS%20strategic%20modeling.jpg?t=1512966730140" alt="EPBCS strategic modeling.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>What’s your biggest problem when it comes to financial modeling? The answer we typically hear is spreadsheets. Of course, there’s nothing wrong with using a spreadsheet — Excel is a great tool that can <em>assist </em>with many of your processes. However, only using a customized spreadsheet for financial modeling can create data inconsistency and lacks transparency.</p> <p><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">Oracle Enterprise Planning and Budgeting Cloud Service’s (EPBCS)</a> Strategic Modeling module was created to help you solve all the problems caused by using a spreadsheet for financial modeling and impact analysis.</p> <p>In line with EPBCS’s out-of-the-box features and functions, Strategic Modeling comes with out-of-the-box capabilities. In this blog post, we’ll cover those capabilities, how Strategic Modeling works, and why you should use it.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fstrategic-modeling-with-epbcs&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/strategic-modeling-with-epbcs Tue Nov 07 2017 16:11:16 GMT-0500 (EST) Using Oracle’s Baseline Validation Tool with OBIEE — Part 2 https://blog.redpillanalytics.com/using-oracles-baseline-validation-tool-with-obiee-part-2-c9a5572f80bb?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QDoW9rV_FbRCrz6TrXbgoQ.jpeg" /></figure><p>This post is part 2 of 4 about using the Baseline Validation Tool (BVT) with Oracle Business Intelligence (OBIEE). Post 1 with an intro to BVT, can be found <a href="https://blog.redpillanalytics.com/using-oracles-baseline-validation-tool-with-obiee-part-1-328be6fbb6bc">here</a>.</p><h3>Obtain the BVT tool</h3><ol><li>Download the latest version of BVT from Oracle. <a href="http://www.oracle.com/technetwork/middleware/bi/downloads/bi-bvt-download-3587672.html">http://www.oracle.com/technetwork/middleware/bi/downloads/bi-bvt-download-3587672.html</a></li><li>Unzip the download into a directory on your computer. To save yourself typing later on, I recommend not embedding this too far into other folders. I put mine in D:/oracle.bi.bvt</li><li>Once unzipped, the tool is ready to use.</li></ol><h3>Create the XML input file</h3><p>I started out by creating a folder called Scripts or Configs in my BVT folder. This will allow me to keep all of my configuration scripts organized within the BVT folder.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*At75ccjy88P-SkDaQcWGiA.png" /></figure><p>Why do I have so many configuration files? I create a new file for each catalog folder that I’m testing or each different type of plug-in test I’m using or even for the purpose of why I’m testing such as 12c Upgrade or XYZ Project Validation.</p><p>Next open the textconfig.xml file in a code or text editor and save it in your scripts folder with a new name. I suggest giving it a name corresponding to the folder and the test that you’ll be running with this script. If you don’t have this file, I’ve copied it to the bottom of this blog post.</p><h4>Deployment Section</h4><p>Within the config file, we’ll first tackle the Deployment section where we specify the Instances that we’ll be running BVT on. The testconfig file shows two deployments but you can put more than two in here. Say for instance you have a dev, test, and prod environment, you can put all three in so that your file is ready to be run on whichever environment you might desire.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MQKQmNFctAImmk97FuMg_w.png" /></figure><p>Here’s the definitions and what I changed in this section:</p><ul><li>Deployment Name — This name is used when you run BVT. Give it a concise yet descriptive name.</li><li>Analytics URL — This will point to your answers instance. Be sure to include http at the beginning and /analytics at the end</li><li>XmlpURL — If you’ll be running the BIP test, you’ll need to point this to your BI Publisher instance</li><li>VaURL — If you’ll be running the VA (Data Visualizer) test, you’ll need to point this to your VA instance</li><li>UserName — Give a user that will not be restricted in what data is shown, unless you are specifically testing security settings.</li><li>Password — The password for that user. Yes this is clear text and not encrypted.</li></ul><p>A more secure way of providing your password is to use –password when calling the bvt procedure instead of storing your password in your config file. If you type –password without providing the password, you will be prompted to enter it when running the tests.</p><h4>Tests Section</h4><p>The Tests section of the XML is where you specify which tests to run and which folder to run them on, along with specific settings for each test. The test name can be found after com.oracle.biee.bvt.plugin in the TestPlugin name tag. By default all of the tests are set to true. To turn each test off, in the TestPlugin tag, set enabled=“false”.</p><p>I’ve found it easiest to have a separate script for each test and run each test individually to keep the results separated out and concise.</p><p>Each test has a tag for the Parameter name of CatalogRoot. This is where you put the path to the folder you’d like the test to run on. For a folder within the Shared Folders structure, you will put “/shared/&lt;folder name&gt;”. Note that you cannot put multiple folders in this list. If you want two shared folders tested, you either need to run against your whole shared catalog or run two separate tests.</p><p><strong>Catalog Plug-In Parameters</strong></p><p>The only setting in the config for this test is CatalogRoot where you specify which folder to run this test against.</p><p><strong>Reports Plug-In Parameters</strong></p><ul><li>ReadTimeout: The amount of time to allow each report to run before moving to the next report. This is in milliseconds.</li><li>CatalogRoot: Which folder to run this test against. This can be set differently for each type of report export (Excel, PDF, or csv) if you’d like. To run on the entire catalog, specify value=”/” (but this is not recommended).</li><li>ScoreThreshold: For Excel &amp; PDF. This is an algorithm that scores the similarity of the exports. A threshold of 1 is a perfect match.</li><li>DiffTolerance: For CSV exports. The number of decimal places of difference to tolerate for fluctuations in the data. 0 is no tolerance. 0.1 would flag a difference in one field value greater than 0.1 between the two exports.</li></ul><p><strong>UI Plug-In Parameters</strong></p><ul><li>CatalogRoot: Which folder to run this test against. To run on the entire catalog, specify value=”/” (but this is not recommended).</li><li>ThreadQueueSize: The number of concurrent browsers to use: 0–50.</li><li>ThreadTimeout: The amount of time to allow each report to run before moving to the next report. This is in milliseconds.</li><li>BrowserType: Which browser to use for testing. Leave blank for default browser. Firefox or InternetExplorer.</li><li>FirefoxLocationInLinus: If using Linux, the location of Firefox to use. Leave blank for default.</li><li>FindReportSnapshotDifferences: Capture screenshots and comparisons of reports within the specified catalog root folder.</li><li>FindDashboardSnapshotDifferences: Capture screenshots and comparisons of dashboards within the specified catalog root folder.</li><li>PromptInputFile: See Dashboard Prompts Input below.</li><li>ScoreThreshold: This is an algorithm that scores the similarity of the screen captures. A threshold of 1 is a perfect match.</li></ul><p><strong>Dashboard Plug-In Parameters</strong></p><ul><li>ExportDashboardsToXML: If set to true, all of the dashboards in the dashboard prompts file AND all of the dashboards found under the Catalog Root folder will be processed. If false, only the dashboards in the dashboard prompts file will be processed.</li><li>CatalogRoot: Which folder to run this test against. To run on the entire catalog, specify value=”/” (but this is not recommended).</li><li>PromptInputFile: The path (if not in the base bvt folder) and name of the file containing the Prompt URLs to each dashboard page. See Dashboard Prompts Input File section below for more details about this file.</li><li>ExportAllDashboards: Set to true if you want BVT to export and test all dashboards within catalog root as specified in the export. If this is set to false, it will only test the reports in the dashboard prompts input file.</li><li>DiffTolerance: Set a decimal point that should be tolerated for fluctuations in data. “0” is no tolerance. Suggested values are “0.1”, “0.01”, etc.</li></ul><p><strong>BI Publisher Plug-In Parameters</strong></p><p>The BI Publisher Plug-in (called BIP in BVT) has two test types: Export all BI Publisher reports in a specific folder or use a parameters input file to specify the BI Publisher reports to test</p><ul><li>ExportReportsToPDF: If set to true, BIP plug-in will test all of the BI Publisher reports in the Catalog Root specified folder.</li><li>CatalogRoot: For running the ExportReportsToPDF test. Unlike the rest of the plug-ins, the catalog root for the BIP plug-in is different. This plug-in uses the physical path instead of the virtual path under /shared/. For example, if you are using “/shared/Sample Lite/Published Reporting” for other plug-ins, in the BIP plug-in you would use “/Sample Lite/Published Reporting”.</li><li>ExportReportsWithParametersToPDF: If set to true, BIP plug-in will use a parameter input file to determine which BIP reports to export and compare.</li><li>ParametersInputFile: For the ExportReportsWithParametersToPDF test. Similar to the Dashboard Prompts file (described below), this parameter will point to the input file containing links with BIP report parameters populated within the URL.</li><li>ScoreThreshold: Specified for both tests. This is an algorithm that scores the similarity of the report PDF exports. A threshold of 1 is a perfect match.</li></ul><p><strong>VA Plug-In Parameters</strong></p><p>These plug-in parameters are nearly identical to the UI plug-in parameters.</p><ul><li>CatalogRoot: Which folder to run this test against.</li><li>ThreadQueueSize: The number of concurrent browsers to use: 0–50.</li><li>ThreadTimeout: The amount of time to allow each report to run before moving to the next report. This is in milliseconds.</li><li>BrowserType: Which browser to use for testing. Leave blank for default browser. Firefox or InternetExplorer.</li><li>FirefoxLocationInLinus: If using Linux, the location of Firefox to use. Leave blank for default.</li><li>FindVAProjectSnapshotDifferences: Capture screenshots and comparisons of VA projects within the specified catalog root folder.</li><li>ScoreThreshold: This is an algorithm that scores the similarity of the screen captures. A threshold of 1 is a perfect match.</li></ul><h4>Dashboard Prompts Input File</h4><p>For the UI plug-in Dashboard Snapshot Differences test or the Dashboard plug-in, you can force BVT to use certain prompt values in your dashboard prompts to ensure consistency when testing. The file should contain URLs to each dashboard to be tested with the parameter values included in the URL. For the Dashboard test, it’s possible to restrict BVT to only run the dashboards that are contained in this file. This is another way that you can better specify the specific dashboard pages to test if you are not able to get specific enough using the Catalog Root parameter.</p><p>To create the Dashboard Prompts file:</p><ol><li>Open a blank text file in notepad or a text editor.</li><li>Open a web browser and navigate to the dashboard page you want to test.</li><li>Select the prompt values you’d like to use on the dashboard for the test.</li><li>In the upper right corner of the dashboard, click Page Options — Create Prompted Link.</li><li>Copy the URL from the browser into the text file on a new line.</li><li>Repeat steps 2–5 for each Dashboard Page that you would like to test.</li><li>Save the file as DashboardPrompts.txt in your BVT folder. This specific name is not required. You can name this as specific as you want to describe the dashboards that you are specifying within it. When I test, I name this similar to the name of the bvt config file that I am creating for this test.</li><li>Specify this dashboardsprompts.txt file (along with any necessary path if not saved in the bvt folder) in the PromptInputFile parameter in your config file.</li></ol><h4>BI Publisher Parameters Input File</h4><p>For the BI Publisher plug-in test, you can use a parameters input file to specify the values that should be selected for the parameters in each report that is to be tested. The file should contain URLs to each report to be tested with the parameter values included in the URL.</p><p>To create the Parameter Input file:</p><ol><li>Open a blank text file in notepad or a text editor.</li><li>Open a web browser and navigate to the report you want to test on the xmlpserver. Important! You must use the xmlpserver.</li><li>Select the parameter values you’d like on the report for this test.</li><li>In the upper right corner of the report, click Action Option — Share Report Link. Choose Current Page.</li><li>Copy the URL from the browser into the text file on a new line.</li><li>Repeat steps 2–5 for each BIP report that you would like to test.</li><li>Save the file as ParametersInput.txt in your BVT folder. This specific name is not required. You can name this as specific as you want to describe the reports that you are specifying within it. When I test, I name this similar to the name of the bvt config file that I am creating for this test.</li><li>Specify this ParametersInput.txt file (along with any necessary path if not saved in the bvt folder) in the ParametersInput parameter in your config file.</li></ol><p>You do not need to create a parameters URL for each BI Publisher environment that you’ll be running your tests against. As long as the catalog paths match in your testing environments, BVT will figure out the deployment path to each report in each environment.</p><h3>Results Section</h3><p>The last section of the config file is the Results section. Here is where you can specify the name of the folder where the results will be stored. The default is “Results”. I recommend changing this to something similar to what you titled the config script where it contains the name of the folder the test will be run on, and the test(s) run. There is also the ability to specify that the folders are timestamped. This is helpful if you will be running the test multiple times and do not want the folder results overwritten. *See my note in Part 3 about why this is nice but also makes the code for comparing results a bit more difficult to create.</p><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br>&lt;TestConfiguration&gt;</pre><pre>&lt;Deployment name=&quot;PreUpgrade&quot; description=&quot;First Test Target&quot;&gt;<br> &lt;Server&gt;<br> &lt;!-- AnalyticsURL Needs to point to the analytics page --&gt;<br> &lt;!-- XmlpURL Needs to point to the BI Publisher page --&gt;<br> &lt;!-- ex:&lt;AnalyticsURL&gt;http://servername:9704/analytics&lt;/AnalyticsURL&gt; --&gt;<br> &lt;!-- ex: &lt;XmlpURL&gt;https://servername/xmlpserver&lt;/XmlpURL&gt; --&gt;<br> &lt;!-- ex: &lt;VaURL&gt;https://servername/va&lt;/VaURL&gt; --&gt;<br> &lt;!-- If you are using a test certificate on the server for SSL and want to bypass SSL certificate validation, set the IgnoreSSLCertErrors to true. This setting is strictly for Test environments only --&gt;<br> &lt;AnalyticsURL&gt;&lt;/AnalyticsURL&gt;<br> &lt;XmlpURL&gt;&lt;/XmlpURL&gt;<br> &lt;VaURL&gt;&lt;/VaURL&gt;<br> &lt;UserName&gt;&lt;/UserName&gt;<br> &lt;Password&gt;&lt;/Password&gt;<br> &lt;IgnoreSSLCertErrors&gt;false&lt;/IgnoreSSLCertErrors&gt;<br> &lt;/Server&gt;<br>&lt;/Deployment&gt;</pre><pre>&lt;Deployment name=&quot;PostUpgrade&quot; description=&quot;Second Test Target&quot;&gt;<br> &lt;Server&gt;<br> &lt;!-- AnalyticsURL Needs to point to the analytics page --&gt;<br> &lt;!-- XmlpURL Needs to point to the BI Publisher page --&gt;<br> &lt;!-- ex: &lt;AnalyticsURL&gt;http://servername:9704/analytics&lt;/AnalyticsURL&gt; --&gt;<br> &lt;!-- ex: &lt;XmlpURL&gt;https://servername/xmlpserver&lt;/XmlpURL&gt; --&gt;<br> &lt;!-- ex: &lt;VaURL&gt;https://servername/va&lt;/VaURL&gt; --&gt;<br> &lt;!-- If you are using a test certificate on the server for SSL and want to bypass SSL certificate validation, set the IgnoreSSLCertErrors to true. This setting is strictly for Test environments only --&gt;<br> &lt;AnalyticsURL&gt;&lt;/AnalyticsURL&gt;<br> &lt;XmlpURL&gt;&lt;/XmlpURL&gt;<br> &lt;VaURL&gt;&lt;/VaURL&gt;<br> &lt;UserName&gt;&lt;/UserName&gt;<br> &lt;Password&gt;&lt;/Password&gt;<br> &lt;IgnoreSSLCertErrors&gt;false&lt;/IgnoreSSLCertErrors&gt;<br> &lt;/Server&gt;<br>&lt;/Deployment&gt;</pre><pre>&lt;Tests&gt;<br>&lt;!-- CAUTION: The CatalogRoot Value for BIP Plugin is different than other plugins--&gt;<br>&lt;!-- For BIP remove the virtual paths where the other plugins use physical paths--&gt;<br>&lt;!-- To get the physical path of an item, in the Oracle Anwsers catalog, right click the item and select &quot;Properties&quot;--&gt;<br>&lt;!-- Ex: For BIP : &quot;/Sample Lite/Published Reporting&quot;--&gt;<br>&lt;!-- Ex: For others: &quot;/shared/Sample Lite/Published Reporting&quot;--&gt;</pre><pre>&lt;TestPlugin name=&quot;com.oracle.biee.bvt.plugin.catalog&quot; enabled=&quot;true&quot;&gt;<br> &lt;Test name=&quot;GetCatalogTest&quot; enabled=&quot;true&quot;&gt;<br> &lt;Parameter name=&quot;CatalogRoot&quot; value=&quot;/&quot;/&gt;<br> &lt;/Test&gt;<br>&lt;/TestPlugin&gt;</pre><pre>&lt;TestPlugin name=&quot;com.oracle.biee.bvt.plugin.ui&quot; enabled=&quot;true&quot;&gt;<br> &lt;Parameter name=&quot;CatalogRoot&quot; value=&quot;/&quot;/&gt;<br> &lt;!-- how many threads to spawn to load reports, should be greater than 0, less than 50 --&gt;<br> &lt;Parameter name=&quot;ThreadQueueSize&quot; value=&quot;1&quot; /&gt;<br> &lt;!-- Timeout for loading each report in MSecs should be between 5 secs and 10 mins --&gt;<br> &lt;Parameter name=&quot;ThreadTimeout&quot; value=&quot;60000&quot; /&gt;<br> &lt;!-- Which BrowserType to use to load reports, Firefox, InternetExplorer. Leave empty for default browser --&gt;<br> &lt;Parameter name=&quot;BrowserType&quot; value=&quot;&quot;/&gt;<br> &lt;!-- Location of Firefox browser to be used, if multiple instances of Firefox browser exists on a Linux operating system machine. Leave empty for default browser location --&gt;<br> &lt;Parameter name=&quot;FirefoxLocationInLinux&quot; value=&quot;&quot;/&gt;</pre><pre> &lt;Test name=&quot;FindReportSnapshotDifferences&quot; enabled=&quot;true&quot;&gt;<br> &lt;!-- ScoreThreshold should be between 0.00 and 1.00 --&gt;<br> &lt;Parameter name=&quot;ScoreThreshold&quot; value=&quot;0.95&quot;/&gt;<br> &lt;/Test&gt;</pre><pre> &lt;Test name=&quot;FindDashboardSnapshotDifferences&quot; enabled=&quot;true&quot;&gt;<br> &lt;Parameter name=&quot;PromptInputFile&quot; value=&quot;DashboardPrompts.txt&quot; /&gt;<br> &lt;Parameter name=&quot;ScoreThreshold&quot; value=&quot;0.95&quot;/&gt;<br> &lt;/Test&gt;<br>&lt;/TestPlugin&gt;</pre><pre>&lt;TestPlugin name=&quot;com.oracle.biee.bvt.plugin.report&quot; enabled=&quot;true&quot;&gt;<br> &lt;!-- Timeout for loading each report in MSecs should be between 5 secs and 10 mins --&gt;<br> &lt;Parameter name=&quot;ReadTimeout&quot; value=&quot;15000&quot; /&gt;<br> &lt;Test name=&quot;ExportReportsToPDF&quot; enabled=&quot;true&quot;&gt;<br> &lt;Parameter name=&quot;CatalogRoot&quot; value=&quot;/&quot;/&gt;<br> &lt;Parameter name=&quot;ScoreThreshold&quot; value=&quot;0.95&quot;/&gt;<br> &lt;/Test&gt;<br> &lt;Test name=&quot;ExportReportsToExcel2007&quot; enabled=&quot;true&quot;&gt;<br> &lt;Parameter name=&quot;CatalogRoot&quot; value=&quot;/&quot;/&gt;<br> &lt;Parameter name=&quot;ScoreThreshold&quot; value=&quot;0.95&quot;/&gt;<br> &lt;/Test&gt;<br> &lt;Test name=&quot;ExportReportsToCSV&quot; enabled=&quot;true&quot;&gt;<br> &lt;Parameter name=&quot;CatalogRoot&quot; value=&quot;/&quot;/&gt;<br> &lt;!-- Set a limit on the maximum tolerance for fluctuations in floating point numbers in report data. Ex:&quot;0&quot; for no tolerance. &quot;0.1, &quot;0.001&quot;, etc.--&gt;<br> &lt;Parameter name=&quot;DiffTolerance&quot; value=&quot;0&quot;/&gt;<br> &lt;/Test&gt;<br>&lt;/TestPlugin&gt;</pre><pre>&lt;TestPlugin name=&quot;com.oracle.biee.bvt.plugin.dashboard&quot; enabled=&quot;true&quot;&gt;<br> &lt;Test name=&quot;ExportDashboardsToXML&quot; enabled=&quot;true&quot;&gt;<br> &lt;Parameter name=&quot;CatalogRoot&quot; value=&quot;/&quot;/&gt;<br> &lt;!-- Paste the prompted links to the following file--&gt;<br> &lt;Parameter name=&quot;PromptInputFile&quot; value=&quot;DashboardPrompts.txt&quot;/&gt;<br> &lt;Parameter name=&quot;ExportAllDashboards&quot; value=&quot;true&quot;/&gt;<br> &lt;!-- Set a limit on the maximum tolerance for fluctuations in floating point numbers in report data. Ex:&quot;0&quot; for no tolerance. &quot;0.1, &quot;0.001&quot;, etc.--&gt;<br> &lt;Parameter name=&quot;DiffTolerance&quot; value=&quot;0&quot;/&gt;<br> &lt;/Test&gt;<br>&lt;/TestPlugin&gt;</pre><pre>&lt;TestPlugin name=&quot;com.oracle.biee.bvt.plugin.bip&quot; enabled=&quot;true&quot;&gt;<br> &lt;Test name=&quot;ExportReportsToPDF&quot; enabled=&quot;true&quot;&gt;<br> &lt;!-- The CatalogRoot Value for BIP Plugin is different than other plugins--&gt;<br> &lt;!-- For BIP remove the virtual paths where the other plugins use physical paths--&gt;<br> &lt;!-- Ex: For BIP : &quot;/Sample Lite/Published Reporting&quot;--&gt;<br> &lt;!-- Ex: For others: &quot;/shared/Sample Lite/Published Reporting&quot;--&gt;<br> &lt;Parameter name=&quot;CatalogRoot&quot; value=&quot;/&quot;/&gt;<br> &lt;Parameter name=&quot;ScoreThreshold&quot; value=&quot;0.95&quot;/&gt;<br> &lt;/Test&gt;<br> &lt;Test name=&quot;ExportReportsWithParametersToPDF&quot; enabled=&quot;true&quot;&gt;<br> &lt;Parameter name=&quot;ParametersInputFile&quot; value=&quot;ParametersInputs.txt&quot; /&gt;<br> &lt;Parameter name=&quot;ScoreThreshold&quot; value=&quot;0.95&quot;/&gt;<br> &lt;/Test&gt;<br>&lt;/TestPlugin&gt;</pre><pre>&lt;TestPlugin name=&quot;com.oracle.biee.bvt.plugin.va&quot; enabled=&quot;true&quot;&gt;<br> &lt;Parameter name=&quot;CatalogRoot&quot; value=&quot;/&quot;/&gt;<br> &lt;!-- how many threads to spawn to load reports, should be greater than 0, less than 50 --&gt;<br> &lt;Parameter name=&quot;ThreadQueueSize&quot; value=&quot;1&quot; /&gt;<br> &lt;!-- Timeout for loading each report in MSecs should be between 5 secs and 10 mins --&gt;<br> &lt;Parameter name=&quot;ThreadTimeout&quot; value=&quot;60000&quot; /&gt;<br> &lt;!-- Which BrowserType to use to load reports, Firefox, InternetExplorer. Leave empty for default browser --&gt;<br> &lt;Parameter name=&quot;BrowserType&quot; value=&quot;&quot;/&gt;<br> &lt;!-- Location of Firefox browser to be used, if multiple instances of Firefox browser exists on a Linux operating system machine. Leave empty for default browser location --&gt;<br> &lt;Parameter name=&quot;FirefoxLocationInLinux&quot; value=&quot;&quot;/&gt;<br> &lt;Test name=&quot;FindVAProjectSnapshotDifferences&quot; enabled=&quot;true&quot;&gt;<br> &lt;Parameter name=&quot;ScoreThreshold&quot; value=&quot;0.95&quot;/&gt;<br> &lt;/Test&gt;<br>&lt;/TestPlugin&gt;</pre><pre>&lt;/Tests&gt;</pre><pre>&lt;Results&gt;<br> &lt;LogPath timestampFolders=&quot;false&quot;&gt;Results&lt;/LogPath&gt;<br>&lt;/Results&gt;</pre><pre>&lt;/TestConfiguration&gt;</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c9a5572f80bb" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/using-oracles-baseline-validation-tool-with-obiee-part-2-c9a5572f80bb">Using Oracle’s Baseline Validation Tool with OBIEE — Part 2</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Michelle Kolbe https://medium.com/p/c9a5572f80bb Tue Nov 07 2017 12:00:55 GMT-0500 (EST) Taking KSQL for a Spin Using Real-time Device Data http://www.rittmanmead.com/blog/2017/11/taking-ksql-for-a-spin-using-real-time-device-data/ <h1 id="takingksqlforaspinusingrealtimedevicedata">Taking KSQL for a Spin Using Real-time Device Data</h1> <img src="http://www.rittmanmead.com/blog/content/images/2017/11/Screenshot_2.png" alt="Taking KSQL for a Spin Using Real-time Device Data"><p>Evaluating <a href="https://github.com/confluentinc/ksql/">KSQL</a> has been high on my to-do list ever since it was released back in August. I wanted to experiment with it using an interesting, high velocity, real-time data stream that would allow me to analyse events at the millisecond level, rather than seconds or minutes. Finding such a data source, that is free of charge and not the de facto twitter stream, is tricky. So, after some pondering, I decided that I'd use my Thrustmaster T300RS Steering Wheel/Pedal Set gaming device as a data source,</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/device-4.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <p>The idea being that the data would be fed into Kafka, processed in real-time using KSQL and visualised in Grafana. </p> <p>This is the end to end pipeline that I created...</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/pipeline-6.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <p>...and this is the resulting real-time dashboard running alongside a driving game and a log of the messages being sent by the device.</p> <iframe src="https://player.vimeo.com/video/240169902" width="640" height="360" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen></iframe> <p>This article will explain how the above real-time dashboard was built using only KSQL...and a custom Kafka producer.</p> <p>I'd like to point out, that although the device I'm using for testing is unconventional, when considered in the wider context of IoT's, autonomous driving, smart automotives or any device for that matter, it will be clear to see that the low latency, high throughput of Apache Kafka, coupled with Confluent's KSQL, can be a powerful combination. </p> <p>I'd also like to point out, that this article is <em>not</em> about driving techniques, driving games or telemetry analysis. However, seeing as the data source I'm using is intrinsically tied to those subjects, the concepts will be discussed to add context. I hope you like motorsports! </p> <h2 id="writingakafkaproducerforat300rs">Writing a Kafka Producer for a T300RS</h2> <p>The T300RS is attached to my Windows PC via a USB cable, so the first challenge was to try and figure out how I could get steering, braking and accelerator inputs pushed to Kafka. Unsurprisingly, a source connector for a "T300RS Steering Wheel and Pedal Set" was not listed on the <a href="https://docs.confluent.io/current/connect/intro.html">Kafka Connect</a> web page - a custom producer was the only option.</p> <p>To access the data being generated by the T300RS, I had 2 options, I could either use an existing Telemetry API from one of my racing games, or I could access it directly using the Windows DirectX API. I didn't want to have to have a game running in the background in order to generate data, so I decided to go down the DirectX route. This way, the data is <em>raw</em> and available, with or without an actual game engine running.</p> <p>The producer was written using the <a href="http://sharpdx.org/">SharpDX .NET wrapper</a> and <a href="https://github.com/confluentinc/confluent-kafka-dotnet">Confluent's .NET Kafka Client</a>. The SharpDX directinput API allows you to poll an attached input device (mouse, keyboard, game controllers etc.) and read its buffered data. The buffered data returned within each polling loop is serialized into JSON and sent to Kafka using the .NET Kafka Client library. </p> <p>A single message is sent to a topic in Kafka called <code>raw_axis_inputs</code> every time the state of one the device's axes changes. The device has several axes, in this article I am only interested in the Wheel, Accelerator, Brake and the X button. </p> <pre><code>{ "event_id":4300415, // Event ID unique over all axis state changes "timestamp":1508607521324, // The time of the event "axis":"Y", // The axis this event belongs to "value":32873.0 // the current value of the axis } </code></pre> <p>This is what a single message looks like. In the above message the Brake axis state was changed, i.e. it moved to a new position with value 32873.</p> <p>You can see below which inputs map to the each reported axis from the device. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/device_annotated-5.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <p>Here is a sample from the producer's log file. </p> <pre><code>{"event_id":4401454,"timestamp":1508687373018,"axis":"X","value":33007.0} {"event_id":4401455,"timestamp":1508687373018,"axis":"RotationZ","value":62515.0} {"event_id":4401456,"timestamp":1508687373018,"axis":"RotationZ","value":62451.0} {"event_id":4401457,"timestamp":1508687373018,"axis":"X","value":33011.0} {"event_id":4401458,"timestamp":1508687373018,"axis":"RotationZ","value":62323.0} {"event_id":4401459,"timestamp":1508687373018,"axis":"RotationZ","value":62258.0} {"event_id":4401460,"timestamp":1508687373034,"axis":"X","value":33014.0} {"event_id":4401461,"timestamp":1508687373034,"axis":"X","value":33017.0} {"event_id":4401462,"timestamp":1508687373065,"axis":"RotationZ","value":62387.0} {"event_id":4401463,"timestamp":1508687373081,"axis":"RotationZ","value":62708.0} {"event_id":4401464,"timestamp":1508687373081,"axis":"RotationZ","value":62901.0} {"event_id":4401465,"timestamp":1508687373081,"axis":"RotationZ","value":62965.0} {"event_id":4401466,"timestamp":1508687373097,"axis":"RotationZ","value":64507.0} {"event_id":4401467,"timestamp":1508687373097,"axis":"RotationZ","value":64764.0} {"event_id":4401468,"timestamp":1508687373097,"axis":"RotationZ","value":64828.0} {"event_id":4401469,"timestamp":1508687373097,"axis":"RotationZ","value":65021.0} {"event_id":4401470,"timestamp":1508687373112,"axis":"RotationZ","value":65535.0} {"event_id":4401471,"timestamp":1508687373268,"axis":"X","value":33016.0} {"event_id":4401472,"timestamp":1508687373378,"axis":"X","value":33014.0} {"event_id":4401473,"timestamp":1508687377972,"axis":"Y","value":65407.0} {"event_id":4401474,"timestamp":1508687377987,"axis":"Y","value":64057.0} {"event_id":4401475,"timestamp":1508687377987,"axis":"Y","value":63286.0} </code></pre> <p>You can tell by looking at the timestamps, it's possible to have multiple events generated within the same millisecond, I was unable to get microsecond precision from the device unfortunately. When axes, <code>"X"</code>, <code>"Y"</code> and <code>"RotationZ"</code> are being moved quickly at the same time (a bit like a child driving one of those coin operated car rides you find at the seaside) the device generates approximately 500 events per second.</p> <h1 id="creatingasourcestream">Creating a Source Stream</h1> <p>Now that we have data streaming to Kafka from the device, it's time to fire up KSQL and start analysing it. The first thing we need to do is create a source stream. The saying "Every River Starts with a Single Drop" is quite fitting here, especially in the context of <em>stream</em> processing. The <code>raw_axis_inputs</code> topic is our "Single Drop" and we need to create a KSQL stream based on top of it.</p> <pre><code>CREATE STREAM raw_axis_inputs ( \ event_id BIGINT, \ timestamp BIGINT, \ axis VARCHAR, \ value DOUBLE ) \ WITH (kafka_topic = 'raw_axis_inputs', value_format = 'JSON'); </code></pre> <p>With the stream created we can we can now query it. I'm using the default <code>auto.offset.reset = latest</code> as I have the luxury of being able to blip the accelerator whenever I want to generate new data, a satisfying feeling indeed. </p> <pre><code>ksql&gt; SELECT * FROM raw_axis_inputs; 1508693510267 | null | 4480290 | 1508693510263 | RotationZ | 65278.0 1508693510269 | null | 4480291 | 1508693510263 | RotationZ | 64893.0 1508693510271 | null | 4480292 | 1508693510263 | RotationZ | 63993.0 1508693510273 | null | 4480293 | 1508693510263 | RotationZ | 63094.0 1508693510275 | null | 4480294 | 1508693510279 | RotationZ | 61873.0 1508693510277 | null | 4480295 | 1508693510279 | RotationZ | 60716.0 1508693510279 | null | 4480296 | 1508693510279 | RotationZ | 60267.0 </code></pre> <h1 id="derivedstreams">Derived Streams</h1> <p>We now have our source stream created and can start creating some derived streams from it. The first derived stream we are going to create filters out 1 event. When the X button is <em>pressed</em> it emits a value of 128, when it's <em>released</em> it emits a value of 0. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Xbutton-5.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <p>To simplify this input, I'm filtering out the <em>release</em> event. We'll see what the X button is used for later in the article.</p> <pre><code>CREATE STREAM axis_inputs WITH (kafka_topic = 'axis_inputs') AS \ SELECT event_id, \ timestamp, \ axis, \ value \ FROM raw_axis_inputs \ WHERE axis != 'Buttons5' OR value != 0.0; </code></pre> <p>From this stream we are going to create 3 further streams, one for the brake, one the accelerator and one for the wheel.</p> <p>All 3 axes emit values in the range of 0-65535 across their full range. The wheel emits a value of 0 when rotated fully left, a value of 65535 when rotated fully right and 32767 when dead centre. The wheel itself is configured to rotate 900 degrees lock-to-lock, so it would be nice to report its last state change in degrees, rather than from a predetermined integer range. For this we can create a new stream, that includes only messages where the <code>axis = 'X'</code>, and the axis values are translated into the range of -450 degrees to 450 degrees. With this new value translation, maximum rotation left now equates to 450 degrees and maximum rotation right equates -450 degrees, 0 is now dead centre.</p> <pre><code>CREATE STREAM steering_inputs WITH (kafka_topic = 'steering_inputs') AS \ SELECT axis, \ event_id, \ timestamp, \ (value / (65535.0 / 900.0) - 900 / 2) * -1 as value \ FROM axis_inputs \ WHERE axis = 'X'; </code></pre> <p>If we now query our new stream and move the wheel slowly around dead centre, we get the following results</p> <pre><code>ksql&gt; select timestamp, value from steering_inputs; 1508711287451 | 0.6388888888889142 1508711287451 | 0.4305555555555429 1508711287451 | 0.36111111111108585 1508711287451 | 0.13888888888891415 1508711287451 | -0.0 1508711287467 | -0.041666666666685614 1508711287467 | -0.26388888888891415 1508711287467 | -0.3333333333333144 1508711287467 | -0.5277777777777715 1508711287467 | -0.5972222222222285 </code></pre> <p>The same query while the wheel is rotated fully left</p> <pre><code>1508748345943 | 449.17601281757845 1508748345943 | 449.3270771343557 1508748345943 | 449.5330739299611 1508748345943 | 449.67040512703136 1508748345959 | 449.8214694438087 1508748345959 | 449.95880064087896 1508748345959 | 450.0 </code></pre> <p>And finally, rotated fully right.</p> <pre><code>1508748312803 | -449.3408102540627 1508748312803 | -449.4369420920119 1508748312818 | -449.67040512703136 1508748312818 | -449.7390707255665 1508748312818 | -449.9725337605859 1508748312818 | -450.0 </code></pre> <p>Here's the data plotted in Grafana.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/steering_inputs-7.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <p>We now need to create 2 more derived streams to handle the accelerator and the brake pedals. This time, we want to translate the values to the range 0-100. When a pedal is fully depressed it should report a value of 100 and when fully released, a value of 0.</p> <pre><code class="language- ">CREATE STREAM accelerator_inputs WITH (kafka_topic = 'accelerator_inputs') AS \ SELECT axis, \ event_id, \ timestamp, \ 100 - (value / (65535.0 / 100.0)) as value \ FROM axis_inputs \ WHERE axis = 'RotationZ'; </code></pre> <p>Querying the <code>accelerator_inputs</code> stream while fully depressing the accelerator pedal displays the following. (I've omitted many records in the middle to keep it short)</p> <pre><code>ksql&gt; SELECT timestamp, value FROM accelerator_inputs; 1508749747115 | 0.0 1508749747162 | 0.14198473282442592 1508749747193 | 0.24122137404580712 1508749747209 | 0.43664122137404604 1508749747225 | 0.5343511450381726 1508749747287 | 0.6335877862595396 1508749747318 | 0.7312977099236662 1508749747318 | 0.8290076335877927 1508749747334 | 0.9267175572519051 1508749747381 | 1.0259541984732863 ... ... 1508749753943 | 98.92519083969465 1508749753959 | 99.02290076335878 1508749753959 | 99.1206106870229 1508749753959 | 99.21832061068702 1508749753975 | 99.31603053435114 1508749753975 | 99.41374045801527 1508749753975 | 99.5114503816794 1508749753990 | 99.60916030534351 1508749753990 | 99.70687022900763 1508749753990 | 99.80458015267176 1508749754006 | 100.0 </code></pre> <p>...and displayed in Grafana</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/accelerator_inputs-7.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <p>Finally, we create the brake stream, which has the same value translation as the accelerator stream, so I won't show the query results this time around. </p> <pre><code>CREATE STREAM brake_inputs WITH (kafka_topic = 'brake_inputs') AS \ SELECT axis, \ event_id, \ timestamp, \ 100 - (value / (65535 / 100)) as value \ FROM axis_inputs \ WHERE axis = 'Y'; </code></pre> <p>Braking inputs in Grafana.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/braking_inputs-7.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <h1 id="smoothisfast">Smooth is Fast</h1> <p>It is a general rule of thumb in motorsports that "Smooth is Fast", the theory being that the less steering, accelerator and braking inputs you can make while still keeping the car on the desired racing line, results in a faster lap time. We can use KSQL to count the number of inputs for each axis over a <a href="https://github.com/confluentinc/ksql/blob/0.1.x/docs/syntax-reference.md#select">Hopping Window</a> to try and capture overall smoothness. To do this, we create our first KSQL table.</p> <pre><code class="language- ">CREATE TABLE axis_events_hopping_5s_1s \ WITH (kafka_topic = 'axis_events_hopping_5s_1s') AS \ SELECT axis, \ COUNT(*) AS event_count \ FROM axis_inputs \ WINDOW HOPPING (SIZE 5 SECOND, ADVANCE BY 1 SECOND) \ GROUP BY axis; </code></pre> <p>A KSQL table is basically a view over an existing stream or another table. When a table is created from a stream, it needs to contain an aggregate function and group by clause. It's these aggregates that make a table stateful, with the underpinning stream updating the table's current view in the background. If you create a table based on another table you do <em>not</em> need to specify an aggregate function or group by clause. </p> <p>The table we created above specifies that data is aggregated over a <a href="https://github.com/confluentinc/ksql/blob/0.1.x/docs/syntax-reference.md#select">Hopping Window</a>. The size of the window is 5 seconds and it will advance or <em>hop</em> every 1 second. This means that at any one time, there will be 5 open windows, with new data being directed to each window based on the key and the record's timestamp.</p> <p>You can see below when we query the stream, that we have 5 open windows per axis, with each window 1 second apart.</p> <pre><code>ksql&gt; SELECT * FROM axis_events_hopping_5s_1s; 1508758267000 | X : Window{start=1508758267000 end=-} | X | 56 1508758268000 | X : Window{start=1508758268000 end=-} | X | 56 1508758269000 | X : Window{start=1508758269000 end=-} | X | 56 1508758270000 | X : Window{start=1508758270000 end=-} | X | 56 1508758271000 | X : Window{start=1508758271000 end=-} | X | 43 1508758267000 | Y : Window{start=1508758267000 end=-} | Y | 25 1508758268000 | Y : Window{start=1508758268000 end=-} | Y | 25 1508758269000 | Y : Window{start=1508758269000 end=-} | Y | 25 1508758270000 | Y : Window{start=1508758270000 end=-} | Y | 32 1508758271000 | Y : Window{start=1508758271000 end=-} | Y | 32 1508758267000 | RotationZ : Window{start=1508758267000 end=-} | RotationZ | 67 1508758268000 | RotationZ : Window{start=1508758268000 end=-} | RotationZ | 67 1508758269000 | RotationZ : Window{start=1508758269000 end=-} | RotationZ | 67 1508758270000 | RotationZ : Window{start=1508758270000 end=-} | RotationZ | 67 1508758271000 | RotationZ : Window{start=1508758271000 end=-} | RotationZ | 39 </code></pre> <p>This data is going to be pushed into InfluxDB and therefore needs a timestamp column. We can create a new table for this, that includes all columns from our current table, plus the rowtime.</p> <pre><code class="language- ">CREATE TABLE axis_events_hopping_5s_1s_ts \ WITH (kafka_topic = 'axis_events_hopping_5s_1s_ts') AS \ SELECT rowtime AS timestamp, * \ FROM axis_events_hopping_5s_1s; </code></pre> <p>And now, when we query this table we can see we have all the columns we need.</p> <pre><code>ksql&gt; select timestamp, axis, event_count from axis_events_hopping_5s_1s_ts; 1508761027000 | RotationZ | 61 1508761028000 | RotationZ | 61 1508761029000 | RotationZ | 61 1508761030000 | RotationZ | 61 1508761031000 | RotationZ | 61 1508761028000 | Y | 47 1508761029000 | Y | 47 1508761030000 | Y | 47 1508761031000 | Y | 47 1508761032000 | Y | 47 1508761029000 | X | 106 1508761030000 | X | 106 1508761031000 | X | 106 1508761032000 | X | 106 1508761033000 | X | 106 </code></pre> <p>This is the resulting graph in Grafana with each axis stacked on top of each other giving a visual representation of the total number of events overall and total per axis. The idea here being that if you can drive a lap with less overall inputs or <em>events</em> then the lap time should be faster.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/events_by_axis-7.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <h1 id="calculatinglaptimes">Calculating Lap Times</h1> <p>To calculate lap times, I needed a way of capturing the time difference between 2 separate events in a stream. Remember that the raw data is coming directly from the device and has no concept of lap, lap data is handled by a game engine. <br> I needed a way to inject an event into the stream when I crossed the start/finish line of any given race track. To achieve this, I modified the custom producer to increment a counter every time the X button was pressed and added a new field to the JSON message called <code>lap_number</code>. </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/newlap-5.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <p>I then needed to recreate my source stream and my initial derived stream to include this new field</p> <p>New source stream</p> <pre><code>CREATE STREAM raw_axis_inputs ( \ event_id BIGINT, \ timestamp BIGINT, \ lap_number BIGINT, \ axis VARCHAR, \ value DOUBLE ) \ WITH (kafka_topic = 'raw_axis_inputs', value_format = 'JSON'); </code></pre> <p>New derived stream.</p> <pre><code>CREATE STREAM axis_inputs WITH (kafka_topic = 'axis_inputs') AS \ SELECT event_id, \ timestamp, \ lap_number, \ axis, \ value \ FROM raw_axis_inputs \ WHERE axis != 'Buttons5' OR value != 0.0; </code></pre> <p>Now when I query the <code>axis_inputs</code> stream and press the <code>X</code> button a few times we can see an incrementing lap number.</p> <pre><code>ksql&gt; SELECT timestamp, lap_number, axis, value FROM axis_inputs; 1508762511506 | 6 | X | 32906.0 1508762511553 | 6 | X | 32907.0 1508762511803 | 6 | X | 32909.0 1508762512662 | 7 | Buttons5 | 128.0 1508762513178 | 7 | X | 32911.0 1508762513256 | 7 | X | 32913.0 1508762513318 | 7 | X | 32914.0 1508762513381 | 7 | X | 32916.0 1508762513459 | 7 | X | 32918.0 1508762513693 | 7 | X | 32919.0 1508762514584 | 8 | Buttons5 | 128.0 1508762515021 | 8 | X | 32921.0 1508762515100 | 8 | X | 32923.0 1508762515209 | 8 | X | 32925.0 1508762515318 | 8 | X | 32926.0 1508762515678 | 8 | X | 32928.0 1508762516756 | 8 | X | 32926.0 1508762517709 | 9 | Buttons5 | 128.0 1508762517756 | 9 | X | 32925.0 1508762520381 | 9 | X | 32923.0 1508762520709 | 9 | X | 32921.0 1508762520881 | 10 | Buttons5 | 128.0 1508762521396 | 10 | X | 32919.0 1508762521568 | 10 | X | 32918.0 1508762521693 | 10 | X | 32916.0 1508762521803 | 10 | X | 32914.0 </code></pre> <p>The next step is to calculate the time difference between each "Buttons5" event (the X button). This required 2 new tables. The first table below captures the latest values using the <code>MAX()</code> function from the <code>axis_inputs</code> stream where the <code>axis = 'Buttons5'</code></p> <pre><code>CREATE TABLE lap_marker_data WITH (kafka_topic = 'lap_marker_data') AS \ SELECT axis, \ MAX(event_id) AS lap_start_event_id, \ MAX(timestamp) AS lap_start_timestamp, \ MAX(lap_number) AS lap_number \ FROM axis_inputs \ WHERE axis = 'Buttons5' \ GROUP BY axis; </code></pre> <p>When we query this table, a new row is displayed every time the X button is pressed, reflecting the latest values from the stream.</p> <pre><code>ksql&gt; SELECT axis, lap_start_event_id, lap_start_timestamp, lap_number FROM lap_marker_data; Buttons5 | 4692691 | 1508763302396 | 15 Buttons5 | 4693352 | 1508763306271 | 16 Buttons5 | 4693819 | 1508763310037 | 17 Buttons5 | 4693825 | 1508763313865 | 18 Buttons5 | 4694397 | 1508763317209 | 19 </code></pre> <p>What we can now do is join this table to a new stream.</p> <pre><code>CREATE STREAM lap_stats WITH (kafka_topic = 'lap_stats') AS \ SELECT l.lap_number as lap_number, \ l.lap_start_event_id, \ l.lap_start_timestamp, \ a.timestamp AS lap_end_timestamp, \ (a.event_id - l.lap_start_event_id) AS lap_events, \ (a.timestamp - l.lap_start_timestamp) AS laptime_ms \ FROM axis_inputs a LEFT JOIN lap_marker_data l ON a.axis = l.axis \ WHERE a.axis = 'Buttons5'; Message ---------------- Stream created ksql&gt; describe lap_stats; Field | Type --------------------------------------- ROWTIME | BIGINT ROWKEY | VARCHAR (STRING) LAP_NUMBER | BIGINT LAP_START_EVENT_ID | BIGINT LAP_START_TIMESTAMP | BIGINT LAP_END_TIMESTAMP | BIGINT LAP_EVENTS | BIGINT LAPTIME_MS | BIGINT </code></pre> <p>This new stream is again based on the <code>axis_inputs</code> stream where the <code>axis = 'Buttons5'</code>. We are joining it to our <code>lap_marker_data</code> table which results in a stream where every row includes the current <em>and</em> previous values at the point in time when the X button was pressed.</p> <p>A quick query should illustrate this (I've manually added column heading to make it easier to read)</p> <pre><code>ksql&gt; SELECT lap_number, lap_start_event_id, lap_start_timestamp, lap_end_timestamp, lap_events, laptime_ms FROM lap_stats; LAP START_EV START_TS END_TS TOT_EV LAP_TIME_MS 36 | 4708512 | 1508764549240 | 1508764553912 | 340 | 4672 37 | 4708852 | 1508764553912 | 1508764567521 | 1262 | 13609 38 | 4710114 | 1508764567521 | 1508764572162 | 1174 | 4641 39 | 4711288 | 1508764572162 | 1508764577865 | 1459 | 5703 40 | 4712747 | 1508764577865 | 1508764583725 | 939 | 5860 41 | 4713686 | 1508764583725 | 1508764593475 | 2192 | 9750 42 | 4715878 | 1508764593475 | 1508764602318 | 1928 | 8843 </code></pre> <p>We can now see the time difference, in milliseconds ( <code>LAP_TIME_MS</code> ), between each press of the X button. This data can now be displayed in Grafana.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/lap_times-7.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <p>The data is also being displayed along the top of the dashboard, aligned above the other graphs, as a <em>ticker</em> to help visualize lap boundaries across all axes.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/lap_markers-7.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <h1 id="anomalydetection">Anomaly Detection</h1> <p>A common use case when performing real-time stream analytics is Anomaly Detection, the act of detecting unexpected events, or outliers, in a stream of incoming data. Let's see what we can do with KSQL in this regard.</p> <h2 id="drivinglikealunatic">Driving Like a Lunatic?</h2> <p>As mentioned previously, Smooth is Fast, so it would be nice to be able to detect some form of erratic driving. When a car oversteers, the rear end of the car starts to rotate around a corner faster than you'd like, to counteract this motion, quick steering inputs are required to correct it. On a smooth lap you will only need a small part of the total range of the steering wheel to safely navigate all corners, when you start oversteering you will need make quick, but wider use of the total range of the wheel to keep the car on the track and prevent crashing.</p> <p>To try and detect oversteer we need to create another KSQL table, this time based on the <code>steering_inputs</code> stream. This table counts steering events across a very short hopping window. Events are counted only if the rotation exceeds 180 degrees (sharp left rotation) or is less than -180 degrees (sharp right rotation)</p> <pre><code>CREATE TABLE oversteer WITH (kafka_topic = 'oversteer') AS \ SELECT axis, \ COUNT(*) \ FROM steering_inputs \ WINDOW HOPPING (SIZE 100 MILLISECONDS, ADVANCE BY 10 MILLISECONDS) \ WHERE value &gt; 180 or value &lt; -180 \ GROUP by axis; </code></pre> <p>We now create another table that includes the timestamp for InfluxDB.</p> <pre><code>CREATE TABLE oversteer_ts WITH (kafka_topic = 'oversteer_ts') AS \ SELECT rowtime AS timestamp, * \ FROM oversteer; </code></pre> <p>If we query this table, while quickly rotating the wheel in the range <code>value &gt; 180 or value &lt; -180</code>, we can see multiple windows, 10ms apart, with a corresponding count of events.</p> <pre><code>ksql&gt; SELECT * FROM oversteer_ts; 1508767479920 | X : Window{start=1508767479920 end=-} | 1508767479920 | X | 5 1508767479930 | X : Window{start=1508767479930 end=-} | 1508767479930 | X | 10 1508767479940 | X : Window{start=1508767479940 end=-} | 1508767479940 | X | 15 1508767479950 | X : Window{start=1508767479950 end=-} | 1508767479950 | X | 20 1508767479960 | X : Window{start=1508767479960 end=-} | 1508767479960 | X | 25 1508767479970 | X : Window{start=1508767479970 end=-} | 1508767479970 | X | 30 1508767479980 | X : Window{start=1508767479980 end=-} | 1508767479980 | X | 35 1508767479990 | X : Window{start=1508767479990 end=-} | 1508767479990 | X | 40 1508767480000 | X : Window{start=1508767480000 end=-} | 1508767480000 | X | 45 1508767480010 | X : Window{start=1508767480010 end=-} | 1508767480010 | X | 50 1508767480020 | X : Window{start=1508767480020 end=-} | 1508767480020 | X | 50 1508767480030 | X : Window{start=1508767480030 end=-} | 1508767480030 | X | 50 1508767480040 | X : Window{start=1508767480040 end=-} | 1508767480040 | X | 50 1508767480050 | X : Window{start=1508767480050 end=-} | 1508767480050 | X | 50 1508767480060 | X : Window{start=1508767480060 end=-} | 1508767480060 | X | 47 1508767480070 | X : Window{start=1508767480070 end=-} | 1508767480070 | X | 47 1508767480080 | X : Window{start=1508767480080 end=-} | 1508767480080 | X | 47 1508767480090 | X : Window{start=1508767480090 end=-} | 1508767480090 | X | 47 1508767480100 | X : Window{start=1508767480100 end=-} | 1508767480100 | X | 47 </code></pre> <p>This data is plotted on the Y axis (we're talking graphs now) on the "Steering inputs" panel in Grafana. The oversteer metric can be seen in red and will spike when steering input exceeds 180 degrees in either direction.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/oversteer-6.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <h2 id="brakingtoohard">Braking too Hard?</h2> <p>Another anomaly I'd like to detect is when maximum brake pressure is applied for too long. Much like the brake pedal in a real car, the brake pedal I'm using has a very progressive feel, a fair amount of force from your foot is required to hit maximum pressure. If you do hit maximum pressure, it shouldn't be for long as you will most likely lock the wheels and skid off the race track, very embarrassing indeed.</p> <p>The first thing to do is to create a table that will store the last time maximum brake pressure was applied. This table is based on the brake_inputs stream and filters where the <code>value = 100</code></p> <pre><code>CREATE TABLE max_brake_power_time \ WITH (kafka_topic = 'max_brake_power_time') AS \ SELECT axis, \ MAX(timestamp) as last_max_brake_ts \ FROM brake_inputs \ WHERE value = 100 \ GROUP by axis; </code></pre> <p>A query of this table displays a new row each time maximum brake pressure is hit.</p> <pre><code>ksql&gt; SELECT axis, last_max_brake_ts FROM max_brake_power_time; Y | 1508769263100 Y | 1508769267881 Y | 1508769271568 </code></pre> <p>Something worth mentioning is that if I hold my foot on the brake pedal at the maximum pressure for any period of time, only one event is found in the stream. This is because the device only streams data when the state of an axis <em>changes</em>. If I keep my foot still, no new events will appear in the stream. I'll deal with this in a minute.</p> <p>Next we'll create a new stream based on the <code>brake_inputs</code> stream and join it to our <code>max_brake_power_time</code> table.</p> <pre><code class="language- ">CREATE STREAM brake_inputs_with_max_brake_power_time \ WITH ( kafka_topic = 'brake_inputs_with_max_brake_power_time') AS \ SELECT bi.value, \ bi.timestamp, \ mb.last_max_brake_ts, \ bi.timestamp - mb.last_max_brake_ts AS time_since_max_brake_released \ FROM brake_inputs bi LEFT JOIN max_brake_power_time mb ON bi.axis = mb.axis; </code></pre> <p>For each row in this stream we now have access to all columns in the <code>brake_inputs</code> stream plus a timestamp telling us when max brake power was last reached. With this data we create a new derived column <code>bi.timestamp - mb.last_max_brake_ts AS time_since_max_brake_released</code> which gives a running calculation of the difference between the current record timestamp and the last time maximum brake pressure was applied</p> <p>For example, when we query the stream we can see that maximum pressure was applied at timestamp <code>1508772739115</code> with a value of <code>100.0</code>. It's the row immediately <em>after</em> this row that we're are interested in <code>99.90234225 | 1508772740803 | 1508772739115 | 1688</code>. </p> <p>Again, I've manually added column headings to make it easier to read.</p> <pre><code>ksql&gt; SELECT value, timestamp, last_max_brake_ts, time_since_max_brake_released FROM brake_inputs_with_max_brake_power_time; BRAKE VALUE | TIMESTAMP | LAST MAX BRAKE TIME | TIME SINCE MAX BRAKE RELEASED 98.53513389 | 1508772739100 | 1508772733146 | 5954 98.82810711 | 1508772739100 | 1508772733146 | 5954 99.02342259 | 1508772739115 | 1508772733146 | 5969 99.51171129 | 1508772739115 | 1508772733146 | 5969 99.70702677 | 1508772739115 | 1508772733146 | 5969 100.0 | 1508772739115 | 1508772733146 | 5969 99.90234225 | 1508772740803 | 1508772739115 | 1688 99.51171129 | 1508772740818 | 1508772739115 | 1703 99.12108033 | 1508772740818 | 1508772739115 | 1703 97.65621423 | 1508772740818 | 1508772739115 | 1703 96.58197909 | 1508772740818 | 1508772739115 | 1703 95.41008621 | 1508772740818 | 1508772739115 | 1703 94.43350881 | 1508772740818 | 1508772739115 | 1703 93.65224689 | 1508772740818 | 1508772739115 | 1703 93.35927367 | 1508772740818 | 1508772739115 | 1703 92.87098496 | 1508772740834 | 1508772739115 | 1719 92.38269626 | 1508772740834 | 1508772739115 | 1719 91.11314564 | 1508772740834 | 1508772739115 | 1719 90.62485694 | 1508772740834 | 1508772739115 | 1719 90.42954146 | 1508772740834 | 1508772739115 | 1719 89.35530632 | 1508772740834 | 1508772739115 | 1719 87.89044022 | 1508772740834 | 1508772739115 | 1719 87.40215152 | 1508772740850 | 1508772739115 | 1735 86.52323186 | 1508772740850 | 1508772739115 | 1735 </code></pre> <p>Remember, that while an axis is held at the same value, 100.0 in this case, no more events will appear in the stream until the value changes again. This is why we are interested in the row preceding the maximum value, this row is telling us how long the value of 100.0 was applied for. In this case the time it was held for was 1688 milliseconds. Notice that on subsequent rows the value increases, but we are not interested in those rows. In order to isolate what we want, we need another table. This new table takes our previously created stream, <code>brake_inputs_with_max_brake_power_time</code> and groups it by the <code>last_max_brake_ts</code> column. For each grouping we then get the <code>MIN(time_since_max_brake_released)</code>. </p> <pre><code class="language- ">CREATE TABLE hard_braking WITH ( kafka_topic = 'hard_braking') AS \ SELECT last_max_brake_ts, \ MIN(time_since_max_brake_released) AS time_spent_at_max_brake_ms \ FROM brake_inputs_with_max_brake_power_time \ GROUP BY last_max_brake_ts; </code></pre> <p>When we query this table, while stepping hard on the brake pedal for a few seconds at a time, we get the information we want. We can see the timestamp for when maximum brake pressure reached and for how long it was sustained.</p> <pre><code>ksql&gt; SELECT last_max_brake_ts, time_spent_at_max_brake_ms FROM hard_braking; 1508775178693 | 1360 1508775178693 | 1360 1508775183334 | 1000 1508775183334 | 1000 1508775187709 | 422 1508775187709 | 422 1508775187709 | 422 1508775187709 | 422 1508775187709 | 422 1508775187709 | 422 1508775187709 | 422 1508775191256 | 1344 1508775191256 | 1344 1508775191256 | 1344 1508775195850 | 1687 1508775195850 | 1687 1508775195850 | 1687 1508775200662 | 1922 1508775200662 | 1922 1508775200662 | 1922 1508775200662 | 1922 </code></pre> <p>Here's what the above data looks like when visualised in Grafana. The bottom graph is showing <em>when</em> maximum brake pressure was hit and on for how <em>long</em> it was sustained. I've set a threshold against the graph of 1 second so any extreme braking is clearly identifiable - if you're that hard on the brakes for that long, you're probably going to end up in the scenery.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/max_braking-6.png" alt="Taking KSQL for a Spin Using Real-time Device Data"></p> <h1 id="thetaleof2laps">The Tale of 2 Laps</h1> <p>After putting it all together, it's time to take to the track and see how it looks. This video shows 2 complete laps onboard with the Caterham Seven 620R around Brands Hatch in the UK. The first lap is a relatively smooth one and the second is quite ragged. Notice that the first lap ( lap 68 ) is quicker overall than the second ( lap 69 ). On lap 69, I start to drive more aggressively and oversteer spikes start to appear in the steering input graph. Lap 69 also has significantly more events overall than lap 68 as a result my more exuberant ( slower ) driving style. You'll also notice that maximum brake pressure is reached a couple of times on each lap, but for no longer than the threshold of 1 second on each occurrence.</p> <iframe src="https://player.vimeo.com/video/240169902" width="640" height="360" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen></iframe> <h1 id="summary">Summary</h1> <p>KSQL is awesome! Although it's only a developer preview at this point, it's impressive what you can get done with it. As it evolves over time and mirrors more of the functionality of the underlying <a href="https://docs.confluent.io/current/streams/developer-guide.html">Streams API</a> it will become even more powerful, lowering the barrier to entry for real-time stream processing further and further. Take a look at the <a href="https://github.com/confluentinc/ksql/blob/0.1.x/docs/roadmap.md#roadmap">road map</a> to see what may be coming next.</p> <p>Oh, and I recently discovered on the #KSQL <a href="https://slackpass.io/confluentcommunity">community Slack group</a>, that you can execute KSQL in <a href="https://github.com/confluentinc/ksql/blob/0.1.x/ksql-examples/src/main/java/io/confluent/ksql/embedded/EmbeddedKsql.java">Embedded Mode</a> right inside your Java code, allowing you to mix the native Streams API with KSQL - very nice indeed !</p> Tom Underhill aa39ce7a-1d16-4fce-83c0-a70e3c1d5944 Tue Nov 07 2017 07:41:22 GMT-0500 (EST) OBIA 11g : Analyzing ODI ETL Load Performance - Part 1 https://blogs.oracle.com/biapps/obia-11g-%3A-analyzing-odi-etl-load-performance-part-1 <p style="text-align: justify;">When you run an ODI ETL Load plan, it takes certain time. At times, customers would like to understand a split of the time taken by the load plan and analyze the top running maps to see if they can be optimized to run faster.</p> <p style="text-align: justify;">In the first part in this series, we help you understand how you can easily analyze the time taken by the load plan and <u><strong>identify the top running maps</strong></u>.</p> <p style="text-align: justify;">Using ODI Studio, a customer can load at the Load Plan logs and see the time taken by each phase or if required, each step in the load plan. However since there is no easy option to sort by the time taken, it can sometimes be painful to look at the complete logs from ODI Studio to easily identify the top running maps.</p> <p style="text-align: justify;">The following backend queries(to be run against the ODI repository schema) can help you see the same details that you see in ODI studio and yet analyze them better.</p> <strong>Query to get the overall load plan run timings for an instance</strong> <div class="container" style="font-size:9px" title="Hint: double-click to select code">--List of Load Plan runs for a load plan instance id<br /> SELECT<br /> &nbsp; LP.LOAD_PLAN_NAME,<br /> &nbsp; LPI.I_LOAD_PLAN,<br /> &nbsp; LPR.I_LP_INST,LPR.NB_RUN,<br /> &nbsp; TO_CHAR(LPR.START_DATE, &#39;MM-DD-YYYY HH24:MI:SS&#39;) LPRUN_START_DATE,<br /> &nbsp; TO_CHAR(LPR.END_DATE, &#39;MM-DD-YYYY HH24:MI:SS&#39;) LPRUN_END_DATE,<br /> &nbsp; LPR.STATUS --D&nbsp;&nbsp;&nbsp; Done,E&nbsp;&nbsp;&nbsp; Error,M&nbsp;&nbsp;&nbsp; Warning,R&nbsp;&nbsp;&nbsp; Running,W&nbsp;&nbsp;&nbsp; Waiting,A&nbsp;&nbsp;&nbsp; Already done in a previous run<br /> FROM SNP_LPI_RUN LPR,SNP_LP_INST LPI, SNP_LOAD_PLAN LP<br /> WHERE<br /> &nbsp; LPR.I_LP_INST=&amp;LOAD_PLAN_INSTANCE_ID<br /> &nbsp; AND LP.I_LOAD_PLAN=LPI.I_LOAD_PLAN<br /> &nbsp; AND LPI.I_LP_INST=LPR.I_LP_INST<br /> ORDER BY LPR.START_DATE ;</div> <p>The query will prompt you for the Load Plan Instance id. You can easily get it from ODI studio for the load plan run you want to analyze. Below screenshot shows sample output of the above query.</p> <p><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/fea8124c-dec0-4db5-9a22-58b776be6429/Image/c302ea84cbf7bdac27a6b46b391e0e1d/etlperf_load_plan_runs.png" style="width: 887px; height: 78px;" /></p> <p style="text-align: justify;">Next step is to analyze the <strong>individual step timings of a single load plan instance</strong>.The below query provides the timings at each load plan step.Use the LVL Column in query below to filter and see the timings at higher levels in the load plan (see examples below). (Download the queries here <a href="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/fea8124c-dec0-4db5-9a22-58b776be6429/File/02fc243e733aa1b3478d2b308f5ae594/etl_perf_odi_backend_queries.txt">ODI ETL Performance Backend Queries</a>)</p> <div class="container" style="font-size:9px" title="Hint: double-click to select code">--LP Instance Latest Run Step Timings<br /> SELECT<br /> &nbsp; LP.I_LOAD_PLAN,LP.LOAD_PLAN_NAME,LPI.I_LP_INST,<br /> &nbsp; LPLOG.NB_RUN,<br /> &nbsp; COUNT(1) OVER( ORDER BY STEP_NUM)-1 LPSTEPNUM,<br /> &nbsp; SH.LVL ,<br /> &nbsp; LPAD(&#39; &#39;, 2 * SH.LVL - 1,&#39; &#39;) || LPS.LP_STEP_NAME STEP_HIERARCHY,&nbsp;&nbsp; &nbsp;<br /> &nbsp; LPLOG.STATUS,--D&nbsp;&nbsp;&nbsp; Done,E&nbsp;&nbsp;&nbsp; Error,M&nbsp;&nbsp;&nbsp; Warning,R&nbsp;&nbsp;&nbsp; Running,W&nbsp;&nbsp;&nbsp; Waiting,A&nbsp;&nbsp;&nbsp; Already done in a previous run<br /> &nbsp; LPLOG.NB_ROW,<br /> &nbsp; LPLOG.SESS_NO,<br /> &nbsp; CASE WHEN LPLOG.SESS_NO IS NOT NULL THEN TRUNC((SESS.SESS_END-SESS.SESS_BEG)*24*60)||&#39;:&#39;||LPAD(TRUNC(MOD((SESS.SESS_END-SESS.SESS_BEG)*24*60*60,60)),2,&#39;0&#39;)<br /> &nbsp;&nbsp;&nbsp; ELSE TRUNC((LPLOG.END_DATE-LPLOG.START_DATE)*24*60)||&#39;:&#39;||LPAD(TRUNC(MOD((LPLOG.END_DATE-LPLOG.START_DATE)*24*60*60,60)),2,&#39;0&#39;)<br /> &nbsp; END DURATION_FORMATTED,<br /> &nbsp; CASE WHEN LPLOG.SESS_NO IS NOT NULL THEN TRUNC((SESS.SESS_END-SESS.SESS_BEG)*24*60*60)<br /> &nbsp;&nbsp;&nbsp; ELSE TRUNC((LPLOG.END_DATE-LPLOG.START_DATE)*24*60*60)<br /> &nbsp; END DURATION_SEC,<br /> &nbsp; CASE WHEN LPLOG.SESS_NO IS NOT NULL THEN TO_CHAR(SESS.SESS_BEG, &#39;MM-DD-YYYY HH24:MI:SS&#39;)<br /> &nbsp;&nbsp;&nbsp; ELSE TO_CHAR(LPLOG.START_DATE, &#39;MM-DD-YYYY HH24:MI:SS&#39;)<br /> &nbsp; END START_TIME,<br /> &nbsp; CASE WHEN LPLOG.SESS_NO IS NOT NULL THEN TO_CHAR(SESS.SESS_END, &#39;MM-DD-YYYY HH24:MI:SS&#39;)<br /> &nbsp;&nbsp;&nbsp; ELSE TO_CHAR(LPLOG.END_DATE, &#39;MM-DD-YYYY HH24:MI:SS&#39;)<br /> &nbsp; END END_TIME,<br /> &nbsp; NVL(LPS.SCEN_NAME,LPS.VAR_NAME) SCEN_VAR_NAME,<br /> &nbsp; LPS.LP_STEP_TYPE,<br /> &nbsp; CASE WHEN LPS.IND_ENABLED =1 THEN &#39;Y&#39; ELSE &#39;N&#39; END IS_ENABLED,<br /> &nbsp; LPS.I_LP_STEP,<br /> &nbsp; LPS.PAR_I_LP_STEP,<br /> &nbsp; LPS.RESTART_TYPE,<br /> &nbsp; LPS.SCEN_NAME,LPS.SCEN_VERSION,<br /> &nbsp; LPS.VAR_NAME,LPS.VAR_OP,LPS.VAR_VALUE,<br /> &nbsp; LPS.SESS_KEYWORDS,LPS.VAR_LONG_VALUE<br /> FROM SNP_LOAD_PLAN LP INNER JOIN SNP_LP_INST LPI<br /> ON LPI.I_LOAD_PLAN=LP.I_LOAD_PLAN<br /> &nbsp;&nbsp; INNER JOIN<br /> &nbsp; (SELECT I_LOAD_PLAN,I_LP_STEP,LP_STEP_NAME,STEP_PATH,TYPE_PREF,LVL,STEP_ORDER,RANK() OVER(ORDER BY TYPE_PREF DESC,ROWNUM) STEP_NUM FROM (<br /> &nbsp;&nbsp;&nbsp; SELECT I_LOAD_PLAN,I_LP_STEP,LP_STEP_NAME,STEP_PATH,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CASE WHEN SUBSTR(STEP_TYPE_PATH,1,4)=&#39;-&gt;EX&#39; THEN 1 ELSE 0 END TYPE_PREF,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LVL,STEP_ORDER FROM<br /> &nbsp;&nbsp;&nbsp; (<br /> &nbsp;&nbsp;&nbsp; SELECT * FROM (<br /> &nbsp;&nbsp;&nbsp; SELECT&nbsp; I_LOAD_PLAN,I_LP_STEP,LP_STEP_NAME,SYS_CONNECT_BY_PATH(LP_STEP_NAME, &#39;-&gt;&#39;) STEP_PATH ,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SYS_CONNECT_BY_PATH(LP_STEP_TYPE, &#39;-&gt;&#39;) STEP_TYPE_PATH ,LEVEL LVL, STEP_ORDER<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM&nbsp;&nbsp;&nbsp; SNP_LP_STEP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; START WITH<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PAR_I_LP_STEP IS NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONNECT BY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I_LOAD_PLAN=PRIOR I_LOAD_PLAN AND<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PAR_I_LP_STEP = PRIOR I_LP_STEP<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER SIBLINGS BY STEP_ORDER<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )WHERE SUBSTR(STEP_TYPE_PATH,1,4)!=&#39;-&gt;EX&#39; --Exclude Exception Steps<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ))<br /> &nbsp; ) SH<br /> ON LP.I_LOAD_PLAN=SH.I_LOAD_PLAN<br /> LEFT OUTER JOIN SNP_LPI_STEP LPS<br /> &nbsp; ON LPI.I_LP_INST=LPS.I_LP_INST<br /> &nbsp; AND LPS.I_LP_STEP=SH.I_LP_STEP<br /> LEFT OUTER JOIN SNP_SCEN S<br /> &nbsp; ON LPS.SCEN_NAME=S.SCEN_NAME<br /> LEFT OUTER JOIN SNP_LPI_STEP_LOG LPLOG<br /> &nbsp; ON LPLOG.I_LP_INST=LPS.I_LP_INST AND LPLOG.I_LP_STEP=LPS.I_LP_STEP<br /> LEFT OUTER JOIN SNP_SESSION SESS<br /> &nbsp; ON LPLOG.SESS_NO=SESS.SESS_NO<br /> WHERE LPI.I_LP_INST=&amp;LOAD_PLAN_INSTANCE_ID<br /> AND (LPLOG.NB_RUN=(SELECT DISTINCT<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MAX(QLPR.NB_RUN) OVER() MAX_NB_RUN<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SNP_LPI_RUN QLPR,SNP_LP_INST QLPI<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE QLPR.I_LP_INST=LPI.I_LP_INST<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND QLPI.I_LP_INST=QLPR.I_LP_INST<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br /> &nbsp;&nbsp;&nbsp; OR LPLOG.NB_RUN IS NULL)<br /> ORDER BY LP.I_LOAD_PLAN,STEP_NUM<br /> ;</div> <p>&nbsp;</p> <strong>How to Export query output from SQL Developer</strong> <p style="text-align: justify;">Run the<strong> </strong>query from SQL developer. Then right click on the output and select export. Specify xlsx format and then click on next to finish the export. Screenshots below:</p> <p><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/fea8124c-dec0-4db5-9a22-58b776be6429/Image/b0aef8fa8048122624a004c5ea4384b8/etlperf_query_export_sqldeveloper1.png" /></p> <p><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/fea8124c-dec0-4db5-9a22-58b776be6429/Image/73a412ea78cb7303ea3c79dcedd9a753/etlperf_query_export_sqldeveloper2.png" style="width: 564px; height: 300px;" /></p> <p>Once you have the excel sheet, you can easily analyze the timings as shown in examples below.</p> <strong>Phase Wise Summary</strong> <p>Use the LVL column to filter on top levels (level 1,2,3). See screenshot below.</p> <p><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/fea8124c-dec0-4db5-9a22-58b776be6429/Image/2da0dd7dae7f1229376ab6ab079977f5/etlperf_load_plan_timings_phase_wise_summary.png" /></p> <p><strong>Top Running Maps:</strong></p> <p style="text-align: justify;">In the excel sheet, sort on DURATION_SEC and filter on STEP_TYPE=RS i.e only Scenario steps, to get the top running scenarios. The session numbers are also present in the output.</p> <p><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/fea8124c-dec0-4db5-9a22-58b776be6429/Image/e9ba867cb978b407aa5b9306657f82b0/etlperf_load_plan_timings_top_running_scenarios.png" /></p> <p style="text-align: justify;">Now you can analyze the individual top-running sessions further by looking at the sessions in ODI studio and checking which particular step in the session is taking most of the time and what is the SQL for that particular step. Obtain the AWR report and SQL advisor report for that query and see how that query can be tuned.</p> <p style="text-align: justify;">In the <a href="https://blogs.oracle.com/biapps/obia-11g-%3a-analyzing-odi-etl-load-performance-part-2">part2</a> in this blog series, we discuss certain settings that influence the overall load plan duration.</p> <p style="text-align: justify;">&nbsp;</p> <p>&nbsp;</p> Gunaranjan Vasireddy https://blogs.oracle.com/biapps/obia-11g-%3A-analyzing-odi-etl-load-performance-part-1 Tue Nov 07 2017 00:51:00 GMT-0500 (EST) OAC - Service Console http://beyond-just-data.blogspot.com/2017/11/oac-service-console.html <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: small;">I recently ran into an issue where in our OAC instance we move our DBaaS to a different cloud instance and thereby it was assigned a new IP address.&nbsp; Unfortunately the RPD Connection Pool was not updated.&nbsp; Our RPD has a number of Session Variables that when we attempted to sign on to our OAC instance all we saw was the following:</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: small;"><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: small;"><a href="https://2.bp.blogspot.com/-23csOa_rO9g/Wfyr1kdQ3dI/AAAAAAAAMMw/xXcK6iaK3VsqQSC4aqnvolFi5YkC5n_OgCLcBGAs/s1600/SignOnSpin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="564" data-original-width="912" height="246" src="https://2.bp.blogspot.com/-23csOa_rO9g/Wfyr1kdQ3dI/AAAAAAAAMMw/xXcK6iaK3VsqQSC4aqnvolFi5YkC5n_OgCLcBGAs/s400/SignOnSpin.png" width="400" /></a></span></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: small;"><br /></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: small;">It took a while to figure out what was going on and it was only after I looked at the diagnostic logs for the BI Server that I found that my connection was blacklisted.</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: small;"></span></span><br /><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: small;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: small;"><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </w:LatentStyles></xml><![endif]--><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman",serif;} </style><![endif]--><span style="font-family: &quot;times new roman&quot; , serif; font-size: 12.0pt;">/bi/domain/fmw/user_projects/domains/bi/servers/obis1/logs</span></span></span><br /><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://4.bp.blogspot.com/-VflqaJ-yxcw/Wfyt15EiakI/AAAAAAAAMM8/vgso63wyeEkU1VTCvMSpbg_Sk6yIQv2YgCLcBGAs/s1600/Log.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="366" data-original-width="1150" height="126" src="https://4.bp.blogspot.com/-VflqaJ-yxcw/Wfyt15EiakI/AAAAAAAAMM8/vgso63wyeEkU1VTCvMSpbg_Sk6yIQv2YgCLcBGAs/s400/Log.png" width="400" /></a></span></div><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-size: small;"><span style="font-size: 12pt;">Now came the hard part.&nbsp; How do I sign into OAC and access the Console interface where I can Replace the Data Model with a new RPD? </span></span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Fortunately there is an administration interface that can be accessed that does not link to BIServer.&nbsp; This interface is the Business Intelligence Cloud Service - Service Console</span><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-TyZFAYaRA7c/WfyvxcuzpTI/AAAAAAAAMNI/vzc4uBqJLhgtCjCpZ0gM3otY_HBAT10SwCLcBGAs/s1600/ServiceConsole.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="109" data-original-width="528" height="82" src="https://4.bp.blogspot.com/-TyZFAYaRA7c/WfyvxcuzpTI/AAAAAAAAMNI/vzc4uBqJLhgtCjCpZ0gM3otY_HBAT10SwCLcBGAs/s400/ServiceConsole.png" width="400" /></a></div><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">This Service Console allowed me access to the Snapshots</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">&nbsp; </span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-iPo4dCpc__Q/Wfywk_wTYXI/AAAAAAAAMNQ/TcTWAV9DAdcr73Gq62vNSS43_vlOD8wBwCLcBGAs/s1600/Snapshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="362" data-original-width="849" height="170" src="https://4.bp.blogspot.com/-iPo4dCpc__Q/Wfywk_wTYXI/AAAAAAAAMNQ/TcTWAV9DAdcr73Gq62vNSS43_vlOD8wBwCLcBGAs/s400/Snapshot.png" width="400" /></a></div><br /><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Access to this Service Console is via the following URL:</span><br /><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">https://server:port/biserviceadministration</span><br /><br /><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">With access to this screen I was able to replace the RPD with a corrected connection string and was able to successfully log in to my OAC instance.</span><br /><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Hopefully this URL will save many hours of frustration. </span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /> Wayne D. Van Sluys tag:blogger.com,1999:blog-7768091516190336427.post-8969132435369408717 Fri Nov 03 2017 14:22:00 GMT-0400 (EDT) How to Modify the OBIEE Error Message http://blog.performancearchitects.com/wp/2017/11/01/how-to-modify-the-obiee-error-message/ <p>Author: Cameron Ross, Performance Architects</p> <p>The <a href="https://www.oracle.com/solutions/business-analytics/business-intelligence/index.html">Oracle Business Intelligence Enterprise Edition (OBIEE)</a> error message can be a very daunting alert for an end user to receive. This message can be edited in order to change the display.</p> <p>The standard Oracle error message contains three content objects: 1. The title; 2. The subtitle; and 3. Error details.  The steps below outline how to change this message:</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-1.png"><img class="alignnone size-medium wp-image-2166" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-1-300x89.png" alt="" width="300" height="89" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-1-300x89.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-1-624x185.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-1.png 741w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <ol> <li>Create a new folder called “Custom Messages” inside the Oracle BI Presentation Service (OBIPS) folder in the following path of your OBIEE install. The reason for doing this is because when upgrades or patches are done to the install, the xml files will be reset in the initial file path:<br /> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-2.png"><img class="alignnone size-medium wp-image-2165" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-2-300x152.png" alt="" width="300" height="152" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-2-300x152.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-2-768x389.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-2-624x316.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-2.png 908w" sizes="(max-width: 300px) 100vw, 300px" /></a></li> <li>A user has the ability to change the title of the error message. In order to change the title of the error, find the “viewmessages.xml” file in your OBIEE install directory:</li> </ol> <p>/OBIEE_Home/Middleware/bi/bifoundation/web/msgdb/l_en/messages/</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-3.png"><img class="alignnone size-medium wp-image-2164" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-3-300x187.png" alt="" width="300" height="187" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-3-300x187.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-3.png 532w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>The first part of the error message can be customized by editing the “viewmessages.xml” file. Search for “kmsgEVCViewDisplayErrorTitle” in the xml file. This is the location of the error message that will display. Change the “View Display Error” to the text of your choice.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-4.png"><img class="alignnone size-medium wp-image-2163" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-4-300x24.png" alt="" width="300" height="24" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-4-300x24.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-4.png 431w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Save the “viewmessages.xml” file in the custom messages folder that was created earlier.</p> <ol start="3"> <li>Just like with the title, a user can alter the subtitle. The one downfall of editing subtitles is that it will make it harder for the administrator to fix the issue since this is diagnosing the error source. To edit the “ODBC Subtitle,” go to the same folder that the “viewmessages.xml” file was located in above. This time find the “odbcaccessmessages.xml” file. Edit this file and search for “kmsgOdbcAccessOdbcException”. Replace the text “ODBC driver returned an error” message and replace it with the text of your choice.<br /> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-5.png"><img class="alignnone size-medium wp-image-2162" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-5-300x68.png" alt="" width="300" height="68" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-5-300x68.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-5.png 436w" sizes="(max-width: 300px) 100vw, 300px" /></a></li> </ol> <p>Save the “odbcaccessmessages.xml” file in the custom messages folder that was created earlier.</p> <ol start="4"> <li>An OBIEE administrator can alter the privileges that other end users have. One thing that the administrator can change is the ability to see the SQL in the error details of an OBIEE message. Login to OBIEE as an administrator. Go to the top right corner of the OBIEE home screen and click the “Administration” tab:<br /> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-6.png"><img class="alignnone size-medium wp-image-2161" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-6-300x185.png" alt="" width="300" height="185" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-6-300x185.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-6-768x473.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-6-624x384.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-6.png 898w" sizes="(max-width: 300px) 100vw, 300px" /></a></li> </ol> <p>On the “Administration” page, select “Manage Privileges.” In “Manage Privileges,” scroll down to the “Admin: General” section and find the “See SQL issued in errors” and alter this message so that only administrators have the rights to see the SQL for the error.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-7.png"><img class="alignnone size-medium wp-image-2160" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-7-300x157.png" alt="" width="300" height="157" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-7-300x157.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/Cameron-7.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>By setting this to “Administrators Only”, this cleans up the appearance of the error details when end users run into an error message.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2159 Wed Nov 01 2017 05:37:52 GMT-0400 (EDT) FAQ: Oracle Analytics Cloud (OAC) https://www.us-analytics.com/hyperionblog/oracle-analytics-cloud-questions <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/oracle-analytics-cloud-questions" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Oracle%20Analytics%20Cloud%20FAQ.jpg?t=1512966730140" alt="FAQ: Oracle Analytics Cloud (OAC)" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>If you’ve been shopping around for a BI solution or, if you’ve been looking for a BI solution in the cloud, you’ve probably heard about the Oracle Analytics Cloud (OAC).</p> <p>If you’re wanting to learn more about OAC or you stumbled upon this page while searching for business analytics solutions, then this is the blog post for you.</p> <p>We’ll cover the most frequently asked questions about OAC to give you a better understanding of what this tool can do for you.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Foracle-analytics-cloud-questions&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Charles Elliott https://www.us-analytics.com/hyperionblog/oracle-analytics-cloud-questions Tue Oct 31 2017 18:18:05 GMT-0400 (EDT) Teaching Girls to Code at U Girls Code — Year 2 https://blog.redpillanalytics.com/teaching-girls-to-code-at-u-girls-code-year-2-42018fc5c012?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*O6rYdNQ78NpDC5KyfSi_gw.jpeg" /><figcaption>Have you coded before?</figcaption></figure><p>October 27, 2017 was our second annual U Girls Code event at University of Utah. The idea for this event came from Tyra Crockett, from Oracle Academy, and I. We convinced University of Utah’s TEK Club to host the event as it is good exposure for their program to have the girls in a university setting. Oracle Academy used our event last year as a prototype to take across the country in support of the Let Girls Learn initiative from the White House. Now with one year under our belts, we were ready with ideas to make this year’s event even better!</p><style>body[data-twttr-rendered="true"] {background-color: transparent;}.twitter-tweet {margin: auto !important;}</style><blockquote class="twitter-tweet" data-conversation="none" data-align="center" data-dnt="true"><p>❤️ working with University of Utah teaching girls to code <a href="http://twitter.com/OracleAcademy" target="_blank" title="Twitter profile for @OracleAcademy">@OracleAcademy</a></p><p>&#x200a;&mdash;&#x200a;<a href="https://twitter.com/Tyra35/status/924003120178397184">@Tyra35</a></p></blockquote><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script><script>function notifyResize(height) {height = height ? height : document.documentElement.offsetHeight; var resized = false; if (window.donkey && donkey.resize) {donkey.resize(height); resized = true;}if (parent && parent._resizeIframe) {var obj = {iframe: window.frameElement, height: height}; parent._resizeIframe(obj); resized = true;}if (window.location && window.location.hash === "#amp=1" && window.parent && window.parent.postMessage) {window.parent.postMessage({sentinel: "amp", type: "embed-size", height: height}, "*");}if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.resize) {window.webkit.messageHandlers.resize.postMessage(height); resized = true;}return resized;}twttr.events.bind('rendered', function (event) {notifyResize();}); twttr.events.bind('resize', function (event) {notifyResize();});</script><script>if (parent && parent._resizeIframe) {var maxWidth = parseInt(window.frameElement.getAttribute("width")); if ( 500 < maxWidth) {window.frameElement.setAttribute("width", "500");}}</script><p>This year’s U Girls Code event began with a light breakfast and keynote in an event hall with great views at the top of the Spencer Fox Eccles Business Building. I was the keynote speaker, hoping to inspire the girls to be a coder like me. Since it’s hard to keep young minds’ attention for long, I kept my keynote speech to under 10 minutes talking about what I like most about working in tech, how I got into this field, and some tips for when you feel like maybe you don’t know as much about coding as the person next to you in class.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3w3gRKweMplvJK3g3Yu-4Q.jpeg" /><figcaption>Welcome Introduction from Laurie Bragg of the Information Systems Department at UofU</figcaption></figure><p>Next we took all 75 girls to a computer lab to get started in Greenfoot. Oracle Academy’s teachers, Lisa &amp; Bruce, introduced the girls to what Greenfoot is and how to find it on the computers. The girls were instructed to use their workbook to work at their own pace to create an arcade game. Immediately the girls were helping each other and working excitedly through the content. The curriculum was structured so that they would write a few lines of code then try it so they got to see the progress as the game came together. They were giggling and really enjoying seeing what they created.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9RtxZoTatJJjG_C3HSOhqA.jpeg" /></figure><p>I had never used Greenfoot before but it’s java based so it wasn’t tough for me to quickly pick it up and be able to answer questions. Some girls would ask what certain lines of code were doing and others typed furiously just trying to get their game created without understanding the code. Most encountered errors in their typing such as missing semicolons and they were quickly learning how to troubleshoot each other’s code.</p><style>body[data-twttr-rendered="true"] {background-color: transparent;}.twitter-tweet {margin: auto !important;}</style><blockquote class="twitter-tweet" data-conversation="none" data-align="center" data-dnt="true"><p>I hit compile and little dudes showed up!&quot; #UGirlsCode</p><p>&#x200a;&mdash;&#x200a;<a href="https://twitter.com/MeKolbe/status/923937408445542401">@MeKolbe</a></p></blockquote><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script><script>function notifyResize(height) {height = height ? height : document.documentElement.offsetHeight; var resized = false; if (window.donkey && donkey.resize) {donkey.resize(height); resized = true;}if (parent && parent._resizeIframe) {var obj = {iframe: window.frameElement, height: height}; parent._resizeIframe(obj); resized = true;}if (window.location && window.location.hash === "#amp=1" && window.parent && window.parent.postMessage) {window.parent.postMessage({sentinel: "amp", type: "embed-size", height: height}, "*");}if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.resize) {window.webkit.messageHandlers.resize.postMessage(height); resized = true;}return resized;}twttr.events.bind('rendered', function (event) {notifyResize();}); twttr.events.bind('resize', function (event) {notifyResize();});</script><script>if (parent && parent._resizeIframe) {var maxWidth = parseInt(window.frameElement.getAttribute("width")); if ( 500 < maxWidth) {window.frameElement.setAttribute("width", "500");}}</script><p>With extra time before lunch, we challenged the girls to modify their arcade game to add more challenges to it such as more obstacles, extra levels, etc. The girls were then invited to demo to the whole group what they created. We told them there were prizes for the best creations but then we surprised them at the end with prizes for everyone who gave a demo! Here’s some of the presentations from the girls:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FIwhf1JpQPl4%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DIwhf1JpQPl4&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FIwhf1JpQPl4%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/d927da55b620464c52aaaa91c4632e52/href">https://medium.com/media/d927da55b620464c52aaaa91c4632e52/href</a></iframe><iframe src="https://cdn.embedly.com/widgets/media.html?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DSJ1WSYSi2go&amp;src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FSJ1WSYSi2go%3Ffeature%3Doembed&amp;type=text%2Fhtml&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/135d385e6ab0c708f100d650bd2f5611/href">https://medium.com/media/135d385e6ab0c708f100d650bd2f5611/href</a></iframe><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FB9FBxOcP_4E%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DB9FBxOcP_4E&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FB9FBxOcP_4E%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/f9ec76811606fa4a67832e9ce526b73d/href">https://medium.com/media/f9ec76811606fa4a67832e9ce526b73d/href</a></iframe><p>After lunch the girls had the opportunity to work with Finch Robots using Greenfoot. They attached markers on the robots to draw patterns on a piece of paper. They really enjoyed seeing what changing their code would do to the design the robot would draw!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6gsckFGM-0ne_fGdUF4E-w.jpeg" /><figcaption>Finch Robot design</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DvUvAhHhIIYBwhAD9jw9Rw.jpeg" /></figure><p>In the end, the girls said they had a fun day. When asked how many wanted to continue coding, most raised their hands. The highlight of the day for me was when one girl told me that I inspired her and she wants to be just like me! I got a video of her explaining about how fun the day was:</p><style>body[data-twttr-rendered="true"] {background-color: transparent;}.twitter-tweet {margin: auto !important;}</style><blockquote class="twitter-tweet" data-conversation="none" data-align="center" data-dnt="true"><p>This girl said to me &quot;You inspired me today at #UGirlsCode. I want to be just like you!&quot; #MissionAccomplished <a href="http://twitter.com/OracleAcademy" target="_blank" title="Twitter profile for @OracleAcademy">@OracleAcademy</a> <a rel="nofollow" href="https://t.co/FhUtyIbyXH">https://t.co/FhUtyIbyXH</a></p><p>&#x200a;&mdash;&#x200a;<a href="https://twitter.com/MeKolbe/status/924026694016659456">@MeKolbe</a></p></blockquote><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script><script>function notifyResize(height) {height = height ? height : document.documentElement.offsetHeight; var resized = false; if (window.donkey && donkey.resize) {donkey.resize(height); resized = true;}if (parent && parent._resizeIframe) {var obj = {iframe: window.frameElement, height: height}; parent._resizeIframe(obj); resized = true;}if (window.location && window.location.hash === "#amp=1" && window.parent && window.parent.postMessage) {window.parent.postMessage({sentinel: "amp", type: "embed-size", height: height}, "*");}if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.resize) {window.webkit.messageHandlers.resize.postMessage(height); resized = true;}return resized;}twttr.events.bind('rendered', function (event) {notifyResize();}); twttr.events.bind('resize', function (event) {notifyResize();});</script><script>if (parent && parent._resizeIframe) {var maxWidth = parseInt(window.frameElement.getAttribute("width")); if ( 500 < maxWidth) {window.frameElement.setAttribute("width", "500");}}</script><p>Without the support of Oracle Academy, University of Utah and Utah Oracle Users Group, this day would not have been possible. Thank you for providing the opportunity to show these girls that coding is fun and something they should consider as a career!</p><style>body[data-twttr-rendered="true"] {background-color: transparent;}.twitter-tweet {margin: auto !important;}</style><blockquote class="twitter-tweet" data-conversation="none" data-align="center" data-dnt="true"><p>Inspiring girls to code! This is what it&#39;s all about! <a href="http://twitter.com/OracleAcademy" target="_blank" title="Twitter profile for @OracleAcademy">@OracleAcademy</a> <a href="http://twitter.com/meKolbe" target="_blank" title="Twitter profile for @meKolbe">@meKolbe</a> <a rel="nofollow" href="https://t.co/SjTPY2cA9c">https://t.co/SjTPY2cA9c</a></p><p>&#x200a;&mdash;&#x200a;<a href="https://twitter.com/DeniseHobbs12/status/924339469662109697">@DeniseHobbs12</a></p></blockquote><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script><script>function notifyResize(height) {height = height ? height : document.documentElement.offsetHeight; var resized = false; if (window.donkey && donkey.resize) {donkey.resize(height); resized = true;}if (parent && parent._resizeIframe) {var obj = {iframe: window.frameElement, height: height}; parent._resizeIframe(obj); resized = true;}if (window.location && window.location.hash === "#amp=1" && window.parent && window.parent.postMessage) {window.parent.postMessage({sentinel: "amp", type: "embed-size", height: height}, "*");}if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.resize) {window.webkit.messageHandlers.resize.postMessage(height); resized = true;}return resized;}twttr.events.bind('rendered', function (event) {notifyResize();}); twttr.events.bind('resize', function (event) {notifyResize();});</script><script>if (parent && parent._resizeIframe) {var maxWidth = parseInt(window.frameElement.getAttribute("width")); if ( 500 < maxWidth) {window.frameElement.setAttribute("width", "500");}}</script><style>body[data-twttr-rendered="true"] {background-color: transparent;}.twitter-tweet {margin: auto !important;}</style><blockquote class="twitter-tweet" data-conversation="none" data-align="center" data-dnt="true"><p>Awesome <a href="http://twitter.com/MeKolbe" target="_blank" title="Twitter profile for @MeKolbe">@MeKolbe</a>! This is why we all do the work we do - even our daily jobs can inspire a student. #AchieveYourDreams <a href="http://twitter.com/OracleAcademy" target="_blank" title="Twitter profile for @OracleAcademy">@OracleAcademy</a> <a rel="nofollow" href="https://t.co/r6ps6i4MtZ">https://t.co/r6ps6i4MtZ</a></p><p>&#x200a;&mdash;&#x200a;<a href="https://twitter.com/aderbenwick/status/924073876258246656">@aderbenwick</a></p></blockquote><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script><script>function notifyResize(height) {height = height ? height : document.documentElement.offsetHeight; var resized = false; if (window.donkey && donkey.resize) {donkey.resize(height); resized = true;}if (parent && parent._resizeIframe) {var obj = {iframe: window.frameElement, height: height}; parent._resizeIframe(obj); resized = true;}if (window.location && window.location.hash === "#amp=1" && window.parent && window.parent.postMessage) {window.parent.postMessage({sentinel: "amp", type: "embed-size", height: height}, "*");}if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.resize) {window.webkit.messageHandlers.resize.postMessage(height); resized = true;}return resized;}twttr.events.bind('rendered', function (event) {notifyResize();}); twttr.events.bind('resize', function (event) {notifyResize();});</script><script>if (parent && parent._resizeIframe) {var maxWidth = parseInt(window.frameElement.getAttribute("width")); if ( 500 < maxWidth) {window.frameElement.setAttribute("width", "500");}}</script><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=42018fc5c012" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/teaching-girls-to-code-at-u-girls-code-year-2-42018fc5c012">Teaching Girls to Code at U Girls Code — Year 2</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Michelle Kolbe https://medium.com/p/42018fc5c012 Mon Oct 30 2017 19:40:33 GMT-0400 (EDT) PBCS and EPBCS Updates (November 2017): Changes to the Provisioning Report, Currency Conversion for Weekly Plans, Writing Groovy Rules & More https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2017-november-updates <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2017-november-updates" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/pbcs%20and%20epbcs%20november%20update.jpg?t=1512966730140" alt="pbcs and epbcs november update.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The October updates for Oracle's<span>&nbsp;</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">Planning &amp; Budgeting Cloud Service (PBCS) and Enterprise Planning and Budgeting Cloud Service (EPBCS)</a><span>&nbsp;are here.&nbsp;</span>This blog post outlines several new features for both applications, enhancements, removal of support, and fixed defects.</p> <p><em>The monthly update for PBCS and EPBCS will occur on Friday, November 17 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fpbcs-and-epbcs-2017-november-updates&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2017-november-updates Mon Oct 30 2017 14:04:19 GMT-0400 (EDT) EPRCS Update (November 2017): Support for Disclosure Management, Formatting and Suppression in Management Reports & More https://www.us-analytics.com/hyperionblog/eprcs-updates-november-2017 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/eprcs-updates-november-2017" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/EPRCS%20november%20updates.jpg?t=1512966730140" alt="EPRCS november updates.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The November updates for Oracle Enterprise Performance Reporting Cloud Service (EPRCS)<span>&nbsp;are here</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">.</a><span>&nbsp;</span>This blog post outlines new features, fixed defects, and considerations.</p> <p><em>The monthly update for FCCS will occur on Friday, November 17 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Feprcs-updates-november-2017&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/eprcs-updates-november-2017 Mon Oct 30 2017 13:24:52 GMT-0400 (EDT) FCCS Updates (November 2017): Configurable Calculations, Generating Custom Reports, Limits on Dimension Members & More https://www.us-analytics.com/hyperionblog/fccs-updates-november-2017 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/fccs-updates-november-2017" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/FCCS%20November%20Updates.jpg?t=1512966730140" alt="FCCS November Updates.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The November updates for <a href="https://www.us-analytics.com/hyperionblog/faq-oracle-financial-consolidation-and-close-cloud-service-fccs">Oracle's<span>&nbsp;Financial Consolidation and Close Cloud Service</span>&nbsp;(FCCS)</a><span> are here</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">.</a><span>&nbsp;</span>This blog post outlines an array of new features, fixed defects, considerations, and future functionality you should prepare for.&nbsp;</p> <p><em>The monthly update for FCCS will occur on Friday, November 17 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ffccs-updates-november-2017&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/fccs-updates-november-2017 Mon Oct 30 2017 12:35:34 GMT-0400 (EDT) ARCS Updates (November 2017): Integrations with EPM Cloud Services, Reusing Target Application Names, Fixed Defects & More https://www.us-analytics.com/hyperionblog/arcs-product-update-november-2017 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/arcs-product-update-november-2017" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/ARCS%20November%20updates.png?t=1512966730140" alt="ARCS November updates.png" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The November updates for Oracle's<span>&nbsp;</span><a href="https://www.us-analytics.com/hyperionblog/faq-account-reconciliation-cloud-service-arcs">Account Reconciliation Cloud Service (ARCS</a>) are here. In this blog post, we’ll outline new features, fixed defects, and considerations.</p> <p>We’ll let you know any time there are updates to ARCS or any other Oracle EPM cloud products. Check the&nbsp;<a href="https://www.us-analytics.com/hyperionblog">US-Analytics Oracle EPM &amp; BI Blog</a><span>&nbsp;</span>every month.</p> <p><em>The monthly update for Oracle ARCS will occur on Friday, November 17 during your normal daily maintenance window.</em></p> <h3 style="text-align: center;"></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Farcs-product-update-november-2017&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/arcs-product-update-november-2017 Mon Oct 30 2017 10:03:52 GMT-0400 (EDT) OBIA 11g: How to change system account passwords in BI Applications https://blogs.oracle.com/biapps/obia-11g%3A-how-to-change-system-account-passwords-in-bi-applications <p>Once in a while, there might be a need to change some of the passwords of the system users in OBIA. These could include the BIAppsSystemUser or the database passwords for the BIAPPS warehouse.</p> <p>BIAPPS 10.2 version users can follow the instructions as mentioned in this MOS tech note.</p> <p><a href="https://support.oracle.com/epmos/faces/DocumentDisplay?id=2264922.1">OBIA 11g: How to change the system account passwords in BI Applications (Doc ID 2264922.1)</a></p> <p>If you are on older versions of BIAPPS, you can refer to this document instead</p> <p><a href="https://support.oracle.com/epmos/faces/DocumentDisplay?id=1997293.1"><span class="x1a">OBIA 11g: Installing Oracle BI Applications 11.1.1.8.1 - Troubleshooting and Frequently Asked Questions [1997293.1]</span></a></p> Gunaranjan Vasireddy https://blogs.oracle.com/biapps/obia-11g%3A-how-to-change-system-account-passwords-in-bi-applications Mon Oct 30 2017 01:18:00 GMT-0400 (EDT) TimestampAdd Error in OBIEE Migration from 11g to 12c https://blog.redpillanalytics.com/timestampadd-error-in-obiee-migration-from-11g-to-12c-35f5c1c1a957?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mDESYWt0k4FjiLJYI7CMdA.jpeg" /></figure><p>I have a report that works fine in OBIEE 11g but when upgraded to 12.2.1.2, it gives an error stating:</p><pre>[nQSError: 22025] Function TimestampAdd is called with an incompatible type.</pre><p>This report has a SQL Expression in a filter that states:</p><pre>TimestampAdd(SQL_TSI_HOUR, 4.5, CURRENT_DATE)</pre><p>The problem is that we are trying to add hours onto a date field. When I change CURRENT_DATE to CURRENT_TIMESTAMP, the error goes away.</p><p>Final SQL Expression:</p><pre>TimestampAdd(SQL_TSI_HOUR, 4.5, CURRENT_TIMESTAMP)</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=35f5c1c1a957" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/timestampadd-error-in-obiee-migration-from-11g-to-12c-35f5c1c1a957">TimestampAdd Error in OBIEE Migration from 11g to 12c</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Michelle Kolbe https://medium.com/p/35f5c1c1a957 Wed Oct 25 2017 19:09:56 GMT-0400 (EDT) Oracle Database In-Memory and Hash Keys https://danischnider.wordpress.com/2017/10/25/oracle-database-in-memory-and-hash-keys/ <p>Hash keys are often used as primary keys in Data Vault environments. When loading dimensional data marts from a Data Vault schema, it seems to be obvious to use them as dimension keys, too. At least in combination with Oracle Database In-Memory, this is not a good idea.</p> <p><span id="more-459"></span></p> <p>In a data warehouse project of one of my customers, we had some strange performance issues with Oracle Database In-Memory. The response times of queries on star schemas were not as good as expected, in some cases even slower than without the In-Memory option. We also realized that In-Memory Aggregation (aka Vector Transformation) was never used, even for very big fact tables. When I forced the optimizer to use a Vector Transformation with a <em>vector_transform</em> hint, the costs and the response time increased dramatically. First, I thought this has to do with the Exadata platform: Because the Smart Scans on Exadata are already fast enough, the optimizer decides not to use a Vector Transformation. But actually, there was another reason for the performance problems: The datatypes (or actually the size) of the join columns were responsible for the poor performance.</p> <p>The data warehouse was implemented with a Data Vault 2.0 modeling approach. In Data Vault 2.0, it is common to use hash keys for the primary key columns of the Hub and Link tables. The star schemas were built on top of the Hubs, Links and Satellites of the Data Vault schema. So, it was obvious to use the same keys as primary key columns for the dimensions and foreign key columns for the fact tables. In the mentioned project, SHA-1 hash values were used (see blog post <a href="https://danischnider.wordpress.com/2017/01/24/how-to-build-hash-keys-in-oracle/">How to Build Hash Keys in Oracle</a>), and they were stored in CHAR(40) columns. For the star schemas, all key columns on the dimension and fact tables were created as CHAR(40) columns, too.</p> <p>To simulate this situation, I prepared a demo script for the <a href="https://danischnider.wordpress.com/2017/07/12/trivadis-performance-days-2017/">Trivadis Performance Days</a> in September. I neither needed an Exadata platform nor a huge data warehouse with Data Vault to show the behavior of Oracle Database In-Memory. Instead, I explained it with the star schema tables of Oracle’s “Sales History” (SH) demo schema. Because not all of you attended the Performance Days (you missed something!), here an explanation of this demo use case.</p> <h1>Preparation Steps</h1> <p>Instead of loading the star schema from a Data Vault schema, I just create a copy of the dimension and fact tables of the SH schema. For the three dimension tables CUSTOMERS, PRODUCTS and TIMES, I create an additional column which contains the hash value of the original primary key (I know, that’s not the idea of a hash key in Data Vault, its just to simulate the situation). For the fact table SALES, a hash value is calculated for each of the dimension keys.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CREATE TABLE customers_hash </span>INMEMORY</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AS</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT CAST(STANDARD_HASH(cust_id) AS CHAR(40)) AS cust_hash</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , c.* FROM customers c;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">CREATE TABLE products_hash INMEMORY</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AS</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT CAST(STANDARD_HASH(prod_id) AS CHAR(40)) AS prod_hash</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , p.* FROM products p;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">CREATE TABLE times_hash INMEMORY</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AS</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT CAST(STANDARD_HASH(time_id) AS CHAR(40)) AS time_hash</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , t.* FROM times t;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">CREATE TABLE sales_hash INMEMORY</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AS</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT CAST(STANDARD_HASH(prod_id) AS CHAR(40)) AS prod_hash</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , CAST(STANDARD_HASH(cust_id) AS CHAR(40)) AS cust_hash</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , CAST(STANDARD_HASH(time_id) AS CHAR(40)) AS time_hash</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , prod_id</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , cust_id</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , time_id</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , quantity_sold</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , amount_sold</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM sales;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>Before running some queries on the copied star schema, I change some configuration settings. The first  two parameters are set to avoid “surprises” with the adaptive features of the optimizer in Oracle 12.2. The undocumented parameter <em>“_optimizer_vector_min_fact_rows”</em> is used to reduce the threshold for a Vector Transformation. By default, Vector Transformations are only considered by the optimizer if a fact table has more than 10 million rows. The SALES table has less than 1 million rows. Finally, the shared pool is flushed to initialize the demo case.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><br /></span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER SESSION SET optimizer_adaptive_plans = FALSE;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;">ALTER SESSION SET optimizer_adaptive_statistics = FALSE;</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;">ALTER SESSION SET &#8220;_optimizer_vector_min_fact_rows&#8221; = 100000;</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;">ALTER SYTEM FLUSH SHARD_POOL;</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <div> </div> <h1>Join on Numeric Keys</h1> <p>The following SQL statement is a typical query on a star schema that joins the fact table with three dimension tables and applies a filter on each of the dimensions. In this case, the numeric surrogate keys are used as join columns.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT /* JOIN NUMERIC KEYS */</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>       c.cust_credit_limit</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , p.prod_name</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , SUM(s.amount_sold)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM sales_hash s</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><span style="color:#fff900;">  JOIN products_hash p  ON </span><span><span style="color:#f6fff5;"><strong>(p.prod_id = s.prod_id)</strong></span></span></span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><span style="color:#fff900;">  JOIN customers_hash c ON </span><span style="color:#f6fff5;"><strong>(</strong><strong>c.cust_id = s.cust_id)</strong></span></span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><span style="color:#fff900;">  JOIN times_hash t ON </span><span style="color:#f6fff5;"><strong>(t.time_id = s.time_id)</strong></span></span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> WHERE p.prod_category = &#8216;Photo&#8217;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>   AND c.cust_credit_limit &lt; 50000</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>   AND t.calendar_year in (2000, 2001)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>GROUP BY c.cust_credit_limit, p.prod_name</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>The estimated costs of the first execution are quite high (5860). This is because the tables are not yet populated in the In-Memory column store (IMCS). Note that the optimizer decides to use a Vector Transformation for this query.</p> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"><span>                                                                                                                                                                                                        <br /></span>------------------------------------------------------------------------------------------------------------------------------------------------------                                                  <br />| Id  | Operation                                | Name                      | Starts | E-Rows | Cost (%CPU)| A-Rows |   A-Time   | Buffers | Reads  |                                                  <br />------------------------------------------------------------------------------------------------------------------------------------------------------                                                  <br /><span>|   0 | SELECT STATEMENT                         |                           |      1 |        |  </span><span style="color:#f6fff5;">5860</span><span> (100)|     80 |00:00:00.53 |   21350 |  21292 |                                                  <br /></span>|   1 |  TEMP TABLE TRANSFORMATION               |                           |      1 |        |            |     80 |00:00:00.53 |   21350 |  21292 |                                                  <br />|   2 |   LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D6618_65F13C |      1 |        |            |      0 |00:00:00.01 |      12 |      3 |                                                  <br />|   3 |    HASH GROUP BY                         |                           |      1 |     14 |     4  (25)|     10 |00:00:00.01 |      11 |      3 |                                                  <br />|   4 |     KEY VECTOR CREATE BUFFERED           | :KV0000                   |      1 |     14 |     3   (0)|     10 |00:00:00.01 |      11 |      3 |                                                  <br />|*  5 |      TABLE ACCESS INMEMORY FULL          | PRODUCTS_HASH             |      1 |     14 |     3   (0)|     10 |00:00:00.01 |      11 |      3 |                                                  <br />|   6 |   LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D6619_65F13C |      1 |        |            |      0 |00:00:00.04 |    1860 |   1840 |                                                  <br />|   7 |    HASH GROUP BY                         |                           |      1 |      8 |   513   (1)|      8 |00:00:00.04 |    1860 |   1840 |                                                  <br />|   8 |     KEY VECTOR CREATE BUFFERED           | :KV0001                   |      1 |      8 |   511   (1)|      8 |00:00:00.04 |    1860 |   1840 |                                                  <br />|*  9 |      TABLE ACCESS INMEMORY FULL          | CUSTOMERS_HASH            |      1 |  55500 |   511   (1)|  55500 |00:00:00.03 |    1860 |   1840 |                                                  <br />|  10 |   LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D661A_65F13C |      1 |        |            |      0 |00:00:00.01 |      75 |     63 |                                                  <br />|  11 |    HASH GROUP BY                         |                           |      1 |      1 |    22   (5)|      1 |00:00:00.01 |      75 |     63 |                                                  <br />|  12 |     KEY VECTOR CREATE BUFFERED           | :KV0002                   |      1 |      1 |    21   (0)|      1 |00:00:00.01 |      75 |     63 |                                                  <br />|* 13 |      TABLE ACCESS INMEMORY FULL          | TIMES_HASH                |      1 |    730 |    21   (0)|    731 |00:00:00.01 |      75 |     63 |                                                  <br />|  14 |   HASH GROUP BY                          |                           |      1 |     56 |  5321   (1)|     80 |00:00:00.49 |   19402 |  19386 |                                                  <br />|* 15 |    HASH JOIN                             |                           |      1 |     56 |  5320   (1)|     80 |00:00:00.49 |   19402 |  19386 |                                                  <br />|* 16 |     HASH JOIN                            |                           |      1 |     56 |  5318   (1)|     80 |00:00:00.48 |   19402 |  19386 |                                                  <br />|  17 |      MERGE JOIN CARTESIAN                |                           |      1 |      8 |     4   (0)|      8 |00:00:00.01 |       0 |      0 |                                                  <br />|  18 |       TABLE ACCESS FULL                  | SYS_TEMP_0FD9D661A_65F13C |      1 |      1 |     2   (0)|      1 |00:00:00.01 |       0 |      0 |                                                  <br />|  19 |       BUFFER SORT                        |                           |      1 |      8 |     2   (0)|      8 |00:00:00.01 |       0 |      0 |                                                  <br />|  20 |        TABLE ACCESS FULL                 | SYS_TEMP_0FD9D6619_65F13C |      1 |      8 |     2   (0)|      8 |00:00:00.01 |       0 |      0 |                                                  <br />|  21 |      VIEW                                | VW_VT_197303A2            |      1 |     56 |  5314   (1)|     80 |00:00:00.48 |   19402 |  19386 |                                                  <br />|  22 |       VECTOR GROUP BY                    |                           |      1 |     56 |  5314   (1)|     80 |00:00:00.48 |   19402 |  19386 |                                                  <br />|  23 |        HASH GROUP BY                     |                           |        |     56 |  5314   (1)|        |            |         |        |                                                  <br />|  24 |         KEY VECTOR USE                   | :KV0001                   |      1 |  89332 |  5314   (1)|  62832 |00:00:00.47 |   19402 |  19386 |                                                  <br />|  25 |          KEY VECTOR USE                  | :KV0002                   |      1 |  89332 |  5314   (1)|  62832 |00:00:00.45 |   19402 |  19386 |                                                  <br />|  26 |           KEY VECTOR USE                 | :KV0000                   |      1 |    178K|  5314   (1)|  62832 |00:00:00.44 |   19402 |  19386 |                                                  <br />|* 27 |            TABLE ACCESS INMEMORY FULL    | SALES_HASH                |      1 |    918K|  5314   (1)|  62832 |00:00:00.43 |   19402 |  19386 |                                                  <br />|  28 |     TABLE ACCESS FULL                    | SYS_TEMP_0FD9D6618_65F13C |      1 |     14 |     2   (0)|     10 |00:00:00.01 |       0 |      0 |                                                  <br />------------------------------------------------------------------------------------------------------------------------------------------------------                                                  <br /><br />                                                                                                                                                                                                        <br />Predicate Information (identified by operation id):                                                                                                                                                     <br />---------------------------------------------------                                                                                                                                                     <br />                                                                                                                                                                                                        <br />   5 - inmemory("P"."PROD_CATEGORY"='Photo')                                                                                                                                                            <br />       filter("P"."PROD_CATEGORY"='Photo')                                                                                                                                                              <br />   9 - inmemory("C"."CUST_CREDIT_LIMIT"&lt;50000)                                                                                                                                                          <br />       filter("C"."CUST_CREDIT_LIMIT"&lt;50000)                                                                                                                                                            <br />  13 - inmemory(("T"."CALENDAR_YEAR"=2000 OR "T"."CALENDAR_YEAR"=2001))                                                                                                                                 <br />       filter(("T"."CALENDAR_YEAR"=2000 OR "T"."CALENDAR_YEAR"=2001))                                                                                                                                   <br />  15 - access("ITEM_14"=INTERNAL_FUNCTION("C0") AND "ITEM_15"="C2")                                                                                                                                     <br />  16 - access("ITEM_10"=INTERNAL_FUNCTION("C0") AND "ITEM_11"="C2" AND "ITEM_12"=INTERNAL_FUNCTION("C0") AND "ITEM_13"="C2")                                                                            <br />  27 - inmemory((SYS_OP_KEY_VECTOR_FILTER("S"."PROD_ID",:KV0000) AND SYS_OP_KEY_VECTOR_FILTER("S"."TIME_ID",:KV0002) AND                                                                                <br />              SYS_OP_KEY_VECTOR_FILTER("S"."CUST_ID",:KV0001)))                                                                                                                                         <br />       filter((SYS_OP_KEY_VECTOR_FILTER("S"."PROD_ID",:KV0000) AND SYS_OP_KEY_VECTOR_FILTER("S"."TIME_ID",:KV0002) AND                                                                                  <br />              SYS_OP_KEY_VECTOR_FILTER("S"."CUST_ID",:KV0001)))                                                                                                                                         <br />                                                                                                                                                                                                        <br />Note                                                                                                                                                                                                    <br />-----                                                                                                                                                                                                   <br /><span>   - </span><span style="color:#f6fff5;">vector transformation used for this statement</span><span>                                                                                                                                                      <br /></span>                                                                                                                                                                                                        </pre> <p>I execute the statement a second and a third time. The execution plan is still the same, but the costs are now lower (755) because the data of all tables is available in the IMCS.</p> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"><span>                                                                                                                                                                                                        <br /></span>---------------------------------------------------------------------------------------------------------------------------------------------                                                           <br />| Id  | Operation                                | Name                      | Starts | E-Rows | Cost (%CPU)| A-Rows |   A-Time   | Buffers |                                                           <br />---------------------------------------------------------------------------------------------------------------------------------------------                                                           <br /><span>|   0 | SELECT STATEMENT                         |                           |      1 |        |   </span><span style="color:#f6fff5;">755</span><span> (100)|     80 |00:00:00.10 |    1960 |                                                           <br /></span>|   1 |  TEMP TABLE TRANSFORMATION               |                           |      1 |        |            |     80 |00:00:00.10 |    1960 |                                                           <br /> <br />...                                                                                                                                                                                                        <br /> <br />Note                                                                                                                                                                                                    <br />-----                                                                                                                                                                                                   <br /><span>   - </span><span style="color:#f6fff5;">statistics feedback used for this statement</span><span>                                                                                                                                                        <br /></span><span>   - </span><span style="color:#f6fff5;">vector transformation used for this statement </span><span>                                                                                                                                                     <br /></span>                                                                                                                                                                                                        </pre> <div> <p>The following query on the shared pool shows the costs of the first and the following executions:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">SELECT sql_id, child_number, executions, optimizer_cost, elapsed_time</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , SUBSTR(sql_text, 8, 23)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM v$sql</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> WHERE sql_text LIKE &#8216;%/* JOIN %&#8217; AND sql_text NOT LIKE &#8216;%v$sql%&#8217;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ORDER BY last_load_time;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SQL_ID        CHILD_NUMBER EXECUTIONS OPTIMIZER_COST ELAPSED_TIME SUBSTR(SQL_TEXT,8,23)  </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>9jbp7kkprg88d            0          1           5860       616555 /* JOIN NUMERIC KEYS */</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>9jbp7kkprg88d            1          2            755       226056 /* JOIN NUMERIC KEYS */</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p> </p> <h1>Join on Hash Keys</h1> <p>Now, I repeat the same demo case again, but this time with the hash keys as join columns. Before running the following query, I recreated the tables again, and flushed the shared pool to avoid any side effects from the previous demo case. The following SQL statement is almost identical to the previous one, except for the join columns.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT /* JOIN HASH KEYS */</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>       c.cust_credit_limit</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , p.prod_name</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , SUM(s.amount_sold)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM sales_hash s</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><span style="color:#fff900;">  JOIN products_hash p  ON </span><span style="color:#f6fff5;"><strong>(p.prod_hash = s.prod_hash)</strong></span></span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><span style="color:#fff900;">  JOIN customers_hash c ON </span><span style="color:#f6fff5;"><strong>(c.cust_hash = s.cust_hash)</strong></span></span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><span style="color:#fff900;">  JOIN times_hash t ON </span><span style="color:#f6fff5;"><strong>(t.time_hash = s.time_hash)</strong></span></span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> WHERE p.prod_category = &#8216;Photo&#8217;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>   AND c.cust_credit_limit &lt; 50000</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>   AND t.calendar_year in (2000, 2001)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>GROUP BY c.cust_credit_limit, p.prod_name</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>Even the execution plan looks almost the same, except for the costs that are a bit higher for the first execution (7164 instead of 5860). </p> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"><span>                                                                                                                                                                                                        <br /></span>------------------------------------------------------------------------------------------------------------------------------------------------------                                                  <br />| Id  | Operation                                | Name                      | Starts | E-Rows | Cost (%CPU)| A-Rows |   A-Time   | Buffers | Reads  |                                                  <br />------------------------------------------------------------------------------------------------------------------------------------------------------                                                  <br /><span>|   0 | SELECT STATEMENT                         |                           |      1 |        |  </span><span style="color:#f6fff5;">7164</span><span> (100)|     80 |00:00:00.51 |   21470 |  21292 |                                                  <br /></span>|   1 |  TEMP TABLE TRANSFORMATION               |                           |      1 |        |            |     80 |00:00:00.51 |   21470 |  21292 |                                                  <br />|   2 |   LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D664B_65F13C |      1 |        |            |      0 |00:00:00.01 |      12 |      3 |                                                  <br />|   3 |    HASH GROUP BY                         |                           |      1 |     14 |   104  (98)|     10 |00:00:00.01 |      11 |      3 |                                                  <br />|   4 |     KEY VECTOR CREATE BUFFERED           | :KV0000                   |      1 |     14 |   103  (98)|     10 |00:00:00.01 |      11 |      3 |                                                  <br />|*  5 |      TABLE ACCESS INMEMORY FULL          | PRODUCTS_HASH             |      1 |     14 |     3   (0)|     10 |00:00:00.01 |      11 |      3 |                                                  <br />|   6 |   LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D664C_65F13C |      1 |        |            |      0 |00:00:00.09 |    1860 |   1840 |                                                  <br />|   7 |    HASH GROUP BY                         |                           |      1 |      8 |   726  (30)|      8 |00:00:00.09 |    1860 |   1840 |                                                  <br />|   8 |     KEY VECTOR CREATE BUFFERED           | :KV0001                   |      1 |      8 |   724  (30)|      8 |00:00:00.09 |    1860 |   1840 |                                                  <br />|*  9 |      TABLE ACCESS INMEMORY FULL          | CUSTOMERS_HASH            |      1 |  55500 |   511   (1)|  55500 |00:00:00.03 |    1860 |   1840 |                                                  <br />|  10 |   LOAD AS SELECT (CURSOR DURATION MEMORY)| SYS_TEMP_0FD9D664D_65F13C |      1 |        |            |      0 |00:00:00.01 |     195 |     63 |                                                  <br />|  11 |    HASH GROUP BY                         |                           |      1 |      1 |   123  (83)|      1 |00:00:00.01 |     195 |     63 |                                                  <br />|  12 |     KEY VECTOR CREATE BUFFERED           | :KV0002                   |      1 |      1 |   122  (83)|      1 |00:00:00.01 |      75 |     63 |                                                  <br />|* 13 |      TABLE ACCESS INMEMORY FULL          | TIMES_HASH                |      1 |    730 |    21   (0)|    731 |00:00:00.01 |      75 |     63 |                                                  <br />|  14 |   HASH GROUP BY                          |                           |      1 |     56 |  6211  (15)|     80 |00:00:00.40 |   19402 |  19386 |                                                  <br />|* 15 |    HASH JOIN                             |                           |      1 |     56 |  6210  (15)|     80 |00:00:00.40 |   19402 |  19386 |                                                  <br />|  16 |     TABLE ACCESS FULL                    | SYS_TEMP_0FD9D664B_65F13C |      1 |     14 |     2   (0)|     10 |00:00:00.01 |       0 |      0 |                                                  <br />|* 17 |     HASH JOIN                            |                           |      1 |     56 |  6208  (15)|     80 |00:00:00.40 |   19402 |  19386 |                                                  <br />|  18 |      MERGE JOIN CARTESIAN                |                           |      1 |      8 |     4   (0)|      8 |00:00:00.01 |       0 |      0 |                                                  <br />|  19 |       TABLE ACCESS FULL                  | SYS_TEMP_0FD9D664D_65F13C |      1 |      1 |     2   (0)|      1 |00:00:00.01 |       0 |      0 |                                                  <br />|  20 |       BUFFER SORT                        |                           |      1 |      8 |     2   (0)|      8 |00:00:00.01 |       0 |      0 |                                                  <br />|  21 |        TABLE ACCESS FULL                 | SYS_TEMP_0FD9D664C_65F13C |      1 |      8 |     2   (0)|      8 |00:00:00.01 |       0 |      0 |                                                  <br />|  22 |      VIEW                                | VW_VT_197303A2            |      1 |     56 |  6204  (15)|     80 |00:00:00.40 |   19402 |  19386 |                                                  <br />|  23 |       VECTOR GROUP BY                    |                           |      1 |     56 |  6204  (15)|     80 |00:00:00.40 |   19402 |  19386 |                                                  <br />|  24 |        HASH GROUP BY                     |                           |        |     56 |  6204  (15)|        |            |         |        |                                                  <br />|  25 |         KEY VECTOR USE                   | :KV0001                   |      1 |  89332 |  6180  (15)|  62832 |00:00:00.39 |   19402 |  19386 |                                                  <br />|  26 |          KEY VECTOR USE                  | :KV0002                   |      1 |  89332 |  5891  (10)|    422K|00:00:00.32 |   19402 |  19386 |                                                  <br />|  27 |           KEY VECTOR USE                 | :KV0000                   |      1 |    178K|  5602   (6)|    422K|00:00:00.26 |   19402 |  19386 |                                                  <br />|* 28 |            TABLE ACCESS INMEMORY FULL    | SALES_HASH                |      1 |    918K|  5314   (1)|    422K|00:00:00.20 |   19402 |  19386 |                                                  <br />------------------------------------------------------------------------------------------------------------------------------------------------------                                                  <br />                                                                                                                                                                                                        <br />Predicate Information (identified by operation id):                                                                                                                                                     <br />---------------------------------------------------                                                                                                                                                     <br />                                                                                                                                                                                                        <br />   5 - inmemory("P"."PROD_CATEGORY"='Photo')                                                                                                                                                            <br />       filter("P"."PROD_CATEGORY"='Photo')                                                                                                                                                              <br />   9 - inmemory("C"."CUST_CREDIT_LIMIT"&lt;50000)                                                                                                                                                          <br />       filter("C"."CUST_CREDIT_LIMIT"&lt;50000)                                                                                                                                                            <br />  13 - inmemory(("T"."CALENDAR_YEAR"=2000 OR "T"."CALENDAR_YEAR"=2001))                                                                                                                                 <br />       filter(("T"."CALENDAR_YEAR"=2000 OR "T"."CALENDAR_YEAR"=2001))                                                                                                                                   <br />  15 - access("ITEM_14"=INTERNAL_FUNCTION("C0") AND "ITEM_15"="C2")                                                                                                                                     <br />  17 - access("ITEM_10"=INTERNAL_FUNCTION("C0") AND "ITEM_11"="C2" AND "ITEM_12"=INTERNAL_FUNCTION("C0") AND "ITEM_13"="C2")                                                                            <br />  28 - inmemory((SYS_OP_KEY_VECTOR_FILTER("S"."PROD_HASH",:KV0000) AND SYS_OP_KEY_VECTOR_FILTER("S"."TIME_HASH",:KV0002) AND                                                                            <br />              SYS_OP_KEY_VECTOR_FILTER("S"."CUST_HASH",:KV0001)))                                                                                                                                       <br />       filter((SYS_OP_KEY_VECTOR_FILTER("S"."PROD_HASH",:KV0000) AND SYS_OP_KEY_VECTOR_FILTER("S"."TIME_HASH",:KV0002) AND                                                                              <br />              SYS_OP_KEY_VECTOR_FILTER("S"."CUST_HASH",:KV0001)))                                                                                                                                       <br />                                                                                                                                                                                                        <br />Note                                                                                                                                                                                                    <br />-----                                                                                                                                                                                                   <br /><span>   - </span><span style="color:#f6fff5;">vector transformation used for this statement</span><span>                                                                                                                                                      <br /></span>                                                                                                                                                                                                        </pre> <div><span><br /></span></div> <p>Again, I execute the statement a second and a third time to see the impact on the costs. But in this case, we see a surprise: No Vector Transformation is used anymore. Instead, the optimizer decides to use an In-Memory join with bloom filters (<em>:BFxxxx</em> in the execution plan). The costs are similar to those in the second/third execution of the previous demo case. But the execution plan changed.</p> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"><span>                                                                                                                                                                                                        <br /></span>-----------------------------------------------------------------------------------------------------------------------------                                                                           <br />| Id  | Operation                           | Name           | Starts | E-Rows | Cost (%CPU)| A-Rows |   A-Time   | Buffers |                                                                           <br />-----------------------------------------------------------------------------------------------------------------------------                                                                           <br /><span>|   0 | SELECT STATEMENT                    |                |      1 |        |   </span><span style="color:#f6fff5;">769</span><span> (100)|     80 |00:00:00.21 |    1967 |                                                                           <br /></span>|   1 |  HASH GROUP BY                      |                |      1 |     16 |   769   (5)|     80 |00:00:00.21 |    1967 |                                                                           <br />|*  2 |   HASH JOIN                         |                |      1 |     16 |   768   (5)|  46895 |00:00:00.20 |    1967 |                                                                           <br />|   3 |    JOIN FILTER CREATE               | :BF0000        |      1 |     16 |   257  (15)|  46895 |00:00:00.12 |     104 |                                                                           <br />|*  4 |     HASH JOIN                       |                |      1 |     16 |   257  (15)|  46895 |00:00:00.12 |     104 |                                                                           <br />|   5 |      JOIN FILTER CREATE             | :BF0001        |      1 |     16 |   236  (16)|  75064 |00:00:00.10 |      26 |                                                                           <br />|*  6 |       HASH JOIN                     |                |      1 |     16 |   236  (16)|  75064 |00:00:00.09 |      26 |                                                                           <br />|   7 |        JOIN FILTER CREATE           | :BF0002        |      1 |     14 |     3   (0)|     10 |00:00:00.01 |      11 |                                                                           <br />|*  8 |         TABLE ACCESS INMEMORY FULL  | PRODUCTS_HASH  |      1 |     14 |     3   (0)|     10 |00:00:00.01 |      11 |                                                                           <br />|   9 |        VIEW                         | VW_GBC_17      |      1 |     80 |   233  (16)|  75064 |00:00:00.08 |      12 |                                                                           <br />|  10 |         HASH GROUP BY               |                |      1 |     80 |   233  (16)|  75064 |00:00:00.08 |      12 |                                                                           <br />|  11 |          JOIN FILTER USE            | :BF0002        |      1 |    918K|   208   (6)|  95509 |00:00:00.01 |      12 |                                                                           <br />|* 12 |           TABLE ACCESS INMEMORY FULL| SALES_HASH     |      1 |    918K|   208   (6)|  95509 |00:00:00.01 |      12 |                                                                           <br />|  13 |      JOIN FILTER USE                | :BF0001        |      1 |    730 |    21   (0)|    494 |00:00:00.01 |      75 |                                                                           <br />|* 14 |       TABLE ACCESS INMEMORY FULL    | TIMES_HASH     |      1 |    730 |    21   (0)|    494 |00:00:00.01 |      75 |                                                                           <br />|  15 |    JOIN FILTER USE                  | :BF0000        |      1 |  55500 |   511   (1)|   7615 |00:00:00.03 |    1860 |                                                                           <br />|* 16 |     TABLE ACCESS INMEMORY FULL      | CUSTOMERS_HASH |      1 |  55500 |   511   (1)|   7615 |00:00:00.02 |    1860 |                                                                           <br />-----------------------------------------------------------------------------------------------------------------------------                                                                           <br />                                                                                                                                                                                                        <br />Predicate Information (identified by operation id):                                                                                                                                                     <br />---------------------------------------------------                                                                                                                                                     <br />                                                                                                                                                                                                        <br />   2 - access("C"."CUST_HASH"="ITEM_2")                                                                                                                                                                 <br />   4 - access("T"."TIME_HASH"="ITEM_3")                                                                                                                                                                 <br />   6 - access("P"."PROD_HASH"="ITEM_1")                                                                                                                                                                 <br />   8 - inmemory("P"."PROD_CATEGORY"='Photo')                                                                                                                                                            <br />       filter("P"."PROD_CATEGORY"='Photo')                                                                                                                                                              <br />  12 - inmemory(SYS_OP_BLOOM_FILTER(:BF0002,"S"."PROD_HASH"))                                                                                                                                           <br />       filter(SYS_OP_BLOOM_FILTER(:BF0002,"S"."PROD_HASH"))                                                                                                                                             <br />  14 - inmemory((INTERNAL_FUNCTION("T"."CALENDAR_YEAR") AND SYS_OP_BLOOM_FILTER(:BF0001,"T"."TIME_HASH")))                                                                                              <br />       filter((INTERNAL_FUNCTION("T"."CALENDAR_YEAR") AND SYS_OP_BLOOM_FILTER(:BF0001,"T"."TIME_HASH")))                                                                                                <br />  16 - inmemory(("C"."CUST_CREDIT_LIMIT"&lt;50000 AND SYS_OP_BLOOM_FILTER(:BF0000,"C"."CUST_HASH")))                                                                                                       <br />       filter(("C"."CUST_CREDIT_LIMIT"&lt;50000 AND SYS_OP_BLOOM_FILTER(:BF0000,"C"."CUST_HASH")))                                                                                                         <br /> <br />Note                                                                                                                                                                                                    <br />-----                                                                                                                                                                                                   <br /><span>   - </span><span style="color:#f6fff5;">statistics feedback used for this statement<br /></span>                                                                                                                                                                                                        </pre> <p>The next step is to enforce the Vector Transformation with a hint. That’s what I also tried in the real project environment.</p> <div> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span style="color:#fff900;">SELECT </span><span style="color:#f6fff5;"><strong>/*+ vector_transform */</strong></span><span style="color:#fff900;"> /* JOIN HASH KEYS */</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>       c.cust_credit_limit</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , p.prod_name</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , SUM(s.amount_sold)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM sales_hash s</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  JOIN products_hash p  ON (p.prod_hash = s.prod_hash)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  JOIN customers_hash c ON (c.cust_hash = s.cust_hash)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  JOIN times_hash t ON (t.time_hash = s.time_hash)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> WHERE p.prod_category = &#8216;Photo&#8217;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>   AND c.cust_credit_limit &lt; 50000</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>   AND t.calendar_year in (2000, 2001)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>GROUP BY c.cust_credit_limit, p.prod_name</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>Although this works, the costs are higher than with bloom filters. This is the reasons why the optimizer decided before not to use a Vector Transformation.</p> <div> <pre style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"><span>                                                                                                                                                                                                        <br /></span>---------------------------------------------------------------------------------------------------------------------------------------------                                                           <br />| Id  | Operation                                | Name                      | Starts | E-Rows | Cost (%CPU)| A-Rows |   A-Time   | Buffers |                                                           <br />---------------------------------------------------------------------------------------------------------------------------------------------                                                           <br /><span>|   0 | SELECT STATEMENT                         |                           |      1 |        |  </span><span style="color:#f6fff5;">1547</span><span> (100)|     80 |00:00:00.03 |      49 |                                                           <br /></span>|   1 |  TEMP TABLE TRANSFORMATION               |                           |      1 |        |            |     80 |00:00:00.03 |      49 |                                                           <br /> <br />...                                                                                                                                <br />                                                                                                                                                                                                        <br />Note                                                                                                                                                                                                    <br />-----                                                                                                                                                                                                   <br /><span>   - </span><span style="color:#f6fff5;">vector transformation used for this statement</span><span>                                                                                                                                                      <br /></span>                                                                                                                                                                                                        </pre> <p><span>The query on the shared pool shows that the costs for the Vector Transformation decreased from the first (7164) to the subsequent execution (1547), but are higher than the costs without Vector Transformation (769).</span></p> <div> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT sql_id, child_number, executions, optimizer_cost, elapsed_time</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>     , SUBSTR(sql_text, 8, 23)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM v$sql</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> WHERE sql_text LIKE &#8216;%/* JOIN %&#8217; AND sql_text NOT LIKE &#8216;%v$sql%&#8217;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ORDER BY last_load_time;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SQL_ID        CHILD_NUMBER EXECUTIONS OPTIMIZER_COST ELAPSED_TIME SUBSTR(SQL_TEXT,8,23)  </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>94qxq84qu28yx            0          1           7164       781576 /* JOIN HASH KEYS */   </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>94qxq84qu28yx            1          2            769       390925 /* JOIN HASH KEYS */   </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>g64vm12jmmtn3            0          1           1547       104970 /*+ vector_transform */</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <div> </div> </div> <h1>Conclusion</h1> <p>It seems that Vector Transformations are much more expensive when the join columns are larger than a NUMBER or a DATE column. This is the case when hash keys or any natural keys (e.g. long codes or descriptions) are used as primary keys of the dimension tables.</p> <p>The solution in the customer project was to replace the hash keys in the star schema with numeric sequence numbers. Of course, this needs some additional lookups when loading the data mart tables, but after this change, Vector Transformation was used as expected, and the performance with Oracle Database In-Memory was much better than before.</p> <p>Does this mean that hash keys should not be used at all? I know that some people would like to hear that, other people definitely not. From my point of view, it depends (yes, I am a consultant):</p> <ul> <li>If you do not use the Oracle Database In-Memory option, there is no big difference in performance between numeric keys and hash keys. So, query performance is not a reason to use one or the other type of keys.</li> <li>If you use In-Memory for the Data Marts, you should use numeric dimension keys for the star schema tables. In the Core or Data Vault layer, either hash key or numeric keys can be used.</li> <li>If you use In-Memory for the Data Vault tables, you should use numeric keys even in the Data Vault layer. A typical case for this is when you use virtual data marts, i.e. views that select data directly from the Data Vault tables.</li> </ul> <div>For me, the experience in the mentioned customer project showed once more that design patterns are not only related to recommendations in books, but depend on the technology that is used for the concrete implementation.</div> <div> </div> <p><span><br /></span></p> </div> </div> </div><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danischnider.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danischnider.wordpress.com/459/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=danischnider.wordpress.com&#038;blog=80273571&#038;post=459&#038;subd=danischnider&#038;ref=&#038;feed=1" width="1" height="1" /> Dani Schnider http://danischnider.wordpress.com/?p=459 Wed Oct 25 2017 16:20:16 GMT-0400 (EDT) Oracle EPM Cloud: Current, Next & Future https://www.us-analytics.com/hyperionblog/oracle-epm-cloud-current-next-future <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/oracle-epm-cloud-current-next-future" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/oracle%20epm%20cloud%20current%20next%20future.jpg?t=1512966730140" alt="oracle epm cloud current next future.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>With the Oracle EPM Cloud, you can look forward to new updates every month — from fixed defects to significant new features. It’s great to know your tool is constantly being improved, but it still leaves you wondering, “what will it be like in a few years?”</p> <p>Fortunately, Oracle has given us an update of what’s to come. This is great news for current EPM cloud users planning for the future, and those considering a move to the cloud.</p> <p>In this blog post, we’ll look at…</p> <ul> <li>What makes up the Oracle EPM Cloud</li> <li>The Enterprise Performance Reporting Cloud</li> <li>Intelligent Process Automation</li> <li>The Current, Next &amp; Future roadmap of the Oracle EPM Cloud</li> </ul> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Foracle-epm-cloud-current-next-future&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/oracle-epm-cloud-current-next-future Wed Oct 25 2017 16:11:10 GMT-0400 (EDT) Announcing the 2018-2019 ODTUG Board of Directors http://www.odtug.com/p/bl/et/blogaid=750&source=1 The wait is over! After fierce campaigning and abundant votes, we are excited to announce that the ODTUG Board of Directors election results are in! Congratulations to the newly elected members of the ODTUG Board of Directors! ODTUG http://www.odtug.com/p/bl/et/blogaid=750&source=1 Wed Oct 25 2017 14:50:55 GMT-0400 (EDT) Using an Excel Spreadsheet as a DV Desktop Data Source http://blog.performancearchitects.com/wp/2017/10/25/using-an-excel-spreadsheet-as-a-dv-desktop-data-source/ <p>Author: Cameron Ross, Performance Architects</p> <p><a href="http://www.oracle.com/technetwork/middleware/oracle-data-visualization/index.html">Oracle Data Visualization (DV) Desktop</a> allows you to bring in your own data from an Excel file and to use this data as a source for visualizations.  In this case, I compiled a basic spreadsheet of sample Major League Baseball (MLB) attendance data. I uploaded this content to DV Desktop and created visualizations using the data as a demonstration of how you can do this:</p> <ol> <li>Start up the “DV Desktop” tool and go to the “Create Project” link:<br /> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-1.png"><img class="alignnone size-medium wp-image-2157" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-1-300x157.png" alt="" width="300" height="157" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-1-300x157.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-1-768x401.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-1-1024x535.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-1-624x326.png 624w" sizes="(max-width: 300px) 100vw, 300px" /></a></li> <li>Once there, it prompts for a data source. Select the “Create Data Source” button in the top right corner:<br /> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-2.png"><img class="alignnone size-medium wp-image-2156" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-2-300x211.png" alt="" width="300" height="211" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-2-300x211.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-2-768x541.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-2-1024x721.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-2-624x440.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-2.png 1404w" sizes="(max-width: 300px) 100vw, 300px" /></a></li> <li>After finding the source Excel file location, DV Desktop quickly looks at the data and recommends what would be the best data type for each column. In some cases, the user might have to go in and change those data types. In this case, the “Attendance” column came in as an attribute column with an integer data type. To change this, you can select the “Settings” icon when you hover over the column name. I changed the “Attendance” column to be treated as a measure so that I could build visualizations from the data.<br /> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-3.png"><img class="alignnone size-medium wp-image-2155" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-3-300x148.png" alt="" width="300" height="148" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-3-300x148.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-3-768x380.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-3-1024x507.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-3-624x309.png 624w" sizes="(max-width: 300px) 100vw, 300px" /></a></li> <li>After setting all of the columns to the correct data type to make sure the data is treated correctly (“Measure” or “Attribute”), I clicked the “Add” button in the top right corner:<br /> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-4.png"><img class="alignnone size-medium wp-image-2154" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-4-300x70.png" alt="" width="300" height="70" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-4-300x70.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-4-768x180.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-4-1024x239.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-4-624x146.png 624w" sizes="(max-width: 300px) 100vw, 300px" /></a></li> <li>The application creates a list of columns from the Excel file in your “Data Elements” tab on the left-hand side of your screen:<br /> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-5.png"><img class="alignnone size-medium wp-image-2153" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-5-182x300.png" alt="" width="182" height="300" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-5-182x300.png 182w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-5.png 568w" sizes="(max-width: 182px) 100vw, 182px" /></a></li> <li>Next, I built a bar graph showing the attendance in the MLB from the year 2016:<br /> <a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-6.png"><img class="alignnone size-medium wp-image-2152" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-6-300x188.png" alt="" width="300" height="188" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-6-300x188.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-6-768x482.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-6-1024x643.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-6-624x392.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/10/CR-6.png 1564w" sizes="(max-width: 300px) 100vw, 300px" /></a></li> </ol> <p>In summary, there are many different data sources that DV Desktop can use to create visualizations. Excel spreadsheets provide a very easy way to bring data together into a table and to get started. Whether extending existing data models or creating on-the-fly visualizations, DV Desktop and Excel spreadsheets are a great combination to get the job done.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2151 Wed Oct 25 2017 05:31:10 GMT-0400 (EDT) Hyperion On-Prem: Current, Next & Future https://www.us-analytics.com/hyperionblog/hyperion-on-prem-current-next-future <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/hyperion-on-prem-current-next-future" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Oracle-on-prem-future.jpg?t=1512966730140" alt="Oracle-on-prem-future.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>After Kscope17, we talked about <strong><a href="https://www.us-analytics.com/hyperionblog/the-death-of-hyperion-on-prem-support">what’s going on with Hyperion on-prem support</a></strong> and Oracle’s roadmap for future releases of on-prem products.</p> <p>This month at OpenWorld, Oracle made their plans for what’s coming to Hyperion a little more concrete. In this blog post, we’ll look at the 11.2 plans for Hyperion Planning, HFM, Financial Close Management, and EPMA. You’ll also see a helpful graphic comparing current, next, and future functionality for the EPM suite.</p> <p>But first, we’ll give you a refresher of Oracle’s on-prem strategy and important dates to know.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fhyperion-on-prem-current-next-future&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/hyperion-on-prem-current-next-future Tue Oct 24 2017 13:33:47 GMT-0400 (EDT) Announcing the Second Annual GeekAThon Winners! http://www.odtug.com/p/bl/et/blogaid=749&source=1 ODTUG decided to repurpose the beacons from ODTUG Kscope17 by hosting the second annual ODTUG GeekAThon! A panel of judges chose three winners based on a number of criteria ranging from creativity and innovation to purpose and documentation. We are proud to announce the three winners! ODTUG http://www.odtug.com/p/bl/et/blogaid=749&source=1 Mon Oct 23 2017 11:37:07 GMT-0400 (EDT) How Hyperion Helps with Year-End Close https://www.us-analytics.com/hyperionblog/how-hyperion-helps-with-year-end-close <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/how-hyperion-helps-with-year-end-close" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/how%20hyperion%20helps%20with%20year-end%20close.jpg?t=1512966730140" alt="how hyperion helps with year-end close.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>It’s the beginning of the fourth quarter. You’ve just finished yet another quarter-end close — the last thing you want to think about is year-end.</p> <p>But it’s there, looming over your head, just like all the Christmas shopping that’s coming up <em>fast</em>. But, what if year-end close didn’t have to be so similar to the hellish nightmare that is shopping at the mall in December? What if year-end close could be peaceful?</p> <p>Fortunately, there are tools to help — not just with year-end, but month-end and quarter-end close as well. If you’re shopping for a solution to help you speed up your close process, there are several Oracle tools (on-prem and in the cloud) that you should consider.</p> <p>The Oracle on-prem financial close tools include:</p> <ul> <li><strong><a href="https://www.us-analytics.com/how-to-optimize-your-financial-close-process-using-oracle-fcm-reportable-metrics">Hyperion Financial Close Management (FCM)</a></strong> <ul> <li>Close Manager</li> <li><strong><a href="https://www.us-analytics.com/hyperionblog/the-best-account-reconciliation-tool-oracle-arm-3-reasons-why">Account Reconciliation Manager (ARM)</a></strong></li> <li>Supplemental Data Manager</li> </ul> </li> <li>Hyperion Financial Management (HFM)</li> </ul> <p>The cloud-based Oracle financial close tools include:</p> <ul> <li><span> </span><strong><a href="https://www.us-analytics.com/hyperionblog/faq-account-reconciliation-cloud-service-arcs">Account Reconciliation Cloud Service (ARCS)</a></strong></li> <li><strong><a href="https://www.us-analytics.com/hyperionblog/faq-oracle-financial-consolidation-and-close-cloud-service-fccs">Financial Consolidation and Close Service (FCCS)</a></strong></li> </ul> <p>In this blog post, you’ll get a brief overview of each tool, telling you how they can help you have a stress-free close process. You’ll also find free resources to dive deeper into each tool.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fhow-hyperion-helps-with-year-end-close&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/how-hyperion-helps-with-year-end-close Fri Oct 20 2017 10:59:13 GMT-0400 (EDT) Oracle GoldenGate 12c Release 3 New Feature Parallel Replicat https://gavinsoorma.com/2017/10/oracle-goldengate-12c-release-3-new-feature-parallel-replicat/ <p>One of the new features introduced in GoldenGate 12c Release 3 (12.3.0.1) is the <strong>Parallel Replicat</strong> feature.</p> <p>So now in addition to the Classic Replicat, Co-ordinated Replicat and Integrated Replicat options, we also have another replicat option available as well.</p> <p>The Parallel Replicat on the surface appears to be very similar to the Integrated Replicat in the sense that we can control the number of applier processes manually and also the apply process is auto-tuned as well where additional applier processes are added on the fly based on the workload being performed by the replicat process. This is managed by the Parallel Replicat parameters APPLY_PARALLELISM, MIN_APPLY_PARALLELISM and MAX_APPLY_PARALLELISM.</p> <p>In addition, similar to the EAGER_SIZE which was used in the Integrated Replicat to help define what a &#8216;large&#8217; transaction was, now in the Parallel Replicat we have something quite similar called CHUNK_SIZE.</p> <p>We also have a parameter called SPLIT_TRANS_RECS which we can use to break a large transaction into logically smaller pieces which can then be applied in parallel. Dependencies are managed and maintained as well.</p> <p>But what is different from the Integrated Replicat is that there is no requirement to set the STREAMS_POOL_SIZE  and no Log Miner Server related processing happening inside the database.</p> <p>Let us look at an example of using the Parallel Replicat feature.</p> <p>The example assumes the following:</p> <ul> <li>Oracle database software is 12c Release 2 and the source and target databases have been configured appropriately for Oracle GoldenGate replication</li> <li>Oracle GoldenGate 12c Release 3 Micro Services software has been installed</li> <li>A deployment called test_ogg_123 has been created via Oracle GoldenGate 12.3 Service Manager</li> <li>Credential Store has been configured</li> <li>TRANDATA has been configured at the schema level</li> <li>Checkpoint Table has been created</li> <li>SOURCE and TARGET schemas have been created</li> <li>MYSALES table has been created in both schemas (script below)</li> </ul> <pre>SQL&gt; create table mysales  (id number, flag number ,  product varchar2(20), channel_id number, cust_id number ,  amount_sold number, order_date date, ship_date date) ;</pre> <p>&nbsp;</p> <p>We will see how to use the web interfaces as well as the command line Admin Client to configure Parallel Replicat.</p> <p>&nbsp;</p> <p>Launch Service Manager</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg1.png"><img class="aligncenter size-full wp-image-8002" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg1.png" alt="" width="1443" height="890" srcset="https://gavinsoorma.com/wp-content/uploads/2017/10/gg1.png 1443w, https://gavinsoorma.com/wp-content/uploads/2017/10/gg1-300x185.png 300w, https://gavinsoorma.com/wp-content/uploads/2017/10/gg1-768x474.png 768w, https://gavinsoorma.com/wp-content/uploads/2017/10/gg1-1024x632.png 1024w" sizes="(max-width: 1443px) 100vw, 1443px" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg2.png"><img class="aligncenter size-full wp-image-8026" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg2.png" alt="" width="1656" height="789" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg3.png"><img class="aligncenter size-full wp-image-8025" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg3.png" alt="" width="1682" height="494" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg4.png"><img class="aligncenter size-full wp-image-8024" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg4.png" alt="" width="928" height="772" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg5.png"><img class="aligncenter size-full wp-image-8023" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg5.png" alt="" width="1653" height="645" /></a></p> <p>&nbsp;</p> <p>Create a Classic Extract</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg6.png"><img class="aligncenter size-full wp-image-8022" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg6.png" alt="" width="1750" height="443" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg7.png"><img class="aligncenter size-full wp-image-8021" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg7.png" alt="" width="1759" height="389" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg8.png"><img class="aligncenter size-full wp-image-8020" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg8.png" alt="" width="1567" height="351" /></a></p> <p>Add the MYSALES table to the extract parameter file</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg9.png"><img class="aligncenter size-full wp-image-8019" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg9.png" alt="" width="1380" height="871" /></a></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg10.png"><img class="aligncenter wp-image-8018" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg10.png" alt="" width="1082" height="608" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg11.png"><img class="aligncenter wp-image-8017" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg11.png" alt="" width="1071" height="413" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg12.png"><img class="aligncenter size-full wp-image-8016" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg12.png" alt="" width="1784" height="321" /></a></p> <p>&nbsp;</p> <p>Create the distribution path &#8211; very similar to creating the Extract Pump process in the Classic Architecture.</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg13.png"><img class="aligncenter size-full wp-image-8015" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg13.png" alt="" width="1129" height="906" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg14.png"><img class="aligncenter wp-image-8014" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg14.png" alt="" width="1109" height="890" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg15.png"><img class="aligncenter size-full wp-image-8013" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg15.png" alt="" width="1769" height="460" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Create the <strong>Parallel Replicat. </strong>In this case we are creating a non-integrated Parallel Replicat.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg16.png"><img class="aligncenter size-full wp-image-8012" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg16.png" alt="" width="965" height="372" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg17.png"><img class="aligncenter size-full wp-image-8011" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg17.png" alt="" width="1544" height="868" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg18.png"><img class="aligncenter size-full wp-image-8010" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg18.png" alt="" width="1594" height="310" /></a></p> <p>&nbsp;</p> <p>Add the MYSALES table to the replicat parameter file</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg19.png"><img class="aligncenter size-full wp-image-8009" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg19.png" alt="" width="1595" height="410" /></a></p> <p>&nbsp;</p> <p>We next use the Admin Client to add some other parameters to the replicat parameter file.</p> <p>We are changing the value of the parameter <strong>MAP_PARALLELISM </strong>from the default value of 2 to 4 &#8211; this controls the number of mapper processes which will scan or process the trail file.</p> <p>The default value for APPLY_PARALLELISM is 4 which controls the number of apply processes.</p> <p>The parameter <strong>SPLIT_TRANS_RECS </strong>will break up the transaction into units of 10000 rows each and these will be applied in parallel.<strong><br /> </strong></p> <p>&nbsp;</p> <pre>[oracle@rac03 bin]$ <strong>./adminclient</strong> Oracle GoldenGate Administration Client for Oracle Version 12.3.0.1.0 OGGCORE_12.3.0.1.0_PLATFORMS_170721.0154 Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved. Linux, x64, 64bit (optimized) on Jul 21 2017 07:16:02 Operating system character set identified as UTF-8. OGG (not connected) 1&gt; <strong>connect http://rac03.localdomain:9001 deployment test_ogg_123 as oggadmin password oracle</strong> OGG (http://192.168.56.102:9001 test_ogg_123) 29&gt; <strong>info all</strong> Program     Status      Group       Lag at Chkpt  Time Since Chkpt ADMINSRVR   RUNNING   DISTSRVR    RUNNING   PMSRVR      RUNNING   RECVSRVR    RUNNING   EXTRACT     RUNNING     EXT1        00:00:00      00:00:09    REPLICAT    RUNNING     REP1        00:00:00      00:00:10    OGG (http://192.168.56.102:9001 test_ogg_123) 30&gt; <strong>edit params rep1</strong> replicat rep1 useridalias oggadmin domain OracleGoldenGate <strong>MAP_PARALLELISM 4</strong> <strong>SPLIT_TRANS_RECS 10000</strong> MAP source.mysales, TARGET target.mysales;</pre> <p>&nbsp;</p> <p>Check that the extract and replicat process are both up and running.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg20.png"><img class="aligncenter size-full wp-image-8008" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg20.png" alt="" width="1600" height="914" /></a></p> <p>&nbsp;</p> <p>On the source database, issue the INSERT statement which will populate the MYSALES table with 200,000 rows and commit the transaction.</p> <pre> SQL&gt; <strong>insert into mysales</strong> select rownum, rownum + 1, 'Samsung Galaxy S7', mod(rownum,5), mod(rownum,1000) , 5000, trunc(sysdate - 10000 + mod(rownum,10000)), trunc(sysdate - 9999 + mod(rownum,10000)) from dual connect by level&lt;=2e5 ; 200000 rows created. SQL&gt; <strong>commit;</strong></pre> <p>&nbsp;</p> <p>View the statistics of the extract process &#8211; similar to STATS ext1 LATEST command. Do the same for the Parallel Replicat.<strong><br /> </strong></p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg21.png"><img class="aligncenter size-full wp-image-8007" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg21.png" alt="" width="1548" height="492" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg22.png"><img class="aligncenter wp-image-8006" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg22.png" alt="" width="1379" height="538" /></a></p> <p>&nbsp;</p> <p>Note the position in the trail files the extract and distribution  server process pump1 are writing to.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg23.png"><img class="aligncenter wp-image-8005" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg23.png" alt="" width="1090" height="907" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>We can see that the parallel replicat process is processing trail file <strong>rt000000000</strong> and the location of the trail file now in the Micro Service architecture environment is under the specific deployment name top level folder in the <strong>/var/lib/data</strong> sub-directory.</p> <p>&nbsp;</p> <pre>OGG (http://192.168.56.102:9001 test_ogg_123) 40&gt; <strong>info rep1</strong> No EXTRACT groups found, but some coordinated threads may have been excluded REPLICAT   REP1      Last Started 2017-10-19 16:55   Status RUNNING Parallel Checkpoint Lag       00:00:00 (updated 00:00:02 ago) Process ID           10459 Log Read Checkpoint  File <strong>/u01/app/oracle/test_ogg_123/var/lib/data/rt000000000</strong>                      2017-10-19 21:06:15.715609  RBA <strong>42758112</strong></pre> <p>&nbsp;</p> <p>Connect to the Performance Metrics Server home page from Service Manager home page and we can see the individual performance related metrics for REP1 parallel replicat process as well as the 4 mapper processes REP1M0* and 4 applier processes REP1A0*.</p> <p>&nbsp;</p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg24.png"><img class="aligncenter size-full wp-image-8004" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg24.png" alt="" width="1751" height="706" /></a></p> <p><a href="https://gavinsoorma.com/wp-content/uploads/2017/10/gg25.png"><img class="aligncenter size-full wp-image-8003" src="https://gavinsoorma.com/wp-content/uploads/2017/10/gg25.png" alt="" width="1430" height="833" /></a></p> <p>&nbsp;</p> Gavin Soorma https://gavinsoorma.com/?p=8028 Fri Oct 20 2017 01:31:52 GMT-0400 (EDT) Optimizing OBIEE Performance: How the Experts Do It https://www.us-analytics.com/hyperionblog/optimizing-obiee-performance <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/optimizing-obiee-performance" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/OBIEE%20optimization.jpg?t=1512966730140" alt="OBIEE optimization.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>When you clicked on this blog, you might’ve thought, “…another tutorial about performance tuning.” Well, if you’re looking for an OBIEE tuning guide, this isn’t it.</p> <p>The word “tuning” gets thrown around as a catchall phrase to describe correcting a tool’s performance. We use that same approach when we talk about tuning a car — an action that can refer to a simple oil change or a complete engine overhaul. But, as you can see by that example, tuning doesn’t account for the scope of the task.</p> <p>In our world, it’s important to differentiate <em>tuning </em>from <em>redesigning.</em> Tuning refers to fixing performance issues while the overall design of your tool remains the same. If you must redevelop something in your system that’s going to take a lot of time, you’re definitely not tuning.</p> <p>Why should you make this distinction? It ensures that your team or project manager understands the scope of the project you’re working on. If you make something sound less significant than it is, you’re doing a disservice to yourself and your team.</p> <p>Now that we have the semantics out of the way, we can move on to the meatier stuff — showing you how to optimize (not tune) the design of OBIEE for the best performance.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Foptimizing-obiee-performance&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/optimizing-obiee-performance Thu Oct 19 2017 18:06:53 GMT-0400 (EDT) Using Oracle’s Baseline Validation Tool with OBIEE — Part 1 https://blog.redpillanalytics.com/using-oracles-baseline-validation-tool-with-obiee-part-1-328be6fbb6bc?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bQxpLMOrtIMc-jfArwNi9g.jpeg" /></figure><p>This post is part 1 of 4 about using the Baseline Validation Tool (BVT) with Oracle Business Intelligence (OBIEE).</p><h3>Overview of BVT</h3><p>With the 12c release of OBIEE, Oracle released a new tool called the Baseline Validation Tool or BVT. This tool allows you to run specific tests against your OBIEE reports, dashboards, and BI Publisher objects to quickly find differences between two environments. This might also be called regression testing. BVT is helpful when you are doing an upgrade to OBIEE or when you are doing development and want to verify that you have not inadvertently affected existing reports with your changes.</p><p>While BVT comes with the 12c install, it can be used in 11g or 12c environments. You can even use it to compare two environments as I mentioned if you are doing an upgrade. It’s a simple download and configuration before you can start testing your data and environments, even if you are not on 12c yet.</p><p>When configuring the BVT tests, you’ll specify the catalog folder that you want BVT to run against in both environments. If your catalog is not large, you can run this against your entire shared folder. However, most instances of OBI that I’ve seen have a lot of reports that are not important or not used any more. I prefer to create a new folder for BVT with the critical reports that need testing. Another option is to run BVT multiple times against different folders based on the stakeholders that will be helping with validation or who care about those results. The BVT results are not displayed by catalog folder so it can get messy to read if many non-related reports are tested together.</p><h3>Tests available in BVT</h3><p>There are six tests available in BVT. You can run one or all of them in one test. My caution: be careful enabling too many tests in one run. It will run each report for each test run which can obviously take a long time depending on the number of reports and their average runtime. By default in the config file, all tests are enabled. The first thing I do when creating a new config file is to mark all tests as false.</p><pre>&lt;TestPlugin name=&quot;com.oracle.biee.bvt.plugin.ui&quot; enabled=&quot;false&quot;&gt;</pre><p>Each test has a parameter for CatalogRoot where you can specify which folder you want to run the test on. If you want to run on the entire shared folder, you would specify value=”/shared”.</p><pre>&lt;Parameter name=&quot;CatalogRoot&quot; value=&quot;/shared&quot;/&gt;</pre><h4>Catalog</h4><p>The catalog test compares the metadata of the objects within the tested folder. Most importantly, this checks the permissions of the objects. The following are tested in this plugin test:</p><ul><li>Catalog item targetpath</li><li>Catalog item type</li><li>Catalog item caption</li><li>Catalog item signature</li><li>Some of the catalog ACL attributes that belong to accesscontroltokens, such as account names, account types and permissionMask</li></ul><h4>Reports</h4><p>The reports test exports the results of the analysis to compare the data values returned. This test can export to csv, Excel, and/or PDF. If you choose to export to more than one type, BVT will run the report for each export type. Keep this in mind if you have a lot of long running reports. I typically only run this test exporting to csv and not the others.</p><h4>Logical Query</h4><p><strong>This test plugin was discontinued in the latest version of BVT (version 17.3.12)</strong></p><p>The logical query test will export the logical sql of the report for comparison. This is the sql that you see on the advanced tab when you are editing an analysis. It’s not the physical sql that will be sent to the database.</p><h4>UI</h4><p>The UI test will capture a screenshot of the analyses and dashboards to compare pixel by pixel. This test uses either Firefox or Internet Explorer. You can specify the browser in the config or you can allow it to use the computer’s default browser.</p><p>The comparison of the screen captures between the two environments uses an algorithm to score the differences between the images with a score between 0–1. A value of 1 means the two images are a pixel-by-pixel exact match. This plug-in’s parameters allow you to specify the threshold percentage between 0–1 that you would like to use as a passing value. The default is 0.95 meaning that there must be a 95% match between the screen captures for the test to pass for that report.</p><h4>Dashboard</h4><p>When you run the Dashboard plug-in test, BVT will create XML export files from each dashboard. This export contains the data from the charts and objects on each dashboard page.</p><p>Note: We found an issue when running this test in an 11.1.1.7 environment where the export file included 2 decimal points on the numeric values from the dashboards even though the dashboard itself did not show decimals. If you are upgrading from 11g to 12c, this will cause each report to show as failing the test because of a difference between 11.1.1.7 and 12c in exporting decimals as part of numbers. I’m still working to find a resolution to this issue.</p><h4>BI Publisher</h4><p>To test BI Publisher reports between environments, this plug-in takes a PDF export of the report and compares the PDF exports. This plug-in only works with Oracle BI Publisher reports, not Answers or Analysis Editor created reports.</p><p>If your BI Publisher reports use parameters, you can specify the values you’d like used in your test by creating a URL with the parameter values filled in. For more information about this process, see the BIPub Parameters Input File section in the next post.</p><h4>VA</h4><p>New in the 17.3.12 release of Baseline Validation Tool, the VA plug-in will test your Visual Analyzer (VA) or Data Visualization (DV) projects. This plug-in takes screen captures similar to the UI plug-in for reports. The comparison of the screen captures between the two environments uses an algorithm to score the differences between the images with a score between 0–1. A value of 1 means the two images are a pixel-by-pixel exact match. This plug-in’s parameters allow you to specify the threshold percentage between 0–1 that you would like to use as a passing value. The default is 0.95 meaning that there must be a 95% match between the screen captures for the test to pass for that Data Visualization project.</p><p>This plug-in uses either Mozilla Firefox or Internet Explorer which you can specify in the configuration file.</p><h3>12c Upgrade Baseline Testing</h3><p>One of the best use cases of BVT is when are working on an upgrade project to the latest release such as an upgrade from OBIEE 11g to 12c. To ensure success with BVT in this use case of an upgrade, there are a few things to keep in mind:</p><ul><li>Find a stable environment that you can test against in both versions of 11g and 12c. For example, stop all development in your 11g Dev environment and point it to a stable database instance. Point your 12c environment to that same database instance. If report development is allowed, BVT may show false negatives as it encounters report differences not caused by the upgrade.</li><li>BVT can take a long time to run depending on the size of your catalog. Come up with a testing plan of specific reports and dashboards that will be tested and the priority of testing and resolving issues on the objects in this list. Consider creating a copy of the reports you are testing into a new catalog folder specifically for BVT since it is not easy to run BVT on multiple folders without running on the entire catalog.</li><li>I recommend only running the report, dashboard, and BIP plug-in tests during an upgrade. The catalog test will fail for each report due to ACL differences in out of place upgrades. The UI will fail due to the new look-and-feel of 12c.</li><li>As you resolve differences in your 12c environment, re-run BVT to ensure that the report now passes.</li><li>Copy your BVT comparison results to an Excel file so that you can take notes and show progress as you work through your large catalog of reports. By putting the results into Excel it’ll be easier to share with others also. One downfall, the test results that hyperlink to an export file will not be able to find the export file. A workaround for this is to save the excel file in your BVT folder and keep this BVT folder on a share drive where paths can be maintained and access is shared with other stakeholders.</li></ul><h3>Finding BVT Help</h3><p>Your first option for BVT assistance is to look at the BVTGuide.pdf that comes with the BVT tool download in the docs folder. If that doesn’t help, try Oracle Developer Community Forums or Oracle Support.</p><p>Another option for basic help is just calling the base bat file to get a list of help commands. (For those interested in the text representation of this, see below the image)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/772/1*gw5c1hB5_KptcHjmPAHVRg.png" /></figure><pre>D:\oracle.bi.bvt-17.3.12&gt;bin\obibvt.bat<br>Oracle BI Baseline Validation Tool (17.3.12)</pre><pre>Usage: obibvt<br> -displaytests Displays all tests in all installed plugins<br> -createconfig &lt;filename&gt; Creates a default test run configuration XML<br> -deployment &lt;deploymentname&gt; Deployment Target in the Config XML file that the tests will run against. The -config argument is also required<br> -config &lt;testconfig.xml&gt; Specify the XML file that describes the test configuration. -deployment or -compareresults argument is also required<br> -password &lt;password&gt; The password to be used for UserName<br> -compareresults &lt;folder1&gt; &lt;folder2&gt;<br> Compare results of two test runs. -config is also required</pre><pre>Examples:<br> bin\obibvt.bat -displaytests<br> bin\obibvt.bat -createconfig TestConfig.xml<br> bin\obibvt.bat -config TestConfig.xml -deployment PreUpgrade<br> bin\obibvt.bat -config TestConfig.xml -deployment PreUpgrade -password &lt;password&gt;<br> bin\obibvt.bat -compareresults Results/PreUpgrade Results/PostUpgrade -config TestConfig.xml</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=328be6fbb6bc" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/using-oracles-baseline-validation-tool-with-obiee-part-1-328be6fbb6bc">Using Oracle’s Baseline Validation Tool with OBIEE — Part 1</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Michelle Kolbe https://medium.com/p/328be6fbb6bc Thu Oct 19 2017 15:01:06 GMT-0400 (EDT) KSQL: Streaming SQL for Apache Kafka http://www.rittmanmead.com/blog/2017/10/ksql-streaming-sql-for-apache-kafka/ <img src="http://www.rittmanmead.com/blog/content/images/2017/10/KSQL-Image-1.png" alt="KSQL: Streaming SQL for Apache Kafka"><p>Few weeks back, while I was enjoying my holidays in the south of Italy, I started receiving notifications about an imminent announcement by <a href="https://www.confluent.io">Confluent</a>. Reading the highlights almost (...I said almost) made me willing to go immediately back to work and check all the details about it. <br> The announcement regarded <a href="https://www.confluent.io/blog/ksql-open-source-streaming-sql-for-apache-kafka/">KSQL</a>: a <strong>streaming SQL engine</strong> for Apache Kafka! </p> <p><center> <br> <blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">My office today... not bad! <a href="https://twitter.com/hashtag/sea?src=hash">#sea</a> <a href="https://t.co/A7skHIcplS">pic.twitter.com/A7skHIcplS</a></p>&mdash; Francesco Tisiot (@FTisiot) <a href="https://twitter.com/FTisiot/status/894484493893079040">August 7, 2017</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> <br> </center></p> <p>Before going in detail, lets try to clarify the basics: what is KSQL? Why was it introduced and how does it complement Kafka?</p> <h1 id="whatisksql">What is KSQL?</h1> <p>We have been writing about <a href="https://www.rittmanmead.com/blog/tag/kafka/">Kafka</a> several times, including my <a href="https://www.rittmanmead.com/blog/2017/08/how-was-game-of-thrones-s07-e05-tweet-analysis-with-kafka-bigquery-and-tableau/">recent blogs</a> were I was using it as data hub to capture Game of Thrones tweets and store them in BigQuery in order to do sentiment analysis with Tableau. In all our examples Kafka has been used just for data transportation with any necessary transformation happening in the target datastore like <a href="https://www.rittmanmead.com/blog/2017/08/the-week-after-game-of-thrones-s07-e06-analysis/">BigQuery</a>, with the usage of languages like Python and engines like <a href="https://www.rittmanmead.com/blog/2017/01/getting-started-with-spark-streaming-with-python-and-kafka/">Spark Streaming</a> or directly in the querying tool like <a href="https://www.rittmanmead.com/blog/2017/07/analyzing-wimbledon-twitter-feeds-in-real-time-with-kafka-presto-and-oracle-dvd-v3/">Presto</a>. </p> <p>KSQL enables something really effective: reading, writing and transforming data in real-time and a scale using a semantic already known by the majority of the community working in the data space, the <strong>SQL</strong>!</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/KSQL-Image.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>KSQL is now available as developer preview, but the basic operations like joins, aggregations and event-time windowing are already covered.</p> <h1 id="whatproblemisksqlsolving">What Problem is KSQL Solving?</h1> <p>As anticipated before, KSQL solve the main problem of providing a SQL interface over Kafka, without the need of using external languages like Python or Java. <br> However one could argue that the same problem was solved before by the ETL operations made on the target datastores like Oracle Database or BigQuery. What is the difference then in KSQL approach? What are the benefits? </p> <p>The main difference in my opinion is the concept of <strong>continuous</strong> queries: with KSQL transformations are done continuously as new data arrives in the Kafka topic. On the other side transformations done in a database (or big data platforms like BigQuery) are one off and if new data arrives the same transformation has to be executed again.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/TweetFlow.gif" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>So what is KSQL good for? <a href="https://www.confluent.io/blog/ksql-open-source-streaming-sql-for-apache-kafka/">Confluent's KSQL introduction blog post</a> provides some use cases like real time analytics, security and anomaly detection, online data integration or general application development. From a generic point of view KSQL is what you should use when transformations, integrations and analytics need to happen <strong>on the fly during the data stream</strong>. KSQL provides a way of keeping Kafka as unique datahub: no need of taking out data, transforming and re-inserting in Kafka. Every transformation can be done Kafka using SQL!</p> <p>As mentioned before KSQL is now available on developer preview and the feature/function list is somehow limited compared to more mature SQL products. However in cases where very complex transformations need to happen those can still be solved either via another language like Java or a dedicated ETL (or view) once the data is landed in the destination datastore.</p> <h1 id="howdoesksqlwork">How does KSQL work?</h1> <p>So how does KSQL work under the hood? There are two concepts to keep in mind: streams and tables. A <strong>Stream</strong> is a sequence of structured data, once an event was introduced into a stream it is immutable, meaning that it can't be updated or deleted. Imagine the number of items pushed or pulled from a storage: "e.g. 200 pieces of ProductA were stocked today, while 100 pieces of ProductB were taken out". <br> A <strong>Table</strong> on the other hand represents the current situation based on the events coming from a stream. E.g. what's the overall quantity of stocks for ProductA? Facts in a table are mutable, the quantity of ProductA can be updated or deleted if ProductA is not anymore in stock.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/StreamVSTableAcc.gif" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>KSQL enables the definition of streams and tables via a simple SQL dialect. Various streams and tables coming from different sources can be joined directly in KSQL enabling data combination and transformation on the fly.</p> <p>Each stream or table created in KSQL will be stored in a separate topic, allowing the usage of the usual connectors or scripts to extract the informations from it.</p> <h1 id="ksqlinaction">KSQL in Action</h1> <h2 id="startingksql">Starting KSQL</h2> <p>KSQL can work both in standalone and client-server mode with the first one aimed at development and testing scenarios while the second supporting production environments. <br> With the standalone mode KSQL client and server are hosted on the same machine, in the same JVM. On the other side, in client-server mode, a pool of KSQL server are running on remote machine and the client connects to them over HTTP.</p> <p>For my test purposes I decided to use the standalone mode, the procedure is well explained in <a href="https://github.com/confluentinc/ksql/blob/0.1.x/docs/quickstart/quickstart-non-docker.md#non-docker-setup-for-ksql">confluent documentation</a> and consist in three steps:</p> <ul> <li>Clone the KSQL repository</li> <li>Compile the code</li> <li>Start KSQL using <code>local</code> parameter</li> </ul> <pre><code>./bin/ksql-cli local </code></pre> <h2 id="analysingoowtweets">Analysing OOW Tweets</h2> <p>I'll use for my example the same Twitter producer created for my <a href="https://www.rittmanmead.com/blog/2017/07/analyzing-wimbledon-twitter-feeds-in-real-time-with-kafka-presto-and-oracle-dvd-v3/">Wimbledon post</a>. If you notice I'm not using the Kafka Connect, this is due to KSQL not supporting <code>AVRO</code> formats as of now (remember is still in dev phase?). I had then to rely on the old producer which stored the tweet in <code>JSON</code> format.</p> <p>For my tests I've been filtering the tweets containing <code>OOW17</code> and <code>OOW</code> (Oracle Open World 2017), and as mentioned before, those are coming in <code>JSON</code> format and stored in a Kafka topic named <code>rm.oow</code>. The first step is then to create a <strong>Stream</strong> on top of the topic in order to structure the data before doing any transformation. <br> The guidelines for the stream definition can be found <a href="https://github.com/confluentinc/ksql/blob/0.1.x/docs/syntax-reference.md#syntax-reference">here</a>, the following is a cutdown version of the code used</p> <pre><code>CREATE STREAM twitter_raw ( \ Created_At VARCHAR, \ Id BIGINT, \ Text VARCHAR, \ Source VARCHAR, \ Truncated VARCHAR, \ ... User VARCHAR, \ Retweet VARCHAR, \ Contributors VARCHAR, \ ...) \ WITH ( \ kafka_topic='rm.oow', \ value_format='JSON' \ ); </code></pre> <p>Few things to notice:</p> <ul> <li><code>Created_At VARCHAR</code>: <em>Created_At</em> is a <code>timestamp</code>, however in the first stream definition I can't apply any date/timestamp conversion. I keep it as <code>VARCHAR</code> which is one of the allowed types (others are <code>BOOLEAN</code>, <code>INTEGER</code>, <code>BIGINT</code>, <code>DOUBLE</code>, <code>VARCHAR</code>, <code>ARRAY&lt;ArrayType&gt;</code> and <code>MAP&lt;VARCHAR, ValueType&gt;</code>).</li> <li><code>User VARCHAR</code>: the <code>User</code> field is a JSON nested structure, for the basic stream definition we'll leave it as <code>VARCHAR</code> with further transformations happening later on.</li> <li><code>kafka_topic='rm.oow'</code>: source declaration</li> <li><code>value_format='JSON'</code>: data format</li> </ul> <p>Once created the first stream we can then query it in SQL like </p> <pre><code>select Created_at, text from twitter_raw </code></pre> <p>with the output being in the form of a <strong>continuous flow</strong>: as soon as a new tweet arrives its visualized in the console.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Tweets-raw-300.gif" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>The first part I want to fix now is the <code>Created_At</code> field, which was declared as <code>VARCHAR</code> but needs to be mutated into timestamp. I can do it using the function <code>STRINGTOTIMESTAMP</code> with the mask being <code>EEE MMM dd HH:mm:ss ZZZZZ yyyy</code>. This function converts the string to a <code>BIGINT</code> which is the datatype used by Kafka to store timestamps.</p> <p>Another section of the tweet that needs further parsing is the <code>User</code>, that as per the previous definition returns the whole nested JSON object.</p> <pre><code>{ "id":575384370, "id_str":"575384370", "name":"Francesco Tisiot", "screen_name":"FTisiot", "location":"Verona, Italy","url":"http://it.linkedin.com/in/francescotisiot", "description":"ABC" ... } </code></pre> <p>Fortunately KSQL provides the <code>EXTRACTJSONFIELD</code> function that we can then use to parse the JSON and retrieve the required fields</p> <p>I can now define a new <code>twitter_fixed</code> stream with the following code</p> <pre><code>create stream twitter_fixed as select STRINGTOTIMESTAMP(Created_At, 'EEE MMM dd HH:mm:ss ZZZZZ yyyy') AS Created_At, \ Id, \ Text, \ Source, \ ..., \ EXTRACTJSONFIELD(User, '$.name') as User_name, \ EXTRACTJSONFIELD(User, '$.screen_name') as User_screen_name, \ EXTRACTJSONFIELD(User, '$.id') as User_id, \ EXTRACTJSONFIELD(User, '$.location') as User_location, \ EXTRACTJSONFIELD(User, '$.description') as description \ from twitter_raw </code></pre> <p>An important thing to notice is that the <code>Created_At</code> is not encoded as <code>BigInt</code>, thus if I execute <code>select Created_At from twitter_fixed</code> I get only the raw number. To translate it to a readable date I can use the <code>STRINGTOTIMESTAMP</code> function passing the column and the data format.</p> <p>The last part of the stream definition I wanted to fix is the settings of <code>KEY</code> and <code>TIMESTAMP</code>: a <code>KEY</code> is the unique identifier of a message and, if not declared, is auto-generated by Kafka. However the tweet JSON contains the <code>Id</code> which is Twitter's unique identifier, so we should to use it. <code>TIMESTAMP</code> associates the message timestamp with a column in the stream: <code>Created_At</code> should be used. I can defined the two above in the <code>WITH</code> clause of the stream declaration.</p> <pre><code>create stream twitter_with_key_and_timestamp \ as \ select * from twitter_fixed \ with \ (KEY='Id', TIMESTAMP='Created_At'); </code></pre> <p>When doing a <code>select * from twitter_with_key_and_timestamp</code> we can clearly see that KSQL adds two columns before the others containing <code>TIMESTAMP</code> and <code>KEY</code> and the two are equal to <code>Created_At</code> and <code>Id</code>.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/TimeStamp-Key.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>Now I have all the fields correctly parsed as KSQL stream, nice but in <a href="https://www.rittmanmead.com/blog/2017/08/how-was-game-of-thrones-s07-e05-tweet-analysis-with-kafka-bigquery-and-tableau/">my previous blog post</a> I had almost the same for free using Kafka Connect. Now It's time to discover the next step of KSQL: <strong>tables</strong>! </p> <p>Let's first create a simple table containing the number of tweets by <code>User_name</code>.</p> <pre><code>create table tweets_by_users as \ select user_screen_name, count(Id) nr_of_tweets \ from twitter_with_key_and_timestamp \ group by user_screen_name </code></pre> <p>When then executing a simple <code>select * from table</code> we can see the expected result.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Users-and-counts.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>Two things to notice:</p> <ul> <li>We see a new row in the console every time there is a new record inserted in the <code>oow</code> topic, the new row contains the updated count of tweets for the <code>screen_name</code> selected</li> <li>The <code>KEY</code> is automatically generated by KSQL and contains the <code>screen_name</code></li> </ul> <p>I can retrieve the list of tables define with the <code>show tables</code> command.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/List-of-tables-1.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>It's interesting to notice that the format is automatically set as <code>JSON</code>. The <strong>format</strong> property, configured via the <code>VALUE_FORMAT</code> parameter, defines how the message is stored in the topic and can either be <code>JSON</code> or <code>DELIMITED</code>.</p> <h2 id="windowing">Windowing</h2> <p>When grouping, KSQL provides three different windowing functions:</p> <ul> <li><strong>Tumbling</strong>: Fixed size, non overlapping. The <code>SIZE</code> of the window needs to be specified.</li> <li><strong>Hopping</strong>: Fixed size, possibly overlapping. The <code>SIZE</code> and <code>ADVANCE</code> parameters need to be specified.</li> <li><strong>Session</strong>: Fixed size, starting from the first entry for a particular Key, it remains active until a new message with the same key happens within the <code>INACTIVITY_GAP</code> which is the parameter to be specified.</li> </ul> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Wondowing.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>I can create simple table definition like the number of tweets by location for each tumbling session with</p> <pre><code>create table rm.tweets_by_location \ as \ select user_location, \ count(Id) nr_of_tweets \ from twitter_with_key_and_timestamp \ WINDOW TUMBLING (SIZE 30 SECONDS) \ group by user_location </code></pre> <p>the output looks like</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Tumbling-Window.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>As you can see the <code>KEY</code> of the table contains both the <code>user_location</code> and the window <code>Timestamp</code> (e.g <code>Colombes : Window{start=1507016760000 end=-}</code>)</p> <p>An example of hopping can be created with a similar query </p> <pre><code>create table rm.tweets_by_location_hopping \ as \ select user_location, \ count(Id) nr_of_tweets \ from twitter_with_key_and_timestamp \ WINDOW HOPPING (SIZE 30 SECONDS, ADVANCE BY 10 SECONDS) \ group by user_location; </code></pre> <p>With the output being like </p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Hopping-Window-1.png" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>It's interesting to notice that each entry (e.g. <code>Europe North, Switzerland</code>) is listed at least three times. This is due to the fact that in any point in time there are three overlapping windows (<code>SIZE</code> is 30 seconds and <code>ADVANCE</code> is 10 seconds). The same example can be turn into the session windows by just defining <code>WINDOW SESSION (30 SECONDS)</code>.</p> <p>The windowing is an useful option, especially when combined with <code>HAVING</code> clauses since it gives the option to define metrics for real time analysis. <br> E.g. I may be interested only items that have been ordered more than 100 times in the last hour, or, in my twitter example in <code>user_locations</code> having a <code>nr_of_tweets</code> greater than 5 in the last 30 minutes.</p> <h1 id="joining">Joining</h1> <p>So far so good, a nice set of SQL functions on top of data coming from a source (in my case twitter). In the real word however we'll need to mix information coming from disparate sources.... what if I tell you that you can achieve that in a single KSQL statement?</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Face-KSQL.jpg" alt="KSQL: Streaming SQL for Apache Kafka"></p> <p>To show an integration example I created a simple topic <code>known_twitters</code> using the <code>kafka-console-producer</code>.</p> <pre><code>./bin/kafka-console-producer --topic known_twitters --broker-list myserver:9092 </code></pre> <p>Once started I can type in messages and those will be stored in the <code>known_twitters</code> topic. For this example I'll insert the twitter handle and real name of known people that are talking about <code>OOW</code>. The format will be:</p> <pre><code>username,real_name </code></pre> <p>like </p> <pre><code>FTisiot,Francesco Tisiot Nephentur,Christian Berg </code></pre> <p>Once inserted the rows with the producer I'm then able to create a KSQL stream on top of it with the following syntax (note the <code>VALUE_FORMAT='DELIMITED'</code>)</p> <pre><code>create stream people_known_stream (\ screen_name VARCHAR, \ real_name VARCHAR) \ WITH (\ KAFKA_TOPIC='known_twitters', \ VALUE_FORMAT='DELIMITED'); </code></pre> <p>I can now join this stream with the others streams or tables built previously. However when trying the following statement </p> <pre><code>select user_screen_name from rm.tweets_by_users a join PEOPLE_KNOWN_STREAM b on a.user_screen_name=b.screen_name; </code></pre> <p>I get a nice error </p> <pre><code>Unsupported join logical node: Left: io.confluent.ksql.planner.plan.StructuredDataSourceNode@6ceba9de , Right: io.confluent.ksql.planner.plan.StructuredDataSourceNode@69518572 </code></pre> <p>This is due to the fact that as of now KSQL supports only joins between a stream and a table, and the stream needs to be specified first in the KSQL query. If I then just swap the two sources in the select statement above:</p> <pre><code>select user_screen_name from PEOPLE_KNOWN_STREAM a join rm.tweets_by_users b on a.screen_name=b.user_screen_name; </code></pre> <p>...I get another error</p> <pre><code>Join type is not supportd yet: INNER </code></pre> <p>We have to remember that KSQL is still in developer beta phase, a lot of new features will be included before the official release.</p> <p>adding a <code>LEFT JOIN</code> clause (see <a href="https://github.com/confluentinc/ksql/issues/308">bug</a> related) solves the issue and I should be able to see the combined data. However when running </p> <pre><code>select * from PEOPLE_KNOWN_STREAM left join TWEETS_BY_USERS on screen_name=user_screen_name; </code></pre> <p>Didn't retrieve any rows. After adding a proper <code>KEY</code> to the stream definition </p> <pre><code>create stream PEOPLE_KNOWN_STREAM_PARTITIONED \ as select screen_name , \ real_name from people_known_stream \ PARTITION BY screen_name; </code></pre> <p>I was able to retrieve the correct rowset! Again, we are in early stages of KSQL, those fixes will be enhanced or better documented in future releases!</p> <h1 id="conclusion">Conclusion</h1> <p>As we saw in this small example, all transformations, summaries and data enrichments were done directly in Kafka with a dialect very easy to learn for anyone already familiar with SQL. All the created streams/tables are stored as Kafka topics thus the standard connectors can be used for sink integration. </p> <p>As mentioned above KSQL is still in developer preview but the overall idea is very simple and at the same time powerful. If you want to learn more check out the <a href="https://www.confluent.io/product/ksql/">Confluent page</a> and the <a href="https://github.com/confluentinc/ksql/tree/0.1.x/docs#ksql-documentation">KSQL github repository</a>! </p> Francesco Tisiot a58f94c2-f7fe-4fbb-a5b7-b732d8bc691b Wed Oct 18 2017 11:18:39 GMT-0400 (EDT) Your Three Must-Know EPM and Analytics Themes from OpenWorld 2017 http://blog.performancearchitects.com/wp/2017/10/18/your-three-must-know-epm-and-analytics-themes-from-openworld-2017/ <p>Author: Kirby Lunger, Performance Architects</p> <p>The <a href="https://www.oracle.com/applications/performance-management/index.html">enterprise performance management (EPM)</a> and <a href="https://www.oracle.com/solutions/business-analytics/index.html">enterprise analytics (business analytics, BI, data visualization)</a> arenas may have seemed like an afterthought at <a href="https://www.oracle.com/openworld/index.html">Oracle OpenWorld</a> this year, since the conference focus areas seemed to be <a href="https://www.oracle.com/database/autonomous-database/index.html">autonomous (self-learning) databases</a>, <a href="https://www.oracle.com/cloud/blockchain/index.html">blockchain</a> and cloud infrastructure!  Never fear!  I’ve distilled the top three themes from these areas to bring you up to speed in this arena as quickly as possible.</p> <ol> <li><strong>Everyday Low Prices: Walmart Pricing and (Less) Discounting Now Applies</strong></li> </ol> <p>One of the most attractive things about buying cloud solutions is that we can purchase “by the drop,” meaning that we can expand capacity (seats, CPUs, whatever) as we need them, at an affordable price.</p> <p>For the last several years, Oracle was dinged by analyst firms like Gartner for maintaining a sales model that wasn’t optimized for the cloud world (aka: a very large field sales force used to long, protracted negotiations with a lot of off-the-list discounting).</p> <p>The beast finally awoke!  Right around the time of OpenWorld, Oracle quietly slashed the prices of <a href="https://www.oracle.com/solutions/business-analytics/analytics-cloud.html">Oracle Analytic Cloud (OAC)</a>, their next-generation analytics platform combining BI, data visualization and analytics (Essbase!) capabilities, by 50%.  We believe this will lead to much clearer sales incentives and less required discounting on Oracle’s part moving forward…which should frankly make your life (and our experience as a partner as well) much easier.  As far as we know, this only applies to the <a href="https://cloud.oracle.com/en_US/paas">PaaS</a> arena at the moment, although we fully expect that this operating model will edge into the <a href="https://cloud.oracle.com/en_US/guided-journey">SaaS</a> and <a href="https://www.oracle.com/cloud/iaas.html">IaaS</a> areas as we look out into the coming fiscal year.</p> <p>Oracle has also spent a lot of time over the last several months clarifying and narrowing down the list of offerings in each of its SaaS, PaaS, and IaaS focus areas.  You can go to the EPM arena, for example, and <a href="https://www.oracle.com/applications/performance-management/products.html">clearly see the list of modules and their prices</a> with a “Purchase Now” button.  The days of trying to track down one of your 15 Oracle sales reps to get a quote are on their way out!</p> <p>As part of this, product naming and grouping/bundling has been simplified.  You’ll notice the “Service” is getting dropped from most of the cloud product names (e.g., Enterprise Planning and Budgeting Cloud Service or EPBCS is now often referred to as <a href="https://cloud.oracle.com/enterprise-planning-cloud">“Enterprise Planning Cloud” or “EPC” on the Oracle website</a>).</p> <ol start="2"> <li><strong>The Dashboard is Dead: Information Before You Know You Need It Is the Name of the Game</strong></li> </ol> <p>Think about all of the notifications you receive from shopping sites based on your past and predicted shopping behavior.  You don’t painstakingly create a dashboard to analyze and report on your behavior…this just happens based on the data they collect on you and alerts are pushed to you on an “as-needed” basis.</p> <p>And where do you consume your information?  On your mobile phone.  <a href="http://bgr.com/2016/11/02/internet-usage-desktop-vs-mobile/">As of November 2016, mobile web traffic overtook computer web traffic</a>…<a href="https://www.emailmonday.com/mobile-email-usage-statistics">66% of all emails are now opened on a mobile phone</a>!</p> <p>We’ve all been saying this for years…and now it’s finally happening.  Using <a href="https://www.oracle.com/artificial-intelligence/embedded-ai.html">adaptive intelligence</a> (Oracle’s term for what a bunch of other folks used to call “artificial intelligence”) and <a href="https://blogs.oracle.com/machine-learning-explained">machine learning</a>, Oracle is betting the ranch on proactive alerting throughout their solution stack to address this mobile-first, information-push world.</p> <p>In the enterprise analytics field, they’re investing heavily in mobile enhancements for the visualization capabilities in OAC and to their mobile applications (<a href="https://www.oracle.com/solutions/business-analytics/day-by-day.html">Day-by-Day</a> and <a href="https://www.oracle.com/solutions/business-analytics/synopsis.html">Synopsis</a>), while in EPM, they continue to focus on predictive modeling enhancements to the EPM product suite.</p> <ol start="3"> <li><strong>Long Live the Data Lake: “Directionally Correct” is All the Rage</strong><strong style="font-size: 1rem;"> </strong></li> </ol> <p>First of all, EPM folks, don’t freak out.  This doesn’t mean transactional systems are going away…we’ll be in world where “hybrid” data storage models rule for many years to come. It just means that the world is moving to a “directionally correct” orientation instead of a “precisely wrong” focus.</p> <p>What does this mean?  Rather than waiting for complete, tried-and-true, cause-and-effect historical relationships to be established in a traditional relational database structure that is then reported out in a dashboard, Oracle is using <a href="https://blogs.oracle.com/bigdata/the-new-data-lake-you-need-more-than-hdfs">data lake technologies</a> (which store data in its raw format until it is needed for analysis) to provide pointers to possible trends that could predict an outcome.</p> <p>A centerpiece of this is the new <a href="https://cloud.oracle.com/en_US/oac/pricing">OAC &#8211; Data Lake edition</a> (which we think signals a shift away from the Oracle “Big Data Discovery” messaging of the past few years), which launched the week of OpenWorld.</p> <p>That said…Oracle did announce a significant update to a more traditional EPM data management solution for you “structured data” fans, the <a href="https://cloud.oracle.com/en_US/enterprise-data-management-cloud">Enterprise Data Management Cloud Service (also known as Enterprise Data Management Cloud)</a>.  This is the totally-rearchitected cloud version of the on-premise <a href="http://www.oracle.com/technetwork/middleware/data-relationship-management/overview/index.html">Oracle Hyperion Data Relationship Management (DRM)</a>, and is due out by the end of 2017 calendar year.  It should make cloud-based, enterprise data management a lot easier.</p> <p>Want to learn more about the evolution of Oracle’s EPM and enterprise analytics solutions and what this means for you?  Contact us at <a href="mailto:communications@performancearchitects.com">communications@performancearchitects.com</a> and we’d be happy to set up a time to talk.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2195 Wed Oct 18 2017 05:38:02 GMT-0400 (EDT) Patching Essbase in OAC to 17.3.3-926 with Oracle 11g RDBMS http://blog.performancearchitects.com/wp/2017/10/18/patching-essbase-in-oac-to-17-3-3-926-with-oracle-11g-rdbms/ <p>Author: Andy Tauro, Performance Architects</p> <p>I recently applied the 17.3.3-926 patch to <a href="https://cloud.oracle.com/en_US/oac">Oracle Essbase Cloud Service (<u>ESSCS</u>) in Oracle Analytics Cloud (OAC</a>). If you have not patched OAC yet, the good news is that this process is as close to “one-click” as it can get, with the capability to perform a “pre-check” of the instance (and while we have yet to see this fail, it is good to know that we can check to see if any known conditions for failure exist).</p> <p>When the patching is initiated, it first performs a backup of the instance, just in case a rollback is needed. Once the backup is successful, the patching process begins. In our experience, this process takes about 30 minutes, including the backup. However, I fully expect that will vary depending on how much content is housed within the instance.</p> <p>When I restarted the instance after the patch, I found that Essbase would not start. Digging through the log files on the instance, I found an error message that indicated that a “schema update” failed with the error message: “ORA-02000: missing ( keyword.”</p> <p>Since the patching process in ESSCS is hidden from the customer, we contacted Oracle Support. After consulting with the product development team, we found out that the issue was because we were using <a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html">Oracle Database 11g</a> as our relational data store, a.k.a. DBaaS (Database-as-a-Service). By default, the update assumes that the latest version of the Oracle database (12c) is being used. To overcome this, Oracle Support provided a fix that required an update to a server script. The script being updated (setDomainEnv.sh) is found at the location “/u01/data/domains/esscs/bin” and Oracle Support advises backing up this script before making changes.</p> <p>To change this script, one needs to change to the “Oracle” user with the command “sudo su &#8211; oracle.” Find the following words in the script: “-Dessbase.datasource=BIPlatformDatasource”</p> <p>and replace it with “-Dessbase.datasource=BIPlatformDatasource -Dessbase.schema.update.disabled=true.”</p> <p>Once the changes are made, log out of the instance and restart it using the “My Services: console. The updates will tell Essbase to skip the “Schema Update” step. As long as there isn’t anything else broken with the instance, this should allow Essbase to start up.</p> <p>Oracle confirms that there is no functionality lost in using Oracle database 11g with ESSCS, and this issue will be fixed in patch 17.4, which is expected out in a couple of months. However, this stresses the importance of having a pre-production instance to verify that the deployed patches will not introduce issues with your setup. Since a PaaS like OAC allows for a lot of flexibility in how one uses one’s environment, it is important that such system changes are tested before they are released.</p> <p>While included pre-checks can check for conditions on the Essbase server itself, when we consider the ways the instance can be connected to other services, whether in the Oracle Cloud or outside services like on-premise systems, not every possible condition can be checked for. That is because the tools included with OAC are robust and flexible enough to allow for solutions restricted only by one’s imagination.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2148 Wed Oct 18 2017 05:21:30 GMT-0400 (EDT) ODTUG Elections – Vote Now! http://www.odtug.com/p/bl/et/blogaid=748&source=1 Elections for the 2018-19 ODTUG Board of Directors are underway — vote now!Exercise your right as an ODTUG member and vote for the board. This may be the most important thing you can do for ODTUG. ODTUG http://www.odtug.com/p/bl/et/blogaid=748&source=1 Mon Oct 16 2017 11:19:47 GMT-0400 (EDT) Oracle Unveils Data Lake Edition for OAC https://www.us-analytics.com/hyperionblog/oracle-unveils-data-lake-edition-for-oac <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/oracle-unveils-data-lake-edition-for-oac" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/OAC%20data%20lake%20edition.jpg?t=1512966730140" alt="OAC data lake edition.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Oracle recently announced the Data Lake Edition for Oracle Analytics Cloud (OAC). The Data Lake Edition comes with everything that you get in the standard edition of OAC with the added benefit of utilizing data lakes.</p> <p>In this blog post, we’ll cover everything you need to know about data lakes, including the standard features of OAC and the new features you get with this edition.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Foracle-unveils-data-lake-edition-for-oac&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/oracle-unveils-data-lake-edition-for-oac Wed Oct 11 2017 12:18:04 GMT-0400 (EDT) Introducing Enterprise Data Management Cloud (Coming Soon) https://www.us-analytics.com/hyperionblog/introducing-oracle-enterprise-data-management-cloud <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/introducing-oracle-enterprise-data-management-cloud" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/oracle%20enterprise%20data%20management%20cloud.jpg?t=1512966730140" alt="oracle enterprise data management cloud.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Oracle announced last week that it’s preparing to release the long-awaited cloud version of Data Relationship Management (DRM). The new product is called <strong><a href="https://www.us-analytics.com/oracle-enterprise-data-management-cloud-tour">Enterprise Data Management Cloud</a></strong>.</p> <p>Data governance is more important than ever, as many organizations are choosing to <strong><a href="https://www.us-analytics.com/to-move-to-the-cloud-or-stay-on-prem">keep some of their systems on-prem and move others to the cloud</a></strong>. A data governance tool organizes siloed data across different systems and transforms it into timely, accurate, and consistent master data. Organizations that try to do this manually leave themselves more vulnerable to <strong><a href="https://www.us-analytics.com/hyperionblog/can-you-trust-your-enterprise-data-14-red-flags">data quality issues</a></strong>.</p> <p>To date, the gold standard for data governance tools has been Oracle DRM. So, what can we expect from Oracle’s new cloud product? In this blog post, we’ll give you an overview of what’s coming and the features that will be included in the Enterprise Data Management Cloud.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fintroducing-oracle-enterprise-data-management-cloud&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/introducing-oracle-enterprise-data-management-cloud Wed Oct 11 2017 11:59:27 GMT-0400 (EDT) Proof that Less can be More https://blog.redpillanalytics.com/proof-that-less-can-be-more-fa684363bd88?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zxbiEpJZjTor8ttGAZ8tTQ.jpeg" /></figure><p>Snowflake Data Warehouse release 2.11 (September 7, 2017) included the addition of an OVERWRITE parameter for the INSERT command. INSERT OVERWRITE effectively consolidates two commands, TRUNCATE TABLE and INSERT, into one. INSERT OVERWRITE also deletes the file load history and retains access control privileges on the target table; both of which are not insignificant details.</p><p>Give it a try by creating a table and populating with two records:</p><pre>create table test_insert_overwrite(<br> id int<br> ,first_name varchar2(250)<br> ,last_name varchar2(250))<br> ;</pre><pre>insert into test_insert_overwrite values(1,&#39;Wayne&#39;,&#39;Campbell&#39;),(2,&#39;Garth&#39;,&#39;Algar&#39;);</pre><p>Verify that the two records are present:</p><pre><strong>select</strong> * <strong>from</strong> test_insert_overwrite;</pre><pre>+----+------------+-----------+</pre><pre>| <strong>ID</strong> | <strong>FIRST_NAME</strong> | <strong>LAST_NAME</strong> |</pre><pre>+====+============+===========+</pre><pre>| 1 | Wayne | Campbell |</pre><pre>+----+------------+-----------+</pre><pre>| 2 | Garth | Algar |</pre><pre>+----+------------+-----------+</pre><pre>2 Row(s) produced. Time Elapsed: 1.038s</pre><p>Now add the OVERWRITE option to the INSERT command:</p><pre>insert overwrite into test_insert_overwrite values (3,&#39;Noah&#39;,&#39;Vanderhoff&#39;);</pre><p>Confirm the original two records have been removed and there is now one record in the table:</p><pre><strong>select</strong> * <strong>from</strong> test_insert_overwrite;</pre><pre>+----+------------+------------+</pre><pre>| <strong>ID</strong> | <strong>FIRST_NAME</strong> | <strong>LAST_NAME </strong> |</pre><pre>+====+============+============+</pre><pre>| 3 | Noah | Vanderhoff |</pre><pre>+----+------------+------------+</pre><pre>1 Row(s) produced. Time Elapsed: 1.930s</pre><p>The Query Profile for the INSERT OVERWRITE command used above shows a two-step process. First, a TRUNCATE command followed by the INSERT.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/746/1*hzgr8XOHFuqauV-beUW-AQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/736/1*KEd95b0FjwMaJFdaTIpsig.png" /></figure><p>While there are multiple methods to achieve the desired result, using one statement to perform a “full load” is often the most efficient for many use cases.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vFCY6uJ1Hkw7HJyO3ovWow.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fa684363bd88" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/proof-that-less-can-be-more-fa684363bd88">Proof that Less can be More</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Mike Fuller https://medium.com/p/fa684363bd88 Wed Oct 11 2017 11:03:08 GMT-0400 (EDT) Proof that Less can be More http://redpillanalytics.com/proof-that-less-can-be-more/ <p><img width="300" height="199" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?fit=300%2C199" class="attachment-medium size-medium wp-post-image" alt="Proof that Less can be More" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?w=1920 1920w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?resize=300%2C199 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?resize=768%2C508 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?resize=1024%2C678 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5450" data-permalink="http://redpillanalytics.com/proof-that-less-can-be-more/kelly-sikkema-168787/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?fit=1920%2C1271" data-orig-size="1920,1271" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Proof that Less can be More" data-image-description="&lt;p&gt;Proof that Less can be More&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?fit=300%2C199" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/kelly-sikkema-168787.jpg?fit=1024%2C678" /></p><p class="graf graf--p">Snowflake Data Warehouse release 2.11 (September 7, 2017) included the addition of an OVERWRITE parameter for the INSERT command. INSERT OVERWRITE effectively consolidates two commands, TRUNCATE TABLE and INSERT, into one. INSERT OVERWRITE also deletes the file load history and retains access control privileges on the target table; both of which are not insignificant details.</p> <hr /> <p>&nbsp;</p> <p class="graf graf--p">Give it a try by creating a table and populating with two records:</p> <p>&nbsp;</p> <p><code>create table test_insert_overwrite(<br /> id int<br /> ,first_name varchar2(250)<br /> ,last_name varchar2(250))<br /> ;<br /> insert into test_insert_overwrite values(1,'Wayne','Campbell'),(2,'Garth','Algar');<br /> </code></p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p>Verify that the two records are present:</p> <p>&nbsp;</p> <p><code>select * from test_insert_overwrite;<br /> +----+------------+-----------+<br /> | ID | FIRST_NAME | LAST_NAME |<br /> +====+============+===========+<br /> | 1 | Wayne | Campbell |<br /> +----+------------+-----------+<br /> | 2 | Garth | Algar |<br /> +----+------------+-----------+<br /> 2 Row(s) produced. Time Elapsed: 1.038s</code></p> <p>&nbsp;</p> <hr /> <p>Now add the <strong>OVERWRITE</strong> option to the<strong> INSERT</strong> command:</p> <p>&nbsp;</p> <p><code>insert overwrite into test_insert_overwrite values (3,'Noah','Vanderhoff');</code></p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p>Confirm the original two records have been removed and there is now one record in the table:</p> <p>&nbsp;</p> <p><code>select * from test_insert_overwrite;<br /> +----+------------+------------+<br /> | ID | FIRST_NAME | LAST_NAME |<br /> +====+============+============+<br /> | 3 | Noah | Vanderhoff |<br /> +----+------------+------------+<br /> 1 Row(s) produced. Time Elapsed: 1.930s</code></p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p>The Query Profile for the <strong>INSERT OVERWRITE</strong> command used above shows a two-step process. First, a <strong>TRUNCATE</strong> command followed by the <strong>INSERT</strong>.</p> <p>&nbsp;</p> <p><img data-attachment-id="5453" data-permalink="http://redpillanalytics.com/proof-that-less-can-be-more/screen-shot-2017-09-21-at-11-43-04-am/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?fit=1920%2C863" data-orig-size="1920,863" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Query Profile" data-image-description="&lt;p&gt;Query Profile&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?fit=300%2C135" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?fit=1024%2C460" class="size-medium wp-image-5453 aligncenter" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?resize=300%2C135" alt="Query Profile" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?resize=300%2C135 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?resize=768%2C345 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/Screen-Shot-2017-09-21-at-11.43.04-AM.png?resize=1024%2C460 1024w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></p> <p>&nbsp;</p> <p>While there are multiple methods to achieve the desired result, using one statement to perform a “full load” is often the most efficient for many use cases.</p> <p>&nbsp;</p> <p><img data-attachment-id="5454" data-permalink="http://redpillanalytics.com/proof-that-less-can-be-more/partytime/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?fit=1200%2C730" data-orig-size="1200,730" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="PartyTime" data-image-description="&lt;p&gt;PartyTime&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?fit=300%2C183" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?fit=1024%2C623" class="size-medium wp-image-5454 aligncenter" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?resize=300%2C183" alt="PartyTime" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?resize=300%2C183 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?resize=768%2C467 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?resize=1024%2C623 1024w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/PartyTime.png?w=1200 1200w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></p> Mike Fuller http://redpillanalytics.com/?p=5449 Wed Oct 11 2017 11:02:41 GMT-0400 (EDT) Updating Oracle EPM (Hyperion) for Struts RCE Vulnerability http://blog.performancearchitects.com/wp/2017/10/11/updating-oracle-epm-hyperion-for-struts-rce-vulnerability/ <p>Author: Andy Tauro, Performance Architects</p> <p>It is hard to not have heard of the <a href="https://struts.apache.org/">Apache Struts</a> vulnerability that affected major websites, including those of Equifax. When this happened, IT support teams scrambled to check their environments and to apply fixes as quickly as they could be found. Our customers running <a href="https://www.oracle.com/applications/performance-management/index.html">Oracle EPM</a> (Hyperion) (as well as <a href="http://www.oracle.com/technetwork/middleware/bi-enterprise-edition/overview/index.html">Oracle Business Intelligence Enterprise Edition or OBIEE</a>) on-premise inquired about how to address this as well.</p> <p>From what we can tell, certain Oracle EPM components use Struts via the WebLogic Application Server (WAS or WLS) 10.3.6 platform. While WAS 10.3.6 comes bundled with Struts 1.x &amp; 2.x, it looks like Oracle EPM only uses Struts 1.x. This particular version of Struts has not been named in the vulnerability that caught the world by storm, Oracle released a fix for WebLogic that updates the version of Struts via a Smart Update (SU) patch.</p> <p>The patch (26835212) updates the Struts version in WebLogic 10.3.6 to 1.3.9 and 2.3.34. We have applied this over the last security Patch Set Update (PSU) that Oracle released (25869650, in July 2017). To apply this, one would use the BSU utility that is available in the “Middleware Home” directory ({MW_HOME}/utils/bsu). The general steps for this are:</p> <ol> <li>Stop EPM services running</li> <li>Extract patch into the “{MW_HOME}/utils/bsu/cache_dir” directory</li> <li>From the location “{MW_HOME}/utils/bsu,” apply the patch as: “bsu.cmd/sh -install -patch_download_dir={MW_HOME}/utils/bsu/cache_dir -patchlist={PATCH_ID} -prod_dir={MW_HOME}/{WL_HOME}” and patch ID for July 2017 PSU = B25A, for 25869650 = UZCY</li> <li>Delete “cache” and “tmp” directories for each WebLogic Managed Server that runs Oracle EPM services <ul> <li>These will be found in the location “{MW_HOME}/user_projects/domains/EPMSystem/servers”</li> </ul> </li> <li>Restart Oracle EPM</li> </ol> <p>One important note: “MW_HOME” equals “Middleware Home” and “WL_HOME” equals “WebLogic Home” (usually “{MW_HOME}/wlserver_10.3”).  Also, these steps apply primarily to Oracle EPM Version 11.1.2.4.</p> <p>At this time, we have run basic tests on the various Hyperion modules and have not seen any issues. We are working with our clients to perform more thorough health checks, since every environment has some nuance that makes it unique and sometimes exposes an issue that was not thought about.</p> <p>Are you thinking of applying this patch and have questions? Feel free to drop a <a href="mailto:info@performancearchitects.com">note</a> as we would love to hear from you and share notes on this.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2176 Wed Oct 11 2017 05:33:29 GMT-0400 (EDT) ODC Appreciation Day: Customize style of lightweight login and VA/DV https://gianniceresa.com/2017/10/odc-appreciation-day-customize-style-of-lightweight-login-and-vadv/ <p>We are at that time of the year again&#8230;<br /> Like last year, this is my contribution for the <a href="https://oracle-base.com/blog/2017/09/25/odc-appreciation-day-2017-thanksodc/" target="_blank" rel="noopener">ODC Appreciation Day</a> (<a href="https://twitter.com/hashtag/thanksODC?src=hash" target="_blank" rel="noopener">#thanksODC</a>), promoted by Tim Hall.</p> <p>My post starts with a little rant: OTN is gone, new name is now ODC. I&#8217;m sure there are some really smart marketing people behind that name change, but &#8220;killing&#8221; a brand known and used for ages to try to promote something new/different is the kind of things I don&#8217;t like a lot (isn&#8217;t the new thing good enough to be known by itself?).<br /> I&#8217;m still calling things OTN just because that&#8217;s what it is in my mind and how most of us knows it.</p> <h2>OBIEE 12c &#8220;lightweight&#8221; login page and VA/DV customization</h2> <p>This post isn&#8217;t really about a functionality but more about a missing/removed functionality. I saw people asking about it (in OTN forums &#8230; sorry: ODC forums) so I thought it was worth to write about it explaining things a bit.</p> <div id="attachment_570" style="max-width: 296px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login.png"><img class="wp-image-570 size-medium" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-286x300.png" alt="new lightweight login (#thanksODC)" width="286" height="300" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-286x300.png 286w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login.png 576w" sizes="(max-width: 286px) 100vw, 286px" /></a><p class="wp-caption-text">The lightweight login page</p></div> <p>With OBIEE 12.2.1.3.0 there is, by default, a new login page called &#8220;lightweight SSO&#8221;. It was possible to enable it already in 12.2.1.2.0 and the role of this new page is to provide a shared session between OBIEE Answers/Dashboards (the classical interface) and Visual Analyzer.</p> <p>It has a different style when compared to the &#8220;old&#8221; classical login page, and it also ignores completely your own custom style you maybe deployed in OBIEE. In the old way of doing things a custom style was a <a href="https://gianniceresa.com/2017/02/obiee-12c-custom-style-using-shared-folder/">simple </a>and supported way of branding the interface to make OBIEE totally yours. Even if just by deploying a custom &#8220;oracle_logo.png&#8221; picture to have your own logo on the top-left header.</p> <div id="attachment_574" style="max-width: 310px" class="wp-caption aligncenter"><img class="size-medium wp-image-574" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_classic-login-300x222.png" alt="&quot;old&quot; classic OBIEE login (#thanksODC)" width="300" height="222" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_classic-login-300x222.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_classic-login-768x568.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_classic-login.png 883w" sizes="(max-width: 300px) 100vw, 300px" /><p class="wp-caption-text">The &#8220;old&#8221; classic login page uses oracle_logo.png</p></div> <p>When talking about custom style not affecting the new login page in OBIEE how to not think about Visual Analyzer?</p> <div id="attachment_573" style="max-width: 310px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_va-logo.png"><img class="size-medium wp-image-573" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_va-logo-300x108.png" alt="VA/DV logo (#thanksODC)" width="300" height="108" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_va-logo-300x108.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_va-logo-768x276.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_va-logo.png 876w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">VA/DV has it&#8217;s own logo and name, not using your OBIEE custom style</p></div> <p>Logo, name, colors: nothing coming from your own custom style is used and you get a 100% Oracle branding.</p> <h2>How to customize the style of these elements?</h2> <p>Let&#8217;s inspect the new login page a bit to find out what options you can have&#8230;</p> <div id="attachment_571" style="max-width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo.png"><img class="size-large wp-image-571" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-1024x541.png" alt="lightweight login logo (#thanksODC)" width="1024" height="541" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-1024x541.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-300x159.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-768x406.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-1080x571.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">The new OBIEE lightweight login page logo isn&#8217;t a picture anymore</p></div> <p>First surprise: there is no picture at all where the logo is placed. Inspecting the HTML shows a empty tag. Wait a second: not really empty &#8230;<br /> There is a CSS rule setting the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/content" target="_blank" rel="noopener">&#8220;content&#8221; property</a> of this tag, which is a way to add content in the page. Content can be a static text or a picture or few other things, in this case it is just 1 character encoded using unicode: \e666. This isn&#8217;t really a readable (latin) character.</p> <h3>Can \e666 be the logo?</h3> <div id="attachment_581" style="max-width: 310px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_666.png"><img class="size-medium wp-image-581" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_666-300x214.png" alt="\e666 the Oracle logo (#thanksODC)" width="300" height="214" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_666-300x214.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_666-400x284.png 400w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_666.png 662w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">\e666 the Oracle logo</p></div> <p>How is it possible that \e666 (any reference to <a href="https://en.wikipedia.org/wiki/Number_of_the_Beast" target="_blank" rel="noopener">666 &#8211; the number of the beast</a> is purely coincidental?) is visible on the screen as the Oracle logo? When checking the style of the DIV element itself you can see it has a custom font-family defined: &#8220;vafont&#8221;. This for sure isn&#8217;t a standard font (like Arial, Verdana, Times New Roman etc.) and I don&#8217;t have it installed on my system.</p> <div id="attachment_575" style="max-width: 310px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font.png"><img class="size-medium wp-image-575" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font-300x217.png" alt="vafont.woff loading (#thanksODC)" width="300" height="217" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font-300x217.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font-768x555.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font-1024x740.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font-1080x781.png 1080w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-font.png 1311w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">The login page load a custom font (used by CSS)</p></div> <div id="attachment_572" style="max-width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font.png"><img class="size-large wp-image-572" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font-1024x584.png" alt="remove 'vafont' (#thanksODC)" width="1024" height="584" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font-1024x584.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font-300x171.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font-768x438.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-logo-font-1080x616.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">When you remove &#8216;vafont&#8217; as the font-family for that element, no logo anymore</p></div> <p>If you disable just that attribute in the CSS the Oracle logo disappear and a square is visible instead (as I said \e666 isn&#8217;t really a readable character). As expected the &#8220;vafont&#8221; is loaded by the page itself and it isn&#8217;t a system font at all.</p> <h3>Not as simple to customize as an OBIEE custom style&#8230;</h3> <p>That&#8217;s the main reason why it&#8217;s more difficult to customize that login page, or the VA/DV interface and put your own logo there instead: it isn&#8217;t a picture anymore!<br /> The easiest way would be to edit the CSS to redefine the &#8220;content&#8221; attribute and link to your own logo stored somewhere accessible (by a url), for example to your &#8220;oracle_logo.png&#8221; deployed by your classic OBIEE custom style.</p> <p>The main problem with this approach is that, so far, there isn&#8217;t an officially supported way of doing it, so you would need to take the EARs containing these deployments, edit the CSS and redeploy the archives.<br /> At the next patch or upgrade restart again as there are good chances the EAR has been replaced again by an Oracle default one.</p> <div id="attachment_576" style="max-width: 1034px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo.png"><img class="size-large wp-image-576" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo-1024x431.png" alt="Lightweight login with custom logo (#thanksODC)" width="1024" height="431" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo-1024x431.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo-300x126.png 300w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo-768x323.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_lightweight-login-custom-logo-1080x454.png 1080w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><p class="wp-caption-text">In the CSS it&#8217;s possible to point to the custom style oracle_logo.png instead of \e666</p></div> <p>VA/DV uses a different custom font (bi-alta), I didn&#8217;t check if it&#8217;s the exact same with a different name, but the logo is still \e666.</p> <h3>What other icons are included in the bi-alta font?</h3> <p>I was curious to see what else was included in that font, here it&#8217;s the full list I got (and you can see many pieces of the VA/DV interface are there):</p> <div id="attachment_569" style="max-width: 562px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font.png"><img class="size-large wp-image-569" src="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font-552x1024.png" alt="bi-alta font (#thanksODC)" width="552" height="1024" srcset="https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font-552x1024.png 552w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font-162x300.png 162w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font-768x1425.png 768w, https://gianniceresa.com/wp-content/uploads/2017/10/odc-appreciation_bi-alta-font-1080x2003.png 1080w" sizes="(max-width: 552px) 100vw, 552px" /></a><p class="wp-caption-text">A view of all the icons contained in the bi-alta font loaded by VA/DV (click to zoom)</p></div> <p>The post <a rel="nofollow" href="https://gianniceresa.com/2017/10/odc-appreciation-day-customize-style-of-lightweight-login-and-vadv/">ODC Appreciation Day: Customize style of lightweight login and VA/DV</a> appeared first on <a rel="nofollow" href="https://gianniceresa.com">Gianni&#039;s world: things crossing my mind</a>.</p> Gianni Ceresa https://gianniceresa.com/?p=567 Tue Oct 10 2017 05:22:09 GMT-0400 (EDT) ODC Appreciation Day: OBIEE's Time Hierarchies http://www.rittmanmead.com/blog/2017/10/odc-appreciation-day-obiees-time-hierarchies/ <img src="http://www.rittmanmead.com/blog/content/images/2017/10/Bill-1.png" alt="ODC Appreciation Day: OBIEE's Time Hierarchies"><p>After last year successful <a href="https://oracle-base.com/blog/2016/10/12/otn-appreciation-day-summary/">OTN Appreciation Day</a>, it's time again to show our love for a particular feature in any Oracle's tool we use in our work. You may have noted a name change with OTN now becoming ODC: Oracle Developer Community.</p> <h1 id="what">What</h1> <p>The feature I want to speak about is <strong>OBIEE's Time Hierarchies</strong>. <br> For anybody in the BI business the time dimension(s) are the essence of the <em>intelligence</em> bit: being able to analyze trends, compare current period with previous one, plot year to date or rolling measures are just some of the requirements we get on daily basis. <br> A time hierarchy definition allows the administrator to set which time levels are exposed, how the rollup/drill down works and how previous/following members of the level are calculated. <br> Once the hierarchy is defined, all the related calculations are simple as calling a function (e.g. <code>AGO</code>), defining the level of detail necessary (e.g. <code>Month</code>) and the number of items to take into account (e.g. <code>-1</code>).</p> <p>A Time hierarchy definition is necessary in the following cases:</p> <ul> <li><strong>Time comparisons</strong> - e.g. current vs previous month</li> <li><strong>Time related rollups</strong> - e.g. Year to date</li> <li><strong>Drill path definition</strong> - e.g. Year-Month-Day</li> <li><strong>Fact Tables at various level of details</strong> - e.g. daily fact table and monthly pre-aggregated rollup</li> <li><strong>Time related level based measures</strong> - e.g. monthly sum of sales coming from a fact table at daily level</li> </ul> <h1 id="why">Why</h1> <p>Why do I like time hierarchies? Simple! It's a very clever concept in the RPD, which requires particular knowledge and dedicated attention.</p> <p>If done wright, once defined, is available in every related table and makes the time comparison formulas easy to understand and to create. If done wrong, errors or slowness in the related analysis can be difficult to spot and improve/fix.</p> <p>Still time hierarchies are a central piece in <strong>every</strong> BI implementation, so once understood and implemented correctly give a massive benefit to all developers.</p> <h1 id="how">How</h1> <p>We blogged about <a href="https://www.rittmanmead.com/blog/2007/04/obi-ee-time-dimensions-and-time-series-calculations/">time dimensions and calculations</a> back in 2007 when OBI was still on version 10! The original functionality is still there and the process to follow is pretty much the same. <br> Recently was introduced the concept of <a href="https://www.rittmanmead.com/blog/2017/02/obiee-12c-time-dimension-logical-sequence-number/">Logical Sequence Number</a>, a way of speeding up some time series calculations by removing the ranking operations needed to move back (or forth) in history.</p> <p><img src="http://www.rittmanmead.com/blog/content/images/2017/10/Bill.png" alt="ODC Appreciation Day: OBIEE's Time Hierarchies"></p> <p>I wanted to keep the blog post short, since the time hierarchies information can be found in millions of blog posts. I just wanted the to give few hints to follow when creating a time hierarchy:</p> <ul> <li>It can be created on <strong>any data</strong> with a predefined order, no need to be a date! you could compare for example a certain product with another in the inventory having the previous code.</li> <li>The <strong>Chronological Key</strong> defines the sorting of the level, for example how years, months or dates are ordered. Ordering months alphabetically with a format like <code>YYYY-MM</code> it's correct while using <code>MM-YYYY</code> provides wrong results. </li> <li>Double check the hierarchies, something like <code>YEAR</code>-> <code>MONTH</code> -> <code>WEEK</code> -> <code>DATE</code> can be incorrect since a week can be split in different months!</li> <li>Set appropriately the <strong>number of elements</strong> for each level. This is useful, especially when the hierarchy is complex or pre-aggregated facts, for OBIEE to understand which table to query depending on the level of the analysis.</li> <li>Setup the <a href="https://www.rittmanmead.com/blog/2017/02/obiee-12c-time-dimension-logical-sequence-number/">Logical Sequence Number</a>. <strong>LSN</strong>s are useful if you are looking to reduce the impact of the time series processing at a minimum.</li> <li>If you are looking for very optimal performances for a specific report, e.g. current year vs previous, physicalizing the time series result, previous year, directly in the table alongside with the current year will give what you're looking for.</li> </ul> <p>This was just a quick overview of OBIEE's Time Hierarchies, why are so useful and what you should be looking after when creating them! Hope you found this short post useful. </p> <p>Follow the <strong>#ThanksODC</strong> hashtag on Twitter to check which post have been published on the same theme!</p> Francesco Tisiot 90d0ac9b-6a21-438c-a22b-fa8427c3720e Tue Oct 10 2017 02:58:57 GMT-0400 (EDT) Tips & Tricks: Oracle EPM Performance Tuning and Troubleshooting https://www.us-analytics.com/hyperionblog/oracle-epm-performance-tuning-troubleshooting <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/oracle-epm-performance-tuning-troubleshooting" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/hyperion%20perfomance%20tuning%20and%20troubleshooting.jpg?t=1512966730140" alt="Tips &amp; Tricks: Oracle EPM Performance Tuning and Troubleshooting" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Performance tuning and troubleshooting is no one’s <em>favorite </em>topic, but it’s one of the most <em>important</em> topics when it comes to Oracle EPM. No one wants a system that lags or — even worse — crashes during an integral time.</p> <p>In this blog post, we’ll cover some tips and tricks for EPM tuning and troubleshooting so you can make sure your Oracle EPM tools are always working, especially during those vital times.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Foracle-epm-performance-tuning-troubleshooting&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/oracle-epm-performance-tuning-troubleshooting Mon Oct 09 2017 09:17:08 GMT-0400 (EDT) How to build Fusion Apps Security in BI Apps https://blogs.oracle.com/biapps/how-to-build-fusion-apps-security-in-bi-apps <span style="color:#000000;">General guidelines for Customization,Configuration and Administration</span> <p>&nbsp;</p> <a name="_Toc494896789"><span style="font-family: Garamond, serif; color: windowtext;">SSO Authentication</span></a> <p class="MsoListParagraph" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Implementers can refer to the steps to integrate SSO with IDM as explained in &lsquo;<a href="https://docs.oracle.com/cd/E29542_01/bi.1111/e10543/toc.htm"><i>Security Guide for Oracle Business Intelligence Enterprise Edition</i></a>&rsquo;.</span></p> <a name="_Toc494896790"><span style="font-family: Garamond, serif; color: black;">FA Security Metadata Extraction steps</span></a> <a name="_Toc494896791" style=""><span style="font-family: Garamond, serif; font-size: 12pt; color: black;">Identify the Data Objects to secure</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">e.g.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Supervisor Person, Department, Position, etc are typical Data security objects</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">HR Line Manager, Payroll Administrator, etc are typical Object Security Roles*.</span></p> <a name="_Toc494896792" style=""><span style="font-family: Garamond, serif; font-size: 12pt; color: black;">Fusion Apps (FA) Source Objects</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Identify the Data Security Roles and Object Security Roles (AoR or Area of responsibility roles) associated to these objects.</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">For data security implementer requires&nbsp;to identify tables containing User to Data Object ID mapping.</span></p> <a name="_Toc494896793" style=""><span style="font-family: Garamond, serif; font-size: 12pt; color: black;">Finalize SQLs list for the above requirements.</span></a> <p class="MsoListParagraph" style="margin: 0in 0in 8pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Form SQL&rsquo;s to extract data which can be extracted from source for Data and Object Security. Example target format in next section (Creating DWH side security metadata Table inherited from FA)</span></p> <a name="_Toc494896794" style=""><span style="font-family: Garamond, serif; color: black;">Security Table Object List</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 120px; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Some of Fusion Apps security tables and SQLs to extract security information are provided in&nbsp;</span><a href="file:///C:/Users/smohapat.ORADEV/Desktop/DataSecurity.htm#_APPENDIX_of_Fusion" style="color: rgb(149, 79, 114);"><span style="font-family: Garamond, serif;">appendix</span></a><span style="font-family: Garamond, serif;">. Additional data objects can be obtained from Fusion Apps implementation team as per requirement.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">*</span><span style="font-family: Garamond, serif;">Note, OLAP and OLTP roles may not necessarily converge on most occasions. Extract only those roles, which makes business sense for BI, and not just every role present in Fusion Apps.</span></p> <p class="MsoNormal" style="margin: 0in 0in 8pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <a name="_Toc494896795"><span style="font-family: Garamond, serif; color: black;">FA Security Metadata ETL to Warehouse</span></a> <a name="_Toc494896796" style=""><span style="color: black;">&nbsp;</span><span style="font-family: Garamond, serif; color: black;">Creating warehouse side security metadata Table extracted from FA</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Data extracted from FA security tables must be loaded in certain format for ease of query by the RPD init blocks.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.25in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.25in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">As an example, for on-prem customers we could possibly use 3 tables to store data effectively . Table structure is as follows. The columns and tables can be modified or extended based on additional requirements.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><b><span style="font-family: Garamond, serif;">Roles Table (Role type : Data Security or Object Security)</span></b><span style="font-family: Garamond, serif;">&nbsp;: w_sec_roles</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Attributes: Role Name, Role Description, Role Type</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Role Name</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Role Description</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Role Type</span></b></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DSN</span></b></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DEPT_LINE_MGR</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Department Line Manager</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Area of Responsibility(AOR)</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DEPT_TOP_MGR</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Department Top Manager</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Data Security(DS)</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><b><span style="font-family: Garamond, serif;">Roles+User Table</span></b><span style="font-family: Garamond, serif;">&nbsp;: w_sec_role_users</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">Attributes: Username, Role Name, DSN</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">USERNAME</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Role Name</span></b></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DSN</span></b></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">JOHNDOE</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DEPT_LINE_MGR</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">GWILLIAMS</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DEPT_TOP_MGR</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><b><span style="font-family: Garamond, serif;">User+Data Object Table</span></b><span style="font-family: Garamond, serif;">&nbsp;: w_sec_user_objects</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">Attributes: Username, Object Name, Object ID,DSN</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">USERNAME</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Object Name</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">Object ID</span></b></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DSN</span></b></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">JOHNDOE</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">DEPARTMENT</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">1002</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">GWILLIAMS</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">SUPERVISOR</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">31052</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 8pt; font-family: Garamond, serif; color: black;">210</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">Note here that Object refers to Securing Object to be used in BI side.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><b><span style="font-family: Garamond, serif;">Useful SQL&rsquo;s based above tables containing extracted security data</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 10pt; font-family: Garamond, serif; color: black;">SQL Description</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 10pt; font-family: Garamond, serif; color: black;">Physical SQL</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 10pt; font-family: Garamond, serif; color: black;">User to Data Security Role</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">Select username,role_description</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from w_sec_roles rol, w_sec_role_users rol_usr</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where rol.role_name = rol_usr. role_name</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and rol_usr.dsn = rol.dsn</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and role_type=&rsquo;DS&rsquo;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 10pt; font-family: Garamond, serif; color: black;">User to Data AOR&nbsp; Role</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">Select rol_usr.username,rol.role_description</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from w_sec_roles rol, w_sec_role_users rol_usr</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where rol.role_name = rol. role_name</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and rol_usr.dsn = obj.dsn</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and role_type=&rsquo;AOR&rsquo;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 10pt; font-family: Garamond, serif; color: black;">User to Object(Supervisor)</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select username,object_id</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from w_sec_role_users rol_usr,w_sec_user_objects obj</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where rol_usr.username = obj.username</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and rol_usr.dsn = obj.dsn</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and object_name = &lsquo;SUPERVISOR&rsquo;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">User to Object(Department)</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select username,object_id</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from w_sec_role_users rol_usr,w_sec_user_objects obj</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where rol_usr.username = obj.username</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and rol_usr.dsn = obj.dsn</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and object_name = &lsquo;DEPARTMENT&rsquo;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><b><span style="font-family: Garamond, serif;">&nbsp;</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><b><span style="font-family: Garamond, serif;">NOTE</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Data Security objects like Department and Supervisor are hierarchical objects.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">OBIA expects the following in w_sec_user_objects table:</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Provide top and all its child Dept ids for assigned user. Only top dept ID for an user not sufficient.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/d40b25c7fd4847a52bf5607f4dc04b7a/image001.jpg" style="width: 399px; height: 153px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Provide top Supervisor Person ID,that is sufficient for Supervisor security for assigned user</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/ccf33958210cb325f166eb8666285b15/image002.jpg" style="width: 398px; height: 118px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0.25in;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.25in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Indexing table for quicker access</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">The table which is expected to be used most frequently must be indexed.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">User+Data Object table will get accessed each time an user runs a report.</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">This table must be indexed for optimal query for security&nbsp;<i>&ldquo;where clauses&rdquo;</i>.</span></p> <a name="_Toc494896797"><span style="font-family: &quot;Courier New&quot;; color: black;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif; color: black;">Use BI Publisher to extract security metadata in csv format using SQL based reports from Fusion Apps security tables. (</span></a><b><span style="font-family: Garamond, serif; color: red;">*</span></b><span style="font-family: Garamond, serif; color: black;">)</span> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Log in to BI Publisher using a&nbsp;<b>Fusion Apps super user having access to &ldquo;all&rdquo; Security data sources that are required for the customer&rsquo;s security model</b>. Its possible that ETL user used for data extraction won&rsquo;t have access to the FA security tables required, so those users may not work. Work with Fusion Apps administrator to create such an user.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Schedule a BI publisher job for each SQL report using the link&nbsp;</span><a href="https://docs.oracle.com/cd/E28280_01/bi.1111/e22257/create_rpt_jobs.htm#BIPUG213" style="color: rgb(149, 79, 114);"><span style="font-family: Garamond, serif; color: black;">https://docs.oracle.com/cd/E28280_01/bi.1111/e22257/create_rpt_jobs.htm#BIPUG213</span></a></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">The report outputs in csv format must be uploaded to ftp location of the ETL server for ODI to consume.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><a href="https://docs.oracle.com/middleware/12211/bip/BIPAD/GUID-52398FBA-CB92-4A8D-9187-770A98C657E4.htm#BIPAD306" style="color: rgb(149, 79, 114);"><span style="font-family: Garamond, serif; color: black;">https://docs.oracle.com/middleware/12211/bip/BIPAD/GUID-52398FBA-CB92-4A8D-9187-770A98C657E4.htm#BIPAD306</span></a></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <a name="_Toc494896798"><span style="font-family: &quot;Courier New&quot;; color: black;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif; color: black;">Use the csv output file to load warehouse table via ODI.(Runs in full mode always, i.e. truncate and load).</span></a> <p class="MsoNormal" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><b><span style="font-family: Garamond, serif; color: red;">* Note:&nbsp;</span></b><span style="font-family: Garamond, serif; color: red;">The customer will have to ensure that access to Fusion Apps security data table is always available for BI publisher to query. While getting access ensure that security policies are adhered to.</span></p> <a name="_Toc494896799"><span style="font-family: Symbol; color: black;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif; color: black;">OBIA Metadata configuration</span></a> <a name="_Toc494896800" style=""><span style="color: black;">&nbsp;</span><span style="font-family: Garamond, serif; color: black;">Identify Security Objects to be implemented (Supervisor Person, Department, Position, etc.)</span></a> <a name="_Toc494896801" style=""><span style="color: black;">&nbsp;</span><span style="font-family: Garamond, serif; color: black;">Configure LDAP as Authentication Provider to Store extracted Fusion Apps Roles as LDAP Groups, refer to link below.</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><a href="https://docs.oracle.com/cd/E23943_01/bi.1111/e10543/privileges.htm#CJAFBFID" style="color: rgb(149, 79, 114);"><span style="font-family: Garamond, serif; color: black;">https://docs.oracle.com/cd/E23943_01/bi.1111/e10543/privileges.htm#CJAFBFID</span></a></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Use weblogic security provider BISQLGroupProvider (installed and configured on BI Server) to get Roles from DB to weblogic.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Create new Role or use existing pre-shipped OBIA roles as parents of these DB imported groups and link with Fusion Apps roles procured via LDAP. Refer to the flow below:</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/c7141a2a6528e30adfbba7fee976c3a4/image003.jpg" style="width: 522px; height: 179px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">The FA roles extracted must have Object Role as well as Data security Role mapping done in Enterprise Manager. Example provided below.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">FA Role</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">Existing WLS Role/OBIA Role</span></b></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">Type</span></b></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">HR Line Manager</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">BI Author</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">Object Security(AOR)</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">HR Line Manager</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">OBIA HR Data Sec Role(Dept)</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: Garamond, serif; color: black;">Data Security</span></p> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 0.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Seed Init blocks/variables in rpd or modify existing ones.&nbsp;</span><a href="https://docs.oracle.com/middleware/11119/biee/BIEMG/variables.htm#BIEMG373" style="color: rgb(149, 79, 114);"><span style="font-family: Garamond, serif; color: black;">https://docs.oracle.com/middleware/11119/biee/BIEMG/variables.htm#BIEMG373</span></a></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Data Security uptake steps in RPD</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 0.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Create init blocks in rpd to read&nbsp;</span><span style="font-family: Garamond, serif;">w_sec_user_objects table for each user. An example to create init block and associated variable is shown below</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">Example query for init block for the data security session variable could be as follows:</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">select object_id</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">from w_sec_role_users rol_usr,w_sec_user_objects obj</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">where rol_usr.username = obj.username</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">and rol_usr.dsn = obj.dsn</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">and object_name = &lsquo;DEPARTMENT&rsquo;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">and upper(username) = upper(&lsquo;:USER&rsquo;)</span><span style="font-family: Garamond, serif; font-size: 12pt;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Use existing RPD Role filters for logged in user using init blocks/variables or create new role filters if new roles were added in EM to extend OBIA security Role list. Example below shows use of an existing Data Security role to add a data security filter for a Subject Area.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/f8660ca31370537860084ecc642ca23c/image004.jpg" style="width: 525px; height: 258px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">Use the User to Data Object filter directly to control data filter in physical layer. This can be done for existing or new Roles extracted from Fusion Apps.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/d5a4ee347ac09f5e28e6b909ae8631af/image005.jpg" style="width: 493px; height: 189px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Data Security Roles in physical SQL(rpd access needed for this, for on prem customers)</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Roles apply data filters dynamically</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">If a user has 2 roles ROLE_HR_LOC and ROLE_HR_PAYROLL, the filters are appended to queries using &nbsp;OR not AND</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">E.g. if user has access to Location ID : 100,101,102 and Payroll ID 2000,2001 then filter will be&nbsp;</span><b><span style="font-size: 9pt; line-height: 12.84px; font-family: &quot;Courier New&quot;;">where location_id in (100,101,102) OR payroll_id in (2000,2001)</span></b></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Object Security Roles (rpd access needed for this, for on prem customers)</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Wingdings;">&sect;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Object Security roles extracted from FA (also called AoR in Fusion Apps) as groups into weblogic,must be either be:</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Mapped to BIAuthor,BIAdministrator or BIConsumer roles which are preshipped BI data security roles</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">OR</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Mapped to newly created custom Roles in Enterprise manager.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Object Permissions can be changed for those roles as follows.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 0.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/e9250c72522e516a2743f5e94823991f/image006.jpg" style="width: 578px; height: 331px;" /></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 0.75in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-size: 12pt; line-height: 17.12px; font-family: &quot;Courier New&quot;;">o<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">Web catalog Object security can be done for all object security roles, extracted/pre-seeded as follows.</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 2in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 12pt; line-height: 17.12px; font-family: Garamond, serif;">&nbsp;</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><img alt="" src="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/ed098aee-234e-477a-841f-4fb0881cb43c/Image/6ed1eee76e0292731b66dc5d721ebc11/image007.png" /></p> <p class="MsoNormal" style="margin: 0in 0in 8pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><b><span style="font-family: Garamond, serif;">&nbsp;</span></b></p> <a name="_Toc494896802"></a><a name="_APPENDIX_of_Fusion"></a><span style="font-family: Symbol; color: black;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif; color: black;">APPENDIX of some useful Fusion Apps security tables</span> <a name="_Toc494896803"><span style="font-family: Garamond, serif; color: black;">User assignments</span></a> <p class="MsoListParagraph" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_ASG_RESPONSIBILITIES</span></p> <a name="_Toc494896804"><span style="font-family: Garamond, serif; color: black;">Person,User</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 72.3pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_USERS</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 72.3pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_PERSON_NAMES_F</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 72.3pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_ALL_PEOPLE_F</span></p> <a name="_Toc494896805"><span style="font-family: Garamond, serif; color: black;">Org,Department</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_TREE_VERSION</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_ORG_TREE_NODE_RF</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_ORG_TREE_NODE_CF</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">HR_ORGANIZATION_UNITS&nbsp;</span></p> <a name="_Toc494896806"><span style="font-family: Garamond, serif; color: black;">Roles</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_USER_ROLES</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_GENERATED_DATA_ROLES</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">PER_ROLES_DN</span></p> <a name="_Toc494896807"><span style="font-family: Garamond, serif; color: black;">FND table for deriving Security clause</span></a> <p class="MsoListParagraphCxSpFirst" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_GRANTS</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_OBJECT_INSTANCE_SETS_VL</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_COMPILED_MENU_FUNCTIONS</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin: 0in 0in 0.0001pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_FORM_FUNCTIONS_VL</span></p> <p class="MsoListParagraphCxSpLast" style="margin: 0in 0in 8pt 1in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: -0.0in;"><span style="font-family: Symbol;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif;">FND_OBJECTS</span></p> <p class="MsoNormal" style="margin: 0in 0in 8pt 0.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-family: Garamond, serif;">More table and columns information in this link:&nbsp;</span><a href="https://docs.oracle.com/cloud/latest/globalcs_gs/OEDMH/TablesOverview.htm#TablesOverview" style="color: rgb(149, 79, 114);"><span style="font-size: 10pt; line-height: 14.2667px; font-family: Garamond, serif; color: black;">https://docs.oracle.com/cloud/latest/globalcs_gs/OEDMH/TablesOverview.htm#TablesOverview</span></a></p> <p class="MsoNormal" style="margin: 0in 0in 8pt 0.5in; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><b><span style="font-family: Garamond, serif;"><span style="color:#FF0000;">Note:</span>If customers require additional security predicates or objects, the same must be discussed with the Fusion Apps source team to identify the underlying tables and the corresponding SQL&rsquo;s.</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 8pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><span style="font-size: 13pt; line-height: 18.5467px; font-family: Garamond, serif;">&nbsp;</span></p> <a name="_Toc494896808"><span style="font-family: Symbol; color: black;">&middot;<span style="font-stretch: normal; font-size: 7pt; line-height: normal; font-family: &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: Garamond, serif; color: black;">APPENDIX for some of the useful SQL&rsquo;s</span></a> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">User to Person ID/Supervisor ID link</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select distinct username ,&nbsp;&nbsp; prsn.person_id from&nbsp; per_users usr,per_person_names_f prsn</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where&nbsp; usr.person_id = prsn.person_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and username = &lsquo;:USER&rsquo;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">User to Top Org ID</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select distinct pu.username,par.top_organization_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from per_all_people_f papf,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">per_users pu,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">per_person_names_f ppnf,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">per_asg_responsibilities par</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where pu.username = &lsquo;:USER&rsquo;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and PAR.person_id = PAPF.person_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and PAPF.Person_id = PU.person_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and PAPF.person_id = PPNF.person_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">Job Roles</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select distinct per_generated_data_roles.base_role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_base_role.role_common_name job_role_common_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_tl.role_name job_role_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_tl.description job_role_desc</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from per_generated_data_roles&nbsp; per_generated_data_roles ,per_roles_dn per_roles_dn_base_role&nbsp;&nbsp; , per_roles_dn_tl</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where per_roles_dn_base_role.role_id = per_generated_data_roles.base_role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and per_generated_data_roles.base_role_id = per_roles_dn_tl.role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp; per_roles_dn_tl.language = &#39;US&#39;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">Job Data Roles</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">select distinct per_user_roles.user_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_users.username</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_person_names_f.first_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_person_names_f.last_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_generated_data_roles.base_role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_base_role.role_common_name job_role_common_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_tl.role_name job_role_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp; ,per_roles_dn_tl.description job_role_desc</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">from per_user_roles&nbsp; ,&nbsp; per_users , per_person_names_f&nbsp; , per_generated_data_roles ,per_roles_dn per_roles_dn_base_role , per_roles_dn_tl</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">where per_user_roles.user_id = per_users.user_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp;&nbsp; per_person_names_f.person_id = per_users.person_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp;&nbsp; per_generated_data_roles.data_role_id = per_user_roles.role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp;&nbsp; per_roles_dn_base_role.role_id = per_generated_data_roles.base_role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp;&nbsp;&nbsp; per_generated_data_roles.base_role_id = per_roles_dn_tl.role_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">and&nbsp;&nbsp; per_roles_dn_tl.language = &#39;us&#39;</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><b><span style="font-family: Garamond, serif; color: black;">Table level data Filters along with roles</span></b></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">SELECT o.obj_name table_name,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; g.grant_type,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; g.instance_type,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; g.role_name,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; s.instance_set_id,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; f.function_name,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp; s.predicate filter_clause</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">FROM fnd_grants g,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; fnd_object_instance_sets_vl s,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; fnd_compiled_menu_functions m,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; fnd_form_functions_vl f,</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">&nbsp;&nbsp;&nbsp;&nbsp; fnd_objects o</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">WHERE</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">o.object_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = s.object_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">AND g.instance_set_id = s.instance_set_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">AND g.menu_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = m.menu_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">AND m.function_id&nbsp;&nbsp;&nbsp;&nbsp; = f.function_id</span></p> <p class="MsoNormal" style="margin: 0in 0in 0.0001pt; line-height: normal; font-size: 11pt; font-family: Calibri, sans-serif;"><span style="font-size: 9pt; font-family: &quot;Courier New&quot;; color: black;">order by g.role_name</span></p> <p class="MsoNormal" style="margin: 0in 0in 8pt; line-height: 15.6933px; font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(0, 0, 0); text-indent: 0px;"><b><span style="font-family: Garamond, serif;">&nbsp;</span></b></p> Saurav Mohapatra https://blogs.oracle.com/biapps/how-to-build-fusion-apps-security-in-bi-apps Mon Oct 09 2017 07:00:35 GMT-0400 (EDT) An Intensive Week in Colorado https://danischnider.wordpress.com/2017/10/08/an-intensive-week-in-colorado/ <p>In the last couple of days, I joined several interesting events in Colorado. First, I was able to take part of the “Advanced Data Vault &amp; Ensemble Modeling Summit” at Genesee Academy. After that, I attended the first “Global Data Summit” conference in Golden, Colorado. And finally, I was invited to a very special dinner of the “Boulder Business Intelligence Brain Trust”.</p> <p><span id="more-454"></span></p> <p><a href="https://twitter.com/GeneseeLabs/status/913447588019322880"><img title="advems_1.jpg" src="https://danischnider.files.wordpress.com/2017/10/iadvems_1.jpg?w=599&#038;h=324" alt="Advems 1" width="599" height="324" border="0" /><br /></a><em>All photos from Twitter (click on the photos to see original tweets)</em></p> <h1>Advanced Data Vault &amp; Ensemble Modeling Summit</h1> <p>Twelve Data Vault experts from different parts of the world met in Colorado for two days to exchange knowledge about Data Vault and Ensemble modeling. I expected a course where the two trainers, <a href="https://twitter.com/gohansgo">Hans Hultgren</a> and <a href="https://twitter.com/RemcoBroekmans">Remco Broekmans</a>, will explain us some special patterns of Data Vault modeling. Actually, the idea of this class was more to have an interactive discussion about some new ideas and modeling patterns and to find a common sense for future extensions of Ensemble Modeling and the next version of the CDVDM (Certified Data Vault Data Modeler) training material.</p> <p>In these two intensive days, we had a lot of interesting discussions about Ensemble Logical Modeling (ELM), integrated Hubs, special types of Satellites, key concatenation, Keyed-Instance Links, status tracking Satellites and much more. It was not possible to discuss all topics in detail, but for some of the subjects, we had long and detailed discussions.</p> <p>For me, the best parts of the course were the conversations with the other attendees during the coffee breaks (the coffee was “american-style”, i.e. watery, but the chats were good) and in the evening (with some self-brewed beers of <a href="https://twitter.com/geneseelabsbrew">Genesee Labs Brewing</a>). Because there were so many interesting things to be discussed, we even organized a “bonus track” on Sunday afternoon, where we had an extensive session with <a href="https://twitter.com/DV_Modeling">Dirk Lerner</a> about bi-temporal Satellites and PIT tables. Very complex, but interesting stuff!</p> <p><a href="https://twitter.com/DV_Modeling/status/913564376770142209"><img title="advems_2.jpg" src="https://danischnider.files.wordpress.com/2017/10/iadvems_2.jpg?w=600&#038;h=302" alt="Advems 2" width="600" height="302" border="0" /></a></p> <p>The weekend was also fully organized with hiking (harder than expected with my jet lag and the high altitude in Colorado), karaoke party (I missed that one), bi-temporal discussions (see above), escape room (we finished it in 55 minutes) and of course some nice craft beers (my favorite was the &#8220;I(70)PA&#8221; of <a href="http://www.elranchobrewing.com">El Rancho Brewing Company</a>).</p> <h1>Global Data Summit</h1> <p>After the weekend, the next interesting event started: The first “<a href="https://globaldatasummit.com">Global Data Summit</a>” took place in Golden, Colorado. It was a small, but exciting conference with more than 20 presentations and client cases about data modeling, data science, big data, streaming, data warehouse automation and much more. Two keynote were presented by <a href="https://www.linkedin.com/in/stephen-brobst-70127956/">Stephen Brobst</a> (CTO of Teradata) and <a href="https://twitter.com/rick_vanderlans">Rick van der Lans</a> (Founder of R20/Consultancy BV).</p> <p><a href="https://twitter.com/srobijns/status/914888164644331521"><img title="gds17_keynote_1.jpg" src="https://danischnider.files.wordpress.com/2017/10/igds17_keynote_1.jpg?w=213&#038;h=250" alt="Gds17 keynote 1" width="213" height="250" border="0" /></a> <a href="https://twitter.com/dani_schnider/status/915231720563023872"><img title="gds17_keynote_2.jpg" src="https://danischnider.files.wordpress.com/2017/10/igds17_keynote_2.jpg?w=326&#038;h=250" alt="Gds17 keynote 2" width="326" height="250" border="0" /><br /></a><em>Keynotes of Stephen Brobst and Rick van der Lans</em></p> <p>A highlight for me were the “5 x 5 presentations”, similar to TED talks. Twice a day, five speakers had to present an individual topic in five minutes. I know that it is much harder to speak for 5 minutes than for 45 or more minutes, and I was impressed that most of the speakers managed this challenge excellent.</p> <p><a href="https://twitter.com/dani_schnider/status/915344786386690048"><img title="gds17_5x5_1.jpg" src="https://danischnider.files.wordpress.com/2017/10/igds17_5x5_1.jpg?w=400&#038;h=300" alt="Gds17 5x5 1" width="400" height="300" border="0" /><br /></a><em><a href="https://twitter.com/lensilverston">Len Silverston</a> demonstrates (with his “victim” <a href="https://twitter.com/gohansgo">Hans Hultgren</a>) what to do with all the data that is coming.</em></p> <p><a href="https://twitter.com/dani_schnider/status/915346828547067905"><img title="gds17_5x5_2.jpg" src="https://danischnider.files.wordpress.com/2017/10/igds17_5x5_2.jpg?w=399&#038;h=236" alt="Gds17 5x5 2" width="399" height="236" border="0" /><br /></a><em><a href="https://twitter.com/Claudia_Imhoff">Claudia Imhoff</a> explains in 5 minutes how to lie with statistics.</em></p> <p><a href="https://twitter.com/dani_schnider/status/915350378920648704"><img title="gds17_5x5_3.jpg" src="https://danischnider.files.wordpress.com/2017/10/igds17_5x5_3.jpg?w=400&#038;h=206" alt="Gds17 5x5 3" width="400" height="206" border="0" /><br /></a><em><a href="https://twitter.com/gohansgo">Hans Hultgren</a> finishes the 5 x 5 presentations with a “psychiactric&#8221; speech.</em></p> <h1>BBBT Dinner</h1> <p>After the conference, we were invited by Claudia and Dave Imhoff to a dinner with some of the members of <a href="http://www.bbbt.us">BBBT</a> (Boulder Business Intelligence Brain Trust). The BBBT organization was founded by Claudia Imhoff in 2006 and organizes frequent product presentations with BI tool vendors for the BBBT members. The members are independent BI analysts, experts, consultants, graduate students or educators. Many of them live in Boulder and other parts of Colorado, but BBBT has members worldwide.</p> <p><a href="https://twitter.com/Claudia_Imhoff/status/915377721227792385"><img title="bbbt_dinner.jpg" src="https://danischnider.files.wordpress.com/2017/10/ibbbt_dinner.jpg?w=386&#038;h=415" alt="Bbbt dinner" width="386" height="415" border="0" /></a></p> <p>The seven days in Colorado were intensive, but very interesting for me. I think I need some time to process all these impressions and to have a look at the conference presentations (especially those I missed during the conference). Finally, it was a pleasure to meet a lot of interesting people that I knew before or get to know during the different events.</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danischnider.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danischnider.wordpress.com/454/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=danischnider.wordpress.com&#038;blog=80273571&#038;post=454&#038;subd=danischnider&#038;ref=&#038;feed=1" width="1" height="1" /> Dani Schnider http://danischnider.wordpress.com/?p=454 Sun Oct 08 2017 12:31:30 GMT-0400 (EDT) Canned Reports vs. Ad-hoc Analysis: Which to Use and When [Infographic] https://www.us-analytics.com/hyperionblog/canned-reports-vs-ad-hoc-analysis-which-to-use-and-when-infographic <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/canned-reports-vs-ad-hoc-analysis-which-to-use-and-when-infographic" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/canned%20reports.png?t=1512966730140" alt="Canned Reports vs. Ad-hoc Analysis: Which to Use and When [Infographic]" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p><a href="https://www.us-analytics.com/should-i-use-canned-reports-or-ad-hoc-analysis"></a>Different stakeholders demand different information in different formats and with different delivery requirements — a reality that can translate into a nightmare if you’ve been tasked with preparing reports to distribute the information.</p> <p>So how can you keep up with increasing demands (and stay sane)? <strong>The key to saving your time and energy is determining which reports can be "canned,"</strong> or automatically generated based on pre-set specifications.&nbsp;</p> <p><strong>Either way, you can maximize efficiency:</strong></p> <ul> <li><span style="background-color: transparent;">For insights that can be canned, you can automate pre-built reports.</span></li> </ul> <ul> <li>For all other use cases, give business users the ability to perform quick and easy ad-hoc analysis.</li> </ul> <p>So, how do you know which reporting requests are good candidates for canned reports? And which requests are better suited for spontaneous ad-hoc analysis? You can <span style="text-decoration: underline;"><strong><a href="#quiz">view the flow chart to get a quick answer</a></strong></span>! In this blog post,&nbsp;we’ll take a closer look at each type of reporting and how to maximize efficiency.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fcanned-reports-vs-ad-hoc-analysis-which-to-use-and-when-infographic&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Brian Marshall https://www.us-analytics.com/hyperionblog/canned-reports-vs-ad-hoc-analysis-which-to-use-and-when-infographic Thu Oct 05 2017 10:35:00 GMT-0400 (EDT) The 5 Best Resources for Planning Your Next EPM Project https://www.us-analytics.com/hyperionblog/resources-for-your-epm-project <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/resources-for-your-epm-project" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/best%20epm%20project%20resources.jpg?t=1512966730140" alt="best epm project resources.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Whether it’s your first EPM project, fifth project, or even your tenth — it won’t be a walk in the park. Implementations, upgrades, and migrations of comprehensive tools like Oracle Hyperion take time and <strong><a href="https://www.us-analytics.com/services/process-advisory">strategic planning</a></strong>. If you’re an EPM project veteran, you already know this, and your experience probably has you better prepared for what’s ahead. But, for all the novices out there, you might not know what to expect.</p> <p>Whatever your situation — jaded veteran, wide-eyed newbie, or somewhere in between — you could undoubtedly use some resources. In this blog post, we’ll cover the five best resources for planning your next EPM project. (Added bonus: they’re free to download).</p> <h2></h2> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fresources-for-your-epm-project&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/resources-for-your-epm-project Wed Oct 04 2017 18:29:48 GMT-0400 (EDT) Oracle Essbase On-Premise versus Oracle Essbase Cloud Service http://blog.performancearchitects.com/wp/2017/10/04/oracle-essbase-on-premise-versus-oracle-essbase-cloud-service/ <p>Author: Andrew Tauro, Performance Architects</p> <p>By now you have most likely seen a lot of material (including posts on our <a href="http://blog.performancearchitects.com/wp/tag/oac/">blog</a><u>) </u>regarding how <a href="https://www.oracle.com/solutions/business-analytics/business-intelligence/essbase/index.html">Essbase</a> has moved to the cloud as <a href="https://cloud.oracle.com/en_US/essbase">Essbase Cloud Service (ESSCS)</a>, which is part of the new <u>Oracle Analytics Cloud (OAC)</u>. You may still be wondering how the feature sets between the two versions of Essbase compare. The good news is that they compare very favorably.</p> <p>Essbase Cloud Service offers the next generation of Essbase product functionality. It is deployed on <a href="https://www.oracle.com/middleware/weblogic/index.html">WebLogic Application Server (WAS)</a>, with a Java-based Essbase Agent. This improves availability and monitoring capabilities via WAS, with most of the features of the old-school, C-based version of Essbase ported over.</p> <p>The solutions are very similar, but also differ in some key areas. Similarities include:</p> <ul> <li>Works with <a href="http://www.oracle.com/technetwork/middleware/smart-view-for-office/overview/index.html">Smart View</a> and other tools that connect to Essbase via the Essbase client toolkit or API, such as <a href="http://www.oracle.com/technetwork/middleware/data-integrator/overview/index.html">Oracle Data Integrator (ODI)</a></li> <li>Supports transparent partitions</li> <li>Supports both Block Storage Option (BSO) and Aggregate Storage Option (ASO) (see our <a href="http://blog.performancearchitects.com/wp/2017/09/13/defining-essbase-storage-options-aso-versus-bso/">blog post</a> on what these options offer for your solution design)</li> <li>Uses Location Aliases, Substitution Variables, Calculation Scripts, and load rules</li> <li>Loads dimensions, data, or both via flat files or relational tables</li> <li>Restricts access via firewall rules, SSL and VPN services</li> </ul> <p>Differences include:</p> <p>&nbsp;</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1.png"><img class="alignnone size-medium wp-image-2143" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1-300x278.png" alt="" width="300" height="278" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1-300x278.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1-768x711.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1-624x578.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/Essbase-vs-ESSCS-1.png 879w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Essbase Cloud (ESSCS), while based on a mature product, has not been out for long. However, the product team has been working on releasing additional capabilities at a steady pace. Due to this, we expect some of these differences to disappear soon. In the very near future, ESSCS will open up Essbase as a solution to more customers, just like on-premise Essbase has been doing for years.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2139 Wed Oct 04 2017 05:00:45 GMT-0400 (EDT) Voting Now Open for the 2018 - 2019 Board of Directors http://www.odtug.com/p/bl/et/blogaid=747&source=1 I've written about the values of being a member of ODTUG many times in the past. Today the message I have for you, the paid ODTUG member, is this – you should vote. Voting is now open (9:00 a.m. EDT on October 3, 2017). It ends at 11:59 p.m. EDT on Tuesday October 24, 2017. ODTUG http://www.odtug.com/p/bl/et/blogaid=747&source=1 Tue Oct 03 2017 09:49:25 GMT-0400 (EDT) PBCS and EPBCS Updates (October 2017): Simplified Auditing, Custom Dimensions in Projects, and More https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2017-october-updates <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2017-october-updates" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/pbcs%20october%20updates.jpg?t=1512966730140" alt="pbcs october updates.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The October updates for Oracle's<span>&nbsp;</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">Planning &amp; Budgeting Cloud Service (PBCS) and Enterprise Planning and Budgeting Cloud Service (EPBCS)</a><span>&nbsp;are here.&nbsp;</span>This blog post outlines several new features for both applications, enhancements, removal of support, and fixed defects.</p> <p><em>The monthly update for PBCS and EPBCS will occur on Friday, October 20 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fpbcs-and-epbcs-2017-october-updates&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2017-october-updates Mon Oct 02 2017 12:05:43 GMT-0400 (EDT) FCCS Updates (October 2017): Simplified Dimension Editor, Advanced Consolidation Capabilities, and More https://www.us-analytics.com/hyperionblog/fccs-updates-october-2017 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/fccs-updates-october-2017" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/FCCS%20October%20Update.jpg?t=1512966730140" alt="FCCS October Update.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The October updates for <a href="https://www.us-analytics.com/hyperionblog/faq-oracle-financial-consolidation-and-close-cloud-service-fccs">Oracle's<span>&nbsp;Financial Consolidation and Close Cloud Service</span>&nbsp;(FCCS)</a><span> are here</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">.</a><span>&nbsp;</span>This blog post outlines the latest features, fixed defects, considerations, and future functionality you should prepare for.&nbsp;</p> <p><em>The monthly update for FCCS will occur on Friday, October 20 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ffccs-updates-october-2017&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/fccs-updates-october-2017 Mon Oct 02 2017 11:16:28 GMT-0400 (EDT) OBIEE 12c in Docker from scratch https://gianniceresa.com/2017/09/obiee-12c-docker-from-scratch/ <p>I already wrote about Docker and OBIEE in Docker in relation to my <a href="https://github.com/gianniceresa/docker-images" target="_blank" rel="noopener">OBIEE Docker image</a> I published on GitHub.<br /> As it isn&#8217;t always obvious to get started with it, mainly if aren&#8217;t familiar with Docker, I decided to write this post which will cover from A to Z how you can get OBIEE running Docker covering: building the images, running the DB, start / stop OBIEE.<br /> All you will need for it is a host (a PC running linux, a server, a VM) with Docker installed.</p> <p>The process is covered with screenshots for each step and has been based on Oracle Database 12c R1 Docker container using the image provided on <a href="https://github.com/oracle/docker-images/tree/master/OracleDatabase" target="_blank" rel="noopener">https://github.com/oracle/docker-images/tree/master/OracleDatabase</a> and OBIEE 12.2.1.2 using the image provided on <a href="https://github.com/gianniceresa/docker-images/tree/master/OracleBIEE" target="_blank" rel="noopener">https://github.com/gianniceresa/docker-images/tree/master/OracleBIEE</a>.</p> <p>You can freely use another version of OBIEE (12.2.1.0.0, 12.2.1.1.0 or 12.2.1.3.0) or database (make sure it&#8217;s supported by the selected OBIEE version looking at the relative <a href="http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html" target="_blank" rel="noopener">certification matrix</a>.<br /> You can also use a different version of Java if wanted (again check the certification matrix). If you decide to use a different Java make sure you update the Checksum.md5 file with the new name and checksum and the filename inside the Dockerfile (&#8220;INSTALL_FILE_JDK&#8221; variable).</p> <blockquote><p>The Oracle Database Docker image hosted on GitHub can change at any time, so the parameters required by the container can be different than the ones used here. Have a look at the GitHub page to read through the various parameters.</p> <p>&nbsp;</p> <h4>More options available</h4> <p>There are various parameters accepted by both the OBIEE and database Docker images, you find examples and list of variables on GitHub.</p></blockquote> <h2>Getting the binaries</h2> <div id="attachment_443" style="max-width: 715px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_01.png"><img class="size-full wp-image-443" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_01.png" alt="Docker OBIEE12c from scratch: empty folders" width="705" height="218" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_01.png 705w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_01-300x93.png 300w" sizes="(max-width: 705px) 100vw, 705px" /></a><p class="wp-caption-text">Before to start I just created few empty folders to keep things &#8220;clean&#8221; (and easy to delete once done).</p></div> <div id="attachment_444" style="max-width: 1542px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02.png"><img class="size-full wp-image-444" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02.png" alt="Docker OBIEE12c from scratch: download database" width="1532" height="1253" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02.png 1532w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02-300x245.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02-768x628.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02-1024x838.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_02-1080x883.png 1080w" sizes="(max-width: 1532px) 100vw, 1532px" /></a><p class="wp-caption-text">Download the Oracle Database binaries. Version 12.1.0.2.0 will be good, binaries for Linux x86-64.</p></div> <div id="attachment_445" style="max-width: 1544px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03.png"><img class="size-full wp-image-445" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03.png" alt="Docker OBIEE12c from scratch: download OBIEE" width="1534" height="1060" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03.png 1534w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03-300x207.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03-768x531.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03-1024x708.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_03-1080x746.png 1080w" sizes="(max-width: 1534px) 100vw, 1534px" /></a><p class="wp-caption-text">Download the OBIEE binaries for the installation. Weblogic and OBIEE for Linux x86-64-bit.</p></div> <div id="attachment_446" style="max-width: 1547px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04.png"><img class="size-full wp-image-446" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04.png" alt="Docker OBIEE12c from scratch: download Oracle JDK" width="1537" height="564" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04.png 1537w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04-300x110.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04-768x282.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04-1024x376.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_04-1080x396.png 1080w" sizes="(max-width: 1537px) 100vw, 1537px" /></a><p class="wp-caption-text">Download Oracle JDK 8. Version 8u101, RPM installer for Linux x64.</p></div> <div id="attachment_447" style="max-width: 993px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05.png"><img class="size-full wp-image-447" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05.png" alt="Docker OBIEE12c from scratch: waiting downloads" width="983" height="1181" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05.png 983w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05-250x300.png 250w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05-768x923.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_05-852x1024.png 852w" sizes="(max-width: 983px) 100vw, 983px" /></a><p class="wp-caption-text">Wait for all the binaries to be downloaded, it&#8217;s few Gb of download, will take some time.</p></div> <h2>Building the Docker images for Oracle Database 12c R1 and OBIEE</h2> <div id="attachment_448" style="max-width: 901px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_10.png"><img class="size-full wp-image-448" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_10.png" alt="Docker OBIEE12c from scratch: clone database images from GIT" width="891" height="360" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_10.png 891w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_10-300x121.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_10-768x310.png 768w" sizes="(max-width: 891px) 100vw, 891px" /></a><p class="wp-caption-text">Clone the GitHub Oracle repository containing Docker images build files. A &#8220;docker-images&#8221; folder is created.</p></div> <div id="attachment_449" style="max-width: 1072px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11.png"><img class="size-full wp-image-449" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11.png" alt="Docker OBIEE12c from scratch: database files before to build" width="1062" height="526" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11.png 1062w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11-300x149.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11-768x380.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_11-1024x507.png 1024w" sizes="(max-width: 1062px) 100vw, 1062px" /></a><p class="wp-caption-text">Copy the binaires for the database in the 12.1.0.2 folder, this is the final content of the folder before to build the image.</p></div> <div id="attachment_450" style="max-width: 909px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_12.png"><img class="size-full wp-image-450" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_12.png" alt="Docker OBIEE12c from scratch: build database image" width="899" height="712" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_12.png 899w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_12-300x238.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_12-768x608.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></a><p class="wp-caption-text">To build the database image a script is provided. By calling &#8220;buildDockerImage.sh&#8221; you first see the parameters available.</p></div> <div id="attachment_451" style="max-width: 996px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_13.png"><img class="size-full wp-image-451" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_13.png" alt="Docker OBIEE12c from scratch: database image built successfully" width="986" height="317" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_13.png 986w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_13-300x96.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_13-768x247.png 768w" sizes="(max-width: 986px) 100vw, 986px" /></a><p class="wp-caption-text">The Oracle database 12.1.0.2 image is successfully built.</p></div> <div id="attachment_452" style="max-width: 969px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_20.png"><img class="size-full wp-image-452" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_20.png" alt="Docker OBIEE12c from scratch: clone OBIEE images from GIT" width="959" height="360" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_20.png 959w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_20-300x113.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_20-768x288.png 768w" sizes="(max-width: 959px) 100vw, 959px" /></a><p class="wp-caption-text">Clone my GitHub repository containing Docker images build files for OBIEE. A &#8220;docker-images&#8221; folder is created.</p></div> <div id="attachment_453" style="max-width: 1177px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21.png"><img class="size-full wp-image-453" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21.png" alt="Docker OBIEE12c from scratch: OBIEE files before to build" width="1167" height="431" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21.png 1167w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21-300x111.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21-768x284.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21-1024x378.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_21-1080x399.png 1080w" sizes="(max-width: 1167px) 100vw, 1167px" /></a><p class="wp-caption-text">Copy the binaires for OBIEE (including the JDK) in the 12.2.1.2.0 folder, this is the final content of the folder before to build the image.</p></div> <div id="attachment_454" style="max-width: 787px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_22.png"><img class="size-full wp-image-454" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_22.png" alt="Docker OBIEE12c from scratch: build OBIEE image" width="777" height="609" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_22.png 777w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_22-300x235.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_22-768x602.png 768w" sizes="(max-width: 777px) 100vw, 777px" /></a><p class="wp-caption-text">To build the OBIEE image a script is provided. By calling &#8220;buildDockerImage.sh&#8221; you first see the parameters available.</p></div> <div id="attachment_455" style="max-width: 1081px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23.png"><img class="size-full wp-image-455" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23.png" alt="Docker OBIEE12c from scratch: OBIEE image built successfully" width="1071" height="315" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23.png 1071w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23-300x88.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23-768x226.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_23-1024x301.png 1024w" sizes="(max-width: 1071px) 100vw, 1071px" /></a><p class="wp-caption-text">The Oracle OBIEE 12.2.1.2.0 image is successfully built.</p></div> <h2>Run a database container and an OBIEE container</h2> <div id="attachment_456" style="max-width: 1064px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30.png"><img class="size-full wp-image-456" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30.png" alt="Docker OBIEE12c from scratch: list available images" width="1054" height="157" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30.png 1054w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30-300x45.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30-768x114.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_30-1024x153.png 1024w" sizes="(max-width: 1054px) 100vw, 1054px" /></a><p class="wp-caption-text">Check the available Docker images on your host: the freshly built database and OBIEE are there as well as oraclelinux:7-slim, which is the base image used by both the database and OBIEE.</p></div> <div id="attachment_457" style="max-width: 1329px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31.png"><img class="size-full wp-image-457" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31.png" alt="Docker OBIEE12c from scratch: start database container" width="1319" height="183" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31.png 1319w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31-300x42.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31-768x107.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31-1024x142.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_31-1080x150.png 1080w" sizes="(max-width: 1319px) 100vw, 1319px" /></a><p class="wp-caption-text">Create and run the Oracle database Docker container for the first time. Few parameters are required. Check the logs of the container to see what happen inside.</p></div> <div id="attachment_458" style="max-width: 910px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_32.png"><img class="size-full wp-image-458" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_32.png" alt="Docker OBIEE12c from scratch: database ready, change password" width="900" height="530" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_32.png 900w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_32-300x177.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_32-768x452.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></a><p class="wp-caption-text">Once the message &#8220;DATABASE IS READY TO USE!&#8221; is visible it means your database is ready. It&#8217;s time to set a new password replacing the random one generated. (Ctrl+C to exit the log command)</p></div> <div id="attachment_459" style="max-width: 909px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_33.png"><img class="size-full wp-image-459" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_33.png" alt="Docker OBIEE12c from scratch: start OBIEE container" width="899" height="306" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_33.png 899w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_33-300x102.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_33-768x261.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></a><p class="wp-caption-text">Create and run the OBIEE Docker container for the first time. Few parameters are required. Check the logs of the container to see what happen inside. Remember to replace &#8220;192.168.120.81&#8221; the IP address of the host where Docker is running (but not 127.0.0.1 as this means the Docker container itself).</p></div> <div id="attachment_460" style="max-width: 964px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_34.png"><img class="size-full wp-image-460" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_34.png" alt="Docker OBIEE12c from scratch: OBIEE container ready" width="954" height="388" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_34.png 954w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_34-300x122.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_34-768x312.png 768w" sizes="(max-width: 954px) 100vw, 954px" /></a><p class="wp-caption-text">Once you see the status of components as &#8220;RUNNING&#8221; it means OBIEE is ready. (Exit the log command by pressing Ctrl+C)</p></div> <div id="attachment_461" style="max-width: 595px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_35.png"><img class="size-full wp-image-461" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_35.png" alt="Docker OBIEE12c from scratch: find mapped port for OBIEE" width="585" height="436" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_35.png 585w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_35-300x224.png 300w" sizes="(max-width: 585px) 100vw, 585px" /></a><p class="wp-caption-text">Get the ports Docker mapped for the OBIEE container (dynamic mapping). 9502 is the OBIEE front-end.</p></div> <div id="attachment_462" style="max-width: 1408px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36.png"><img class="size-full wp-image-462" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36.png" alt="Docker OBIEE12c from scratch: open OBIEE in a browser" width="1398" height="781" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36.png 1398w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36-300x168.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36-768x429.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36-1024x572.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_36-1080x603.png 1080w" sizes="(max-width: 1398px) 100vw, 1398px" /></a><p class="wp-caption-text">Open the address (ip + port) in your browser and test if OBIEE works. By default the login is &#8220;weblogic&#8221; and the password &#8220;Admin123&#8221;.</p></div> <h2>Stop the OBIEE container and the database container</h2> <div id="attachment_463" style="max-width: 1109px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40.png"><img class="size-full wp-image-463" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40.png" alt="Docker OBIEE12c from scratch: check status of containers and stop OBIEE and database" width="1099" height="218" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40.png 1099w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40-300x60.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40-768x152.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40-1024x203.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_40-1080x214.png 1080w" sizes="(max-width: 1099px) 100vw, 1099px" /></a><p class="wp-caption-text">Check the status of the Docker containers, both OBIEE and the database must be up. Stop the containers in the right order: OBIEE first, database after.</p></div> <div id="attachment_464" style="max-width: 1254px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41.png"><img class="size-full wp-image-464" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41.png" alt="Docker OBIEE12c from scratch: check status of containers once stopped" width="1244" height="128" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41.png 1244w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41-300x31.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41-768x79.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41-1024x105.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_41-1080x111.png 1080w" sizes="(max-width: 1244px) 100vw, 1244px" /></a><p class="wp-caption-text">Checking the new status of the Docker containers show both are &#8220;exited&#8221;.</p></div> <h2>Restart the containers: content is persisted, nothing is lost</h2> <div id="attachment_465" style="max-width: 1233px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42.png"><img class="size-full wp-image-465" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42.png" alt="Docker OBIEE12c from scratch: restart database and check logs" width="1223" height="169" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42.png 1223w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42-300x41.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42-768x106.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42-1024x142.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_42-1080x149.png 1080w" sizes="(max-width: 1223px) 100vw, 1223px" /></a><p class="wp-caption-text">Restart the containers in the right order: database first and OBIEE after. OBIEE must be started only when the database is ready.</p></div> <div id="attachment_466" style="max-width: 987px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_43.png"><img class="size-full wp-image-466" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_43.png" alt="Docker OBIEE12c from scratch: database ready" width="977" height="260" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_43.png 977w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_43-300x80.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_43-768x204.png 768w" sizes="(max-width: 977px) 100vw, 977px" /></a><p class="wp-caption-text">The database is ready again so it&#8217;s now possible to start OBIEE.</p></div> <div id="attachment_467" style="max-width: 995px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_44.png"><img class="size-full wp-image-467" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_44.png" alt="Docker OBIEE12c from scratch: restart OBIEE and check logs" width="985" height="168" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_44.png 985w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_44-300x51.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_44-768x131.png 768w" sizes="(max-width: 985px) 100vw, 985px" /></a><p class="wp-caption-text">Start the OBIEE container and check the logs.</p></div> <div id="attachment_468" style="max-width: 814px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_45.png"><img class="size-full wp-image-468" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_45.png" alt="Docker OBIEE12c from scratch: OBIEE ready again, find new port" width="804" height="865" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_45.png 804w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_45-279x300.png 279w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_45-768x826.png 768w" sizes="(max-width: 804px) 100vw, 804px" /></a><p class="wp-caption-text">The OBIEE Docker container is up again, find the new mapped port. Every time you restart the container the OBIEE ports can be mapping to different port numbers.</p></div> <div id="attachment_469" style="max-width: 1136px" class="wp-caption aligncenter"><a href="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46.png"><img class="size-full wp-image-469" src="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46.png" alt="Docker OBIEE12c from scratch: check status of containers, all UP again" width="1126" height="128" srcset="https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46.png 1126w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46-300x34.png 300w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46-768x87.png 768w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46-1024x116.png 1024w, https://gianniceresa.com/wp-content/uploads/2017/05/obi_docker_scratch_46-1080x123.png 1080w" sizes="(max-width: 1126px) 100vw, 1126px" /></a><p class="wp-caption-text">The status shows both containers up again.</p></div> <p>That&#8217;s it, you now have a Docker based OBIEE environment. You can run multiple containers in parallel, run multiple versions. Once you are done or you destroyed an environment while trying things just remove the container (&#8220;docker rm&#8221;) and start a new one.</p> <h2>tl;dr</h2> <p>If you just need the piece of code :</p><pre class="crayon-plain-tag"># - Build database image cd ~ mkdir db cd db git clone https://github.com/oracle/docker-images.git cd docker-images/OracleDatabase/dockerfiles # ToDo: copy binaries into ./12.1.0.2 ./buildDockerImage.sh -v 12.1.0.2 -e # - Build OBIEE image cd ~ mkdir bi cd bi git clone https://github.com/gianniceresa/docker-images.git cd docker-images/OracleBIEE # ToDo: copy binaries into ./12.2.1.2.0 ./buildDockerImage.sh -v 12.2.1.2.0 cd ~ # ToDo: delete ./db and ./bi and all their content (not needed anymore) # - Run containers docker run -d -p 1521:1521 --stop-timeout 600 --name database oracle/database:12.1.0.2-ee docker logs -f database # Ctrl+C when the message "DATABASE IS READY TO USE!" is visible docker exec database ./setPassword.sh Admin123 # replace 192.168.120.81 by your docker host address docker run -d -P \ --name obiee_12.2.1.2.0 \ --stop-timeout 600 \ -e "BI_CONFIG_RCU_DBSTRING=192.168.120.81:1521:orclpdb1" \ -e "BI_CONFIG_RCU_PWD=Admin123" \ oracle/obiee:12.2.1.2.0 docker logs -f obiee_12.2.1.2.0 # Ctrl+C when the components status "RUNNING" is visible docker port obiee_12.2.1.2.0</pre><p>&nbsp;</p> <p>The post <a rel="nofollow" href="https://gianniceresa.com/2017/09/obiee-12c-docker-from-scratch/">OBIEE 12c in Docker from scratch</a> appeared first on <a rel="nofollow" href="https://gianniceresa.com">Gianni&#039;s world: things crossing my mind</a>.</p> Gianni Ceresa https://gianniceresa.com/?p=470 Sat Sep 30 2017 11:45:06 GMT-0400 (EDT) OAC Datasets and Connections in Synopsis http://beyond-just-data.blogspot.com/2017/09/oac-datasets-and-connections-in-synopsis.html <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">it is late in the evening of Sept. 29, 2017 or early in the morning of Sept. 30, 2017...Regardless...I cannot sleep!</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I noticed that my Galaxy Note 8 updated my Oracle Synopsis App.&nbsp; I see that it is a 2.0 release...I am not one to read manuals and updates right off so I started looking around on the app to see what was new.&nbsp; The first thing that caught my eye was in the Settings.&nbsp; Something new stood out...Smart Lock on OAC</span><br /><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://4.bp.blogspot.com/-Rb5wNi-CxUE/Wc8Zhbmat8I/AAAAAAAALEI/a0u_-uNxXgs1y9GVAWz4nJOGePnZreSagCLcBGAs/s1600/20170929_185830.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://4.bp.blogspot.com/-Rb5wNi-CxUE/Wc8Zhbmat8I/AAAAAAAALEI/a0u_-uNxXgs1y9GVAWz4nJOGePnZreSagCLcBGAs/s400/20170929_185830.jpg" width="193" /></a></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Well that really got me wondering...Can my Synopsis connect to my OAC instance and if so what can I access.&nbsp; So I went to the main screen and created a new project and there was an option to connect to OAC.</span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://2.bp.blogspot.com/-Evl5c5CNudE/Wc8aWFER-oI/AAAAAAAALEQ/0ijfmSv4l7Q6XKelhaZkrG1ss2lJVAWVACLcBGAs/s1600/20170929_185635.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://2.bp.blogspot.com/-Evl5c5CNudE/Wc8aWFER-oI/AAAAAAAALEQ/0ijfmSv4l7Q6XKelhaZkrG1ss2lJVAWVACLcBGAs/s400/20170929_185635.jpg" width="193" /></a></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">So I figured, in for a penny in for a pound.&nbsp; I tapped (because we all know you do not click on a tablet) and I got a sign on screen.</span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://2.bp.blogspot.com/-2OxpFDuxOa4/Wc8asQTAFXI/AAAAAAAALEU/hY8iWc8c-NM3RtEAOdbX0q0MJhvEkUp0QCLcBGAs/s1600/Screenshot_20170929-230102.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://2.bp.blogspot.com/-2OxpFDuxOa4/Wc8asQTAFXI/AAAAAAAALEU/hY8iWc8c-NM3RtEAOdbX0q0MJhvEkUp0QCLcBGAs/s400/Screenshot_20170929-230102.jpg" width="193" /></a></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I provided my credentials and I was presented with a list of data sources. I had just created a data file named <b>Kool Kart Dataset</b> from a Data Flow I was working on and I noticed it was in my list.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-JIPPm2hi5_8/Wc8wlyedmlI/AAAAAAAALEk/S93b6Z29iA0N4Jx7TRuzx1283_kpNItHACEwYBhgL/s1600/20170929_234137.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://3.bp.blogspot.com/-JIPPm2hi5_8/Wc8wlyedmlI/AAAAAAAALEk/S93b6Z29iA0N4Jx7TRuzx1283_kpNItHACEwYBhgL/s400/20170929_234137.jpg" width="193" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Checking my Data Sources in OAC i see most of the same list...</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-cqurjVQslw0/Wc8w7HHjC3I/AAAAAAAALEs/UbwZcKLfiUkZ3J6oKPzCSRdapVdiorf8ACEwYBhgL/s1600/2017-09-29_23-27-50.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="828" data-original-width="933" height="353" src="https://3.bp.blogspot.com/-cqurjVQslw0/Wc8w7HHjC3I/AAAAAAAALEs/UbwZcKLfiUkZ3J6oKPzCSRdapVdiorf8ACEwYBhgL/s400/2017-09-29_23-27-50.png" width="400" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">The only difference is that my Subject Areas (the purple icons at the top of the list) are not listed in my Synopsis menu...This seems right since Synopsis seems top operate from a data file based on columns of Dimensions and Facts.&nbsp; So what happens if I try to load up one of the Essbase Connections...I tapped on Sample.Basic and...</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><a href="https://3.bp.blogspot.com/-yKFq7Zxt4tw/Wc8wnLxLi0I/AAAAAAAALEw/BptRUlIJm3IHnisEzcT55w6rstGbe7WmQCEwYBhgL/s1600/Screenshot_20170929-231947.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://3.bp.blogspot.com/-yKFq7Zxt4tw/Wc8wnLxLi0I/AAAAAAAALEw/BptRUlIJm3IHnisEzcT55w6rstGbe7WmQCEwYBhgL/s400/Screenshot_20170929-231947.jpg" width="193" /></a></span></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Well that was educational.</span><br /><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">So I tapped on my </span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><b>Kool Kart Dataset</b>.&nbsp; And it loaded up into Synopsis with some quick analyses based on the data in the file.</span><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-q0qgGE4Ymqk/Wc8z_cH8R6I/AAAAAAAALE4/uC0R9MvbUg4H3P6RkcxKZmHTH5PjIu3bACLcBGAs/s1600/Screenshot_20170930-010159.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="779" height="400" src="https://3.bp.blogspot.com/-q0qgGE4Ymqk/Wc8z_cH8R6I/AAAAAAAALE4/uC0R9MvbUg4H3P6RkcxKZmHTH5PjIu3bACLcBGAs/s400/Screenshot_20170930-010159.jpg" width="193" /></a></div><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">While it did a pretty good job of interpreting the data in the data file it treated the <b>Year </b>column as a measure as indicated by it being displayed on the X-axis with <b>Revenue </b>and<b> Number of Orders</b>.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /><b></b></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Well that is something to investigate further.&nbsp;&nbsp;</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /><b></b></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">The ability to connect to OAC, display content in Synopsis is a huge leap forward in mobile analytics.&nbsp; Oh and by the way, did you know Synopsis is FREE...Look for it on Apple iTunes and Google Play.</span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /><b></b></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /><b></b></span> Wayne D. Van Sluys tag:blogger.com,1999:blog-7768091516190336427.post-439100396311606439 Sat Sep 30 2017 02:12:00 GMT-0400 (EDT) ARCS Product Update (October 2017): Transaction Matching Updates, Fixed Defects, and Considerations https://www.us-analytics.com/hyperionblog/arcs-product-update-october-2017 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/arcs-product-update-october-2017" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/arcs%20october%20updates.jpg?t=1512966730140" alt="arcs october updates.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The October updates for Oracle's<span>&nbsp;</span><a href="https://www.us-analytics.com/hyperionblog/faq-account-reconciliation-cloud-service-arcs">Account Reconciliation Cloud Service (ARCS</a>) are here. In this blog post, we’ll outline new features, updates, and considerations.</p> <p>We’ll let you know any time there are updates to ARCS or any other Oracle EPM cloud products. Check the&nbsp;<a href="https://www.us-analytics.com/hyperionblog">US-Analytics Oracle EPM &amp; BI Blog</a><span>&nbsp;</span>every month.</p> <p><em>The monthly update for Oracle ARCS will occur on Friday, October 20 during your normal daily maintenance window.</em></p> <h3 style="text-align: center;"></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Farcs-product-update-october-2017&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/arcs-product-update-october-2017 Fri Sep 29 2017 17:39:38 GMT-0400 (EDT) Irish people presenting at OOW http://www.oralytics.com/2017/09/irish-people-presenting-at-oow.html <p>Here is a list of presentations at Oracle Open World and JavaOne in 2017, that will be given by people and partners based in Ireland.</p> <p>(I'll update this list if I find additional presentations)</p> <style type="text/css">table.myTable { border-collapse:collapse; } table.myTable td, table.myTable th { border:1px solid black;padding:5px; } </style> <table class="myTable"><th width="50">Day</th><th width="80">Time</th><th width="300">Presentation</th><th width="130">Location</th></tr><tr><td style="width:30px;">Sunday</td><td>13:45-14:30</td><td>SQL: One Language to Rule All Your Data [OOW SUN1238] <p>Brendan Tierney, Oralytics</p><p>SQL is a very powerful language that has been in use for almost 40 years. SQL comes with many powerful techniques for analyzing your data, and you can analyze data outside the database using SQL as well. Using the new Oracle Big Data SQL it is now possible to analyze data that is stored in a database, in Hadoop, and in NoSQL all at the same time. This session explores the capabilities in Oracle Database that allow you to work with all your data. Discover how SQL really is the unified language for processing all your data, allowing you to analyze, process, run machine learning, and protect all your data. </p><p>Hopefully this presentation will be a bit of Fun! For those who have been working with the database for a long time, we can sometimes forget what we can really do. For those starting out in the career may not realise what the database can do. The presentation delivers an important message while having a laugh or two (probably at me).</p><td>Marriott Marquis (Golden Gate Level) - Golden Gate C1/C2</td> </tr> <tr><td style="width:30px;">Monday</td><td>16:30-17:15</td><td>ESB Networks Automates Core IT Infrastructure and Grid Operations [CON7878] <p>Simon Holt, DBA / Technical Architect, ESB Networks</p><p>Andrew Walsh, OMS Application Support, ESB</p><p>In this session learn how ESB Networks deployed Oracle Utilities Network Management System Release 1.12 on a complete Oracle SuperCluster. Hear about the collaboration between multiple Oracle business units and the in-house expertise that delivered an end-to-end solution. This upgrade is an important step toward expanding ESB Network’s future network operations vision. Her about the challenges, the process of choosing a COTS solution, cybersecurity, and implementation. The session also explores the benefits the new system delivered when managing the effects of large-scale weather events, as well as the technical challenges of deploying a combined hardware and software solution.</p></p></td><td>Park Central (Floor 2) - Metropolitan I</td> </tr> <tr><td style="width:30px;">Monday</td><td>16:45-17:30</td><td>Automation and Innovation for Application Management and Support [CON7862] <p>Raja Roy, Associate Partner, IBM Ireland</p><p>Automation and innovation are transforming the way application support and development projects are being executed. Market trends show three fundamental shifts: innovation to improve quality of service delivery, the emergence of knowledge-based systems with capabilities for self-service and self-heal, and leveraging the power of the cloud to move capital expenditures to operating expenditures for enhanced functionality. In this session see how IBM introduced innovation in deployments globally to help customers achieve employee and business productivity and enhanced quality of services.</p></p></td><td>Moscone West - Room 3022</td> </tr> <tr><td style="width:30px;">Tuesday</td><td>12:15-13:00</td><td>DMigrating Oracle E-Business Suite to Oracle IaaS: A Customer Journey [CON1848] <p>Ken MacMahon, IT, Version 1</p><p>Ken Lynch, Head of IT, Irish Life</p><p>Simon Joyce, Consultant / Contractor, Version 1 Software</p><p>In this session hear about a leading global insurance provider’s experience of migrating Oracle E-Business Suite to Oracle Cloud. This session includes a discussion of the considerations for Oracle Iaas/PaaS vs. alternatives, the total cost of ownership for Oracle IaaS vs. on-premises solutions, the key project and support issues, the benefits of IaaS, and tips and tricks. Gain insights that can help others on their journey with Oracle IaaS generally and with Oracle E-Business Suite specifically.</p></p></td><td>Moscone West - Room 2001</td> </tr> <tr><td style="width:30px;">Wednesday</td><td>14:00-14:45</td><td>Ireland's An Post: Customer Analytics Using Oracle Analytics Cloud [CON7176] <p>Tony Cassidy, CEO, Vertice</p><p>John Hagerty, Oracle</p><p>An Post, the Republic of Ireland’s state-owned provider of postal services, is an organization in transformation. It has used data and analytics to create innovations that led to cost savings and better sustainability. The current focus—customer analytics for a new line of business called Parcels and Packets—utilizes Oracle Analytics Cloud to externalize pertinent data to clients through a portal in a secure, effective, and easy-to-manage environment. In this session hear from An Post and its partner, Vertice, as they discuss the architecture and solution, along with recommendations for ensuring success using Oracle Analytics Cloud.</p></p></td><td>Moscone West - Room 3009</td> </tr> <tr><td style="width:30px;">Thursday</td><td>13:45-14:30</td><td>Is SQL the Best Language for Statistics and Machine Learning? [OOW and JavaOne CON7350] <p>Brendan Tierney, Oralytics</p><p>Did you know that Oracle Database comes with more than 300 statistical functions? And most of these statistical functions are available in all versions of Oracle Database? Most people do not seem to know this. When we hear about people performing statistical analytics, we hear them talking about Excel and R, but what if we could do statistical analysis in the database without having to extract any data onto client machines? This presentation explores the various statistical areas available in Oracle Database and gives several demonstrations. We can also greatly expand our statistical capabilities by using Oracle R Enterprise with the embedded capabilities in SQL.</p><p>This presentation is just one of the 14 presentations that are scheduled for the Thursday! I believe this session is already fully booked, but you can still add yourself to the wait list.</p></p></td><td>Marriott Marquis (Golden Gate Level) - Golden Gate B</td> </tr></table> Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-8917482825588471532 Fri Sep 29 2017 08:51:00 GMT-0400 (EDT) How to Connect OBIEE and Tableau https://www.us-analytics.com/hyperionblog/how-to-connect-obiee-and-tableau <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/how-to-connect-obiee-and-tableau" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/connect%20obiee%20and%20tableau.jpg?t=1512966730140" alt="connect obiee and tableau.jpg" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>If you have <a href="https://www.us-analytics.com/hyperionblog/comparing-oracle-business-analytics-products-obiee-12c-vs.-bics-vs.-data-visualization">Oracle Business Intelligence Enterprise Edition (OBIEE)</a>, you’ve probably spent a lot of time honing this tool — and we can probably agree that it’s one of the most powerful BI tools for large enterprises.</p> <p>After all the time and work spent optimizing this tool, it’s frustrating when end users in various departments start using Tableau to build your reports. Tableau is a great, user-friendly tool, but OBIEE has something Tableau doesn’t (we’ll get to that a little further down).</p> <p>The feuding between OBIEE and Tableau doesn’t need to go on — you can use these tools in harmony. In this blog post, we’ll explain the differences between these tools, why you should connect them, and how you can connect them with relative ease.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fhow-to-connect-obiee-and-tableau&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/how-to-connect-obiee-and-tableau Thu Sep 28 2017 12:23:45 GMT-0400 (EDT) Syntax Issues with INMEMORY Column Clause https://danischnider.wordpress.com/2017/09/28/syntax-issues-with-inmemory-column-clause/ <p>With Oracle Database In-Memory, it is possible to populate individual columns of a table into the In-Memory Column Store. This is very useful for large tables, if only the frequently used columns should be populated to safe memory. The SQL syntax to define this seems to be straight-forward, but does not always work as expected.</p> <p><span id="more-439"></span></p> <p>Let’s assume we want to create a new table SALES_IM (as a copy of the SH.SALES table. The table should be configured as INMEMORY, except the rarely used columns CHANNEL_ID and PROMO_ID. The syntax diagrams of the CREATE TABLE and ALTER TABLE statements show us several options (Source: <em>Oracle Database 12c Release 2, Database SQL Language Reference</em>):</p> <p><img title="inmemory_syntax.jpg" src="https://danischnider.files.wordpress.com/2017/09/iinmemory_syntax1.jpg?w=600&#038;h=397" alt="Inmemory syntax" width="600" height="397" border="0" /></p> <p>The <em>inmemory_table_clause</em> defines whether the table is populated to the In-Memory Columns Store (IMCS) or not. With the <em>inmemory_column_clause</em>, we can turn individual columns on or off. At least, that’s what I expect. For the specific case above, I use the following statement:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CREATE TABLE sales_im INMEMORY</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">NO INMEMORY (channel_id, promo_id)</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AS SELECT * FROM sh.sales;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>Here, we already have the first surprise: Instead of a new table SALES_IM, we will get an error message. It seems that the syntax of the <em>inmemory_column_clause</em> is not supported in the CREATE TABLE statement, neither in Oracle 12.1.0.2 nor in 12.2.0.1.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">ORA-00922: missing or invalid option</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>Fortunately, this issue can be solved with two separate commands. First, the whole table must be set to INMEMORY, and in a second step, the unneeded columns are excluded. The following statements work fine:</p> <div> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CREATE TABLE sales_im INMEMORY</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AS SELECT * FROM sh.sales;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER TABLE sales_im NO INMEMORY (channel_id, promo_id);</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>With a query on V$IM_COLUMN_LEVEL, we can verify that the table is now populated correctly. All columns except CHANNEL_ID and PROMO_ID are available in the IMCS.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT column_name, inmemory_compression</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM v$im_column_level</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> WHERE table_name = &#8216;SALES_IM&#8217;;</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>COLUMN_NAME          INMEMORY_COMPRESSION</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROD_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CUST_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>TIME_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CHANNEL_ID           NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROMO_ID             NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>QUANTITY_SOLD        DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AMOUNT_SOLD          DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>With the keywords INMEMORY and NO INMEMORY, it is possible to change the columns in the IMCS whenever you want. To show this, we turn off INMEMORY for column TIME_ID, and in a second step, turn it on for column CHANNEL_ID. Note that the first INMEMORY keyword in both statements is on table level, the second [NO] INMEMORY on column level. Actually, the first one is optional, because the table is already set to INMEMORY.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER TABLE sales_im INMEMORY NO INMEMORY (time_id);</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER TABLE sales_im INMEMORY INMEMORY (channel_id);</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>As expected, TIME_ID is not in the IMCS anymore, but CHANNEL_ID is now populated:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>COLUMN_NAME          INMEMORY_COMPRESSION</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROD_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CUST_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>TIME_ID              NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CHANNEL_ID           DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROMO_ID             NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>QUANTITY_SOLD        DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AMOUNT_SOLD          DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>This example shows that it is always possible to switch the INMEMORY behavior for each individual column of a table that is set to INMEMORY. But does it work the other way, too? I do not want to populate the whole table to IMCS, but only the three columns PROD_ID, CUST:ID and TIME_ID. Based on the syntax diagrams, the following command should be allowed:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER TABLE sales_im NO INMEMORY INMEMORY (prod_id, cust_id, time_id);</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>In Oracle 12.1.0.2, this statement fails with an error message. The message is clear: This feature works only if the table is set to INMEMORY. So, we first must populate the whole table and then exclude the columns we don’t want to have in the IMCS.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">ORA-64361: column INMEMORY clause may only be specified for an inmemory table</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;">  </p> <p>In Oracle 12.2.0.1, this restriction seems to be gone, the statement above can be executed without an error. But when we look at the result in V$IM_COLUMN_LEVEL, it’s not what we would expect:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT column_name, inmemory_compression</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM v$im_column_level</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> WHERE table_name = &#8216;SALES_IM&#8217;;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span><br /></span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>no rows selected</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p>When the table is set to NO INMEMORY, it is not possible to populate individual columns to the IMCS. That’s very sad.</p> <p>The workaround is to set INMEMORY on table level and then specify all columns of the table either in the INMEMORY column clause or the NO INMEMORY column clause. This works in 12.1 and 12.2:</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>ALTER TABLE sales_im INMEMORY</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>   INMEMORY (prod_id, cust_id, time_id)</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>NO INMEMORY (promo_id, channel_id, amount_sold, quantity_sold);</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p>The result is now what we wanted to define: The first three columns of the table are in IMCS, all other columns are not.</p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>SELECT column_name, inmemory_compression</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>  FROM v$im_column_level</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span> WHERE table_name = &#8216;SALES_IM&#8217;;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>COLUMN_NAME          INMEMORY_COMPRESSION</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROD_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CUST_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>TIME_ID              DEFAULT             </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>CHANNEL_ID           NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>PROMO_ID             NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>QUANTITY_SOLD        NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;"><span>AMOUNT_SOLD          NO INMEMORY         </span></p> <p style="margin:0;font-size:10px;line-height:normal;font-family:Monaco;color:#fff900;background-color:#6c6c6c;min-height:14px;"> </p> <p> </p> <h1>Summary</h1> <p>Although it is possible to define the INMEMORY clause for individual columns of a table, not all syntax combinations are allowed. With CREATE TABLE, only the whole table can be populated. With ALTER TABLE, is is allowed to define the INMEMORY or NO INMEMORY clause on column level, but only if the table is set to INMEMORY. If NO INMEMORY is set on table level, the behavior depends on the database version. In version 12.1, we get an error message (which is bad). In version 12.2, the column definitions for INMEMORY are just ignored (which is even worse).</p> <p>Hopefully, these issues will be fixed in the next versions, either with supporting all combinations, or at least with correcting the syntax diagrams in the documentation.</p> <p> </p> </div><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/danischnider.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/danischnider.wordpress.com/439/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=danischnider.wordpress.com&#038;blog=80273571&#038;post=439&#038;subd=danischnider&#038;ref=&#038;feed=1" width="1" height="1" /> Dani Schnider http://danischnider.wordpress.com/?p=439 Wed Sep 27 2017 23:26:25 GMT-0400 (EDT) Coding is Cool Again — Join us at JavaOne https://blog.redpillanalytics.com/coding-is-cool-again-join-us-at-javaone-72719dfeb2df?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*b7hGvt9_POPby7P-81FD7Q.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/cYNF1EdbMJk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Umanoide</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>Fall is here and we are gearing up to head to <a href="http://redpillanalytics.com/oowjavaone2017/">San Francisco for Oracle OpenWorld</a>, October 1–5. However, this year Red Pill Analytics, an analytics consulting firm, will also be participating in JavaOne, October 1–5. So what is JavaOne and why are we there?</p><p>Let’s start by pointing out that Stewart Bryson, one of the co-founders of Red Pill Analytics, has roots in development. It’s no wonder that he is still drawn to the developer scene. If you are a developer in any way, you’ll want to be at JavaOne.</p><p>Compared to it’s colocated event, Oracle OpenWorld, JavaOne is a much smaller conference. The topics and focus are more for a developer audience and as you can imagine, is centered on Java, but there are other interesting sessions on general development including DevOps and Apache Kafka. The weekly content includes over 300 regular sessions, tutorials, Birds-of-a-Feather sessions, and hands-on labs. The whole conference is taking place in Moscone West this year, keeping it close to the Oracle OpenWorld action. You’ll also find great opportunities for networking with an amazing Exhibit Hall and evening events.</p><p>When you look over the website, it can be overwhelming. Here are some cool things happening at JavaOne that we think you should care about.</p><h4><a href="https://www.oracle.com/javaone/javaone4kids.html"><strong>JavaOne for Kids</strong></a><br>Saturday, October 1</h4><p>Kicking off JavaOne is JavaOne4Kids, an event exposing 500 kids to the fun of coding including Minecraft, Python, and SQL. This is an unique event that offers kids the opportunity to learn about technology in a new and exciting way. We all know that kids absorb information faster then we do. Let’s catch them early and show them how interesting and exciting development can be.</p><p>Our very own <a href="https://twitter.com/MeKolbe">Michelle Kolbe</a> will be one of the volunteers. She is actively involved in Oracle Academy and other kids coding events. We cannot wait to hear more about the fun and cool things that happen onsite. Learn more about it here. <a href="https://www.oracle.com/javaone/javaone4kids.html">https://www.oracle.com/javaone/javaone4kids.html</a></p><h4><strong>Free event: </strong><a href="https://developer.oracle.com/code/sanfrancisco-oct-2017"><strong>Oracle Code Event</strong></a><strong> <br>Tuesday, October 3</strong></h4><p>Not sure if you can commit to an entire week of JavaOne? Then check out the Oracle Code Event. Tuesday night, The Oracle Code tour is opening the doors to San Francisco at JavaOne. This developer-run event is for developers! It includes 30 sessions and 3 Hands on labs, all for free. You also get access to the keynotes and the exhibit hall.</p><h4><a href="https://www.oracle.com/javaone/developer-lounge.html?source=WWMK170331P00042:EM:IP:::LearnMore-Email11&amp;pcode=WWMK170331P00042&amp;sc=EM:IP:::LearnMore-Email11&amp;elq_mid=88292&amp;sh=14182419221515221612152522290334142403&amp;cmid=WWMK170331P00042">The Developer Lounge</a><br>Monday, October 2 — Wednesday, October 4</h4><p>Do you want to see all the cool and innovative things you can do with code, including robots, beer, games, t-shirts and code? Need we say more? Make sure to check out the Bullet Time Photo Booth. Who doesn’t want to relive one of those slo-mo scenes from “The Matrix”? See what happens when 60 Raspberry Pi cameras take your picture. We’re afraid Stewart may never leave the Matrix exhibit.</p><h4><a href="http://redpillanalytics.com/oowjavaone2017/">Can’t miss Red Pill Analytics’ Sessions at JavaOne</a></h4><h4>RDBMS to Kafka: Stories from the Message Bus Stop</h4><p><strong>Stewart Bryson, Red Pill Analytics &amp; Bjoern Rost, The Pythian Group</strong><br>Monday, Oct 2, 4:30–5:15 p.m. | Moscone West — Room 2002</p><h4>Build Happiness: Using Gradle to Build Better Software</h4><p><strong>Stewart Bryson, Red Pill Analytics<br></strong>Wednesday, Oct 4, 1:45–2:30 p.m. | Moscone West — Room 2004</p><h4>Practical Advice from a Developer Using a Cloud-Based DevOps Environment</h4><p><strong>Stewart Bryson, Red Pill Analytics<br></strong>Wednesday, Oct 4, 5:30–6:15 p.m. | Moscone West — Room 2002</p><p>We hope to see you at JavaOne. If you plan on attending, <a href="https://twitter.com/RedPillA">tweet</a> us and let’s see if we can connect onsite.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=72719dfeb2df" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/coding-is-cool-again-join-us-at-javaone-72719dfeb2df">Coding is Cool Again — Join us at JavaOne</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Lauren Prezby https://medium.com/p/72719dfeb2df Wed Sep 27 2017 09:28:23 GMT-0400 (EDT) Coding is Cool Again — Join us at JavaOne http://redpillanalytics.com/coding-is-cool-again%e2%80%8a-%e2%80%8ajoin-us-at-javaone/ <p><img width="300" height="225" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?fit=300%2C225" class="attachment-medium size-medium wp-post-image" alt="Coding is Cool" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?w=1920 1920w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?resize=300%2C225 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?resize=768%2C576 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?resize=1024%2C768 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5472" data-permalink="http://redpillanalytics.com/coding-is-cool-again%e2%80%8a-%e2%80%8ajoin-us-at-javaone/umanoide-112489/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?fit=1920%2C1440" data-orig-size="1920,1440" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Coding is Cool" data-image-description="&lt;p&gt;Coding is Cool&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?fit=300%2C225" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/umanoide-112489.jpg?fit=1024%2C768" /></p><p>Fall is here and we are gearing up to head to San Francisco for Oracle OpenWorld, October 1–5. However, this year Red Pill Analytics, an analytics consulting firm, will also be participating in JavaOne, October 1–5. So what is JavaOne and why are we there?</p> <p>Let’s start by pointing out that Stewart Bryson, one of the co-founders of Red Pill Analytics, has roots in development. It’s no wonder that he is still drawn to the developer scene. If you are a developer in any way, you’ll want to be at JavaOne.</p> <p>Compared to it’s colocated event, Oracle OpenWorld, JavaOne is a much smaller conference. The topics and focus are more for a developer audience and as you can imagine, is centered on Java, but there are other interesting sessions on general development including DevOps and Apache Kafka. The weekly content includes over 300 regular sessions, tutorials, Birds-of-a-Feather sessions, and hands-on labs. The whole conference is taking place in Moscone West this year, keeping it close to the Oracle OpenWorld action. You’ll also find great opportunities for networking with an amazing Exhibit Hall and evening events.</p> <p>When you look over the website, it can be overwhelming. Here are some cool things happening at JavaOne that we think you should care about.</p> <hr /> <h3><a href="https://www.oracle.com/javaone/javaone4kids.html"><strong>JavaOne for Kids</strong></a></h3> <h4><strong>Saturday, October 1</strong></h4> <p>Kicking off JavaOne is JavaOne4Kids, an event exposing 500 kids to the fun of coding including Minecraft, Python, and SQL. This is an unique event that offers kids the opportunity to learn about technology in a new and exciting way. We all know that kids absorb information faster then we do. Let’s catch them early and show them how interesting and exciting development can be.<br /> Our very own <a href="https://twitter.com/MeKolbe">Michelle Kolbe</a> will be one of the volunteers. She is actively involved in Oracle Academy and other kids coding events. We cannot wait to hear more about the fun and cool things that happen onsite. Learn more about it here. https://www.oracle.com/javaone/javaone4kids.html</p> <p>&nbsp;</p> <hr /> <h3><a href="https://developer.oracle.com/code/sanfrancisco-oct-2017"><strong>Free event: Oracle Code Event</strong></a></h3> <h4><strong>Tuesday, October 3</strong></h4> <p>Not sure if you can commit to an entire week of JavaOne? Then check out the Oracle Code Event. Tuesday night, The Oracle Code tour is opening the doors to San Francisco at JavaOne. This developer-run event is for developers! It includes 30 sessions and 3 Hands on labs, all for free. You also get access to the keynotes and the exhibit hall.</p> <hr /> <h3><a href="https://www.oracle.com/javaone/developer-lounge.html"><strong>The Developer Lounge</strong></a></h3> <h4><strong>Monday, October 2 — Wednesday, October 4</strong></h4> <p>Do you want to see all the cool and innovative things you can do with code, including robots, beer, games, t-shirts and code? Need we say more? Make sure to check out the Bullet Time Photo Booth. Who doesn’t want to relive one of those slo-mo scenes from “The Matrix”? See what happens when 60 Raspberry Pi cameras take your picture. We’re afraid Stewart may never leave the Matrix exhibit.</p> <hr /> <h3><a href="http://redpillanalytics.com/oowjavaone2017/"><strong>Can’t miss Red Pill Analytics’ Sessions at JavaOne</strong></a></h3> <h4><strong>RDBMS to Kafka: Stories from the Message Bus Stop</strong></h4> <p>Stewart Bryson, Red Pill Analytics &amp; Bjoern Rost, The Pythian Group<br /> Monday, Oct 2, 4:30–5:15 p.m. | Moscone West — Room 2002</p> <h4><strong>Build Happiness: Using Gradle to Build Better Software</strong></h4> <p>Stewart Bryson, Red Pill Analytics<br /> Wednesday, Oct 4, 1:45–2:30 p.m. | Moscone West — Room 2004</p> <h4><strong>Practical Advice from a Developer Using a Cloud-Based DevOps Environment</strong></h4> <p>Stewart Bryson, Red Pill Analytics<br /> Wednesday, Oct 4, 5:30–6:15 p.m. | Moscone West — Room 2002</p> <hr /> <p>We hope to see you at JavaOne. If you plan on attending, <a href="https://twitter.com/RedPillA">tweet</a> and let’s see if we can connect onsite.</p> Lauren Prezby http://redpillanalytics.com/?p=5471 Wed Sep 27 2017 09:27:55 GMT-0400 (EDT) How to Create a Data Source in Oracle Enterprise Performance Reporting Cloud Service (EPRCS) http://blog.performancearchitects.com/wp/2017/09/27/how-to-create-a-data-source-in-oracle-enterprise-performance-reporting-cloud-service-eprcs/ <p>Author: Mike McClean, Performance Architects</p> <p><a href="https://cloud.oracle.com/enterprise-performance-reporting-cloud">Oracle Enterprise Performance Reporting Cloud Service (EPRCS)</a> provides a solution whereby organizations can combine narrative along with management financial reporting in order to explain results.  It allows various contributors to collaborate across multiple sources and locations.</p> <p>One of the features in EPRCS is the ability to pull in data from other <a href="https://cloud.oracle.com/en_US/home">Oracle</a>-supported cloud solutions.  This is accomplished by creating data sources.  These data sources can be used in to develop reports in EPRCS.  Once these reports are created, they can then be embedded into doclets.</p> <p>To create a data source from another cloud application, navigate to the <strong><em>Library</em></strong>.  Select <strong>D<em>ata Sources -&gt; Create -&gt; Data Source</em></strong>.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1.png"><img class="alignnone size-medium wp-image-2137" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1-300x107.png" alt="" width="300" height="107" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1-300x107.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1-768x274.png 768w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1-1024x365.png 1024w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1-624x223.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS1.png 1166w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>From the Data Source dialog box, enter the <strong><em>Data Source Name</em></strong>, <strong><em>Server Name</em></strong>, <strong><em>Identity Domain</em></strong>, <strong><em>Administrator User ID</em></strong>, <strong><em>Administrator Password</em></strong>, <strong><em>Application Name</em></strong> and <strong><em>Cube Name</em></strong>.  Select the <strong><em>Type</em></strong> from the drop-down box.  Test the connection.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS2.png"><img class="alignnone size-medium wp-image-2136" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS2-300x175.png" alt="" width="300" height="175" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS2-300x175.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS2-624x364.png 624w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS2.png 688w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p><strong><em>Type</em></strong> options include:</p> <ul> <li>Oracle Planning and Budgeting Cloud Service (PBCS)</li> <li>Oracle Essbase Cloud Service (ESSCS)</li> <li>Oracle Profitability and Cost Management Cloud Service (PCMCS)</li> <li>Essbase Analytic Provider Services</li> </ul> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS3.png"><img class="alignnone size-medium wp-image-2135" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS3-300x50.png" alt="" width="300" height="50" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS3-300x50.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/09/EPRCS3.png 452w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>If you have any other questions regarding your EPRCS needs, please contact us at <a href="mailto:communications@performancearchitects.com">communications@performancearchitects.com</a> and we’ll see what we can do to help.</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2134 Wed Sep 27 2017 05:39:48 GMT-0400 (EDT) US-Analytics Acquires Atlanta-based Rittman Mead America Inc. https://www.us-analytics.com/hyperionblog/us-analytics-acquires-rittman-mead-america <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/us-analytics-acquires-rittman-mead-america" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Rittman%20Mead%20Logo-1.png?t=1512966730140" alt="Rittman Mead Logo-1.png" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>US-Analytics, a leader in EPM consulting and services, acquired Atlanta-based BI firm Rittman Mead America (RMA) for an undisclosed amount this week to better serve the needs of customers nationwide. Both companies bring decades of experience in the development and support of business analytics systems. Their leaders share a singular mission: help organizations harness the power of their data.</p> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fus-analytics-acquires-rittman-mead-america&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Yasmin Morrison https://www.us-analytics.com/hyperionblog/us-analytics-acquires-rittman-mead-america Mon Sep 25 2017 16:55:25 GMT-0400 (EDT) #DataVault Issues Resolved http://danlinstedt.com/allposts/datavaultcat/datavault-issues-resolved/ A quick update of old issues, and new solutions for Data Vault, CDVP2, data vault system of Business intelligence, and why it&#8217;s pertinent to successful enterprise data warehouses. Dan Linstedt http://danlinstedt.com/?p=2881 Mon Sep 25 2017 14:15:08 GMT-0400 (EDT) Got Lunch Plans on User Group Sunday at Oracle OpenWorld? http://redpillanalytics.com/oow17lunch/ <p><img width="300" height="200" src="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?fit=300%2C200" class="attachment-medium size-medium wp-post-image" alt="Pizza with User Group" srcset="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?w=1920 1920w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?resize=300%2C200 300w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?resize=768%2C512 768w, https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?resize=1024%2C683 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5462" data-permalink="http://redpillanalytics.com/oow17lunch/alexandra-gorn-308385/" data-orig-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?fit=1920%2C1281" data-orig-size="1920,1281" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Pizza with User Group" data-image-description="&lt;p&gt;Pizza with User Group&lt;/p&gt; " data-medium-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?fit=300%2C200" data-large-file="https://i1.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/alexandra-gorn-308385.jpg?fit=1024%2C683" /></p><p class="graf graf--p">Some of the best presentations at Oracle Open World are on User Group Sunday, on Oct 1st. It can be challenging to pay attention in sessions though when your stomach is growling because there’s no conference meal that day.</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Regional User Groups have the solution!</strong></p> <p class="graf graf--p">Join regional user groups at the Children’s Museum next to Moscone to get some pizza, learn about why you should join the group in your area, and hear some lightning talks from some of the stellar regional speakers.</p> <p class="graf graf--p"><strong>We’ll be serving pizza from 11:30am–3pm but you <a class="markup--anchor markup--p-anchor" href="https://nocoug.wildapricot.org/widget/event-2669356" target="_blank" rel="noopener" data-href="https://nocoug.wildapricot.org/widget/event-2669356">must register</a> in advance!</strong></p> <p class="graf graf--p">Thanks to Quest as the premier sponsor of this event. Participating user groups:<br /> * Northeast Ohio Oracle Users Group (NEOOUG)<br /> * Northern California Oracle Users Group (NoCOUG)<br /> * Oregon and Southern Washington Oracle User Group (OSWOUG)<br /> * Rocky Mountain Oracle Users Group (RMOUG)<br /> * Southeast Michigan Oracle Professionals (SEMOP)<br /> * Utah Oracle Users Group (UTOUG)</p> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Keep it Local!</strong></p> <p class="graf graf--p">IOUG has regional user groups throughout the country. If you are not a member of your local group, you should join today! These are volunteer run organizations that provide full-day conferences and luncheon events throughout the year to their local audience. <a class="markup--anchor markup--p-anchor" href="http://www.ioug.org/rugs" target="_blank" rel="nofollow noopener noopener" data-href="http://www.ioug.org/rugs">http://www.ioug.org/rugs</a></p> <figure class="graf graf--figure"><img class="graf-image" src="https://i1.wp.com/cdn-images-1.medium.com/max/1600/1*VoVFRqV5EadVvuvwOy-R2A.png?resize=1000%2C597&#038;ssl=1" data-image-id="1*VoVFRqV5EadVvuvwOy-R2A.png" data-width="1000" data-height="597" data-recalc-dims="1" /><figcaption class="imageCaption">IOUG Regional User Groups by State</figcaption></figure> <p class="graf graf--p">Side note: Apologies that the above graph does not include Canada. I love how easy it is to create graphs in Tableau but showing multiple countries is not as simple. There are groups in Canada also.</p> Michelle Kolbe http://redpillanalytics.com/?p=5461 Mon Sep 25 2017 11:26:22 GMT-0400 (EDT) Got Lunch Plans on User Group Sunday at Oracle Open World? https://blog.redpillanalytics.com/got-lunch-on-user-group-sunday-at-oracle-open-world-2730f5196cb?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uVx4YkiS-Ff6vCoRpp4TAA.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/photos/52jG7-FN22Y?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Alexandra Gorn</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>Some of the best presentations at Oracle Open World are on User Group Sunday, on Oct 1st. It can be challenging to pay attention in sessions though when your stomach is growling because there’s no conference meal that day.</p><p><strong>Regional User Groups have the solution!</strong></p><p>Join regional user groups at the Children’s Museum next to Moscone to get some pizza, learn about why you should join the group in your area, and hear some lightning talks from some of the stellar regional speakers.</p><p>We’ll be serving pizza from 11:30am–3pm but <strong>you </strong><a href="https://nocoug.wildapricot.org/widget/event-2669356"><strong>must register</strong></a><strong> in advance!</strong></p><p>Thanks to Quest as the premier sponsor of this event. Participating user groups: <br>* Northeast Ohio Oracle Users Group (NEOOUG)<br>* Northern California Oracle Users Group (NoCOUG)<br>* Oregon and Southern Washington Oracle User Group (OSWOUG)<br>* Rocky Mountain Oracle Users Group (RMOUG)<br>* Southeast Michigan Oracle Professionals (SEMOP)<br>* Utah Oracle Users Group (UTOUG)</p><p><strong>Keep it Local!</strong></p><p>IOUG has regional user groups throughout the country. If you are not a member of your local group, you should join today! These are volunteer run organizations that provide full-day conferences and luncheon events throughout the year to their local audience. <a href="http://www.ioug.org/rugs">http://www.ioug.org/rugs</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*VoVFRqV5EadVvuvwOy-R2A.png" /><figcaption>IOUG Regional User Groups by State</figcaption></figure><p>Side note: Apologies that the above graph does not include Canada. I love how easy it is to create graphs in Tableau but showing multiple countries is not as simple. There are groups in Canada also.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2730f5196cb" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/got-lunch-on-user-group-sunday-at-oracle-open-world-2730f5196cb">Got Lunch Plans on User Group Sunday at Oracle Open World?</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Michelle Kolbe https://medium.com/p/2730f5196cb Fri Sep 22 2017 19:29:28 GMT-0400 (EDT) Unify Update - v1.0.1 http://www.rittmanmead.com/blog/2017/09/unify-v101/ <img src="http://www.rittmanmead.com/blog/content/images/2017/09/unifyBlue.svg" alt="Unify Update - v1.0.1"><p><img src="http://www.rittmanmead.com/blog/content/images/2017/09/endtoend.svg" alt="Unify Update - v1.0.1"></p> <p>We have updated Unify following feedback from our customers and have released version 1.0.1. The following bugs have been fixed and features added:</p> <ul> <li>Change the default port to 3724 as 8080 is the default port of Oracle XE.</li> <li>Allow port configuration in the desktop app.</li> <li>Fixed problem with date filters not working with >, >=, &lt;, &lt;= operators.</li> <li>Fixed some problems using presentation variables used in filters.</li> <li>Made the preview table scale to the resolution of the screen instead of being fixed size.</li> <li>Enabled parsing for dashboard pages, so an OBIEE page can be opened and each report from it will be loaded into Unify.</li> <li>Made viewing column or filter panes optional in the UI.</li> <li>Improved tray icons for Mac distribution of the Desktop app.</li> <li>Distinguish measures and attributes with icons in the presentation layer.</li> <li>Allow queries from multiple subject areas.</li> <li>Switched to Tableau WDC 2.0.9 to facilitate compatbility with Tableau 10.0.</li> </ul> <p>You download Unify from our website: <a href="https://unify.ritt.md">https://unify.ritt.md</a></p> Minesh Patel fb7ec39f-5eb1-47a5-ac7e-b5a805d62e94 Fri Sep 22 2017 08:54:06 GMT-0400 (EDT) BI Cloud Connector – Download Data Extraction Files http://www.ateam-oracle.com/bi-cloud-connector-download-data-extraction-files/ Introduction The Oracle Fusion based SaaS offerings provide an interesting tool to extract data and to store them in CSV format on a shared resource like the built-in UCM server or a Storage Cloud: BI Cloud Connector (BICC). The extracted data can be copied from these cloud resources and downloaded to local resources, before post-processing [&#8230;] Ulrich Janke http://www.ateam-oracle.com/?p=46665 Fri Sep 22 2017 05:14:59 GMT-0400 (EDT) ODTUG September News http://www.odtug.com/p/bl/et/blogaid=746&source=1 The ODTUG September News includes ODTUG Kscope18 updates, ODTUG Board of Directors voting information, ODTUG community news, upcoming ODTUG webinars, and information about ODTUG at Oracle OpenWorld 2017. ODTUG http://www.odtug.com/p/bl/et/blogaid=746&source=1 Thu Sep 21 2017 12:22:23 GMT-0400 (EDT) Welcome to ODTUG Kscope18! http://www.odtug.com/p/bl/et/blogaid=744&source=1 As the conference chair for ODTUG Kscope18, I’d like to be the first to welcome you to the next iteration of the ODTUG Kscope conference! Every year is a fresh opportunity for new and exciting things and this year is no exception. ODTUG http://www.odtug.com/p/bl/et/blogaid=744&source=1 Thu Sep 21 2017 10:46:40 GMT-0400 (EDT) Defining Essbase Storage Options: ASO Versus BSO http://blog.performancearchitects.com/wp/2017/09/20/defining-essbase-storage-options-aso-versus-bso/ <p>Authors: Warren Pereira and Andrew Tauro, Performance Architects</p> <p><a href="https://www.oracle.com/solutions/business-analytics/business-intelligence/essbase/index.html">Oracle’s Essbase</a> is a popular multidimensional database platform that powers business analytics solutions the world over, both on-premise and as Software-as-a-Service (SaaS, in the “cloud”). The name stands for “Extensible Spreadsheet Database” because this database’s dimensions provide multiple views of a dataset, and you can drive complex calculations off of these datasets.</p> <p>Dimensions can be defined as characteristics of the data, which vary from financial items such as charts of accounts, business entities, and physical or logical characteristics such as materials and markets. As a result of the multi-dimensional nature of Essbase databases, they are usually simplistically referred to as “cubes,” after one of the primary three-dimensional objects that we are familiar with. However, Essbase databases are not restricted to just three dimensions, as they usually consist of at least seven to nine dimensions.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso1.png"><img class="alignnone size-medium wp-image-2130" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso1-300x152.png" alt="" width="300" height="152" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso1-300x152.png 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso1.png 577w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> <p>Data can be stored in an Essbase cube or database using either the “Block Storage Option” (BSO) or “Aggregate Storage Option” (ASO). This blog post provides descriptions and an overview of when to use each storage type.</p> <p><strong>Block Storage Option (BSO)</strong></p> <p>Essbase originally launched only with the BSO storage option, which is generally used in scenarios which do not need high dimensionality, but involve complex business logic. With this option, dimensions are tagged as “dense” or “sparse” (the probability of data occurring in intersections involving a dimension).</p> <p>Using BSO, data can be loaded at all levels of a dimension and is stored in logical structures called “data blocks” which make use of page and index files. Calculation scripts and member formulas can be used to perform complex calculations, such as allocations and metrics-based projections, which usually cannot be accomplished using simple hierarchical roll ups.</p> <p>This storage option prefers fewer dimensions. As the dimension count increases, performance of a BSO cube drops nonlinearly. Another drawback of this approach is that as the dataset size and/or dimensionality rises, the disk space required grows almost exponentially. BSO databases do not scale very well, and as a result dataset size is an important consideration when designing a BSO cube.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso2.png.jpg"><img class="alignnone size-medium wp-image-2129" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso2.png-300x87.jpg" alt="" width="300" height="87" srcset="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso2.png-300x87.jpg 300w, http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso2.png.jpg 415w" sizes="(max-width: 300px) 100vw, 300px" /><br /> </a>Data is loaded at leaf nodes. Stored data size increases when the cube is calculated.</p> <p><strong>Aggregate Storage Option (ASO)</strong></p> <p>ASO is frequently used for reporting solutions, that do not involve complex calculations. In a typical ASO solution, the hierarchies are aggregated in a bottom-up manner.</p> <p>An ASO cube can handle a higher number of dimensions than BSO, without adverse impact to performance. Data can only be loaded at the leaf nodes of the hierarchies, or “Level 0” as referred to in Essbase terminology. Data is aggregated on-the-fly, usually very quickly. This makes a huge difference in the amount in disk space ASO requires over BSO. For larger databases, partial aggregations can be set up, called “Aggregation Views,” that reduce the “cost” of a query.</p> <p>With all of their merits, ASO cubes slow down immensely when the hierarchy is dynamic, or uses a member formula. For this reason, it is not recommended to use ASO for calculations, but it can serve as a great source of data to drive calculations in another system.</p> <p><a href="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso3.jpg"><img class="alignnone size-full wp-image-2128" src="http://blog.performancearchitects.com/wp/wp-content/uploads/2017/08/asobso3.jpg" alt="" width="252" height="200" /></a></p> <p>A remedy for both storage options’ shortcomings is to use a “hybrid” approach, where actuals data is stored in an ASO cube (since it is large and does not need to be calculated) with a transparent partition to connect to a BSO cube, which can use the actuals data as source to generate the forecast data via calculation. The calculated forecast can then be fed back to the ASO cube. This plays to the strengths of each type of storage option.</p> <p>Still confused about which storage option to use with your Essbase solution?  Email us at <a href="mailto:communications@performancearchitects.com">communications@performancearchitects.com</a> and we’ll be happy to help you out!</p> Melanie Mathews http://blog.performancearchitects.com/wp/?p=2127 Wed Sep 20 2017 05:18:28 GMT-0400 (EDT) My Oracle Open World 2017 Presentations http://www.oralytics.com/2017/09/my-oracle-open-world-2017-presentations.html <p>Oracle Open World 2017 will be happening very soon (1st-5th October). Still lots to do before I can get on that plane to San Francisco.</p> <p>This year I'll be giving 2 presentations (see table below). One on the Sunday during the User Groups Sunday sessions. I've been accepted on the EMEA track. I then get a few days off to enjoy and experience OOW until Thursday when I have my second presentation that is part of JavaOne (I think!)</p> <p>My OOW kicks off on Friday 29th September with the ACE Director briefing at Oracle HQ, after flying to SFO on Thursday 28th. This year it is only for one day instead of two days. I really enjoy this event as we get to learn and see what Oracle will be announcing at OOW as well as some things that will be coming out during the following few months.</p> <style type="text/css">table.myTable { border-collapse:collapse; } table.myTable td, table.myTable th { border:1px solid black;padding:5px; } </style> <table class="myTable"><th width="50">Day</th><th width="80">Time</th><th width="300">Presentation</th><th width="130">Location</th></tr><tr><td style="width:30px;">Sunday</td><td>13:45-14:30</td><td>SQL: One Language to Rule All Your Data [OOW SUN1238] <p>SQL is a very powerful language that has been in use for almost 40 years. SQL comes with many powerful techniques for analyzing your data, and you can analyze data outside the database using SQL as well. Using the new Oracle Big Data SQL it is now possible to analyze data that is stored in a database, in Hadoop, and in NoSQL all at the same time. This session explores the capabilities in Oracle Database that allow you to work with all your data. Discover how SQL really is the unified language for processing all your data, allowing you to analyze, process, run machine learning, and protect all your data. </p><p>Hopefully this presentation will be a bit of Fun! For those who have been working with the database for a long time, we can sometimes forget what we can really do. For those starting out in the career may not realise what the database can do. The presentation delivers an important message while having a laugh or two (probably at me).</p> <td>Marriott Marquis (Golden Gate Level) - Golden Gate C1/C2</td> </tr> <tr><td style="width:30px;">Thursday</td><td>13:45-14:30</td><td>Is SQL the Best Language for Statistics and Machine Learning? <p>[OOW and JavaOne CON7350]</p><p>Did you know that Oracle Database comes with more than 300 statistical functions? And most of these statistical functions are available in all versions of Oracle Database? Most people do not seem to know this. When we hear about people performing statistical analytics, we hear them talking about Excel and R, but what if we could do statistical analysis in the database without having to extract any data onto client machines? This presentation explores the various statistical areas available in Oracle Database and gives several demonstrations. We can also greatly expand our statistical capabilities by using Oracle R Enterprise with the embedded capabilities in SQL.</p><p>This presentation is just one of the 14 presentations that are scheduled for the Thursday! I believe this session is already fully booked, but you can still add yourself to the wait list.</p></p></td><td>Marriott Marquis (Golden Gate Level) - Golden Gate B</td> </tr></table> <p>My flights and hotel have been paid by OTN as part of the Oracle ACE Director program. Yes this costs a lot of money and there is no way I'd be able to pay these costs. Thank you.</p> <p>My diary for OOW is really full. No it is completely over booked. It is just mental. Between attending conference session, meeting with various product teams (we only get to meet at OOW), attending various community meet-ups, this year I get to attend some events for OUG leaders (representing UKOUG), spending some time on the EMEA User Group booth, various meetings with people to discuss how they can help or contribute to the UKOUG, then there is Oak Table World, trying to check out the exhibition hall, spend some time at the OTN/ODC hangout area, getting a few OTN t-shirts, doing some book promotions at the Oracle Press shop, etc., etc., etc. I'm exhausted just thinking about it. Mosts days start at 7am and then finish around 10pm. </p> <p>I'll need a holiday when I get home! but it will be straight back to work :-(</p> <p>If you are at OOW and want to chat then contact me via DM on Twitter or WhatsApp (these two are best) or via email (this will be the slowest way). </p><p>I'll have another blog post listing the presentations from various people and partners from the Republic of Ireland who are speaking at OOW.</p> Brendan Tierney tag:blogger.com,1999:blog-4669933501315263808.post-7211600761609284498 Tue Sep 19 2017 12:39:00 GMT-0400 (EDT) San Fran we go! https://blog.redpillanalytics.com/san-fran-we-go-8f2dab7fee4f?source=rss----abcc62a8d63e---4 <figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*b31yhvtWAXytTUcX_D3qOQ.jpeg" /><figcaption>Photo cred: Ragnar Vorel — <a href="https://unsplash.com/@sonuba">https://unsplash.com/@sonuba</a></figcaption></figure><p>Fall is here and that means a trip to San Francisco is on the calendar for Red Pill Analytics. Once again, we are thrilled to be joining an amazing group of presenters at Oracle’s largest conference of the year, <a href="https://www.oracle.com/openworld/index.html">Oracle OpenWorld</a>/<a href="https://www.oracle.com/javaone/index.html">JavaOne</a>.</p><p>Red Pill Analytics has six sessions, three at Oracle OpenWorld and three at JavaOne.</p><p>More than 25,000 attendees from across the world converge on Moscone for this event, will you be one of them? If you are, check out our sessions listed below and <a href="http://redpillanalytics.com/contact/">drop us aline</a>. We’d love to connect.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/120/1*Hu5mMp2hXbXfC7Y-EwAYCQ.png" /></figure><h3>Oracle OpenWorld — User Group Forum Sessions</h3><h3><strong>Expanding Your Data-Driven Story: The Next Chapter</strong></h3><h4><strong>Stewart Bryson, Red Pill Analytics &amp; Mike Durran, Oracle</strong></h4><p>Sunday, Oct 1, 9:45 - 10:30 a.m. |Marriott Marquis (YBuena Level) - Salon 12</p><p>Oracle Data Visualization makes it easy to get insight from your data. This stunningly visual and intuitive product enables you to access, blend, and wrangle a variety of sources, including spreadsheets, databases, and applications, and tell the story of your data. In this session learn about the power of data storytelling and the latest capabilities of Oracle Data Visualization (including details of the product roadmap) to create compelling analytics narratives, including how you can rapidly apply advanced analytics techniques to gain insights previously only accessible to advanced users. Learn about how Oracle Data Visualization has been used in real-life scenarios to gain insight and improve business performance.</p><h3>Up Your Analytics Ante With Oracle Advanced Analytics</h3><h4><strong>Michelle Kolbe</strong>, Red Pill Analytics</h4><p>Sunday, Oct 1, 10:45 - 11:30 a.m. | Moscone South — Room 155</p><p>Tomorrow’s analytics are the addition of today’s descriptive analytics with predictive and prescriptive insights. From uncovering patterns and sentiment in unstructured text, to examining demographic factors and historical trends to predict future behavior, to proactively prescribing actions to improve future outcomes, tomorrow’s analytics go above and beyond the reporting and examination of trends in KPIs and key metrics. This session will detail the advanced analytics concept and the supporting functionality delivered by the Oracle Advanced Analytics offering. Topics include: What is Advanced Analytics, Overview of Oracle Advanced Analytics, Use Cases and Demos, Get Started in Your Own Organization</p><h3>Kafka, Data Streaming, and Analytics Microservices</h3><p><strong>Stewart Bryson, Red Pill Analytics<br></strong>Sunday, Oct 1, 1:45 - 2:30 p.m. | Moscone South - Room 157</p><p>Although traditional data warehouses excel at sourcing data from enterprise applications, they usually fail at handling the volume, velocity, and variety of data for modern analytics applications relying on big and fast data. Instead of modeling these data sources into a system that doesn&#39;t fit, let&#39;s apply a new software design pattern to analytics: microservices. In this session attendees use Apache Kafka and the Confluent Platform 3.0 as the data streaming hub for ingesting data bound for downstream analytics applications: an enterprise data warehouse, a Hadoop cluster for batch processing, and lightweight, purpose-built microservices in the cloud or on-premises. Experience the next generation of analytics platforms.</p><h3>Strategic Leadership: Critical C-Level Conversations Panel</h3><h4>Arjen Visser, CEO, Dbvisit Software Limited<br>Stewart Bryson, Owner and Co-founder, Red Pill Analytics<br>Charles Kim, Oracle ACE Director, Viscosity North America<br>Kerry Osborne, DBA, Accenture Enkitec Group</h4><p>Sunday, Oct 1, 3:45 - 4:30 p.m. | Moscone South — Room 151</p><p>The role of Oracle technology professionals continues to shift and change at an ever-increasing rate, and although those currently in these jobs should feel secure that they will have a role to play in their organizations for quite some time, there are new skills that employers expect more and more from these roles, and especially in new hires. In this session join a panel of industry experts as they discuss what the role of database and technology professionals will look like one, three, and five years from today; what critical skills they look for in new hires; and how current technology professionals can position themselves to be indispensable assets to their organizations.e</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/262/1*wcBPa-EGESEgPv-S9Rbbug.jpeg" /></figure><h3>RDBMS to Kafka: Stories from the Message Bus Stop</h3><p><strong>Stewart Bryson, Red Pill Analytics &amp; Bjoern Rost, The Pythian Group</strong><br>Monday, Oct 2, 4:30 - 5:15 p.m. | Moscone West - Room 2002</p><p>Apache Kafka is a massively scalable message queue that is being used at more and more places to connect more and more data sources. This presentation introduces Kafka from the perspective of a mere mortal DBA and shares the experience of (and challenges with) getting events from the database to Kafka and back, using various solutions and connectors. Demos show how to get started with Kafka, set up the kafka-connect-jdbc producer, poor man’s change data capture with flashback query, and replication technologies to turn database logs into Kafka events.</p><h3>Build Happiness: Using Gradle to Build Better Software</h3><h4>Stewart Bryson, Red Pill Analytics</h4><p>Wednesday, Oct 4, 1:45 - 2:30 p.m. | Moscone West — Room 2004</p><p>​Gradle is the build tool of choice for modern software development, from numerous Apache open source projects to everything generated with Android Studio. It’s an end-to-end automation and delivery framework that can build projects in Java, Groovy, C++, Python, JavaScript...whatever your language of choice. It’s adaptable for monolithic projects or microservices and can deploy to any platform, whether on-premises or in the cloud. This session explores what makes Gradle so versatile. You’ll see a live demonstration of building Java, Groovy, and Python artifacts and see automated publishing to Maven repositories and serverless cloud platforms such as AWS Lambda.</p><h3>Practical Advice from a Developer Using a Cloud-Based DevOps Environment</h3><h4>Stewart Bryson, Red Pill Analytics</h4><p>Wednesday, Oct 4, 5:30 - 6:15 p.m. | Moscone West - Room 2002</p><p>This session examines a day in the life of a developer using a cloud-based DevOps environment providing issue tracking, code versioning, team collaboration, Agile project management, and continuous integration and delivery. It begins with Agile development tools for streamlining project management. You’ll experience the full code lifecycle: how it’s versioned, merged, and managed and, ultimately, how artifacts are built and deployed. The presentation examines how the cloud DevOps environment integrates with standard development frameworks such as Git, Gradle, and popular development IDEs. Experience live demos using Oracle Developer Cloud Service, which provides everything needed for polyglot development.</p><p>— -</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8f2dab7fee4f" width="1" height="1"><hr><p><a href="https://blog.redpillanalytics.com/san-fran-we-go-8f2dab7fee4f">San Fran we go!</a> was originally published in <a href="https://blog.redpillanalytics.com">Red Pill Analytics</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p> Lauren Prezby https://medium.com/p/8f2dab7fee4f Fri Sep 15 2017 11:09:03 GMT-0400 (EDT) To San Fran We Go! http://redpillanalytics.com/oowjavaone2017/ <p><img width="300" height="200" src="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?fit=300%2C200" class="attachment-medium size-medium wp-post-image" alt="OOW2017" srcset="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?w=1920 1920w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?resize=300%2C200 300w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?resize=768%2C511 768w, https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?resize=1024%2C682 1024w" sizes="(max-width: 300px) 100vw, 300px" data-attachment-id="5432" data-permalink="http://redpillanalytics.com/oowjavaone2017/ragnar-vorel-351405/" data-orig-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?fit=1920%2C1278" data-orig-size="1920,1278" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="OOW2017" data-image-description="&lt;p&gt;OOW2017&lt;/p&gt; " data-medium-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?fit=300%2C200" data-large-file="https://i0.wp.com/redpillanalytics.com/wp-content/uploads/2017/09/ragnar-vorel-351405.jpg?fit=1024%2C682" /></p><p class="graf graf--p">Fall is here and that means a trip to San Francisco is on the calendar for Red Pill Analytics. Once again, we are thrilled to be joining an amazing group of presenters at Oracle’s largest conference of the year, Oracle OpenWorld/JavaOne.</p> <p class="graf graf--p">Red Pill Analytics has six sessions, three at <a href="https://www.oracle.com/openworld/index.html">Oracle OpenWorld</a> and three at <a href="https://www.oracle.com/javaone/index.html">JavaOne</a>.</p> <p class="graf graf--p">More than 25,000 attendees from across the world converge on Moscone for this event, will you be one of them? If you are, check out our sessions listed below and <a href="http://redpillanalytics.com/contact/">drop us aline</a>. We’d love to connect.</p> <hr /> <figure class="graf graf--figure"><a href="https://www.oracle.com/openworld/index.html"><img class="graf-image aligncenter" src="https://i2.wp.com/cdn-images-1.medium.com/max/1600/1*Hu5mMp2hXbXfC7Y-EwAYCQ.png?resize=120%2C120&#038;ssl=1" data-image-id="1*Hu5mMp2hXbXfC7Y-EwAYCQ.png" data-width="120" data-height="120" data-recalc-dims="1" /></a></figure> <h3 class="graf graf--h3" style="text-align: center;">Oracle OpenWorld — User Group Forum Sessions</h3> <h3 class="graf graf--h3"><strong class="markup--strong markup--h3-strong">Expanding Your Data-Driven Story: The Next Chapter</strong></h3> <p class="graf graf--h3"><strong class="markup--strong markup--h4-strong">Stewart Bryson, Red Pill Analytics &amp; Mike Durran, Oracle<br /> </strong>Sunday, Oct 1, 9:45 &#8211; 10:30 a.m. |Marriott Marquis (YBuena Level) &#8211; Salon 12</p> <p class="graf graf--p">Oracle Data Visualization makes it easy to get insight from your data. This stunningly visual and intuitive product enables you to access, blend, and wrangle a variety of sources, including spreadsheets, databases, and applications, and tell the story of your data. In this session learn about the power of data storytelling and the latest capabilities of Oracle Data Visualization (including details of the product roadmap) to create compelling analytics narratives, including how you can rapidly apply advanced analytics techniques to gain insights previously only accessible to advanced users. Learn about how Oracle Data Visualization has been used in real-life scenarios to gain insight and improve business performance.</p> <hr /> <h3 id="bb6c" class="graf graf--h3 graf-after--p"><strong>Up Your Analytics Ante With Oracle Advanced Analytics</strong></h3> <p class="graf graf--h3 graf-after--p"><strong>Michelle Kolbe, Red Pill Analytics</strong></p> <p id="ab02" class="graf graf--p graf-after--h4">Sunday, Oct 1, 10:45 &#8211; 11:30 a.m. | Moscone South — Room 155</p> <p id="942f" class="graf graf--p graf-after--p">Tomorrow’s analytics are the addition of today’s descriptive analytics with predictive and prescriptive insights. From uncovering patterns and sentiment in unstructured text, to examining demographic factors and historical trends to predict future behavior, to proactively prescribing actions to improve future outcomes, tomorrow’s analytics go above and beyond the reporting and examination of trends in KPIs and key metrics. This session will detail the advanced analytics concept and the supporting functionality delivered by the Oracle Advanced Analytics offering. Topics include: What is Advanced Analytics, Overview of Oracle Advanced Analytics, Use Cases and Demos, Get Started in Your Own Organization</p> <hr /> <h3 class="graf graf--h3"><strong>Kafka, Data Streaming, and Analytics Microservices</strong></h3> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Stewart Bryson, Red Pill Analytics<br /> </strong>Sunday, Oct 1, 1:45 &#8211; 2:30 p.m. | Moscone South &#8211; Room 157</p> <p class="graf graf--p">Although traditional data warehouses excel at sourcing data from enterprise applications, they usually fail at handling the volume, velocity, and variety of data for modern analytics applications relying on big and fast data. Instead of modeling these data sources into a system that doesn&#8217;t fit, let&#8217;s apply a new software design pattern to analytics: microservices. In this session attendees use Apache Kafka and the Confluent Platform 3.0 as the data streaming hub for ingesting data bound for downstream analytics applications: an enterprise data warehouse, a Hadoop cluster for batch processing, and lightweight, purpose-built microservices in the cloud or on-premises. Experience the next generation of analytics platforms.</p> <hr /> <h3 class="graf graf--h3"><strong>Strategic Leadership: Critical C-Level Conversations Panel</strong></h3> <p class="graf graf--h4"><strong>Arjen Visser, CEO, Dbvisit Software Limited</strong><br /> <strong> Stewart Bryson, Owner and Co-founder, Red Pill Analytics</strong><br /> <strong> Charles Kim, Oracle ACE Director, Viscosity North America</strong><br /> <strong> Kerry Osborne, DBA, Accenture Enkitec Group</strong></p> <p class="graf graf--p">Sunday, Oct 1, 3:45 &#8211; 4:30 p.m. | Moscone South — Room 151</p> <p class="graf graf--p">The role of Oracle technology professionals continues to shift and change at an ever-increasing rate, and although those currently in these jobs should feel secure that they will have a role to play in their organizations for quite some time, there are new skills that employers expect more and more from these roles, and especially in new hires. In this session join a panel of industry experts as they discuss what the role of database and technology professionals will look like one, three, and five years from today; what critical skills they look for in new hires; and how current technology professionals can position themselves to be indispensable assets to their organizations.</p> <hr /> <figure class="graf graf--figure"><img class="graf-image aligncenter" src="https://i2.wp.com/cdn-images-1.medium.com/max/1600/1*wcBPa-EGESEgPv-S9Rbbug.jpeg?resize=262%2C265&#038;ssl=1" data-image-id="1*wcBPa-EGESEgPv-S9Rbbug.jpeg" data-width="262" data-height="265" data-recalc-dims="1" /></figure> <h3 class="graf graf--h3"><strong>RDBMS to Kafka: Stories from the Message Bus Stop</strong></h3> <p class="graf graf--p"><strong class="markup--strong markup--p-strong">Stewart Bryson, Red Pill Analytics &amp; Bjoern Rost, The Pythian Group</strong><br /> Monday, Oct 2, 4:30 &#8211; 5:15 p.m. | Moscone West &#8211; Room 2002</p> <p class="graf graf--p">Apache Kafka is a massively scalable message queue that is being used at more and more places to connect more and more data sources. This presentation introduces Kafka from the perspective of a mere mortal DBA and shares the experience of (and challenges with) getting events from the database to Kafka and back, using various solutions and connectors. Demos show how to get started with Kafka, set up the kafka-connect-jdbc producer, poor man’s change data capture with flashback query, and replication technologies to turn database logs into Kafka events.</p> <hr /> <h3 class="graf graf--h3"><strong>Build Happiness: Using Gradle to Build Better Software</strong></h3> <p class="graf graf--h4"><strong>Stewart Bryson, Red Pill Analytics</strong><br /> Wednesday, Oct 4, 1:45 &#8211; 2:30 p.m. | Moscone West — Room 2004</p> <p class="graf graf--p">​Gradle is the build tool of choice for modern software development, from numerous Apache open source projects to everything generated with Android Studio. It’s an end-to-end automation and delivery framework that can build projects in Java, Groovy, C++, Python, JavaScript&#8230;whatever your language of choice. It’s adaptable for monolithic projects or microservices and can deploy to any platform, whether on-premises or in the cloud. This session explores what makes Gradle so versatile. You’ll see a live demonstration of building Java, Groovy, and Python artifacts and see automated publishing to Maven repositories and serverless cloud platforms such as AWS Lambda.</p> <hr /> <h3 class="graf graf--h3"><strong>Practical Advice from a Developer Using a Cloud-Based DevOps Environment</strong></h3> <p class="graf graf--h4"><strong>Stewart Bryson, Red Pill Analytics</strong><br /> Wednesday, Oct 4, 5:30 &#8211; 6:15 p.m. | Moscone West &#8211; Room 2002</p> <p class="graf graf--p">This session examines a day in the life of a developer using a cloud-based DevOps environment providing issue tracking, code versioning, team collaboration, Agile project management, and continuous integration and delivery. It begins with Agile development tools for streamlining project management. You’ll experience the full code lifecycle: how it’s versioned, merged, and managed and, ultimately, how artifacts are built and deployed. The presentation examines how the cloud DevOps environment integrates with standard development frameworks such as Git, Gradle, and popular development IDEs. Experience live demos using Oracle Developer Cloud Service, which provides everything needed for polyglot development.</p> Lauren Prezby http://redpillanalytics.com/?p=5431 Fri Sep 15 2017 11:08:56 GMT-0400 (EDT) #datavault 2.0 and #disciplinedagiledelivery One Day Sprints! http://danlinstedt.com/allposts/datavaultcat/one-day-sprints/ Hello everyone,  I have been able to help teams achieve one day sprints for delivery with Data Vault 2.0!  I am happy to say, that following Disciplined Agile Delivery (DAD by Scott Ambler and Mark Lines) that we can reduce the sprints to half day or one day.  In this entry I will talk about [&#8230;] Dan Linstedt http://danlinstedt.com/?p=2874 Fri Sep 15 2017 07:06:48 GMT-0400 (EDT)