<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-21606293</id><updated>2009-07-01T09:19:39.796-05:00</updated><title type='text'>Learn Discoverer Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default?start-index=26&amp;max-results=25'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>121</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21606293.post-2952978991931235527</id><published>2009-04-30T21:02:00.006-05:00</published><updated>2009-05-05T10:00:20.037-05:00</updated><title type='text'>Discoverer 10.1.2.3 CP4 is available again</title><content type='html'>&lt;span style="color:#990000;"&gt;Last updated: May 5, 2009&lt;/span&gt;&lt;br /&gt;I am delighted to be able to let you know that CP4 (&lt;span style="color:#3333ff;"&gt;patch number 7595032&lt;/span&gt;) is no longer password protected and the issue with the non-English language versions (see below) has been resolved. You are therefore free and encouraged to apply this patch.&lt;br /&gt;&lt;br /&gt;By the way, this patch has all of the updates from 10.1.2.2 CP8 and many more.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Important Note:&lt;/span&gt;&lt;br /&gt;Please note that if you are planning on installing CP4 that you will also need to install a patch for JDBC. I have made a comment on this in &lt;a href="http://learndiscoverer.blogspot.com/2009/04/cumulative-patch-4-for-10123.html"&gt;this posting &lt;/a&gt;and will post more information shortly.&lt;br /&gt;&lt;br /&gt;Last updated: May 4, 2009&lt;br /&gt;The latest information I have on this is as follows:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;It was initially communicated that it only affected a small subset of customers as it was thought to only affect Japanese customers using Discoverer Plus. It was later discovered that some other locales were also affected.&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;Customer's were later updated with: Note: CP4 has temporarily been withdrawn due to a late breaking regression tracked in Bug 8477401 NLS: Discoverer Plus Always Runs In English Even If Japanese Locale Is Set'.&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;This can potentially affect all non-English locales. Oracle Support cannot provide a password or give access to the patch until the regression is corrected and the patch is re-uploaded to MetaLink. If you have have already downloaded the patch and use the English locale, then you should not be affected and can continue using the patch. This note will be updated when the updated patch is released.&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Original Posting made: April 30, 2009&lt;br /&gt;If you are vigilant and keep up with Oracle's cumulative patches and this blog (&lt;a href="http://learndiscoverer.blogspot.com/2009/04/cumulative-patch-4-for-10123.html"&gt;see here&lt;/a&gt;) you will be aware that CP4 (&lt;span style="color:#3333ff;"&gt;patch number 7595032&lt;/span&gt;) came out a couple of days ago.&lt;br /&gt;&lt;br /&gt;Earlier today I noticed that it has now been password protected so I contacted Oracle. Here is what they told me:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;CP4 has temporarily been password protected due to a late breaking regression tracked as bug number &lt;span style="color:#3333ff;"&gt;8477401: &lt;/span&gt;&lt;span style="color:#3333ff;"&gt;Discoverer Plus Always Runs In English Even If Japanese Locale Is Set&lt;/span&gt;. This should only affect a small subset of customers. We are trying to get this password protection removed asap since it only affects a narrow band of customers.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Oracle plans to have this password protection removed quickly so it could even be removed before the information filters out too far. I will let you know when the password requirement has been lifted. If you are using English then you should go ahead and request the password as you won't be affected.&lt;br /&gt;&lt;br /&gt;Please note that if you are planning on installing CP4 that you will also need to install a patch for JDBC. I have made a comment on this in &lt;a href="http://learndiscoverer.blogspot.com/2009/04/cumulative-patch-4-for-10123.html"&gt;this posting &lt;/a&gt;and will post more information shortly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-2952978991931235527?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/2952978991931235527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=2952978991931235527&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2952978991931235527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2952978991931235527'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/04/discoverer-10123-cp4-is-password.html' title='Discoverer 10.1.2.3 CP4 is available again'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-1114625735584793794</id><published>2009-04-28T16:25:00.009-05:00</published><updated>2009-04-30T12:11:44.904-05:00</updated><title type='text'>Michael presenting at ODTUG Kaleidoscope</title><content type='html'>In June, I will be at the &lt;a href="http://www.odtugkaleidoscope.com/"&gt;ODTUG Kaleidoscope conference &lt;/a&gt;between June 21 and June 25 in Monterey, California, where I will be presenting a paper entitled Maximize your investment in Discoverer. If you happen to be going please look me up. I will be presenting the same paper and also sitting as a panelist on the Business Intelligence / Data Warehousing Panel.&lt;br /&gt;&lt;br /&gt;I am also scheduled to appear at the Baton Rouge Oracle Users Group meeting in July and have submitted a paper for Oracle Open World which is in October in San Francisco. I will provide more information on ODTUG, BROUG and Open World as the times draw closer.&lt;br /&gt;&lt;br /&gt;For the eagle eyed among you, you will notice that originally this posting said that I was also going to be at the IOUG / OAUG Collaborate conference in Orlando next week. Unfortunately, something came up at the last minue which has prevented me from attending. This is the first time in 10 years of going to conferences that I have had to cancel an appearance like this. However, the good news is that Mike Durran from Oracle and Mark Rittman have agreed to step in and give my presentation for me. More on this to follow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-1114625735584793794?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/1114625735584793794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=1114625735584793794&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/1114625735584793794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/1114625735584793794'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/04/michael-presenting-at-collaborate-and.html' title='Michael presenting at ODTUG Kaleidoscope'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-2473205135844527347</id><published>2009-04-28T16:19:00.003-05:00</published><updated>2009-04-28T16:25:05.342-05:00</updated><title type='text'>Michael is now a US citizen</title><content type='html'>Hi everyone&lt;br /&gt;I thought I would let you all know that last Friday afternoon in Nashville I took the oath to become a citizen of the United States. This is such a privilege and honor for me and something I have been looking forward to for quite some time, ever since I first started coming here for business way back in 1994.&lt;br /&gt;&lt;br /&gt;I emigrated to the United States in 1999 while working for Logitech as their world-wide manager of business intelligence. Within a few months of my arrival I met Darlene and we were married within the year and have been together ever since.&lt;br /&gt;&lt;br /&gt;We moved to Tennesses 5 years ago when we formed Armstrong-Smith Consulting and bought ourselves a small ranch so that we could enjoy the fine weather and get away from the hustle and bustle of consulting when time would allow. If you would like to see a few photographs of our place you can find them here on &lt;a href="http://ascbi.com/contact.htm"&gt;the About Us page &lt;/a&gt;of our website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-2473205135844527347?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/2473205135844527347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=2473205135844527347&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2473205135844527347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2473205135844527347'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/04/michael-is-now-us-citizen.html' title='Michael is now a US citizen'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-6984867279369580275</id><published>2009-04-28T10:28:00.008-05:00</published><updated>2009-05-05T09:55:14.816-05:00</updated><title type='text'>Cumulative Patch 4 for 10.1.2.3</title><content type='html'>I am very pleased to announce that Oracle have released the eagerly awaited cumulative patch 4 for Discoverer 10.1.2.3 (patch number &lt;span style="color:#3333ff;"&gt;7595032&lt;/span&gt;). When compared to CP2, almost 80 bugs have been fixed including the bug that was preventing usres from logging in correctly after applying CP3 (&lt;a href="http://learndiscoverer.blogspot.com/2009/02/word-of-warning-about-10123-and-cp3.html"&gt;see here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;So far this has been released for the following platforms:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Microsoft Windows 32-bit&lt;/li&gt;&lt;li&gt;Linux x86 (works for both 32 bit and 64 bit)&lt;/li&gt;&lt;li&gt;Sun Solaris (64-bit)&lt;/li&gt;&lt;li&gt;HP-UX PA-RISC (64-bit)&lt;/li&gt;&lt;li&gt;IBM AIX Based Systems (64-bit)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There is also a very important note inside the readme regarding installing an interim patch. Here is the necessary information:&lt;/p&gt;&lt;p&gt;&lt;span style="color:#990000;"&gt;Please apply the JDBC patch p4398431_10105_GENERIC.zip for bug 4398431(release 10.1.0.5).This patch needs to be applied to all Oracle Homes, i.e. Infrastructure home as well as all related midtier homes.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#990000;"&gt;Bug 4398431 - HANG WHEN RETRIEVING A CONNECTION FROM THE IMPLICIT CONNECTION CACHE&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#990000;"&gt;Then proceed with applying the current patch.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The following postings have been updated: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://learndiscoverer.blogspot.com/2008/04/most-useful-patch-numbers.html"&gt;Useful Patch Numbers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://learndiscoverer.blogspot.com/2009/02/word-of-warning-about-10123-and-cp3.html"&gt;Word of warning about 10.1.2.3 and CP3&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-6984867279369580275?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/6984867279369580275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=6984867279369580275&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/6984867279369580275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/6984867279369580275'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/04/cumulative-patch-4-for-10123.html' title='Cumulative Patch 4 for 10.1.2.3'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-1171087098503221299</id><published>2009-04-21T10:52:00.005-05:00</published><updated>2009-04-23T16:46:36.575-05:00</updated><title type='text'>Oracle buys Sun</title><content type='html'>If you haven't already heard, Oracle has announced (&lt;a href="http://www.blogger.com/Oracle%20announced%20it%20has%20entered%20into%20an%20agreement%20to%20acquire%20Sun%20Microsystems%20(Sun)"&gt;see here&lt;/a&gt;) that it has entered into an agreement to acquire Sun Microsystems (Sun).&lt;br /&gt;&lt;br /&gt;My good friend Mark Rittman has a very good article on his blog (&lt;a href="http://www.rittmanmead.com/2009/04/20/oracle-buys-sun-what-does-it-mean-for-oracle-bidw/"&gt;see here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;According to the Oracle press release:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;The acquisition combines best-in-class enterprise software and mission-critical computing systems. Oracle plans to engineer and deliver an integrated system—applications to disk—where all the pieces fit and work together so customers do not have to do it themselves. Customers benefit as their system integration costs go down while system performance, reliability and security go up.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So what do you make of it? Personally I think it's a great move and will only strengthen Oracle's hand when it comes to vying with Microsoft in the marketplace. I think it was a deal that was always going to happen as Sun's Java is a product that means an awful lot to Oracle as most of their products require it to run effectively.&lt;br /&gt;&lt;br /&gt;Of course, this also means that Oracle will now own the Solaris brand of hardware. So if the deal does go through, and I don't see why it should not, you will then be able to get one-stop shopping for hardware and software from the same vendor.&lt;br /&gt;&lt;br /&gt;Personally, I say this is a great deal for Oracle and an even greater deal for Oracle's customers.&lt;br /&gt;&lt;br /&gt;Charles Phillips, President of Oracle, today said the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Oracle's ownership of two key Sun software assets, Java and Solaris, is expected to provide our customers with significant benefit. Java is one of the computer industry's best known brands and most widely deployed technologies. Oracle Fusion Middleware is built on top of Sun's Java language and software. Oracle can now ensure continued innovation and investment in Java technology for the benefit of customers and the Java community.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;br /&gt;The Sun Solaris operating system is the leading platform for the Oracle database. With the acquisition of Sun, Oracle can optimize the Oracle database for some of the unique, high-end features of Solaris. Oracle is as committed as ever to Linux and other open platforms, and will continue to support and enhance our strong industry partnerships.&lt;br /&gt;&lt;br /&gt;Our customers have been asking us to step up to a broader role to reduce complexity, risk, and cost by delivering a highly-optimized standards-based product stack. Oracle plans to deliver these benefits by offering a broad range of products, including servers and storage, with all the integrated pieces: hardware operating system, database, middleware and applications. We plan to preserve and enhance investments made by our customers, while we continue to work with our partners to provide customers with choice.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-1171087098503221299?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/1171087098503221299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=1171087098503221299&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/1171087098503221299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/1171087098503221299'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/04/oracle-buys-sun.html' title='Oracle buys Sun'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-5797125913656959473</id><published>2009-04-20T11:36:00.008-05:00</published><updated>2009-04-20T13:46:43.216-05:00</updated><title type='text'>April 2009 Patch Levels for Discoverer</title><content type='html'>Oracle is continually refining and upgrading Discoverer. Because of this refinement process, from time to time, Oracle periodically withdraws support for older releases. These are called obsolescence desupport documents and can be found on MetaLink.&lt;br /&gt;&lt;br /&gt;I will summarize the major releases here, along with their patch and desupport numbers.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;Discoverer 3.x&lt;/strong&gt;&lt;/span&gt; - completely desupported. The terminal release was 3.1.36 for Administrator and Desktop and 3.3.62 for Plus and Viewer. You should migrate to Discoverer 10g Release 2 (10.1.2.2 or 10.1.2.3) as soon as you can. Note that there is no direct migration path from Discoverer 3.1 to Discoverer 10g Release 2, as you must migrate via 4.1.48.08. The obsolescence desupport notice on MetaLink is document &lt;span style="color:#990000;"&gt;162402.1&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Discoverer 4.x (stand-alone, not as part of E-Business Suite)&lt;/span&gt;&lt;/strong&gt; - completely desupported. The terminal release was 4.1.48.08. You should migrate to Discoverer 10g Release 2 (10.1.2.2 or 10.1.2.3) as soon as you can. The obsolescence desupport notice on MetaLink is document &lt;span style="color:#990000;"&gt;231072.1&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Discoverer 4.x (with E-Business Suite)&lt;/span&gt;&lt;/strong&gt; - desupported as of October 31, 2006. According to Oracle "&lt;em&gt;since Discoverer 10g (10.1.2.0.2 - now 10.1.2.2 or 10.1.2.3) is fully certified, we HIGHLY recommend implementing or migrating to this release&lt;/em&gt;". Extended Support (ES) will continue until October 31, 2009. You are advised to migrate to Discoverer 10g Release 2 as soon as possible. The obsolesence desupport notice for Discoverer 4i against E-Business Suite is MetaLink document &lt;span style="color:#990000;"&gt;337576.1&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Discoverer 9iAS (9.0.2)&lt;/span&gt;&lt;/strong&gt; - completely desupported as of July 1, 2008. The terminal release was 9.0.2.54.10. You are urged to upgrade to Discoverer 10g Release 2 (10.1.2.2 or 10.1.2.3) as soon as you can. The obsolescence desupport notice for Discoverer 9iAS is MetaLink document &lt;span style="color:#990000;"&gt;162403.1&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Discoverer 10g Release 1 (9.0.4)&lt;/span&gt;&lt;/strong&gt; - ECS support was withdrawn December 31, 2006. The recommended release is 9.0.4.46.00 (Application Server 9.0.4.3). Extended Support will continue until December 31, 2009, however you should upgrade to Discoverer 10g Release 2 as soon as you can. The obsolescence desupport notice for Discoverer 10g Release 1 (9.0.4) is MetaLink document &lt;span style="color:#990000;"&gt;295948.1&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Discoverer 10g Release 2 initial (10.1.2.0.0)&lt;/span&gt;&lt;/strong&gt; - The terminal release is 10.1.2.45.46c. You can upgrade to 10.1.2.48.18 by applying the 10.1.2.1 patchset which will bring you to the 10.1.2.0.2 code level (see below). No ECS or ES dates have been announced for 10.1.2.0.0. The support notice for Discoverer 10g Release 2 is MetaLink document &lt;span style="color:#990000;"&gt;329361.1&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Discoverer 10g Release 2 production (10.1.2.0.2)&lt;/span&gt;&lt;/strong&gt; - This is the current and most up-to-date release and the one you should be on if you can. Out of the box the base version you will get is 10.1.2.48.18. Notwithstanding the fact that this is the current version it is also a brilliant piece of software. Having installed the base release you need to upgrade to either 10.1.2.2 (10.1.2.54.25) or 10.1.2.3 (10.1.2.55.26) and then apply the most &lt;a href="http://learndiscoverer.blogspot.com/2008/04/most-useful-patch-numbers.html"&gt;recent cumulative patch&lt;/a&gt;. No ECS or ES dates have been announced for this release. The support notice for Discoverer 10g Release 2 is MetaLink document &lt;span style="color:#990000;"&gt;329361.1&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;Notes:&lt;/strong&gt;&lt;/span&gt; the definitions of ECS and ES can be found on MetaLink in note &lt;span style="color:#990000;"&gt;187553.1&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-5797125913656959473?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/5797125913656959473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=5797125913656959473&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/5797125913656959473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/5797125913656959473'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/04/april-2009-patch-levels-for-discoverer.html' title='April 2009 Patch Levels for Discoverer'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-2818803158868052781</id><published>2009-04-17T00:14:00.009-05:00</published><updated>2009-04-17T01:17:08.210-05:00</updated><title type='text'>Be careful when upgrading to Java 1.6</title><content type='html'>If you install Discoverer 10g out of the box you will get Java 1.4 on the server.&lt;br /&gt;&lt;br /&gt;Last year Oracle announced that the server was now certified with Java 1.6 and issued a MetaLink note complete with instructions on how to upgrade the JVM.&lt;br /&gt;&lt;br /&gt;On my travels, I have noticed that some administrators do not read the release and installation notes properly and overlook the fact the &lt;span style="color:#3333ff;"&gt;configuration.xml&lt;/span&gt; (found in &lt;span style="color:#3333ff;"&gt;$Oracle_Home/discoverer/config&lt;/span&gt;) needs to be updated as well. If you only install a new java executable but leave the configuration.xml file untouched you will run into serious user interface issues. One such problem is that parameter values will no longer be displayed from your user's last run or from when the worksheet was created thus causing your end users a great deal of anxiety.&lt;br /&gt;&lt;br /&gt;An application server in such a state will also run much slower too, so please make sure you update the configuration.xml correctly.&lt;br /&gt;&lt;br /&gt;To help you, here is the JVM section from the application server running on my own laptop:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;jvm d4o_archive="d4o_double.jarjar" disco_archive="disco5i.jarjar" plugin_page="http://java.com" type="application/x-java-applet" versionie="1,6,0,mn" version="1.6" plugin_setup="https://asclaptop0.learndiscoverer.com:7778/jpi/jre6u11.exe" classid="clsid:CAFEEFAC-0016-0000-0012-ABCDEFFEDCBA" name="sun"&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;&lt;jvm d4o_archive="d4o_double.jarjar" disco_archive="disco5i.jarjar" plugin_page="http://java.com" type="application/x-java-applet" versionie="1,6,0,mn" version="1.6" plugin_setup="https://asclaptop0.learndiscoverer.com:7778/jpi/jre6u11.exe" classid="clsid:CAFEEFAC-0016-0000-0011-ABCDEFFEDCBA" name="sun"&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;&lt; name="sun" classid="clsid:CAFEEFAC-0016-0000-0012-ABCDEFFEDCBA" plugin_setup="https://asclaptop0.learndiscoverer.com:7778/jpi/jre6u12.exe" version="1.6" versionie="1,6,0,mn" type="application/x-java-applet" plugin_page="http://java.com" disco_archive="disco5i.jarjar" d4o_archive="d4o_double.jarjar"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Notes:&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;1. This is all one line with no line breaks or carriage returns. There should also be no space following the leading or before the last brackets.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;2. I have spaces to make sure that you can see the text and to stop your browser interpreting this as HTML.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;3. The version number 12 only appeard in one place, in the classid switch.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The areas of importance are these switches:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#3333ff;"&gt;classid&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#3333ff;"&gt;plugin_setup&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#3333ff;"&gt;version&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#3333ff;"&gt;versionie&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#3333ff;"&gt;plugin_page&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In the following help I will show you the settings for Java 1.6.0_12. All of the switches are enclosed in double quotes.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#990000;"&gt;classid&lt;/span&gt;: this complete switch has 36 characters broken down as follows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;first 9 always &lt;span style="color:#3333ff;"&gt;&lt;strong&gt;CAFEEFAC-&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; all in uppercase&lt;/span&gt;&lt;/li&gt;&lt;li&gt;next 5 are always &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;0016-&lt;/span&gt;&lt;/strong&gt; meaning Java 1.6&lt;/li&gt;&lt;li&gt;next 5 should be &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;0000&lt;/span&gt;-&lt;/strong&gt; meaning Java 1.6.0&lt;/li&gt;&lt;li&gt;next 5 should be &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;0012-&lt;/span&gt;&lt;/strong&gt; meaning release 12 (only place this is referenced)&lt;/li&gt;&lt;li&gt;last 12 should be &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;ABCDEFFEDCBA&lt;/span&gt; &lt;/strong&gt;&lt;span style="color:#000000;"&gt;again all in uppercase&lt;/span&gt;&lt;/li&gt;&lt;li&gt;full switch is: &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;classid="clsid:CAFEEFAC-0016-0000-0011-ABCDEFFEDCBA"&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#990000;"&gt;plugin_setup&lt;/span&gt;: this switch should be fully qualified domain name pointer to the Java executable on the server. Even though this switch always has &lt;span style="color:#3333ff;"&gt;/jpi/&lt;/span&gt; in the pointer the actual executable must be stored in &lt;span style="color:#3333ff;"&gt;/jpi/bin/&lt;/span&gt; under the $Oracle_Home for the middle tier. The name of the executable can be anything you look but must be the same as the executable stored in &lt;span style="color:#3333ff;"&gt;$Oracle_Home/jpi/bin&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#990000;"&gt;version&lt;/span&gt;: this switch should be &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;1.6 &lt;/span&gt;&lt;/strong&gt;with a period between the two numbers&lt;/p&gt;&lt;ul&gt;&lt;li&gt;full switch looks like this: &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;version="1.6"&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#990000;"&gt;versionie&lt;/span&gt;: this switch should be "&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;1,6,0,mn&lt;/span&gt;&lt;/strong&gt;" this time with commas between the 4 elements. Yes, mn should be used and not 12 as you might think.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;full switch looks like this: &lt;span style="color:#3333ff;"&gt;&lt;strong&gt;versionie="1,6,0,mn"&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;color:#990000;"&gt;plugin_page&lt;/span&gt;: this switch should just be &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;http: //java.com&lt;/span&gt;&lt;/strong&gt; and not a pointer to the complete version as it was in 1.4&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;full switch looks like this: &lt;span style="color:#3333ff;"&gt;&lt;strong&gt;plugin_page="http://java.com"&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;After you have upgraded the server to Java 1.6 I recommend you go to each of your user machines and clear the local Java cache. Discoverer will then ensure that they have the correct applet and will send down the right Java version the first time the user connects.&lt;br /&gt;&lt;br /&gt;If your users have an earlier version of Java installed or no Java installed then the first time that they connect to Discoverer on an application server that is running Java 1.6 they will be prompted to install it. All they have to do is follow the on-screen prompts and they will be ok. If your users don't have administrative rights over their local PC or if you are making them connect via a Citrix terminal server then your administrator will need to install JVM 1.6 for them.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-2818803158868052781?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/2818803158868052781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=2818803158868052781&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2818803158868052781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2818803158868052781'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/04/be-careful-when-upgrading-to-java-16.html' title='Be careful when upgrading to Java 1.6'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-7238525739255123639</id><published>2009-04-16T23:41:00.005-05:00</published><updated>2009-04-20T13:42:31.219-05:00</updated><title type='text'>No more cumulative patches for 10.1.2.2</title><content type='html'>If you have been keeping up with the latest information for Discoverer on Oracle MetaLink you will have noted that Oracle recently announced that cumulative patch 8 for 10.1.2.2 is the last one for that platform and that the platform currently being developed is 10.1.2.3.&lt;br /&gt;&lt;br /&gt;If you haven't already upgraded to 10.1.2.2 you should skip it and proceed direct to 10.1.2.3. The steps to installing 10.1.2.3 on a native 10.1.2.0.2 are identical to the steps that you would have to apply to install 10.1.2.2. This means that if you are using an infrastructure then you will have to upgrade the metadata repository from 10.1.0.4 to at least 10.1.0.5.&lt;br /&gt;&lt;br /&gt;If you have already installed 10.1.2.2 and any of the cumulative patches the good news is that 10.1.2.3 (patch &lt;span style="color:#3333ff;"&gt;5983622&lt;/span&gt;) will install directly on top as there is no need to de-install anything, the upgrade will take of it for you. After you have upgraded to 10.1.2.3 you should then proceed directly to install cumulative patch 2 (patch &lt;span style="color:#3333ff;"&gt;7198716&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;You might be wondering why I say to should upgrade only to cumulative patch 2 when cumulative patch 3 was released earlier this year. This is because there are some bugs in cumulative patch 3 and you are advised to wait until cumulative patch 4 which, by the way, I have heard is due for release within the next 2 to 3 weeks. Just as soon as it released I will update &lt;a href="http://learndiscoverer.blogspot.com/2008/04/most-useful-patch-numbers.html"&gt;my master patch blog note&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-7238525739255123639?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/7238525739255123639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=7238525739255123639&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/7238525739255123639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/7238525739255123639'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/04/no-more-cumulative-patches-for-10122.html' title='No more cumulative patches for 10.1.2.2'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-8643713960940530992</id><published>2009-03-14T16:44:00.004-05:00</published><updated>2009-03-14T17:12:18.517-05:00</updated><title type='text'>Clamping Down Discoverer</title><content type='html'>&lt;div&gt;Performance is often a big issue with Discoverer especially when Discoverer users share resources with other system users. It is often said that Discoverer must always use a separate reporting database because the Discoverer users would slow down the production system. This is rubbish; there are some good reasons for putting Discoverer on a separate system, but performance is not one of them.&lt;br /&gt;&lt;br /&gt;Much better is to put all your system resources into one database and then clamp down Discoverer so that it cannot interfere with other processes. You can reduce the priority or limit the CPU; you decide what database resource Discoverer should use and when it should use it.&lt;br /&gt;&lt;br /&gt;This post describes how to clamp down the Discoverer so that it does not slow down the rest of the system.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Resource Consumer Groups&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;The Oracle Database Resource Manager provides essential functionality to help you do this. It allows you to manage the hardware resources that are allocated to a database session. The Resource Manager provides a flexible way to control the Discoverer sessions because it allows you:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;limit the CPU or I/O used by a session&lt;/li&gt;&lt;li&gt;lower the priority of session&lt;/li&gt;&lt;li&gt;terminate sessions that use too much resource&lt;/li&gt;&lt;li&gt;terminate sessions where the optimizer estimates that the SQL run time will be over a threshold &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Even better, the resource scheme used can be changed dynamically, so that you can for example, have one resource allocation for during the day and another for night time and weekends.&lt;br /&gt;&lt;br /&gt;Setting up a resource plan can be quite complex but fortunately there is a default SYSTEM_PLAN provided which has a low priority group into which you can add the Discoverer sessions. All other sessions will use the default consumer group so that any Discoverer session in the low priority group will only use CPU not consumed by other database sessions.&lt;br /&gt;&lt;br /&gt;A listing of the plans and consumer groups available in the database can be obtain from the DBA_RSRC_PLANS and DBA_RSRC_CONSUMER_GROUPS views.&lt;br /&gt;&lt;br /&gt;By default the Resource Manager is not enabled. So first you need to enable the Resource Manager by setting the database initialization parameter to a resource plan:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;RESOURCE_MANAGER_PLAN=SYSTEM_PLAN&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Alternatively, you can activate the Resource Manager on the fly by entering:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'SYSTEM PLAN'&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Next you need to ensure that the Discoverer sessions are added to the low priority consumer group. There are basically two ways that you can do this; using the consumer group mapping functionality to automatically add the session to the consumer group when the session is created in the database; or run an initialization procedure at the start of the session to switch the consumer group from the default group to the low priority group.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Consumer Group Mappings&lt;/em&gt;&lt;/strong&gt; – The database lets you set up a mapping between session and consumer groups. Many new mapping options were added in Oracle 10g and therefore on databases prior to 10g the mapping option you need may not be available. A mapping that automatically adds sessions to a consumer group can be created using DBMS_RESOURCE_MANAGE.&lt;br /&gt;&lt;br /&gt;There are lots of mapping options available. You can add all the sessions create by a user into a consumer group. For example, to add all the sessions created by the DISCO_USER database user into the low priority consumer group the following call to the DBMS_RESOURCE_MANAGER package can be used:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING&lt;br /&gt;(DBMS_RESOURCE_MANAGER.ORACLE_USER, 'DISCO_USER', 'LOW_GROUP');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can add all the sessions created by a particular program. For example, the sessions created by the Discoverer Desktop program can be added using:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;DBMS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING&lt;br /&gt;(DBMS_RESOURCE_MANAGER.CLIENT_PROGRAM, 'dis51usr.exe', 'LOW_GROUP');&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You can also add sessions by service name, so here you would define a service name in the TNSNAMES.ora files used by Discoverer and map the service name to a resource group.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Initialization Procedure&lt;/em&gt;&lt;/strong&gt; - This is the method we use. A procedure is run at the start of every Discoverer session which switches the consumer group. Because we are in an Oracle Applications 11i environment we use the ‘Initialization SQL Statement – Custom’ system profile to call the initialization procedure rather than a trigger. The procedure includes the following statement:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;DBMS_SESSION.switch_current_consumer_group('LOW_GROUP',v_varchar2_240, FALSE);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;to switch the session to the lower priority consumer group.&lt;br /&gt;&lt;br /&gt;The initialization procedure gives you the best control over the consumer group setting. For example, you can set the priority of scheduled Discoverer sessions to be lower than the priority of regular sessions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;RAC Nodes&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Real Application Clusters (RAC) provide an effective way of segregating Discoverer from other processes. Typically you would have a database node dedicated to processing Discoverer reports. Discoverer can then be directed to the dedicated node by setting the RAC node in the TNSNAMES.ora file on the Discoverer Application server (and on the desktop if Discoverer Desktop is used). You can use service names to specify preferred and failover nodes.&lt;br /&gt;&lt;br /&gt;Using a dedicated RAC node is the cleanest way of separating Discoverer from other processing in a RAC environment however, if you use parallel processing in your Discoverer reports then some further configuration is required.&lt;br /&gt;&lt;br /&gt;By default on a RAC node any SQL statement that uses parallel processing will parallelize the workload by running slave processes on all RAC nodes in the database. So if the parallel_max_servers database parameter is set to 8 then 8 parallel processes will be started on each RAC node in the database. That's great if you want your Discoverer report to use CPU resource across all the RAC nodes, but if you want Discoverer just to use the dedicated RAC node then in Oracle 10g you need to set up a RAC instance group. In 11g it’s a bit easier as the nodes are service aware and only run the named service.&lt;br /&gt;&lt;br /&gt;1. For example in 10g, if PROD is the database instance and PROD4 is the dedicated RAC node then an INSTANCE_GROUP called DISCO for the Discoverer dedicated node can be defined by including in the database initialization file:&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;PROD4.INSTANCE_GROUP=DISCO&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;2. Then in the Discoverer initialization procedure include the following statement:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;EXECUTE IMMEDIATE 'ALTER SESSION SET PARALLEL_INSTANCE_GROUP = ''DISCO''';&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The Discoverer processes will then join the DISCO parallel instance group when the process is started and any subsequent parallel SQL run by this process will only use the RAC nodes in the DISCO instance group.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Temporary Tablespace&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;A Discoverer report that is very large or has been badly written can use a lot of temp space. The database uses temporary tablespace when a database sort is too large to fit in memory and so if Discoverer has to sort lots of data for example in a hash join then it will use temp space. The size of the temp space needs to be controlled to stop the disks filling up and hence a maximum size limit for the temporary tablespace should be set.&lt;br /&gt;&lt;br /&gt;This is a problem if Discoverer is sharing the temp space with other processes. When a Discoverer report runs out of temp space then it will fail with ORA-01652: Unable to extend temp segment. The problem is that the temporary tablespace is a database user resource and so is shared with other processes that use the same temporary table space.&lt;br /&gt;&lt;br /&gt;Hence when Discoverer processes are sharing a database with other processes it is important that the Discoverer processes use a separate tablespace. Otherwise one or more rogue Discoverer processes can gobble up all the temp space causing another process to fail when there is no temp space available.&lt;br /&gt;&lt;br /&gt;Now if your Discoverer processes always connect to the database as separate database users then the solution is easy; you create one or more separate temporary tablespaces for these database users. Then the Discoverer processes may still fail with the ORA-01652: Unable to extend temp segment error but at least other processes will be unaffected.&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5313168407875639906" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 89px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_E1dCQSUXOvA/SbwqhD9BWmI/AAAAAAAAAA8/gXtZ6pTEblY/s320/Picture1.jpg" border="0" /&gt;&lt;br /&gt;&lt;p&gt;However, where Discoverer is used with the e-Business Suite (and also in many other systems) Discoverer connects to the database using a common database user. In the e-Business Suite all processes connect as the APPS database user and therefore by default all processes share the temporary tablespace associated with the APPS database user. The OLTP processes probably do not use any temp space but interface and batch processing often use temp space and could error as a result of Discoverer processing.&lt;br /&gt;&lt;br /&gt;The solution is not easy and different solutions may be required for different systems, but where Discoverer is implemented with the e-Business Suite a separate temporary tablespace can be implemented as follows.&lt;br /&gt;&lt;br /&gt;1. Create a new user with a limited tablespace.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;CREATE TEMPORARY TABLESPACE TEMP_DISCO TEMPFILE &lt;datafile&gt;SIZE &lt;size&gt;AUTOEXTEND OFF;&lt;br /&gt;&lt;br /&gt;CREATE USER APPSDISCO IDENTIFIED BY &lt;password&gt;DEFAULT TABLESPACE &lt;any&gt;TEMPORARY TABLESPACE TEMP_DISCO ACCOUNT LOCK;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. Create an initialization procedure for the Discoverer which changes the current schema to the APPSDISCO user for the Discoverer process. The current schema defines which database schema is used as the default schema where no schema is specified in front of a database object. Consequentally the temporary tablespace used is the temporary tablespace associated with the APPSDISCO user.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;PROCEDURE initialize&lt;br /&gt;IS&lt;br /&gt;BEGIN&lt;br /&gt;IF SYS_CONTEXT('USERENV','MODULE') LIKE 'Disco%' THEN&lt;br /&gt;EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA=APPSDISCO';&lt;br /&gt;END IF;&lt;br /&gt;END initialize;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. Call the initalization procedure from the ‘Initialization SQL Statement – Custom’ system profile for all the responsibilities that use Discoverer. So if your initialization procedure is held within the DISCO_UTILITIES_PKG PL/SQL package then the profile would be set to:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;begin disco_utilities_pkg.initialize; end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, there are some complications that may need to be addressed:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The SYS_CONTEXT('USERENV','MODULE') only works in Oracle 10g. In Oracle 9i you need to check in the V$SESSION table.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Although Discoverer puts the APPS schema in front of all the database objects I found that there were some database bugs in the version of the database I was using (Oracle 9i) and I had to create some synonyms for some of the APPS objects, for example, to get all the Discoverer reports to run I had to create synonyms in the APPSDISCO schema for all the packages used by functions mapped into the EUL.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Again, although the Discoverer processes still connect as the APPS user and therefore have all the APPS database privileges I found that database/Discoverer bugs caused privilege errors. To workaround this I had to grant privilege on some APPS database objects to the APPSDISCO user.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Where Discoverer is reporting on transactional data then Discoverer should use the same database as the transactional system. A single database allows Discoverer to report on real-time data and saves all the complications of replicating and managing separate databases.&lt;/p&gt;&lt;p&gt;A single database allows more efficient use of the hardware resources by allowing Discoverer to use spare CPU that would otherwise be wasted. Long running Discoverer processes can run at lower priority than other processes in the system increasing the overall throughput of the system. Provided Discoverer has been properly clamped down then the Discoverer processes will not affect other processing in the system.&lt;br /&gt;&lt;br /&gt;You can go further and separate Discoverer scheduled processes from interactive Discoverer processes. Then you can run the scheduled larger Discoverer reports at a lower priority and separate temp space than the interactive reports.&lt;br /&gt;&lt;br /&gt;When Discoverer Users and management know that they will not be able to affect the performance of the system as a whole by running Discoverer reports, they will then have confidence to build and run more complex reports making greater use of the Discoverer reporting system. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-8643713960940530992?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/8643713960940530992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=8643713960940530992&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/8643713960940530992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/8643713960940530992'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/03/clamping-down-discoverer.html' title='Clamping Down Discoverer'/><author><name>Rod</name><uri>http://www.blogger.com/profile/05614049773349518387</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05002079863936021223'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_E1dCQSUXOvA/SbwqhD9BWmI/AAAAAAAAAA8/gXtZ6pTEblY/s72-c/Picture1.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-8669403806444771901</id><published>2009-02-25T15:54:00.005-06:00</published><updated>2009-02-25T16:31:10.081-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Caching'/><title type='text'>Caching data for Discoverer</title><content type='html'>I thought it was about time for another post and this one is about how you can cache data for use in Discoverer.&lt;br /&gt;&lt;br /&gt;Caching is just one strategy that you can use to make your Discoverer reports run faster. It is a bit like bribing a wayward child. You give it some cash and it will get on with the job a bit quicker. But the performance improvement doesn't come for free. You have to load your cache first and keep it ready for the Discoverer report to use which will use additional resource.&lt;br /&gt;&lt;br /&gt;Caching is big a topic; too big to cover in a single post. There are different levels where you can cache data for Discoverer reports. You can use OracleAS Web cache to hold HTML web pages generated by Discoverer Viewer. You can cache data in the database ready for use by Discoverer. You can schedule Discoverer workbooks to run so that the results are cached ready for the user to access.&lt;br /&gt;&lt;br /&gt;This time I will look at how you can cache data in the database where you hold records in a cache ready for Discoverer to use. Before I go into the details I think it is important to say that caching is not a technique you should use to make a badly written report run faster. If it badly written and inefficient the solution is to fix it, not add more complexity by caching data to try and make it run faster. Nor should you use caching to try and make one tricky report run a bit faster. It is something you need to design into your Discoverer environment at the beginning to give you the maximum benefit.&lt;br /&gt;&lt;br /&gt;Caching data in the database is where records are cached in the database ready for Discoverer to use. Again there are many techniques you can use; some of these techniques depend on new features introduced in Oracle 11g. A database cache can make a big difference to the performance of your reports as it will enable Discoverer to run simpler SQL for the reports which will it turn give better performance. But, like with all performance work, it all depends on many factors; a database cache could make no difference or make your report run slower. It is all about using the right technique for the right situation.&lt;br /&gt;&lt;p&gt;Basically there are four points where data can be cached for a Discoverer report: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Before the user logs on &lt;/li&gt;&lt;li&gt;When the user logs on &lt;/li&gt;&lt;li&gt;On-the-fly when a report runs &lt;/li&gt;&lt;li&gt;In a SQL result cache &lt;/li&gt;&lt;/ol&gt;Unfortunately there is no eul_trigger$post_open_document trigger available in Discoverer or any mechanism that would allow you cache data when a workbook was first opened or run.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Caching data before the user logs on&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Here the data is cached overnight or at regular intervals so that it is available when a user logs on.&lt;br /&gt;&lt;br /&gt;The traditional technique is used is a materialized view. Materialized views (MVs) have two really cool features. Firstly, they can be automatically refreshed either on commit, or periodically or on demand. Secondly, they can use query redirection where an SQL statement that references the underlying tables but which only requires summary information is re-directed to the MV.&lt;br /&gt;&lt;br /&gt;Oracle 11g introduces some new features for materialized views which could be very useful for Discoverer developers. One of the most interesting is that you can set up an OLAP cube in the database that summaries your data and then use a MV to redirect queries to the OLAP cube. Hence you could use the Discoverer relational tools to gain the benefits of running against an OLAP cube without having to switch to the Discoverer OLAP product.&lt;br /&gt;&lt;p&gt;Having said that, I would avoid using MVs and would only use them as a last resort. Here are some of the reasons why:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Normally, you cannot use an ‘on commit’ refresh on the MVs and therefore the information in the MVs is always older than the underlying tables. This means the results obtained from MVs are always slightly out of date.&lt;/li&gt;&lt;li&gt;Also, often you cannot use an incremental refresh on the MVs because this requires a primary key defined on the underlying tables. So the MVs are often completely refreshed periodically and this needs a lot of database resource.&lt;/li&gt;&lt;li&gt;When the MV is refreshed you don’t know which users will be accessing the information and therefore it is difficult to ensure the data security available in the underlying tables is replicated in the MVs.&lt;/li&gt;&lt;li&gt;Frequently the query used to define the MV is complex and therefore the database is not able to use query redirection because the database must be able to match query being redirected to the query defining the MV.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I have seen a number of projects come unstuck because they have tried to improve performance by making some of their reports into MVs. The result is many complex MVs which are constantly out of date and need huge database resources to refresh.&lt;/p&gt;&lt;p&gt;I have found the best approach is to design a small number of simple MVs that summarise some core tables that can be used by many reports.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Caching data when the user logs on&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Here the data is cached when the user logs onto Discoverer. The mechanism that you use to run a PL/SQL procedure to cache the data will depend on your environment but could be either:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;a database trigger that checks whether the current session is a Discoverer session &lt;/li&gt;&lt;li&gt;the Oracle Applications 11i ‘Initialization SQL Statement – Custom’ system profile can be used to run an initialization PL/SQL procedure for Discoverer sessions&lt;/li&gt;&lt;li&gt;an eul_trigger$post_login trigger is used to run a PL/SQL procedure.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;When the session initialization process runs it can run SQL to cache data from the session which then can be used in all subsequent Discoverer reports. There are different places that you can cache data in the database.&lt;/p&gt;&lt;p&gt;Database Contexts – This is useful for storing session parameters that you can use in subsequent database queries. &lt;/p&gt;&lt;p&gt;Temporary Tables – You use one or more temporary tables as a cache for the Discoverer. The table then can be used within the Discoverer reports or as a base table for a list of values. The data in the temporary tables will only be visible to the current Discoverer session so is useful for storing information specific to the user that can be used to improve performance in reports.&lt;/p&gt;&lt;p&gt;PL/SQL arrays – This is useful for caching data that is required by the PL/SQL functions run from Discoverer. See the next section for more details of this technique.&lt;/p&gt;&lt;p&gt;For example, if many of your queries need to use an ORG_ID associated with a user then create a context namespace using:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;CREATE OR REPLACE CONTEXT DISCO USING DISCO_UTILITIES_PKG;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Then in the process initialisation obtain the ORG_ID for the user and set the context using:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;dbms_session.set_context('DISCO', 'ORG_ID', v_org_id);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;You can then check the context in a condition in your view or Discoverer folder using &lt;span style="font-family:courier new;"&gt;SYS_CONTEXT('DISCO', 'ORG_ID')&lt;/span&gt; .&lt;/p&gt;&lt;p&gt;If you have lots of contexts that you need to set at initialisation then it is useful to put all the queries to obtain the contexts values in a view then you can set all the contexts using:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;FOR xcon IN (SELECT context_name, context_value&lt;br /&gt;FROM xxmod_dis_context_value_v)&lt;br /&gt;LOOP&lt;br /&gt;dbms_session.set_context('DISCO', xcon.context_name, xcon.context_value);&lt;br /&gt;END LOOP;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Then any changes to the context set up can be accommodated by simply changing the view.&lt;/p&gt;&lt;p&gt;However, where you need to save many ORG_IDs or, for example, a list of PRODUCT_IDs that a user can see then the technique to a temporary table. For example, you can create the temporary table using:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;CREATE GLOBAL TEMPORARY TABLE PRODUCT_ID_TMP&lt;br /&gt;( PRODUCT_ID NUMBER(10),&lt;br /&gt;CONSTRAINT PRODUCT_ID_TMP PRIMARY KEY (PRODUCT_ID) ENABLE&lt;br /&gt;) ON COMMIT DELETE ROWS;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Then just insert the product ids into the table in the initialisation PL/SQL procedure and use the table in a Discoverer folder or view just like a normal table. When the session finishes the data is deleted.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Caching Data on-the-fly&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Here data is loaded by the first call to a PL/SQL function into a PL/SQL array. Subsequent calls to the function use data from the internal array. This technique is very useful for converting internal codes into text descriptions that are required in a report. For example, in an Oracle Applications 11i environment where you need to make repeated lookups into tables such as FND_FLEX_VALUES_VL and FND_LOOKUP_VALUES to obtain segment and attribute descriptions. It can also be used to store values that are hard to obtain but need to be used many times in a report.&lt;/p&gt;&lt;p&gt;Taking a generic approach using a single cache_lookup function gives the best results. The cache_lookup function can be defined like this:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;FUNCTION cache_lookup(lookup_type IN VARCHAR2,&lt;br /&gt;lookup_code1 IN VARCHAR2) RETURN VARCHAR2&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The lookup_type parameter determines which SQL statement is used to obtain the data for the cache. The lookup_code1 is a bind variable for the SQL statement. The cache_lookup function is overlaid with multiple versions with different numbers of bind variables, because some lookups require multiple bind variables. For example, the call to&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;cache_lookup('LOOKUP_MEANING', 'MAR_STATUS', papf.marital_status)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;obtains the marital status text from the FND_LOOKUP_VALUES table.&lt;/p&gt;&lt;p&gt;The function actually works by using DBMS_UTILITY.get_hash_value to hash all the input parameters together and check in a BINARY_INTEGER indexed PL/SQL array to see whether the value is in the cache. If it is not then the SQL statement is run and the value is added to the cache. Subsequent calls to the function with the same parameters retrieve the value directly from the cache.&lt;/p&gt;&lt;p&gt;Oracle 11g introduces the concept of a function result cache which provides similar functionality so this could be the way to go if you are using 11g. &lt;/p&gt;&lt;p&gt;There is always a trade-off between the overheads of making a call to a PL/SQL function against the benefits of caching the data also bearing in mind that the Oracle database is often very efficient at caching data internally when processing SQL statements.&lt;/p&gt;&lt;p&gt;However here are four reasons why I often use PL/SQL caching:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;It’s quicker. Joining lookup tables in to query often makes finding an efficient execution plan difficult for the optimiser. The most efficient SQL is often to use a scalar query within the SELECT statement but this is not supported by Discoverer or in a materialized view. An alternative is to outer join the lookup tables but the outer join always generates less efficient SQL and cannot be used with an OR condition. Using a PL/SQL cache can be quicker because it removes all the lookup tables from the main SQL giving the optimiser the best chance of finding an efficient execution plan. But really it all depends on the complexity of the lookups as to whether you will see a performance improvement using a PL/SQL cache.&lt;/li&gt;&lt;li&gt;It’s quicker again. A Pl/SQL caches lasts for the duration of a session. Often running ad-hoc Discoverer involves run using similar queries many times. Your caches is loaded on the first query so subsequent queries are quicker.&lt;/li&gt;&lt;li&gt;Better instrumentation. This is the big bonus of using a PL/SQL cache. Especially, with Oracle Applications there are often errors encountered when processing the lookups. Sometimes, there is more than one description for the lookup code, or no description is found when one is needed. Finding the row that has caused the problem can be very difficult. With a PL/SQL cache you can build in instrumentation code that raises a meaningful exception when an error is encountered. Even better you can make this behaviour configurable so that for normal users lookup errors are ignored.&lt;/li&gt;&lt;li&gt;Less code. Less code is always good. By using a generic lookup function you can put all your lookups in one place. This function can then be called in views, Discoverer calculations and anywhere else where you need to convert a code to text.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Caching data in SQL result cache&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This is a Oracle 11g technique that allows you to save the results of an SQL query (or subquery within a query) in an SQL cache located in the SGA. This is probably most useful to cache the results from a complex query fragment within your Discoverer views. For example, if the results from dept are complex and difficult to obtain you might define a view based on a query like this:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;SELECT employee_name, dept_id …&lt;br /&gt;FROM emp_table&lt;br /&gt;, (SELECT /*+ result_cache */ dept_id, dept_name, …&lt;br /&gt;FROM dept) dept&lt;br /&gt;WHERE emp.dept_id = dept.dept_id&lt;/span&gt;&lt;/p&gt;&lt;p&gt;I haven’t had a chance to benchmark this feature so cannot make any claims for performance improvement but I believe it would help in some situations.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-8669403806444771901?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/8669403806444771901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=8669403806444771901&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/8669403806444771901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/8669403806444771901'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/02/caching-data-for-discoverer.html' title='Caching data for Discoverer'/><author><name>Rod</name><uri>http://www.blogger.com/profile/05614049773349518387</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05002079863936021223'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-1493583500452805517</id><published>2009-02-20T09:04:00.006-06:00</published><updated>2009-04-28T10:42:53.245-05:00</updated><title type='text'>Word of warning about 10.1.2.3 and CP3</title><content type='html'>Hello everyone&lt;br /&gt;I have been monitoring and taking part in a thread (&lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=860819&amp;amp;tstart=0"&gt;click here for thread&lt;/a&gt;) on the &lt;a href="http://forums.oracle.com/forums/forum.jspa?forumID=56"&gt;OTN Discoverer Forum&lt;/a&gt; concerning an issue with 8-character passwords not always being accepted in Discoverer 10.1.2.3 with CP3 installed.&lt;br /&gt;&lt;br /&gt;Oracle Support have now confirmed that this is a bug and have posted it on MetaLink as bug number &lt;span style="color:#000099;"&gt;8267360&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Basically - if you access the Discoverer login page for either Plus or Viewer with a URL parameter like &lt;span style="color:#000099;"&gt;&amp;amp;database=(TNS name)&lt;/span&gt; AND the user has exactly 8 characters in his / her password, then you will get an ORA-01017 logon denied, even though the password is correct.&lt;br /&gt;&lt;br /&gt;These login bugs have been fixed with Cumulative Patch 4 (patch &lt;span style="color:#3333ff;"&gt;7595032&lt;/span&gt; on MetaLink)&lt;br /&gt;&lt;br /&gt;If you are therefore on 10.1.2.2 with any cumulative patch or on 10.1.2.3 with CP1 or CP2 installed and you like to use the EUL switch in the launch URL you should install CP4, which was released on 28th April, 2009.&lt;br /&gt;&lt;br /&gt;Jacob, I am indebted to you for bringing this to my attention.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-1493583500452805517?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/1493583500452805517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=1493583500452805517&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/1493583500452805517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/1493583500452805517'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/02/word-of-warning-about-10123-and-cp3.html' title='Word of warning about 10.1.2.3 and CP3'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-8664834628920958173</id><published>2009-02-03T11:26:00.005-06:00</published><updated>2009-02-03T11:54:13.958-06:00</updated><title type='text'>February Ask Michael</title><content type='html'>The January Ask Michael webinar was a great success.&lt;br /&gt;&lt;br /&gt;The next Ask Michael is scheduled for Wednesday, February 11th at 3pm Central time. If you have not signed up or want to send me a question please &lt;a href="http://ascbi.com/question.htm"&gt;use this link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;During the January webinar I answered a question on setting Discoverer preferences for Lee from the Corporation for National and Community Service in Washington. Here is what Lee said:&lt;br /&gt;&lt;br /&gt;"&lt;span style="color:#3333ff;"&gt;I had asked for Michael's help regarding query restrictions. We had spent a number of days researching and applying Oracle MetaLink fixes to no avail. Michael's step-by-step explanation showed us a step we had missed and we look forward to 'curing' our production Discoverer during our next code update. We've tested Michael's solution in both of our test environments and it worked flawlessly! It's too late to save me from gray hairs, but at least our Discoverer report writers now aren't calling to complain about out failure to fix this issue&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;I am delighted that I was able to help in this way. These online webinars are a free service offered by me and Armstrong-Smith Consulting to the Discoverer and Business Intelligence community. All you have to do is register in order to attend.&lt;br /&gt;&lt;br /&gt;You can see all of our upcoming offerings such as webinars, training and conference attendance, on the &lt;a href="http://ascbi.com/calendar.htm"&gt;ASC calendar page &lt;/a&gt;of our website.&lt;br /&gt;&lt;br /&gt;See you on the 11th.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-8664834628920958173?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='related' href='http://ascbi.com/question.htm' title='February Ask Michael'/><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/8664834628920958173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=8664834628920958173&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/8664834628920958173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/8664834628920958173'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/02/february-ask-michael.html' title='February Ask Michael'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-8315362082953652231</id><published>2009-01-07T15:45:00.002-06:00</published><updated>2009-01-07T15:48:22.289-06:00</updated><title type='text'>Cumulative Patch 3 for 10.1.2.3</title><content type='html'>I am very pleased to announce that Oracle have released a third cumulative patch for Discoverer 10.1.2.3.&lt;br /&gt;&lt;br /&gt;So far this has been released for the following platform:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Windows 32-bit&lt;/li&gt;&lt;li&gt;Linux x86 (works for both 32 bit and 64 bit)&lt;/li&gt;&lt;li&gt;HP-UX PA-RISC (64-bit)&lt;/li&gt;&lt;li&gt;HP-UX Itanium&lt;/li&gt;&lt;/ul&gt;The following posting has been updated:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://learndiscoverer.blogspot.com/2008/04/most-useful-patch-numbers.html"&gt;Useful Patch Numbers&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-8315362082953652231?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/8315362082953652231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=8315362082953652231&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/8315362082953652231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/8315362082953652231'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/01/cumulative-patch-3-for-10123.html' title='Cumulative Patch 3 for 10.1.2.3'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-2581504245642789054</id><published>2009-01-07T15:38:00.002-06:00</published><updated>2009-01-07T15:42:27.483-06:00</updated><title type='text'>New Armstrong-Smith Consulting Web Site</title><content type='html'>Hi everyone&lt;br /&gt;I'd like to point you in the direction of our &lt;a href="http://ascbi.com/"&gt;new website&lt;/a&gt;. We all think this is a vast improvment on our &lt;a href="http://learndiscoverer.com/"&gt;old website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;First of all we are no longer only focused on Discoverer. We are business intelligence. However, because most of you reading this entry are interested in Discoverer of course the new website is still the place to go.&lt;br /&gt;&lt;br /&gt;By the way, there's still time to &lt;a href="http://ascbi.com/question.htm"&gt;sign up for my Ask Michael Seminar series &lt;/a&gt;which kicks off next week on January 14th.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-2581504245642789054?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='related' href='http://ascbi.com' title='New Armstrong-Smith Consulting Web Site'/><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/2581504245642789054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=2581504245642789054&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2581504245642789054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2581504245642789054'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2009/01/new-armstrong-smith-consulting-web-site.html' title='New Armstrong-Smith Consulting Web Site'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-6986591029267620475</id><published>2008-12-23T14:13:00.002-06:00</published><updated>2008-12-23T14:24:06.961-06:00</updated><title type='text'>Ask Michael in 2009</title><content type='html'>Starting in 2009, I will be hosting a free monthly webinar for all aspects of business intelligence and data warehousing. Of course, because I am considered the expert in Discoverer, a large amount of the time will be devoted to answering questions on this hugely popular tool.&lt;br /&gt;&lt;br /&gt;The first webinar is scheduled for January 14, 2009&lt;br /&gt;&lt;br /&gt;There is plenty of time to submit a question and / or register for the webinar so &lt;a href="http://www.ascbi.com/question.htm"&gt;click here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A couple of says before the webinar I will contact you with the username and password that you will need for access.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Remember - the webinars are free but you must &lt;/span&gt;&lt;a href="http://www.ascbi.com/question.htm"&gt;&lt;span style="color:#3333ff;"&gt;register with me&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-6986591029267620475?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/6986591029267620475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=6986591029267620475&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/6986591029267620475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/6986591029267620475'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/12/ask-michael-in-2009.html' title='Ask Michael in 2009'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-7978616026754998586</id><published>2008-12-23T14:02:00.002-06:00</published><updated>2008-12-23T14:13:20.593-06:00</updated><title type='text'>ASC Training in Tennessee</title><content type='html'>Hello everyone&lt;br /&gt;I want to let you know about an exciting new inititiave that my company is starting in 2009. Because we know that many companies only have one or two staff that need our training and cannot afford to have us come on site, we will be offering the same trainng at our own premises starting January.&lt;br /&gt;&lt;br /&gt;The training is built around the Higher Education EUL that we developed for SunGard and their clients. If you are unsure whether this would be suitable for you please &lt;a href="mailto:michael@ascbi.com"&gt;email me for more details&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;Note: Armstrong-Smith Consulting has partnered with SunGard and are the sole authorized partner able to offer this training.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ascbi.com/cookevilletraining.htm"&gt;Click here &lt;/a&gt;for more information, for prices or to make a booking. By the way if you are a member of the Nashville or Oklahoma City Oracle User Groups we will give each attendeed a 10% discount on the training price and give a further $50 donation to your user group when you complete the training. A Win-Win if you ever heard one!&lt;br /&gt;&lt;br /&gt;If you are interested in this training, click here for the &lt;a href="http://www.ascbi.com/agenda.htm"&gt;Agendas&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you would like more information please &lt;a href="mailto:michael@ascbi.com"&gt;drop me an email&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-7978616026754998586?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/7978616026754998586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=7978616026754998586&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/7978616026754998586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/7978616026754998586'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/12/asc-training-in-tennessee.html' title='ASC Training in Tennessee'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-3778584369360514103</id><published>2008-12-09T11:24:00.004-06:00</published><updated>2009-01-05T10:01:01.894-06:00</updated><title type='text'>Happy Holidays to everyone</title><content type='html'>Hello everyone. I just wanted to drop you all a line and say thank you to everyone who follows my blog and wish you all very best wishes for the upcoming holidays to you and your family wherever you are in the world. Most of you I know are in the United States but I have a lot of dedicated followers in other parts of the world in countries like the United Kingdom, India, Canada, Australia, Germany, Denmark, China, Kuwait, Saudi Arabia, Russia and dozens more.&lt;br /&gt;&lt;br /&gt;If I knew how to send you best wishes in your language I would.&lt;br /&gt;&lt;br /&gt;I also wanted to let you all know that I will be starting several new services in 2009 and invite you to &lt;a href="mailto:michael@ascbi.com"&gt;email me &lt;/a&gt;with your name and email address so that I can let you know when the services will start.&lt;br /&gt;&lt;br /&gt;Because many of you have limited budgets and unable to travel for training and help, we are setting up on-line initiatives. One of the most exciting new ventures will be the making available our superb Discoverer training courses to on-line subscribers. We will be offering both our popular Administrator and End User classes for you to follow. We will also have a dedicated trainer available via telephone and email should you have issues.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#990000;"&gt;Discoverer courses:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Discoverer Administrator - 14 hours on-line&lt;/li&gt;&lt;li&gt;Discoverer End-User - 20 hours on-line&lt;/li&gt;&lt;/ul&gt;Further, and these have been asked for many times, we will be offering the following brand new on-line courses:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#990000;"&gt;Other Courses:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;An introduction to SQL - 8 hours on line&lt;/li&gt;&lt;li&gt;An introduction to Data Warehousing - 8 hours on line&lt;/li&gt;&lt;li&gt;How to maximize your business intelligence investment - 8 hours on-line&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These are generic courses not aimed at a particular product and will be very popular.&lt;/p&gt;&lt;p&gt;We will be placing a form on-line in the coming weeks but until then please &lt;a href="mailto:michael@ascbi.com"&gt;send me an email &lt;/a&gt;with your name and I will make sure you get on our distribution list for these courses. Sending me an email in no way ties you in to buying a course and I will not give your name or email address to anyone else for any purposes. You will only be contacted by Armstrong-Smith Consulting.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-3778584369360514103?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/3778584369360514103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=3778584369360514103&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/3778584369360514103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/3778584369360514103'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/12/happy-holidays-to-everyone.html' title='Happy Holidays to everyone'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-2368230527866840949</id><published>2008-11-20T15:35:00.007-06:00</published><updated>2009-05-07T02:31:04.257-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Contexts'/><title type='text'>Metalink Note 304192.1 and contexts</title><content type='html'>&lt;span style="color:#330099;"&gt;Update: This metalink note has now been discontinued. Note 282249.1 gives information on how to pass parameter to a folder using the session client_info. The client_info is a database context available to all sessions in the USERENV namespace. Advantages of using client_info instead of a custom context is that you don't need to create the new context namespace at the database level and also the value of the client_info context can be seen in the V$SESSION dynamic view. However, it can only be used for one parameter and the client_info is used by many applications including the e-Business Suite so you run the risk of overwriting data already stored in the client_info.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This metalink note describes how to pass parameters into a custom folder or database view using stored procedures. The note has been around for quite a while, but as I will explain, the method used will never work reliably in all situations. The note suggests that you use two functions held in a package to set and get a parameter. You use a condition in the view or custom folder to retrieve the parameter, for example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;WHERE ENAME=SETPARAM.GET_PARAM1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then use another condition in the workbook to set the parameter. The function always returns 1 so is always true.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1=SET_PARAM1(:"Parameter 1")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This approach expects that the SET_PARAM1 function will be called first because it uses constants and so can be evaluated without referencing any tables. However, this will only work if the query in the view or custom folder is not too complex. Once an SQL statement has been sent to the database you have no control over the order in which stored procedures are called. With complex SQL statements, for example, using CONNECT BY, the GET_PARAM1 function will be called first and will return either no value or the last value used.&lt;br /&gt;&lt;br /&gt;There is NO reliable way of passing parameters from Discoverer into a custom folder or view using a single SQL statement because the database can call the stored procedures in any order. So any parameter added to the query by Discoverer will probably not be processed before the main body of the query held in a custom folder or view.&lt;br /&gt;&lt;br /&gt;Database contexts provide a more efficient and reliable alternative. Database contexts work like session parameters, once the context is set it is available to use for the duration of the session. You can set them or change them using a separate Discoverer worksheet.&lt;br /&gt;&lt;br /&gt;To implement Discoverer session parameters you will first have to create a context namespace in the database for the Discoverer contexts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;CREATE OR REPLACE CONTEXT DISCO_CONTEXT&lt;br /&gt;USING EUL_US.DISCO_PKG&lt;br /&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then you need to create a package to enable you to set and retrieve contexts from in Discoverer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;CREATE OR REPLACE PACKAGE EUL_US.DISCO_PKG&lt;br /&gt;AS&lt;br /&gt;FUNCTION set_context(p_name VARCHAR2,&lt;br /&gt;p_value VARCHAR2) RETURN VARCHAR2;&lt;br /&gt;FUNCTION show_context(p_name VARCHAR2) RETURN VARCHAR2;&lt;br /&gt;END disco_pkg;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE PACKAGE BODY EUL_US.DISCO_PKG&lt;br /&gt;AS&lt;br /&gt;FUNCTION set_context(p_name VARCHAR2,&lt;br /&gt;p_value VARCHAR2) RETURN VARCHAR2&lt;br /&gt;IS&lt;br /&gt;BEGIN&lt;br /&gt;dbms_session.set_context('DISCO_CONTEXT', p_name, p_value);&lt;br /&gt;RETURN p_value;&lt;br /&gt;END set_context;&lt;br /&gt;&lt;br /&gt;FUNCTION show_context(p_name VARCHAR2) RETURN VARCHAR2&lt;br /&gt;IS&lt;br /&gt;BEGIN&lt;br /&gt;RETURN SYS_CONTEXT('DISCO_CONTEXT', p_name);&lt;br /&gt;END show_context;&lt;br /&gt;&lt;br /&gt;END disco_pkg;&lt;br /&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once you have imported the set_context and show_context functions into the Discoverer EUL you are ready to set and retrieve your session parameters.&lt;br /&gt;&lt;br /&gt;With this approach you set your session parameters in a separate worksheet from your main reports. For example, the following steps show you how to create a worksheet to define an effective date parameter:&lt;br /&gt;&lt;br /&gt;1. Create a workbook based on any folder containing an item of type date.&lt;br /&gt;2. Create a parameter based on a date.&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5270858740271806146" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 274px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_E1dCQSUXOvA/SSXaGRsp9sI/AAAAAAAAAA0/WtTOlltdBbE/s320/image004.jpg" border="0" /&gt;&lt;br /&gt;3. Create a calculation to call the set_context function and set the effective date.&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5270858737720206770" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 204px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_E1dCQSUXOvA/SSXaGIMTpbI/AAAAAAAAAAs/3Fg2OqJsedU/s320/image002.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;4. Remove the contents from the folder so that the folder just contains a parameter.&lt;br /&gt;5. It is also useful to create another calculation retrieving the value of the parameter, so that the value entered for the parameter can be seen when the workbook is run.&lt;br /&gt;&lt;br /&gt;The value of the context in a custom folder or view can be retrieved using a condition, for example:&lt;br /&gt;TO_DATE(SYS_CONTEXT('DISCO_CONTEXT','EFFECTIVE_DATE'))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Every EUL of any complexity should use database contexts:&lt;br /&gt;&lt;br /&gt;1. Using SYS_CONTEXT gives better performance. SYS_CONTEXT is an SQL function and therefore much quicker than using calls to PL/SQL.&lt;br /&gt;&lt;br /&gt;2. SYS_CONTEXT can be used in any code; in views, PL/SQL code and custom folders. The function can also in the EUL and workbooks; you can import the function into the EUL (from the SYS schema) and use it instead of the SHOW_CONTEXT function. SYS_CONTEXT will always return the current value of the parameter for the session.&lt;br /&gt;&lt;br /&gt;3. You can store all your parameters in the same database namespace, so there is no need to change any code if there is a need extra parameters.&lt;br /&gt;&lt;br /&gt;4. You can set the database contexts to default values using a login trigger. Then the users only have to run the parameter worksheet if they need to change a session parameter. You can even store the last contexts used in a table, so that a new Discoverer session picks up the values used in a previous session.&lt;br /&gt;&lt;br /&gt;However, one limitation of this technique is that Discoverer caches the results of some SQL such as the lists of values and so changing a session parameter will not change a list of values.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-2368230527866840949?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/2368230527866840949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=2368230527866840949&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2368230527866840949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2368230527866840949'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/11/metalink-note-304192.html' title='Metalink Note 304192.1 and contexts'/><author><name>Rod</name><uri>http://www.blogger.com/profile/05614049773349518387</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05002079863936021223'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_E1dCQSUXOvA/SSXaGRsp9sI/AAAAAAAAAA0/WtTOlltdBbE/s72-c/image004.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-1781498288760219072</id><published>2008-11-19T12:03:00.003-06:00</published><updated>2008-11-19T12:18:07.005-06:00</updated><title type='text'>Discoverer 10.1.2.3 certified for use with E-Business Suite</title><content type='html'>I am very pleased to announce that Discoverer 10.1.2.3 is now certified against both E-Business Suite 11i and 12i. You must however have applied at least cumulative patch 1 as the base version which you get following an upgrade is not certifed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#990000;"&gt;E-Business Suite Versions&lt;/span&gt;&lt;br /&gt;For more information concerning Discoverer 10.1.2.2 and 10.1.2.3 and E-Business Suite 11i please look at MetaLink note number: &lt;span style="color:#3333ff;"&gt;313418.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For more information concerning Discoverer 10.1.2.2 and 10.1.2.3 and E-Business Suite 12i please look at MetaLink note number: &lt;span style="color:#3333ff;"&gt;373634.1&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;I have also updated my master blog posting on Discoverer releases: &lt;a href="http://learndiscoverer.blogspot.com/2008/04/most-useful-patch-numbers.html"&gt;http://learndiscoverer.blogspot.com/2008/04/most-useful-patch-numbers.html&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-1781498288760219072?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/1781498288760219072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=1781498288760219072&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/1781498288760219072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/1781498288760219072'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/11/discoverer-10123-certified-for-use-with.html' title='Discoverer 10.1.2.3 certified for use with E-Business Suite'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-260170757087782431</id><published>2008-10-23T07:11:00.006-05:00</published><updated>2008-10-23T07:50:43.052-05:00</updated><title type='text'>Row Generators</title><content type='html'>Thank you Michael for inviting me to contribute to your blog. I thought I would start off by talking about row generators and how to use them with Discoverer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A folder that you can use as a row generator is always useful to have in an EUL. A row generator is just a folder that always returns a fixed number of rows. You can define a row generator either by using a database view or by creating a custom folder as shown below. There is a dummy item included in this row generator so that the folder can be joined to other folders in the EUL.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260321495731458418" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 243px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_E1dCQSUXOvA/SQBqh61s0XI/AAAAAAAAAAM/ByjvdA0dDH8/s320/image002.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Lists of Values&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;There are many uses for a row generator but they are often most useful when creating a list of values (LOV) where there are a fixed number of values, for example, a Yes/No list of values. To create you LOV first create a new (complex) folder, then drag the N item from the row generator folder into the new folder. You then need to create a mandatory condition in the new folder to restrict the number of rows, for example, in this case N&lt;=2. You can then create a calculated item to return the text used in the LOV. You can use DECODE to convert the number into a text string as shown below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260321993668806642" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 203px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_E1dCQSUXOvA/SQBq-5zNx_I/AAAAAAAAAAU/glUyVmSQoG8/s320/image004.jpg" border="0" /&gt;&lt;br /&gt;Then create a LOV item class based on the calculated item so that you have a folder that returns the required values as shown below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260322422760394434" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 186px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_E1dCQSUXOvA/SQBrX4SnzsI/AAAAAAAAAAc/s_ePvNI8aBI/s320/image006.jpg" border="0" /&gt;&lt;br /&gt;Of course this is a very simple example. But in general you will find it easier to have one row generator folder and have complex folders for each LOV. It is easier to use a CASE or DECODE expression than create a new custom folder for each LOV.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Other useful examples are:&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;List of Values&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Calculation&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Condition&lt;/b&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Days of the week&lt;/td&gt;&lt;td&gt;TO_CHAR(TRUNC(SYSDATE, 'D')+n-1, 'Day')&lt;/td&gt;&lt;td&gt;N&lt;=7&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Previous 12 months&lt;/td&gt;&lt;td&gt;ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),&lt;br /&gt;1-n)&lt;/td&gt;&lt;td&gt;N&lt;=12&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Letters of the alphabet&lt;/td&gt;&lt;td&gt;CHR(65 + n-1)&lt;/td&gt;&lt;td&gt;N&lt;=26&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This last example where you have a LOV containing the letters of the alphabet is useful when you want to show an index on a text field, for example, bookname. You need to create a bookname_char calculated item, UPPER(SUBSTR(bookname,1,1)) and put this in the alphabet item class. You then need to create a hierarchy from the bookname_char item to the bookname item which will let you select the first letter of the bookname and then drill down to see all names beginning with this letter.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fixing the number of columns &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The row generator is also useful if you need to have a fixed number of columns in a crosstab report. For example you wanted 12 columns, one for each month in the year summarising employee earnings. Now, there will be some employees who do not have earnings for all months in the year. When the report is run for these employees there will be less than 12 columns. If you create a LOV folder for the months you need as described above and outer join the LOV folder to the report folder then you will always get a fixed number of columns in your report.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Pivoting &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A row generator can be used to pivot a table or part of table. This is where you want to show values that are in different columns on separate rows.&lt;br /&gt;&lt;br /&gt;For example, if your employee table has columns for the hours worked on each day in the week and you need a report showing the total hours on each day of the week by department. So in this case you need to pivot the hours onto separate rows. You do this by creating a days of the week folder that always returns 7 rows as described above. Make sure you also include the dummy item from the row generator folder. Then create a dummy item in your employee folder as shown below.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260322422980607506" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 203px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_E1dCQSUXOvA/SQBrX5HH_hI/AAAAAAAAAAk/AERbl_i5m0s/s320/image008.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can then join the employee table to the days of the week folder using the dummy item. Then in the workbook create a calculation to show the total hours for any day using:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6666cc;"&gt;SUM(DECODE("Row Generator 100".N,&lt;br /&gt;1, Employees.mon_hrs,&lt;br /&gt;2, Employees.tue_hrs,&lt;br /&gt;3, Employees.wed_hrs,&lt;br /&gt;4, Employees.thu_hrs,&lt;br /&gt;5, Employees.fri_hrs,&lt;br /&gt;6, Employees.sat_hrs,&lt;br /&gt;7, Employees.sum_hrs))&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6666cc;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can then select the day from the days of the week folder, the department from the employees folder and the hours calculated item to get the sum of the hours for each day of the week.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Counting records many times&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The row generator can be used to multiply rows when you want to count the rows several times.&lt;br /&gt;&lt;br /&gt;For example, if you have a report that shows when users logged on and off your system but you want a chart showing the how many users are logged on during each hour during the day. This means that if there is a record showing user A logged on at 8am and logged off at 11:50am then this record needs to be counted 4 times, once for each hour the user was logged on.&lt;br /&gt;&lt;br /&gt;You need to create an hours row generator folder as described above that returns the 24 hours in the day using an hours calculation shown below :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6666cc;"&gt;TO_CHAR(n-1,'fm09')&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#6666cc;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now if the user logon and logoff times were held in a user_timings folder then you need to join the hours row generator folder to this folder using a dummy item as described in the previous section. This will multiple each row 24 times. Then a condition in the workbook can be used to return only the hours when the user was logged onto the system:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6666cc;"&gt;Hours BETWEEN TO_CHAR(TRUNC(logon, 'HH24'), 'HH24') AND TO_CHAR(TRUNC(logoff, 'HH24'), 'HH24')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can then count the records and group sort on the hours calculation to return the data you need for the chart.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This of course assumes that all users log on and off on the same day. You would need a slightly more complex condition if users where able to logon and off on a different day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-260170757087782431?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/260170757087782431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=260170757087782431&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/260170757087782431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/260170757087782431'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/10/row-generators.html' title='Row Generators'/><author><name>Rod</name><uri>http://www.blogger.com/profile/05614049773349518387</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05002079863936021223'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_E1dCQSUXOvA/SQBqh61s0XI/AAAAAAAAAAM/ByjvdA0dDH8/s72-c/image002.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-3255860662605976701</id><published>2008-10-21T10:07:00.009-05:00</published><updated>2008-10-21T10:14:54.761-05:00</updated><title type='text'>Pictures of Darlene and Michael</title><content type='html'>Many of you know Darlene, my wife, and I as the owners of Armstrong-Smith Consulting and the authors of the Oracle Discoverer Handbook. Here are some photographs of us taken in our offices recently:&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5259625132497538946" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_bJSn6pymoj0/SP3xMPo7j4I/AAAAAAAAAH8/iYRGcDBZWkU/s400/MichaelDarlene01.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_bJSn6pymoj0/SP3xIEh6TCI/AAAAAAAAAH0/-2Kkpr7tyN4/s1600-h/MichaelDarlene02.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259625060795829282" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_bJSn6pymoj0/SP3xIEh6TCI/AAAAAAAAAH0/-2Kkpr7tyN4/s400/MichaelDarlene02.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_bJSn6pymoj0/SP3xEPOVR7I/AAAAAAAAAHs/a2DprLwlPbw/s1600-h/MichaelDarlene03.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259624994947024818" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_bJSn6pymoj0/SP3xEPOVR7I/AAAAAAAAAHs/a2DprLwlPbw/s400/MichaelDarlene03.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_bJSn6pymoj0/SP3w_TBSvvI/AAAAAAAAAHk/1PuXsBuOQ74/s1600-h/MichaelDarlene04.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259624910066728690" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_bJSn6pymoj0/SP3w_TBSvvI/AAAAAAAAAHk/1PuXsBuOQ74/s400/MichaelDarlene04.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_bJSn6pymoj0/SP3w6wry7uI/AAAAAAAAAHc/XODmuThfJbg/s1600-h/MichaelDarlene05.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259624832130281186" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_bJSn6pymoj0/SP3w6wry7uI/AAAAAAAAAHc/XODmuThfJbg/s400/MichaelDarlene05.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_bJSn6pymoj0/SP3w1p7k6WI/AAAAAAAAAHU/wuHjapDdBWU/s1600-h/MichaelDarlene06.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259624744418077026" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_bJSn6pymoj0/SP3w1p7k6WI/AAAAAAAAAHU/wuHjapDdBWU/s400/MichaelDarlene06.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_bJSn6pymoj0/SP3wqxtCJ6I/AAAAAAAAAHM/8pszBE6J60c/s1600-h/MichaelDarlene07.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259624557526001570" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_bJSn6pymoj0/SP3wqxtCJ6I/AAAAAAAAAHM/8pszBE6J60c/s400/MichaelDarlene07.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-3255860662605976701?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/3255860662605976701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=3255860662605976701&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/3255860662605976701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/3255860662605976701'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/10/pictures-of-darlene-and-michael.html' title='Pictures of Darlene and Michael'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_bJSn6pymoj0/SP3xMPo7j4I/AAAAAAAAAH8/iYRGcDBZWkU/s72-c/MichaelDarlene01.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-8475729780637885559</id><published>2008-10-16T10:51:00.005-05:00</published><updated>2008-10-16T11:35:12.571-05:00</updated><title type='text'>Interesting condrum with indexed values</title><content type='html'>As you know from a &lt;a href="http://learndiscoverer.blogspot.com/2006/12/creating-indexed-items.html"&gt;previous posting&lt;/a&gt; it is possible to create Discoverer lists of values to display a lookup description e.g. Department Name and return the primary key code namely, Department Id when using a list of values in a parameter.&lt;br /&gt;&lt;br /&gt;What I have discovered today is something very intersting in the way that Discoverer does this and something that you ought to be aware of.&lt;br /&gt;&lt;br /&gt;Let's say a bottle manufacturing company has a whole series of bottles which they describe using the color of the top. Some descriptions would be &lt;span style="color:#990000;"&gt;1 Litre Blue Top&lt;/span&gt;, some &lt;span style="color:#990000;"&gt;1 Litre Red Top&lt;/span&gt; and so on. Let's also say that they start out with code &lt;span style="color:#990000;"&gt;10&lt;/span&gt; represting &lt;span style="color:#990000;"&gt;1 Litre Blue Top&lt;/span&gt;, and code &lt;span style="color:#990000;"&gt;11&lt;/span&gt; representing &lt;span style="color:#990000;"&gt;1 Litre Red Top&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Inside Discoverer Plus, if a user has an indexed item in use and they choose to select using the Values option (see my original posting if you are unsure what this looks like) they will be presented with a list of values like this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#990000;"&gt;(1 Litre Blue Top) 10&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#990000;"&gt;(1 Litre Red Top) 11&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;What you may not be aware of is what Discoverer submits to the database. This is what will get submitted:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;(((o100539.PRODUCT_DESCRIPTION) = '1 Litre Blue Top'&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;AND o100539.PRODUCT_CODE = '10'))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yes, Discoverer actually adds an &lt;strong&gt;AND&lt;/strong&gt; clause for &lt;em&gt;BOTH&lt;/em&gt; parts of the equation. It searches for both the Code and the Description. I can see why this is happening. This is to solve the following problem:&lt;br /&gt;&lt;br /&gt;Let's say the bottling company later decide to introduce an updated version of the &lt;span style="color:#990000;"&gt;1 Litre Blue Top &lt;/span&gt;and decide to use code &lt;span style="color:#990000;"&gt;20&lt;/span&gt;. Because there are two items with the same description, if Discoverer were to only submit this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;(o100539.PRODUCT_DESCRIPTION) = '1 Litre Blue Top' )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;then both items would be returned in the query. The only way to guarantee to get the right combination would be for Discoverer to add the &lt;strong&gt;AND&lt;/strong&gt; clause.&lt;br /&gt;&lt;br /&gt;Somebody recently asked me why Discoverer didn't use an &lt;strong&gt;OR&lt;/strong&gt; connector, like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;(((o100539.PRODUCT_DESCRIPTION) = '1 Litre Blue Top'&lt;br /&gt;OR o100539.PRODUCT_CODE = '10'))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If Oracle were to change the code to an &lt;strong&gt;OR&lt;/strong&gt; condition then we would definitely get multiple rows returned so Oracle's choice of using an &lt;strong&gt;AND&lt;/strong&gt; clause seems to be correct.&lt;br /&gt;&lt;br /&gt;So why then am I bringing this to your attention. I'll tell you why.&lt;br /&gt;&lt;br /&gt;Let's say the bottling company decides to rename the description for bottle &lt;span style="color:#990000;"&gt;10 &lt;/span&gt;to this &lt;span style="color:#990000;"&gt;1 L&lt;/span&gt;&lt;span style="color:#990000;"&gt;itre Top - Blue&lt;/span&gt;. No big deal you might think because there is still only one description for that code - wrong!&lt;br /&gt;&lt;br /&gt;Let's say a user opens a workbook containing a worksheet that has a such an indexed parameter and that the last time it was used either the code &lt;span style="color:#990000;"&gt;10&lt;/span&gt; was selected or it is being supplied as the default value. Because the parameter already has the value displayed on screen all the user needs to do is to accept the current value and click &lt;strong&gt;Finish&lt;/strong&gt;. Because the user does not reselect 10 and just clicks &lt;strong&gt;Finish&lt;/strong&gt; what gets submitted to the database will still be the original &lt;strong&gt;AND&lt;/strong&gt; clause:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;(((o100539.PRODUCT_DESCRIPTION) = '1 Litre Blue Top'&lt;br /&gt;AND o100539.PRODUCT_CODE = '10'))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yes, now you can see the conundrum. No data is returned because there is no product called &lt;span style="color:#990000;"&gt;1 Litre Blue Top&lt;/span&gt;&lt;span style="color:#000000;"&gt; in the database.&lt;/span&gt; Discoverer does not reassess the situation when an existing parameter is used. Is this a bug? Maybe. I will send this to Oracle for comment but I thought you would like to know.&lt;br /&gt;&lt;br /&gt;I think the workaround would be to pick a new paramater value from the list, then go back and repick the original value. Assuming the worksheet now returns data the worksheet needs to be resaved. Of course, this also assumes that the user using the worksheet is the worksheet owner. If they are not the owner then the problem will persist until the owner can be notified.&lt;br /&gt;&lt;br /&gt;As I say - an interesting conundrum!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-8475729780637885559?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/8475729780637885559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=8475729780637885559&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/8475729780637885559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/8475729780637885559'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/10/interesting-condrum-with-indexed-values.html' title='Interesting condrum with indexed values'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-2886550408430912464</id><published>2008-10-14T16:24:00.005-05:00</published><updated>2008-10-14T16:42:47.141-05:00</updated><title type='text'>Welcome to Rod West</title><content type='html'>I am delighted to be able to let you know that Rod West, a prolific answerer of questions on the &lt;a href="http://forums.oracle.com/forums/profile.jspa?userID=421619"&gt;OTN Discoverer Forum&lt;/a&gt;, will be joining me as a co-author on this blog.&lt;br /&gt;&lt;br /&gt;Rod has been using Oracle databases since 1985 and is principal consultant at Cabot Consulting in the United Kingdom. He specializes in Oracle Applications 11i / 12i as well as Oracle Discoverer. Rod can be contacted at &lt;a href="mailto:rodwest@cabotconsulting.co.uk"&gt;rodwest@cabotconsulting.co.uk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Rod has also submitted two white papers, both of which are available for immediate download from my website by &lt;a href="http://learndiscoverer.com/third_party_documents.htm"&gt;clicking here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The papers are as follows:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#990000;"&gt;Scheduling through concurrent manager&lt;/span&gt; - this paper describes how Oracle Applications Concurrent Processing can be used to schedule Discoverer workbooks&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#990000;"&gt;Using VPD to secure Discoverer reports&lt;/span&gt; - this article uses a series of examples to demonstrate how VPD can be used to secure Discoverer reports. The examples have been written with Discoverer in mind but VPD is a database centric approach and so can be applied to any reporting tool&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-2886550408430912464?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/2886550408430912464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=2886550408430912464&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2886550408430912464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/2886550408430912464'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/10/welcome-to-rod-west.html' title='Welcome to Rod West'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-453615778199305079</id><published>2008-10-06T16:24:00.002-05:00</published><updated>2008-10-06T16:29:15.361-05:00</updated><title type='text'>Cumulative Patch 2 for 10.1.2.3</title><content type='html'>I am very pleased to announce that Oracle have released a second cumulative patch for Discoverer 10.1.2.3.&lt;br /&gt;&lt;br /&gt;So far this has been released for the following platform:&lt;br /&gt;Windows 32-bit&lt;br /&gt;&lt;br /&gt;The following postings have been updated:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://learndiscoverer.blogspot.com/2008/04/most-useful-patch-numbers.html"&gt;Useful Patch Numbers&lt;/a&gt;&lt;br /&gt;&lt;a href="http://learndiscoverer.blogspot.com/2008/04/do-not-upgrade-to-discoverer-10123.html"&gt;Do not upgrade to Discoverer 10.1.2.3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Important Note: Neither the base 10.1.2.3 nor any of its cumulative patches are certified for use against E-Business Suite 11i or 12i, so please don't upgrade to 10.1.2.3 if you are using or intend to use Discoverer in Apps mode. 10.1.2.2 and all of its cumulative patches are certified so this is where you should be, at least for the time being.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-453615778199305079?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/453615778199305079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=453615778199305079&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/453615778199305079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/453615778199305079'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/10/cumulative-patch-2-for-10123.html' title='Cumulative Patch 2 for 10.1.2.3'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21606293.post-6811129448825616392</id><published>2008-09-16T14:59:00.002-05:00</published><updated>2008-09-16T15:20:42.021-05:00</updated><title type='text'>Be careful installing cumulative patches</title><content type='html'>I can't stress the importance of making sure you read all of the instructions in the readme files that come with the cumulative patches. For example, the readme for cumulative patch 8 on Windows has the following statement concerning OPatch:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;2. It is always recommended to have the lastest 1.0.0.0.xx opatch version.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Minimum opatch version is 1.0.0.0.57&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Opatch version can be checked following the below steps:&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;                -  set ORACLE_HOME=&lt;oracle&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;                -  set OPatch in the PATH&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;                -  opatch version&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, the same readme for the Linux install has this statement:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;2. It is always recommended to have the lastest 1.0.0.0.xx opatch version.&lt;br /&gt;Minimum opatch version is 1.0.0.0.58&lt;br /&gt;Opatch version can be checked following the below steps:&lt;br /&gt;                -  set ORACLE_HOME=&lt;oracle&gt;&lt;br /&gt;                -  set OPatch in the PATH&lt;br /&gt;                -  opatch version&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Notice that the minimum OPatch versions are different. This is very important.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Warning: If you attempt to install CP8 on Linux using OPatch 1.0.0.0.57 the install will fail and you will get a message saying that the inventory could not be updated.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, by this point the cumulative patch code will already have deleted some required files and so now even your original Discoverer will not work. The solution is to install the correct version of OPatch and rerun the cumulative patch. It will now put the right, required files in place and Discoverer Plus will operate correctly.&lt;br /&gt;&lt;br /&gt;The moral of the story is to read the installation notes carefully so that you don't get caught out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21606293-6811129448825616392?l=learndiscoverer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learndiscoverer.blogspot.com/feeds/6811129448825616392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21606293&amp;postID=6811129448825616392&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/6811129448825616392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21606293/posts/default/6811129448825616392'/><link rel='alternate' type='text/html' href='http://learndiscoverer.blogspot.com/2008/09/be-careful-installing-cumulative.html' title='Be careful installing cumulative patches'/><author><name>Michael</name><uri>http://www.blogger.com/profile/15681943886306975181</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07340450621295824406'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>