ODTUG Aggregator ODTUG Blogs http://localhost:8080 Tue, 25 Apr 2017 16:16:52 +0000 http://aggrssgator.com/ Searching Source Code & Your Views in SQL Developer http://www.thatjeffsmith.com/archive/2017/04/searching-source-code-your-views-in-sql-developer/ <p>Code searching isn&#8217;t new for version 4.2. It&#8217;s not even new for version 4.1, or v4.0&#8230;but what IS new, is that some folks consider the SQL behind their VIEW objects to be &#8216;code.&#8217;</p> <p>So, for version 4.2, you can say, search my PL/SQL source AND search the SQL behind my views.</p> <div id="attachment_6140" style="width: 495px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/view-source1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/view-source1.png" alt="" width="485" height="571" class="size-full wp-image-6140" /></a><p class="wp-caption-text">Just check the &#8216;All Views&#8217; toggle.</p></div> <p>You&#8217;ll notice there&#8217;s an option to add wildcards around your search term for the &#8216;Code&#8217; category &#8211; that&#8217;s useful when searching object names in your data dictionary and also for references to that object in your source code.</p> <p>Hit &#8216;Go&#8217;, and voila.</p> <div id="attachment_6141" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/view-source2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/view-source2.png" alt="" width="1024" height="348" class="size-full wp-image-6141" /></a><p class="wp-caption-text">Clicking on the search result will open the object.</p></div> <p>It&#8217;s not exactly easy to search on views, the code behind a view is stored in a LONG column. But, it&#8217;s not impossible.</p> <p>You can see how we do it by using the Statements panel.</p> <div id="attachment_6142" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/view-source3.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/view-source3.png" alt="" width="1024" height="566" class="size-full wp-image-6142" /></a><p class="wp-caption-text">Ah, so that&#8217;s how they do it&#8230;</p></div> <h3>Don&#8217;t forget the &#8216;Trick!&#8217;</h3> <p>My favorite way to access the search.</p> <div id="attachment_4161" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2013/12/search.gif"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2013/12/search.gif" alt="" width="1024" height="576" class="size-full wp-image-4161" /></a><p class="wp-caption-text">Select, alt+g, and &#8216;Go&#8217; <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p></div> thatjeffsmith http://www.thatjeffsmith.com/?p=6139 Tue Apr 25 2017 09:38:56 GMT-0400 (EDT) Oracle Unified Auditing Performance Issues and 12.2 Improvements https://www.integrigy.com/security-resources/oracle-unified-auditing-performance-issues-and-122-improvements <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>For those of you using and/or considering Unified Auditing, in case you might have missed, Oracle has made significant changes to Unified Auditing in 12.2. Unified Auditing, new in Oracle 12c, represents a complete rewrite of how native database auditing works - see the links below for Integrigy research on Unified Auditing.</p> <p>With Oracle 12.1, when using Unified Auditing, reads of the UNIFIED_AUDIT_TRAIL view were not performant. With Oracle 12.2, a new relational partitioned table (AUDSYS.AUD$UNIFIED) is created to solve the performance issue, and a patch (22782757) has been issued to backport the fix to 12.1.</p> <p>For 12.1 clients using Unified Auditing, the patch and/or the workaround should be a high priority consideration.</p> <p>Thank you to&nbsp;Mark Dietrich for pointing out the 12.1 patch.</p> <p>If you have any questions, please contact us at&nbsp;<a data-jsb_prepared="x98iw8szym" href="mailto:info@integrigy.com" rel="noreferrer">info@integrigy.com</a></p> <p>-Michael Miller, CISSP-ISSMP, CCSP, CCSK</p> <h3 class="grammarly-disable-indicator">References</h3> <ul> <li>Oracle Support Note 2063340.1 (Performance Issues While Monitoring the Unified Audit Trail)&nbsp;<a data-jsb_prepared="utk4q80m30" href="https://support.oracle.com/rs?type=doc&amp;id=2063340.1" rel="noreferrer">https://support.oracle.com/rs?type=doc&amp;id=2063340.1</a></li> <li>Integrigy Whitepaper:&nbsp;<a data-jsb_prepared="8h5b69075s" href="/security-resources/oracle-12c-unified-auditing" rel="noreferrer">Oracle 12c Unified Auditing</a></li> <li>Integrigy Webinar &amp; Presebntation:&nbsp;<a data-jsb_prepared="5btis3ssku" href="/security-resources/oracle-12c-unified-auditing-webinar" rel="noreferrer">Oracle 12c Unified Auditing Webinar</a></li> <li>Integrigy Audit Framework Whitepaper:&nbsp;<a data-jsb_prepared="978rjrxpev" href="/security-resources/integrigy-guide-database-auditing-and-logging" rel="noreferrer">Integrigy Guide to Database Auditing and Logging</a></li> <li>Mark Dietrich's Blog:&nbsp;<a data-jsb_prepared="ircihnacxq" href="https://mikedietrichde.com/2017/04/19/unified-auditing-performance-improvements-in-oracle-12-1-0-2/" rel="noreferrer">https://mikedietrichde.com/2017/04/19/unified-auditing-performance-improvements-in-oracle-12-1-0-2/</a></li> </ul> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> </div></div></div><a href="/tags/auditing" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Auditing</a>, <a href="/tags/oracle-database" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle Database</a> mmiller 574 at https://www.integrigy.com Tue Apr 25 2017 07:00:00 GMT-0400 (EDT) Certification : OCP 12c and OCP 12cR2 Updates https://oracle-base.com/blog/2017/04/25/certification-ocp-12c-and-ocp-12cr2-updates/ <p><img class="alignleft wp-image-7105" src="https://oracle-base.com/blog/wp-content/uploads/2017/04/graduate-150374_640.png" alt="" width="150" height="157" />Just a couple of certification related updates.</p> <p><strong>Upgrade to oracle Database 12c¬†(1Z0-060)</strong></p> <p>About a week ago I finally got round to doing the 12c certification. As followers of the blog/website know I&#8217;ve been writing articles about Oracle Database 12c since it was released nearly 4¬†years ago and for pretty much all of that time I&#8217;ve been trying to convince myself to sit the 12c OCP DBA upgrade exam. It&#8217;s not that I care about the piece of paper itself (<a href="/articles/misc/oracle-certification-frequently-asked-questions">see my certification FAQ</a>), but I&#8217;ve had so many people write and thank me for <a href="/articles/12c/articles-12c#ocp">my 12c revision notes</a>, that it felt a little bit odd I hadn&#8217;t actually sat the exam myself.</p> <p>The biggest factor in delaying taking this exam was it was not a conventional 12cR1 new features exam. Instead it was an upgrade from OCP 9i, 10g, 11g to 12cR1. That meant it potentially covered anything introduced from 9iR2¬†onward. ¬†That means in addition to learning the new features well enough to pass the exam, you also have to cover the old ground, which is quite a burden. Oracle used to provide catch-up exams like this as well as a straight new features exam and I think that was a better option.</p> <p>Now I&#8217;m sure some of you will think, &#8220;But you should know that stuff anyway!&#8221;, and you are right, but knowing enough to do the job and knowing the type of things you are tested on in an exam are not the same thing. The thought of revising everything from 9iR2¬†onward was quite daunting and it put me off doing this exam.¬†This seemed to be a common reaction amongst many people I spoke to.</p> <p>I realise maintaining a catch-up exam and a regular new features exam is extra work for the certification folks, but if you want to keep people on the OCP treadmill, I think you&#8217;ve got to do this. I came very close to ditching the whole OCP thing as a result of this 12c upgrade exam, and I&#8217;m sure I&#8217;m not the only one.</p> <p><strong>Upgrade Oracle DBA 11g/12c to 12cR2 (1Z1-074)</strong></p> <p>I mentioned in a <a href="/blog/2017/04/20/is-oracle-database-12-2-really-oracle-database-13-1/">recent post</a> there is an exam called¬†‚ÄúUpgrade Oracle DBA 11g/12c to 12cR2 (1Z1-074)‚ÄĚ in beta at the moment. I&#8217;ve been writing about Oracle Database 12cR2 since¬†its release on the Oracle Public Cloud, so there are quite a few articles on my website already.</p> <p>Normally the release 2 articles get lumped together, since they don&#8217;t form part of an exam syllabus, but now they do, so I&#8217;ve split them up into two sections.</p> <ul> <li><a href="/articles/12c/articles-12c#ocp-122">Upgrade Oracle DBA 11g/12c to 12cR2 (1Z1-074) : OCP DBA Upgrade Exam</a></li> <li><a href="/articles/12c/articles-12c#database-12cr2">Oracle Database 12c Release 2 : Miscellaneous Articles</a></li> </ul> <p>I&#8217;ll continue to add new articles to both sections, and at some point I will have a complete set of revision notes for the new exam. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Once again the new exam is a catch-up exam, but at least it only covers 12cR1 and 12cR2 this time. As before, I think this is a mistake, but that&#8217;s just my opinion. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Part of me wants to cram for this new exam and get it done on the cheap while it is in beta. Part of me¬†thinks I may never take this new exam. Time will tell I guess. You&#8217;ll probably see an update post in 4 years when I&#8217;ve finally got round to it. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/25/certification-ocp-12c-and-ocp-12cr2-updates/">Certification : OCP 12c and OCP 12cR2 Updates</a> was first posted on April 25, 2017 at 11:32 am.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7104 Tue Apr 25 2017 06:32:08 GMT-0400 (EDT) JDev/ADF sample - ADF BC Groovy Expression Security Policy Configuration http://andrejusb-samples.blogspot.com/2017/04/jdevadf-sample-adf-bc-groovy-expression.html <div dir="ltr" style="text-align: left;" trbidi="on"><ul><li><a href="http://andrejusb.blogspot.lt/2017/04/adf-bc-groovy-expression-security.html" target="_blank">ADF BC Groovy Expression Security Policy Configuration</a>. Today I'm going to explain how to configure Groovy expression security policy. This could be helpful, if you dont want to change trustMode property to trusted everywhere across the app, but looking for single configuration point.</li></ul><ol>Download - <a href="https://docs.google.com/uc?export=download&amp;id=0Bw_kr1_tXc-eU3FaRUR6UHBEcjg">GroovyPermissionApp.zip</a></ol></div> Andrejus Baranovskis tag:blogger.com,1999:blog-4301764760924839143.post-1352109546841292835 Mon Apr 24 2017 14:39:00 GMT-0400 (EDT) Data Visualization and Advanced Analytics Kscope17 Track Highlights ‚Äď Kevin McGinley http://www.odtug.com/p/bl/et/blogaid=713&source=1 Here is an overview of Kscope17 sessions Kevin McGinley is most looking forward to and his thoughts on why you should attend them, too: ODTUG http://www.odtug.com/p/bl/et/blogaid=713&source=1 Mon Apr 24 2017 08:08:06 GMT-0400 (EDT) Presentation Feedback and Future Direction https://oracle-base.com/blog/2017/04/24/presentation-feedback-and-future-direction/ <p><img class="alignleft wp-image-7099" src="https://oracle-base.com/blog/wp-content/uploads/2017/04/big-smile-2024026_640.png" alt="" width="150" height="154" />I recently had some feedback from UKOUG Tech 16 and OUG Ireland. I was pleased with the evaluation numbers, but if I&#8217;m honest I find it hard to judge a lot by them. I typically get a lower score for &#8220;quality of slides&#8221; compared to the other areas, but I¬†can&#8217;t really argue about that. The number of evaluations that include comments is a small fraction of the total evaluations returned, but it&#8217;s the first thing my eyes are drawn to. This is what I got, exactly as I was sent it, including punctuation, or lack of. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p><strong>UKOUG Tech16</strong></p> <ul> <li>Excellent hype-free common-sense</li> <li>Excellent presentation, clearly explained the topic.</li> <li>Very good reminder and encouragement to do things better when it comes to security.</li> <li>Useful info and worth highlighting regularly And was highlighted during the talk that database security is important but is part of a bigger security picture There are tasks the DBA can do but the design and configuration of the App is paramount Useful</li> </ul> <p><strong>OUG Ireland 2017</strong></p> <ul> <li>Excellent Presenter</li> <li>I want him to present Dev stuff</li> <li>Excellent! Needs more sessions</li> <li>Excellent Presentations Very informative Thank you Tim.</li> <li>Tim Hall is a great presenter. Give him more slots!</li> </ul> <p>The &#8220;more slots&#8221; comments¬†made me laugh. I think I get plenty of slots at conferences. Some would say more than my fair share. Maybe they were being sarcastic? <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Once¬†the¬†head swelling had subsided, I noticed myself focusing on the, &#8220;I want him to present Dev stuff&#8221;, comment. I&#8217;ve always considered myself a DBA/Developer and most of my early presentations were on PL/SQL development. At some point over the last couple of years I&#8217;ve been doing a bit less of that and more DBA and/or infrastructure related presentations. I don&#8217;t think that was intentional, so I&#8217;m not sure how that happened. I guess the influence of my current job had something to do with that.</p> <p>My intention is to get back to doing some development presentations, and there&#8217;s certainly a lot to talk about with regards to what&#8217;s been happening on the database and surrounding technologies recently.</p> <p>So thank¬†you to everyone that filled in evaluations, especially those that took the time to write a comment. I am listening to your feedback. I agree my slides are a bit crappy and I will try to do more development stuff again.</p> <p>See you soon!</p> <p>Cheers</p> <p>Tim&#8230;</p> <p>PS. I&#8217;m surprised nobody has said, &#8220;He always has a problem with his clicker/pointer!&#8221;, because I do. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/24/presentation-feedback-and-future-direction/">Presentation Feedback and Future Direction</a> was first posted on April 24, 2017 at 12:01 pm.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7098 Mon Apr 24 2017 07:01:01 GMT-0400 (EDT) ARDUINO ‚Äď Guest Post by Dylan Bryant http://dbaontap.com/2017/04/23/arduino-guest-post-dylan-bryant/ <p>In my effort to fight the TV, I issued a challenge to my 10yr old. Here is his story. Enjoy! -dbaOnTap Last week my dad challenged me to make the Arduino UNO do something. So I chose to make a light blink. Now I will tell you exactly how I did it. First, I had ...</p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/04/23/arduino-guest-post-dylan-bryant/">ARDUINO &#8211; Guest Post by Dylan Bryant</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">dbaonTap</a>.</p> DB http://dbaontap.com/?p=1257 Sun Apr 23 2017 10:38:05 GMT-0400 (EDT) R: Utilizing multiple CPUs https://technology.amis.nl/2017/04/22/r-utilizing-multiple-cpus/ <p>R is a great piece of software to perform statistical analyses. Computing power can however be a limitation. R by default uses only a single CPU. In almost every machine, multiple CPUs are present, so why not utilize them? In this blog post I&#8217;ll give a minimal example and some code snippets to help make more complex examples work.</p> <p><span id="more-44616"></span></p> <h1>Utilizing multiple CPUs</h1> <p>Luckily using multiple CPUs in R is relatively simple. There is a deprecated library multicore available which you shouldn&#8217;t use. A newer library parallel is recommended. This library provides mclapply. This function only works on Linux systems so we&#8217;re not going to use that one. The below examples work on Windows and Linux and do not use deprecated libraries.</p> <h2>A very simple example</h2> <pre class="brush: plain; title: ; notranslate"> library(parallel) no_cores &lt;- detectCores() - 1 cl &lt;- makeCluster(no_cores) arr &lt;- c(&quot;business&quot;,&quot;done&quot;,&quot;differently&quot;) #Work on the future together result &lt;- parLapply(cl, arr, function(x) toupper(x)) #Conclusion: BUSINESS DONE DIFFERENTLY paste (c('Conclusion:',result),collapse = ' ') stopCluster(cl) </pre> <p>The example is a minimal example of how you can use clustering in R. What this code does is spawn multiple processes and process the entries from the array c(&#8220;business&#8221;,&#8221;done&#8221;,&#8221;differently&#8221;) in those separate processes. Processing in this case is just putting them in uppercase. After it is done, the result from the different processes is combined in Conclusion: BUSINESS DONE DIFFERENTLY.</p> <p>If you remove the stopCluster command, you can see there are multiple processes open on my Windows machine:</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture.png?ssl=1"><img data-attachment-id="44619" data-permalink="https://technology.amis.nl/2017/04/22/r-utilizing-multiple-cpus/capture-3/" data-orig-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture.png?fit=680%2C453&amp;ssl=1" data-orig-size="680,453" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Capture" data-image-description="" data-medium-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture.png?fit=300%2C200&amp;ssl=1" data-large-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture.png?fit=680%2C453&amp;ssl=1" class="aligncenter size-medium wp-image-44619" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture.png?resize=300%2C200&#038;ssl=1" alt="" srcset="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture.png?resize=300%2C200&amp;ssl=1 300w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture.png?w=680&amp;ssl=1 680w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>After having called the stopCluster command, the number of processes if much reduced:</p> <p><a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture01.png?ssl=1"><img data-attachment-id="44618" data-permalink="https://technology.amis.nl/2017/04/22/r-utilizing-multiple-cpus/capture01-12/" data-orig-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture01.png?fit=681%2C249&amp;ssl=1" data-orig-size="681,249" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Capture01" data-image-description="" data-medium-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture01.png?fit=300%2C110&amp;ssl=1" data-large-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture01.png?fit=681%2C249&amp;ssl=1" class="aligncenter size-medium wp-image-44618" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture01.png?resize=300%2C110&#038;ssl=1" alt="" srcset="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture01.png?resize=300%2C110&amp;ssl=1 300w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture01.png?w=681&amp;ssl=1 681w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>You can imagine that for such a simple operation as putting things in uppercase, you might as well use the regular apply function which saves you from the overhead of spawning processes. If however you have more complex operations like the below example, you will benefit greatly from being to utilize more computing power!</p> <h2>A more elaborate example</h2> <p>You can download the code of this example from: <a href="https://github.com/MaartenSmeets/R/blob/master/htmlcrawling.R">https://github.com/MaartenSmeets/R/blob/master/htmlcrawling.R</a></p> <p>The sample however does not work anymore since it parses Yahoo pages which have recently been changed. The sample does illustrate however how to do parallel processing.</p> <p>Because there are separate R processes running, you need to make libraries and functions available to these processes. For example, you can make libraries available like:</p> <pre class="brush: plain; title: ; notranslate"> #make libraries available in other nodes clusterEvalQ(cl, { library(XML) library(RCurl) library(parallel) } ) </pre> <p>And you can make functions available like</p> <pre class="brush: plain; title: ; notranslate"> clusterExport(cl, &quot;htmlParseFunc&quot;) </pre> <h1>Considerations</h1> <p>There are several considerations (and probably more than mentioned below) when using this way of clustering:</p> <ul> <li>Work packages are separated equally over CPUs. If however the work packages differ greatly in the amount of work, you can encounter situations where parLapply is waiting for a process to complete while the other processes are already done. You should try and use work packages mostly of equal size to avoid this.</li> <li>If a process runs too long, it will timeout. You can set the timeout when creating the cluster like: cl &lt;- makeCluster(no_cores, timeout=50)</li> <li>Every process takes memory. If you process large variables in parallel, you might encounter memory limitations.</li> <li>Debugging the different processes can be difficult. I will not go into detail here.</li> <li>GPUs can also be utilized to do calculations. See for example: <a href="https://www.r-bloggers.com/r-gpu-programming-for-all-with-gpur/">https://www.r-bloggers.com/r-gpu-programming-for-all-with-gpur/</a>. I have not tried this but the performance graphs online indicate a much better performance can be achieved than when using CPUs.</li> </ul> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/04/22/r-utilizing-multiple-cpus/">R: Utilizing multiple CPUs</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Maarten Smeets https://technology.amis.nl/?p=44616 Sat Apr 22 2017 08:02:50 GMT-0400 (EDT) Love Your Data Conference in NYC on 31st May http://www.fahdmirza.com/2017/04/love-your-data-conference-in-nyc-on.html <div dir="ltr" style="text-align: left;" trbidi="on"><span style="font-size: 18px;">In this InfoEra, its all about data.Whether its in the cloud or on-premises everything is truly revolving around and is for data. <a href="http://www.pythian.com/">Pythian</a> understood that decades ago and loving the data of their customers since day one. They are showcasing this love on 31st May in NYC.</span><br /><span style="font-size: 18px;"><br /></span><div class="separator" style="clear: both; text-align: center;"><a href="http://promo.pythian.com/love-your-data-conference/"><img alt="http://promo.pythian.com/love-your-data-conference/" border="0" height="64" src="https://2.bp.blogspot.com/-XkO_pqD9NT4/WPqfjfCZ3CI/AAAAAAAAAeU/j7SaPDLJW6wx3-lSKlzFq6ph1Nh7aFJ_ACLcB/s320/unnamed.jpg" width="320" /></a></div><span style="font-size: 18px;"><br /></span><br /><span style="font-size: 18px;">To help you turn your organization into a truly data-driven business, this interactive 1-day event in New York City on May 31, 2017, combesentations, practical interactive panel sessions and open discussions across business and technical tracks.</span><br /><br /><div dir="ltr" style="line-height: 24px;"><span style="font-size: 16px;">This event is for CIO‚Äôs and IT Business leaders interested in learning how to better empower their company to drive business outcomes with analytics. Pythian‚Äôs Love Your Data Conference will focus on practical ways to:</span></div><ul><li style="line-height: 24px; margin-left: 20px;"><span style="font-size: 16px;">Transform your organization using data and self-service analytics</span></li><li style="line-height: 24px; margin-left: 20px;"><span style="font-size: 16px;">Align IT to the business by giving all users access to data</span></li><li style="line-height: 24px; margin-left: 20px;"><span style="font-size: 16px;">Add data intelligence and automation to business decisions</span></li><li style="line-height: 24px; margin-left: 20px;"><span style="font-size: 16px;">Get a 360-degree view of your customer and promote innovation</span>&nbsp;</li></ul>If you want to attend only one event this year then this must be the one. <br /></div> Fahd Mirza tag:blogger.com,1999:blog-3496259157130184660.post-4087050738926480383 Fri Apr 21 2017 20:11:00 GMT-0400 (EDT) Collation and Case-Insensitive Database in Oracle 12.2 https://oracle-base.com/blog/2017/04/21/collation-and-case-insensitive-database-in-oracle-12-2/ <p><img class="alignleft wp-image-7096" src="https://oracle-base.com/blog/wp-content/uploads/2017/04/sort-27489_640.png" alt="" width="150" height="166" />A little while ago <a href="https://twitter.com/thatjeffsmith">Jeff Smith</a> asked me if I had done anything with the collation functionality in Oracle Database 12c Release 2 (12.2). At the time my response was I was letting it stew a little before I released anything about it.</p> <p>For some functionality the manuals contain a lot of information, but it&#8217;s not always obvious¬†how much you will really care about. The collation functionality is exactly like that. You can get bogged down in some quite heavy stuff, or you can give some basic¬†examples to point people in the right direction and let them go further if they need to. That&#8217;s the route I took with this article.</p> <ul> <li><a href="/articles/12c/column-level-collation-and-case-insensitive-database-12cr2">Column-Level Collation and Case-Insensitive Database in Oracle Database 12c Release 2 (12.2)</a></li> </ul> <p>I think this will be a game-changer for some applications.¬†If you&#8217;re a MySQL user you are probably laughing now about how long it&#8217;s taken Oracle to catch up. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>As always, you have to approach this stuff with a little caution. Making a change that affects every query against some¬†data for comparisons and ordering is rather dangerous. I&#8217;m not sure how quickly, if ever, I would be considering a switch across to this for my actual table segments, but I can certainly see how some views or materialized views could be put to good use¬†really quickly.</p> <p>It will be interesting to see how this is recieved.</p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/21/collation-and-case-insensitive-database-in-oracle-12-2/">Collation and Case-Insensitive Database in Oracle 12.2</a> was first posted on April 21, 2017 at 4:20 pm.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7088 Fri Apr 21 2017 11:20:57 GMT-0400 (EDT) Better track the Usage of Database Options and Management Packs, or it will cost you https://technology.amis.nl/2017/04/21/better-track-usage-database-options-management-packs-will-cost/ <p><strong><strong>So here it is</strong></strong><br /> Oracle announces a license audit, some urgency kicks in and this familiar but also really serious question comes down from management: &#8220;<em>Are we using any unlicensed database features</em>&#8220;. The seriousness is quite understandable, because if so, the company can look forward to some negotiations with Oracle over license fees, possibly resulting in considerable and unforeseen extra costs.</p> <p><strong><strong>Tracking&#8230; why</strong> </strong><br /> To be able to provide a swift and correct answer to this question, I track the usage of database options and management packs. As you might expect, tracking also enables detection of any deliberate or accidental unlicensed feature usage, so I can stop it sooner than later. And stopping it sooner is better because usage during months or years isn&#8217;t as easily excused by Oracle as usage during a day or week. </p> <p><strong><strong>Tracking&#8230; how</strong></strong><br /> Tracking is done by way of 2 views, both derived from &#8220;<em>options_packs_usage_statistics.sql</em>&#8220;, provided by Oracle Support &#8211;> MOS Note 1317265. Recently this script has been updated to handle version 12.2, so I had to update my views too. The Oracle script can be used on database version 11gR2 and higher, and on 12c container as well as non-container 12c databases. My views can also be used on 11gR2 databases and higher ( EE, SE and SE2 ), but assume a non-container database.</p> <p><strong><strong>Bugs</strong></strong><br /> Some bugs (Doc ID 1309070.1) are associated with DBA_FEATURE_USAGE_STATISTICS, the main data source for &#8220;<em>options_packs_usage_statistics.sql</em>&#8220;. At this time they mention false positives over the use of compression or encryption with Secure Files and RMAN, and with the reporting of Oracle Spatial usage where only Oracle Locator is used.</p> <p><strong><strong>Disclaimer</strong></strong><br /> The following code provide usage statistics for Database Options, Management Packs and their corresponding features.<br /> This information is to be used for informational purposes only and does not represent any license entitlement or requirement.</p> <pre class="brush: plain; title: ; notranslate"> SET DEFINE OFF; CREATE OR REPLACE FORCE VIEW FEATURE_USAGE AS select product , decode(usage, 'NO_USAGE','NO', usage ) &quot;Used&quot; , last_sample_date , first_usage_date , last_usage_date ------- following sql is based on options_packs_usage_statistics.sql --&gt; MOS Note 1317265.1 from ( with MAP as ( -- mapping between features tracked by DBA_FUS and their corresponding database products (options or packs) select '' PRODUCT, '' feature, '' MVERSION, '' CONDITION from dual union all SELECT 'Active Data Guard' , 'Active Data Guard - Real-Time Query on Physical Standby' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Active Data Guard' , 'Global Data Services' , '^12\.' , ' ' from dual union all SELECT 'Advanced Analytics' , 'Data Mining' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'ADVANCED Index Compression' , '^12\.' , 'BUG' from dual union all SELECT 'Advanced Compression' , 'Advanced Index Compression' , '^12\.' , 'BUG' from dual union all SELECT 'Advanced Compression' , 'Backup HIGH Compression' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Backup LOW Compression' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Backup MEDIUM Compression' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Backup ZLIB Compression' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Data Guard' , '^11\.2|^12\.' , 'C001' from dual union all SELECT 'Advanced Compression' , 'Flashback Data Archive' , '^11\.2\.0\.[1-3]\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Flashback Data Archive' , '^(11\.2\.0\.[4-9]\.|12\.)' , 'INVALID' from dual union all -- licensing required by Optimization for Flashback Data Archive SELECT 'Advanced Compression' , 'HeapCompression' , '^11\.2|^12\.1' , 'BUG' from dual union all SELECT 'Advanced Compression' , 'HeapCompression' , '^12\.[2-9]' , ' ' from dual union all SELECT 'Advanced Compression' , 'Heat Map' , '^12\.1' , 'BUG' from dual union all SELECT 'Advanced Compression' , 'Heat Map' , '^12\.[2-9]' , ' ' from dual union all SELECT 'Advanced Compression' , 'Hybrid Columnar Compression Row Level Locking' , '^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Information Lifecycle Management' , '^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Oracle Advanced Network Compression Service' , '^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Oracle Utility Datapump (Export)' , '^11\.2|^12\.' , 'C001' from dual union all SELECT 'Advanced Compression' , 'Oracle Utility Datapump (Import)' , '^11\.2|^12\.' , 'C001' from dual union all SELECT 'Advanced Compression' , 'SecureFile Compression (user)' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'SecureFile Deduplication (user)' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Security' , 'ASO native encryption and checksumming' , '^11\.2|^12\.' , 'INVALID' from dual union all -- no longer part of Advanced Security SELECT 'Advanced Security' , 'Backup Encryption' , '^11\.2' , ' ' from dual union all SELECT 'Advanced Security' , 'Backup Encryption' , '^12\.' , 'INVALID' from dual union all -- licensing required only by encryption to disk SELECT 'Advanced Security' , 'Data Redaction' , '^12\.' , ' ' from dual union all SELECT 'Advanced Security' , 'Encrypted Tablespaces' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Security' , 'Oracle Utility Datapump (Export)' , '^11\.2|^12\.' , 'C002' from dual union all SELECT 'Advanced Security' , 'Oracle Utility Datapump (Import)' , '^11\.2|^12\.' , 'C002' from dual union all SELECT 'Advanced Security' , 'SecureFile Encryption (user)' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Security' , 'Transparent Data Encryption' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Change Management Pack' , 'Change Management Pack' , '^11\.2' , ' ' from dual union all SELECT 'Configuration Management Pack for Oracle Database' , 'EM Config Management Pack' , '^11\.2' , ' ' from dual union all SELECT 'Data Masking Pack' , 'Data Masking Pack' , '^11\.2' , ' ' from dual union all SELECT '.Database Gateway' , 'Gateways' , '^12\.' , ' ' from dual union all SELECT '.Database Gateway' , 'Transparent Gateway' , '^12\.' , ' ' from dual union all SELECT 'Database In-Memory' , 'In-Memory Aggregation' , '^12\.' , ' ' from dual union all SELECT 'Database In-Memory' , 'In-Memory Column Store' , '^12\.1\.0\.2\.0' , 'BUG' from dual union all SELECT 'Database In-Memory' , 'In-Memory Column Store' , '^12\.1\.0\.2\.[^0]|^12\.2' , ' ' from dual union all SELECT 'Database Vault' , 'Oracle Database Vault' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Database Vault' , 'Privilege Capture' , '^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'ADDM' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'AWR Baseline' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'AWR Baseline Template' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'AWR Report' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'Automatic Workload Repository' , '^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'Baseline Adaptive Thresholds' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'Baseline Static Computations' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'Diagnostic Pack' , '^11\.2' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'EM Performance Page' , '^12\.' , ' ' from dual union all SELECT '.Exadata' , 'Exadata' , '^11\.2|^12\.' , ' ' from dual union all SELECT '.GoldenGate' , 'GoldenGate' , '^12\.' , ' ' from dual union all SELECT '.HW' , 'Hybrid Columnar Compression' , '^12\.1' , 'BUG' from dual union all SELECT '.HW' , 'Hybrid Columnar Compression' , '^12\.[2-9]' , ' ' from dual union all SELECT '.HW' , 'Hybrid Columnar Compression Row Level Locking' , '^12\.' , ' ' from dual union all SELECT '.HW' , 'Sun ZFS with EHCC' , '^12\.' , ' ' from dual union all SELECT '.HW' , 'ZFS Storage' , '^12\.' , ' ' from dual union all SELECT '.HW' , 'Zone maps' , '^12\.' , ' ' from dual union all SELECT 'Label Security' , 'Label Security' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Multitenant' , 'Oracle Multitenant' , '^12\.' , 'C003' from dual union all -- licensing required only when more than one PDB containers are created SELECT 'Multitenant' , 'Oracle Pluggable Databases' , '^12\.' , 'C003' from dual union all -- licensing required only when more than one PDB containers are created SELECT 'OLAP' , 'OLAP - Analytic Workspaces' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'OLAP' , 'OLAP - Cubes' , '^12\.' , ' ' from dual union all SELECT 'Partitioning' , 'Partitioning (user)' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Partitioning' , 'Zone maps' , '^12\.' , ' ' from dual union all SELECT '.Pillar Storage' , 'Pillar Storage' , '^12\.' , ' ' from dual union all SELECT '.Pillar Storage' , 'Pillar Storage with EHCC' , '^12\.' , ' ' from dual union all SELECT '.Provisioning and Patch Automation Pack' , 'EM Standalone Provisioning and Patch Automation Pack' , '^11\.2' , ' ' from dual union all SELECT 'Provisioning and Patch Automation Pack for Database' , 'EM Database Provisioning and Patch Automation Pack' , '^11\.2' , ' ' from dual union all SELECT 'RAC or RAC One Node' , 'Quality of Service Management' , '^12\.' , ' ' from dual union all SELECT 'Real Application Clusters' , 'Real Application Clusters (RAC)' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Real Application Clusters One Node' , 'Real Application Cluster One Node' , '^12\.' , ' ' from dual union all SELECT 'Real Application Testing' , 'Database Replay: Workload Capture' , '^11\.2|^12\.' , 'C004' from dual union all SELECT 'Real Application Testing' , 'Database Replay: Workload Replay' , '^11\.2|^12\.' , 'C004' from dual union all SELECT 'Real Application Testing' , 'SQL Performance Analyzer' , '^11\.2|^12\.' , 'C004' from dual union all SELECT '.Secure Backup' , 'Oracle Secure Backup' , '^12\.' , 'INVALID' from dual union all -- does not differentiate usage of Oracle Secure Backup Express, which is free SELECT 'Spatial and Graph' , 'Spatial' , '^11\.2' , 'INVALID' from dual union all -- does not differentiate usage of Locator, which is free SELECT 'Spatial and Graph' , 'Spatial' , '^12\.' , ' ' from dual union all SELECT 'Tuning Pack' , 'Automatic Maintenance - SQL Tuning Advisor' , '^12\.' , 'INVALID' from dual union all -- system usage in the maintenance window SELECT 'Tuning Pack' , 'Automatic SQL Tuning Advisor' , '^11\.2|^12\.' , 'INVALID' from dual union all -- system usage in the maintenance window SELECT 'Tuning Pack' , 'Real-Time SQL Monitoring' , '^11\.2' , ' ' from dual union all SELECT 'Tuning Pack' , 'Real-Time SQL Monitoring' , '^12\.' , 'INVALID' from dual union all -- default SELECT 'Tuning Pack' , 'SQL Access Advisor' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Tuning Pack' , 'SQL Monitoring and Tuning pages' , '^12\.' , ' ' from dual union all SELECT 'Tuning Pack' , 'SQL Profile' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Tuning Pack' , 'SQL Tuning Advisor' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Tuning Pack' , 'SQL Tuning Set (user)' , '^12\.' , 'INVALID' from dual union all -- no longer part of Tuning Pack SELECT 'Tuning Pack' , 'Tuning Pack' , '^11\.2' , ' ' from dual union all SELECT '.WebLogic Server Management Pack Enterprise Edition' , 'EM AS Provisioning and Patch Automation Pack' , '^11\.2' , ' ' from dual union all select '' PRODUCT, '' FEATURE, '' MVERSION, '' CONDITION from dual ), FUS as ( -- the current data set to be used: DBA_FEATURE_USAGE_STATISTICS or CDB_FEATURE_USAGE_STATISTICS for Container Databases(CDBs) select 0 as CON_ID, NULL as CON_NAME, -- Detect and mark with Y the current DBA_FUS data set = Most Recent Sample based on LAST_SAMPLE_DATE case when DBID || '#' || VERSION || '#' || to_char(LAST_SAMPLE_DATE, 'YYYYMMDDHH24MISS') = first_value (DBID ) over (partition by 0 order by LAST_SAMPLE_DATE desc nulls last, DBID desc) || '#' || first_value (VERSION ) over (partition by 0 order by LAST_SAMPLE_DATE desc nulls last, DBID desc) || '#' || first_value (to_char(LAST_SAMPLE_DATE, 'YYYYMMDDHH24MISS')) over (partition by 0 order by LAST_SAMPLE_DATE desc nulls last, DBID desc) then 'Y' else 'N' end as CURRENT_ENTRY, NAME , LAST_SAMPLE_DATE, DBID , VERSION , DETECTED_USAGES , TOTAL_SAMPLES , CURRENTLY_USED , FIRST_USAGE_DATE, LAST_USAGE_DATE , AUX_COUNT , FEATURE_INFO from DBA_FEATURE_USAGE_STATISTICS xy ), PFUS as ( -- Product-Feature Usage Statitsics = DBA_FUS entries mapped to their corresponding database products select CON_ID, CON_NAME, PRODUCT, NAME as FEATURE_BEING_USED, case when CONDITION = 'BUG' --suppressed due to exceptions/defects then '3.SUPPRESSED_DUE_TO_BUG' when detected_usages &gt; 0 -- some usage detection - current or past and CURRENTLY_USED = 'TRUE' -- usage at LAST_SAMPLE_DATE and CURRENT_ENTRY = 'Y' -- current record set and ( trim(CONDITION) is null -- no extra conditions or CONDITION_MET = 'TRUE' -- extra condition is met and CONDITION_COUNTER = 'FALSE' ) -- extra condition is not based on counter then '6.CURRENT_USAGE' when detected_usages &gt; 0 -- some usage detection - current or past and CURRENTLY_USED = 'TRUE' -- usage at LAST_SAMPLE_DATE and CURRENT_ENTRY = 'Y' -- current record set and ( CONDITION_MET = 'TRUE' -- extra condition is met and CONDITION_COUNTER = 'TRUE' ) -- extra condition is based on counter then '5.PAST_OR_CURRENT_USAGE' -- FEATURE_INFO counters indicate current or past usage when detected_usages &gt; 0 -- some usage detection - current or past and ( trim(CONDITION) is null -- no extra conditions or CONDITION_MET = 'TRUE' ) -- extra condition is met then '4.PAST_USAGE' when CURRENT_ENTRY = 'Y' then '2.NO_CURRENT_USAGE' -- detectable feature shows no current usage else '1.NO_PAST_USAGE' end as USAGE, LAST_SAMPLE_DATE, DBID , VERSION , DETECTED_USAGES , TOTAL_SAMPLES , CURRENTLY_USED , case when CONDITION like 'C___' and CONDITION_MET = 'FALSE' then to_date('') else FIRST_USAGE_DATE end as FIRST_USAGE_DATE, case when CONDITION like '___' and CONDITION_MET = 'FALSE' then to_date('') else LAST_USAGE_DATE end as LAST_USAGE_DATE, EXTRA_FEATURE_INFO from ( select m.PRODUCT, m.CONDITION, m.MVERSION, -- if extra conditions (coded on the MAP.CONDITION column) are required, check if entries satisfy the condition case when CONDITION = 'C001' and ( regexp_like(to_char(FEATURE_INFO), 'compression used:[ 0-9]*[1-9][ 0-9]*time', 'i') or regexp_like(to_char(FEATURE_INFO), 'compression used: *TRUE', 'i') ) then 'TRUE' -- compression has been used when CONDITION = 'C002' and ( regexp_like(to_char(FEATURE_INFO), 'encryption used:[ 0-9]*[1-9][ 0-9]*time', 'i') or regexp_like(to_char(FEATURE_INFO), 'encryption used: *TRUE', 'i') ) then 'TRUE' -- encryption has been used when CONDITION = 'C003' and CON_ID=1 and AUX_COUNT &gt; 1 then 'TRUE' -- more than one PDB are created when CONDITION = 'C004' and 'N'= 'N' then 'TRUE' -- not in oracle cloud else 'FALSE' end as CONDITION_MET, -- check if the extra conditions are based on FEATURE_INFO counters. They indicate current or past usage. case when CONDITION = 'C001' and regexp_like(to_char(FEATURE_INFO), 'compression used:[ 0-9]*[1-9][ 0-9]*time', 'i') then 'TRUE' -- compression counter &gt; 0 when CONDITION = 'C002' and regexp_like(to_char(FEATURE_INFO), 'encryption used:[ 0-9]*[1-9][ 0-9]*time', 'i') then 'TRUE' -- encryption counter &gt; 0 else 'FALSE' end as CONDITION_COUNTER, case when CONDITION = 'C001' then regexp_substr(to_char(FEATURE_INFO), 'compression used:(.*?)(times|TRUE|FALSE)', 1, 1, 'i') when CONDITION = 'C002' then regexp_substr(to_char(FEATURE_INFO), 'encryption used:(.*?)(times|TRUE|FALSE)', 1, 1, 'i') when CONDITION = 'C003' then 'AUX_COUNT=' || AUX_COUNT when CONDITION = 'C004' and 'N'= 'Y' then 'feature included in Oracle Cloud Services Package' else '' end as EXTRA_FEATURE_INFO, f.CON_ID , f.CON_NAME , f.CURRENT_ENTRY , f.NAME , f.LAST_SAMPLE_DATE, f.DBID , f.VERSION , f.DETECTED_USAGES , f.TOTAL_SAMPLES , f.CURRENTLY_USED , f.FIRST_USAGE_DATE, f.LAST_USAGE_DATE , f.AUX_COUNT , f.FEATURE_INFO from MAP m join FUS f on m.FEATURE = f.NAME and regexp_like(f.VERSION, m.MVERSION) where nvl(f.TOTAL_SAMPLES, 0) &gt; 0 -- ignore features that have never been sampled ) where nvl(CONDITION, '-') != 'INVALID' -- ignore features for which licensing is not required without further conditions and not (CONDITION = 'C003' and CON_ID not in (0, 1)) -- multiple PDBs are visible only in CDB$ROOT; PDB level view is not relevant ) select grouping_id(CON_ID) as gid, CON_ID , decode(grouping_id(CON_ID), 1, '--ALL--', max(CON_NAME)) as CON_NAME, PRODUCT , decode(max(USAGE), '1.NO_PAST_USAGE' , 'NO_USAGE' , '2.NO_CURRENT_USAGE' , 'NO_USAGE' , '3.SUPPRESSED_DUE_TO_BUG', 'SUPPRESSED_DUE_TO_BUG', '4.PAST_USAGE' , 'PAST_USAGE' , '5.PAST_OR_CURRENT_USAGE', 'PAST_OR_CURRENT_USAGE', '6.CURRENT_USAGE' , 'CURRENT_USAGE' , 'UNKNOWN') as USAGE, max(LAST_SAMPLE_DATE) as LAST_SAMPLE_DATE, min(FIRST_USAGE_DATE) as FIRST_USAGE_DATE, max(LAST_USAGE_DATE) as LAST_USAGE_DATE from PFUS where USAGE in ('2.NO_CURRENT_USAGE', '4.PAST_USAGE', '5.PAST_OR_CURRENT_USAGE', '6.CURRENT_USAGE') -- ignore '1.NO_PAST_USAGE', '3.SUPPRESSED_DUE_TO_BUG' group by rollup(CON_ID), PRODUCT having not (max(CON_ID) in (-1, 0) and grouping_id(CON_ID) = 1) -- aggregation not needed for non-container databases order by GID desc, CON_ID, decode(substr(PRODUCT, 1, 1), '.', 2, 1), PRODUCT ); CREATE OR REPLACE FORCE VIEW FEATURE_USAGE_DETAILS AS select product , feature_being_used , usage , last_sample_date , dbid , ( select name from v$database ) dbname , version , detected_usages , total_samples , currently_used , first_usage_date , last_usage_date , extra_feature_info ------- following sql is based on options_packs_usage_statistics.sql --&gt; MOS Note 1317265.1 from ( with MAP as ( -- mapping between features tracked by DBA_FUS and their corresponding database products (options or packs) select '' PRODUCT, '' feature, '' MVERSION, '' CONDITION from dual union all SELECT 'Active Data Guard' , 'Active Data Guard - Real-Time Query on Physical Standby' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Active Data Guard' , 'Global Data Services' , '^12\.' , ' ' from dual union all SELECT 'Advanced Analytics' , 'Data Mining' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'ADVANCED Index Compression' , '^12\.' , 'BUG' from dual union all SELECT 'Advanced Compression' , 'Advanced Index Compression' , '^12\.' , 'BUG' from dual union all SELECT 'Advanced Compression' , 'Backup HIGH Compression' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Backup LOW Compression' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Backup MEDIUM Compression' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Backup ZLIB Compression' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Data Guard' , '^11\.2|^12\.' , 'C001' from dual union all SELECT 'Advanced Compression' , 'Flashback Data Archive' , '^11\.2\.0\.[1-3]\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Flashback Data Archive' , '^(11\.2\.0\.[4-9]\.|12\.)' , 'INVALID' from dual union all -- licensing required by Optimization for Flashback Data Archive SELECT 'Advanced Compression' , 'HeapCompression' , '^11\.2|^12\.1' , 'BUG' from dual union all SELECT 'Advanced Compression' , 'HeapCompression' , '^12\.[2-9]' , ' ' from dual union all SELECT 'Advanced Compression' , 'Heat Map' , '^12\.1' , 'BUG' from dual union all SELECT 'Advanced Compression' , 'Heat Map' , '^12\.[2-9]' , ' ' from dual union all SELECT 'Advanced Compression' , 'Hybrid Columnar Compression Row Level Locking' , '^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Information Lifecycle Management' , '^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Oracle Advanced Network Compression Service' , '^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'Oracle Utility Datapump (Export)' , '^11\.2|^12\.' , 'C001' from dual union all SELECT 'Advanced Compression' , 'Oracle Utility Datapump (Import)' , '^11\.2|^12\.' , 'C001' from dual union all SELECT 'Advanced Compression' , 'SecureFile Compression (user)' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Compression' , 'SecureFile Deduplication (user)' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Security' , 'ASO native encryption and checksumming' , '^11\.2|^12\.' , 'INVALID' from dual union all -- no longer part of Advanced Security SELECT 'Advanced Security' , 'Backup Encryption' , '^11\.2' , ' ' from dual union all SELECT 'Advanced Security' , 'Backup Encryption' , '^12\.' , 'INVALID' from dual union all -- licensing required only by encryption to disk SELECT 'Advanced Security' , 'Data Redaction' , '^12\.' , ' ' from dual union all SELECT 'Advanced Security' , 'Encrypted Tablespaces' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Security' , 'Oracle Utility Datapump (Export)' , '^11\.2|^12\.' , 'C002' from dual union all SELECT 'Advanced Security' , 'Oracle Utility Datapump (Import)' , '^11\.2|^12\.' , 'C002' from dual union all SELECT 'Advanced Security' , 'SecureFile Encryption (user)' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Advanced Security' , 'Transparent Data Encryption' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Change Management Pack' , 'Change Management Pack' , '^11\.2' , ' ' from dual union all SELECT 'Configuration Management Pack for Oracle Database' , 'EM Config Management Pack' , '^11\.2' , ' ' from dual union all SELECT 'Data Masking Pack' , 'Data Masking Pack' , '^11\.2' , ' ' from dual union all SELECT '.Database Gateway' , 'Gateways' , '^12\.' , ' ' from dual union all SELECT '.Database Gateway' , 'Transparent Gateway' , '^12\.' , ' ' from dual union all SELECT 'Database In-Memory' , 'In-Memory Aggregation' , '^12\.' , ' ' from dual union all SELECT 'Database In-Memory' , 'In-Memory Column Store' , '^12\.1\.0\.2\.0' , 'BUG' from dual union all SELECT 'Database In-Memory' , 'In-Memory Column Store' , '^12\.1\.0\.2\.[^0]|^12\.2' , ' ' from dual union all SELECT 'Database Vault' , 'Oracle Database Vault' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Database Vault' , 'Privilege Capture' , '^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'ADDM' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'AWR Baseline' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'AWR Baseline Template' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'AWR Report' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'Automatic Workload Repository' , '^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'Baseline Adaptive Thresholds' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'Baseline Static Computations' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'Diagnostic Pack' , '^11\.2' , ' ' from dual union all SELECT 'Diagnostics Pack' , 'EM Performance Page' , '^12\.' , ' ' from dual union all SELECT '.Exadata' , 'Exadata' , '^11\.2|^12\.' , ' ' from dual union all SELECT '.GoldenGate' , 'GoldenGate' , '^12\.' , ' ' from dual union all SELECT '.HW' , 'Hybrid Columnar Compression' , '^12\.1' , 'BUG' from dual union all SELECT '.HW' , 'Hybrid Columnar Compression' , '^12\.[2-9]' , ' ' from dual union all SELECT '.HW' , 'Hybrid Columnar Compression Row Level Locking' , '^12\.' , ' ' from dual union all SELECT '.HW' , 'Sun ZFS with EHCC' , '^12\.' , ' ' from dual union all SELECT '.HW' , 'ZFS Storage' , '^12\.' , ' ' from dual union all SELECT '.HW' , 'Zone maps' , '^12\.' , ' ' from dual union all SELECT 'Label Security' , 'Label Security' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Multitenant' , 'Oracle Multitenant' , '^12\.' , 'C003' from dual union all -- licensing required only when more than one PDB containers are created SELECT 'Multitenant' , 'Oracle Pluggable Databases' , '^12\.' , 'C003' from dual union all -- licensing required only when more than one PDB containers are created SELECT 'OLAP' , 'OLAP - Analytic Workspaces' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'OLAP' , 'OLAP - Cubes' , '^12\.' , ' ' from dual union all SELECT 'Partitioning' , 'Partitioning (user)' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Partitioning' , 'Zone maps' , '^12\.' , ' ' from dual union all SELECT '.Pillar Storage' , 'Pillar Storage' , '^12\.' , ' ' from dual union all SELECT '.Pillar Storage' , 'Pillar Storage with EHCC' , '^12\.' , ' ' from dual union all SELECT '.Provisioning and Patch Automation Pack' , 'EM Standalone Provisioning and Patch Automation Pack' , '^11\.2' , ' ' from dual union all SELECT 'Provisioning and Patch Automation Pack for Database' , 'EM Database Provisioning and Patch Automation Pack' , '^11\.2' , ' ' from dual union all SELECT 'RAC or RAC One Node' , 'Quality of Service Management' , '^12\.' , ' ' from dual union all SELECT 'Real Application Clusters' , 'Real Application Clusters (RAC)' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Real Application Clusters One Node' , 'Real Application Cluster One Node' , '^12\.' , ' ' from dual union all SELECT 'Real Application Testing' , 'Database Replay: Workload Capture' , '^11\.2|^12\.' , 'C004' from dual union all SELECT 'Real Application Testing' , 'Database Replay: Workload Replay' , '^11\.2|^12\.' , 'C004' from dual union all SELECT 'Real Application Testing' , 'SQL Performance Analyzer' , '^11\.2|^12\.' , 'C004' from dual union all SELECT '.Secure Backup' , 'Oracle Secure Backup' , '^12\.' , 'INVALID' from dual union all -- does not differentiate usage of Oracle Secure Backup Express, which is free SELECT 'Spatial and Graph' , 'Spatial' , '^11\.2' , 'INVALID' from dual union all -- does not differentiate usage of Locator, which is free SELECT 'Spatial and Graph' , 'Spatial' , '^12\.' , ' ' from dual union all SELECT 'Tuning Pack' , 'Automatic Maintenance - SQL Tuning Advisor' , '^12\.' , 'INVALID' from dual union all -- system usage in the maintenance window SELECT 'Tuning Pack' , 'Automatic SQL Tuning Advisor' , '^11\.2|^12\.' , 'INVALID' from dual union all -- system usage in the maintenance window SELECT 'Tuning Pack' , 'Real-Time SQL Monitoring' , '^11\.2' , ' ' from dual union all SELECT 'Tuning Pack' , 'Real-Time SQL Monitoring' , '^12\.' , 'INVALID' from dual union all -- default SELECT 'Tuning Pack' , 'SQL Access Advisor' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Tuning Pack' , 'SQL Monitoring and Tuning pages' , '^12\.' , ' ' from dual union all SELECT 'Tuning Pack' , 'SQL Profile' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Tuning Pack' , 'SQL Tuning Advisor' , '^11\.2|^12\.' , ' ' from dual union all SELECT 'Tuning Pack' , 'SQL Tuning Set (user)' , '^12\.' , 'INVALID' from dual union all -- no longer part of Tuning Pack SELECT 'Tuning Pack' , 'Tuning Pack' , '^11\.2' , ' ' from dual union all SELECT '.WebLogic Server Management Pack Enterprise Edition' , 'EM AS Provisioning and Patch Automation Pack' , '^11\.2' , ' ' from dual union all select '' PRODUCT, '' FEATURE, '' MVERSION, '' CONDITION from dual ), FUS as ( -- the current data set to be used: DBA_FEATURE_USAGE_STATISTICS or CDB_FEATURE_USAGE_STATISTICS for Container Databases(CDBs) select 0 as CON_ID, NULL as CON_NAME, -- Detect and mark with Y the current DBA_FUS data set = Most Recent Sample based on LAST_SAMPLE_DATE case when DBID || '#' || VERSION || '#' || to_char(LAST_SAMPLE_DATE, 'YYYYMMDDHH24MISS') = first_value (DBID ) over (partition by 0 order by LAST_SAMPLE_DATE desc nulls last, DBID desc) || '#' || first_value (VERSION ) over (partition by 0 order by LAST_SAMPLE_DATE desc nulls last, DBID desc) || '#' || first_value (to_char(LAST_SAMPLE_DATE, 'YYYYMMDDHH24MISS')) over (partition by 0 order by LAST_SAMPLE_DATE desc nulls last, DBID desc) then 'Y' else 'N' end as CURRENT_ENTRY, NAME , LAST_SAMPLE_DATE, DBID , VERSION , DETECTED_USAGES , TOTAL_SAMPLES , CURRENTLY_USED , FIRST_USAGE_DATE, LAST_USAGE_DATE , AUX_COUNT , FEATURE_INFO from DBA_FEATURE_USAGE_STATISTICS xy ), PFUS as ( -- Product-Feature Usage Statitsics = DBA_FUS entries mapped to their corresponding database products select CON_ID, CON_NAME, PRODUCT, NAME as FEATURE_BEING_USED, case when CONDITION = 'BUG' --suppressed due to exceptions/defects then '3.SUPPRESSED_DUE_TO_BUG' when detected_usages &gt; 0 -- some usage detection - current or past and CURRENTLY_USED = 'TRUE' -- usage at LAST_SAMPLE_DATE and CURRENT_ENTRY = 'Y' -- current record set and ( trim(CONDITION) is null -- no extra conditions or CONDITION_MET = 'TRUE' -- extra condition is met and CONDITION_COUNTER = 'FALSE' ) -- extra condition is not based on counter then '6.CURRENT_USAGE' when detected_usages &gt; 0 -- some usage detection - current or past and CURRENTLY_USED = 'TRUE' -- usage at LAST_SAMPLE_DATE and CURRENT_ENTRY = 'Y' -- current record set and ( CONDITION_MET = 'TRUE' -- extra condition is met and CONDITION_COUNTER = 'TRUE' ) -- extra condition is based on counter then '5.PAST_OR_CURRENT_USAGE' -- FEATURE_INFO counters indicate current or past usage when detected_usages &gt; 0 -- some usage detection - current or past and ( trim(CONDITION) is null -- no extra conditions or CONDITION_MET = 'TRUE' ) -- extra condition is met then '4.PAST_USAGE' when CURRENT_ENTRY = 'Y' then '2.NO_CURRENT_USAGE' -- detectable feature shows no current usage else '1.NO_PAST_USAGE' end as USAGE, LAST_SAMPLE_DATE, DBID , VERSION , DETECTED_USAGES , TOTAL_SAMPLES , CURRENTLY_USED , FIRST_USAGE_DATE, LAST_USAGE_DATE, EXTRA_FEATURE_INFO from ( select m.PRODUCT, m.CONDITION, m.MVERSION, -- if extra conditions (coded on the MAP.CONDITION column) are required, check if entries satisfy the condition case when CONDITION = 'C001' and ( regexp_like(to_char(FEATURE_INFO), 'compression used:[ 0-9]*[1-9][ 0-9]*time', 'i') or regexp_like(to_char(FEATURE_INFO), 'compression used: *TRUE', 'i') ) then 'TRUE' -- compression has been used when CONDITION = 'C002' and ( regexp_like(to_char(FEATURE_INFO), 'encryption used:[ 0-9]*[1-9][ 0-9]*time', 'i') or regexp_like(to_char(FEATURE_INFO), 'encryption used: *TRUE', 'i') ) then 'TRUE' -- encryption has been used when CONDITION = 'C003' and CON_ID=1 and AUX_COUNT &gt; 1 then 'TRUE' -- more than one PDB are created when CONDITION = 'C004' and 'N'= 'N' then 'TRUE' -- not in oracle cloud else 'FALSE' end as CONDITION_MET, -- check if the extra conditions are based on FEATURE_INFO counters. They indicate current or past usage. case when CONDITION = 'C001' and regexp_like(to_char(FEATURE_INFO), 'compression used:[ 0-9]*[1-9][ 0-9]*time', 'i') then 'TRUE' -- compression counter &gt; 0 when CONDITION = 'C002' and regexp_like(to_char(FEATURE_INFO), 'encryption used:[ 0-9]*[1-9][ 0-9]*time', 'i') then 'TRUE' -- encryption counter &gt; 0 else 'FALSE' end as CONDITION_COUNTER, case when CONDITION = 'C001' then regexp_substr(to_char(FEATURE_INFO), 'compression used:(.*?)(times|TRUE|FALSE)', 1, 1, 'i') when CONDITION = 'C002' then regexp_substr(to_char(FEATURE_INFO), 'encryption used:(.*?)(times|TRUE|FALSE)', 1, 1, 'i') when CONDITION = 'C003' then 'AUX_COUNT=' || AUX_COUNT when CONDITION = 'C004' and 'N'= 'Y' then 'feature included in Oracle Cloud Services Package' else '' end as EXTRA_FEATURE_INFO, f.CON_ID , f.CON_NAME , f.CURRENT_ENTRY , f.NAME , f.LAST_SAMPLE_DATE, f.DBID , f.VERSION , f.DETECTED_USAGES , f.TOTAL_SAMPLES , f.CURRENTLY_USED , f.FIRST_USAGE_DATE, f.LAST_USAGE_DATE , f.AUX_COUNT , f.FEATURE_INFO from MAP m join FUS f on m.FEATURE = f.NAME and regexp_like(f.VERSION, m.MVERSION) where nvl(f.TOTAL_SAMPLES, 0) &gt; 0 -- ignore features that have never been sampled ) where nvl(CONDITION, '-') != 'INVALID' -- ignore features for which licensing is not required without further conditions and not (CONDITION = 'C003' and CON_ID not in (0, 1)) -- multiple PDBs are visible only in CDB$ROOT; PDB level view is not relevant ) select CON_ID , CON_NAME , PRODUCT , FEATURE_BEING_USED, decode(USAGE, '1.NO_PAST_USAGE' , 'NO_PAST_USAGE' , '2.NO_CURRENT_USAGE' , 'NO_CURRENT_USAGE' , '3.SUPPRESSED_DUE_TO_BUG', 'SUPPRESSED_DUE_TO_BUG', '4.PAST_USAGE' , 'PAST_USAGE' , '5.PAST_OR_CURRENT_USAGE', 'PAST_OR_CURRENT_USAGE', '6.CURRENT_USAGE' , 'CURRENT_USAGE' , 'UNKNOWN') as USAGE, LAST_SAMPLE_DATE , DBID , VERSION , DETECTED_USAGES , TOTAL_SAMPLES , CURRENTLY_USED , FIRST_USAGE_DATE , LAST_USAGE_DATE , EXTRA_FEATURE_INFO from PFUS where USAGE in ('2.NO_CURRENT_USAGE', '3.SUPPRESSED_DUE_TO_BUG', '4.PAST_USAGE', '5.PAST_OR_CURRENT_USAGE', '6.CURRENT_USAGE') -- ignore '1.NO_PAST_USAGE' order by CON_ID, decode(substr(PRODUCT, 1, 1), '.', 2, 1), PRODUCT, FEATURE_BEING_USED, LAST_SAMPLE_DATE desc, PFUS.USAGE ); </pre> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/04/21/better-track-usage-database-options-management-packs-will-cost/">Better track the Usage of Database Options and Management Packs, or it will cost you</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Harry Dragstra https://technology.amis.nl/?p=44604 Fri Apr 21 2017 07:34:28 GMT-0400 (EDT) Oracle E-Business Suite 12.2 Web Services Security for Oracle Supplier Network https://www.integrigy.com/security-resources/oracle-e-business-suite-122-web-services-security-oracle-supplier-network <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>This is the ninth posting in a blog series summarizing the new Oracle E-Business Suite 12.2 Mobile and web services functionality and recommendations for securing them.</p> <p>The most common use of web services with the Oracle E-Business Suite is the Oracle Suppler Network (OSN). Do not confuse OSN with the Oracle Social Network (also referred to as OSN) or when configuring OSN, do not confuse the Oracle Transport Agent (OXTA) web services with Oracle Training Administration (OTA) web services.</p> <p>To use OSN, you must configure the both the url_fw.conf and url_fw_ws.conf file to open traffic for the XML Gateway to consume OXTA web services. The OSN documentation in places confuses OTXA and OTA.&nbsp; The risk is that in the url_fw_ws.conf there are services for both the Oracle Training Administration (OTA) module as well as for the OXTA. Unless both are being used, be careful to open only the correct services.</p> <p>It should also be noted that while OSN uses web services, as of 12.2.5, OSN‚Äôs web services are NOT shown as deployed in the ISG repository.&nbsp; This is because OSN‚Äôs functionality is built into the Oracle E-Business Suite‚Äôs core functionality.</p> <p>It is very important to note that while using OSN with trading partners over the Internet requires opening the E-Business Suite to the Internet. Unfortunately, it is not clearly stated that a WAF, ideally the API Gateway, should be used to protect OSN. Even if OSN is the only web service being used, a WAF is still required to guard the attack surface.</p> <p>Lastly, the passwords used for the various OSN accounts (defined within the OSN GUI forms) need to be complex and regularly rotated. Many clients forget about these accounts.</p> <p>If you have any questions, please contact us at <a href="mailto:info@integrigy.com">info@integrigy.com</a></p> <p>-Michael Miller, CISSP-ISSMP, CCSP, CCSK</p> <h3>References</h3> <ul> <li><a data-jsb_prepared="ykbfl5hty6" href="/security-resources/oracle-e-business-suite-mobile-and-web-services-security-0" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security</a>&nbsp;- Integrigy Whitepaper</li> <li><a data-jsb_prepared="q6ttrgzbhv" href="/security-resources/oracle-e-business-suite-mobile-and-web-services-security" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security</a>&nbsp;- Integrigy Webinar</li> <li><a data-jsb_prepared="ma60qlnvdv" href="https://support.oracle.com/rs?type=doc&amp;id=1375670.1" rel="noreferrer">Oracle E-Business Suite Release 12.2 Configuration in a DMZ</a>&nbsp;(Note 1375670.1)</li> </ul> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> </div></div></div><a href="/tags/web-services" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Web Services</a>, <a href="/tags/dmzexternal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">DMZ/External</a>, <a href="/tags/oracle-e-business-suite" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle E-Business Suite</a> mmiller 552 at https://www.integrigy.com Fri Apr 21 2017 07:00:00 GMT-0400 (EDT) Undo Understood https://jonathanlewis.wordpress.com/2017/04/21/undo-understood/ <p>It&#8217;s hard to understand all the ramifications of Oracle&#8217;s undo handling, and it&#8217;s not hard to find cases where the resulting effects are very confusing. In a recent post on the OTN database forum resulted in one response insisting that the OP was obviously updating a table with frequent commits from one session while querying it from another thereby generating a large number of undo reads in the querying session.</p> <p>It&#8217;s a possible cause of the symptoms that had been described &#8211; although not the only possible cause, especially since the symptoms hadn&#8217;t been described completely. It&#8217;s actually possible to see this type of activity when there are <em><strong>no updates</strong></em> and <em><strong>no outstanding commits</strong></em> taking place at all on the target table. Unfortunately it&#8217;s quite hard to demonstrate this with a quick, simple, script in recent versions of Oracle unless you do some insanely stupid things to make the problem appear &#8211; but I know how to do &#8220;insanely stupid&#8221; in Oracle, so here we go; first some data creation:</p> <pre class="brush: plain; title: ; notranslate"> rem rem Script: undo_rec_apply_2.sql rem Author: Jonathan Lewis rem Dated: March 2017 rem create table t2(v1 varchar2(100)); insert into t2 values(rpad('x',100)); commit; create table t1 nologging pctfree 99 pctused 1 as with generator as ( select rownum id from dual connect by level &lt;= 1e4 ) select cast(rownum as number(8,0)) id, cast(lpad(rownum,10,'0') as varchar2(10)) v1, cast(lpad('x',100,'x') as varchar2(100)) padding from generator v1, generator v2 where rownum &lt;= 8e4 -- &gt; comment to bypass WordPress formatting issue ; alter table t1 add constraint t1_pk primary key(id) ; begin dbms_stats.gather_table_stats( ownname =&gt; user, tabname =&gt;'T1', method_opt =&gt; 'for all columns size 1' ); end; / </pre> <p>The <em><strong>t2</strong></em> table is there as a target for a large of updates from a session other than the one demonstrating the problem. The <em><strong>t1</strong></em> table has been defined and populated in a way that puts one row into each of 80,000 blocks (though, with ASSM and my specific tablespace definition of uniform 1MB extents, the total space is about 80,400 blocks). I&#8217;ve got a primary key declaration that allows me to pick single rows/blocks from the table if I want to.</p> <p>At this point I&#8217;m going to do a lot of updates to the main table using a very inefficient strategy to emulate the type of thing that can happen on a very large table with lots of random updates and many indexes to maintain:</p> <pre class="brush: plain; title: ; notranslate"> begin for i in 1..800 loop update t1 set v1 = upper(v1) where id = 100 * i; execute immediate 'alter system switch logfile'; execute immediate 'alter system flush buffer_cache'; commit; dbms_lock.sleep(0.01); end loop; end; / set transaction read only; </pre> <p>I&#8217;m updating every 100th row/block in the table with single row commits, but before each commit I&#8217;m switching log files and flushing the buffer cache.</p> <p>This is <span style="text-decoration:underline;"><em><strong>NOT</strong></em></span> an experiment to try on a production system, or even a development system if there are lots of busy developers or testers around &#8211; and if you&#8217;re running your dev/test in archivelog mode (which, for some of your systems you should be) you&#8217;re going to end up with a lot of archived redo logs. I have to do this switch to ensure that the updated blocks are unpinned so that they will be written to disc and flushed from the cache by the flush buffer cache. (This extreme approach would not have been necessary in earlier versions of Oracle, but the clever developers at Oracle Corp. keep adding &#8220;damage limitation&#8221; touches to the code that I have to work around to create small tests.) Because the block has been flushed from memory before the commit the session will record a <em>&#8220;commit cleanout failures: block lost&#8221;</em> on each commit. By the time this loop has run to completion there will be 800 blocks from the table on disc needing a <a href="https://jonathanlewis.wordpress.com/2009/06/16/clean-it-up/"><em><strong>&#8220;delayed block cleanout&#8221;</strong></em></a>.</p> <p>Despite the extreme brute force I use in this loop, there is a further very important detail that has to be set before this test will work (at least in 11.2.0.4, which is what I&#8217;ve used in my test runs). I had to start the database with the hidden parameter <a href="http://blog.tanelpoder.com/2012/05/02/advanced-oracle-troubleshooting-guide-part-10-index-unique-scan-doing-multiblock-reads/"><em><strong>_db_cache_pre_warm</strong></em></a> set to <em><strong>false</strong></em>. If I don&#8217;t have the database started with this feature disabled Oracle would notice that the buffer cache had a lot of empty space and would &#8220;pre-warm&#8221; the cache by loading a few thousand blocks from <em><strong>t1</strong></em> as I updated one row &#8211; with the side effect that the update from the previous cycle of the loop would be cleaned out on the current cycle of the loop. <span style="text-decoration:underline;"><em>If you do run this experiment, remember to reset the parameter and restart the instance when you&#8217;ve finished.</em></span></p> <p>I&#8217;ve finished this chunk of code with a call to <em>&#8220;set transaction read only&#8221;</em> &#8211; this emulates the start of a long-running query: it captures a point in time (through the current SCN) and any queries that run in the session from now on have to be read-consistent with that point in time. After doing this I need to use a second session to do a bit of hard work &#8211; in my case the following:</p> <pre class="brush: plain; title: ; notranslate"> execute snap_rollstats.start_snap begin for i in 1..10000 loop update t2 set v1 = upper(v1); update t2 set v1 = lower(v1); commit; end loop; end; / execute snap_rollstats.end_snap </pre> <p>The calls to the <em><strong>snap_rollstats</strong></em> package simply read <em><strong>v$rollstat</strong></em> and give me a report of the changes in the undo segment statistics over the period of the loop. I&#8217;ve executed 10,000 transactions in the interval, which was sufficient on my system to use each undo segment header at least 1,000 times and (since there are 34 transaction table slots in each undo segment header) overwrite each transaction table slot about 30 times. You can infer from these comments that I have only 10 undo segments active at the time, your system may have many more (check the number of rows in <em><strong>v$rollstat</strong></em>) so you may want to scale up that 10,000 loop count accordingly.</p> <p>At this point, then, the only thing I&#8217;ve done since the start of my &#8220;long running query&#8221; is to update another table from another session. What happens when I do a simple <em><strong>count()</strong></em> from <em><strong>t1</strong></em> that requires a full tablescan ?</p> <pre class="brush: plain; title: ; notranslate"> alter system flush buffer_cache; execute snap_filestat.start_snap execute snap_my_stats.start_snap select count(v1) from t1; execute snap_my_stats.end_snap execute snap_filestat.end_snap </pre> <p>I&#8217;ve flushed the buffer cache to get rid of any buffered undo blocks &#8211; again an unreasonable thing to do in production but a valid way of emulating the aging out of undo blocks that would take place in a production system &#8211; and surrounded my <strong><em>count()</em></strong> with a couple of packaged call to report the session stats and file I/O stats due to my query. (If you&#8217;re sharing your database then the file I/O stats will be affected by the activity of other users, of course, but in my case I had a private database.)</p> <p>Here are the file stats:</p> <pre class="brush: plain; title: ; notranslate"> -------------- Datafile Stats -------------- file# Reads Blocks Avg Size Avg Csecs S_Reads Avg Csecs M_Reads Avg Csecs Max Writes Blocks Avg Csecs Max File name ----- ----- ------ -------- --------- ------- --------- ------- --------- --- ------ ------ --------- --- 1 17 17 1.000 .065 17 .065 0 .000 6 0 0 .000 15 /u01/app/oracle/oradata/TEST/datafile/o1_mf_system_938s4mr3_.dbf 3 665 665 1.000 .020 665 .020 0 .000 6 0 0 .000 15 /u01/app/oracle/oradata/TEST/datafile/o1_mf_undotbs1_938s5n46_.dbf 5 631 80,002 126.786 .000 2 .045 629 .000 6 0 0 .000 17 /u01/app/oracle/oradata/TEST/datafile/o1_mf_test_8k__cz1w7tz1_.dbf </pre> <p>As expected I&#8217;ve done a number of multiblock reads of my data tablespace for a total of roughly 80,000 blocks read. What you may not have expected is that I&#8217;ve done 665 single block reads of the undo tablespace.</p> <p>What have I been doing with all those undo blocks ? Check the session stats:</p> <pre class="brush: plain; title: ; notranslate"> Session stats ------------- Name Value ---- ----- transaction tables consistent reads - undo records applied 10,014 transaction tables consistent read rollbacks 10 </pre> <p>We&#8217;ve been reading undo blocks so that we can create read-consistent copies of the 10 undo segment headers that were active in my instance. We haven&#8217;t (and you&#8217;ll have to trust me on this, I can&#8217;t show you the stats that aren&#8217;t there!) reported any <em>&#8220;data blocks consistent reads &#8211; undo records applied&#8221;</em>.</p> <p>If you want to see a detailed explanation of what has happened you&#8217;ll need to read Oracle Core (<a href="https://www.amazon.co.uk/Oracle-Core-Essential-Internals-Troubleshooting/dp/1430239549"><em><strong>UK source</strong></em></a>), chapter 3 (and possibly chapter 2 to warm yourself up for the topic). In outline the following type of thing happens:</p> <ul> <li>Oracle gets to the first block updated in <em><strong>t1</strong></em> and sees that there&#8217;s an ITL (interested transaction list) entry that hasn&#8217;t been marked as committed (we flushed the block from memory before the commit cleanout could take place so the relevant transaction is, apparently, still running and the row is still marked as locked).</li> <li>Let&#8217;s say the ITL entry says the transaction was for undo segment 34, transaction table slot 11, sequence 999. Oracle reads the undo segment header block for undo segment 34 and checks transaction table slot 11, which is now at sequence 1032. Oracle can infer from this that the transaction that updated the table <em><strong>has committed</strong></em> &#8211; but can&#8217;t yet know whether it committed before or after the start of our &#8220;long running query&#8221;.</li> <li>Somehow Oracle has to get slot 11 back to sequence 999 so that it can check the commit SCN recorded in the slot at that sequence number. This is where we see <em>&#8220;undo records applied&#8221;</em> to make the <em>&#8220;transaction table read consistent&#8221;</em>. It can do this because the undo segment header has a &#8220;transaction control&#8221; section in it that records some details of the most recent transaction started in that segment. When a transaction starts it updates this information, but saves the old version of the transaction control and the previous version of its transaction table slot in its first undo record, consequently Oracle can clone the undo segment header block, identify the most recent transaction, find its first undo record and apply it to unwind the transaction table information. As it does so it has also wound the transaction control section backwards one step, so it can use that (older) version to go back another step &#8230; and so on, until it takes the cloned undo segment header so far back that it takes our transaction table slot back to sequence 999 &#8211; and the job is done, we can now check the actual commit SCN.¬† (Or, if we&#8217;re unlucky, we might receive an ORA-01555 before we get there)</li> </ul> <p>So &#8211; no changes to the <em><strong>t1</strong> </em>table during the query, but lots of undo records read because OTHER tables have been changing.</p> <h3>Footnote:</h3> <p>In my example the tablescan used direct path reads &#8211; so the blocks that went through delayed block cleanout were in private memory, which means they weren&#8217;t in the buffer cache and didn&#8217;t get written out to disc. When I flushed the buffer cache (again to emulate aging out of undo blocks etc.) and repeated the tablescan Oracle had to go through all that work of creating read consistent transaction tables all over again.</p> <h3>Footnote 2:</h3> <p>Despite the grand claim implied by the title I hope everyone realises that this is just one little detail of how undo handling can interfere with their expectations of performance.</p> <p>&nbsp;</p> <p>&nbsp;</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/17064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/17064/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=17064&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=17064 Fri Apr 21 2017 05:45:20 GMT-0400 (EDT) Oracle Code : London https://oracle-base.com/blog/2017/04/20/oracle-code-london/ <p><img class="alignleft size-full wp-image-7058" src="https://oracle-base.com/blog/wp-content/uploads/2017/04/oracle_code.png" alt="" width="188" height="189" />As usual with early starts, I had a terrible nights sleep, worrying I would sleep through my alarm. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /> I&#8217;ve been quite¬†nervous about this event ever since I found out¬†I got accepted. I&#8217;m pretty comfortable in front of your typical¬†Oracle crowd, but having¬†no idea about¬†the makeup of this audience freaked me out. My feeling¬†was if the¬†crowd was made up of¬†Oracle techies looking to find out about different stuff I should fit in OK. If it was a bunch of non-Oracle people looking to see what Oracle was offering in this space my session would¬†not go down well at all. Time would tell&#8230;</p> <p>I got a taxi to the station, grabbed a coffee and got on the train. I had a seat with a table and a power socket. For ¬£5 I got 24 hours of internet, which made the journey far more productive. When I got to Euston Station it was a quick tube ride to Moorgate Station, then a walk round the corner to <a href="https://skillsmatter.com/contact-us">CodeNode London</a>. After registration and a few quick hellos it was down to business.</p> <p>First up was <a href="https://twitter.com/AdamBien">Adam Bien</a> with &#8220;Enterprise Java.next: A Slideless Keynote&#8221;. The session was a live demo of using Java EE to code microservices that are built and deployed using Docker. Live demos of anything to do with Docker are always fun to watch as things happen so quickly. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Next up was¬†Deepak Patil with &#8220;Harnessing the Power of Cloud to Develop Next Gen Killer Apps&#8221;. This session was a description of the infrastructure that underpins Oracle Cloud, with a guest spot by <a href="https://en.wikipedia.org/wiki/Mark_Shuttleworth">Mark Shuttleworth</a> of Cononical. I asked the question on Twitter whether this meant Oracle would start to support their products on Ubuntu. I did not get an answer. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>After that session the conference was split into multiple tracks and I went to see¬†Jeff Richmond with &#8220;Move Data Between Apache Hadoop and Oracle Database for Customer 360 Analytics&#8221;. This session covered quite a bit of ground in a single session, including talk of Oracle Big Data SQL and a bunch of Oracle Cloud Services.</p> <p>Next I went to see¬†<a href="https://twitter.com/daftano">Davide Fiorentino</a> with &#8220;A Practical Guide to Docker and Service Deployments&#8221;. As the name suggests, this was an overview session about Docker, giving an idea of how and why you would use it.</p> <p>After lunch it was me with &#8220;<a href="/articles/misc/an-introduction-to-json-support-in-the-oracle-database">Make the RDBMS Relevant Again with RESTful Web Services and JSON</a>&#8220;. As I said earlier I was really nervous about this because I didn&#8217;t know if I would be a good fit for the audience, or even if anyone would show up. The room was really busy and a¬†quick straw poll at the start alleviated my nerves. There was a strong contingent of existing Oracle developers in the room, who were looking for &#8220;what comes next&#8221;, and my session seemed to go down pretty well. That was a really welcome surprise. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>[silly aside] I keep mentioning we are doing an Oracle Cloud Apps implementation at work and I am nothing to do with the project. For anyone that doubts this, one of the questions at the end of my session was by someone who is working on that project, who I don&#8217;t know. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /> When I finished, two guys came up and introduced themselves. Turns out they are working on our on-prem WebCentre Content implementation. You gotta laugh! I&#8217;m sure our paths will cross how we have been introduced.[/silly aside]</p> <p>Next up was <a href="https://twitter.com/lucasjellema">Lucas Jellema</a> with &#8220;Event Bus as Backbone for Decoupled Microservice Choreography&#8221;. I really liked the ground work Lucas put in before he launched into the demos. The term &#8220;microservice&#8221; is often used in a rather random manner, with many people describing what they are doing as microservices, when they really aren&#8217;t. Lucas did a top-notch job of describing what a microservice is and some of the basic &#8220;rules&#8221; which it should probably conform to. He then did a rather ambitious demo made up of a bunch of microservices¬†running on his laptop and the cloud, all interacting¬†with each other using an event bus in each location that were being synced, and it worked. I should have expected nothing less. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>I missed the next session as I was chatting to a few people, including some of those guys that I &#8220;almost&#8221; work with. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Next up was¬†<a href="https://twitter.com/dmcghan">Dan Mcghan</a> with &#8220;Making RESTful Web Services the Easy Way with Node.js&#8221;. This was how the cool kids do what I do with PL/SQL and ORDS. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /> The combination of Node.js and the Oracle Driver for Node seems like a pretty good combo for this type of thing.</p> <p>That was the last session of the day for me. We all piled downstairs for pizza, drinks and more chatting. Pretty soon it was time to leave. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Big thanks to the organisers of <a href="https://go.oracle.com/oraclecode">Oracle Code</a> for letting me come to play. Not only was it fun to present, but I got to see and learn a lot of really useful stuff! Thanks also to the Oracle ACE Program for letting me fly the flag. I gave you a shout out in my session! Thanks to all the attendees that came to support the event, and to everyone that came to my session and came and chatted to me during the day. These events can&#8217;t happen unless you turn up! <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>The journey was pretty straight forward.¬†Round the corner to Moorgate, tube to Euston, train to Birmingham and taxi home! Happy days!</p> <p>It all happens again in Prague next Friday! <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/20/oracle-code-london/">Oracle Code : London</a> was first posted on April 20, 2017 at 10:16 pm.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7090 Thu Apr 20 2017 17:16:32 GMT-0400 (EDT) Guide to PeopleSoft Logging and Auditing - Revised Whitepaper https://www.integrigy.com/security-resources/guide-peoplesoft-logging-and-auditing-revised-whitepaper <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>After discussions at Collaborate2017 with several PeopleSoft architects we&nbsp;have revised our Guide to&nbsp;PeopleSoft Auditing.&nbsp;The key change is the recommendation NOT to use PeopleSoft‚Äôs native database auditing and to instead use Oracle Fine Grained Auditing (FGA). FGA comes free with the Enterprise Edition of the Oracle RDBMS and, not only is it easier to implement, FGA does not have the performance impact of PeopleSoft‚Äôs native auditing.</p> <p>If you have questions, please contact us at&nbsp;<a data-jsb_prepared="i4awstzu90" href="mailto:info@integrigy.com" rel="noreferrer">info@integrigy.com</a></p> <p>-Michael Miller, CISSP-ISSMP</p> <h2>References</h2> <ul> <li><a data-jsb_prepared="2lf4f8z4zc" href="/security-resources/guide-peoplesoft-logging-and-auditing" rel="noreferrer">Guide to PeopleSoft Logging and Auditing</a></li> </ul> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> </div></div></div><a href="/tags/auditing" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Auditing</a>, <a href="/tags/oracle-peoplesoft" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle PeopleSoft</a> mmiller 573 at https://www.integrigy.com Thu Apr 20 2017 07:00:00 GMT-0400 (EDT) Oracle Database 12.2 New Feature ‚Äď PDB Lockdown Profiles http://gavinsoorma.com/2017/04/oracle-database-12-2-new-feature-pdb-lockdown-profiles/ <p>In an earlier post I had mentioned one of the new features in Oracle Database 12.2 was the ability to set SGA and PGA memory related parameters even at the individual PDB level. So it enables us to further limit or define the resources which a particular PDB can use and enable a more efficient management of resources in a multitenant environment.</p> <p>We can further in Oracle 12c Release 2 now even limit the operations which can be performed within a particular PDB as well as restrict features which can be used or enabled &#8211; all at the individual PDB level. We can also limit network connectivity a PDB can have by enabling or disabling the use of network related packages like UTL_SMTP,UTL_HTTP, UTL_TCP at the PDB level.</p> <p>This is done via the new 12.2 feature called <strong>Lockdown Profiles</strong>.</p> <p>We create lockdown profiles via the CREATE LOCKDOWN PROFILE statement while connected to the root CDB and after the lockdown profile has been created, we add the required restrictions or limits which we would like to enforce via the ALTER LOCKDOWN PROFILE statement.</p> <p>To assign the lockdown profile to a particular PDB, we use the <code class="codeph">PDB_LOCKDOWN</code> initialization parameter which will contain the name of the lockdown profile we have earlier created.</p> <p>If we set the PDB_LOCKDOWN parameter at the CDB level, it will apply to all the PDB&#8217;s in the CDB. We can also set the PDB_LOCKDOWN parameter at the PDB level and we can maybe have different PDB_LOCKDOWN values for different PDB&#8217;s as we will see in the example below.</p> <p>Let us have a look at an example of PDB Lockdown Profiles at work.</p> <p>In our CDB, we have two pluggable databases PDB1 and PDB2. We want to limit some kind of operations depending on the PDB involved.</p> <p>Our requirements are the following:</p> <ul> <li>We want to ensure that in PDB1 the value for SGA_TARGET cannot be altered &#8211; so even a privileged user cannot allocate additional memory to the PDB. However if memory is available, then PGA allocation can be altered.</li> <li>To shutdown PDB1, it can only be done if connected to the root container and not from within the Pluggable Database itself</li> <li>The Partitioning feature is not available in PDB2</li> </ul> <p>&nbsp;</p> <p><strong>Create the Lockdown Profiles</strong><br /> &nbsp;</p> <pre> SQL> show con_name CON_NAME ------------------------------ CDB$ROOT SQL> create lockdown profile pdb1_profile; Lockdown Profile created. SQL> create lockdown profile pdb2_profile; Lockdown Profile created. </pre> <p>&nbsp;<br /> <strong>Alter Lockdown Profile pdb1_profile</strong><br /> &nbsp;</p> <pre> SQL> alter lockdown profile pdb1_profile disable statement =('ALTER SYSTEM') clause=('SET') OPTION = ('SGA_TARGET'); Lockdown Profile altered. SQL> alter lockdown profile pdb1_profile disable statement =('ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE'); Lockdown Profile altered. </pre> <p>&nbsp;<br /> <strong>Alter Lockdown Profile pdb2_profile</strong><br /> &nbsp;</p> <pre> SQL> alter lockdown profile pdb2_profile DISABLE OPTION = ('PARTITIONING'); Lockdown Profile altered. </pre> <p>&nbsp;<br /> <strong>Enable the Lockdown Profiles for both PDB1 and PDB2 pluggable databases</strong><br /> &nbsp;</p> <pre> SQL> conn / as sysdba Connected. SQL> alter session set container=PDB1; Session altered. SQL> alter system set PDB_LOCKDOWN='PDB1_PROFILE'; System altered. SQL> alter session set container=PDB2; Session altered. SQL> alter system set PDB_LOCKDOWN='PDB2_PROFILE'; System altered. </pre> <p>&nbsp;<br /> <strong><br /> Connect to PDB1 and try and increase the value of the parameter SGA_TARGET and PGA_AGGREGATE_TARGET</strong><br /> &nbsp;<br /> Note that we cannot alter SGA_TARGET because it is prevented by the lockdown profile in place, but we can alter PGA_AGGREGATE_TARGET because the lockdown profile clause only applies to the ALTER SYSTEM SET SGA_TARGET command.<br /> &nbsp;</p> <pre> SQL> alter session set container=PDB1; Session altered. SQL> alter system set sga_target=800m; alter system set sga_target=800m * ERROR at line 1: ORA-01031: insufficient privileges SQL> alter system set pga_aggregate_target=200m; System altered. </pre> <p>&nbsp;<br /> <strong>Connect to PDB2 and try and create a partitioned table</strong><br /> &nbsp;</p> <pre> SQL> CREATE TABLE testme (id NUMBER, name VARCHAR2 (60)) PARTITION BY HASH (id) PARTITIONS 4 ; CREATE TABLE testme * ERROR at line 1: ORA-00439: feature not enabled: Partitioning </pre> <p>&nbsp;<br /> <strong>Connect to PDB1 and try to shutdown the pluggable database</strong><br /> &nbsp;<br /> Note that while we cannot shutdown PDB1, we are able to shutdown PDB2.<br /> &nbsp;</p> <pre> SQL> alter session set container=pdb1; Session altered. SQL> ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE; ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE * ERROR at line 1: ORA-01031: insufficient privileges SQL> alter session set container=pdb2; Session altered. SQL> ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE; Pluggable database altered. </pre> <p>&nbsp;</p> Gavin Soorma http://gavinsoorma.com/?p=7514 Thu Apr 20 2017 03:57:18 GMT-0400 (EDT) Is Oracle Database 12.2 really Oracle Database 13.1? https://oracle-base.com/blog/2017/04/20/is-oracle-database-12-2-really-oracle-database-13-1/ <p><img class="wp-image-7081 alignright" src="https://oracle-base.com/blog/wp-content/uploads/2017/04/owl-book-47526_640.png" alt="" width="150" height="141" />I wrote a <a href="/blog/2017/01/27/extended-support-fee-waiver-for-11204-and-1220x-dates/">post</a> a few months ago where, amongst other things I mentioned my views on Oracle database versions, releases and patchsets.¬†To summarise my points.</p> <ul> <li>What we used to know as releases (12.1, 12.2) are now so big they are essentially new major versions, despite what the version numbers suggest. That&#8217;s reflected both in the content and the time between them.</li> <li>What we used to know as patchsets are now more similar to what we used to think of releases. Remember <a href="/articles/12c/in-memory-column-store-12cr1">In-Memory Column Store</a> was¬†introduced in 12.1.0.2, and it&#8217;s now one of the headline features of 12.1. Hardly just a few bug fixes. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li> </ul> <p>Something happened a couple of days ago¬†that reenforced this in my head. I was asked a question about certification on Twitter. I answered and linked to this <a href="/articles/misc/oracle-certification-frequently-asked-questions">FAQ</a>. To be on the safe side I did¬†a quick read through the FAQ to make sure it was still aligned with my views and checked some of the links, specifically to the certification page. While I was there I checked out the beta exams and I saw &#8220;1Z1-074: Upgrade Oracle DBA 11g/12c to 12cR2&#8221;. That&#8217;s right, an upgrade exam to take you to 12cR2. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>We don&#8217;t normally get an upgrade exam between releases, although it did happen between 8 and 8i, which by version number at least was just a second digit increment (8.0 to 8.1).</p> <p>On the one hand, there is a massive amount of new stuff in 12.2, which is more than worthy of making it 13.1 and therefore requiring a new certification. On the other hand, a lot of the functionality seems more evolutionary than revolutionary. I don&#8217;t mean that in a bad way. It&#8217;s just the majority of the features feel like they are finishing off functionality that would have been in 12.1 if they had got it done in time. I may live to regret that statement as I delve more into 12.2. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>For those who are yet to upgrade their 11g certification, you now have a choice of going to 12c then 12cR2, or directly to 12cR2. For those that already made the jump to 12c, you are going to get tested on the 12cR1¬†stuff again when you upgrade to 12cR2. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/20/is-oracle-database-12-2-really-oracle-database-13-1/">Is Oracle Database 12.2 really Oracle Database 13.1?</a> was first posted on April 20, 2017 at 5:33 am.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7080 Thu Apr 20 2017 00:33:01 GMT-0400 (EDT) Application Express Kscope17 Track Highlights - Jorge Rimblas http://www.odtug.com/p/bl/et/blogaid=710&source=1 Jorge Rimblas, the APEX track lead for ODTUG Kscope17, shares his recommended ‚Äúdon‚Äôt miss sessions‚ÄĚ at ODTUG Kscope17: ODTUG http://www.odtug.com/p/bl/et/blogaid=710&source=1 Wed Apr 19 2017 15:21:19 GMT-0400 (EDT) VirtualBox 5.1.20 https://oracle-base.com/blog/2017/04/19/virtualbox-5-1-20/ <p><a href="https://www.virtualbox.org/wiki/Downloads"><img class="alignleft size-full wp-image-4959" src="https://oracle-base.com/blog/wp-content/uploads/2015/05/virtualbox.jpg" alt="" width="129" height="145" /></a><a href="https://www.virtualbox.org/wiki/Downloads">VirtualBox 5.1.20</a> has been released!</p> <p>The <a href="https://www.virtualbox.org/wiki/Downloads">downloads</a> and <a href="https://www.virtualbox.org/wiki/Changelog#v20">changelog</a> are in the usual places.</p> <p>The installation on macOS Sierra and Oracle Linux 6 hosts went well and all seems to be working OK there.</p> <p>I&#8217;m not 100% sure about the Windows 7 host though. The installation itself went fine, as did the installation of guest additions on a Linux VM running inside it. After a restart of the VM I attempted to do a yum update and the VM just seems to have died now. I can&#8217;t get more than a couple of commands out of it before it becomes unresponsive and has to be restarted. I think I&#8217;m going to have to remove and rebuild it. I don&#8217;t know if this was something I did, or something weird with VirtualBox.</p> <p>That&#8217;s on my work PC and I&#8217;m not at work this week, so I was doing it over TeamViewer. I probably won&#8217;t have time to look at this again until next week. I&#8217;d be interested to know if anyone else has issues on Windows.</p> <p>Happy upgrading.</p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/19/virtualbox-5-1-20/">VirtualBox 5.1.20</a> was first posted on April 19, 2017 at 4:56 pm.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7085 Wed Apr 19 2017 11:56:54 GMT-0400 (EDT) The Chicken Before the Egg of Cloud Migrations http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/ <div id="tweetbutton6698" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Fchicken-egg-cloud-migrations%2F&amp;text=RT%20%40DBAKevlar%20%40DBAKevlar%20%3A&amp;related=DBAKevlar:DBA+Kevlar&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Fchicken-egg-cloud-migrations%2F" class="twitter-share-button" style="width:55px;height:22px;background:transparent url('http://dbakevlar.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat 0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><div class="pf-content"> <!-- Easy Plugin for AdSense V8.67 --> <!-- [leadin: 1 urCount: 1 urMax: 0] --> <div class="ezAdsense adsense adsense-leadin" style="float:right;margin:12px;"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- kevlar_ad --> <ins class="adsbygoogle" style="display:inline-block;width:320px;height:100px" data-ad-client="ca-pub-5103295461547706" data-ad-slot="5182487270"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div> <!-- Easy Plugin for AdSense V8.67 --> <p>For over a year I&#8217;ve been¬†researching cloud migration best practices. ¬†Consistently there was one red flag that trips me¬†that I&#8217;m viewing recommended migration paths. ¬†No matter what you read, just about all of them include the following high level steps:</p> <p><a href="http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/screen-shot-2017-04-18-at-4-14-18-pm/" rel="attachment wp-att-6700"><img class="alignnone wp-image-6700" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-18-at-4.14.18-PM.png?resize=477%2C264" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-18-at-4.14.18-PM.png?resize=1024%2C567 1024w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-18-at-4.14.18-PM.png?resize=300%2C166 300w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-18-at-4.14.18-PM.png?resize=768%2C425 768w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-18-at-4.14.18-PM.png?w=1174 1174w" sizes="(max-width: 477px) 100vw, 477px" data-recalc-dims="1" /></a></p> <p>As we can see from above, the scope of the project is identified, requirements laid out and a project team is allocated.</p> <p>The next step in the project is to choose one or more clouds, choose the first environments to test out in the cloud, along with security concerns and application limitations. ¬†DBAs are tested repeatedly as they continue to try to keep up with the demand of refreshing or ensuring the cloud environments are able to keep in sync with on-prem and the cycle continues until a cutover date is issued. ¬†The migration go or no-go occurs and the either non-production or all of the environment is migrated to the cloud.</p> <p>As someone who works for Delphix, I focus on the point of failure where DBAs can&#8217;t keep up with full clones and data refreshes in cloud migrations or development and testing aren&#8217;t able to complete the necessary steps that could be if the company was using virtualization. ¬†From a security standpoint, I am concerned with how few companies aren&#8217;t investing in masking with the sheer quantity of breeches in the news, but as a DBA, there is a whole different scenario that really makes me question¬†the steps that many companies are using to migrate to the cloud.</p> <p>Now here&#8217;s where they loose me every time-¬†the last step¬†in most cloud migration plans is to<strong>¬†optimize.</strong></p> <p>I&#8217;m troubled by optimization being viewed as the step you take AFTER you migrate to the cloud. ¬†Yes, I believe that there will undoubtedly be unknowns that no one can take into consideration before the physical migration¬†to a cloud environment, but to take databases, &#8220;as is&#8221; when an abundance of performance data is already known about the database that could and will impact performance, seems¬†to be inviting unwarranted risk and business impact.</p> <p><em><strong>So here&#8217;s my question to those investing in a cloud migration or have already migrated to the cloud- ¬†Did you streamline and optimize your database/applications BEFORE migrating to the cloud or AFTER?</strong></em></p> <p>&nbsp;</p> <p>&nbsp;</p> </div><br><br><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/ico-tag.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> Tags:&nbsp;&nbsp;<a href="http://dbakevlar.com/tag/cloud/" rel="tag">Cloud</a>, <a href="http://dbakevlar.com/tag/delphix/" rel="tag">Delphix</a>, <a href="http://dbakevlar.com/tag/migrations/" rel="tag">migrations</a><br><br><div style="width:100%"><table align="left" width="100%" cellspacing="0" cellpadding="0" bgcolor="#f1f1f1" border="0px;"> <tbody> <tr bgcolor="#ffffff"><td align="center" width="17%" valign="top"> <span class="sb_title">Del.icio.us</span><br> <a href="http://del.icio.us/post?url=http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/&title=The Chicken Before the Egg of Cloud Migrations"> <img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/delicious.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"> </a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Facebook</span><br> <a href="http://www.facebook.com/share.php?u=http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/facebook_icon.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">TweetThis</span><br> <a href="http://twitthis.com/twit?url=http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/&title=The Chicken Before the Egg of Cloud Migrations"><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tweet.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Digg</span><br> <a href="http://digg.com/submit?phase=2&url=http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/&title=The Chicken Before the Egg of Cloud Migrations"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/digg.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">StumbleUpon</span><br> <a href="http://www.stumbleupon.com/submit?url=http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/&title=The Chicken Before the Egg of Cloud Migrations"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/stumble.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td></tr> </tbody></table></div><br><div style="clear:both"></div><div style="background:#EEEEEE; padding:0px 0px 0px 15px; margin:10px 0px 0px 0px;"><div style="padding:5px 0px 5px 0px;"><b>Comments:</b>&nbsp;&nbsp;<a href="http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/#respond">0 (Zero), Be the first to leave a reply!</a></div><br><div style="clear:both"></div><div style="padding:13px 0px 5px 0px;"><span style="border-bottom:1px dashed #003399;padding-bottom:4px;"><strong>You might be interested in this:</strong></span>&nbsp;&nbsp;<br><ul style="margin:0; padding:0; padding-top:10px; padding-bottom:5px;"><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2012/03/rmoug-2012-revisited/" >RMOUG 2012 Revisited</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2017/03/collaborate-2017/" >Collaborate 2017</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2013/09/oow-tuesday-followup/" >#OOW, Tuesday Followup</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2009/12/recovering-from-dba-stupid-trick-8006/" >Recovering from "DBA Stupid Trick, #8006"</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2014/04/ash-analytics-viewing-activity-combinations/" >ASH Analytics- Viewing Activity Combinations</a></li></ul></div></div><hr style="color:#EBEBEB" /><small>Copyright ¬©¬†<a href="http://dbakevlar.com">DBA Kevlar</a> [<a href="http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/">The Chicken Before the Egg of Cloud Migrations</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/">The Chicken Before the Egg of Cloud Migrations</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6698 Tue Apr 18 2017 18:38:42 GMT-0400 (EDT) Video Overview of SET SQLFORMAT ANSICONSOLE http://www.thatjeffsmith.com/archive/2017/04/video-overview-of-set-sqlformat-ansiconsole/ <p>Love the command line? Hate ugly, out-of-the-box formatting of your results? </p> <p>You&#8217;re in luck, we have just the thing for you:</p> <p><a href="http://www.oracle.com/technetwork/developer-tools/sqlcl/overview/index.html" target="_blank">Oracle SQLcl</a>.</p> <p>It offers the ability to auto-pretty up your SQL results to the screen. </p> <p>Here&#8217;s a quick video overview of what that is, and how it works.</p> <p><iframe width="853" height="480" src="https://www.youtube.com/embed/P1H6BolJirc" frameborder="0" allowfullscreen></iframe></p> <h3>For those of you w/o access to YouTube</h3> <p>How do you get through your day w/o cat videos and Marvel Studios movie trailers? </p> <p>Anyways, here&#8217;s a quick recap:</p> <div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="sql"><pre class="de1"><span class="kw1">SET</span> SQLFORMAT ANSICONSOLE</pre></div></div></div></div></div></div></div> <!-- Easy AdSense V7.43 --> <!-- [midtext: 1 urCount: 1 urMax: 0] --> <div class="ezAdsense adsense adsense-midtext" style="float:left;margin:12px;"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- 336-rectangle --> <ins class="adsbygoogle" style="display:inline-block;width:336px;height:280px" data-ad-client="ca-pub-1495560488595385" data-ad-slot="5904412551"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></div> <!-- Easy AdSense V7.43 --> <p>Add that to your login.sql</p> <p>When you startup your SQLcl, your queries will go from&#8230;</p> <div id="attachment_6135" style="width: 729px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/crap1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/crap1.png" alt="" width="719" height="738" class="size-full wp-image-6135" /></a><p class="wp-caption-text">Default output style, no bueno.</p></div> <p>&#8230;to this:</p> <div id="attachment_6136" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/notcrap.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/notcrap.png" alt="" width="1024" height="546" class="size-full wp-image-6136" /></a><p class="wp-caption-text">Better, yes?</p></div> <p>Each page of results is measured for &#8216;best fit&#8217;. We can&#8217;t make your screen bigger, so this isn&#8217;t a silver bullet.</p> <p>If you want to use ANSICONSOLE, don&#8217;t use the SQL*Plus Report formag commands like COL &#8211; use one or the other, your choice.</p> <p>And you have a few more formats you can use&#8230;</p> <div id="attachment_6137" style="width: 712px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/crap2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/crap2.png" alt="" width="702" height="65" class="size-full wp-image-6137" /></a><p class="wp-caption-text">These should be self-explanatory.</p></div> <p>What&#8217;s now self-explanatory is the &#8216;delimited&#8217; format which isn&#8217;t listed in the Help for reasons (bug!)</p> <p><a href="http://www.thatjeffsmith.com/archive/2015/12/more-set-sqlformat-fun-in-sqlcl/">SET SQLFORMAT DELIMITED</a></p> <p><img src="https://pbs.twimg.com/media/CUHaGJuWUAAZhJc.png"></p> thatjeffsmith http://www.thatjeffsmith.com/?p=6133 Tue Apr 18 2017 12:17:04 GMT-0400 (EDT) Positive Attitudes Lead to Positive Outcomes https://oracle-base.com/blog/2017/04/18/positive-attitudes-lead-to-positive-outcomes/ <p><img class="alignleft wp-image-7044" src="https://oracle-base.com/blog/wp-content/uploads/2017/03/bee-308777_640.png" alt="" width="150" height="110" />I am naturally a pessimistic person, but I&#8217;ve always tried to convince myself it&#8217;s a good thing, because when you assume the worst you are rarely disappointed. Some years ago it was explained to me that negative attitudes tend to lead to negative outcomes and positive attitudes lead to positive outcomes. I&#8217;m obviously oversimplifying the message. Although I like to think I took this on board, the reality is I didn&#8217;t.</p> <p>Something that has bugged me in recent years is we as DBAs and RDBMS¬†developers seem to be stuck in a groundhog day of trying to explain to the world why they are wrong and we are right as far as using the database properly. In many cases I fully agree with the points being made, but feel we are focusing on the problem, rather than¬†the solution. There are some exceptions out there!</p> <p>I think part of the problem is some of us have had these same conversations for so many years that we&#8217;ve become jaded by them. It&#8217;s not so much, &#8220;Look at all the cool things that happen if you do this!&#8221;, and more, &#8220;Look at what you are screwing up because you are getting it wrong!&#8221; These are two sides of the same coin, but the reaction to these two messages are quite different.</p> <p>People typically react badly to criticism. When you approach a situation with negativity you are more likely to close people down and make them less responsive to suggestion. They will look for an edge case that &#8220;proves you&#8217;re wrong&#8221;, or dismiss you as being an elitist prick. The chances of the conversation becoming toxic are so much higher if it begins on a negative note.</p> <p>I&#8217;m completely guilty of this too. I&#8217;m a very sarcastic person, both about myself and others. To one¬†person this can be seen as funny. To another¬†this might be interpreted as me thinking I&#8217;m better than other people. I can think of several situations recently¬†I could have handled a lot better!</p> <p>I feel I&#8217;ve got to reboot and focus more on the solution and less on the problem, because quite frankly listening to myself <a href="http://www.urbandictionary.com/define.php?term=piss%20and%20moan">piss and moan</a>¬†about this stuff is getting boring and has achieved nothing so far.</p> <p>Cheers</p> <p>Tim&#8230;</p> <p>PS. I&#8217;m smiling to myself, knowing that the next post I write will probably be full of me moaning about something, and the community will not be slow in reminding me of what I said here. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/18/positive-attitudes-lead-to-positive-outcomes/">Positive Attitudes Lead to Positive Outcomes</a> was first posted on April 18, 2017 at 3:35 pm.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7033 Tue Apr 18 2017 10:35:54 GMT-0400 (EDT) Oracle Audit Trail Add Program Name https://www.integrigy.com/security-resources/oracle-audit-trail-add-program-name <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>The program name attribute (V$SESSION.PROGRAM) is not by default passed to Oracle‚Äôs audit logs. It can be optionally included. To do so, apply Patch 7023214&nbsp;on the source database. After the patch is applied, the following event needs to be set:</p> <pre style="margin-left:31.7pt;">ALTER SYSTEM SET EVENT='28058 trace name context forever' COMMENT='enable program logging in audit trail' SCOPE=SPFILE;</pre><p>The table below summarizes key session attributres (V$SESSION) that&nbsp;are passed/not passed to Oracle auditing</p> <table border="1" cellpadding="0" cellspacing="0"> <tbody> <tr> <td colspan="4" style="width:638px;"> <p align="center"><strong>Oracle Audit Trails</strong></p> </td> </tr> <tr> <td style="width:133px;"> <p align="center"><strong>Session Attribute</strong></p> <p align="center"><strong>(V$SESSION)</strong></p> </td> <td style="width:264px;"> <p align="center"><strong>Description</strong></p> </td> <td style="width:93px;"> <p align="center"><strong>Traditional Auditing (SYS.AUD$)</strong></p> </td> <td style="width:149px;"> <p align="center"><strong>Fine Grained Auditing (SYS.FGA_LOG$)</strong></p> </td> </tr> <tr> <td style="width:133px;"> <p>CLIENT_IDENTIFIER</p> </td> <td style="width:264px;"> <p>End user username</p> </td> <td style="width:93px;"> <p>CLIENTID</p> </td> <td style="width:149px;"> <p>CLIENTID</p> </td> </tr> <tr> <td style="width:133px;"> <p>CLIENT_INFO</p> </td> <td style="width:264px;"> <p>Concatenated application log string</p> </td> <td style="width:93px;"> <p>Not passed</p> </td> <td style="width:149px;"> <p>Not passed</p> </td> </tr> <tr> <td style="width:133px;"> <p>MODULE</p> </td> <td style="width:264px;"> <p>ABAP program, module, application component or service</p> </td> <td style="width:93px;"> <p>Not passed</p> </td> <td style="width:149px;"> <p>Not passed</p> </td> </tr> <tr> <td style="width:133px;"> <p>ACTION</p> </td> <td style="width:264px;"> <p>Business action being executed, page, code event, location within program</p> </td> <td style="width:93px;"> <p>Not passed</p> </td> <td style="width:149px;"> <p>Not passed</p> </td> </tr> </tbody> </table> <h3>&nbsp;</h3> <p>If you have questions, please contact us at&nbsp;<a data-jsb_prepared="09wwxoj97a" href="mailto:info@integrigy.com" rel="noreferrer">info@integrigy.com</a></p> <p>-Michael Miller, CISSP-ISSMP</p> <h3>Reference</h3> <ul> <li><a data-jsb_prepared="bas6a27go7" href="/security-resources/logging-peoplesoft-e-business-suite-and-sap-end-users-oracle-rdbms-audit-logs" rel="noreferrer">Logging PeopleSoft, E-Business Suite and SAP End-Users in Oracle RDBMS Audit Logs</a></li> <li>How to make the client Program Name appear in Audit Vault reports? (Doc ID 1465610.1) <a data-jsb_prepared="11tc9c3148" href="https://support.oracle.com/rs?type=doc&amp;id=1465610.1" rel="noreferrer">https://support.oracle.com/rs?type=doc&amp;id=1465610.1</a></li> </ul> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> </div></div></div><a href="/tags/auditing" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Auditing</a>, <a href="/tags/oracle-database" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle Database</a>, <a href="/tags/oracle-audit-vault" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle Audit Vault</a> mmiller 572 at https://www.integrigy.com Tue Apr 18 2017 07:00:00 GMT-0400 (EDT) Your #1 Reason for Upgrading SQL Developer to Version 4.2 http://www.thatjeffsmith.com/archive/2017/04/your-1-reason-for-upgrading-sql-developer-to-version-4-2/ <p>Password resets.</p> <p>It used to be a pain &#8211; <a href="http://www.thatjeffsmith.com/archive/2012/11/resetting-your-oracle-user-password-with-sql-developer/" target="_blank">it required installing and configuring an Oracle client</a>.</p> <p>But, no more!</p> <p>Simply get version 4.2, and you&#8217;re good to go.</p> <p>Here&#8217;s the video.</p> <p><iframe width="853" height="480" src="https://www.youtube.com/embed/3HcQa-og69o" frameborder="0" allowfullscreen></iframe></p> <p>So <a href="http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html" target="_blank">go get version 4.2 already</a>.</p> thatjeffsmith http://www.thatjeffsmith.com/?p=6132 Mon Apr 17 2017 11:09:35 GMT-0400 (EDT) Kscope17 Planning Track Highlights ‚Äď Edina Chmielarski-White http://www.odtug.com/p/bl/et/blogaid=707&source=1 Edina Chmielarski-White has been leading the Planning Track for three years. She is looking forward to all the Planning track presentations, but here are the ones she doesn‚Äôt want to miss: ODTUG http://www.odtug.com/p/bl/et/blogaid=707&source=1 Mon Apr 17 2017 09:59:32 GMT-0400 (EDT) 12cR1 RAC Posts -- 8i : Switchback from SingleInstance to RAC http://hemantoracledba.blogspot.com/2017/04/12cr1-rac-posts-8i-switchback-from.html <div dir="ltr" style="text-align: left;" trbidi="on">Earlier this week (10-April), I had <a href="https://hemantoracledba.blogspot.sg/2017/04/12cr1-rac-posts-8g-switchover-from-rac.html" target="_blank">done a Switchover</a> from the 2node RAC database to a SingleInstance database.<br /><br />It is time now to Switchback from SingleInstance to RAC.<br /><br />First, I check the status of the two databases :<br /><u><br /></u><u>On STBY (the current Primary) :</u><br /><br /><pre>SQL&gt; select open_mode, database_role from v$database;<br /><br />OPEN_MODE DATABASE_ROLE<br />-------------------- ----------------<br />READ WRITE PRIMARY<br /><br />SQL&gt; select instance_name, host_name from v$instance;<br /><br />INSTANCE_NAME<br />----------------<br />HOST_NAME<br />----------------------------------------------------------------<br />STBY<br />oem132.racattack<br /><br /><br />SQL&gt;<br /></pre><br /><br />Next, I check <u>on the RAC database instance RAC1 (the current Standby)</u> :<br /><br /><pre>SQL&gt; select open_mode, database_role from v$database;<br /><br />OPEN_MODE DATABASE_ROLE<br />-------------------- ----------------<br />MOUNTED PHYSICAL STANDBY<br /><br />SQL&gt; select instance_name, status, host_name from gv$instance;<br /><br />INSTANCE_NAME STATUS<br />---------------- ------------<br />HOST_NAME<br />----------------------------------------------------------------<br />RAC1 MOUNTED<br />collabn1.racattack<br /><br />RAC2 MOUNTED<br />collabn2.racattack<br /><br /><br />SQL&gt;<br /></pre><br /><br />I also confirm that only one of the two RAC instances is doing recovery (in 12.1 we have only 1 instance in RAC doing recovery) by verifying the (automatic) message <u>in the alert log for RAC1</u> :<br /><br /><pre>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT NODELAY<br />Sun Apr 16 23:05:50 2017<br />Attempt to start background Managed Standby Recovery process (RAC1)<br />Starting background process MRP0<br />Sun Apr 16 23:05:50 2017<br />MRP0 started with pid=52, OS id=16739<br />Sun Apr 16 23:05:50 2017<br />MRP0: Background Managed Standby Recovery process started (RAC1)<br />Sun Apr 16 23:05:55 2017<br /> Started logmerger process<br />Sun Apr 16 23:05:56 2017<br />Managed Standby Recovery starting Real Time Apply<br />Sun Apr 16 23:06:10 2017<br />Parallel Media Recovery started with 2 slaves<br />Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT NODELAY<br /></pre><br /><br />Now, I add some data to the PDB Pluggable Database currently running in STBY :<br /><br /><pre>[oracle@oem132 ~]$ sqlplus hemant/hemant@PDB<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Sun Apr 16 23:29:37 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />Last Successful login time: Mon Apr 10 2017 23:43:30 +08:00<br /><br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; select count(*) from my_data;<br /><br /> COUNT(*)<br />----------<br /> 300<br /><br />SQL&gt; create table my_new_table as select * from my_data;<br /><br />Table created.<br /><br />SQL&gt;<br /></pre><br /><br />I am now ready to switchover from STBY to RAC. However, I have a problem because I started the RAC database (and , therefore, DataGuard Broker) before I&nbsp; started the SingleInstance node and database.&nbsp; I have drcRAC1.log and drcRAC2.log both reporting :<br /><br /><pre>04/16/2017 23:05:38<br />Failed to connect to remote database stby. Error is ORA-12543<br />Failed to send message to site stby. Error code is ORA-12543.<br />database rac unable to contact primary database for version check; status ORA-12543<br /> completing bootstrap of this database<br /></pre><br /><br />The fix is to have the Standby RAC database started *after* the singleInstance Primary and verify that Managed Recovery is restarted in RAC1 :<br /><br /><pre>[oracle@collabn1 ~]$ srvctl stop database -d RAC<br />[oracle@collabn1 ~]$ srvctl start database -d RAC<br /><br /><br />ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT NODELAY<br />Sun Apr 16 23:43:58 2017<br />Attempt to start background Managed Standby Recovery process (RAC1)<br />Starting background process MRP0<br />Sun Apr 16 23:43:59 2017<br />MRP0 started with pid=53, OS id=2033<br />Sun Apr 16 23:43:59 2017<br />MRP0: Background Managed Standby Recovery process started (RAC1)<br />Sun Apr 16 23:44:03 2017<br />RFS[2]: Assigned to RFS process (PID:1922)<br />RFS[2]: Selected log 5 for thread 1 sequence 76 dbid 2519807290 branch 931825279<br />Sun Apr 16 23:44:04 2017<br /> Started logmerger process<br />Sun Apr 16 23:44:07 2017<br />Managed Standby Recovery starting Real Time Apply<br />RFS[1]: Selected log 7 for thread 1 sequence 78 dbid 2519807290 branch 931825279<br />Sun Apr 16 23:44:20 2017<br />Archived Log entry 144 added for thread 1 sequence 77 ID 0x96bd0722 dest 1:<br />Sun Apr 16 23:44:25 2017<br />Archived Log entry 145 added for thread 1 sequence 76 ID 0x96bd0722 dest 1:<br />Sun Apr 16 23:44:27 2017<br />Parallel Media Recovery started with 2 slaves<br />Sun Apr 16 23:44:27 2017<br />Waiting for all non-current ORLs to be archived...<br />Sun Apr 16 23:44:27 2017<br />All non-current ORLs have been archived.<br />Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT NODELAY<br /></pre><br /><br />Now, recheck the configuration from the <u>SingleInstance</u> node and then&nbsp; Switchover to RAC&nbsp;:<br /><br /><pre>[oracle@oem132 ~]$ dgmgrl<br />DGMGRL for Linux: Version 12.1.0.2.0 - 64bit Production<br /><br />Copyright (c) 2000, 2013, Oracle. All rights reserved.<br /><br />Welcome to DGMGRL, type "help" for information.<br />DGMGRL&gt; connect sys/racattack@STBY<br />Connected as SYSDBA.<br />DGMGRL&gt; show configuration;<br /><br />Configuration - rac<br /><br /> Protection Mode: MaxPerformance<br /> Members:<br /> stby - Primary database<br /> rac - Physical standby database<br /><br />Fast-Start Failover: DISABLED<br /><br />Configuration Status:<br />SUCCESS (status updated 16 seconds ago)<br /><br />DGMGRL&gt; switchover to rac;<br />Performing switchover NOW, please wait...<br />Operation requires a connection to instance "RAC1" on database "rac"<br />Connecting to instance "RAC1"...<br />Connected as SYSDBA.<br />New primary database "rac" is opening...<br />Operation requires start up of instance "STBY" on database "stby"<br />Starting instance "STBY"...<br />Unable to connect to database using (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oem132.racattack)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=STBY_DGMGRL)(INSTANCE_NAME=STBY)(SERVER=DEDICATED)))<br />ORA-12514: TNS:listener does not currently know of service requested in connect descriptor<br /><br />Failed.<br />Warning: You are no longer connected to ORACLE.<br /><br />Please complete the following steps to finish switchover:<br /> start up and mount instance "STBY" of database "stby"<br /><br />DGMGRL&gt;<br /></pre><br /><br />The ORA-12514 error here is acceptable.&nbsp;I only need to startup STBY manually.<br /><br /><pre>DGMGRL&gt; exit<br />[oracle@oem132 ~]$ sqlplus '/ as sysdba'<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Sun Apr 16 23:51:25 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />Connected to an idle instance.<br /><br />SQL&gt; startup nomount;<br />ORACLE instance started.<br /><br />Total System Global Area 838860800 bytes<br />Fixed Size 2929936 bytes<br />Variable Size 289409776 bytes<br />Database Buffers 541065216 bytes<br />Redo Buffers 5455872 bytes<br />SQL&gt; alter database mount standby database;<br /><br />Database altered.<br /><br />SQL&gt; select open_mode, database_role from v$database;<br /><br />OPEN_MODE DATABASE_ROLE<br />-------------------- ----------------<br />MOUNTED PHYSICAL STANDBY<br /><br />SQL&gt; select instance_name, status, host_name from v$instance;<br /><br />INSTANCE_NAME STATUS<br />---------------- ------------<br />HOST_NAME<br />----------------------------------------------------------------<br />STBY MOUNTED<br />oem132.racattack<br /><br /><br />SQL&gt;<br /></pre><br /><br />STBY has now reverted to being a Standby. <br /><br />Let me check the <u>RAC database instances</u><br /><br /><pre>[oracle@collabn1 ~]$ sqlplus '/ as sysdba'<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Sun Apr 16 23:55:28 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br /><br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,<br />Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; select open_mode, database_role from v$database;<br /><br />OPEN_MODE DATABASE_ROLE<br />-------------------- ----------------<br />READ WRITE PRIMARY<br /><br />SQL&gt; select instance_name, status, host_name from gv$instance;<br /><br />INSTANCE_NAME STATUS<br />---------------- ------------<br />HOST_NAME<br />----------------------------------------------------------------<br />RAC2 OPEN<br />collabn2.racattack<br /><br />RAC1 OPEN<br />collabn1.racattack<br /><br /><br />SQL&gt;<br /></pre><br /><br />Yes, RAC is now Primary with both instances OPEN.<br /><br />Let me (now on RAC) verify the new table created and populated when STBY was the Primary.&nbsp; <br /><br /><pre>SQL&gt; alter pluggable database pdb open;<br />alter pluggable database pdb open<br />*<br />ERROR at line 1:<br />ORA-65019: pluggable database PDB already open<br /><br /><br />SQL&gt; alter session set container=PDB;<br /><br />Session altered.<br /><br />SQL&gt; select table_name from dba_tables where owner = 'HEMANT';<br /><br />TABLE_NAME<br />--------------------------------------------------------------------------------<br />MY_DATA<br />MY_NEW_TABLE<br /><br />SQL&gt; select count(*) from hemant.my_new_table;<br /><br /> COUNT(*)<br />----------<br /> 300<br /><br />SQL&gt;<br /></pre><br /><br />Yes, the data in the Pluggable Database PDB has also come over to RAC. <br /><br />So, on 10-April, I did a Switchover from RAC (2nodes) to STBY (SingleNode).&nbsp; Today, I have done a Switchover from STBY to RAC.<br />.<br />.<br />.<br /><br /></div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-4464067964778353791 Sun Apr 16 2017 11:59:00 GMT-0400 (EDT) Removing Docker Containers and Images http://dbaontap.com/2017/04/16/removing-docker-containers-images/ <p>Removing Docker Containers and Images In a recent post about Docker, we looked into some things that differentiate Docker containers from Virtual Machines. I also gave a brief example of creating your first Docker image. If any of that piqued your interest and you started just trying stuff, you end up like I did with ...</p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/04/16/removing-docker-containers-images/">Removing Docker Containers and Images</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">dbaonTap</a>.</p> DB http://dbaontap.com/?p=1245 Sun Apr 16 2017 02:01:13 GMT-0400 (EDT) Character selectivity https://jonathanlewis.wordpress.com/2017/04/14/character-selectivity/ <p>A <a href="http://community.oracle.com/thread/4034661"><em><strong>recent OTN posting</strong></em></a> asked how the optimizer dealt with &#8220;like&#8221; predicates for character types quoting the DDL and a query <a href="http://datavirtualizer.com/wp-content/uploads/2014/10/OTW_Selectivity.pdf"><em><strong>that I had published some time ago</strong></em></a> in a presentation I had done with Kyle Hailey. I thought that I had already given a detailed answer somewhere on my blog (or even in the presentation) but found that I couldn&#8217;t track down the necessary working, so here&#8217;s a repeat of the question and a full explanation of the working.</p> <p>The query is very simple, and the optimizer&#8217;s arithmetic takes an &#8220;obvious&#8221; strategy in the arithmetic. Here&#8217;s the sample query, with the equiavalent query that we can use to do the calculation:</p> <pre class="brush: plain; title: ; notranslate"> select * from t1 where alpha_06 like 'mm%'; select * from t1 where alpha_06 &gt;= 'mm' and alpha_06 &lt; 'mn'; </pre> <p>Ignoring the possible pain of the EBCDIC character set and multi-byte national-language character sets with &#8220;strange&#8221; collation orders, it should be reasonably easy to see that <em><strong>&#8216;mn&#8217;</strong></em> is the first string in alphabetical order that fails to match <em><strong>&#8216;mm%&#8217;</strong></em>. With that thought in mind we can apply the standard arithmetic for range-based predicates assuming, to stick with the easy example, that there are no histograms involved. For a range closed at one end and and open at the other the selectivity is:</p> <pre class="brush: plain; title: ; notranslate"> ( ( 'mn' - 'mm') / (high_value - low_value) ) + 1/num_distinct </pre> <p>The tricky bits, of course, are how you subtract <em>&#8216;mm&#8217;</em> from <em>&#8216;mn&#8217;</em> and how you use the values stored in the <em><strong>low_value</strong></em> and <em><strong>high_value</strong></em> columns of view <em><strong>user_tab_cols</strong></em>. So let&#8217;s generate the orginal data set and see where we go (running on 12c, and eliminating redundant bits from the original presentation):</p> <pre class="brush: plain; title: ; notranslate"> rem rem Script: selectivity_like_char.sql rem Author: Jonathan Lewis rem Dated: Sep 2013 rem execute dbms_random.seed(0) create table t1 nologging as with generator as ( select rownum id from dual connect by rownum &lt;= 1000 ) select cast(dbms_random.string('l',6) as char(6)) alpha_06 from generator, generator where rownum &lt;= 1e6 -- &gt; comment to avoid WordPress formatting issue ; execute dbms_stats.gather_table_stats(user,'t1',method_opt=&gt;'for all columns size 1') column low_value format a32 column high_value format a32 select column_name, num_distinct, density, low_value, high_value from user_tab_cols where table_name = 'T1' order by column_name ; select min(alpha_06), max(alpha_06) from t1; set autotrace traceonly explain select * from t1 where alpha_06 like 'mm%' ; set autotrace off </pre> <p>It will probably take a couple of minutes to generate the data &#8211; it&#8217;s 1M random strings, lower-case, 6 characters fixed &#8211; and will take up about 12MB of space. Here are the results from the stats and min/max queries, with the execution plan for the query we are testing:</p> <pre class="brush: plain; title: ; notranslate"> COLUMN_NAME NUM_DISTINCT DENSITY LOW_VALUE HIGH_VALUE -------------------- ------------ ---------- -------------------------- -------------------------- ALPHA_06 1000000 .000001 616161616E72 7A7A7A78747A MIN(AL MAX(AL ------ ------ aaaanr zzzxtz Execution Plan ---------------------------------------------------------- Plan hash value: 3617692013 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 157 | 1099 | 265 (20)| 00:00:01 | |* 1 | TABLE ACCESS FULL| T1 | 157 | 1099 | 265 (20)| 00:00:01 | -------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(&quot;ALPHA_06&quot; LIKE 'mm%') </pre> <p>Given that there are power(26,6) = 308,915,776 different combinations available for lower-case strings of 6 charactgers itamp;#8217;s not too surprising that Oracle generated 1M different strings, nor is it particularly surprising that the lowest value string started with &#8216;aaa&#8217; and the highest with &#8216;zzz&#8217;.</p> <p>So how do we get 157 as the cardinality for the query or, to put it another way, how do we get 0.000157 as the selectivity of the predicate. We need to refer to <a href="https://jonathanlewis.wordpress.com/2010/10/05/frequency-histogram-4/"><em><strong>a note I wrote a few years ago</strong></em></a> to help us on our way (with a little caveat due to <a href="https://jonathanlewis.wordpress.com/2016/12/02/histogram-upgrade/"><em><strong>a change that appeared in 11.2.0.4</strong></em></a>) &#8211; what number would Oracle use to represent &#8216;mm&#8217; and the other three strings we need to work with ?</p> <p>According to the rules supplied (and adjusted in later versions) we have to:</p> <ol> <li>pad the strings with ASCII nulls (zeros) up to 15 bytes</li> <li>treat the results as a hexadecimal number and convert to decimal</li> <li>round off the last 21 decimal digits</li> </ol> <p>We can model this in SQL with a statement like:</p> <pre class="brush: plain; title: ; notranslate"> SQL&gt; column dec_value format 999,999,999,999,999,999,999,999,999,999,999,999 SQL&gt; select round(to_number(utl_raw.cast_to_raw(rpad('aaaanr',15,chr(0))),'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'),-21) dec_val from dual; DEC_VAL ------------------------------------------------ 505,627,904,294,763,000,000,000,000,000,000,000 1 row selected. </pre> <p>As an alternative, or possibly a cross-check, I created a table with a varchar2(6) column, inserted the four values I was interested in and created a histogram of 4 buckets on the column (there&#8217;s a suitable little demo at <a href="https://jonathanlewis.wordpress.com/2014/11/19/comparisons-2/"><em><strong>this URL</strong></em></a>) and got the following endpoint values:</p> <pre class="brush: plain; title: ; notranslate"> ENDPOINT_NUMBER ENDPOINT_VALUE --------------- ------------------------------------------------ 1 505,627,904,294,763,000,000,000,000,000,000,000 2 568,171,140,227,094,000,000,000,000,000,000,000 3 568,191,422,636,698,000,000,000,000,000,000,000 4 635,944,373,827,734,000,000,000,000,000,000,000 </pre> <p>Once we&#8217;ve got these numbers we can slot them into the standard formula (not forgetting the 1/1,000,000 for the closed end of the predicate) &#8211; and to save typing I&#8217;m going to factor out 10^21 across the board in the division:</p> <p>Selectivity = (568,191,422,636,698 &#8211; 568,171,140,227,094) / (635,944,373,827,734 &#8211; 505,627,904,294,763) + 1/1,000,000</p> <p>Selectivity = 20,282,409,604 / 130,316,469,532,971 + 1/1,000,000</p> <p>Selectivity = 0.00015564 + 0.000001 = 0.00015664</p> <p>From which the cardinality = (selectivity * <em><strong>num_rows</strong></em>) = 156.64, which rounds up to 157. Q.E.D.</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16974/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16974/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16974&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16974 Fri Apr 14 2017 07:40:33 GMT-0400 (EDT) Oracle E-Business Suite 12.2 Mobile and Web Services Security Requires Web Application Firewall (WAF) https://www.integrigy.com/security-resources/oracle-e-business-suite-122-mobile-and-web-services-security-requires-web <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>This is the eighth posting in a blog series summarizing the new Oracle E-Business Suite 12.2 Mobile and web services functionality and recommendations for securing them.</p> <p>Web Application Firewalls (WAFs) cannot replace the URL Firewall, nor can the URL Firewall replace WAFs.&nbsp; The URL Firewall provides the critical function of only allowing those forms and web services that have been both hardened by Oracle and flagged by the client as being used ‚Äď all other requests are blocked by the default-deny rules. The URL Firewall does not protect against common web attack techniques such as those below ‚Äď this what WAFs protect against:</p> <ul> <li>Denial of Service (DoS)<br /> <ul style="list-style-type:circle;"> <li>Flooding, recursive &amp; oversized payloads</li> </ul> </li> <li>Injection &amp; Malicious Code<br /> <ul style="list-style-type:circle;"> <li>XXC, SQLi, logic bombs, malformed content</li> </ul> </li> <li>Confidentiality and Integrigy<br /> <ul style="list-style-type:circle;"> <li>Parameter tampering, schema poisoning</li> </ul> </li> <li>Reconnaissance Attacks<br /> <ul style="list-style-type:circle;"> <li>Scanning and registry disclosure</li> </ul> </li> <li>Privilege Escalation Attacks<br /> <ul style="list-style-type:circle;"> <li>Race condition, format string, buffer overflow</li> </ul> </li> </ul> <p>Additional protection is required to secure Internet facing Oracle E-Business Suite web services. Third party WAFs can certainly be deployed, but Oracle Corporation‚Äôs API Gateway offers a compelling advantage for Oracle E-Business Suite clients. The API Gateway is a separate license option and is placed in front of the SOA Server (also a separate license option) to defend against the common web attack techniques specific to web services as identified above.</p> <p style="margin-left: 40px;"><img alt="" src="/files/images/OAG.jpg" style="width: 428px; height: 60px;"></p> <p>If you have any questions, please contact us at <a href="mailto:info@integrigy.com">info@integrigy.com</a></p> <p>-Michael Miller, CISSP-ISSMP, CCSP, CCSK</p> <h3>References</h3> <ul> <li><a data-jsb_prepared="fnymfhgejw" href="/security-resources/oracle-e-business-suite-mobile-and-web-services-security-0" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security</a>&nbsp;- Integrigy Whitepaper</li> <li><a data-jsb_prepared="q6ttrgzbhv" href="/security-resources/oracle-e-business-suite-mobile-and-web-services-security" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security</a>&nbsp;- Integrigy Webinar</li> <li><a data-jsb_prepared="fma72ik73j" href="https://support.oracle.com/rs?type=doc&amp;id=1375670.1" rel="noreferrer">Oracle E-Business Suite Release 12.2 Configuration in a DMZ</a>&nbsp;(Note 1375670.1)</li> </ul> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> </div></div></div><a href="/tags/web-services" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Web Services</a>, <a href="/tags/dmzexternal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">DMZ/External</a>, <a href="/tags/oracle-e-business-suite" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle E-Business Suite</a> mmiller 551 at https://www.integrigy.com Fri Apr 14 2017 07:00:00 GMT-0400 (EDT) Conference Networking- Tips to Doing it Right http://dbakevlar.com/2017/04/conference-networking-tips-right/ <div id="tweetbutton6687" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Fconference-networking-tips-right%2F&amp;text=RT%20%40DBAKevlar%20%40DBAKevlar%20%3A&amp;related=DBAKevlar:DBA+Kevlar&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Fconference-networking-tips-right%2F" class="twitter-share-button" style="width:55px;height:22px;background:transparent url('http://dbakevlar.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat 0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><div class="pf-content"><p>I was in a COE, (Center of Excellence) meeting yesterday and someone asked me, &#8220;Kellyn, is your blog correct? ¬†Are you really speaking at a Blockchain event??&#8221; ¬†Yeah, I&#8217;m all over the technical map these days and you know what?</p> <p><a href="http://dbakevlar.com/2017/04/conference-networking-tips-right/loveit/" rel="attachment wp-att-6692"><img class="alignnone wp-image-6692" src="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/loveit.gif?resize=309%2C216" alt="" data-recalc-dims="1" /></a></p> <p>I love the variety of technology, the diversity¬†of attendance and the differences in¬†how the conferences are managed. ¬†Now that last one might seem odd and you might think that they&#8217;d all be similar, but its surprising how different they really are.</p> <h2>Getting to Know You</h2> <p>Today I&#8217;m going to talk about an aspect of conferences¬†that&#8217;s very near to my heart, which is networking via events. ¬†For women in technology, there are some unique challenges for us when it comes to networking. ¬†Men have concerns about approaching women to network- such as fearful of accusations¬†of inappropriate interaction and women have the challenge that a lot of networking opportunities occur outside of the workplace and in social situations that we may not be comfortable in. ¬†No matter who you are, no matter what your intentions, there&#8217;s a lot of wariness and in the end, women often just lose out when it comes to building their network. ¬†I&#8217;ve been able to breach this pretty successfully, but I have seen where it&#8217;s backfired and have found myself on more than one occasion defending both genders¬†who&#8217;ve ended up on the losing side of the situation.</p> <p>With that said, conferences and other professional events can assist with helping us geeks build our networks and it&#8217;s not all about networking events. ¬†I noticed a¬†while back that the SQL Server community appeared to be more networked among their members. ¬†I believe part of this is due to the¬†long history of their event software and some of its features.</p> <p>Using the¬†<a href="http://www.sqlsaturday.com/About.aspx">SQL Pass</a>¬†website, specifically the local user group event management software- ¬†notice that its all centralized. ¬†Unlike the significantly independent Oracle user groups, SQL Server user groups are able to use a centralized repository for their event management, speaker portal, scheduling, etc. ¬†It&#8217;s not to say that there aren&#8217;t any events outside of Pass Summit and SQL Saturdays, there&#8217;s actually a ton, but this was the portal for the regional user groups, creating the spoke that bridged out to the larger community.</p> <h2>Centralized System</h2> <p>Outside of submitting my abstract proposals to as many SQL Saturdays worldwide from one portal, I also can maintain one speaker biography,¬†information about my blog, Twitter, Linkedin and other social media in this one location.</p> <p>The second benefit of this simplicity, is that these biographies and profiles &#8220;feed&#8221; the conference schedules and event sites. ¬†You have a central location for management, but hundreds of event sites where different members can connect. ¬†After abstracts have been approved and the schedule built, I can easily go into an event&#8217;s schedule and click on each speaker biography and choose to connect¬†with anyone listed who has entered their social media information in their global profile.</p> <p><a href="http://dbakevlar.com/2017/04/conference-networking-tips-right/screen-shot-2017-04-13-at-12-47-11-pm/" rel="attachment wp-att-6689"><img class="alignnone size-large wp-image-6689" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.47.11-PM.png?resize=600%2C231" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.47.11-PM.png?resize=1024%2C395 1024w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.47.11-PM.png?resize=300%2C116 300w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.47.11-PM.png?resize=768%2C296 768w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.47.11-PM.png?w=1200 1200w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.47.11-PM.png?w=1800 1800w" sizes="(max-width: 600px) 100vw, 600px" data-recalc-dims="1" /></a></p> <p>Using my profile as an example, you&#8217;ll notice the social media icons¬†under my title are available with a simple click of the mouse:</p> <p><a href="http://dbakevlar.com/2017/04/conference-networking-tips-right/screen-shot-2017-04-13-at-12-46-33-pm/" rel="attachment wp-att-6690"><img class="alignnone size-large wp-image-6690" src="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.46.33-PM.png?resize=600%2C364" alt="" srcset="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.46.33-PM.png?resize=1024%2C621 1024w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.46.33-PM.png?resize=300%2C182 300w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.46.33-PM.png?resize=768%2C466 768w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.46.33-PM.png?w=1200 1200w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-12.46.33-PM.png?w=1800 1800w" sizes="(max-width: 600px) 100vw, 600px" data-recalc-dims="1" /></a></p> <p>This gives me both an easy way to network with my fellow speakers, but also an <strong>excuse</strong> to network with them! ¬†I can click on each one of the social media buttons and choose to follow each of the speakers on Twitter and connect with them on Linkedin. ¬†I send a note with the Linkedin connection telling the speaker that we&#8217;re both speaking at the event and due to this, I&#8217;d like to add them to my network.</p> <p>As you can join as many regional and virtual user groups as you like, (and your Pass membership is free) I joined the three in Colorado, (Denver, Boulder and Colorado Springs.) Each one of those offers the ability to also connect with the board members using a similar method, (now going to use Todd and David as my examples from the Denver SQL Server user group.)</p> <p><a href="http://dbakevlar.com/2017/04/conference-networking-tips-right/screen-shot-2017-04-13-at-2-55-21-pm/" rel="attachment wp-att-6693"><img class="alignnone wp-image-6693" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.55.21-PM.png?resize=378%2C324" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.55.21-PM.png?resize=1024%2C878 1024w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.55.21-PM.png?resize=300%2C257 300w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.55.21-PM.png?resize=768%2C658 768w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.55.21-PM.png?w=1596 1596w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.55.21-PM.png?w=1200 1200w" sizes="(max-width: 378px) 100vw, 378px" data-recalc-dims="1" /></a></p> <p>The¬†Oracle user groups have embraced adding twitter links to most speaker bios and some board groups, but I know for RMOUG, many still hesitated or aren&#8217;t using social media to the extent they could. ¬†I can&#8217;t stress enough how impressed I am when I see events incorporate Linkedin and Twitter into their speaker and management profiles, knowing the value they bring to technical careers, networks and the community.</p> <h2>New Kids on the Block</h2> <p>Although the SQL Server community is a good example, they aren&#8217;t the only ones. ¬†I&#8217;m also speaking at new events on emergent technologies, like<a href="https://www.dataplatforms.com/home"> Data Platforms 2017</a>. ¬†I&#8217;ll be polite and expose <a href="https://www.dataplatforms.com/page/1286629/speakers">my own profile page</a>, but I&#8217;m told I&#8217;m easy to find in the sea of male speakers&#8230; <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" />¬†Along with my picture, bio and session information, there are links to my social media connections, allowing people to connect with me:</p> <p><a href="http://dbakevlar.com/2017/04/conference-networking-tips-right/screen-shot-2017-04-13-at-2-40-16-pm/" rel="attachment wp-att-6691"><img class="alignnone size-large wp-image-6691" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.40.16-PM.png?resize=600%2C346" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.40.16-PM.png?resize=1024%2C590 1024w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.40.16-PM.png?resize=300%2C173 300w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.40.16-PM.png?resize=768%2C443 768w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.40.16-PM.png?w=1200 1200w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-13-at-2.40.16-PM.png?w=1800 1800w" sizes="(max-width: 600px) 100vw, 600px" data-recalc-dims="1" /></a></p> <p>Yes, the Bizzabo software, (same software package that RMOUG will be using for our 2018 conference, along with a few other Oracle events this coming year) is aesthetically appealing, but more importantly, it incorporates important networking features that in the past just weren&#8217;t as essential as they are in today&#8217;s business world.</p> <p>I first learned the¬†networking tactic of connecting with people I was speaking with from Jeff Smith and I think its a great skill that everyone should take advantage of, no matter if you&#8217;re speaking or just attending. ¬†For women, I think it&#8217;s essential to your career to take advantage of opportunities to network outside of the traditional ways we&#8217;ve been taught in the past and this is just one more way to work around that glass ceiling.</p> <p>&nbsp;</p> <p>&nbsp;</p> <!-- Easy Plugin for AdSense Unfiltered [count: 3 is not less than 3] --></div><br><br><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/ico-tag.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> Tags:&nbsp;&nbsp;<a href="http://dbakevlar.com/tag/big-data/" rel="tag">Big Data</a>, <a href="http://dbakevlar.com/tag/networking/" rel="tag">Networking</a>, <a href="http://dbakevlar.com/tag/oracle/" rel="tag">oracle</a>, <a href="http://dbakevlar.com/tag/sql-server/" rel="tag">SQL Server</a><br><br><div style="width:100%"><table align="left" width="100%" cellspacing="0" cellpadding="0" bgcolor="#f1f1f1" border="0px;"> <tbody> <tr bgcolor="#ffffff"><td align="center" width="17%" valign="top"> <span class="sb_title">Del.icio.us</span><br> <a href="http://del.icio.us/post?url=http://dbakevlar.com/2017/04/conference-networking-tips-right/&title=Conference Networking- Tips to Doing it Right"> <img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/delicious.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"> </a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Facebook</span><br> <a href="http://www.facebook.com/share.php?u=http://dbakevlar.com/2017/04/conference-networking-tips-right/"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/facebook_icon.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">TweetThis</span><br> <a href="http://twitthis.com/twit?url=http://dbakevlar.com/2017/04/conference-networking-tips-right/&title=Conference Networking- Tips to Doing it Right"><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tweet.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Digg</span><br> <a href="http://digg.com/submit?phase=2&url=http://dbakevlar.com/2017/04/conference-networking-tips-right/&title=Conference Networking- Tips to Doing it Right"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/digg.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">StumbleUpon</span><br> <a href="http://www.stumbleupon.com/submit?url=http://dbakevlar.com/2017/04/conference-networking-tips-right/&title=Conference Networking- Tips to Doing it Right"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/stumble.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td></tr> </tbody></table></div><br><div style="clear:both"></div><div style="background:#EEEEEE; padding:0px 0px 0px 15px; margin:10px 0px 0px 0px;"><div style="padding:5px 0px 5px 0px;"><b>Comments:</b>&nbsp;&nbsp;<a href="http://dbakevlar.com/2017/04/conference-networking-tips-right/#respond">0 (Zero), Be the first to leave a reply!</a></div><br><div style="clear:both"></div><div style="padding:13px 0px 5px 0px;"><span style="border-bottom:1px dashed #003399;padding-bottom:4px;"><strong>You might be interested in this:</strong></span>&nbsp;&nbsp;<br><ul style="margin:0; padding:0; padding-top:10px; padding-bottom:5px;"><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2011/01/243/" >Index Reviews and Fruit Baskets</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2010/10/but-i-collected-stats/" >But‚Ķ. I Collected Stats!--Updated!!</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2013/01/rmoug-2013-all-the-glory-half-the-calories-of-other-conferences/" >RMOUG 2013, All the Glory, Half the Calories of Other Conferences!</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2013/07/adobe-flashplayer-with-firegox-when-setting-up-em-express-for-db12c/" >Adobe FlashPlayer with Firefox When Setting up EM Express for DB12c</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2016/09/installing-pibrella-on-raspberry-pi-3-and-gpio-pins/" >Installing Pibrella on Raspberry Pi 3 and GPIO Pins</a></li></ul></div></div><hr style="color:#EBEBEB" /><small>Copyright ¬©¬†<a href="http://dbakevlar.com">DBA Kevlar</a> [<a href="http://dbakevlar.com/2017/04/conference-networking-tips-right/">Conference Networking- Tips to Doing it Right</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/04/conference-networking-tips-right/">Conference Networking- Tips to Doing it Right</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6687 Thu Apr 13 2017 17:49:02 GMT-0400 (EDT) ANNOUNCEMENT: 12cR2 is available on AIX and HPUX and #sqldev 4.2 http://laurentschneider.com/wordpress/2017/04/announcement-12cr2-is-available-on-aix-and-hpux-and-sqldev-4-2.html <p>download it from <a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html">http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html</a></p> <p>sqldeveloper 4.2 is there : <a href="http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html">http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html</a></p> Laurent Schneider http://laurentschneider.com/?p=2436 Thu Apr 13 2017 11:47:04 GMT-0400 (EDT) ORDS Standalone and URI Rewrites http://feedproxy.google.com/~r/KrisBlog/~3/HXOvaGLumUQ/ords-standalone-and-uri-rewrites.html My last post How to add an NCSA style Access Log to ORDS Standalone¬†explained what the ORDS standalone is and that is based on Eclipse Jetty. ¬†Jetty offers far more than ORDS exposed in it's standalone. ¬†There's a long list of all the features and configuration options listed in the documentation,¬†http://www.eclipse.org/jetty/documentation/9.2.21.v20170120/ A recent question came up for doing <div class="feedflare"> <a href="http://feeds.feedburner.com/~ff/KrisBlog?a=HXOvaGLumUQ:0CkWB8CFTzs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/KrisBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/KrisBlog?a=HXOvaGLumUQ:0CkWB8CFTzs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/KrisBlog?d=7Q72WNTAKBA" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/KrisBlog/~4/HXOvaGLumUQ" height="1" width="1" alt=""/> Kris Rice tag:blogger.com,1999:blog-37621059.post-8929186596639506246 Thu Apr 13 2017 11:45:00 GMT-0400 (EDT) ODTUG Kscope16 Award-Winning Session Recordings Available to All http://www.odtug.com/p/bl/et/blogaid=706&source=1 ODTUG full members get exclusive access to browse all session recordings from past Kscope conferences. To highlight our impressive speaker lineup for Kscope17, we want to give everyone a sneak peek at the quality sessions that are to come at Kscope17. ODTUG http://www.odtug.com/p/bl/et/blogaid=706&source=1 Thu Apr 13 2017 09:39:19 MT-0400 (EDT) DB Auditing and ORDS http://feedproxy.google.com/~r/KrisBlog/~3/52-RNjsT-y8/db-auditing-and-ords.html There seems to be some confusion around how ORDS works with it's connection pooling yet running the REST call as the specified schema. The connection pool Consider a 50 PDB env and concurrent users per PDB running some REST stuff. ¬†Using a connection pool per PDB would be 50 connection pools. ¬†Then if a JET app ( or any HTML5/JS/.. ) is making REST calls Chrome will do this with 6 concurrent <div class="feedflare"> <a href="http://feeds.feedburner.com/~ff/KrisBlog?a=52-RNjsT-y8:AiqtqvyAqlo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/KrisBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/KrisBlog?a=52-RNjsT-y8:AiqtqvyAqlo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/KrisBlog?d=7Q72WNTAKBA" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/KrisBlog/~4/52-RNjsT-y8" height="1" width="1" alt=""/> Kris Rice tag:blogger.com,1999:blog-37621059.post-1411905273496018932 Thu Apr 13 2017 09:09:00 GMT-0400 (EDT) Spring Boot Application for Pivotal Cloud Cache Service http://feedproxy.google.com/~r/blogspot/PEqWE/~3/kgRomIuGp1Y/spring-boot-application-for-pivotal.html I previously blogged about the Pivotal Cloud Cache service in Pivotal Cloud Foundry as follows<br /><br /><a href="http://theblasfrompas.blogspot.com.au/2017/04/getting-started-with-pivotal-cloud.html">http://theblasfrompas.blogspot.com.au/2017/04/getting-started-with-pivotal-cloud.html</a><br /><br />During that post I promised it will follow with a Spring Boot application which would use the PCC service to show what the code would look like. That demo exists at the GitHub URL below.<br /><br /><a href="https://github.com/papicella/SpringBootPCCDemo">https://github.com/papicella/SpringBootPCCDemo</a><br /><br />The GitHub URL above shows how you can clone , package and then push this application to PCF using your own PCC service instance using the "<a href="https://github.com/pivotal-cf/spring-cloud-gemfire-connector/tree/v1.1.0">Spring Cloud GemFire Connector</a>"<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-xaJgT2wrBP0/WO9enVC-odI/AAAAAAAAA8E/Q815VgMxrnc-IDG5qOgomxysB9ROIm1QwCLcB/s1600/pcc-springboot-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="107" src="https://2.bp.blogspot.com/-xaJgT2wrBP0/WO9enVC-odI/AAAAAAAAA8E/Q815VgMxrnc-IDG5qOgomxysB9ROIm1QwCLcB/s320/pcc-springboot-1.png" width="320" /></a></div><br /><br /><b>More Information</b><br /><br />Pivotal Cloud Cache Docs<br /><a href="http://docs.pivotal.io/p-cloud-cache/index.html">http://docs.pivotal.io/p-cloud-cache/index.html</a><br /><br /><br /><br /><div class="blogger-post-footer">http://feeds.feedburner.com/TheBlasFromPas</div><img src="http://feeds.feedburner.com/~r/blogspot/PEqWE/~4/kgRomIuGp1Y" height="1" width="1" alt=""/> Pas Apicella tag:blogger.com,1999:blog-6527688743456205256.post-5046401239724261847 Thu Apr 13 2017 07:21:00 GMT-0400 (EDT) SQLPro for MSSQL http://dbakevlar.com/2017/04/sqlpro-for-mssql/ <div id="tweetbutton6677" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Fsqlpro-for-mssql%2F&amp;text=RT%20%40DBAKevlar%20%40DBAKevlar%20%3A&amp;related=DBAKevlar:DBA+Kevlar&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Fsqlpro-for-mssql%2F" class="twitter-share-button" style="width:55px;height:22px;background:transparent url('http://dbakevlar.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat 0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><div class="pf-content"><p>I recently switched to a Mac after decades use with PCs. ¬†I loved my Surface Pro 4 and still do, but that I was providing content for those I thought would be on Macs, it seemed like a good idea at the time. ¬†I didn&#8217;t realize at the time I&#8217;d be doing as many SQL Server conferences as Oracle in my next role with the Delphix&#8230; <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p><a href="http://dbakevlar.com/2017/04/sqlpro-for-mssql/tenor/" rel="attachment wp-att-6683"><img class="alignnone wp-image-6683" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/tenor.gif?resize=389%2C244" alt="" data-recalc-dims="1" /></a></p> <p>With this change, I found myself limited to VMs running on my Mac with SQL Server, then I was working with Azure and it seemed like a lot of extra &#8220;weight&#8221; to just have access to a few tools. ¬†I figured I wasn&#8217;t the only one and did some research, locating <a href="https://www.macsqlclient.com/">SQLPro for MSSQL from Hankinsoft</a>. ¬†Its an easy to configure and use,¬†12Mb¬†query interface, (also available from the App Store) that was created for SQL Server users that find themselves on Mac.</p> <p><a href="http://dbakevlar.com/2017/04/sqlpro-for-mssql/screen-shot-2017-04-12-at-1-08-16-pm/" rel="attachment wp-att-6681"><img class="alignnone wp-image-6681" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.08.16-PM.png?resize=514%2C342" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.08.16-PM.png?resize=1024%2C681 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.08.16-PM.png?resize=300%2C199 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.08.16-PM.png?resize=768%2C511 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.08.16-PM.png?w=1200 1200w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.08.16-PM.png?w=1800 1800w" sizes="(max-width: 514px) 100vw, 514px" data-recalc-dims="1" /></a></p> <p>If you&#8217;re using Azure, you simply need to update our firewall rules to allow access for your local IP address and connection to the Azure SQL database is simple after this update, (and will need to be updated each time, if you&#8217;re like me and change locations, (and IP addresses each time.))</p> <p><a href="http://dbakevlar.com/2017/04/sqlpro-for-mssql/screen-shot-2017-04-12-at-1-30-20-pm/" rel="attachment wp-att-6680"><img class="alignnone wp-image-6680" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.30.20-PM.png?resize=436%2C93" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.30.20-PM.png?resize=1024%2C218 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.30.20-PM.png?resize=300%2C64 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.30.20-PM.png?resize=768%2C163 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.30.20-PM.png?w=1118 1118w" sizes="(max-width: 436px) 100vw, 436px" data-recalc-dims="1" /></a></p> <p>You can collect the information for your Azure database from the Azure administration Console, under Database and Overview:</p> <p><a href="http://dbakevlar.com/2017/04/sqlpro-for-mssql/screen-shot-2017-04-12-at-1-28-14-pm/" rel="attachment wp-att-6679"><img class="alignnone wp-image-6679" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.28.14-PM.png?resize=389%2C149" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.28.14-PM.png?resize=1024%2C392 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.28.14-PM.png?resize=300%2C115 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.28.14-PM.png?resize=768%2C294 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.28.14-PM.png?w=1572 1572w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-12-at-1.28.14-PM.png?w=1200 1200w" sizes="(max-width: 389px) 100vw, 389px" data-recalc-dims="1" /></a></p> <p>This offers a very robust, full featured and comparable tool to Oracle&#8217;s SQL Developer for those that want to work with SQL Server databases but are on a Mac. ¬†I didn&#8217;t go into the features, but those, I leave to you right now to discover&#8230; <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p><a href="http://dbakevlar.com/2017/04/sqlpro-for-mssql/sectionsqlpromssql256/" rel="attachment wp-att-6682"><img class="alignnone wp-image-6682" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/SectionSQLProMSSQL256.png?resize=108%2C108" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/SectionSQLProMSSQL256.png?w=256 256w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/SectionSQLProMSSQL256.png?resize=150%2C150 150w" sizes="(max-width: 108px) 100vw, 108px" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <!-- Easy Plugin for AdSense Unfiltered [count: 3 is not less than 3] --></div><br><br><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/ico-tag.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> Tags:&nbsp;&nbsp;<a href="http://dbakevlar.com/tag/sql-server/" rel="tag">SQL Server</a>, <a href="http://dbakevlar.com/tag/sqlpro/" rel="tag">SQLPro</a><br><br><div style="width:100%"><table align="left" width="100%" cellspacing="0" cellpadding="0" bgcolor="#f1f1f1" border="0px;"> <tbody> <tr bgcolor="#ffffff"><td align="center" width="17%" valign="top"> <span class="sb_title">Del.icio.us</span><br> <a href="http://del.icio.us/post?url=http://dbakevlar.com/2017/04/sqlpro-for-mssql/&title=SQLPro for MSSQL"> <img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/delicious.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"> </a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Facebook</span><br> <a href="http://www.facebook.com/share.php?u=http://dbakevlar.com/2017/04/sqlpro-for-mssql/"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/facebook_icon.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">TweetThis</span><br> <a href="http://twitthis.com/twit?url=http://dbakevlar.com/2017/04/sqlpro-for-mssql/&title=SQLPro for MSSQL"><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tweet.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Digg</span><br> <a href="http://digg.com/submit?phase=2&url=http://dbakevlar.com/2017/04/sqlpro-for-mssql/&title=SQLPro for MSSQL"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/digg.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">StumbleUpon</span><br> <a href="http://www.stumbleupon.com/submit?url=http://dbakevlar.com/2017/04/sqlpro-for-mssql/&title=SQLPro for MSSQL"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/stumble.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td></tr> </tbody></table></div><br><div style="clear:both"></div><div style="background:#EEEEEE; padding:0px 0px 0px 15px; margin:10px 0px 0px 0px;"><div style="padding:5px 0px 5px 0px;"><b>Comments:</b>&nbsp;&nbsp;<a href="http://dbakevlar.com/2017/04/sqlpro-for-mssql/#respond">0 (Zero), Be the first to leave a reply!</a></div><br><div style="clear:both"></div><div style="padding:13px 0px 5px 0px;"><span style="border-bottom:1px dashed #003399;padding-bottom:4px;"><strong>You might be interested in this:</strong></span>&nbsp;&nbsp;<br><ul style="margin:0; padding:0; padding-top:10px; padding-bottom:5px;"><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2017/01/working-aws-host-dba/" >Working on an AWS Host as a DBA</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2011/06/round-robin-and-parallel-forced-to-serial/" >Round Robin and Parallel Forced to Serial</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2017/03/managing-inbound-traffic-aws-instance/" >Managing Inbound Traffic on an AWS Instance</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2016/05/em13c-monitoring-non-oracle-databases/" >EM13c Monitoring Non-Oracle Databases</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2017/03/delphix-company-kick-off/" >Delphix Company Kick Off</a></li></ul></div></div><hr style="color:#EBEBEB" /><small>Copyright ¬©¬†<a href="http://dbakevlar.com">DBA Kevlar</a> [<a href="http://dbakevlar.com/2017/04/sqlpro-for-mssql/">SQLPro for MSSQL</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/04/sqlpro-for-mssql/">SQLPro for MSSQL</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6677 Wed Apr 12 2017 15:52:54 GMT-0400 (EDT) Oracle SQL Developer v4.2 Is Now Available http://www.thatjeffsmith.com/archive/2017/04/oracle-sql-developer-v4-2-is-now-available/ <p>Today is the day! We have new releases of both SQL Developer and SQL Developer Data Modeler.</p> <p><a href="http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2010/11/download.jpg" alt="click here for SQLDev 4.2" width="201" height="251" class="alignleft size-full wp-image-1037" /></a></p> <p>I&#8217;ve been talking about v4.2 tweaks and enhancements for awhile now, and <a href="http://www.thatjeffsmith.com/archive/tag/4-2/" target="_blank">here&#8217;s the full list</a> if you want to go back and review. </p> <p>I&#8217;d like to share a few highlights though.</p> <p>But first, FULL STOP. Go click that big button to the top and left.</p> <p>Ok, let&#8217;s continue.</p> <h3>Formatter</h3> <p>I&#8217;d like to thanks the entire community for all the feedback, especially those of you who provided test code to exercise the new formatter. We made a few changes since the Early Adopter 2 update &#8211; tons of bug fixes, and tweaked the options a bit more based on your feedback.</p> <p>With 4.2 now live in production, if our parser (and accordingly our formatter) doesn&#8217;t understand your code, we just won&#8217;t format it. In the EA&#8217;s we printed comments that showed the code bits we didn&#8217;t <em>understand</em>. For v4.2 production you should just see the parser &#8216;squiggle&#8217; indicating where the code isn&#8217;t being interpreted correctly. Please share your code samples with MOS and the <a href="https://community.oracle.com/community/database/developer-tools/sql_developer">community</a> if you think that&#8217;s a bug. </p> <div id="attachment_6119" style="width: 1097px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/4.2-formatter1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/4.2-formatter1.png" alt="" width="1087" height="828" class="size-full wp-image-6119" /></a><p class="wp-caption-text">Make your code, pretty.</p></div> <p>Some things of note:</p> <ul> <li>The preferences have moved AND changed from version 4.1. They&#8217;re now under the Code Editor page, and should also be simpler to understand now.</li> <li>There&#8217;s a &#8216;simple&#8217; mode, and advanced mode, and an uber-expert mode.</li> <li>In advanced mode, you can format your code by hand, paste it into the preferences, and we&#8217;ll auto-detect how you want your code to look going forward.</li> <li>In uber-expert mode, you can tell the formatter exactly what to do to your code. Our <a href="https://vadimtropashko.wordpress.com/2017/01/03/custom-formatting-in-sqldev-4-2/" target="_blank">developer Vadim has a couple of blog posts showing how to do this with examples</a>.</li> </ul> <div id="attachment_5942" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2016/12/format_by_example.gif"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2016/12/format_by_example.gif" alt="formatter preferences in oracle sql developer" width="1024" height="628" class="size-full wp-image-5942" /></a><p class="wp-caption-text">Type code, as the formatter sees &#8216;stuff&#8217; it changes the formatting options &#8211; these are highlighted in Green so you can see what&#8217;s changed.</p></div> <h3>Instance Viewer</h3> <p>Not a new feature &#8211; we first introduced the Instance Viewer in version 4.1. But we now offer a &#8216;Top SQL&#8217; report. See your expensive queries, and drill down into them to see what&#8217;s going on or fix them.</p> <div id="attachment_5814" style="width: 1290px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2016/10/topsql.gif"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2016/10/topsql.gif" alt="sql developer top sql animated gif" width="1280" height="720" class="size-full wp-image-5814" /></a><p class="wp-caption-text">Pretty colors, plus some interesting bits of data.</p></div> <p>The licensing prompts on the drill down report let&#8217;s you know that the SQL Tuning Advisor and Run time history reports require the tuning and diagnostic packs, respectively. If you don&#8217;t click on those reports, then there&#8217;s nothing to worry about.</p> <p>Everything the Instance Viewer hits on the main panel is of the &#8216;no additional cost&#8217; data dictionary views category. </p> <h3>Easy Peasy Password Resets</h3> <p>No more requiring an Oracle Client to change your database passwords when you&#8217;re not already connected. Maybe the most compelling reason to upgrade your end users. </p> <p>More details <a href="http://www.thatjeffsmith.com/archive/2017/01/password-resets-no-longer-require-a-thick-connection-oracle-client-in-sql-developer/" target="_blank">here</a>. </p> <div id="attachment_5950" style="width: 645px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/01/password_reset-122-2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/01/password_reset-122-2.png" alt="right click connection to reset password in oracle sql developer" width="635" height="747" class="size-full wp-image-5950" /></a><p class="wp-caption-text">Yup, this one.</p></div> <h3>12c Release Two Enhancements</h3> <p>We support big-ole object names now.<br /> <div id="attachment_6120" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/long-table-names.jpg"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/long-table-names.jpg" alt="" width="1024" height="530" class="size-full wp-image-6120" /></a><p class="wp-caption-text">You CAN do this. Not sure you SHOULD do this though.</p></div> <p>And you can create <a href="http://www.thatjeffsmith.com/archive/2017/03/oracle-database-12c-release-2-analytic-views-sql-developer/" target="_blank">Analytic Views</a> too!</p> <p>And the Multitenant option got a lot of upgrades. Among them, Application Containers. We support those too.<br /> <div id="attachment_6121" style="width: 576px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/app-container12.jpg"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/app-container12.jpg" alt="" width="566" height="695" class="size-full wp-image-6121" /></a><p class="wp-caption-text">Go to the DBA panel for your CDB.</p></div> <p>New to 12cR2? Did you know our <a href="http://www.thatjeffsmith.com/archive/2017/03/oracle-database-12c-release-2-is-now-available-and-so-is-our-new-virtualbox-appliance/" target="_blank">VirtualBox VM was upgraded to 12.2</a>? Also has APEX 5.1 and ORDS 309 for ya.</p> <h3>Speaking of ORDS&#8230;</h3> <p>You can now manage your RESTful Services directly in the database connection tree! This is much easier than setting up your ORDS Dev user connection. You&#8217;ll see the new REST item in the tree, and I talk about this <a href="http://www.thatjeffsmith.com/archive/2017/01/working-with-restful-services-blobs-and-media-types/" target="_blank">here</a>. </p> <div id="attachment_5984" style="width: 831px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/01/mime1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/01/mime1.png" alt="oracle rest data services modules" width="821" height="559" class="size-full wp-image-5984" /></a><p class="wp-caption-text">Note the &#8216;REST Data Services&#8217; item on the tree.</p></div> <h3>And the Modeler!</h3> <p>I think the biggest two changes of note are the ability to include your diagrams in your HTML and PDF reports AND the ability to now store your repository in GIT.</p> <p>On the diagrams, you can ask to include them in your reports AND you can just directly print them to HTML/SVG.</p> <div id="attachment_6122" style="width: 1193px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/42-diagram-html1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/42-diagram-html1.png" alt="" width="1183" height="790" class="size-full wp-image-6122" /></a><p class="wp-caption-text">File..Print Digram&#8230;</p></div> <p>And we get..</p> <div id="attachment_6123" style="width: 1127px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/42-diagram-html2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/04/42-diagram-html2.png" alt="sql developer data modeler diagram html" width="1117" height="484" class="size-full wp-image-6123" /></a><p class="wp-caption-text">WYSIWYG!</p></div> <h3>Et cetera and potpourii</h3> <p>This marks the end of the SQL Developer version 4.X releases. We&#8217;re moving towards a quarterly release schedule to synchronize up with our Database Cloud Services updates. So our next version will start with a 17 &#8211; for 2017, then quarter (1,2,3,4), then week.</p> <p>This release also ships with the fewest known number of bugs&#8230;ever&#8230;for a SQL Developer release. We hate bugs. So we tried to <a href="https://www.youtube.com/watch?v=aAITxlCsj4Y" target="_blank">kill &#8217;em all</a>. I&#8217;m sure you&#8217;ll find some more. Let us know. We&#8217;ll be able to release updates more frequently, getting you bug fixes that much faster.</p> <p>Enjoy!</p> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6118 Wed Apr 12 2017 12:28:34 GMT-0400 (EDT) Kscope17 Database Track Session Highlights ‚Äď Galo Balda http://www.odtug.com/p/bl/et/blogaid=705&source=1 Galo Balda, Database Track Lead for ODTUG Kscope17, shares his top 5 Database Track Sessions¬†with reasons why they are his "don't miss sessions" at Kscope17. ODTUG http://www.odtug.com/p/bl/et/blogaid=705&source=1 Wed Apr 12 2017 10:01:50 GMT-0400 (EDT) Create an Oracle Container Cloud Service http://dbaontap.com/2017/04/12/create-oracle-container-cloud-service/ <p>Create an Oracle Container Cloud Service &#160; &#160; A few weeks ago I told you I bit the bullet and signed up for my own Oracle Cloud Service Account. A month ago, I wrote an article about provisioning an Oracle Cloud Database Service. Recently I&#8217;ve been able to look at Docker and container technology, so ...</p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/04/12/create-oracle-container-cloud-service/">Create an Oracle Container Cloud Service</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">dbaonTap</a>.</p> DB http://dbaontap.com/?p=1231 Wed Apr 12 2017 01:20:29 GMT-0400 (EDT) Oracle IOTs against SQL Server Clustered Indexes http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/ <div id="tweetbutton6650" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Foracle-iots-sql-server-clustered-indexes%2F&amp;text=RT%20%40DBAKevlar%20%40DBAKevlar%20%3A&amp;related=DBAKevlar:DBA+Kevlar&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Foracliots-sql-server-clustered-indexes%2F" class="twitter-share-button" style="width:55px;height:22px;background:transparent url('http://dbakevlar.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat 0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><div class="pf-content"><p>I&#8217;m itching to dig more into the SQL Server 2016 optimizer enhancements, but I&#8217;m going to complete my comparison of <a href="http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/">indices between the two platforms</a> before I get myself into further trouble with my favorite area of database technology.</p> <p><a href="http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/his-feelings-you-would-leave-him-completely-distracted/" rel="attachment wp-att-6651"><img class="alignnone wp-image-6651" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/His-feelings-you-would-leave-him-completely-distracted.gif?resize=403%2C208" alt="" data-recalc-dims="1" /></a>&lt;&#8211;This is sooo me.</p> <h3>Index Organized Tables</h3> <p>Index Organized Tables, (IOT) are just another variation of a primary b-tree index, but unlike a standard table with an index simply enforcing uniqueness, the index IS the table. ¬†The data is arranged in order to improve performance and¬†in a clustered primary key state.</p> <p>This is the closest to a clustered index in SQL Server that Oracle will ever get, so it makes sense that a comparison in performance and fragmentation is the next step¬†after I&#8217;ve performed¬†standard index and primary key index comparisons to Oracle.</p> <p>Let&#8217;s create a new copy of our Oracle objects, but this time, update¬†to an Index Organized Table:</p> <pre>CREATE TABLE ora_tst_iot( c1 NUMBER, c2 varchar2(255), CREATEDATE timestamp DEFAULT CURRENT_TIMESTAMP, CONSTRAINT pk_ora_iot PRIMARY KEY (c1)) ORGANIZATION INDEX TABLESPACE users PCTTHRESHOLD 20 OVERFLOW TABLESPACE users; </pre> <pre class="p1"><span class="s4">CREATE SEQUENCE C1_iot_SEQ START WITH 1;</span> <span class="s5">CREATE</span> <span class="s5">OR</span><span class="s6"> REPLACE </span><span class="s5">TRIGGER</span><span class="s6"> C1_iot_BIR </span> <span class="s6">BEFORE </span><span class="s5">INSERT</span> <span class="s5">ON</span><span class="s6"> ORA_TST_IOT</span> <span class="s5">FOR</span><span class="s6"> EACH </span><span class="s5">ROW</span> <span class="s6">BEGIN</span> <span class="s6"><span class="Apple-converted-space">¬† </span></span><span class="s5">SELECT</span><span class="s6"> C1_iot_SEQ.NEXTVAL</span> <span class="s6"><span class="Apple-converted-space">¬† </span></span><span class="s5">INTO</span><span class="s6"> <span class="Apple-converted-space">¬† </span>:new.C1</span> <span class="s6"><span class="Apple-converted-space">¬† </span></span><span class="s5">FROM</span><span class="s6"> <span class="Apple-converted-space">¬† DUAL</span>;</span> <span class="s6">END</span><span class="s7">;</span> <span class="s6">/</span></pre> <p>The PCTThreshold can be anywhere between 0-50, but I chose 20 for this example. ¬†I didn&#8217;t add any compression, as C1 is a simple sequence which won&#8217;t have the ability to take advantage of compression and I also added the additional support objects of a sequence and a trigger, just as I did for the previous test on the Oracle table.</p> <h3>First Data Load</h3> <p>Now we&#8217;ll insert the rows from ORA_INDEX_TST into ORA_TST_IOT</p> <pre class="p1"><span class="s1">SQL&gt; insert into ora_tst_iot(c2) select c2 from ora_index_tst;</span> <span class="s1">995830 rows created. Elapsed: 00:00:04:01</span></pre> <p class="p1">There won&#8217;t be any fragmentation in the current table- ¬†it was directly loaded- ¬†no deletes, no updates. ¬†Although it won&#8217;t be shown in the examples, I will collect stats at regular intervals and flush the cache to ensure I&#8217;m not impacted in any of my tests.</p> <pre class="p1"><span class="s1">SQL&gt; ANALYZE INDEX PK_INDEXPS VALIDATE STRUCTURE;</span> <span class="s1">Index analyzed.</span> <span class="s1">Elapsed: 00:00:00.37</span> <span class="s1">SQL&gt; select index_name from dba_indexes</span> <span class="s1"><span class="Apple-converted-space">¬† </span>2<span class="Apple-converted-space">¬† </span>where table_name='ORA_TST_IOT';</span> <span class="s1">INDEX_NAME</span> <span class="s1">------------------------------</span> <span class="s1">PK_ORA_IOT</span></pre> <pre class="p1"><span class="s1">SQL&gt; analyze index pk_ora_iot validate structure;</span> <span class="s1">Index analyzed.</span> <span class="s1">SQL&gt; analyze index pk_ora_iot compute statistics;</span> <span class="s1">Index analyzed.</span> <span class="s1">SQL&gt; SELECT LF_BLKS, LF_BLK_LEN, DEL_LF_ROWS,USED_SPACE, PCT_USED FROM INDEX_STATS where NAME='PK_ORA_IOT';</span> <span class="s1"><span class="Apple-converted-space">¬†¬† ¬† </span>32115 7996 0<span class="Apple-converted-space">¬† </span>224394262 <span class="Apple-converted-space">¬† ¬† </span>88</span></pre> <p class="p1">Well, the table IS THE INDEX. ¬†We collect stats on the table and now let&#8217;s remove some data, rebuild and then see what we can do to this IOT-</p> <pre class="p1"><span class="s1">SQL&gt; select * from ora_tst_iot</span> <span class="s1"><span class="Apple-converted-space">¬† </span>2<span class="Apple-converted-space">¬† </span>where c1=994830;</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>994830</span> <span class="s1">SBTF02LYEQDFGG2522Q3N3EA2N8IV7SML1MU1IMEG2KLZA6SICGLAVGVY2XWADLZSZAHZOJI5BONDL2L</span> <span class="s1">0O4638IK3JQBW7D92V2ZYQBON49NHJHZR12DM3JWJ1SVWXS76RMBBE9OTDUKRZJVLTPIBX5LWVUUO3VU</span> <span class="s1">VWZTXROKFWYD33R4UID7VXT2NG5ZH5IP9TDOQ8G0</span> <span class="s1">10-APR-17 03.09.52.115290 PM</span> <span class="s1">SQL&gt; delete from ora_tst_iot</span> <span class="s1"><span class="Apple-converted-space">¬† </span>2<span class="Apple-converted-space">¬† </span>where c1 &gt;=994820<span class="Apple-converted-space">¬† ¬† ¬† ¬† ¬† ¬†</span></span> <span class="s1"><span class="Apple-converted-space">¬† </span>3<span class="Apple-converted-space">¬† </span>and c1 &lt;=994830;</span> <span class="s1">11 rows deleted.</span> <span class="s1">SQL&gt; commit;</span></pre> <p class="p1">Now we see what the data originally looked like- ¬†C2 is a large column data that was consuming significant space.</p> <p class="p1">What if we now disable our trigger for our sequence and reinsert the rows with smaller values for c2, rebuild and then update with larger values again?</p> <pre class="p1">ALTER TRIGGER C1_IOT_BIR DISABLE; INSERT INTO ORA_TST_IOT(C1,C2) VALUES (994820, 'A'); INSERT INTO ORA_TST_IOT(C1,C2) VALUES (994821, 'B'); INSERT INTO ORA_TST_IOT(C1,C2) VALUES (994822, 'C'); INSERT INTO ORA_TST_IOT(C1,C2)¬†VALUES (994823, 'D'); INSERT INTO ORA_TST_IOT(C1,C2)¬†VALUES (994824, 'E'); INSERT INTO ORA_TST_IOT(C1,C2)¬†VALUES (994825, 'F'); INSERT INTO ORA_TST_IOT(C1,C2)¬†VALUES (994826, 'G'); INSERT INTO ORA_TST_IOT(C1,C2)¬†VALUES (994827, 'H');</pre> <p>so on and so forth till we reach 994830&#8230;</p> <p>COMMIT and then let&#8217;s rebuild our table&#8230;</p> <h2>Rebuild or Move</h2> <pre>ALTER TABLE ORA_IOT_TST REBUILD;</pre> <p>What happens to the table, (IOT) when we&#8217;ve issued this command? ¬†It&#8217;s moving all the rows back to fill up each block up to the pct free. ¬†For an IOT, we can&#8217;t simply rebuild the index, as the index IS THE TABLE.</p> <p><a href="http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/screen-shot-2017-04-10-at-2-09-43-pm/" rel="attachment wp-att-6654"><img class="alignnone wp-image-6654" src="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-10-at-2.09.43-PM.png?resize=328%2C209" alt="" srcset="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-10-at-2.09.43-PM.png?w=956 956w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-10-at-2.09.43-PM.png?resize=300%2C191 300w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/04/Screen-Shot-2017-04-10-at-2.09.43-PM.png?resize=768%2C490 768w" sizes="(max-width: 328px) 100vw, 328px" data-recalc-dims="1" /></a></p> <p>Now we&#8217;ve re-organized our IOT so the blocks are only taking up the space that it would have when it was first inserted into. ¬†So let&#8217;s see what happens now that we issue an UPDATE to those rows-</p> <pre class="p1"><span class="s1">SQL&gt; update ora_tst_iot set c2=dbms_random.string('B',200)</span> <span class="s1"><span class="Apple-converted-space">¬† </span>2<span class="Apple-converted-space">¬† </span>where c1 &gt;=994820</span> <span class="s1"><span class="Apple-converted-space">¬† </span>3<span class="Apple-converted-space">¬† </span>and c1 &lt;=994830;</span> 11 rows updated.</pre> <p>So how vulnerable are IOTs to different storage issues?</p> <h3>Chained Rows</h3> <p>Chained Rows after updating, moving data and then updating to larger data values than the first with 10% free on each block?</p> <p>Just 11 rows shows the pressure:</p> <pre class="p1"><span class="s1">SQL&gt; SELECT 'Chained or Migrated Rows = '||value</span> <span class="s1"><span class="Apple-converted-space">¬†</span>FROM v$sysstat</span> <span class="s1"> WHERE name = 'table fetch continued row';<span class="Apple-converted-space">¬†¬†</span></span> <span class="s1">Chained or Migrated Rows = 73730</span></pre> <h2>Data Unload</h2> <p>Let&#8217;s delete and update more rows using DML like the following:</p> <pre class="p1"><span class="s1">SQL&gt; delete from ora_tst_iot</span> <span class="s1"><span class="Apple-converted-space">¬† </span>2<span class="Apple-converted-space">¬† </span>where c2 like '%300%';</span> <span class="s1">4193 rows deleted.</span> </pre> <p>Insert rows for 300 with varying degree of lengths, delete more, rinse and repeat and update and delete&#8230;</p> <p>So what has this done to our table as we insert, update, delete and then insert again?</p> <pre class="p1"><span class="s1">SQL&gt; SELECT table_name, iot_type, iot_name FROM USER_TABLES</span> <span class="s1"><span class="Apple-converted-space"> ¬† ¬† </span>WHERE iot_type IS NOT NULL;<span class="Apple-converted-space">¬† </span>2¬†</span> <span class="s1">TABLE_NAME <span class="Apple-converted-space">¬† ¬† ¬† </span>IOT_TYPE <span class="Apple-converted-space">¬† ¬† </span>IOT_NAME</span> <span class="s1">------------------------------ ------------ ------------------------------</span> <span class="s1">SYS_IOT_OVER_88595 <span class="Apple-converted-space">¬† ¬† ¬† </span>IOT_OVERFLOW ORA_TST_IOT</span> <span class="s1">ORA_TST_IOT <span class="Apple-converted-space">¬† ¬† ¬† </span>IOT</span></pre> <p class="p1">This is where a clustered index and an IOT is very different. ¬†There is a secondary management object involved when there is overflow. ¬†If you look up at my creation, yes, I chose to create an overflow. ¬†Even if I drop the IOT properly, the overflow table will go into the recycle bin, (unless I&#8217;ve configured the database without it.)</p> <pre class="p1"><span class="s1">SQL&gt; select index_name from dba_indexes</span> <span class="s1"><span class="Apple-converted-space">¬† </span>2<span class="Apple-converted-space">¬† </span>where table_name='ORA_TST_IOT';</span> <span class="s1">INDEX_NAME</span> <span class="s1">------------------------------</span> <span class="s1">PK_ORA_IOT</span> <span class="s1">SQL&gt; analyze index pk_ora_iot validate structure;</span> <span class="s1">Index analyzed.</span> <span class="s1">SQL&gt; select blocks, height, br_blks, lf_blks from index_stats;</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>BLOCKS <span class="Apple-converted-space">¬† ¬† </span>HEIGHT BR_BLKS<span class="Apple-converted-space">¬† ¬† </span>LF_BLKS</span> <span class="s1">---------- ---------- ---------- ----------</span> <span class="s1"><span class="Apple-converted-space">¬†¬† ¬† </span>32768 <span class="Apple-converted-space">¬† ¬† </span>3 <span class="Apple-converted-space">¬† ¬† ¬† </span>45<span class="Apple-converted-space">¬† ¬† ¬† </span>32115</span></pre> <p class="p1">We can see, for the blocks, the rows per leaf blocks aren&#8217;t too many- ¬†this is a new table without a lot of DML, but we still see that with the current configuration, there aren&#8217;t a lot of rows returned per leaf block.</p> <p class="p1">When we select from the IOT, the index is in full use and we can see that with the proper pct free/pct used, the index is still in pretty good shape:</p> <pre class="p1"><span class="s1">SQL&gt; select * from table(dbms_xplan.display_awr('fbhfmn88tq99z'));</span> <span class="s1">select c1, c2, createdate from ora_tst_iot</span> <span class="s1">Plan hash value: 3208808379</span> <span class="s1">--------------------------------------------------------------------------------</span> <span class="s1">| Id<span class="Apple-converted-space">¬† </span>| Operation <span class="Apple-converted-space">¬† ¬† </span>| Name <span class="Apple-converted-space">¬† </span>| Rows<span class="Apple-converted-space">¬† </span>| Bytes | Cost (%CPU)| Time</span> <span class="s1">PLAN_TABLE_OUTPUT</span> <span class="s1">--------------------------------------------------------------------------------</span><span class="s1">--------------------------------------------------------------------------------</span> <span class="s1">| <span class="Apple-converted-space">¬† </span>0 | SELECT STATEMENT <span class="Apple-converted-space">¬† ¬† </span>| <span class="Apple-converted-space">¬† </span>| <span class="Apple-converted-space">¬† </span>| <span class="Apple-converted-space">¬† </span>|<span class="Apple-converted-space">¬† </span>8709 (100)|</span> <span class="s1">| <span class="Apple-converted-space">¬† </span>1 |<span class="Apple-converted-space">¬† </span>INDEX FAST FULL SCAN| PK_ORA_IOT | <span class="Apple-converted-space">¬† </span>995K| <span class="Apple-converted-space">¬† </span>206M|<span class="Apple-converted-space">¬† </span>8709 <span class="Apple-converted-space">¬† </span>(1)| 00:01:4</span> <span class="s1">5 |</span> <span class="s1">13 rows selected. </span></pre> <pre class="p1"><span class="s1">SQL&gt; analyze index pk_ora_iot validate structure;</span> <span class="s1">Index analyzed.</span> <span class="s1">SQL&gt; SELECT blocks, height, br_blks, lf_blks FROM index_stats;</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>BLOCKS <span class="Apple-converted-space">¬† ¬† </span>HEIGHT BR_BLKS<span class="Apple-converted-space">¬† ¬† </span>LF_BLKS</span> <span class="s1">---------- ---------- ---------- ----------</span> <span class="s1"><span class="Apple-converted-space">¬†¬† ¬† </span>32768 <span class="Apple-converted-space">¬† ¬† </span>3 <span class="Apple-converted-space">¬† ¬† ¬† </span>45<span class="Apple-converted-space">¬† ¬† ¬† </span>32058</span> <span class="s1">SQL&gt; select pct_used from index_stats;</span> <span class="s1"><span class="Apple-converted-space">¬† </span>PCT_USED</span> <span class="s1">----------</span> <span class="s1"> 88</span></pre> <h2 class="p1">I Did a Bad</h2> <p class="p1">So now what happens, if like our original test, we shrink down the percentage of what can be used and reorganize, (<em>and please don&#8217;t do this in production&#8230;or test&#8230;.or dev&#8230;.or ever! <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></em>)?</p> <pre class="p1"><span class="s1">SQL&gt; alter table ora_tst_iot move pctfree 90;</span> <span class="s1">Table altered.</span> <span class="s1">SQL&gt; analyze index pk_ora_iot validate structure;</span> <span class="s1">Index analyzed.</span> <span class="s1">SQL&gt; SELECT blocks, height, br_blks, lf_blks FROM index_stats;</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>BLOCKS <span class="Apple-converted-space">¬† ¬† </span>HEIGHT BR_BLKS<span class="Apple-converted-space">¬† ¬† </span>LF_BLKS</span> <span class="s1">---------- ---------- ---------- ----------</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>172928 <span class="Apple-converted-space">¬† ¬† </span>3 <span class="Apple-converted-space">¬† ¬† </span>228 <span class="Apple-converted-space">¬† ¬† </span>165630</span></pre> <p>Well, that&#8217;s a few more leaf blocks, eh? ¬†Insert after enabling trigger again-</p> <pre class="p1"><span class="s1">SQL&gt; BEGIN</span> <span class="s1"> FOR i in 1..1000000 LOOP</span> <span class="s1"> INSERT INTO ORA_TST_IOT(c2) VALUES(i);</span> <span class="s1"> END LOOP;</span> <span class="s1"> COMMIT;</span> <span class="s1">END;</span> <span class="s1"><span class="Apple-converted-space">¬†</span>/</span></pre> <p>Now we have our elapsed time for Azure inserts of 1 million records with 100% and 10%. ¬†Let&#8217;s compare it to our IOT. ¬†The IOT move command to fill the blocks to 100% was quite fast. ¬†Of course, the reverse, only allowing for 10%, (90% free) took F.O.R.E.V.E.R&#8230;, (OK, it sure felt like it&#8230;why didn&#8217;t I just truncate it? ¬†Oh, yeah, I wanted it to be a real test, not simply an easy test..)</p> <p><em>Note: For this test, we&#8217;ll rebuild after updating the pctfree each time.</em></p> <p>&nbsp;</p> <p><b>10% Fill Factor in SQL Server and 1 million insert: Elapsed time: 23 minutes, 18 seconds</b></p> <p><span style="color: #0000ff;"><strong>90% PCTFree in Oracle and 1 million insert: ¬†7 min, 12 seconds</strong></span></p> <p><b>100% Fill Factor in SQL Server and 1 million insert: Elapsed Time: 4 minutes, 43 seconds</b></p> <p><strong><span style="color: #0000ff;">0% PCTFree in Oracle and 1 million insert: 1 min, 8 seconds</span></strong></p> <p><strong><span style="color: #0000ff;">REBUILD of the Oracle IOT to make it 90% free in each block? ¬†Elapsed Time:</span> ¬†<span style="color: #ff0000;">8 hrs, 21 minutes, 12 seconds</span></strong><span style="color: #ff0000;">¬†</span></p> <p>&#8230;along with four backups of archive logs it generated that fillled up the archive dest&#8230; <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ¬†Now the AWS Trial is to be used to test out the Delphix product, not to test out index performance in a high insert/delete/update scenario, so I&#8217;ve been asking for some of these challenges, but it was still a great way to build this out quickly and then compare.</p> <p>&nbsp;</p> <h3>Results</h3> <p class="p1">In this test, this was the overall results:</p> <ol> <li class="p1">Less overhead during transactional processing when it comes to inserts, updates and deletes to the IOT.</li> <li class="p1">Improved performance on any selects that require the data to be sorted in sequential order.</li> <li class="p1">Similar performance to SQL Server clustered indexes on complex queries and less sort temp usage.</li> <li class="p1">Limited use case than SQL Server clustered indexes, as these are quite common and IOTs are less used in the Oracle space.</li> <li class="p1">More maintenance upkeep as we will need to reorganize the IOT if its used with processing that includes a lot of inserts, updates and deletes.</li> <li class="p1">DBCC rebuilds of a clustered index uses less resources and doesn&#8217;t impact the transaction log as it does Oracle&#8217;s rollback and archive log. ¬†It was easier to build the table with a high pct free storage configuration and then do an insert of the data, then drop the old table than to do an &#8220;alter move&#8221; command.</li> </ol> <p><strong>Now there&#8217;s more to do comparisons on, so I&#8217;m going to dig in more on the SQL Server side, but here&#8217;s to Oracle Index Organized Tables, (IOTs)!</strong></p> <!-- Easy Plugin for AdSense Unfiltered [count: 3 is not less than 3] --></div><br><br><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/ico-tag.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> Tags:&nbsp;&nbsp;<a href="http://dbakevlar.com/tag/index-wars/" rel="tag">Index Wars</a>, <a href="http://dbakevlar.com/tag/iot/" rel="tag">IOT</a>, <a href="http://dbakevlar.com/tag/oracle/" rel="tag">oracle</a>, <a href="http://dbakevlar.com/tag/sql-server/" rel="tag">SQL Server</a><br><br><div style="width:100%"><table align="left" width="100%" cellspacing="0" cellpadding="0" bgcolor="#f1f1f1" border="0px;"> <tbody> <tr bgcolor="#ffffff"><td align="center" width="17%" valign="top"> <span class="sb_title">Del.icio.us</span><br> <a href="http://del.icio.us/post?url=http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/&title=Oracle IOTs against SQL Server Clustered Indexes"> <img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/delicious.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"> </a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Facebook</span><br> <a href="http://www.facebook.com/share.php?u=http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/facebook_icon.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">TweetThis</span><br> <a href="http://twitthis.com/twit?url=http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/&title=Oracle IOTs against SQL Server Clustered Indexes"><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tweet.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Digg</span><br> <a href="http://digg.com/submit?phase=2&url=http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/&title=Oracle IOTs against SQL Server Clustered Indexes"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/digg.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">StumbleUpon</span><br> <a href="http://www.stumbleupon.com/submit?url=http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/&title=Oracle IOTs against SQL Server Clustered Indexes"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/stumble.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td></tr> </tbody></table></div><br><div style="clear:both"></div><div style="background:#EEEEEE; padding:0px 0px 0px 15px; margin:10px 0px 0px 0px;"><div style="padding:5px 0px 5px 0px;"><b>Comments:</b>&nbsp;&nbsp;<a href="http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/#respond">0 (Zero), Be the first to leave a reply!</a></div><br><div style="clear:both"></div><div style="padding:13px 0px 5px 0px;"><span style="border-bottom:1px dashed #003399;padding-bottom:4px;"><strong>You might be interested in this:</strong></span>&nbsp;&nbsp;<br><ul style="margin:0; padding:0; padding-top:10px; padding-bottom:5px;"><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2016/05/configuration-management-searches-in-em13c/" >Configuration Management Searches in EM13c</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2015/07/the-queen-of-social-media-mean/" >The Queen of Social Media Mean</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2015/09/updating-the-raspberry-pi-vbox-image/" >Updating the Raspberry Pi Vbox Image</a></><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2014/12/em12c-and-the-optimizer-statistics-console/" >EM12c and the Optimizer Statistics Console</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2013/10/abstracts-reviews-and-conferences-oh-my/" >Abstracts, Reviews and Conferences, Oh My!</a></li></ul></div></div><hr style="color:#EBEBEB" /><small>Copyright ¬©¬†<a href="http://dbakevlar.com">DBA Kevlar</a> [<a href="http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/">Oracle IOTs against SQL Server Clustered Indexes</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/04/oracle-iots-sql-server-clustered-indexes/">Oracle IOTs against SQL Server Clustered Indexes</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6650 Tue Apr 11 2017 21:30:16 GMT-0400 (EDT) Oracle Application Express (APEX) 5.1.1 : Live on Production Systems https://oracle-base.com/blog/2017/04/11/oracle-application-express-apex-5-1-1-live-on-production-systems/ <p><img class="size-full wp-image-5013 alignleft" src="https://oracle-base.com/blog/wp-content/uploads/2015/05/apex.jpg" alt="" width="108" height="105" />I wrote a post¬†a couple of weeks ago about our roll-out of <a href="https://oracle-base.com/blog/2017/03/29/oracle-application-express-apex-5-1-1/">APEX 5.1.1 to our Dev and Test systems</a>. In that post I said we¬†would probably go live pretty quickly. I intended to write a quick post to say when it happened,¬†then promptly forgot&#8230; <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Just a quick note to say there were no issues found in our Dev and Test systems, so we quickly moved it out to production.¬†I think it was less than a week¬†from start to finish.</p> <p>As always I feel the need to point out that our usage of APEX is quite basic. We don&#8217;t have loads of applications and the ones we have aren&#8217;t¬†super complex, so it&#8217;s pretty easy for us to quickly get some confidence in a new release. I&#8217;m not suggesting heavy APEX users should be quite as rapid as us. That said, I think it&#8217;s nice to let people know that this stuff does do what it&#8217;s meant to. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>We now have 5.1.1 in all our production systems. Happy days!</p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/11/oracle-application-express-apex-5-1-1-live-on-production-systems/">Oracle Application Express (APEX) 5.1.1 : Live on Production Systems</a> was first posted on April 11, 2017 at 4:33 pm.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7075 Tue Apr 11 2017 11:33:12 GMT-0400 (EDT) 12cR1 RAC Posts -- 8h : DataGuard Switchover (RAC to nonRAC) Messages http://hemantoracledba.blogspot.com/2017/04/12cr1-rac-posts-8h-dataguard-switchover.html <div dir="ltr" style="text-align: left;" trbidi="on"><a href="https://hemantoracledba.blogspot.sg/2017/04/12cr1-rac-posts-8g-switchover-from-rac.html" target="_blank">Yesterday</a>, I demonstrated a DataGuard <a href="https://hemantoracledba.blogspot.sg/2017/04/12cr1-rac-posts-8g-switchover-from-rac.html" target="_blank">Switchover</a> from a 2node RAC(ASM) database to a SingleInstance(FileSystem) Database.<br /><br />These are the messages in the alert log and drc log files during the Switchover (Messages from the start of the Switchover to the subsequent restart and shutdown of all three instances.<br /><br /><b>First on node 1 which is running database instance RAC1</b>. The drcRAC1.log and alert_RAC1.log :<br /><br /><pre>04/10/2017 23:30:58<br />SWITCHOVER TO stby<br />Switchover to physical standby cannot be initiated from primary database; redirecting to the switchover target stby<br /> using connect identifier: stby<br />04/10/2017 23:31:00<br />SWITCHOVER TO stby<br />04/10/2017 23:31:02<br />Notifying Oracle Clusterware to prepare primary database for switchover<br />04/10/2017 23:31:19<br />Target standby stby did not have Active Data Guard enabled at the time of switchover.<br />To maintain Active Data Guard license compliance Block Change Tracking will be disabled.<br />04/10/2017 23:31:20<br />Notifying Clusterware to restart this instance for Switchover<br />04/10/2017 23:31:23<br />Shutting down instance after CTL_SWITCH<br />04/10/2017 23:33:20<br />&gt;&gt; Starting Data Guard Broker bootstrap &lt;&lt;<br />Broker Configuration File Locations:<br /> dg_broker_config_file1 = "+DATA/RAC/dgbroker1.dat"<br /> dg_broker_config_file2 = "+FRA/RAC/dgbroker2.dat"<br />2017-04-10 23:33:20.858 DMON: Attach state object<br />2017-04-10 23:33:21.407 DMON: rfafoGetLocks reinitializing dubious PMYSHUT lock value block contents: sts=0, flags=0x0, spare1=0x0, spare2=0x0, cksm=0x0, rndm=0x0<br />2017-04-10 23:33:21.407 DMON: Broker state reconciled, version = 0, state = 00000000<br />2017-04-10 23:33:21.407 DMON: Broker State Initialized<br />2017-04-10 23:33:21.407 Version = 1<br />2017-04-10 23:33:21.407 State = 00000000<br />2017-04-10 23:33:21.407 DMON: Entered rfm_get_chief_lock() for CTL_BOOTSTRAP, reason 2<br />2017-04-10 23:33:21.422 7fffffff 0 DMON: Entered rfm_get_chief_lock() for CTL_BOOTSTRAP, reason 0<br />2017-04-10 23:33:24.580 7fffffff 0 DMON: start task execution: broker initialization<br />2017-04-10 23:33:24.580 DMON: Boot configuration (0.0.0), loading from "+DATA/RAC/dgbroker1.dat"<br />2017-04-10 23:33:24.856 DMON Registering service RAC_DGB with listener(s)<br />2017-04-10 23:33:24.857 DMON: Executing SQL [ALTER SYSTEM REGISTER]<br />2017-04-10 23:33:24.902 SQL [ALTER SYSTEM REGISTER] Executed successfully<br />04/10/2017 23:33:25<br />Broker Configuration: "rac"<br /> Protection Mode: Maximum Performance<br /> Fast-Start Failover (FSFO): Disabled, flags=0x0, version=0<br /> Primary Database: stby (0x02010000)<br />Physical standby bootstrap requires Oracle Clusterware buildup<br />04/10/2017 23:33:39<br />Notifying Oracle Clusterware to buildup<br />04/10/2017 23:33:41<br />rac version check successfully completed<br />Broker configuration file is current on rac, completing initialization<br />Creating process RSM0<br />04/10/2017 23:42:33<br />Data Guard Broker shutting down<br />Data Guard Broker - notifying primary of shutdown<br />posting shutdown message to primary database 0x02001000<br />RSM0 successfully terminated<br />2017-04-10 23:42:36.437 &gt;&gt; DMON Process Shutdown &lt;&lt;<br /><br /><br /><br />=============================================================================================<br /><br /><br /><br />Mon Apr 10 23:30:59 2017<br />SWITCHOVER VERIFY: Send VERIFY request to switchover target stby<br />SWITCHOVER VERIFY COMPLETE<br />SWITCHOVER VERIFY: Send VERIFY request to switchover target stby<br />SWITCHOVER VERIFY COMPLETE<br />ALTER DATABASE SWITCHOVER TO 'stby'<br />Mon Apr 10 23:31:04 2017<br />Starting switchover [Process ID: 17791]<br />Mon Apr 10 23:31:04 2017<br />ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY [Process Id: 17791] (RAC1)<br />Waiting for target standby to receive all redo<br />Mon Apr 10 23:31:04 2017<br />Waiting for all non-current ORLs to be archived...<br />Mon Apr 10 23:31:04 2017<br />All non-current ORLs have been archived.<br />Mon Apr 10 23:31:04 2017<br />Waiting for all FAL entries to be archived...<br />Mon Apr 10 23:31:04 2017<br />All FAL entries have been archived.<br />Mon Apr 10 23:31:04 2017<br />Waiting for dest_id 2 to become synchronized...<br />Mon Apr 10 23:31:05 2017<br />Active, synchronized Physical Standby switchover target has been identified<br />Preventing updates and queries at the Primary<br />Generating and shipping final logs to target standby<br />Switchover End-Of-Redo Log thread 1 sequence 70 has been fixed<br />Switchover End-Of-Redo Log thread 2 sequence 39 has been fixed<br />Switchover: Primary highest seen SCN set to 0x0.0x3553b3<br />ARCH: Noswitch archival of thread 2, sequence 39<br />ARCH: End-Of-Redo Branch archival of thread 2 sequence 39<br />ARCH: LGWR is actively archiving destination LOG_ARCHIVE_DEST_2<br />ARCH: Standby redo logfile selected for thread 2 sequence 39 for destination LOG_ARCHIVE_DEST_2<br />ARCH: Noswitch archival of thread 1, sequence 70<br />ARCH: End-Of-Redo Branch archival of thread 1 sequence 70<br />ARCH: LGWR is actively archiving destination LOG_ARCHIVE_DEST_2<br />ARCH: Standby redo logfile selected for thread 1 sequence 70 for destination LOG_ARCHIVE_DEST_2<br />ARCH: Archiving is disabled due to current logfile archival<br />Primary will check for some target standby to have received all redo<br />Waiting for target standby to apply all redo<br />Backup controlfile written to trace file /u01/app/oracle/diag/rdbms/rac/RAC1/trace/RAC1_rsm0_17791.trc<br />Converting the primary database to a new standby database<br />Clearing standby activation ID 2519803190 (0x96312536)<br />The primary database controlfile was created using the<br />'MAXLOGFILES 192' clause.<br />There is space for up to 188 standby redo logfiles<br />Use the following SQL commands on the standby database to create<br />standby redo logfiles that match the primary database:<br />ALTER DATABASE ADD STANDBY LOGFILE 'srl1.f' SIZE 52428800;<br />ALTER DATABASE ADD STANDBY LOGFILE 'srl2.f' SIZE 52428800;<br />ALTER DATABASE ADD STANDBY LOGFILE 'srl3.f' SIZE 52428800;<br />ALTER DATABASE ADD STANDBY LOGFILE 'srl4.f' SIZE 52428800;<br />ALTER DATABASE ADD STANDBY LOGFILE 'srl5.f' SIZE 52428800;<br />Archivelog for thread 1 sequence 70 required for standby recovery<br />Archivelog for thread 2 sequence 39 required for standby recovery<br />Offline data file 5 marked as online during convert to standby or switchover to standby.<br />Restore of backup may be required if the file is not physically accessible.<br />Offline data file 7 marked as online during convert to standby or switchover to standby.<br />Restore of backup may be required if the file is not physically accessible.<br />Switchover: Primary controlfile converted to standby controlfile succesfully.<br />Mon Apr 10 23:31:14 2017<br />Reconfiguration started (old inc 4, new inc 6)<br />List of instances (total 1) :<br /> 1<br />Dead instances (total 1) :<br /> 2<br />My inst 1<br />publish big name space - dead or down/up instance detected, invalidate domain 0<br /> Global Resource Directory frozen<br /> * dead instance detected - domain 0 invalid = TRUE<br /> Communication channels reestablished<br /> Master broadcasted resource hash value bitmaps<br /> Non-local Process blocks cleaned out<br />Mon Apr 10 23:31:14 2017<br /> LMS 0: 0 GCS shadows cancelled, 0 closed, 0 Xw survived<br /> Set master node info<br /> Submitted all remote-enqueue requests<br /> Dwn-cvts replayed, VALBLKs dubious<br /> All grantable enqueues granted<br />Mon Apr 10 23:31:14 2017<br /> Post SMON to start 1st pass IR<br />Mon Apr 10 23:31:14 2017<br />Switchover: Complete - Database shutdown required<br />Mon Apr 10 23:31:14 2017<br />Sending request(convert to primary database) to switchover target stby<br />Mon Apr 10 23:31:14 2017<br />minact-scn: Inst 1 is now the master inc#:4 mmon proc-id:17203 status:0x7<br />Mon Apr 10 23:31:14 2017<br />Process (ospid 17189) is suspended due to switchover to physical standby operation.<br />Mon Apr 10 23:31:14 2017<br />minact-scn status: grec-scn:0x0000.00000000 gmin-scn:0x0000.0033ccde gcalc-scn:0x0000.0033ccee<br />minact-scn: master found reconf/inst-rec before recscn scan old-inc#:4 new-inc#:4<br />Mon Apr 10 23:31:14 2017<br /> Submitted all GCS remote-cache requests<br /> Fix write in gcs resources<br />Mon Apr 10 23:31:14 2017<br />Reconfiguration complete (total time 0.6 secs)<br />Mon Apr 10 23:31:19 2017<br />Switchover complete. Database shutdown required<br />Completed: ALTER DATABASE SWITCHOVER TO 'stby'<br />Target standby stby did not have Active Data Guard enabled at the time of switchover.<br />To maintain Active Data Guard license compliance Block Change Tracking will be disabled.<br />Mon Apr 10 23:31:21 2017<br />Errors in file /u01/app/oracle/diag/rdbms/rac/RAC1/trace/RAC1_rfs_6513.trc:<br />ORA-16456: switchover to standby in progress or completed<br />Mon Apr 10 23:31:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/rac/RAC1/trace/RAC1_rfs_6518.trc:<br />ORA-16456: switchover to standby in progress or completed<br />Mon Apr 10 23:31:23 2017<br />Clusterware restarting instance for Data Guard Broker operation; shutting down instance now<br />DMON (ospid: 17306): terminating the instance<br />Mon Apr 10 23:31:24 2017<br />Instance terminated by DMON, pid = 17306<br />Mon Apr 10 23:31:39 2017<br />Starting ORACLE instance (normal) (OS id: 6761)<br />Mon Apr 10 23:31:40 2017<br />CLI notifier numLatches:3 maxDescs:519<br />Mon Apr 10 23:31:41 2017<br />Due to limited space in shared pool (need 6094848 bytes, have 4194112 bytes), limiting Resource Manager entities from 2048 to 32<br />Mon Apr 10 23:31:42 2017<br />**********************************************************************<br />Mon Apr 10 23:31:42 2017<br />Dump of system resources acquired for SHARED GLOBAL AREA (SGA)<br /><br />Mon Apr 10 23:31:42 2017<br /> Per process system memlock (soft) limit = UNLIMITED<br />Mon Apr 10 23:31:42 2017<br /> Expected per process system memlock (soft) limit to lock<br /> SHARED GLOBAL AREA (SGA) into memory: 802M<br />Mon Apr 10 23:31:42 2017<br /> Available system pagesizes:<br /> 4K, 2048K<br />Mon Apr 10 23:31:42 2017<br /> Supported system pagesize(s):<br />Mon Apr 10 23:31:42 2017<br /> PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES ERROR(s)<br />Mon Apr 10 23:31:42 2017<br /> 4K Configured 4 204804 NONE<br />Mon Apr 10 23:31:42 2017<br /> 2048K 0 401 0 NONE<br />Mon Apr 10 23:31:42 2017<br />RECOMMENDATION:<br />Mon Apr 10 23:31:42 2017<br /> 1. For optimal performance, configure system with expected number<br /> of pages for every supported system pagesize prior to the next<br /> instance restart operation.<br />Mon Apr 10 23:31:42 2017<br />**********************************************************************<br />LICENSE_MAX_SESSION = 0<br />LICENSE_SESSIONS_WARNING = 0<br />Initial number of CPU is 2<br />Number of processor cores in the system is 2<br />Number of processor sockets in the system is 1<br />Private Interface 'eth1:1' configured from GPnP for use as a private interconnect.<br /> [name='eth1:1', type=1, ip=169.254.3.70, mac=08-00-27-6f-ef-ba, net=169.254.0.0/16, mask=255.255.0.0, use=haip:cluster_interconnect/62]<br />Public Interface 'eth0' configured from GPnP for use as a public interface.<br /> [name='eth0', type=1, ip=192.168.78.51, mac=08-00-27-44-0e-4c, net=192.168.78.0/24, mask=255.255.255.0, use=public/1]<br />Public Interface 'eth0:1' configured from GPnP for use as a public interface.<br /> [name='eth0:1', type=1, ip=192.168.78.61, mac=08-00-27-44-0e-4c, net=192.168.78.0/24, mask=255.255.255.0, use=public/1]<br />Public Interface 'eth0:4' configured from GPnP for use as a public interface.<br /> [name='eth0:4', type=1, ip=192.168.78.251, mac=08-00-27-44-0e-4c, net=192.168.78.0/24, mask=255.255.255.0, use=public/1]<br />Public Interface 'eth0:5' configured from GPnP for use as a public interface.<br /> [name='eth0:5', type=1, ip=192.168.78.252, mac=08-00-27-44-0e-4c, net=192.168.78.0/24, mask=255.255.255.0, use=public/1]<br />Picked latch-free SCN scheme 3<br />Autotune of undo retention is turned on.<br />LICENSE_MAX_USERS = 0<br />SYS auditing is enabled<br />NOTE: remote asm mode is local (mode 0x1; from cluster type)<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, Real Application Clusters, OLAP, Advanced Analytics<br />and Real Application Testing options.<br />ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1<br />System name: Linux<br />Node name: collabn1.racattack<br />Release: 2.6.39-400.17.1.el6uek.x86_64<br />Version: #1 SMP Fri Feb 22 18:16:18 PST 2013<br />Machine: x86_64<br />Using parameter settings in server-side pfile /u01/app/oracle/product/12.1.0/dbhome_1/dbs/initRAC1.ora<br />System parameters with non-default values:<br /> processes = 300<br /> sga_max_size = 800M<br /> spfile = "+DATA/RAC/spfilerac.ora"<br /> control_files = "+DATA/RAC/CONTROLFILE/current.282.931825275"<br /> control_files = "+FRA/RAC/CONTROLFILE/current.256.931825275"<br /> db_block_size = 8192<br /> db_cache_size = 100M<br /> compatible = "12.1.0.2.0"<br /> log_archive_dest_1 = "location=USE_DB_RECOVERY_FILE_DEST"<br /> log_archive_dest_1 = "valid_for=(ALL_LOGFILES, ALL_ROLES)"<br /> log_archive_dest_2 = "service="stby""<br /> log_archive_dest_2 = "ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="stby" net_timeout=30"<br /> log_archive_dest_2 = "valid_for=(online_logfile,all_roles)"<br /> log_archive_dest_state_2 = "ENABLE"<br /> log_archive_min_succeed_dest= 1<br /> log_archive_trace = 0<br /> log_archive_config = "dg_config=(RAC,stby)"<br /> log_archive_format = "%t_%s_%r.dbf"<br /> log_archive_max_processes= 4<br /> archive_lag_target = 0<br /> cluster_database = TRUE<br /> db_create_file_dest = "+DATA"<br /> db_recovery_file_dest = "+FRA"<br /> db_recovery_file_dest_size= 4785M<br /> standby_file_management = "MANUAL"<br /> thread = 1<br /> undo_tablespace = "UNDOTBS1"<br /> instance_number = 1<br /> remote_login_passwordfile= "EXCLUSIVE"<br /> db_domain = "racattack"<br /> dispatchers = "(PROTOCOL=TCP) (SERVICE=RACXDB)"<br /> audit_file_dest = "/u01/app/oracle/admin/RAC/adump"<br /> audit_trail = "DB"<br /> db_name = "RAC"<br /> open_cursors = 300<br /> dg_broker_start = TRUE<br /> dg_broker_config_file1 = "+DATA/RAC/dgbroker1.dat"<br /> dg_broker_config_file2 = "+FRA/RAC/dgbroker2.dat"<br /> diagnostic_dest = "/u01/app/oracle"<br /> enable_pluggable_database= TRUE<br />Mon Apr 10 23:31:52 2017<br />NOTE: remote asm mode is local (mode 0x1; from cluster type)<br />Mon Apr 10 23:31:52 2017<br />Cluster communication is configured to use the following interface(s) for this instance<br /> 169.254.3.70<br />cluster interconnect IPC version: Oracle UDP/IP (generic)<br />IPC Vendor 1 proto 2<br />Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 3.0<br />Starting background process PMON<br />Mon Apr 10 23:31:53 2017<br />PMON started with pid=2, OS id=6880<br />Starting background process PSP0<br />Starting background process VKTM<br />Mon Apr 10 23:31:53 2017<br />PSP0 started with pid=3, OS id=6882<br />Mon Apr 10 23:31:55 2017<br />VKTM started with pid=4, OS id=6892 at elevated (RT) priority<br />Starting background process GEN0<br />Mon Apr 10 23:31:55 2017<br />VKTM running at (1)millisec precision with DBRM quantum (100)ms<br />Starting background process MMAN<br />Mon Apr 10 23:31:55 2017<br />GEN0 started with pid=5, OS id=6896<br />Mon Apr 10 23:31:55 2017<br />MMAN started with pid=6, OS id=6898<br />Starting background process DIAG<br />Starting background process DBRM<br />Mon Apr 10 23:31:55 2017<br />DIAG started with pid=8, OS id=6910<br />Starting background process VKRM<br />Mon Apr 10 23:31:55 2017<br />DBRM started with pid=9, OS id=6912<br />Starting background process PING<br />Mon Apr 10 23:31:55 2017<br />VKRM started with pid=10, OS id=6914<br />Starting background process ACMS<br />Mon Apr 10 23:31:55 2017<br />PING started with pid=11, OS id=6916<br />Starting background process DIA0<br />Mon Apr 10 23:31:55 2017<br />ACMS started with pid=12, OS id=6918<br />Mon Apr 10 23:31:56 2017<br />DIA0 started with pid=13, OS id=6920<br />Starting background process LMON<br />Mon Apr 10 23:31:56 2017<br />LMON started with pid=14, OS id=6922<br />Starting background process LMD0<br />Starting background process LMS0<br />Mon Apr 10 23:31:56 2017<br />LMD0 started with pid=7, OS id=6929<br />Mon Apr 10 23:31:56 2017<br />* Load Monitor used for high load check<br />* New Low - High Load Threshold Range = [1920 - 2560]<br />Mon Apr 10 23:31:56 2017<br />LMS0 started with pid=15, OS id=6931 at elevated (RT) priority<br />Starting background process RMS0<br />Starting background process LMHB<br />Mon Apr 10 23:31:56 2017<br />RMS0 started with pid=16, OS id=6935<br />Mon Apr 10 23:31:56 2017<br />LMHB started with pid=17, OS id=6937<br />Starting background process LCK1<br />Starting background process DBW0<br />Mon Apr 10 23:31:56 2017<br />LCK1 started with pid=18, OS id=6939<br />Starting background process LGWR<br />Mon Apr 10 23:31:56 2017<br />DBW0 started with pid=19, OS id=6941<br />Starting background process CKPT<br />Mon Apr 10 23:31:56 2017<br />LGWR started with pid=20, OS id=6943<br />Mon Apr 10 23:31:56 2017<br />CKPT started with pid=21, OS id=6945<br />Starting background process SMON<br />Mon Apr 10 23:31:56 2017<br />SMON started with pid=23, OS id=6949<br />Starting background process RECO<br />Starting background process LREG<br />Mon Apr 10 23:31:56 2017<br />RECO started with pid=25, OS id=6953<br />Starting background process PXMN<br />Mon Apr 10 23:31:56 2017<br />LREG started with pid=26, OS id=6955<br />Mon Apr 10 23:31:56 2017<br />PXMN started with pid=27, OS id=6957<br />Starting background process RBAL<br />Mon Apr 10 23:31:56 2017<br />RBAL started with pid=28, OS id=6959<br />Starting background process ASMB<br />Starting background process MMON<br />Mon Apr 10 23:31:56 2017<br />ASMB started with pid=29, OS id=6961<br />Starting background process MMNL<br />Mon Apr 10 23:31:56 2017<br />MMON started with pid=30, OS id=6963<br />Mon Apr 10 23:31:56 2017<br />starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...<br />Mon Apr 10 23:31:56 2017<br />MMNL started with pid=31, OS id=6965<br />starting up 1 shared server(s) ...<br />Mon Apr 10 23:31:57 2017<br />NOTE: ASMB registering with ASM instance as Standard client 0xffffffffffffffff (reg:839035202) (new connection)<br />NOTE: ASMB connected to ASM instance +ASM1 osid: 6971 (Flex mode; client id 0xffffffffffffffff)<br />Mon Apr 10 23:31:58 2017<br />lmon registered with NM - instance number 1 (internal mem no 0)<br />Mon Apr 10 23:31:58 2017<br />NOTE: initiating MARK startup<br />Starting background process MARK<br />Mon Apr 10 23:31:58 2017<br />MARK started with pid=35, OS id=6977<br />Mon Apr 10 23:31:58 2017<br />NOTE: MARK has subscribed<br />Mon Apr 10 23:31:58 2017<br />Reconfiguration started (old inc 0, new inc 2)<br />List of instances (total 1) :<br /> 1<br />My inst 1 (I'm a new instance)<br />Mon Apr 10 23:31:59 2017<br />Using default pga_aggregate_limit of 2048 MB<br />Mon Apr 10 23:32:18 2017<br /> Global Resource Directory frozen<br />* allocate domain 0, invalid = TRUE<br /> Communication channels reestablished<br /> Master broadcasted resource hash value bitmaps<br /> Non-local Process blocks cleaned out<br />Mon Apr 10 23:32:26 2017<br /> LMS 0: 0 GCS shadows cancelled, 0 closed, 0 Xw survived<br /> Set master node info<br /> Submitted all remote-enqueue requests<br /> Dwn-cvts replayed, VALBLKs dubious<br /> All grantable enqueues granted<br />Mon Apr 10 23:32:26 2017<br /> Post SMON to start 1st pass IR<br /> Submitted all GCS remote-cache requests<br /> Fix write in gcs resources<br />Mon Apr 10 23:32:26 2017<br />Reconfiguration complete (total time 27.7 secs)<br />Starting background process LCK0<br />Mon Apr 10 23:32:29 2017<br />LCK0 started with pid=39, OS id=7084<br />Starting background process RSMN<br />Mon Apr 10 23:32:30 2017<br />RSMN started with pid=40, OS id=7094<br />Mon Apr 10 23:32:32 2017<br />Instance started by oraagent<br />Starting background process DMON<br />ORACLE_BASE from environment = /u01/app/oracle<br />Mon Apr 10 23:32:32 2017<br />DMON started with pid=41, OS id=7100<br />Mon Apr 10 23:32:34 2017<br />ALTER SYSTEM SET local_listener=' (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))' SCOPE=MEMORY SID='RAC1';<br />Mon Apr 10 23:32:35 2017<br />ALTER SYSTEM SET remote_listener=' collabn-cluster-scan.racattack:1521' SCOPE=MEMORY SID='RAC1';<br />ALTER DATABASE MOUNT /* db agent *//* {1:46642:1193} */<br />Mon Apr 10 23:32:36 2017<br />This instance was first to mount<br />Mon Apr 10 23:32:38 2017<br />NOTE: ASMB mounting group 1 (DATA)<br />NOTE: Assigning number (1,0) to disk (/dev/asm-disk1)<br />NOTE: Assigning number (1,1) to disk (/dev/asm-disk2)<br />NOTE: Assigning number (1,2) to disk (/dev/asm-disk5)<br />SUCCESS: mounted group 1 (DATA)<br />NOTE: grp 1 disk 0: DATA_0000 path:/dev/asm-disk1<br />NOTE: grp 1 disk 1: DATA_0001 path:/dev/asm-disk2<br />NOTE: grp 1 disk 2: DATA_0002 path:/dev/asm-disk5<br />NOTE: ASMB mounting group 2 (FRA)<br />Mon Apr 10 23:32:39 2017<br />NOTE: dependency between database RAC and diskgroup resource ora.DATA.dg is established<br />Mon Apr 10 23:32:39 2017<br />NOTE: Assigning number (2,0) to disk (/dev/asm-disk3)<br />SUCCESS: mounted group 2 (FRA)<br />NOTE: grp 2 disk 0: FRA_0000 path:/dev/asm-disk3<br />Mon Apr 10 23:32:40 2017<br />NOTE: dependency between database RAC and diskgroup resource ora.FRA.dg is established<br />Mon Apr 10 23:32:46 2017<br />WARNING: STANDBY_FILE_MANAGEMENT initialization parameter is<br />not set to the value "AUTO".<br />This may cause recovery of the standby database to terminate<br />prior to applying all available redo data.<br />It may be necessary to use the ALTER DATABASE CREATE DATAFILE<br />command to add datafiles created on the primary database.<br />Starting background process TMON<br />ARCH: STARTING ARCH PROCESSES<br />Starting background process ARC0<br />Mon Apr 10 23:32:48 2017<br />TMON started with pid=44, OS id=7628<br />Mon Apr 10 23:32:48 2017<br />ARC0 started with pid=45, OS id=7630<br />ARC0: Archival started<br />ARCH: STARTING ARCH PROCESSES COMPLETE<br />Mon Apr 10 23:32:48 2017<br />ARC0: STARTING ARCH PROCESSES<br />Starting background process ARC1<br />Starting background process ARC2<br />Mon Apr 10 232:48 2017<br />ARC1 started with pid=46, OS id=7632<br />Starting background process ARC3<br />Mon Apr 10 23:32:48 2017<br />ARC2 started with pid=47, OS id=7634<br />ARC1: Archival started<br />ARC2: Archival started<br />Mon Apr 10 23:32:48 2017<br />ARC1: Becoming the 'no FAL' ARCH<br />ARC1: Becoming the 'no SRL' ARCH<br />ARC1: Thread not mounted<br />Mon Apr 10 23:32:48 2017<br />ARC2: Becoming the heartbeat ARCH<br />Mon Apr 10 23:32:48 2017<br />ARC3 started with pid=48, OS id=7636<br />Mon Apr 10 23:32:48 2017<br />ARC3: Archival started<br />ARC0: STARTING ARCH PROCESSES COMPLETE<br />ARC0: Thread not mounted<br />Mon Apr 10 23:32:48 2017<br />ARC3: Thread not mounted<br />Mon Apr 10 23:32:49 2017<br />ARC2: Thread not mounted<br />Mon Apr 10 23:32:49 2017<br />Network Resource Management enabled for Process LGWR (pid 6943) for Exadata I/O<br />Successful mount of redo thread 1, with mount id 2528954836<br />Mon Apr 10 23:32:49 2017<br />Allocated 3981120 bytes in shared pool for flashback generation buffer<br />Starting background process RVWR<br />Mon Apr 10 23:32:49 2017<br />RVWR started with pid=49, OS id=7638<br />Physical Standby Database mounted.<br />Lost write protection disabled<br />Mon Apr 10 23:32:58 2017<br />Archiving previously deferred ORLs (RAC1)<br />ARCH: End-Of-Redo Branch archival of thread 1 sequence 70<br />Mon Apr 10 23:33:13 2017<br />Archived Log entry 136 added for thread 1 sequence 70 ID 0x96312536 dest 1:<br />ARCH: End-Of-Redo Branch archival of thread 2 sequence 39<br />Mon Apr 10 23:33:15 2017<br />Archived Log entry 137 added for thread 2 sequence 39 ID 0x96312536 dest 1:<br />Completed: ALTER DATABASE MOUNT /* db agent *//* {1:46642:1193} */<br />Mon Apr 10 23:33:20 2017<br />Starting Data Guard Broker (DMON)<br />Starting background process INSV<br />Mon Apr 10 23:33:21 2017<br />INSV started with pid=42, OS id=7855<br />Starting background process NSV1<br />Mon Apr 10 23:33:25 2017<br />NSV1 started with pid=52, OS id=7869<br />Mon Apr 10 23:33:26 2017<br />Decreasing number of real time LMS from 1 to 0<br />Starting background process RSM0<br />Mon Apr 10 23:33:41 2017<br />RSM0 started with pid=55, OS id=7929<br />Mon Apr 10 23:33:41 2017<br />Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST<br />Network Resource Management enabled for Process (pid 7909) for Exadata I/O<br />Primary database is in MAXIMUM PERFORMANCE mode<br />Mon Apr 10 23:33:46 2017<br />Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST<br />Mon Apr 10 23:33:46 2017<br />ALTER SYSTEM SET log_archive_dest_2='' SCOPE=BOTH;<br />Mon Apr 10 23:33:46 2017<br />ARC2: Becoming the active heartbeat ARCH<br />ARC2: Becoming the active heartbeat ARCH<br />RFS[1]: Assigned to RFS process (PID:7909)<br />RFS[1]: Selected log 5 for thread 1 sequence 72 dbid 2519807290 branch 931825279<br />Mon Apr 10 23:33:46 2017<br />ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;<br />Mon Apr 10 23:33:47 2017<br />ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='RAC1';<br />Mon Apr 10 23:33:47 2017<br />ALTER SYSTEM SET log_archive_format='%t_%s_%r.dbf' SCOPE=SPFILE SID='RAC1';<br />ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT NODELAY<br />Mon Apr 10 23:33:50 2017<br />Attempt to start background Managed Standby Recovery process (RAC1)<br />Starting background process MRP0<br />Mon Apr 10 23:33:50 2017<br />MRP0 started with pid=56, OS id=7988<br />Mon Apr 10 23:33:50 2017<br />MRP0: Background Managed Standby Recovery process started (RAC1)<br />Mon Apr 10 23:33:55 2017<br /> Started logmerger process<br />Mon Apr 10 23:33:57 2017<br />Managed Standby Recovery starting Real Time Apply<br />Mon Apr 10 23:33:58 2017<br />RFS[2]: Assigned to RFS process (PID:8007)<br />RFS[2]: Opened log for thread 1 sequence 71 dbid 2519807290 branch 931825279<br />RFS[1]: Selected log 6 for thread 1 sequence 73 dbid 2519807290 branch 931825279<br />Mon Apr 10 23:33:59 2017<br />Reconfiguration started (old inc 2, new inc 4)<br />List of instances (total 2) :<br /> 1 2<br />New instances (total 1) :<br /> 2<br />My inst 1<br /> Global Resource Directory frozen<br /> Communication channels reestablished<br /> Master broadcasted resource hash value bitmaps<br /> Non-local Process blocks cleaned out<br /> LMS 0: 0 GCS shadows cancelled, 0 closed, 0 Xw survived<br /> Set master node info<br /> Submitted all remote-enqueue requests<br /> Dwn-cvts replayed, VALBLKs dubious<br /> All grantable enqueues granted<br />Mon Apr 10 23:33:59 2017<br /> Post SMON to start 1st pass IR<br /> Submitted all GCS remote-cache requests<br /> Fix write in gcs resources<br />Mon Apr 10 23:34:00 2017<br />Reconfiguration complete (total time 0.5 secs)<br />Mon Apr 10 23:34:15 2017<br />Archived Log entry 138 added for thread 1 sequence 72 ID 0x96bd0722 dest 1:<br />Mon Apr 10 23:34:16 2017<br />Archived Log entry 139 added for thread 1 sequence 71 rlc 931825279 ID 0x96bd0722 dest 2:<br />RFS[2]: Opened log for thread 2 sequence 40 dbid 2519807290 branch 931825279<br />Mon Apr 10 23:34:23 2017<br />Archived Log entry 140 added for thread 2 sequence 40 rlc 931825279 ID 0x0 dest 2:<br />Mon Apr 10 23:34:28 2017<br />Parallel Media Recovery started with 2 slaves<br />Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT NODELAY<br />Mon Apr 10 23:34:33 2017<br />Waiting for all non-current ORLs to be archived...<br />Mon Apr 10 23:34:33 2017<br />All non-current ORLs have been archived.<br />Clearing online redo logfile 1 +DATA/RAC/ONLINELOG/group_1.283.931825279<br /><br />Clearing online log 1 of thread 1 sequence number 69<br />Mon Apr 10 23:34:50 2017<br />Clearing online redo logfile 1 complete<br />Clearing online redo logfile 2 +DATA/RAC/ONLINELOG/group_2.284.931825283<br /><br />Clearing online log 2 of thread 1 sequence number 70<br />Mon Apr 10 23:34:51 2017<br />Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST<br />Mon Apr 10 23:35:00 2017<br />Increasing number of real time LMS from 0 to 1<br />Mon Apr 10 23:35:09 2017<br />Clearing online redo logfile 2 complete<br />Clearing online redo logfile 3 +DATA/RAC/ONLINELOG/group_3.290.931826413<br /><br />Clearing online log 3 of thread 2 sequence number 39<br />Mon Apr 10 23:35:22 2017<br />Clearing online redo logfile 3 complete<br />Clearing online redo logfile 4 +DATA/RAC/ONLINELOG/group_4.291.931826417<br /><br />Clearing online log 4 of thread 2 sequence number 38<br />Clearing online redo logfile 4 complete<br />Mon Apr 10 23:35:28 2017<br />Media Recovery Log +FRA/RAC/ARCHIVELOG/2017_04_10/thread_2_seq_38.357.940980599<br />Mon Apr 10 23:35:28 2017<br />Media Recovery Log +FRA/RAC/ARCHIVELOG/2017_04_10/thread_1_seq_67.355.940978999<br />Mon Apr 10 23:35:29 2017<br />Media Recovery Log +FRA/RAC/ARCHIVELOG/2017_04_10/thread_1_seq_68.356.940980597<br />Mon Apr 10 23:35:31 2017<br />Media Recovery Log +FRA/RAC/ARCHIVELOG/2017_04_10/thread_1_seq_69.358.940980603<br />Mon Apr 10 23:35:32 2017<br />Media Recovery Log +FRA/RAC/ARCHIVELOG/2017_04_10/thread_2_seq_39.360.940980795<br />Mon Apr 10 23:35:35 2017<br />Media Recovery Log +FRA/RAC/ARCHIVELOG/2017_04_10/thread_1_seq_70.359.940980783<br />Mon Apr 10 23:35:38 2017<br />Resetting standby activation ID 0 (0x0)<br />Mon Apr 10 23:35:39 2017<br />Media Recovery End-Of-Redo indicator encountered<br />Mon Apr 10 23:35:39 2017<br />Media Recovery Continuing<br />Mon Apr 10 23:35:39 2017<br />Media Recovery Log +FRA/RAC/ARCHIVELOG/2017_04_10/thread_1_seq_71.361.940980839<br />Mon Apr 10 23:35:39 2017<br />Media Recovery Log +FRA/RAC/ARCHIVELOG/2017_04_10/thread_2_seq_40.363.940980861<br />Mon Apr 10 23:35:39 2017<br />Media Recovery Log +FRA/RAC/ARCHIVELOG/2017_04_10/thread_1_seq_72.362.940980841<br />Mon Apr 10 23:35:51 2017<br />Media Recovery Waiting for thread 1 sequence 73 (in transit)<br />Mon Apr 10 23:35:51 2017<br />Recovery of Online Redo Log: Thread 1 Group 6 Seq 73 Reading mem 0<br /> Mem# 0: +DATA/RAC/ONLINELOG/group_6.298.937936361<br /> Mem# 1: +FRA/RAC/ONLINELOG/group_6.304.937936363<br />Mon Apr 10 23:41:26 2017<br />Shutting down instance (immediate)<br />Shutting down instance: further logons disabled<br />Stopping background process MMNL<br />Stopping background process MMON<br />Mon Apr 10 23:41:28 2017<br />MRP0: Background Media Recovery cancelled with status 16037<br />Mon Apr 10 23:41:28 2017<br />Errors in file /u01/app/oracle/diag/rdbms/rac/RAC1/trace/RAC1_pr00_8020.trc:<br />ORA-16037: user requested cancel of managed recovery operation<br />Mon Apr 10 23:41:28 2017<br />Managed Standby Recovery not using Real Time Apply<br />Mon Apr 10 23:41:29 2017<br />Recovery interrupted!<br />Recovered data files to a consistent state at change 3497232<br />Mon Apr 10 23:41:29 2017<br />NOTE: Deferred communication with ASM instance<br />NOTE: deferred map free for map id 99<br />Mon Apr 10 23:41:29 2017<br />Errors in file /u01/app/oracle/diag/rdbms/rac/RAC1/trace/RAC1_pr00_8020.trc:<br />ORA-16037: user requested cancel of managed recovery operation<br />Mon Apr 10 23:41:29 2017<br />MRP0: Background Media Recovery process shutdown (RAC1)<br />Mon Apr 10 23:41:29 2017<br />NOTE: Deferred communication with ASM instance<br />License high water mark = 10<br />Mon Apr 10 23:41:29 2017<br />All dispatchers and shared servers shutdown<br />ALTER DATABASE CLOSE NORMAL<br />Stopping Emon pool<br />ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...<br />ALTER DATABASE DISMOUNT<br />Shutting down archive processes<br />Archiving is disabled<br />Mon Apr 10 23:41:30 2017<br />ARCH shutting down<br />ARC0: Archival stopped<br />Mon Apr 10 23:41:30 2017<br />ARCH shutting down<br />ARC1: Archival stopped<br />Mon Apr 10 23:41:30 2017<br />ARCH shutting down<br />ARC2: Relinquishing active heartbeat ARCH role<br />Mon Apr 10 23:41:30 2017<br />ARCH shutting down<br />ARC3: Archival stopped<br />Mon Apr 10 23:41:30 2017<br />ARC2: Archival stopped<br />Mon Apr 10 23:41:31 2017<br />NOTE: Deferred communication with ASM instance<br />NOTE: deferred map free for map id 5<br />Mon Apr 10 23:41:31 2017<br />NOTE: Deferred communication with ASM instance<br />NOTE: deferred map free for map id 14<br />Mon Apr 10 23:41:31 2017<br />NOTE: Deferred communication with ASM instance<br />NOTE: deferred map free for map id 2<br />Completed: ALTER DATABASE DISMOUNT<br />Mon Apr 10 23:41:37 2017<br />NOTE: De-assigning number (2,0) from disk (/dev/asm-disk3)<br />SUCCESS: diskgroup FRA was dismounted<br />NOTE: De-assigning number (1,0) from disk (/dev/asm-disk1)<br />NOTE: De-assigning number (1,1) from disk (/dev/asm-disk2)<br />NOTE: De-assigning number (1,2) from disk (/dev/asm-disk5)<br />SUCCESS: diskgroup DATA was dismounted<br />NOTE: Database dismounted; ASMB process exiting<br />NOTE: ASMB clearing idle groups before exit<br />Stopping background process MARK<br />Mon Apr 10 23:41:38 2017<br />NOTE: Shutting down MARK background process<br />Stopping background process RBAL<br />Mon Apr 10 23:41:56 2017<br />Reconfiguration started (old inc 4, new inc 6)<br />List of instances (total 1) :<br /> 1<br />Dead instances (total 1) :<br /> 2<br />My inst 1<br />publish big name space - dead or down/up instance detected, invalidate domain 0<br /> Global Resource Directory frozen<br /> * dead instance detected - domain 0 invalid = TRUE<br /> Communication channels reestablished<br /> Master broadcasted resource hash value bitmaps<br /> Non-local Process blocks cleaned out<br /> LMS 0: 0 GCS shadows cancelled, 0 closed, 0 Xw survived<br /> Set master node info<br /> Submitted all remote-enqueue requests<br /> Dwn-cvts replayed, VALBLKs dubious<br /> All grantable enqueues granted<br />Mon Apr 10 23:41:56 2017<br /> Post SMON to start 1st pass IR<br /> Submitted all GCS remote-cache requests<br /> Fix write in gcs resources<br />Mon Apr 10 23:41:56 2017<br />Reconfiguration complete (total time 0.2 secs)<br />Mon Apr 10 23:42:31 2017<br />ARCH: Archival disabled due to shutdown: 1089<br />Shutting down archive processes<br />Archiving is disabled<br />Shutting down Data Guard Broker processes<br />Mon Apr 10 23:42:36 2017<br />Completed: Data Guard Broker shutdown<br />Mon Apr 10 23:42:37 2017<br />ARCH: Archival disabled due to shutdown: 1089<br />Shutting down archive processes<br />Archiving is disabled<br />Mon Apr 10 23:42:37 2017<br />Stopping background process VKTM<br />Mon Apr 10 23:42:42 2017<br />freeing rdom 0<br />Mon Apr 10 23:42:44 2017<br />Instance shutdown complete<br /></pre><br /><br /><br /><br /><br /><br /><b>Next on node2 running instance RAC2 :</b><br /><br /><pre>04/10/2017 23:34:35<br />&gt;&gt; Starting Data Guard Broker bootstrap &lt;&lt;<br />Broker Configuration File Locations:<br /> dg_broker_config_file1 = "+DATA/RAC/dgbroker1.dat"<br /> dg_broker_config_file2 = "+FRA/RAC/dgbroker2.dat"<br />2017-04-10 23:34:35.584 DMON: Attach state object<br />2017-04-10 23:34:35.991 DMON: Broker State Initialized<br />2017-04-10 23:34:35.991 Version = 3<br />2017-04-10 23:34:35.991 State = 00000000<br />2017-04-10 23:34:35.992 DMON: Entered rfm_get_chief_lock() for CTL_BOOTSTRAP, reason 2<br />2017-04-10 23:34:35.993 7fffffff 0 DMON: Entered rfm_get_chief_lock() for CTL_BOOTSTRAP, reason 0<br />2017-04-10 23:34:39.031 7fffffff 0 DMON: start task execution: broker initialization<br />2017-04-10 23:34:39.130 DMON: Boot configuration (0.0.0), loading from "+DATA/RAC/dgbroker1.dat"<br />2017-04-10 23:34:39.192 DMON Registering service RAC_DGB with listener(s)<br />2017-04-10 23:34:39.192 DMON: Executing SQL [ALTER SYSTEM REGISTER]<br />2017-04-10 23:34:39.193 SQL [ALTER SYSTEM REGISTER] Executed successfully<br />04/10/2017 23:34:39<br />Broker Configuration: "rac"<br /> Protection Mode: Maximum Performance<br /> Fast-Start Failover (FSFO): Disabled, flags=0x0, version=0<br /> Primary Database: stby (0x02010000)<br />04/10/2017 23:34:47<br />rac version check successfully completed<br />Broker configuration file is current on rac, completing initialization<br />Creating process RSM0<br />04/10/2017 23:41:41<br />Data Guard Broker shutting down<br />RSM0 successfully terminated<br />2017-04-10 23:41:44.988 &gt;&gt; DMON Process Shutdown &lt;&lt;<br /><br /><br /><br />==========================================================================================================<br /><br /><br /><br />Mon Apr 10 23:31:10 2017<br />Switchover in progress in another database instance - Database is shutdown automatically<br />LGWR (ospid: 3335): terminating the instance due to error 16456<br />Mon Apr 10 23:31:11 2017<br />Instance terminated by LGWR, pid = 3335<br />Mon Apr 10 23:33:50 2017<br />Starting ORACLE instance (normal) (OS id: 8233)<br />Mon Apr 10 23:33:51 2017<br />CLI notifier numLatches:3 maxDescs:519<br />Mon Apr 10 23:33:51 2017<br />Due to limited space in shared pool (need 6094848 bytes, have 4194112 bytes), limiting Resource Manager entities from 2048 to 32<br />Mon Apr 10 23:33:51 2017<br />**********************************************************************<br />Mon Apr 10 23:33:51 2017<br />Dump of system resources acquired for SHARED GLOBAL AREA (SGA)<br /><br />Mon Apr 10 23:33:51 2017<br /> Per process system memlock (soft) limit = UNLIMITED<br />Mon Apr 10 23:33:51 2017<br /> Expected per process system memlock (soft) limit to lock<br /> SHARED GLOBAL AREA (SGA) into memory: 802M<br />Mon Apr 10 23:33:51 2017<br /> Available system pagesizes:<br /> 4K, 2048K<br />Mon Apr 10 23:33:51 2017<br /> Supported system pagesize(s):<br />Mon Apr 10 23:33:51 2017<br /> PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES ERROR(s)<br />Mon Apr 10 23:33:51 2017<br /> 4K Configured 4 204804 NONE<br />Mon Apr 10 23:33:51 2017<br /> 2048K 0 401 0 NONE<br />Mon Apr 10 23:33:51 2017<br />RECOMMENDATION:<br />Mon Apr 10 23:33:51 2017<br /> 1. For optimal performance, configure system with expected number<br /> of pages for every supported system pagesize prior to the next<br /> instance restart operation.<br />Mon Apr 10 23:33:51 2017<br />**********************************************************************<br />LICENSE_MAX_SESSION = 0<br />LICENSE_SESSIONS_WARNING = 0<br />Initial number of CPU is 2<br />Number of processor cores in the system is 2<br />Number of processor sockets in the system is 1<br />Private Interface 'eth1:1' configured from GPnP for use as a private interconnect.<br /> [name='eth1:1', type=1, ip=169.254.178.54, mac=08-00-27-c5-68-87, net=169.254.0.0/16, mask=255.255.0.0, use=haip:cluster_interconnect/62]<br />Public Interface 'eth0' configured from GPnP for use as a public interface.<br /> [name='eth0', type=1, ip=192.168.78.52, mac=08-00-27-1e-02-8d, net=192.168.78.0/24, mask=255.255.255.0, use=public/1]<br />Public Interface 'eth0:1' configured from GPnP for use as a public interface.<br /> [name='eth0:1', type=1, ip=192.168.78.62, mac=08-00-27-1e-02-8d, net=192.168.78.0/24, mask=255.255.255.0, use=public/1]<br />Public Interface 'eth0:2' configured from GPnP for use as a public interface.<br /> [name='eth0:2', type=1, ip=192.168.78.253, mac=08-00-27-1e-02-8d, net=192.168.78.0/24, mask=255.255.255.0, use=public/1]<br />Picked latch-free SCN scheme 3<br />Autotune of undo retention is turned on.<br />LICENSE_MAX_USERS = 0<br />SYS auditing is enabled<br />NOTE: remote asm mode is local (mode 0x1; from cluster type)<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, Real Application Clusters, OLAP, Advanced Analytics<br />and Real Application Testing options.<br />ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1<br />System name: Linux<br />Node name: collabn2.racattack<br />Release: 2.6.39-400.17.1.el6uek.x86_64<br />Version: #1 SMP Fri Feb 22 18:16:18 PST 2013<br />Machine: x86_64<br />Using parameter settings in server-side pfile /u01/app/oracle/product/12.1.0/dbhome_1/dbs/initRAC2.ora<br />System parameters with non-default values:<br /> processes = 300<br /> sga_max_size = 800M<br /> spfile = "+DATA/RAC/spfilerac.ora"<br /> control_files = "+DATA/RAC/CONTROLFILE/current.282.931825275"<br /> control_files = "+FRA/RAC/CONTROLFILE/current.256.931825275"<br /> db_block_size = 8192<br /> db_cache_size = 100M<br /> compatible = "12.1.0.2.0"<br /> log_archive_dest_1 = "location=USE_DB_RECOVERY_FILE_DEST"<br /> log_archive_dest_1 = "valid_for=(ALL_LOGFILES, ALL_ROLES)"<br /> log_archive_dest_2 = "service="stby""<br /> log_archive_dest_2 = "ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="stby" net_timeout=30"<br /> log_archive_dest_2 = "valid_for=(online_logfile,all_roles)"<br /> log_archive_dest_state_2 = "ENABLE"<br /> log_archive_min_succeed_dest= 1<br /> log_archive_trace = 0<br /> log_archive_config = "dg_config=(RAC,stby)"<br /> log_archive_format = "%t_%s_%r.dbf"<br /> log_archive_max_processes= 4<br /> archive_lag_target = 0<br /> cluster_database = TRUE<br /> db_create_file_dest = "+DATA"<br /> db_recovery_file_dest = "+FRA"<br /> db_recovery_file_dest_size= 4785M<br /> standby_file_management = "MANUAL"<br /> thread = 2<br /> undo_tablespace = "UNDOTBS2"<br /> instance_number = 2<br /> remote_login_passwordfile= "EXCLUSIVE"<br /> db_domain = "racattack"<br /> dispatchers = "(PROTOCOL=TCP) (SERVICE=RACXDB)"<br /> audit_file_dest = "/u01/app/oracle/admin/RAC/adump"<br /> audit_trail = "DB"<br /> db_name = "RAC"<br /> open_cursors = 300<br /> dg_broker_start = TRUE<br /> dg_broker_config_file1 = "+DATA/RAC/dgbroker1.dat"<br /> dg_broker_config_file2 = "+FRA/RAC/dgbroker2.dat"<br /> diagnostic_dest = "/u01/app/oracle"<br /> enable_pluggable_database= TRUE<br />NOTE: remote asm mode is local (mode 0x1; from cluster type)<br />Mon Apr 10 23:33:55 2017<br />Cluster communication is configured to use the following interface(s) for this instance<br /> 169.254.178.54<br />cluster interconnect IPC version: Oracle UDP/IP (generic)<br />IPC Vendor 1 proto 2<br />Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 3.0<br />Starting background process PMON<br />Mon Apr 10 23:33:56 2017<br />PMON started with pid=2, OS id=8257<br />Starting background process PSP0<br />Mon Apr 10 23:33:56 2017<br />PSP0 started with pid=3, OS id=8259<br />Starting background process VKTM<br />Mon Apr 10 23:33:57 2017<br />VKTM started with pid=4, OS id=8261 at elevated (RT) priority<br />Starting background process GEN0<br />Mon Apr 10 23:33:57 2017<br />VKTM running at (1)millisec precision with DBRM quantum (100)ms<br />Starting background process MMAN<br />Mon Apr 10 23:33:57 2017<br />GEN0 started with pid=5, OS id=8265<br />Mon Apr 10 23:33:57 2017<br />MMAN started with pid=6, OS id=8267<br />Starting background process DIAG<br />Mon Apr 10 23:33:57 2017<br />Starting background process DBRM<br />DIAG started with pid=8, OS id=8271<br />Starting background process VKRM<br />Mon Apr 10 23:33:57 2017<br />DBRM started with pid=9, OS id=8273<br />Starting background process PING<br />Mon Apr 10 23:33:57 2017<br />VKRM started with pid=10, OS id=8275<br />Mon Apr 10 23:33:57 2017<br />PING started with pid=11, OS id=8277<br />Starting background process ACMS<br />Mon Apr 10 23:33:57 2017<br />Starting background process DIA0<br />ACMS started with pid=12, OS id=8279<br />Mon Apr 10 23:33:57 2017<br />Starting background process LMON<br />DIA0 started with pid=13, OS id=8281<br />Mon Apr 10 23:33:57 2017<br />Starting background process LMD0<br />LMON started with pid=14, OS id=8283<br />Mon Apr 10 23:33:57 2017<br />Starting background process LMS0<br />LMD0 started with pid=15, OS id=8285<br />Mon Apr 10 23:33:57 2017<br />* Load Monitor used for high load check<br />* New Low - High Load Threshold Range = [1920 - 2560]<br />Starting background process RMS0<br />Mon Apr 10 23:33:57 2017<br />LMS0 started with pid=16, OS id=8287 at elevated (RT) priority<br />Mon Apr 10 23:33:57 2017<br />Starting background process LMHB<br />RMS0 started with pid=17, OS id=8291<br />Mon Apr 10 23:33:57 2017<br />Starting background process LCK1<br />LMHB started with pid=18, OS id=8293<br />Mon Apr 10 23:33:57 2017<br />Starting background process DBW0<br />LCK1 started with pid=19, OS id=8295<br />Mon Apr 10 23:33:57 2017<br />DBW0 started with pid=20, OS id=8297<br />Starting background process LGWR<br />Mon Apr 10 23:33:57 2017<br />Starting background process CKPT<br />LGWR started with pid=21, OS id=8299<br />Mon Apr 10 23:33:57 2017<br />CKPT started with pid=22, OS id=8301<br />Starting background process SMON<br />Mon Apr 10 23:33:57 2017<br />SMON started with pid=24, OS id=8305<br />Starting background process RECO<br />Mon Apr 10 23:33:57 2017<br />RECO started with pid=26, OS id=8309<br />Starting background process LREG<br />Mon Apr 10 23:33:57 2017<br />Starting background process PXMN<br />LREG started with pid=27, OS id=8311<br />Mon Apr 10 23:33:57 2017<br />Starting background process RBAL<br />PXMN started with pid=7, OS id=8313<br />Starting background process ASMB<br />Mon Apr 10 23:33:57 2017<br />RBAL started with pid=28, OS id=8315<br />Mon Apr 10 23:33:57 2017<br />ASMB started with pid=29, OS id=8317<br />Starting background process MMON<br />Starting background process MMNL<br />Mon Apr 10 23:33:57 2017<br />MMON started with pid=30, OS id=8319<br />Mon Apr 10 23:33:57 2017<br />starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...<br />Mon Apr 10 23:33:57 2017<br />MMNL started with pid=31, OS id=8323<br />Mon Apr 10 23:33:57 2017<br />NOTE: ASMB registering with ASM instance as Standard client 0xffffffffffffffff (reg:593534517) (new connection)<br />Mon Apr 10 23:33:57 2017<br />starting up 1 shared server(s) ...<br />Mon Apr 10 23:33:57 2017<br />NOTE: ASMB connected to ASM instance +ASM2 osid: 8321 (Flex mode; client id 0xffffffffffffffff)<br />NOTE: initiating MARK startup<br />Starting background process MARK<br />Mon Apr 10 23:33:57 2017<br />lmon registered with NM - instance number 2 (internal mem no 1)<br />Mon Apr 10 23:33:57 2017<br />MARK started with pid=34, OS id=8329<br />Mon Apr 10 23:33:57 2017<br />NOTE: MARK has subscribed<br />Mon Apr 10 23:33:59 2017<br />Reconfiguration started (old inc 0, new inc 4)<br />List of instances (total 2) :<br /> 1 2<br />My inst 2 (I'm a new instance)<br /> Global Resource Directory frozen<br />* allocate domain 0, invalid = TRUE<br /> Communication channels reestablished<br />Mon Apr 10 23:33:59 2017<br /> * domain 0 valid = 0 according to instance 1<br />Mon Apr 10 23:33:59 2017<br /> Master broadcasted resource hash value bitmaps<br /> Non-local Process blocks cleaned out<br />Mon Apr 10 23:33:59 2017<br /> LMS 0: 0 GCS shadows cancelled, 0 closed, 0 Xw survived<br /> Set master node info<br /> Submitted all remote-enqueue requests<br /> Dwn-cvts replayed, VALBLKs dubious<br /> All grantable enqueues granted<br />Mon Apr 10 23:33:59 2017<br /> Post SMON to start 1st pass IR<br /> Submitted all GCS remote-cache requests<br /> Fix write in gcs resources<br />Mon Apr 10 23:34:00 2017<br />Reconfiguration complete (total time 0.8 secs)<br />Starting background process LCK0<br />Mon Apr 10 23:34:00 2017<br />LCK0 started with pid=38, OS id=8337<br />Mon Apr 10 23:34:00 2017<br />Using default pga_aggregate_limit of 2048 MB<br />Starting background process RSMN<br />Mon Apr 10 23:34:01 2017<br />RSMN started with pid=40, OS id=8351<br />Mon Apr 10 23:34:02 2017<br />Instance started by oraagent<br />Starting background process DMON<br />ORACLE_BASE from environment = /u01/app/oracle<br />Mon Apr 10 23:34:02 2017<br />DMON started with pid=41, OS id=8353<br />Mon Apr 10 23:34:03 2017<br />ALTER SYSTEM SET local_listener=' (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.62)(PORT=1521))' SCOPE=MEMORY SID='RAC2';<br />Mon Apr 10 23:34:03 2017<br />ALTER SYSTEM SET remote_listener=' collabn-cluster-scan.racattack:1521' SCOPE=MEMORY SID='RAC2';<br />ALTER DATABASE MOUNT /* db agent *//* {1:46642:1276} */<br />Mon Apr 10 23:34:04 2017<br />NOTE: ASMB mounting group 1 (DATA)<br />NOTE: Assigning number (1,0) to disk (/dev/asm-disk1)<br />NOTE: Assigning number (1,1) to disk (/dev/asm-disk2)<br />NOTE: Assigning number (1,2) to disk (/dev/asm-disk5)<br />SUCCESS: mounted group 1 (DATA)<br />NOTE: grp 1 disk 0: DATA_0000 path:/dev/asm-disk1<br />NOTE: grp 1 disk 1: DATA_0001 path:/dev/asm-disk2<br />NOTE: grp 1 disk 2: DATA_0002 path:/dev/asm-disk5<br />Mon Apr 10 23:34:04 2017<br />NOTE: dependency between database RAC and diskgroup resource ora.DATA.dg is established<br />Mon Apr 10 23:34:04 2017<br />NOTE: ASMB mounting group 2 (FRA)<br />NOTE: Assigning number (2,0) to disk (/dev/asm-disk3)<br />SUCCESS: mounted group 2 (FRA)<br />NOTE: grp 2 disk 0: FRA_0000 path:/dev/asm-disk3<br />Mon Apr 10 23:34:04 2017<br />NOTE: dependency between database RAC and diskgroup resource ora.FRA.dg is established<br />Mon Apr 10 23:34:14 2017<br />WARNING: STANDBY_FILE_MANAGEMENT initialization parameter is<br />not set to the value "AUTO".<br />This may cause recovery of the standby database to terminate<br />prior to applying all available redo data.<br />It may be necessary to use the ALTER DATABASE CREATE DATAFILE<br />command to add datafiles created on the primary database.<br />Starting background process TMON<br />Mon Apr 10 23:34:16 2017<br />ARCH: STARTING ARCH PROCESSES<br />TMON started with pid=45, OS id=8374<br />Starting background process ARC0<br />Mon Apr 10 23:34:16 2017<br />ARC0 started with pid=46, OS id=8376<br />ARC0: Archival started<br />ARCH: STARTING ARCH PROCESSES COMPLETE<br />Mon Apr 10 23:34:16 2017<br />ARC0: STARTING ARCH PROCESSES<br />Starting background process ARC1<br />Starting background process ARC2<br />Mon Apr 10 23:34:16 2017<br />ARC1 started with pid=47, OS id=8378<br />Starting background process ARC3<br />Mon Apr 10 23:34:16 2017<br />ARC2 started with pid=48, OS id=8380<br />Mon Apr 10 23:34:16 2017<br />ARC3 started with pid=49, OS id=8382<br />ARC1: Archival started<br />ARC2: Archival started<br />Mon Apr 10 23:34:16 2017<br />ARC1: Becoming the 'no FAL' ARCH<br />ARC1: Becoming the 'no SRL' ARCH<br />ARC1: Thread not mounted<br />Mon Apr 10 23:34:16 2017<br />ARC2: Becoming the heartbeat ARCH<br />Mon Apr 10 23:34:16 2017<br />ARC3: Archival started<br />ARC0: STARTING ARCH PROCESSES COMPLETE<br />Mon Apr 10 23:34:16 2017<br />ARC0: Thread not mounted<br />Mon Apr 10 23:34:16 2017<br />ARC3: Thread not mounted<br />Mon Apr 10 23:34:16 2017<br />ARC2: Thread not mounted<br />Mon Apr 10 23:34:17 2017<br />Network Resource Management enabled for Process LGWR (pid 8299) for Exadata I/O<br />Successful mount of redo thread 2, with mount id 2528954836<br />Mon Apr 10 23:34:22 2017<br />Allocated 3981120 bytes in shared pool for flashback generation buffer<br />Starting background process RVWR<br />Mon Apr 10 23:34:22 2017<br />RVWR started with pid=50, OS id=8385<br />Physical Standby Database mounted.<br />Lost write protection disabled<br />Completed: ALTER DATABASE MOUNT /* db agent *//* {1:46642:1276} */<br />Mon Apr 10 23:34:35 2017<br />Starting Data Guard Broker (DMON)<br />Starting background process INSV<br />Mon Apr 10 23:34:36 2017<br />INSV started with pid=42, OS id=8424<br />Starting background process NSV1<br />Mon Apr 10 23:34:39 2017<br />NSV1 started with pid=51, OS id=8432<br />Starting background process RSM0<br />Mon Apr 10 23:34:47 2017<br />RSM0 started with pid=52, OS id=8439<br />Mon Apr 10 23:34:51 2017<br />Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST<br />Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST<br />Mon Apr 10 23:34:51 2017<br />ALTER SYSTEM SET log_archive_dest_2='' SCOPE=BOTH;<br />Mon Apr 10 23:34:51 2017<br />ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;<br />Mon Apr 10 23:34:52 2017<br />ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='RAC2';<br />Mon Apr 10 23:34:52 2017<br />ALTER SYSTEM SET log_archive_format='%t_%s_%r.dbf' SCOPE=SPFILE SID='RAC2';<br />Mon Apr 10 23:41:28 2017<br />Managed Standby Recovery not using Real Time Apply<br />Mon Apr 10 23:41:30 2017<br />ARC2: Becoming the active heartbeat ARCH<br />ARC2: Becoming the active heartbeat ARCH<br />Mon Apr 10 23:41:37 2017<br />Shutting down instance (immediate)<br />Shutting down instance: further logons disabled<br />Stopping background process MMNL<br />Stopping background process MMON<br />License high water mark = 2<br />Mon Apr 10 23:41:40 2017<br />All dispatchers and shared servers shutdown<br />ALTER DATABASE CLOSE NORMAL<br />Stopping Emon pool<br />ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...<br />ALTER DATABASE DISMOUNT<br />Shutting down archive processes<br />Archiving is disabled<br />Mon Apr 10 23:41:40 2017<br />ARCH shutting down<br />ARC1: Archival stopped<br />Mon Apr 10 23:41:40 2017<br />ARCH shutting down<br />Mon Apr 10 23:41:40 2017<br />ARCH shutting down<br />Mon Apr 10 23:41:40 2017<br />ARC0: Archival stopped<br />Mon Apr 10 23:41:40 2017<br />ARC2: Relinquishing active heartbeat ARCH role<br />ARC2: Archival stopped<br />Mon Apr 10 23:41:40 2017<br />ARCH shutting down<br />ARC3: Archival stopped<br />Mon Apr 10 23:41:41 2017<br />NOTE: Deferred communication with ASM instance<br />NOTE: deferred map free for map id 5<br />Mon Apr 10 23:41:41 2017<br />NOTE: Deferred communication with ASM instance<br />NOTE: deferred map free for map id 15<br />Mon Apr 10 23:41:41 2017<br />NOTE: Deferred communication with ASM instance<br />NOTE: deferred map free for map id 2<br />Completed: ALTER DATABASE DISMOUNT<br />Mon Apr 10 23:41:41 2017<br />ARCH: Archival disabled due to shutdown: 1089<br />Shutting down archive processes<br />Archiving is disabled<br />Shutting down Data Guard Broker processes<br />Mon Apr 10 23:41:43 2017<br />NOTE: Deferred communication with ASM instance<br />Mon Apr 10 23:41:44 2017<br />Completed: Data Guard Broker shutdown<br />Mon Apr 10 23:41:45 2017<br />NOTE: force a map free for map id 2<br />Mon Apr 10 23:41:45 2017<br />Stopping background process VKTM<br />Mon Apr 10 23:41:45 2017<br />ARCH: Archival disabled due to shutdown: 1089<br />Shutting down archive processes<br />Archiving is disabled<br />Mon Apr 10 23:41:46 2017<br />NOTE: Shutting down MARK background process<br />Mon Apr 10 23:41:53 2017<br />NOTE: ASMB releasing group resources due to shutdown<br />NOTE: ASMB clearing idle groups before exit<br />Stopping background process RBAL<br />Mon Apr 10 23:41:55 2017<br />freeing rdom 0<br />Mon Apr 10 23:41:57 2017<br />Instance shutdown complete<br /></pre><br /><br /><br /><br /><br /><b>Next, the original Standby (SingleInstance) node</b> : the drcSTBY.log and alert_STBY.log<br /><br /><pre>04/10/2017 23:31:03<br />Notifying Oracle Clusterware to prepare target standby database for switchover<br />04/10/2017 23:33:49<br />Deferring associated archivelog destinations of sites permanently disabled due to Switchover<br />Notifying Oracle Clusterware to buildup primary database after switchover<br />Switchover Complete<br /> New Primary Site is named: stby<br />04/10/2017 23:41:22<br />Notifying DMON of db close<br />Notifying RSM0 of db close<br />04/10/2017 23:41:27<br />Data Guard Broker shutting down<br />RSM0 successfully terminated<br />2017-04-10 23:41:30.761 &gt;&gt; DMON Process Shutdown &lt;&lt;<br />04/10/2017 23:41:55<br />&gt;&gt; Starting Data Guard Broker bootstrap &lt;&lt;<br />Broker Configuration File Locations:<br /> dg_broker_config_file1 = "/u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr1STBY.dat"<br /> dg_broker_config_file2 = "/u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr2STBY.dat"<br />2017-04-10 23:41:55.856 DMON: Attach state object<br />2017-04-10 23:41:55.856 DMON: rfafoGetLocks reinitializing dubious PMYSHUT lock value block contents: sts=0, flags=0x0, spare1=0x0, spare2=0x0, cksm=0x0, rndm=0x0<br />2017-04-10 23:41:55.857 DMON: Broker state reconciled, version = 0, state = 00000000<br />2017-04-10 23:41:55.857 DMON: Broker State Initialized<br />2017-04-10 23:41:55.857 Version = 1<br />2017-04-10 23:41:55.857 State = 00000000<br />2017-04-10 23:41:55.857 DMON: Entered rfm_get_chief_lock() for CTL_BOOTSTRAP, reason 2<br />2017-04-10 23:41:55.857 7fffffff 0 DMON: Entered rfm_get_chief_lock() for CTL_BOOTSTRAP, reason 0<br />2017-04-10 23:41:58.902 7fffffff 0 DMON: start task execution: broker initialization<br />2017-04-10 23:41:58.902 DMON: Boot configuration (0.0.0), loading from "/u01/app/oracle/product/12.1.0/dbhome_1/dbs/dr1STBY.dat"<br />2017-04-10 23:41:58.903 DMON Registering service STBY_DGB with listener(s)<br />2017-04-10 23:41:58.903 DMON: Executing SQL [ALTER SYSTEM REGISTER]<br />2017-04-10 23:41:58.904 SQL [ALTER SYSTEM REGISTER] Executed successfully<br />04/10/2017 23:41:58<br />Broker Configuration: "rac"<br /> Protection Mode: Maximum Performance<br /> Fast-Start Failover (FSFO): Disabled, flags=0x0, version=0<br /> Primary Database: stby (0x02010000)<br />04/10/2017 23:42:11<br />Failed to connect to remote database rac. Error is ORA-12528<br />Failed to send message to site rac. Error code is ORA-12528.<br />Version Check Results:<br /> Database rac returned ORA-12528<br />Creating process RSM0<br />04/10/2017 23:42:35<br />Processing shutdown notification from database rac, instance 1<br />Broker operation<br />Setting SHUTDOWN status for database rac<br />04/10/2017 23:45:20<br />Notifying DMON of db close<br />Notifying RSM0 of db close<br />04/10/2017 23:45:28<br />Data Guard Broker shutting down<br />RSM0 successfully terminated<br />2017-04-10 23:45:31.850 &gt;&gt; DMON Process Shutdown &lt;&lt;<br /><br /><br /><br />=======================================================================================<br /><br /><br /><br />Mon Apr 10 23:30:59 2017<br />SWITCHOVER VERIFY BEGIN<br />SWITCHOVER VERIFY WARNING: no standby database is defined in LOG_ARCHIVE_DEST_n to protect this database if it is converted to a primary database<br />SWITCHOVER VERIFY COMPLETE<br />Mon Apr 10 23:31:00 2017<br />SWITCHOVER VERIFY BEGIN<br />SWITCHOVER VERIFY WARNING: no standby database is defined in LOG_ARCHIVE_DEST_n to protect this database if it is converted to a primary database<br />SWITCHOVER VERIFY COMPLETE<br />Mon Apr 10 23:31:08 2017<br />RFS[3]: Assigned to RFS process (PID:30383)<br />RFS[3]: Selected log 7 for thread 2 sequence 39 dbid 2519807290 branch 931825279<br />Mon Apr 10 23:31:08 2017<br />Archived Log entry 44 added for thread 2 sequence 39 ID 0x96312536 dest 1:<br />Mon Apr 10 23:31:08 2017<br />RFS[4]: Assigned to RFS process (PID:30386)<br />RFS[4]: Selected log 5 for thread 1 sequence 70 dbid 2519807290 branch 931825279<br />Mon Apr 10 23:31:09 2017<br />Archived Log entry 45 added for thread 1 sequence 70 ID 0x96312536 dest 1:<br />Mon Apr 10 23:31:09 2017<br />Resetting standby activation ID 2519803190 (0x96312536)<br />Mon Apr 10 23:31:09 2017<br />Media Recovery End-Of-Redo indicator encountered<br />Mon Apr 10 23:31:09 2017<br />Media Recovery Continuing<br />Media Recovery Waiting for thread 2 sequence 40<br />Mon Apr 10 23:31:10 2017<br />RFS[5]: Assigned to RFS process (PID:29959)<br />RFS[5]: Possible network disconnect with primary database<br />Mon Apr 10 23:31:15 2017<br />SWITCHOVER: received request 'ALTER DTABASE COMMIT TO SWITCHOVER TO PRIMARY' from primary database.<br />Mon Apr 10 23:31:15 2017<br />ALTER DATABASE SWITCHOVER TO PRIMARY (STBY)<br />Maximum wait for role transition is 15 minutes.<br />Switchover: Media recovery is still active<br />Role Change: Canceling MRP - no more redo to apply<br />Mon Apr 10 23:31:15 2017<br />MRP0: Background Media Recovery cancelled with status 16037<br />Mon Apr 10 23:31:15 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_pr00_29969.trc:<br />ORA-16037: user requested cancel of managed recovery operation<br />Managed Standby Recovery not using Real Time Apply<br />Recovery interrupted!<br />Mon Apr 10 23:31:16 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_pr00_29969.trc:<br />ORA-16037: user requested cancel of managed recovery operation<br />Mon Apr 10 23:31:16 2017<br />MRP0: Background Media Recovery process shutdown (STBY)<br />Mon Apr 10 23:31:17 2017<br />Role Change: Canceled MRP<br />Killing 1 processes (PIDS:30372) (all RFS) in order to disallow current and future RFS connections. Requested by OS process 30402<br />Backup controlfile written to trace file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_rmi_30402.trc<br />SwitchOver after complete recovery through change 3494835<br />Online logfile pre-clearing operation disabled by switchover<br />Online log /u01/app/oracle/oradata/STBY/onlinelog/group_1.283.931825279: Thread 1 Group 1 was previously cleared<br />Online log /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_1.257.931825281: Thread 1 Group 1 was previously cleared<br />Online log /u01/app/oracle/oradata/STBY/onlinelog/group_2.284.931825283: Thread 1 Group 2 was previously cleared<br />Online log /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_2.258.931825287: Thread 1 Group 2 was previously cleared<br />Online log /u01/app/oracle/oradata/STBY/onlinelog/group_3.290.931826413: Thread 2 Group 3 was previously cleared<br />Online log /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_3.259.931826417: Thread 2 Group 3 was previously cleared<br />Online log /u01/app/oracle/oradata/STBY/onlinelog/group_4.291.931826417: Thread 2 Group 4 was previously cleared<br />Online log /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_4.260.931826421: Thread 2 Group 4 was previously cleared<br />Standby became primary SCN: 3494833<br />Switchover: Complete - Database mounted as primary<br />SWITCHOVER: completed request from primary database.<br />Mon Apr 10 23:31:21 2017<br />Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST<br />Mon Apr 10 23:31:21 2017<br />ALTER SYSTEM SET log_archive_dest_2='service="rac1"','ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="rac" net_timeout=30','valid_for=(online_logfile,all_roles)' SCOPE=BOTH;<br />Mon Apr 10 23:31:21 2017<br />ARC0: Becoming the 'no SRL' ARCH<br />Mon Apr 10 23:31:21 2017<br />ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;<br />ALTER DATABASE OPEN<br />Mon Apr 10 23:31:21 2017<br />Data Guard Broker initializing...<br />Ping without log force is disabled<br />.<br />Mon Apr 10 23:31:21 2017<br />Assigning activation ID 2528970530 (0x96bd0722)<br />Mon Apr 10 23:31:21 2017<br />Thread 1 advanced to log sequence 72 (thread open)<br />Thread 1 opened at log sequence 72<br /> Current log# 2 seq# 72 mem# 0: /u01/app/oracle/oradata/STBY/onlinelog/group_2.284.931825283<br /> Current log# 2 seq# 72 mem# 1: /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_2.258.931825287<br />Successful open of redo thread 1<br />Mon Apr 10 23:31:21 2017<br />MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set<br />Mon Apr 10 23:31:21 2017<br />SMON: enabling cache recovery<br />Mon Apr 10 23:31:21 2017<br />******************************************************************<br />TT00: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2<br />******************************************************************<br />Mon Apr 10 23:31:21 2017<br />Archived Log entry 46 added for thread 1 sequence 71 ID 0x96bd0722 dest 1:<br />Mon Apr 10 23:31:21 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_tt00_30433.trc:<br />ORA-16456: switchover to standby in progress or completed<br />Mon Apr 10 23:31:21 2017<br />Error 16456 for archive log file 2 to 'rac1'<br />Mon Apr 10 23:31:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_arc3_29915.trc:<br />ORA-16456: switchover to standby in progress or completed<br />Mon Apr 10 23:31:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_tt00_30433.trc:<br />ORA-16456: switchover to standby in progress or completed<br />Mon Apr 10 23:31:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_tt00_30433.trc:<br />ORA-16456: switchover to standby in progress or completed<br />Mon Apr 10 23:31:22 2017<br />FAL[server, ARC3]: Error 16456 creating remote archivelog file 'rac1'<br />ARC3: FAL archive failed with error 16456. See trace for details<br />Mon Apr 10 23:31:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_arc3_29915.trc:<br />ORA-16055: FAL request rejected<br />ARCH: FAL archive failed. Archiver continuing<br />Mon Apr 10 23:31:22 2017<br />ORACLE Instance STBY - Archival Error. Archiver continuing.<br />Mon Apr 10 23:31:24 2017<br />[29938] Successfully onlined Undo Tablespace 2.<br />Undo initialization finished serial:0 start:4159104 end:4161254 diff:2150 ms (2.2 seconds)<br />Dictionary check beginning<br />Dictionary check complete<br />Verifying minimum file header compatibility (11g) for tablespace encryption..<br />Verifying 11g file header compatibility for tablespace encryption completed<br />Mon Apr 10 23:31:26 2017<br />SMON: enabling tx recovery<br />Starting background process SMCO<br />Mon Apr 10 23:31:26 2017<br />SMCO started with pid=33, OS id=30448<br />Mon Apr 10 23:31:28 2017<br />Database Characterset is AL32UTF8<br />Mon Apr 10 23:31:29 2017<br />Redo thread 2 internally disabled at seq 40 (CKPT)<br />Mon Apr 10 23:31:30 2017<br />ARC2: Archiving disabled thread 2 sequence 40<br />Mon Apr 10 23:31:30 2017<br />Archived Log entry 47 added for thread 2 sequence 40 ID 0x0 dest 1:<br />Mon Apr 10 23:31:31 2017<br />No Resource Manager plan active<br />replication_dependency_tracking turned off (no async multimaster replication found)<br />Starting background process AQPC<br />Mon Apr 10 23:31:37 2017<br />AQPC started with pid=36, OS id=30543<br />LOGSTDBY: Validating controlfile with logical metadata<br />LOGSTDBY: Validation complete<br />Mon Apr 10 23:31:39 2017<br />ARC0: STARTING ARCH PROCESSES<br />Starting background process ARC4<br />Mon Apr 10 23:31:39 2017<br />ARC4 started with pid=37, OS id=30553<br />ARC4: Archival started<br />ARC0: STARTING ARCH PROCESSES COMPLETE<br />Mon Apr 10 23:32:00 2017<br />Pluggable database PDB$SEED dictionary check beginning<br />Pluggable Database PDB$SEED Dictionary check complete<br />Database Characterset for PDB$SEED is AL32UTF8<br />Mon Apr 10 23:32:17 2017<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Mon Apr 10 23:32:36 2017<br />Opening pdb PDB$SEED (2) with no Resource Manager plan active<br />Shutting down archive processes<br />Mon Apr 10 23:32:40 2017<br />ARCH shutting down<br />ARC4: Archival stopped<br />Mon Apr 10 23:32:45 2017<br />Pluggable database PDB dictionary check beginning<br />Pluggable Database PDB Dictionary check complete<br />Database Characterset for PDB is AL32UTF8<br />ALTER SYSTEM: Flushing buffer cache inst=0 container=3 local<br />Mon Apr 10 23:32:58 2017<br />Cannot start service pdb, reason=-1<br />Starting background process CJQ0<br />Mon Apr 10 23:33:13 2017<br />CJQ0 started with pid=37, OS id=31055<br />Completed: ALTER DATABASE OPEN<br />ALTER PLUGGABLE DATABASE ALL OPEN<br />Mon Apr 10 23:33:15 2017<br />Database Characterset for PDB is AL32UTF8<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Mon Apr 10 23:33:36 2017<br />Shared IO Pool defaulting to 36MB. Trying to get it from Buffer Cache for process 29792.<br />Mon Apr 10 23:33:37 2017<br />Opening pdb PDB (3) with no Resource Manager plan active<br />Mon Apr 10 23:33:38 2017<br />===========================================================<br />Dumping current patch information<br />===========================================================<br />No patches have been applied<br />===========================================================<br />Mon Apr 10 23:33:38 2017<br />Pluggable database PDB opened read write<br />Completed: ALTER PLUGGABLE DATABASE ALL OPEN<br />Mon Apr 10 23:33:38 2017<br />ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='STBY';<br />Mon Apr 10 23:33:39 2017<br />ALTER SYSTEM SET log_archive_format='%t_%s_%r.dbf' SCOPE=SPFILE SID='STBY';<br />Mon Apr 10 23:33:39 2017<br />ALTER SYSTEM SET standby_file_management='MANUAL' SCOPE=BOTH SID='*';<br />Mon Apr 10 23:33:39 2017<br />ALTER SYSTEM SET archive_lag_target=0 SCOPE=BOTH SID='*';<br />Mon Apr 10 23:33:39 2017<br />ALTER SYSTEM SET log_archive_max_processes=4 SCOPE=BOTH SID='*';<br />Mon Apr 10 23:33:39 2017<br />ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID='*';<br />Mon Apr 10 23:33:40 2017<br />ALTER SYSTEM SET db_file_name_convert='+DATA/RAC','/u01/app/oracle/oradata/STBY','+FRA/RAC','/u01/app/oracle/fast_recovery_area/STBY' SCOPE=SPFILE;<br />Mon Apr 10 23:33:40 2017<br />ALTER SYSTEM SET log_file_name_convert='+DATA/RAC','/u01/app/oracle/oradata/STBY','+FRA/RAC','/u01/app/oracle/fast_recovery_area/STBY' SCOPE=SPFILE;<br />Mon Apr 10 23:33:40 2017<br />******************************************************************<br />TT00: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2<br />******************************************************************<br />Mon Apr 10 23:33:41 2017<br />ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;<br />Mon Apr 10 23:33:41 2017<br />ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;<br />Mon Apr 10 23:33:41 2017<br />ALTER SYSTEM ARCHIVE LOG<br />Mon Apr 10 23:33:44 2017<br />Thread 1 advanced to log sequence 73 (LGWR switch)<br /> Current log# 1 seq# 73 mem# 0: /u01/app/oracle/oradata/STBY/onlinelog/group_1.283.931825279<br /> Current log# 1 seq# 73 mem# 1: /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_1.257.931825281<br />Mon Apr 10 23:33:46 2017<br />db_recovery_file_dest_size of 16384 MB is 0.73% used. This is a<br />user-specified limit on the amount of space that will be used by this<br />database for recovery-related files, and does not reflect the amount of<br />space available in the underlying filesystem or ASM diskgroup.<br />Mon Apr 10 23:33:46 2017<br />TT00: Standby redo logfile selected for thread 1 sequence 72 for destination LOG_ARCHIVE_DEST_2<br />Mon Apr 10 23:33:46 2017<br />Archived Log entry 48 added for thread 1 sequence 72 ID 0x96bd0722 dest 1:<br />Mon Apr 10 23:33:59 2017<br />TT00: Standby redo logfile selected for thread 1 sequence 73 for destination LOG_ARCHIVE_DEST_2<br />Mon Apr 10 23:34:47 2017<br />ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;<br />Mon Apr 10 23:41:17 2017<br />Shutting down instance (immediate)<br />Stopping background process SMCO<br />Shutting down instance: further logons disabled<br />Stopping background process CJQ0<br />Stopping background process MMNL<br />Stopping background process MMON<br />License high water mark = 11<br />ALTER DATABASE CLOSE NORMAL<br />Mon Apr 10 23:41:21 2017<br />SMON: disabling tx recovery<br />Mon Apr 10 23:41:21 2017<br />Stopping Emon pool<br />Stopping Emon pool<br />Mon Apr 10 23:41:22 2017<br />SMON: disabling cache recovery<br />Shutting down archive processes<br />Archiving is disabled<br />Mon Apr 10 23:41:24 2017<br />ARCH shutting down<br />Mon Apr 10 23:41:24 2017<br />ARC2: Archival stopped<br />Mon Apr 10 23:41:24 2017<br />ARCH shutting down<br />Mon Apr 10 23:41:24 2017<br />ARC3: Archival stopped<br />Mon Apr 10 23:41:24 2017<br />ARCH shutting down<br />ARC0: Relinquishing active heartbeat ARCH role<br />ARC0: Archival stopped<br />Mon Apr 10 23:41:24 2017<br />ARCH shutting down<br />ARC1: Archival stopped<br />Mon Apr 10 23:41:25 2017<br />Thread 1 closed at log sequence 73<br />Successful close of redo thread 1<br />Completed: ALTER DATABASE CLOSE NORMAL<br />ALTER DATABASE DISMOUNT<br />Shutting down archive processes<br />Archiving is disabled<br />Completed: ALTER DATABASE DISMOUNT<br />Mon Apr 10 23:41:26 2017<br />ARCH: Archival disabled due to shutdown: 1089<br />Shutting down archive processes<br />Archiving is disabled<br />Shutting down Data Guard Broker processes<br />Mon Apr 10 23:41:30 2017<br />Completed: Data Guard Broker shutdown<br />Mon Apr 10 23:41:32 2017<br />ARCH: Archival disabled due to shutdown: 1089<br />Shutting down archive processes<br />Archiving is disabled<br />Mon Apr 10 23:41:32 2017<br />Stopping background process VKTM<br />Mon Apr 10 23:41:35 2017<br />Instance shutdown complete<br />Mon Apr 10 23:41:44 2017<br />Starting ORACLE instance (normal) (OS id: 1281)<br />Mon Apr 10 23:41:44 2017<br />CLI notifier numLatches:3 maxDescs:354<br />Mon Apr 10 23:41:44 2017<br />Due to limited space in shared pool (need 6094848 bytes, have 4194112 bytes), limiting Resource Manager entities from 2048 to 32<br />Mon Apr 10 23:41:44 2017<br />**********************************************************************<br />Mon Apr 10 23:41:44 2017<br />Dump of system resources acquired for SHARED GLOBAL AREA (SGA)<br /><br />Mon Apr 10 23:41:44 2017<br /> Per process system memlock (soft) limit = 128G<br />Mon Apr 10 23:41:44 2017<br /> Expected per process system memlock (soft) limit to lock<br /> SHARED GLOBAL AREA (SGA) into memory: 802M<br />Mon Apr 10 23:41:44 2017<br /> Available system pagesizes:<br /> 4K, 2048K<br />Mon Apr 10 23:41:44 2017<br /> Supported system pagesize(s):<br />Mon Apr 10 23:41:44 2017<br /> PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES ERROR(s)<br />Mon Apr 10 23:41:44 2017<br /> 4K Configured 4 204804 NONE<br />Mon Apr 10 23:41:44 2017<br /> 2048K 0 401 0 NONE<br />Mon Apr 10 23:41:44 2017<br />RECOMMENDATION:<br />Mon Apr 10 23:41:44 2017<br /> 1. For optimal performance, configure system with expected number<br /> of pages for every supported system pagesize prior to the next<br /> instance restart operation.<br />Mon Apr 10 23:41:44 2017<br />**********************************************************************<br />LICENSE_MAX_SESSION = 0<br />LICENSE_SESSIONS_WARNING = 0<br />Initial number of CPU is 2<br />Number of processor cores in the system is 2<br />Number of processor sockets in the system is 1<br />_ksb_restart_policy_times={0,60,120,240}<br />Picked latch-free SCN scheme 3<br />Autotune of undo retention is turned on.<br />IMODE=BR<br />ILAT =35<br />LICENSE_MAX_USERS = 0<br />SYS auditing is enabled<br />NOTE: remote asm mode is local (mode 0x1; from cluster type)<br />NOTE: Using default ASM root directory ASM<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options.<br />ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1<br />System name: Linux<br />Node name: oem132.racattack<br />Release: 2.6.39-400.17.1.el6uek.x86_64<br />Version: #1 SMP Fri Feb 22 18:16:18 PST 2013<br />Machine: x86_64<br />Using parameter settings in server-side spfile /u01/app/oracle/product/12.1.0/dbhome_1/dbs/spfileSTBY.ora<br />System parameters with non-default values:<br /> _ksb_restart_policy_times= "0"<br /> _ksb_restart_policy_times= "60"<br /> _ksb_restart_policy_times= "120"<br /> _ksb_restart_policy_times= "240"<br /> sga_target = 800M<br /> control_files = "/u01/app/oracle/oradata/STBY/controlfile/o1_mf_ddbs0p3w_.ctl"<br /> control_files = "/u01/app/oracle/fast_recovery_area/STBY/controlfile/o1_mf_ddbs0p40_.ctl"<br /> db_file_name_convert = "+DATA/RAC"<br /> db_file_name_convert = "/u01/app/oracle/oradata/STBY"<br /> db_file_name_convert = "+FRA/RAC"<br /> db_file_name_convert = "/u01/app/oracle/fast_recovery_area/STBY"<br /> log_file_name_convert = "+DATA/RAC"<br /> log_file_name_convert = "/u01/app/oracle/oradata/STBY"<br /> log_file_name_convert = "+FRA/RAC"<br /> log_file_name_convert = "/u01/app/oracle/fast_recovery_area/STBY"<br /> compatible = "12.1.0.2.0"<br /> log_archive_dest_1 = "location=USE_DB_RECOVERY_FILE_DEST"<br /> log_archive_dest_1 = "valid_for=(ALL_LOGFILES, ALL_ROLES)"<br /> log_archive_dest_2 = "service="rac1""<br /> log_archive_dest_2 = "ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="rac" net_timeout=30"<br /> log_archive_dest_2 = "valid_for=(online_logfile,all_roles)"<br /> log_archive_dest_state_2 = "ENABLE"<br /> log_archive_min_succeed_dest= 1<br /> fal_server = "rac1"<br /> log_archive_trace = 0<br /> log_archive_config = "dg_config=(rac)"<br /> log_archive_format = "%t_%s_%r.dbf"<br /> log_archive_max_processes= 4<br /> log_buffer = 5064K<br /> archive_lag_target = 0<br /> db_create_file_dest = "/u01/app/oracle/oradata"<br /> db_recovery_file_dest = "/u01/app/oracle/fast_recovery_area"<br /> db_recovery_file_dest_size= 16G<br /> standby_file_management = "MANUAL"<br /> _compression_compatibility= "12.1.0.2.0"<br /> remote_login_passwordfile= "EXCLUSIVE"<br /> connection_brokers = "((TYPE=DEDICATED)(BROKERS=1))"<br /> connection_brokers = "((TYPE=EMON)(BROKERS=1))"<br /> plsql_warnings = "DISABLE:ALL"<br /> result_cache_max_size = 4M<br /> _gby_vector_aggregation_enabled= TRUE<br /> _optimizer_vector_transformation= TRUE<br /> core_dump_dest = "/u01/app/oracle/diag/rdbms/stby/STBY/cdump"<br /> db_name = "RAC"<br /> db_unique_name = "STBY"<br /> optimizer_mode = "ALL_ROWS"<br /> _optimizer_mode_force = TRUE<br /> _always_anti_join = "CHOOSE"<br /> _optimizer_null_aware_antijoin= TRUE<br /> _optimizer_partial_join_eval= TRUE<br /> _partition_view_enabled = TRUE<br /> _b_tree_bitmap_plans = TRUE<br /> _cpu_to_io = 0<br /> _optimizer_extended_cursor_sharing= "UDO"<br /> _optimizer_extended_cursor_sharing_rel= "SIMPLE"<br /> _optimizer_adaptive_cursor_sharing= TRUE<br /> _optimizer_cost_model = "CHOOSE"<br /> _optimizer_undo_cost_change= "12.1.0.2"<br /> _optimizer_system_stats_usage= TRUE<br /> _new_sort_cost_estimate = TRUE<br /> _complex_view_merging = TRUE<br /> _unnest_subquery = TRUE<br /> _optimizer_unnest_scalar_sq= TRUE<br /> _eliminate_common_subexpr= TRUE<br /> _pred_move_around = TRUE<br /> _convert_set_to_join = FALSE<br /> _px_ual_serial_input = TRUE<br /> _px_minus_intersect = TRUE<br /> _remove_aggr_subquery = TRUE<br /> _optimizer_push_down_distinct= 0<br /> _optimizer_cost_based_transformation= "LINEAR"<br /> _optimizer_squ_bottomup = TRUE<br /> _push_join_predicate = TRUE<br /> _push_join_union_view = TRUE<br /> _push_join_union_view2 = TRUE<br /> _fast_full_scan_enabled = TRUE<br /> _optimizer_skip_scan_enabled= TRUE<br /> _optimizer_join_sel_sanity_check= TRUE<br /> _optim_enhance_nnull_detection= TRUE<br /> _parallel_broadcast_enabled= TRUE<br /> _always_semi_join = "CHOOSE"<br /> _ordered_nested_loop = TRUE<br /> _optimizer_max_permutations= 2000<br /> _nlj_batching_enabled = 1<br /> query_rewrite_enabled = "TRUE"<br /> _mmv_query_rewrite_enabled= TRUE<br /> _local_communication_costing_enabled= TRUE<br /> _left_nested_loops_random= TRUE<br /> _improved_row_length_enabled= TRUE<br /> _index_join_enabled = TRUE<br /> _enable_type_dep_selectivity= TRUE<br /> _improved_outerjoin_card = TRUE<br /> _use_column_stats_for_function= TRUE<br /> _subquery_pruning_enabled= TRUE<br /> _subquery_pruning_mv_enabled= FALSE<br /> _or_expand_nvl_predicate = TRUE<br /> _table_scan_cost_plus_one= TRUE<br /> _cost_equality_semi_join = TRUE<br /> _new_initial_join_orders = TRUE<br /> _optim_peek_user_binds = TRUE<br /> _minimal_stats_aggregation= TRUE<br /> _gs_anti_semi_join_allowed= TRUE<br /> _optim_new_default_join_sel= TRUE<br /> optimizer_dynamic_sampling= 2<br /> _pre_rewrite_push_pred = TRUE<br /> _optimizer_new_join_card_computation= TRUE<br /> _union_rewrite_for_gs = "YES_GSET_MVS"<br /> _generalized_pruning_enabled= TRUE<br /> _optim_adjust_for_part_skews= TRUE<br /> _optimizer_compute_index_stats= TRUE<br /> _optimizer_push_pred_cost_based= TRUE<br /> _optimizer_extend_jppd_view_types= TRUE<br /> _optimizer_filter_pred_pullup= TRUE<br /> _optimizer_connect_by_cost_based= TRUE<br /> _optimizer_connect_by_combine_sw= TRUE<br /> _optimizer_connect_by_elim_dups= TRUE<br /> _connect_by_use_union_all= "TRUE"<br /> _right_outer_hash_enable = TRUE<br /> _replace_virtual_columns = TRUE<br /> skip_unusable_indexes = TRUE<br /> _optimizer_correct_sq_selectivity= TRUE<br /> _optimizer_dim_subq_join_sel= TRUE<br /> _query_rewrite_setopgrw_enable= TRUE<br /> _optimizer_join_order_control= 3<br /> _bloom_filter_enabled = TRUE<br /> _bloom_folding_enabled = TRUE<br /> _bloom_serial_filter = "ON"<br /> _optimizer_join_elimination_enabled= TRUE<br /> _gby_hash_aggregation_enabled= TRUE<br /> _globalindex_pnum_filter_enabled= TRUE<br /> _sql_model_unfold_forloops= "RUN_TIME"<br /> _optimizer_cost_hjsmj_multimatch= TRUE<br /> _optimizer_transitivity_retain= TRUE<br /> _px_pwg_enabled = TRUE<br /> _optimizer_cbqt_no_size_restriction= TRUE<br /> _optimizer_enhanced_filter_push= TRUE<br /> _optimizer_rownum_pred_based_fkr= TRUE<br /> _optimizer_better_inlist_costing= "ALL"<br /> _optimizer_or_expansion = "DEPTH"<br /> _optimizer_outer_to_anti_enabled= TRUE<br /> _optimizer_order_by_elimination_enabled= TRUE<br /> _optimizer_star_tran_in_with_clause= TRUE<br /> _optimizer_sortmerge_join_inequality= TRUE<br /> _selfjoin_mv_duplicates = TRUE<br /> _dimension_skip_null = TRUE<br /> _optimizer_complex_pred_selectivity= TRUE<br /> _bloom_pruning_enabled = TRUE<br /> _first_k_rows_dynamic_proration= TRUE<br /> _optimizer_distinct_elimination= TRUE<br /> _optimizer_multi_level_push_pred= TRUE<br /> _optimizer_group_by_placement= TRUE<br /> _optimizer_distinct_placement= TRUE<br /> _optimizer_coalesce_subqueries= TRUE<br /> _optimizer_enable_density_improvements= TRUE<br /> _optimizer_rownum_bind_default= 10<br /> _optimizer_improve_selectivity= TRUE<br /> _optimizer_native_full_outer_join= "FORCE"<br /> _optimizer_ansi_join_lateral_enhance= TRUE<br /> _optimizer_multi_table_outerjoin= TRUE<br /> _optimizer_null_accepting_semijoin= TRUE<br /> _optimizer_ansi_rearchitecture= TRUE<br /> _optimizer_aggr_groupby_elim= TRUE<br /> _optimizer_enable_extended_stats= TRUE<br /> _pivot_implementation_method= "CHOOSE"<br /> _optimizer_interleave_jppd= TRUE<br /> _optimizer_fkr_index_cost_bias= 10<br /> _optimizer_extended_stats_usage_control= 192<br /> _optimizer_fast_pred_transitivity= TRUE<br /> _optimizer_fast_access_pred_analysis= TRUE<br /> _optimizer_unnest_disjunctive_subq= TRUE<br /> _optimizer_unnest_corr_set_subq= TRUE<br /> _optimizer_distinct_agg_transform= TRUE<br /> _aggregation_optimization_settings= 0<br /> _optimizer_eliminate_filtering_join= TRUE<br /> _optimizer_join_factorization= TRUE<br /> _optimizer_use_cbqt_star_transformation= TRUE<br /> _optimizer_table_expansion= TRUE<br /> _and_pruning_enabled = TRUE<br /> _optimizer_use_feedback = TRUE<br /> _optimizer_gather_feedback= TRUE<br /> _optimizer_try_st_before_jppd= TRUE<br /> _px_partition_scan_enabled= TRUE<br /> _optimizer_false_filter_pred_pullup= TRUE<br /> _optimizer_enable_table_lookup_by_nl= TRUE<br /> _optimizer_cube_join_enabled= TRUE<br /> _optimizer_outer_join_to_inner= TRUE<br /> _optimizer_hybrid_fpwj_enabled= TRUE<br /> _px_object_sampling_enabled= TRUE<br /> _px_concurrent = TRUE<br /> _px_replication_enabled = TRUE<br /> _optimizer_full_outer_join_to_outer= TRUE<br /> _px_filter_parallelized = TRUE<br /> _px_filter_skew_handling = TRUE<br /> _px_groupby_pushdown = "FORCE"<br /> _px_parallelize_expression= TRUE<br /> _optimizer_gather_stats_on_load= TRUE<br /> _optimizer_batch_table_access_by_rowid= TRUE<br /> _px_wif_dfo_declumping = "CHOOSE"<br /> _px_wif_extend_distribution_keys= TRUE<br /> _px_join_skew_handling = TRUE<br /> _px_adaptive_dist_method = "CHOOSE"<br /> _px_partial_rollup_pushdown= "ADAPTIVE"<br /> _optimizer_dsdir_usage_control= 126<br /> _px_cpu_autodop_enabled = TRUE<br /> _px_single_server_enabled= TRUE<br /> _optimizer_use_gtt_session_stats= TRUE<br /> _optimizer_adaptive_plans= TRUE<br /> _optimizer_strans_adaptive_pruning= TRUE<br /> _optimizer_proc_rate_level= "BASIC"<br /> _optimizer_use_histograms= TRUE<br /> _adaptive_window_consolidator_enabled= TRUE<br /> _optimizer_cluster_by_rowid= TRUE<br /> _optimizer_cluster_by_rowid_control= 129<br /> _distinct_agg_optimization_gsets= "CHOOSE"<br /> _px_scalable_invdist = TRUE<br /> _optimizer_reduce_groupby_key= TRUE<br /> _optimizer_cluster_by_rowid_batched= TRUE<br /> _optimizer_inmemory_table_expansion= TRUE<br /> _optimizer_inmemory_gen_pushable_preds= TRUE<br /> _optimizer_inmemory_autodop= TRUE<br /> _optimizer_inmemory_access_path= TRUE<br /> _px_external_table_default_stats= TRUE<br /> _optimizer_nlj_hj_adaptive_join= TRUE<br /> _optimizer_inmemory_bloom_filter= TRUE<br /> _optimizer_inmemory_cluster_aware_dop= TRUE<br /> _optimizer_inmemory_minmax_pruning= TRUE<br /> dg_broker_start = TRUE<br /> _diag_adr_trace_dest = "/u01/app/oracle/diag/rdbms/stby/STBY/trace"<br /> enable_pluggable_database= TRUE<br />NOTE: remote asm mode is local (mode 0x1; from cluster type)<br />Starting background process PMON<br />Mon Apr 10 23:41:46 2017<br />PMON started with pid=2, OS id=1315<br />Starting background process PSP0<br />Mon Apr 10 23:41:46 2017<br />PSP0 started with pid=3, OS id=1317<br />Starting background process VKTM<br />Starting background process GEN0<br />Mon Apr 10 23:41:47 2017<br />VKTM started with pid=4, OS id=1321 at elevated (RT) priority<br />Mon Apr 10 23:41:47 2017<br />VKTM running at (1)millisec precision with DBRM quantum (100)ms<br />Mon Apr 10 23:41:47 2017<br />GEN0 started with pid=5, OS id=1327<br />Starting background process MMAN<br />Mon Apr 10 23:41:47 2017<br />MMAN started with pid=6, OS id=1329<br />Starting background process DIAG<br />Starting background process DBRM<br />Mon Apr 10 23:41:47 2017<br />DIAG started with pid=8, OS id=1333<br />Starting background process VKRM<br />Mon Apr 10 23:41:47 2017<br />DBRM started with pid=9, OS id=1335<br />Starting background process DIA0<br />Mon Apr 10 23:41:47 2017<br />VKRM started with pid=10, OS id=1337<br />Starting background process DBW0<br />Mon Apr 10 23:41:47 2017<br />DIA0 started with pid=11, OS id=1339<br />Starting background process LGWR<br />Mon Apr 10 23:41:47 2017<br />DBW0 started with pid=12, OS id=1342<br />Starting background process CKPT<br />Mon Apr 10 23:41:47 2017<br />LGWR started with pid=13, OS id=1344<br />Mon Apr 10 23:41:47 2017<br />CKPT started with pid=14, OS id=1347<br />Starting background process SMON<br />Mon Apr 10 23:41:47 2017<br />SMON started with pid=16, OS id=1355<br />Starting background process RECO<br />Starting background process LREG<br />Mon Apr 10 23:41:47 2017<br />RECO started with pid=18, OS id=1359<br />Starting background process PXMN<br />Mon Apr 10 23:41:47 2017<br />LREG started with pid=19, OS id=1361<br />Starting background process MMON<br />Mon Apr 10 23:41:47 2017<br />PXMN started with pid=20, OS id=1363<br />Starting background process MMNL<br />Mon Apr 10 23:41:47 2017<br />MMON started with pid=21, OS id=1365<br />Starting background process DMON<br />Mon Apr 10 23:41:47 2017<br />MMNL started with pid=22, OS id=1367<br />ORACLE_BASE from environment = /u01/app/oracle<br />Mon Apr 10 23:41:47 2017<br />DMON started with pid=23, OS id=1369<br />Mon Apr 10 23:41:47 2017<br />ALTER DATABASE MOUNT<br />Mon Apr 10 23:41:50 2017<br />Using default pga_aggregate_limit of 2048 MB<br />Mon Apr 10 23:41:52 2017<br />Successful mount of redo thread 1, with mount id 2528976638<br />Mon Apr 10 23:41:52 2017<br />Database mounted in Exclusive Mode<br />Lost write protection disabled<br />Completed: ALTER DATABASE MOUNT<br />Mon Apr 10 23:41:55 2017<br />ALTER DATABASE OPEN<br />Mon Apr 10 23:41:55 2017<br />Data Guard Broker initializing...<br />Mon Apr 10 23:41:55 2017<br />Starting Data Guard Broker (DMON)<br />Starting background process INSV<br />Mon Apr 10 23:41:55 2017<br />INSV started with pid=24, OS id=1402<br />Mon Apr 10 23:41:56 2017<br />Data Guard Broker initialization complete<br />Data Guard: verifying database primary role...<br />Starting background process NSV0<br />Mon Apr 10 23:41:58 2017<br />NSV0 started with pid=25, OS id=1410<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac_DGB.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:01<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac_DGB.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:01<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac_DGB.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:01<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac_DGB.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:01<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:01<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:01<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:01<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:01<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac_DGB.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:11<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac_DGB.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:11<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac_DGB.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:11<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=rac_DGB.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:11<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:11<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:11<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:11<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:11<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br />Starting background process RSM0<br />Mon Apr 10 23:42:11 2017<br />RSM0 started with pid=26, OS id=1452<br />Mon Apr 10 23:42:12 2017<br />Data Guard: version check completed<br />Data Guard: primary role verified<br />Ping without log force is disabled<br />.<br />Starting background process TMON<br />Mon Apr 10 23:42:12 2017<br />LGWR: STARTING ARCH PROCESSES<br />Starting background process ARC0<br />Mon Apr 10 23:42:12 2017<br />TMON started with pid=27, OS id=1456<br />Mon Apr 10 23:42:12 2017<br />ARC0 started with pid=28, OS id=1460<br />ARC0: Archival started<br />LGWR: STARTING ARCH PROCESSES COMPLETE<br />Mon Apr 10 23:42:12 2017<br />ARC0: STARTING ARCH PROCESSES<br />Starting background process ARC1<br />Mon Apr 10 23:42:12 2017<br />ARC1 started with pid=29, OS id=1462<br />Starting background process ARC2<br />Starting background process ARC3<br />Mon Apr 10 23:42:13 2017<br />ARC2 started with pid=30, OS id=1464<br />Mon Apr 10 23:42:13 2017<br />ARC3 started with pid=31, OS id=1466<br />ARC1: Archival started<br />ARC2: Archival started<br />Mon Apr 10 23:42:13 2017<br />ARC1: Becoming the 'no FAL' ARCH<br />ARC1: Becoming the 'no SRL' ARCH<br />Mon Apr 10 23:42:13 2017<br />ARC2: Becoming the heartbeat ARCH<br />Mon Apr 10 23:42:13 2017<br />ARC3: Archival started<br />ARC0: STARTING ARCH PROCESSES COMPLETE<br />Mon Apr 10 23:42:13 2017<br />Thread 1 advanced to log sequence 74 (thread open)<br />Thread 1 opened at log sequence 74<br /> Current log# 2 seq# 74 mem# 0: /u01/app/oracle/oradata/STBY/onlinelog/group_2.284.931825283<br /> Current log# 2 seq# 74 mem# 1: /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_2.258.931825287<br />Successful open of redo thread 1<br />Mon Apr 10 23:42:13 2017<br />MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set<br />Mon Apr 10 23:42:13 2017<br />SMON: enabling cache recovery<br />Mon Apr 10 23:42:13 2017<br />******************************************************************<br />TT00: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2<br />******************************************************************<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:13<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:13<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:13<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:13<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br />Error 12528 received logging on to the standby<br />Mon Apr 10 23:42:13 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_tt00_1468.trc:<br />ORA-12528: TNS:listener: all appropriate instances are blocking new connections<br />Error 12528 for archive log file 2 to 'rac1'<br />Mon Apr 10 23:42:13 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_tt00_1468.trc:<br />ORA-12528: TNS:listener: all appropriate instances are blocking new connections<br />Mon Apr 10 23:42:13 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_tt00_1468.trc:<br />ORA-12528: TNS:listener: all appropriate instances are blocking new connections<br />Mon Apr 10 23:42:13 2017<br />Archived Log entry 52 added for thread 1 sequence 73 ID 0x96bd0722 dest 1:<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:13<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:13<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:13<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:13<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br />Error 12528 received logging on to the standby<br />Mon Apr 10 23:42:13 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_arc0_1460.trc:<br />ORA-12528: TNS:listener: all appropriate instances are blocking new connections<br />FAL[server, ARC0]: Error 12528 creating remote archivelog file 'rac1'<br />ARC0: FAL archive failed with error 12528. See trace for details<br />Mon Apr 10 23:42:13 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_arc0_1460.trc:<br />ORA-16055: FAL request rejected<br />ARCH: FAL archive failed. Archiver continuing<br />Mon Apr 10 23:42:13 2017<br />ORACLE Instance STBY - Archival Error. Archiver continuing.<br />Mon Apr 10 23:42:14 2017<br />[1400] Successfully onlined Undo Tablespace 2.<br />Undo initialization finished serial:0 start:4809484 end:4810074 diff:590 ms (0.6 seconds)<br />Verifying minimum file header compatibility (11g) for tablespace encryption..<br />Verifying 11g file header compatibility for tablespace encryption completed<br />Mon Apr 10 23:42:14 2017<br />SMON: enabling tx recovery<br />Starting background process SMCO<br />Mon Apr 10 23:42:14 2017<br />SMCO started with pid=34, OS id=1474<br />Mon Apr 10 23:42:14 2017<br />Database Characterset is AL32UTF8<br />No Resource Manager plan active<br />Mon Apr 10 23:42:16 2017<br />Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST<br />Mon Apr 10 23:42:16 2017<br />******************************************************************<br />TT00: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2<br />******************************************************************<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br />Error 12528 received logging on to the standby<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br />Mon Apr 10 23:42:16 2017<br />Error 12528 received logging on to the standby<br />Mon Apr 10 23:42:16 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_arc2_1464.trc:<br />ORA-12528: TNS:listener: all appropriate instances are blocking new connections<br />PING[ARC2]: Heartbeat failed to connect to standby 'rac1'. Error is 12528.<br />Mon Apr 10 23:42:16 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_tt00_1468.trc:<br />ORA-12528: TNS:listener: all appropriate instances are blocking new connections<br />Mon Apr 10 23:42:16 2017<br />Error 12528 for archive log file 2 to 'rac1'<br />Mon Apr 10 23:42:16 2017<br />ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=BOTH;<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br /><br /><br />***********************************************************************<br /><br />Fatal NI connect error 12528, connecting to:<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.78.61)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=RAC.racattack)(CID=(PROGRAM=oracle)(HOST=oem132.racattack)(USER=oracle))))<br /><br /> VERSION INFORMATION:<br /> TNS for Linux: Version 12.1.0.2.0 - Production<br /> TCP/IP NT Protocol Adapter for Linux: Version 12.1.0.2.0 - Production<br /> Time: 10-APR-2017 23:42:16<br /> Tracing not turned on.<br /> Tns error struct:<br /> ns main err code: 12564<br /><br />TNS-12564: TNS:connection refused<br /> ns secondary err code: 0<br /> nt main err code: 0<br /> nt secondary err code: 0<br /> nt OS err code: 0<br />Mon Apr 10 23:42:16 2017<br />Error 12528 received logging on to the standby<br />Mon Apr 10 23:42:16 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_arc2_1464.trc:<br />ORA-12528: TNS:listener: all appropriate instances are blocking new connections<br />PING[ARC2]: Heartbeat failed to connect to standby 'rac1'. Error is 12528.<br />Mon Apr 10 23:42:17 2017<br />ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='STBY';<br />Mon Apr 10 23:42:17 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_tt00_1468.trc:<br />ORA-12528: TNS:listener: all appropriate instances are blocking new connections<br />Mon Apr 10 23:42:17 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_tt00_1468.trc:<br />ORA-12528: TNS:listener: all appropriate instances are blocking new connections<br />Mon Apr 10 23:42:17 2017<br />ALTER SYSTEM SET log_archive_format='%t_%s_%r.dbf' SCOPE=SPFILE SID='STBY';<br />Mon Apr 10 23:42:17 2017<br />replication_dependency_tracking turned off (no async multimaster replication found)<br />Mon Apr 10 23:42:18 2017<br />Thread 1 advanced to log sequence 75 (LGWR switch)<br /> Current log# 1 seq# 75 mem# 0: /u01/app/oracle/oradata/STBY/onlinelog/group_1.283.931825279<br /> Current log# 1 seq# 75 mem# 1: /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_1.257.931825281<br />Mon Apr 10 23:42:18 2017<br />Archived Log entry 53 added for thread 1 sequence 74 ID 0x96bd0722 dest 1:<br />Starting background process AQPC<br />Mon Apr 10 23:42:18 2017<br />AQPC started with pid=37, OS id=1489<br />Mon Apr 10 23:42:21 2017<br />Database Characterset for PDB$SEED is AL32UTF8<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Opening pdb PDB$SEED (2) with no Resource Manager plan active<br />Mon Apr 10 23:42:35 2017<br />ALTER SYSTEM SET log_archive_dest_state_2='RESET' SCOPE=BOTH;<br />Starting background process CJQ0<br />Completed: ALTER DATABASE OPEN<br />Mon Apr 10 23:42:39 2017<br />CJQ0 started with pid=50, OS id=1904<br />Mon Apr 10 23:42:58 2017<br />Shared IO Pool defaulting to 36MB. Trying to get it from Buffer Cache for process 1365.<br />===========================================================<br />Dumping current patch information<br />===========================================================<br />No patches have been applied<br />===========================================================<br />Mon Apr 10 23:42:59 2017<br />db_recovery_file_dest_size of 16384 MB is 0.84% used. This is a<br />user-specified limit on the amount of space that will be used by this<br />database for recovery-related files, and does not reflect the amount of<br />space available in the underlying filesystem or ASM diskgroup.<br />alter pluggable database pdb open<br />Mon Apr 10 23:43:00 2017<br />Database Characterset for PDB is AL32UTF8<br />Due to limited space in shared pool (need 6094848 bytes, have 3981120 bytes), limiting Resource Manager entities from 2048 to 32<br />Mon Apr 10 23:43:15 2017<br />Opening pdb PDB (3) with no Resource Manager plan active<br />Pluggable database PDB opened read write<br />Completed: alter pluggable database pdb open<br />Mon Apr 10 23:45:07 2017<br />alter pluggable database pdb close<br />ALTER SYSTEM: Flushing buffer cache inst=0 container=3 local<br />Mon Apr 10 23:45:12 2017<br />Pluggable database PDB closed<br />Completed: alter pluggable database pdb close<br />Shutting down instance (immediate)<br />Stopping background process SMCO<br />Shutting down instance: further logons disabled<br />Stopping background process CJQ0<br />Killed process oracle@oem132.racattack (Q002) with pid is 48, OS pid 1537<br />Stopping background process MMNL<br />Stopping background process MMON<br />License high water mark = 9<br />ALTER DATABASE CLOSE NORMAL<br />Mon Apr 10 23:45:20 2017<br />SMON: disabling tx recovery<br />Mon Apr 10 23:45:20 2017<br />Stopping Emon pool<br />Stopping Emon pool<br />Mon Apr 10 23:45:20 2017<br />SMON: disabling cache recovery<br />Shutting down archive processes<br />Archiving is disabled<br />Mon Apr 10 23:45:24 2017<br />ARCH shutting down<br />Mon Apr 10 23:45:24 2017<br />ARCH shutting down<br />ARC2: Archival stopped<br />Mon Apr 10 23:45:24 2017<br />ARC3: Archival stopped<br />Mon Apr 10 23:45:24 2017<br />ARCH shutting down<br />Mon Apr 10 23:45:24 2017<br />Mon Apr 10 23:45:24 2017<br />ARC1: Archival stoppedARCH shutting down<br /><br />Mon Apr 10 23:45:24 2017<br />ARC0: Archival stopped<br />Mon Apr 10 23:45:25 2017<br />Thread 1 closed at log sequence 75<br />Successful close of redo thread 1<br />Completed: ALTER DATABASE CLOSE NORMAL<br />ALTER DATABASE DISMOUNT<br />Shutting down archive processes<br />Archiving is disabled<br />Completed: ALTER DATABASE DISMOUNT<br />Mon Apr 10 23:45:27 2017<br />ARCH: Archival disabled due to shutdown: 1089<br />Shutting down archive processes<br />Archiving is disabled<br />Shutting down Data Guard Broker processes<br />Mon Apr 10 23:45:31 2017<br />Completed: Data Guard Broker shutdown<br />Mon Apr 10 23:45:33 2017<br />Mon Apr 10 23:45:33 2017<br />ARCH: Archival disabled due to shutdown: 1089<br />Stopping background process VKTM<br />Shutting down archive processes<br />Archiving is disabled<br />Mon Apr 10 23:45:41 2017<br />Instance shutdown complete<br /></pre><br /><br />Ignore the Fatal NI and TNS errrors. &nbsp;I plan to address them later.<br /><br />.<br />.<br />.<br /><br /></div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-5558621891833977620 Tue Apr 11 2017 11:21:00 GMT-0400 (EDT) Oracle Database 12.2 New Feature ‚Äď Pluggable Database Performance Profiles http://gavinsoorma.com/2017/04/oracle-database-12-2-new-feature-pluggable-database-performance-profiles/ <p>In the earlier 12.1.0.2 Oracle database version, we could limit the amount of CPU utilization as well as Parallel Server allocation at the PDB level via Resource Plans.</p> <p>Now in 12c Release 2, we can not only regulate CPU and Parallelism at the Pluggable database level, but in addition <strong><em>we can also restrict the amount of memory that each PDB hosted by a Container Database (CDB) uses</em></strong>.</p> <p>Further, we can also limit the amount of I/O operations that each PDB performs so that now we have a far improved Resource Manager at work ensuring that no PDB hogs all the CPU or the IO because of maybe some runaway query and thereby impacts the other PDBs hosted in the same PDB.</p> <p>We can now limit the amount of SGA or PGA that an individual PDB can utilize as well as ensure that certain PDBs always are ensured a minimum level of both available SGA and PGA memory.</p> <p>For example we can now issue SQL statements like these while connected to the individual PDB.</p> <p>&nbsp;</p> <pre>SQL&gt; ALTER SYSTEM SET SGA_TARGET = 500M SCOPE = BOTH; SQL&gt; ALTER SYSTEM SET SGA_MIN_SIZE = 300M SCOPE = BOTH; SQL&gt; ALTER SYSTEM SET PGA_AGGREGATE_LIMIT = 200M SCOPE = BOTH; SQL&gt; ALTER SYSTEM SET MAX_IOPS = 10000 SCOPE = BOTH; </pre> <p>&nbsp;<br /> Another 12c Release 2 New Feature related to Multitenancy is <strong>Performance Profiles</strong>.</p> <p>With <strong>Performance Profiles</strong> we can manage resources for large numbers of PDBs by specifying Resource Manager directives for profiles instead for each individual PDB.</p> <p>These profiles are then allocated to the PDB via the initialization parameter <strong>DB_PERFORMANCE_PROFILE</strong></p> <p>Let us look at a worked example of Performance Profiles.</p> <p>In this example we have three PDBs (PDB1, PDB2 and PDB3) hosted in the container database CDB1. PDB1 pluggable database hosts some mission critical applications and we need to ensure that PDB1 gets a higher share of memory,I/O as well as CPU resources as compared to PDB2 and PDB3.</p> <p>So we will be enforcing this resource allocation via two sets of Performance Profiles &#8211; we call those TIER1 and TIER2.</p> <p>Here are the steps:</p> <p>&nbsp;</p> <p><strong>Create a Pending Area</strong></p> <p>&nbsp;</p> <pre>SQL&gt; exec DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA (); PL/SQL procedure successfully completed.</pre> <p>&nbsp;</p> <p>&nbsp;</p> <p><strong>Create a CDB Resource Plan </strong><br /> &nbsp;</p> <pre>SQL&gt; BEGIN ¬†DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN( ¬†¬†¬†plan¬†¬†¬†=&gt; 'profile_plan', ¬†¬†¬†comment =&gt; 'Performance Profile Plan allocating highest share of resources to PDB1'); END; /¬† PL/SQL procedure successfully completed. </pre> <p>&nbsp;<br /> <strong>Create the CDB resource plan directives for the PDBs</strong></p> <p>Tier 1 performance profile ensures at least 60% (3 shares) of available CPU and parallel server resources and no upper limit on CPU utilization or parallel server execution. In addition it ensures a minimum allocation of at least 50% of available memory.</p> <p>&nbsp;</p> <pre>SQL&gt; BEGIN DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE( plan¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†=&gt; 'profile_plan', profile¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†=&gt; 'Tier1', shares¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†=&gt; 3, memory_min¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†=&gt; 50); END; / PL/SQL procedure successfully completed.</pre> <p>&nbsp;</p> <p>Tier 2 performance profile is more restrictive in the sense that it has fewer shares as compared to Tier 1 and limits the amount of CPU/Parallel server usage to 40% as well as limits the amount of memory usage at the PDB level to a maximum of 25% of available memory.</p> <p>&nbsp;</p> <pre>SQL&gt; BEGIN ¬†DBMS_RESOURCE_MANAGER.CREATE_CDB_PROFILE_DIRECTIVE( ¬†¬†¬†plan¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†=&gt; 'profile_plan', ¬†¬†¬†profile¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†=&gt; 'Tier2', ¬†¬†¬†shares¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†=&gt; 2, ¬†¬†¬†utilization_limit¬†¬†¬†¬†=&gt; 40, ¬†¬†¬†memory_limit¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†=&gt; 25); END; /¬†¬†¬† PL/SQL procedure successfully completed.</pre> <p>&nbsp;</p> <p><strong>Validate and Submit the Pending Area </strong></p> <p>&nbsp;</p> <pre>SQL&gt; exec DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA(); PL/SQL procedure successfully completed. SQL&gt; exec DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA(); PL/SQL procedure successfully completed. </pre> <p>&nbsp;<br /> <strong>Allocate Performance Profiles to PDBs</strong></p> <p>&nbsp;</p> <p>TIER1 Performance Profile is allocated to PDB1 and TIER2 Performance Profile is allocated to PDB2 and PDB3.</p> <p>&nbsp;</p> <pre>SQL&gt; alter session set container=pdb1; Session altered. SQL&gt; alter system set DB_PERFORMANCE_PROFILE='TIER1' scope=spfile; System altered. SQL&gt; alter session set container=pdb2; Session altered. SQL&gt; alter system set DB_PERFORMANCE_PROFILE='TIER2' scope=spfile; System altered. SQL&gt; alter session set container=pdb3; Session altered. SQL&gt; alter system set DB_PERFORMANCE_PROFILE='TIER2' scope=spfile; System altered.</pre> <p>&nbsp;</p> <p><strong>Set the Resource Plan at the CDB level </strong></p> <p>&nbsp;</p> <pre>SQL&gt; conn / as sysdba Connected. SQL&gt; alter system set resource_manager_plan='PROFILE_PLAN' scope=both; System altered.</pre> <p>&nbsp;</p> <p><strong>Set the Performance Profiles at the PDB level </strong></p> <p>&nbsp;</p> <pre>SQL&gt; alter pluggable database all close immediate; Pluggable database altered. SQL&gt; alter pluggable database all open; Pluggable database altered. </pre> <p>&nbsp;<br /> <strong>Monitor memory utilization at PDB level </strong></p> <p>&nbsp;</p> <p>The V$RSRCPDBMETRIC view enables us to track the amount memory used by PDBs.</p> <p>We can see that the PDB1 belonging to the profile TIER1 has almost double the memory allocated to the other two PDBs in profile TIER2.</p> <p><img src="https://media.licdn.com/mpr/mpr/AAEAAQAAAAAAAAsiAAAAJDEzNmRmYzk4LThkN2YtNDg5Yi05MzdmLWI2YjRhYzhkMzYzNw.png" /></p> <p>Oracle 12.2 has a lot of new exciting features. <strong>Learn all about these at a forthcoming online training session</strong>. Contact <strong>prosolutions@gavinsoorma.com</strong> to register interest!</p> Gavin Soorma http://gavinsoorma.com/?p=7503 Tue Apr 11 2017 01:17:23 GMT-0400 (EDT) Late to the Docker game? http://dbaontap.com/2017/04/10/late-docker-game/ <p>Late to the Docker Game? Wondering What All the Fuss is About? What is Docker? To answer this question, let‚Äôs talk about what Docker is not. While you can write scripts to interact with Docker, it is not a programming language. The natural response when working with Docker containers is to attempt to frame it ...</p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/04/10/late-docker-game/">Late to the Docker game?</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">dbaonTap</a>.</p> DB http://dbaontap.com/?p=1218 Mon Apr 10 2017 23:46:44 GMT-0400 (EDT) Ask Jonathan https://jonathanlewis.wordpress.com/2017/04/10/ask-jonathan/ <p>Oracle Scene, the magazine of the UK Oracle User Group is piloting a new regular feature called <em><strong>Ask Jonathan</strong></em>,¬† a chance to get an answer to any question you may have about how the Oracle database engine works.</p> <p>I&#8217;m aiming to answer two or three questions per issue over the course of the year, using a format similar to the one Tom Kyte used in Oracle Magazine:¬† so if you have a question about the mechanisms, strategies, or mathematics of how Oracle does its thing then attach it as a comment to this posting.</p> <p>Ideally the questions will have to be quite short (no 20MB trace files, massive schema definitions, or convoluted and exotic setup requirements or it will be too long), and I&#8217;ll aim to write something like half a page of in response.¬† I may summarise the question, or pick out the most interesting feature if it&#8217;s a bit too long to publish and answer in its entirety.</p> <p>&nbsp;</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/17003/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/17003/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=17003&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=17003 Mon Apr 10 2017 15:01:57 GMT-0400 (EDT) Have a #GoldenGate question? ‚Ķ Go askTom https://dbasolved.com/2017/04/10/goldengate-question-go-asktom/ <p><a href="http://www.oracle.com/us/products/middleware/data-integration/goldengate/overview/index.html"><img src="https://curtisbl.files.wordpress.com/2017/04/di_image.jpg?w=325&#038;h=128" align="middle" width="325" height="128" class="aligncenter"></a></p> <p>&nbsp;</p> <p dir="auto">A little over two weeks ago, I attended my first Customer Advisory Board (CAB) as a product manager for the Oracle GoldenGate platform. It was very interesting being involved in the CAB from an Oracle stand point compared to a customer view point. As part of the CAB, the product management team asked customers what would be helpful in giving themselves and their organizations more insight to Oracle GoldenGate. There were many things that came out of that discussion. On thing that stuck out to me was that customers wanted a place where they could ask questions and get answers directly from Oracle experts.</p> <p dir="auto">In listening to these requests, many in product management thought that the <a href="https://community.oracle.com/community/support/middleware" target="_blank">MOSC</a> and <a href="https://community.oracle.com/welcome" target="_blank">OTN</a> forums were a place for people to get this interaction; which they are and customers should use them as well. The customers agreed, but also wanted a site that is not as complex as MOSC and OTN; basically they didn‚Äôt want to login to ask questions. Additionally, when I took a look around the MOSC and OTN forums, it is not obvious that there is a place to ask GoldenGate questions. </p> <p dir="auto">With keeping things simple in mind, I discussed with others on the GoldenGate PM team and then sought the advice of The Oracle Masters (<a href="https://asktom.oracle.com/pls/apex/f?p=100:1:0" target="_blank">TOM</a>) to see if it was possible to include GoldenGate as a topic area on the <a href="https://asktom.oracle.com/pls/apex/f?p=100:1:0" target="_blank">askTOM</a> forum. To my surprise, the <a href="https://asktom.oracle.com/pls/apex/f?p=100:1:0" target="_blank">TOM</a> team was willing to include a GoldenGate topic area on the forums. Thanks <a href="https://connormcdonald.wordpress.com/" target="_blank">Connor McDonald</a> (@connor_mc_d), <a href="https://blogs.oracle.com/sql/" target="_blank">Chris Saxon</a> (@chrisrsaxon), and <a href="https://sqlmaria.com/" target="_blank">Maria Colgan</a> (@sqlmaria)! <img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p dir="auto">With this forum now avaliable to ask GoldenGate questions, you can send in your GoldenGate related questions and get answers from this GoldenGate PM. All that is asked of you is for you to follow the same rules you would when asking a database related question on askTOM (<a href="https://asktom.oracle.com/pls/apex/f?p=100:41:::NO:41::" target="_blank">Asking Questions</a>). The more details and thourgh your question is, the better the GoldenGate team can answer your question. </p> <p dir="auto">Happy Question Asking!!! And this GoldenGate PM look forward to interacting with you on this forum.</p> <p dir="auto">Enjoy!!!</p> <p dir="auto"><a href="http://about.me/dbasolved" rel="nofollow">http://about.me/dbasolved</a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p><br />Filed under: <a href='https://dbasolved.com/category/replication-2/golden-gate/'>Golden Gate</a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=dbasolved.com&#038;blog=41578630&#038;post=1628&#038;subd=curtisbl&#038;ref=&#038;feed=1" width="1" height="1" /> curtisbl http://dbasolved.com/?p=1628 Mon Apr 10 2017 12:00:00 GMT-0400 (EDT) 12cR1 RAC Posts -- 8g : Switchover from RAC Primary to SingleInstance Standby http://hemantoracledba.blogspot.com/2017/04/12cr1-rac-posts-8g-switchover-from-rac.html <div dir="ltr" style="text-align: left;" trbidi="on">Continuing this series of posts where I have a SingleInstance/FileSystem Standby database for a RAC/ASM database ...<br /><br /><br />Checking the status of the configuration :<br /><br /><pre>DGMGRL&gt; show configuration;<br /><br />Configuration - rac<br /><br /> Protection Mode: MaxPerformance<br /> Members:<br /> rac - Primary database<br /> stby - Physical standby database<br /><br />Fast-Start Failover: DISABLED<br /><br />Configuration Status:<br />SUCCESS (status updated 28 seconds ago)<br /><br />DGMGRL&gt;<br /><br /><br />SQL&gt; select thread#, max(sequence#)<br /> 2 from v$archived_log<br /> 3 group by thread#<br /> 4 order by 1<br /> 5 /<br /><br /> THREAD# MAX(SEQUENCE#)<br />---------- --------------<br /> 1 66<br /> 2 36<br /><br />SQL&gt; alter system archive log current;<br /><br />System altered.<br /><br /><br />RFS[2]: Selected log 8 for thread 2 sequence 38 dbid 2519807290 branch 931825279<br />Mon Apr 10 23:03:17 2017<br />Archived Log entry 39 added for thread 2 sequence 37 ID 0x96312536 dest 1:<br />Mon Apr 10 23:03:18 2017<br />Media Recovery Waiting for thread 2 sequence 38 (in transit)<br />Mon Apr 10 23:03:18 2017<br />Recovery of Online Redo Log: Thread 2 Group 8 Seq 38 Reading mem 0<br /> Mem# 0: /u01/app/oracle/oradata/STBY/onlinelog/group_8.300.937936389<br /> Mem# 1: /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_8.306.937936389<br />RFS[1]: Selected log 6 for thread 1 sequence 68 dbid 2519807290 branch 931825279<br />Mon Apr 10 23:03:23 2017<br />Archived Log entry 40 added for thread 1 sequence 67 ID 0x96312536 dest 1:<br />Mon Apr 10 23:03:23 2017<br />Media Recovery Waiting for thread 1 sequence 68 (in transit)<br />Mon Apr 10 23:03:23 2017<br />Recovery of Online Redo Log: Thread 1 Group 6 Seq 68 Reading mem 0<br /> Mem# 0: /u01/app/oracle/oradata/STBY/onlinelog/group_6.298.937936361<br /> Mem# 1: /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_6.304.937936363<br /></pre><br /><br />The&nbsp;dgmgrl status&nbsp;above is from node1 (collabn1) of the RAC (Primary)database.<br />The query on v$archived_log is from node2 (collabn2), instance RAC2 of the RAC (Primary)&nbsp;database.<br />The listing of messages in the alert log are from the Standby database.<br /><br />Let me add some rows to the data I have in the PDB in the RAC database.<br /><br /><pre>[oracle@collabn1 ~]$ sqlplus hemant/hemant@PDB<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Mon Apr 10 23:06:31 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />Last Successful login time: Mon Apr 03 2017 22:49:41 +08:00<br /><br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,<br />Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; select count(*) from my_data;<br /><br /> COUNT(*)<br />----------<br /> 100<br /><br />SQL&gt; insert into my_data select rownum+100, to_char(rownum+100)<br /> 2 from dual<br /> 3 connect by level &lt; 201;<br /><br />200 rows created.<br /><br />SQL&gt; select count(*) from my_data;<br /><br /> COUNT(*)<br />----------<br /> 300<br /><br />SQL&gt; commit;<br /><br />Commit complete.<br /><br />SQL&gt;<br /></pre><br /><br />Let me try a SWITCHOVER now.<br /><br /><pre>DGMGRL&gt; show configuration;<br /><br />Configuration - rac<br /><br /> Protection Mode: MaxPerformance<br /> Members:<br /> rac - Primary database<br /> stby - Physical standby database<br /><br />Fast-Start Failover: DISABLED<br /><br />Configuration Status:<br />SUCCESS (status updated 102 seconds ago)<br /><br />DGMGRL&gt; switchover to stby;<br />Performing switchover NOW, please wait...<br />Operation requires a connection to instance "STBY" on database "stby"<br />Connecting to instance "STBY"...<br />Connected as SYSDBA.<br />New primary database "stby" is opening...<br />Oracle Clusterware is restarting database "rac" ...<br />Switchover succeeded, new primary is "stby"<br />DGMGRL&gt;<br /></pre><br /><br />Querying on the new "standby" that is RAC :<br /><br /><pre>[oracle@collabn1 ~]$ sqlplus '/ as sysdba'<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Mon Apr 10 23:36:12 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br /><br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,<br />Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; select open_mode, database_role from v$database;<br /><br />OPEN_MODE DATABASE_ROLE<br />-------------------- ----------------<br />MOUNTED PHYSICAL STANDBY<br /><br />SQL&gt; select instance_name, host_name from gv$instance;<br /><br />INSTANCE_NAME<br />----------------<br />HOST_NAME<br />----------------------------------------------------------------<br />RAC1<br />collabn1.racattack<br /><br />RAC2<br />collabn2.racattack<br /><br /><br />SQL&gt;<br /></pre><br /><br />While, the old Standby : <br /><br /><pre>[oracle@oem132 trace]$ sqlplus<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Mon Apr 10 23:37:34 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />Enter user-name: / as sysdba<br /><br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; select open_mode, databas_role from v$database;<br />select open_mode, databas_role from v$database<br /> *<br />ERROR at line 1:<br />ORA-00904: "DATABAS_ROLE": invalid identifier<br /><br /><br />SQL&gt; select open_mode, database_role from v$database;<br /><br />OPEN_MODE DATABASE_ROLE<br />-------------------- ----------------<br />READ WRITE PRIMARY<br /><br />SQL&gt; select instance_name, host_name from gv$instance;<br /><br />INSTANCE_NAME<br />----------------<br />HOST_NAME<br />----------------------------------------------------------------<br />STBY<br />oem132.racattack<br /><br /><br />SQL&gt;<br /></pre><br /><br />So, host "oem132.racattack" now has the Primary database in Read Write mode. The instance name is STBY because I chose that to be the instance name through the testing.&nbsp; (I could have chosen BOSTON and CHICAGO as is used in some Oracle examples / documentation).<br /><br />Let me verify my data on STBY :<br /><br /><pre>SQL&gt; shutdown immediate;<br />Database closed.<br />Database dismounted.<br />ORACLE instance shut down.<br />SQL&gt; startup<br />ORACLE instance started.<br /><br />Total System Global Area 838860800 bytes<br />Fixed Size 2929936 bytes<br />Variable Size 230689520 bytes<br />Database Buffers 599785472 bytes<br />Redo Buffers 5455872 bytes<br />Database mounted.<br />Database opened.<br />SQL&gt; alter pluggable database pdb open;<br /><br />Pluggable database altered.<br /><br />SQL&gt; connect hemant/hemant@PDB<br />Connected.<br />SQL&gt; select count(*) from my_data;<br /><br /> COUNT(*)<br />----------<br /> 300<br /><br />SQL&gt;<br /></pre><br /><br />The rows inserted at the RAC Primary are now in the Pluggable Database PDB at STBY. <br /><br />.<br />.<br />. </div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-8105806148487455647 Mon Apr 10 2017 11:40:00 GMT-0400 (EDT) Silent Installation and Configuration of Standalone Oracle HTTP Server http://dirknachbar.blogspot.com/2017/04/silent-installation-and-configuration.html Currently I am working in a project for which will be needed the Oracle HTTP Server (OHS) in a Standalone Mode as a frontend Web Server for a Oracle SOA 12.2.1.2.0 environment.<br /><br />As I am not really a fan of clicking through several installers and configuration wizards, I have created some scripts for a complete silent installation of the Standalone Oracle HTTP Server 12.2.1.2.0 and on top a silent configuration of the standalone Domain for the Oracle HTTP Server.<br /><br /><h4>Silent Installation of the Oracle HTTP Server Software</h4>For the following example, we will use following naming convention:<br /><ul><li>MW_HOME=/u00/app/oracle/product/fmw-webtier-12.2.1.2.0</li><li>JAVA_HOME=/u00/app/oracle/product/jdk1.8.0_121</li><li>DOMAIN_HOME=/u00/app/oracle/user_projects/domains/ohs_domain</li></ul>Download at first the required installation software from Oracle Technology Network&nbsp;http://www.oracle.com/technetwork/middleware/webtier/downloads/index.html and transfer the installation software to your target server, e.g. /u00/app/oracle/tmp.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-py4JIBLjMaA/WOt6UBIsZnI/AAAAAAAAAm0/-0Ln1LvGoO8wFk-rdedosytzjeOQpZeowCLcB/s1600/Download_WebTier122120.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="210" src="https://1.bp.blogspot.com/-py4JIBLjMaA/WOt6UBIsZnI/AAAAAAAAAm0/-0Ln1LvGoO8wFk-rdedosytzjeOQpZeowCLcB/s640/Download_WebTier122120.png" width="640" /></a></div><br />Make sure you that you have a JDK 1.8 on your server, I prefer to install the JDK under the Oracle user, e.g. /u00/app/oracle/product/jdk1.8.0_121<br /><br />Connect to your server as oracle user and create following files under the directory /u00/app/oracle/tmp<br /><br /><b><u>webtier.rsp </u></b><br /><pre class="brush:bash">[ENGINE]<br />Response File Version=1.0.0.0.0<br />[GENERIC]<br />ORACLE_HOME=/u00/app/oracle/product/fmw-webtier-12.2.1.2.0<br />INSTALL_TYPE=Standalone HTTP Server (Managed independently of WebLogic server)<br />DECLINE_SECURITY_UPDATES=true<br />SECURITY_UPDATES_VIA_MYORACLESUPPORT=false<br /></pre><br /><b><u>oraInst.loc </u></b><br /><pre class="brush:bash">inst_group=oinstall<br />inventory_loc=/u00/app/oracle/oraInventory<br /></pre><br />Now we can extract the installation software and install the Oracle HTTP Server in silent mode <br /><pre class="brush:bash">oracle@server&gt; cd /u00/app/oracle/tmp<br />oracle@server&gt; unzip fmw_12.2.1.2.0_ohs_linux64_Disk1_1of1.zip<br />oracle@server&gt; ./fmw_12.2.1.2.0_ohs_linux64.bin -jreLoc /u00/app/oracle/product/jdk1.8.0_121 -silent -responseFile /u00/app/oracle/tmp/webtier.rsp -invPtrLoc /u00/app/oracle/tmp/oraInst.loc<br /><br />0%...................................................................................................100%<br />Launcher log file is /tmp/OraInstall2017-04-10_12-39-12PM/launcher2017-04-10_12-39-12PM.log.<br />Checking if CPU speed is above 300 MHz. Actual 2194.918 MHz Passed<br />Checking swap space: must be greater than 512 MB. Actual 3071 MB Passed<br />Checking if this platform requires a 64-bit JVM. Actual 64 Passed (64-bit not required)<br />Checking temp space: must be greater than 300 MB. Actual 8528 MB Passed<br />. . .<br />. . .<br />Percent Complete : 90<br />Visit http://www.oracle.com/support/policies.html for Oracle Technical Support policies.<br />Percent Complete : 100<br /><br />The installation of Oracle HTTP Server 12.2.1.2.0 completed successfully.<br />Logs successfully copied to /u00/app/oracle/oraInventory/logs.<br /></pre><br />Now we have installed the Oracle HTTP Server Software. <br /><br /><h4>Silent Configuration of the Standalone Domain for the Oracle HTTP Server</h4>The next step is to configure in a silent way the required Standalone Domain for our Oracle HTTP Server.<br /><br />For this I have 3 scripts:<br /><br /><ul><li>setLocalEnv.sh = contains all necessary Environment Variables for the creation of the Standalone Domain</li><li>cr_ohs_domain.sh = Wrapper Script to source the setLocalEnv.sh and execute the cr_ohs_domain.py</li><li>cr_ohs_domain.py = Python Script to create the Standalone Domain for the Oracle HTTP Server</li></ul><br /><b><u>setLocalEnv.sh</u></b><br /><pre class="brush:bash">#<br /># Author: Dirk Nachbar<br />#<br /># http://dirknachbar.blogspot.com<br />#<br /># Environment Script for silent Standalone OHS Domain Creation<br /># <br />#<br />export SCRIPT_HOME=$PWD<br />export MW_HOME=/u00/app/oracle/product/fmw-webtier-12.2.1.2.0<br />export WLST_HOME=$MW_HOME/oracle_common/common/bin<br />export JAVA_HOME=/u00/app/oracle/product/jdk1.8.0_121<br />export DOMAIN_NAME=ohs_domain<br />export DOMAIN_HOME=/u00/app/oracle/user_projects/domains/$DOMAIN_NAME<br />export NM_LISTENADDRESS=`hostname -f`<br />export NM_TYPE=SSL<br />export NM_PORT=5557<br />export NM_USERNAME=nodemanager<br />export NM_PASSWORD=welcome1<br />export NM_HOME=$DOMAIN_HOME/nodemanager<br />export OHSINSTANCENAME=ohs1<br />export OHSADMINPORT=9999<br />export OHSHTTPPORT=7777<br />export OHSHTTPSPORT=4443<br /></pre><br />The above Environment Variables are all self-explained, you may align them to your specific needs. <br />cr_ohs_domain.sh <br /><pre class="brush:bash">#!/bin/sh<br />#<br /># Author: Dirk Nachbar<br />#<br /># http://dirknachbar.blogspot.com<br />#<br /># Shell Script Wrapper for Silent Standalone OHS Domain Creation<br />#<br /><br />start_time=$(date +%s)<br /><br />. $PWD/setLocalEnv.sh<br /><br />echo "============================================="<br />echo " Program: cr_ohs_domain.sh ....."<br />echo "============================================="<br /><br />if [ -z "${WLST_HOME}" ]; then<br /> echo " Environment not correctly set - please verify"<br /> exit 1<br />fi<br /><br />if ! test -d "${DOMAIN_HOME}"; then<br /> echo "============================================="<br /> echo " Domain will be installed ....."<br /> echo "============================================="<br /> if [ -z "${MW_HOME}" -o -z "${JAVA_HOME}" -o -z "${DOMAIN_NAME}" -o -z "${DOMAIN_HOME}" -o -z "${NM_LISTENADDRESS}" -o -z "${NM_TYPE}" -o -z "${NM_PORT}" -o -z "${NM_USERNAME}" -o -z "${NM_PASSWORD}" -o -z "${NM_HOME}" -o -z "${OHSADMINPORT}" -o -z "${OHSHTTPPORT}" -o -z "${OHSHTTPSPORT}" ]; then<br /> echo " Environment not set - Exit"<br /> exit 1<br /> fi<br /><br /> # In case we are facing problems with /dev/random<br /> export CONFIG_JVM_ARGS=-Djava.security.egd=file:/dev/./urandom:$CONFIG_JVM_ARGS<br /><br /> ${WLST_HOME}/wlst.sh ${SCRIPT_HOME}/cr_ohs_domain.py<br /><br /> # Set End Time<br /> finish_time=$(date +%s)<br /> echo "Finished"<br /> echo "Domain Build Time: $(( $((finish_time - start_time))/60)) minutes."<br /> else<br /> echo "Domain is already installed ..."<br />fi<br /></pre><br />cr_ohs_domain.py <br /><pre class="brush:bash">#!/usr/bin/python<br />#<br /># Author: Dirk Nachbar<br />#<br /># http://dirknachbar.blogspot.com<br />#<br /><br />import os, sys<br /><br />v_mwHome=os.environ['MW_HOME']<br />v_jdkHome=os.environ['JAVA_HOME']<br />v_domainHome=os.environ['DOMAIN_HOME']<br />v_domainName=os.environ['DOMAIN_NAME']<br />v_NMUsername=os.environ['NM_USERNAME']<br />v_NMPassword=os.environ['NM_PASSWORD']<br />v_NMHome=os.environ['NM_HOME']<br />v_NMHost=os.environ['NM_LISTENADDRESS']<br />v_NMPort=os.environ['NM_PORT']<br />v_NMType=os.environ['NM_TYPE']<br />v_OHSInstanceName=os.environ['OHSINSTANCENAME']<br />v_OHSAdminPort=os.environ['OHSADMINPORT']<br />v_OHSHTTPPort=os.environ['OHSHTTPPORT']<br />v_OHSHTTPSPort=os.environ['OHSHTTPSPORT']<br /><br />readTemplate(v_mwHome +'/wlserver/common/templates/wls/base_standalone.jar')<br />addTemplate(v_mwHome +'/ohs/common/templates/wls/ohs_standalone_template.jar')<br /><br />cd('/')<br />create(v_domainName, 'SecurityConfiguration') <br />cd('SecurityConfiguration/' + v_domainName)<br />set('NodeManagerUsername',v_NMUsername)<br />set('NodeManagerPasswordEncrypted',v_NMPassword)<br />setOption('NodeManagerType', 'CustomLocationNodeManager');<br />setOption('NodeManagerHome', v_NMHome);<br />setOption('JavaHome', v_jdkHome )<br /><br />cd('/Machines/localmachine/NodeManager/localmachine')<br />cmo.setListenAddress(v_NMHost);<br />cmo.setListenPort(int(v_NMPort));<br />cmo.setNMType(v_NMType);<br /><br />delete(v_OHSInstanceName,'SystemComponent')<br />create (v_OHSInstanceName,'SystemComponent')<br />cd('/OHS/'+v_OHSInstanceName)<br />cmo.setAdminPort(v_OHSAdminPort)<br />cmo.setListenPort(v_OHSHTTPPort)<br />cmo.setSSLListenPort(v_OHSHTTPSPort)<br /><br />writeDomain(v_domainHome) <br /></pre><br />Now we can execute the cr_ohs_domain.sh which will create silently the Standalone Domain for our Oracle HTTP Server: <br /><br /><pre class="brush:bash">oracle@server&gt; cd /u00/app/oracle/tmp<br />./cr_ohs_domain.sh<br /><br />=============================================<br /> Program: cr_ohs_domain.sh .....<br />=============================================<br />=============================================<br /> Domain will be installed .....<br />=============================================<br /><br />Initializing WebLogic Scripting Tool (WLST) ...<br /><br />Welcome to WebLogic Server Administration Scripting Shell<br /><br />Type help() for help on available commands<br /><br />Finished<br />Domain Build Time: 1 minutes.<br /></pre><br />And thats it, now you can start your Oracle HTTP Server Instance named ohs1 <br /><br /><pre class="brush:bash">oracle@server&gt; cd /u00/app/oracle/user_projects/domains/ohs_domain/bin<br />oracle@server&gt; ./startNodeManager &gt; /dev/null 2&gt;&amp;1 &amp;<br />oracle@server&gt; ./startComponent.sh ohs1 storeUserConfig<br /></pre><br /><br /><br /> Dirk Nachbar tag:blogger.com,1999:blog-4344684978957885806.post-7075081039170646790 Mon Apr 10 2017 11:13:00 GMT-0400 (EDT) Parallel First_rows() https://jonathanlewis.wordpress.com/2017/04/10/parallel-first_rows/ <p>A <a href="https://community.oracle.com/thread/4035029"><em><strong>recent posting on OTN</strong></em></a> raised the question of whether or not the <strong><em>&#8220;parallel&#8221;</em></strong> hint and the <strong><em>&#8220;first_rows(n)&#8221;</em></strong> hint were mutually incompatible. This reminded me that from time to time other posters on OTN (copying information from various websites, perhaps) have claimed that <em>&#8220;parallel doesn&#8217;t work with first rows&#8221;</em> or, conversely, <em>&#8220;first rows doesn&#8217;t work with parallel&#8221;</em>. This is one of those funny little myths that is so old that the script I&#8217;ve got to demonstrate the misconception is dated 2003 with a first test version of 8.1.7.4.</p> <p>Since I haven&#8217;t run the test on any version of Oracle newer than 9.2.0.4 I thought it was time to dust it down, modernise it slightly, and run it again. So here&#8217;s the bit that creates a sample data set:</p> <pre class="brush: plain; title: ; notranslate"> create table t1 ( id number, v1 varchar2(10), padding varchar2(100), constraint t_pk primary key(id) using index local ) partition by range(id) ( partition p1000 values less than (1000), partition p2000 values less than (2000), partition p3000 values less than (3000), partition p4000 values less than (4000), partition p5000 values less than (5000) ) ; insert into t1 select rownum - 1, rpad(rownum-1,10), rpad('x',100) from all_objects where rownum &lt;= 5000 -- &gt; hint to avoid WordPress formatting issue order by dbms_random.value ; begin dbms_stats.gather_table_stats( ownname =&gt; user, tabname =&gt;'T1', method_opt =&gt; 'for all columns size 1' ); end; / </pre> <p>Now I&#8217;m going to run a simple query, hinted in 4 different ways:</p> <ul> <li>no hints</li> <li>parallel hint only: /*+ parallel */</li> <li>first_rows(1) hint only: /*+ first_rows(1) */</li> <li>parallel and first_rows(1): /*+ parallel first_rows(1) */</li> </ul> <p>Here&#8217;s the version of the query that has both hints in place:</p> <pre class="brush: plain; title: ; notranslate"> set serveroutput off set linesize 156 set pagesize 60 set trimspool on select /*+ parallel first_rows(1) */ v1 from t1 where id between 1500 and 2000 ; select * from table(dbms_xplan.display_cursor(null,null,'cost outline')); </pre> <p>I&#8217;ve actually run the query and used the <strong><em>display_cursor()</em></strong> option to pull the plan from memory &#8211; in the original (8i) script I used <em><strong>autotrace</strong></em> and the old (deprecated, backwards compatibility only) <em><strong>first_rows</strong></em> hint. To do any other tests just clone and edit. Here are the 4 outputs from the call to <em><strong>display_cursor()</strong></em> &#8211; with a little cosmetic editing:</p> <pre class="brush: plain; title: ; notranslate"> SQL_ID 63qnzam9b8m9g, child number 0 ===================================== select /*+ */ v1 from t1 where id between 1500 and 2000 Plan hash value: 277861402 ------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | ------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 15 (100)| | | | | 1 | PARTITION RANGE ITERATOR| | 502 | 7530 | 15 (0)| 00:00:01 | 2 | 3 | |* 2 | TABLE ACCESS FULL | T1 | 502 | 7530 | 15 (0)| 00:00:01 | 2 | 3 | ------------------------------------------------------------------------------------------------- Outline Data ------------- /*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('11.2.0.4') DB_VERSION('11.2.0.4') ALL_ROWS OUTLINE_LEAF(@&quot;SEL$1&quot;) FULL(@&quot;SEL$1&quot; &quot;T1&quot;@&quot;SEL$1&quot;) END_OUTLINE_DATA */ Predicate Information (identified by operation id): --------------------------------------------------- 2 - filter((&quot;ID&quot;&lt;=2000 AND &quot;ID&quot;&gt;=1500)) SQL_ID ahary3u8q88mq, child number 1 ===================================== select /*+ parallel */ v1 from t1 where id between 1500 and 2000 Plan hash value: 9959369 ------------------------------------------------------------------------------------------------------------------------------ | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib | ------------------------------------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | | | 8 (100)| | | | | | | | 1 | PX COORDINATOR | | | | | | | | | | | | 2 | PX SEND QC (RANDOM)| :TQ10000 | 502 | 7530 | 8 (0)| 00:00:01 | | | Q1,00 | P-&gt;S | QC (RAND) | | 3 | PX BLOCK ITERATOR | | 502 | 7530 | 8 (0)| 00:00:01 | 2 | 3 | Q1,00 | PCWC | | |* 4 | TABLE ACCESS FULL| T1 | 502 | 7530 | 8 (0)| 00:00:01 | 2 | 3 | Q1,00 | PCWP | | ------------------------------------------------------------------------------------------------------------------------------ Outline Data ------------- /*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('11.2.0.4') DB_VERSION('11.2.0.4') ALL_ROWS SHARED(2) OUTLINE_LEAF(@&quot;SEL$1&quot;) FULL(@&quot;SEL$1&quot; &quot;T1&quot;@&quot;SEL$1&quot;) END_OUTLINE_DATA */ Predicate Information (identified by operation id): --------------------------------------------------- 4 - access(:Z&gt;=:Z AND :Z&lt;=:Z) filter((&quot;ID&quot;&lt;=2000 AND &quot;ID&quot;&gt;=1500)) Note ----- - automatic DOP: Computed Degree of Parallelism is 2 SQL_ID 3m6mnk9b337dd, child number 0 ===================================== select /*+ first_rows(1) */ v1 from t1 where id between 1500 and 2000 Plan hash value: 1044541683 ----------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | ----------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 6 (100)| | | | | 1 | PARTITION RANGE ITERATOR | | 4 | 60 | 6 (0)| 00:00:01 | 2 | 3 | | 2 | TABLE ACCESS BY LOCAL INDEX ROWID| T1 | 4 | 60 | 6 (0)| 00:00:01 | 2 | 3 | |* 3 | INDEX RANGE SCAN | T_PK | | | 2 (0)| 00:00:01 | 2 | 3 | ----------------------------------------------------------------------------------------------------------- Outline Data ------------- /*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('11.2.0.4') DB_VERSION('11.2.0.4') FIRST_ROWS(1) OUTLINE_LEAF(@&quot;SEL$1&quot;) INDEX_RS_ASC(@&quot;SEL$1&quot; &quot;T1&quot;@&quot;SEL$1&quot; (&quot;T1&quot;.&quot;ID&quot;)) END_OUTLINE_DATA */ Predicate Information (identified by operation id): --------------------------------------------------- 3 - access(&quot;ID&quot;&gt;=1500 AND &quot;ID&quot;&lt;=2000) -- &gt; needs edit to avoid WordPress formatting issue SQL_ID 9asm7t1zbv4q8, child number 1 ===================================== select /*+ parallel first_rows(1) */ v1 from t1 where id between 1500 and 2000 Plan hash value: 4229065483 ---------------------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib | ---------------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 3 (100)| | | | | | | | 1 | PX COORDINATOR | | | | | | | | | | | | 2 | PX SEND QC (RANDOM) | :TQ10000 | 4 | 60 | 3 (0)| 00:00:01 | | | Q1,00 | P-&gt;S | QC (RAND) | | 3 | PX PARTITION RANGE ITERATOR | | 4 | 60 | 3 (0)| 00:00:01 | 2 | 3 | Q1,00 | PCWC | | | 4 | TABLE ACCESS BY LOCAL INDEX ROWID| T1 | 4 | 60 | 3 (0)| 00:00:01 | 2 | 3 | Q1,00 | PCWP | | |* 5 | INDEX RANGE SCAN | T_PK | | | 1 (0)| 00:00:01 | 2 | 3 | Q1,00 | PCWP | | ---------------------------------------------------------------------------------------------------------------------------------------------- Outline Data ------------- /*+ BEGIN_OUTLINE_DATA IGNORE_OPTIM_EMBEDDED_HINTS OPTIMIZER_FEATURES_ENABLE('11.2.0.4') DB_VERSION('11.2.0.4') FIRST_ROWS(1) SHARED(2) OUTLINE_LEAF(@&quot;SEL$1&quot;) INDEX_RS_ASC(@&quot;SEL$1&quot; &quot;T1&quot;@&quot;SEL$1&quot; (&quot;T1&quot;.&quot;ID&quot;)) END_OUTLINE_DATA */ Predicate Information (identified by operation id): --------------------------------------------------- 5 - access(&quot;ID&quot;&gt;=1500 AND &quot;ID&quot;&lt;=2000) Note ----- - automatic DOP: Computed Degree of Parallelism is 2 </pre> <p>Critically we get four different execution plans from the four different strategies &#8211; so clearly the optimizer is perfectly happy to accept the <em><strong>parallel</strong></em> and <em><strong>first_rows()</strong></em> hints simultaneously. Note, particularly, how the <em><strong>first_rows(1)</strong></em> hint when combined with the <em><strong>parallel</strong></em> hint moved us from a parallel full tablescan to a parallel index range scan.</p> <p>Whether or not it&#8217;s sensible to use the hint combination in this way is a matter for careful consideration, of course, but there could be circumstances where the combination really is the best way to get the starting row(s) from a query that otherwise has to return a large amount of data.</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16985/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16985/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16985&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16985 Mon Apr 10 2017 10:53:19 GMT-0400 (EDT) Kscope17 Financial Close Track Session Highlights ‚Äď Chris Barbieri http://www.odtug.com/p/bl/et/blogaid=704&source=1 Chris Barbieri, Financial Close Track Lead for ODTUG Kscope17, shares his recommended Financial Close Track Sessions with reasons why they are his ‚Äúdon‚Äôt miss sessions‚ÄĚ at Kscope17. ODTUG http://www.odtug.com/p/bl/et/blogaid=704&source=1 Mon Apr 10 2017 09:34:55 GMT-0400 (EDT) OBIEE and ODI 12c Silent Installations : First Steps https://oracle-base.com/blog/2017/04/10/obiee-and-odi-12c-silent-installations-first-steps/ <p><img class="alignleft wp-image-7063" src="https://oracle-base.com/blog/wp-content/uploads/2017/04/cow-36577_640.png" alt="" width="150" height="150" />The company I work for is in the process of moving some core systems to Oracle Cloud Apps. As part of that process the folks who do the warehousing, BI and reporting stuff are transitioning from¬†a bunch of SAP tools to ODI, OBIEE, OBIA¬†etc. I am not part of¬†either the old or new projects related to this work, but it does seem I am going to have to get involved in some of the infrastructure side of it, namely installations and basic &#8220;turn it off and on again&#8221; type support. I will never actual use this stuff. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>I don&#8217;t like surprises, so I&#8217;ve spent some¬†time recently playing with some of this stuff from an infrastructure perspective. I&#8217;ve been building, destroying and rebuilding this stuff repeatedly, trying to figure out how some of it hangs together and some of the pain points. That resulted in these articles.</p> <ul> <li><a href="/articles/12c/obiee-12c-silent-installation-on-ol7-12212">Oracle Business Intelligence 12c (12.2.1.2.0) Silent Installation onOracle Linux 6 and 7 (OL6 and OL7)</a></li> <li><a href="/articles/12c/odi-12c-silent-installation-on-ol7-12212">Oracle Data Integrator (ODI) 12c (12.2.1.2.6) Silent Installation on Oracle Linux 6 and 7 (OL6 and OL7)</a></li> </ul> <p>There may be some more to follow, but they¬†could be for older bits of kit, depending on the certification status of the various pieces when used against Oracle Cloud Apps.</p> <p>I can&#8217;t emphasise enough¬†how little I know about this stuff.¬†I understand databases¬†and I know a bit about WebLogic. As a result I can muddle my way through some installations of this OBIEE and ODI stuff. That is about it.¬†<img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Cheers</p> <p>Tim&#8230;</p> <p>PS. If you are wondering about the image, it&#8217;s a stupid cow.¬†It represents how clueless I am about this stuff, as well as how amusing I find it that we are transitioning to these tools just as the rest of the world is transitioning away from them. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/10/obiee-and-odi-12c-silent-installations-first-steps/">OBIEE and ODI 12c Silent Installations : First Steps</a> was first posted on April 10, 2017 at 7:45 am.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7061 Mon Apr 10 2017 02:45:45 GMT-0400 (EDT) Getting Started with Pivotal Cloud Cache on Pivotal Cloud Foundry http://feedproxy.google.com/~r/blogspot/PEqWE/~3/jwZ3sfJiLvI/getting-started-with-pivotal-cloud.html Recently we announced the new cache service Pivotal Cloud Cache (PCC) for Pivotal Cloud Foundry (PCC). In short&nbsp;Pivotal Cloud Cache (PCC) is a opinionated, distributed, highly available, high speed key/value caching service. PCC can be easily horizontally scaled for capacity and performance.<br /><br />In this post we will show how you would provision a service, login to the Pulse UI dashboard, connect using GFSH etc. I won't create a spring boot application to use the service at this stage BUT that will follow in a post soon enough.<br /><br /><b>Steps</b><br /><br />1. First you will need the PCC service and if it's been installed it will look like this<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-BdQa2NJ9XZ8/WOrelOWD4eI/AAAAAAAAA60/VaRyRftSzaM0sPkakS65M-sGGz_pJCw6wCLcB/s1600/Screen%2BShot%2B2017-04-10%2Bat%2B11.21.02%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="103" src="https://4.bp.blogspot.com/-BdQa2NJ9XZ8/WOrelOWD4eI/AAAAAAAAA60/VaRyRftSzaM0sPkakS65M-sGGz_pJCw6wCLcB/s320/Screen%2BShot%2B2017-04-10%2Bat%2B11.21.02%2BAM.png" width="320" /></a></div><br />2. Now let's view the current plans we have in place as shown below<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~$ <b>cf marketplace -s p-cloudcache</b></span><br /><span style="color: #3d85c6;">Getting service plan information for service p-cloudcache as papicella@pivotal.io...</span><br /><span style="color: #3d85c6;">OK</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">service plan &nbsp; description &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;free or paid</span><br /><span style="color: #3d85c6;">extra-small &nbsp; &nbsp;Plan 1 Description &nbsp; free</span><br /><span style="color: #3d85c6;">extra-large &nbsp; &nbsp;Plan 5 Description &nbsp; free</span><br /><br />3. Now let's create a service as shown below<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~$ <b>cf create-service p-cloudcache extra-small pas-pcc</b></span><br /><span style="color: #3d85c6;">Creating service instance pas-pcc in org pivot-papicella / space development as papicella@pivotal.io...</span><br /><span style="color: #3d85c6;">OK</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Create in progress. Use 'cf services' or 'cf service pas-pcc' to check operation status.</span><br /><br />4. At this point it will asynchronously create the GemFire cluster which is essentially what PCC is. For more Information on GemFire see the docs link <a href="https://pivotal.io/pivotal-gemfire" target="_blank">here</a>.<br /><br />You can check the progress one of two ways.<br /><br />1. Using Pivotal Apps manager as shown below<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-FLudCurU3pM/WOrif0xQK0I/AAAAAAAAA7A/MIADW6ziygs9WLbqb6kycC__OzwhvcYaACLcB/s1600/Screen%2BShot%2B2017-04-10%2Bat%2B11.38.06%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="61" src="https://3.bp.blogspot.com/-FLudCurU3pM/WOrif0xQK0I/AAAAAAAAA7A/MIADW6ziygs9WLbqb6kycC__OzwhvcYaACLcB/s320/Screen%2BShot%2B2017-04-10%2Bat%2B11.38.06%2BAM.png" width="320" /></a></div><br />2. Using a command as follows<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~$ cf service pas-pcc</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Service instance: pas-pcc</span><br /><span style="color: #3d85c6;">Service: p-cloudcache</span><br /><span style="color: #3d85c6;">Bound apps:</span><br /><span style="color: #3d85c6;">Tags:</span><br /><span style="color: #3d85c6;">Plan: extra-small</span><br /><span style="color: #3d85c6;">Description: Pivotal CloudCache offers the ability to deploy a GemFire cluster as a service in Pivotal Cloud Foundry.</span><br /><span style="color: #3d85c6;">Documentation url: http://docs.pivotal.io/gemfire/index.html</span><br /><span style="color: #3d85c6;">Dashboard: http://gemfire-yyyyy.run.pez.pivotal.io/pulse</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Last Operation</span><br /><span style="color: #3d85c6;">Status: create in progress</span><br /><span style="color: #3d85c6;">Message: Instance provisioning in progress</span><br /><span style="color: #3d85c6;">Started: 2017-04-10T01:34:58Z</span><br /><span style="color: #3d85c6;">Updated: 2017-04-10T01:36:59Z</span><br /><br />5. Once complete it will look as follows<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-Ndsydj0eE7Q/WOrjJ-MYWLI/AAAAAAAAA7I/I6yUj-zvuCQj4BPqIuRSx5U61Xvpl5HKwCLcB/s1600/Screen%2BShot%2B2017-04-10%2Bat%2B11.43.09%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="86" src="https://3.bp.blogspot.com/-Ndsydj0eE7Q/WOrjJ-MYWLI/AAAAAAAAA7I/I6yUj-zvuCQj4BPqIuRSx5U61Xvpl5HKwCLcB/s320/Screen%2BShot%2B2017-04-10%2Bat%2B11.43.09%2BAM.png" width="320" /></a></div><br />6. Now in order to log into both GFSH and Pulse we are going to need to create a service key for the service we just created, which we do as shown below.<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/PCF/services/PCC$ <b>cf create-service-key pas-pcc pas-pcc-key</b></span><br /><span style="color: #3d85c6;">Creating service key pas-pcc-key for service instance pas-pcc as papicella@pivotal.io...</span><br /><span style="color: #3d85c6;">OK</span><br /><div><br /></div>7. Retrieve service keys as shown below<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~$ <b>cf service-key pas-pcc pas-pcc-key</b></span><br /><span style="color: #3d85c6;">Getting key pas-pcc-key for service instance pas-pcc as papicella@pivotal.io...</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">{</span><br /><span style="color: #3d85c6;">&nbsp;"locators": [</span><br /><span style="color: #3d85c6;">&nbsp; "0.0.0.0[55221]",</span><br /><span style="color: #3d85c6;">&nbsp; "0.0.0.0[55221]",</span><br /><span style="color: #3d85c6;">&nbsp; "0.0.0.0[55221]"</span><br /><span style="color: #3d85c6;">&nbsp;],</span><br /><span style="color: #3d85c6;">&nbsp;"urls": {</span><br /><span style="color: #3d85c6;">&nbsp; "gfsh": "http://gemfire-yyyy.run.pez.pivotal.io/gemfire/v1",</span><br /><span style="color: #3d85c6;">&nbsp; "pulse": "http://gemfire-yyyy.run.pez.pivotal.io/pulse"</span><br /><span style="color: #3d85c6;">&nbsp;},</span><br /><span style="color: #3d85c6;">&nbsp;"users": [</span><br /><span style="color: #3d85c6;">&nbsp; {</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp;"password": "password",</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp;"username": "developer"</span><br /><span style="color: #3d85c6;">&nbsp; },</span><br /><span style="color: #3d85c6;">&nbsp; {</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp;"password": "password",</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp;"username": "operator"</span><br /><span style="color: #3d85c6;">&nbsp; }</span><br /><span style="color: #3d85c6;">&nbsp;]</span><br /><span style="color: #3d85c6;">}</span><br /><br />8. Now lets log into Pulse. The URL is available as part of the output above<br /><br />Login Page<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-Ze3Sd_Kjo84/WOr5SBj_r3I/AAAAAAAAA7c/KVvtM_NGVHYsSAEcqgJLkmX4NMZQiA0MgCLcB/s1600/Screen%2BShot%2B2017-04-10%2Bat%2B1.10.12%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="215" src="https://2.bp.blogspot.com/-Ze3Sd_Kjo84/WOr5SBj_r3I/AAAAAAAAA7c/KVvtM_NGVHYsSAEcqgJLkmX4NMZQiA0MgCLcB/s320/Screen%2BShot%2B2017-04-10%2Bat%2B1.10.12%2BPM.png" width="320" /></a></div><br />Pulse Dashboard : You can see from the dashboard page it shows how many locators and cache server members we have as part of this default cluster<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-pATsBDS8uos/WOr5OsdqaNI/AAAAAAAAA7Y/ugfVVSyL-qctpjgRf--Reo0dy2FolsEdACLcB/s1600/Screen%2BShot%2B2017-04-10%2Bat%2B1.13.09%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="222" src="https://3.bp.blogspot.com/-pATsBDS8uos/WOr5OsdqaNI/AAAAAAAAA7Y/ugfVVSyL-qctpjgRf--Reo0dy2FolsEdACLcB/s320/Screen%2BShot%2B2017-04-10%2Bat%2B1.13.09%2BPM.png" width="320" /></a></div><br /><br />9. Now lets log into GFSH. Once again the URL is as per the output above<br /><br />- First we will need to download Pivotal GemFire so we have the GFSH client, download the zip at the link below and extract to your file system<br /><br />&nbsp;&nbsp;<a href="https://network.pivotal.io/products/pivotal-gemfire">https://network.pivotal.io/products/pivotal-gemfire</a><br /><br />- Invoke as follows using the path to the extracted ZIP file<br /><br />$GEMFIRE_HOME/bin/gfsh<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/software/gemfire/pivotal-gemfire-9.0.3/bin$ ./gfsh</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; _________________________ &nbsp; &nbsp; __</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp;/ _____/ ______/ ______/ /____/ /</span><br /><span style="color: #3d85c6;">&nbsp; / / &nbsp;__/ /___ &nbsp;/_____ &nbsp;/ _____ &nbsp;/</span><br /><span style="color: #3d85c6;">&nbsp;/ /__/ / ____/ &nbsp;_____/ / / &nbsp; &nbsp;/ /</span><br /><span style="color: #3d85c6;">/______/_/ &nbsp; &nbsp; &nbsp;/______/_/ &nbsp; &nbsp;/_/ &nbsp; &nbsp;9.0.3</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Monitor and Manage Pivotal GemFire</span><br /><span style="color: #3d85c6;">gfsh&gt;connect --use-http --url=http://gemfire-yyyy.run.pez.pivotal.io/gemfire/v1 --user=operator --password=password</span><br /><span style="color: #3d85c6;">Successfully connected to: GemFire Manager HTTP service @ http://gemfire-yyyy.run.pez.pivotal.io/gemfire/v1</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">gfsh&gt;</span><br /><br />10. Now lets create a region which will use to store some cache data<br /><br /><span style="color: #3d85c6;">$&nbsp;create region --name=demoregion --type=PARTITION_HEAP_LRU --redundant-copies=1</span><br /><pre class="brush: sql"> <br />gfsh&gt;create region --name=demoregion --type=PARTITION_HEAP_LRU --redundant-copies=1<br /> Member | Status<br />----------------------------------- | ---------------------------------------------------------------------<br />cacheserver-PCF-PEZ-Heritage-RP04-1 | Region "/demoregion" created on "cacheserver-PCF-PEZ-Heritage-RP04-1"<br />cacheserver-PCF-PEZ-Heritage-RP04-0 | Region "/demoregion" created on "cacheserver-PCF-PEZ-Heritage-RP04-0"<br />cacheserver-PCF-PEZ-Heritage-RP04-2 | Region "/demoregion" created on "cacheserver-PCF-PEZ-Heritage-RP04-2"<br />cacheserver-PCF-PEZ-Heritage-RP04-3 | Region "/demoregion" created on "cachrver-PCF-PEZ-Heritage-RP04-3" <br /></pre><br /><span style="color: #e69138;">Note: Understanding the region types you can create exist at the Pivotal GemFire docs but basically in the example above we create a partitioned region where primary and backup data is stored among the cache servers. As you can see we asked for a single backup copy of each region entry to be placed on a separate cache server itself for redundancy</span><br /><br /><a href="http://gemfire.docs.pivotal.io/geode/developing/region_options/region_types.html#region_types">http://gemfire.docs.pivotal.io/geode/developing/region_options/region_types.html#region_types</a><br /><br />11. If we return to the Pulse Dashboard UI we will see from the "Data Browser" tab we have a region<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-cbYozzu-YoE/WOr80AMDWDI/AAAAAAAAA7o/0BOF3O8G30U8TiXggpzlpnR3bhUTWYY4ACLcB/s1600/Screen%2BShot%2B2017-04-10%2Bat%2B1.30.44%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="135" src="https://1.bp.blogspot.com/-cbYozzu-YoE/WOr80AMDWDI/AAAAAAAAA7o/0BOF3O8G30U8TiXggpzlpnR3bhUTWYY4ACLcB/s320/Screen%2BShot%2B2017-04-10%2Bat%2B1.30.44%2BPM.png" width="320" /></a></div><br />12. Now lets just add some data , few entries which are simple String key/value pairs only<br /><pre class="brush: sql"> <br />gfsh&gt;put --region=/demoregion --key=1 --value="value 1"<br />Result : true<br />Key Class : java.lang.String<br />Key : 1<br />Value Class : java.lang.String<br />Old Value : &lt;NULL&gt;<br /><br /><br />gfsh&gt;put --region=/demoregion --key=2 --value="value 2"<br />Result : true<br />Key Class : java.lang.String<br />Key : 2<br />Value Class : java.lang.String<br />Old Value : &lt;NULL&gt;<br /><br /><br />gfsh&gt;put --region=/demoregion --key=3 --value="value 3"<br />Result : true<br />Key Class : java.lang.String<br />Key : 3<br />Value Class : java.lang.String<br />Old Value : &lt;NULL&gt;<br /></pre><br />13. Finally lets query the data we have in the cache<br /><pre class="brush: sql"> <br />gfsh&gt;query --query="select * from /demoregion"<br /><br />Result : true<br />startCount : 0<br />endCount : 20<br />Rows : 3<br /><br />Result<br />-------<br />value 3<br />value 1<br />value 2<br /><br />NEXT_STEP_NAME : END<br /></pre><br />13. We can return to Pulse and invoke the same query from the "Data Browser" tab as shown below.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-aRgu8osbjqQ/WOsBE0WLgnI/AAAAAAAAA70/BzGA4fVNp-4QcbU2sZrBq5ayX5NIzZPoACLcB/s1600/Screen%2BShot%2B2017-04-10%2Bat%2B1.50.23%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="157" src="https://1.bp.blogspot.com/-aRgu8osbjqQ/WOsBE0WLgnI/AAAAAAAAA70/BzGA4fVNp-4QcbU2sZrBq5ayX5NIzZPoACLcB/s320/Screen%2BShot%2B2017-04-10%2Bat%2B1.50.23%2BPM.png" width="320" /></a></div><br /><br />Of course storing data in a cache isn't useful unless we actually have an application on PCF that can use the Cache BUT that will come in a separate post. Basically we will BIND to this service, connect as a GemFire Client using the locators we are given as part of the service key and then extract the cache data we have just created above by invoking a query.<br /><br /><b>More Information</b><br /><br />Download PCC for PCF<br /><a href="https://network.pivotal.io/products/cloud-cache">https://network.pivotal.io/products/cloud-cache</a><br /><br />Data Sheet for PCC<br /><a href="https://content.pivotal.io/datasheets/pivotal-cloud-cache">https://content.pivotal.io/datasheets/pivotal-cloud-cache</a><div class="blogger-post-footer">http://feeds.feedburner.com/TheBlasFromPas</div><img src="http://feeds.feedburner.com/~r/blogspot/PEqWE/~4/jwZ3sfJiLvI" height="1" width="1" alt=""/> Pas Apicella tag:blogger.com,1999:blog-6527688743456205256.post-1390427196375459886 Sun Apr 09 2017 23:57:00 GMT-0400 (EDT) JDev/ADF sample - ADF Multi Task Flow Binding and Tab Order http://andrejusb-samples.blogspot.com/2017/04/jdevadf-sample-adf-multi-task-flow.html <div dir="ltr" style="text-align: left;" trbidi="on"><ul><li><a href="http://andrejusb.blogspot.ca/2017/04/adf-multi-task-flow-binding-and-tab.html" target="_blank">ADF Multi Task Flow Binding and Tab Order</a>. I had a post while ago about ADF multi task flow binding and loading dynamic regions - <a href="http://andrejusb.blogspot.ca/2011/11/building-custom-ui-shell-with-adf-11g.html" target="_blank">Building Custom UI Shell with ADF 11g R2</a>. In that sample, new region was opened in the first tab position. Meaning tab order was from right to left. It is more natural to have left to right tab opening order. This can be done too, check updated sample app - we need to control disclosed property and add new region to the end of array.</li></ul><ol>Download - <a href="https://docs.google.com/uc?export=download&amp;id=0Bw_kr1_tXc-edDFiNWtpRGVUOVk">MultiTaskFlowApp_TabOrder.zip</a></ol></div> Andrejus Baranovskis tag:blogger.com,1999:blog-4301764760924839143.post-4809382609432626904 Sun Apr 09 2017 20:49:00 GMT-0400 (EDT) 12cR1 RAC Posts -- 8f : Accessing data in the PDB in the Standby http://hemantoracledba.blogspot.com/2017/04/12cr1-rac-posts-8f-accessing-data-in.html <div dir="ltr" style="text-align: left;" trbidi="on">Apparently, the error :<br />&lt; br /&gt; <br /><pre>alter pluggable database pdb open<br />*<br />ERROR at line 1:<br />ORA-44309: unknown failure<br />ORA-44777: Pluggable database service cannot be started.<br /></pre><br />in <a href="https://hemantoracledba.blogspot.sg/2017/04/12cr1-rac-posts-8e-redo-shipping-and.html" target="_blank">my previous post </a>was a spurious error.<br /><br />I am able to access the PDB in the Standby. &nbsp;Thus :<br /><br /><pre>[oracle@oem132 ~]$ . oraenv<br />ORACLE_SID = [STBY] ? STBY<br />The Oracle base remains unchanged with value /u01/app/oracle<br />[oracle@oem132 ~]$ sqlplus '/ as sysdba'<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Sun Apr 9 15:57:27 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />Connected to an idle instance.<br /><br />SQL&gt; startup nomount;<br />ORACLE instance started.<br /><br />Total System Global Area 838860800 bytes<br />Fixed Size 2929936 bytes<br />Variable Size 230689520 bytes<br />Database Buffers 599785472 bytes<br />Redo Buffers 5455872 bytes<br />SQL&gt; alter database mount standby database;<br /><br />Database altered.<br /><br />SQL&gt; rem here I notice the alert log showing :<br />SQL&gt; rem ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT NODELAY<br />SQL&gt; rem Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT NODELAY<br />SQL&gt; recover managed standby database cancel;<br />Media recovery complete.<br />SQL&gt; rem I cancel the automatic recovery as I do not want to run Active Data Guard<br />SQL&gt; alter database open read only;<br /><br />Database altered.<br /><br />SQL&gt; alter pluggable database pdb open;<br />alter pluggable database pdb open<br />*<br />ERROR at line 1:<br />ORA-44309: unknown failure<br />ORA-44777: Pluggable database service cannot be started.<br /><br /><br />SQL&gt;<br />SQL&gt; select con_id, name, open_mode, open_Time from v$pdbs;<br /><br /> CON_ID NAME OPEN_MODE<br />---------- ------------------------------ ----------<br />OPEN_TIME<br />---------------------------------------------------------------------------<br /> 2 PDB$SEED READ ONLY<br />09-APR-17 04.00.48.232 PM +08:00<br /><br /> 3 PDB READ ONLY<br />09-APR-17 04.00.59.105 PM +08:00<br /><br /><br />SQL&gt;<br />SQL&gt; exit<br />Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br />[oracle@oem132 ~]$ sqlplus hemant/hemant@PDB<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Sun Apr 9 16:02:02 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />Last Successful login time: Mon Apr 03 2017 22:49:41 +08:00<br /><br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; select table_name from user_tables;<br /><br />TABLE_NAME<br />--------------------------------------------------------------------------------<br />MY_DATA<br /><br />SQL&gt; select count(*) from my_data;<br /><br /> COUNT(*)<br />----------<br /> 100<br /><br />SQL&gt; show con_id;<br /><br />CON_ID<br />------------------------------<br />3<br />SQL&gt;<br /></pre><br /><br />Thus, the PDB on the Standby *does* OPEN READ ONLY and I can see the data that had been populated from the Primary.<br />.<br />.<br />.</div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-6871872418400319988 Sun Apr 09 2017 04:03:00 GMT-0400 (EDT) The first rule of Oracle Cloud Apps is: You do not talk about Oracle Cloud Apps https://oracle-base.com/blog/2017/04/08/do-not-talk-about-oracle-cloud-apps/ <p><img class="size-full wp-image-7070 alignnone" src="https://oracle-base.com/blog/wp-content/uploads/2017/04/cloud-apps-fight-club-meme.jpg" alt="" width="620" height="397" /></p> <p>The <a href="http://debrasoracle.blogspot.co.uk">wife</a>¬†has written a couple of posts recently (<a href="http://debrasoracle.blogspot.co.uk/2017/03/cloud-twelve-and-oracle-office-of.html">here</a> and <a href="http://debrasoracle.blogspot.co.uk/2017/01/forced-into-using-f-word-again.html">here</a>) about the inevitable confusion that results when speaking about Oracle applications and the cloud. It&#8217;s really hard to speak about this stuff and know everyone is hearing and understanding what is being said, rather than what they think is being said.</p> <p>Think about it for a minute.</p> <ul> <li>Oracle Cloud Apps &#8211; Version 12. You can run them On-Prem, but most people will only ever experience them on the cloud. Not surprisingly, when I say &#8220;Oracle Cloud Apps&#8221;, this is what I&#8217;m talking about. My company is currently moving to Oracle Cloud Apps and we have no EBS.</li> <li><a href="https://docs.oracle.com/cd/E72030_01/infoportal/ebscfaq.html#q1">E-Business Suite on the Cloud.</a> Version 12.x. They&#8217;re Oracle applications and they run on the cloud, so they are Oracle Cloud Apps right?</li> <li>If you are writing extensions to SaaS using the PaaS features, you are writing Oracle apps in the cloud. These are Oracle Cloud Apps right?</li> <li>E-Business Suite 12.x. They are Oracle Apps and they are at version 12, so they are Oracle Apps 12 right?</li> <li>Fusion Middleware 12c Release 1 or 2.¬†If I&#8217;m writing apps on this stack they are Oracle Apps at version 12 right?</li> <li>I can put anything on Oracle Public Cloud. Those are then Oracle Cloud Apps right?</li> <li>All¬†the other applications products and NetSuite etc. They are Oracle Cloud Apps right?</li> </ul> <p>In the above examples I&#8217;m being intentionally silly, but I think you get the picture. If you are a little loose with your terminology, description or phrasing it&#8217;s really easy to be misunderstood.</p> <p>What&#8217;s more, as individuals we each have a¬†different set of experiences, so we are entering¬†the conversation with some specific context in mind, and kind-of assume everyone understands our context.</p> <p>Today I had a¬†chat on Twitter with a couple of guys (<a href="https://twitter.com/AndrejsKarpovs" data-user-id="223425555">Andrejs Karpovs‚ÄŹ</a>¬†and¬†<a href="https://twitter.com/aprokopjevs" data-user-id="221718603">Andrejs Prokopjevs</a><span class="FullNameGroup"><a class="account-group js-account-group js-action-profile js-user-profile-link js-nav" href="https://twitter.com/aprokopjevs" data-user-id="221718603">‚ÄŹ</a>)</span>¬†about my &#8220;Oracle Cloud Apps DBA&#8221; comments in <a href="https://oracle-base.com/blog/2017/03/13/should-i-learn-cloud/">this post</a>. Both those guys are¬†infinitely more qualified to speak about apps than me, but for a time I think we were speaking at cross purposes. I agree with everything that was said¬†in the context it was said, but we were coming at things from quite different angles, so we seemed to be disagreeing at times. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>It just feeds back into what <a href="http://debrasoracle.blogspot.co.uk/2017/03/cloud-twelve-and-oracle-office-of.html">Debra</a> has been saying about how you have to be super careful when¬†you discuss this stuff, and why she&#8217;s started to use the &#8220;Oracle Fusion Apps&#8221; name again in some conversations. I find myself saying things like, &#8220;Oracle Cloud Apps, formerly know as Oracle Fusion Apps&#8221;, which is a complete pain in the ass and doesn&#8217;t work too well on Twitter. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/08/do-not-talk-about-oracle-cloud-apps/">The first rule of Oracle Cloud Apps is: You do not talk about Oracle Cloud Apps</a> was first posted on April 8, 2017 at 8:45 pm.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7068 Sat Apr 08 2017 15:45:56 GMT-0400 (EDT) Switching MPM Type for Oracle HTTP Server 12c http://dirknachbar.blogspot.com/2017/04/switching-mpm-type-for-oracle-http.html The Oracle HTTP Server (OHS) comes by default with the MPM (Multi-Processing Modules) Type event for Linux systems, but sometimes you need to change the MPM Type for example to prefork.<br /><br />The Oracle HTTP Server comes by default with 4 MPM Types:<br /><ul><li>Worker: This is the default for non-Linux UNIX Platforms, e.g. Solaris, AIX ...</li><li>Event: This is the default for Linux Platforms</li><li>Prefork: This Type implements a non-threaded, pre-forking server, that handles request as an Apache HTTPD Server 1.3</li><li>WinNT: This is the default for Windows Platforms</li></ul>For more details about the MPM Types see <a href="http://docs.oracle.com/middleware/12212/webtier/administer-ohs/man_server.htm#zzaszzohszzmpm" target="_blank">http://docs.oracle.com/middleware/12212/webtier/administer-ohs/man_server.htm#zzaszzohszzmpm</a><br /><br />In case you need to switch the MPM Type, you need at first to check if you have a standalone OHS or a OHS in a WebLogic Server Domain, as the way to switch the MPM Type is depending on these 2 options.<br /><br /><h4>Switching MPM for a standalone OHS:</h4>Simply connect to your server as oracle user and perform following steps: <br /><pre class="brush:bash">cd $DOMAIN_HOME/config/fmwconfig/components/OHS/&lt;OHS_Componentname&gt;/<br /><br /># Open the Config File ohs.plugins.nodemanager.properties<br /># and add following line at the end<br /># depending on your desired MPM Type<br /># mpm = prefork<br /># mpm = worker<br /># mpm = event<br />mpm = prefork<br /></pre><br />After that restart your OHS with: <br /><pre class="brush:bash">cd $DOMAIN_HOME/bin<br />./stopComponent.sh &lt;OHS_Componentname&gt;<br />./startComponent.sh &lt;OHS_Componentname&gt; <br /></pre><br /><h4>Switching MPM for OHS in a WebLogic Domain </h4>Simply connect to your server as oracle user and perform following steps: <br /><pre class="brush:bash">$ORACLE_HOME/oracle_common/common/bin/wlst.sh<br />connect('weblogic', '&lt;AdminPassword&gt;', '&lt;servername&gt;:&lt;Port&gt;')<br />editCustom()<br />cd('oracle.ohs')<br />cd('oracle.ohs:type=OHSInstance.NMProp,OHSInstance=&lt;OHS_Componentname&gt;,component=OHS')<br />startEdit()<br /># Set here your desired MPM Type</pre><pre class="brush:bash"># possible values are:</pre><pre class="brush:bash"># - prefork</pre><pre class="brush:bash"># - event</pre><pre class="brush:bash"># - worker</pre><pre class="brush:bash"># - winnt (only for Windows)<br />set('Mpm','prefork') <br />save()<br />activate()<br /></pre><br />After that restart your OHS with: <br /><pre class="brush:bash">cd $DOMAIN_HOME/bin<br />./stopComponent.sh &lt;OHS_Componentname&gt;<br />./startComponent.sh &lt;OHS_Componentname&gt; <br /></pre><br /><br /> Dirk Nachbar tag:blogger.com,1999:blog-4344684978957885806.post-4097287576409777487 Fri Apr 07 2017 10:09:00 GMT-0400 (EDT) Oracle Mobile Cloud Service (MCS): An introduction to API security: Basic Authentication and OAuth2 https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/ <p>As an integration/backend developer, when starting a project using Mobile Cloud Service, it is important to have some understanding of what this MBaaS (Mobile Backend as a Service) has to offer in terms of security features. This is important in order to be able to configure and test MCS. In this blog I will give examples on how to configure and use the basic authentication and OAuth2 features which are provided to secure APIs. You can read the Oracle documentation (which is quite good for MCS!) on this topic <a href="https://docs.oracle.com/en/cloud/paas/mobile-cloud/mcsua/authentication-mcs.html">here</a>.</p> <p><span id="more-44575"></span></p> <h1>Introduction</h1> <p>Oracle Mobile Cloud Service offers platform APIs to offer specific features. You can create custom APIs by writing JavaScript code to run on Node.js. Connectors are used to access backend systems. This blogs focuses on authentication options for incoming requests.</p> <p>The connectors are not directly available from the outside. MCS can secure custom and platform APIs. This functionality is taken care of by the Mobile Backend and the custom API configuration.</p> <h2><a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?ssl=1"><img data-attachment-id="44585" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/incoming-authentication/" data-orig-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?fit=1358%2C648&amp;ssl=1" data-orig-size="1358,648" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="incoming authentication" data-image-description="" data-medium-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?fit=300%2C143&amp;ssl=1" data-large-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?fit=702%2C335&amp;ssl=1" class="aligncenter size-medium wp-image-44585" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?resize=300%2C143&#038;ssl=1" alt="" srcset="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?resize=300%2C143&amp;ssl=1 300w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?resize=768%2C366&amp;ssl=1 768w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?resize=1024%2C489&amp;ssl=1 1024w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?resize=1078%2C516&amp;ssl=1 1078w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?resize=702%2C336&amp;ssl=1 702w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/incoming-authentication.png?w=1358&amp;ssl=1 1358w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a>Getting started</h2> <p>The first thing to do when you want to expose an API is assign the API to a Mobile Backend. You can do this in the Mobile Backend configuration screen, APIs tab.</p> <p><a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_21.png?ssl=1"><img data-attachment-id="44580" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/image_21/" data-orig-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_21.png?fit=1600%2C534&amp;ssl=1" data-orig-size="1600,534" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image_21" data-image-description="" data-medium-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_21.png?fit=300%2C100&amp;ssl=1" data-large-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_21.png?fit=702%2C234&amp;ssl=1" class="aligncenter size-medium wp-image-44580" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_21.png?resize=300%2C100&#038;ssl=1" alt="" srcset="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_21.png?resize=300%2C100&amp;ssl=1 300w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_21.png?resize=768%2C256&amp;ssl=1 768w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_21.png?resize=1024%2C342&amp;ssl=1 1024w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_21.png?w=1600&amp;ssl=1 1600w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_21.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>You can allow anonymous access, but generally you want to know who accesses your API. Also because MCS has a license option to pay for a specific number of API calls; you want to know who you are paying for. In order to require authentication on a per user basis, you first have to create a user and assign it to a group. You can also do this from the Mobile Backend configuration. Go to the Mobile Users Management tab to create users and groups.</p> <p><a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_22.png?ssl=1"><img data-attachment-id="44581" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/image_22/" data-orig-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_22.png?fit=1600%2C530&amp;ssl=1" data-orig-size="1600,530" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image_22" data-image-description="" data-medium-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_22.png?fit=300%2C99&amp;ssl=1" data-large-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_22.png?fit=702%2C232&amp;ssl=1" class="aligncenter size-medium wp-image-44581" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_22.png?resize=300%2C99&#038;ssl=1" alt="" srcset="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_22.png?resize=300%2C99&amp;ssl=1 300w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_22.png?resize=768%2C254&amp;ssl=1 768w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_22.png?resize=1024%2C339&amp;ssl=1 1024w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_22.png?w=1600&amp;ssl=1 1600w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_22.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>After you have done this, you can assign the role to the API. You can also do this on a per endpoint basis which makes this authentication scheme very flexible.</p> <p><a href="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_24.png?ssl=1"><img data-attachment-id="44582" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/image_24/" data-orig-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_24.png?fit=1600%2C643&amp;ssl=1" data-orig-size="1600,643" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image_24" data-image-description="" data-medium-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_24.png?fit=300%2C121&amp;ssl=1" data-large-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_24.png?fit=702%2C282&amp;ssl=1" class="aligncenter size-medium wp-image-44582" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_24.png?resize=300%2C121&#038;ssl=1" alt="" srcset="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_24.png?resize=300%2C121&amp;ssl=1 300w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_24.png?resize=768%2C309&amp;ssl=1 768w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_24.png?resize=1024%2C412&amp;ssl 1024w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_24.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_24.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>Now we have configured our API to allow access to users who are in a specific role. We can now call our API using basic authentication or OAuth2.</p> <h1>Basic Authentication</h1> <p>In order to test our API, Postman is a suitable option. <a href="https://www.getpostman.com/">Postman</a> is a freely available Chrome plugin (but also available standalone for several OSes) which provides many options for testing HTTP calls.</p> <p><a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_29.png?ssl=1"><img data-attachment-id="44584" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/image_29/" data-orig-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_29.png?fit=512%2C512&amp;ssl=1" data-orig-size="512,512" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image_29" data-image-description="" data-medium-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_29.png?fit=300%2C300&amp;ssl=1" data-large-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_29.png?fit=512%2C512&amp;ssl=1" class="aligncenter wp-image-44584 size-thumbnail" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_29.png?resize=150%2C150&#038;ssl=1" alt="" srcset="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_29.png?resize=150%2C150&amp;ssl=1 150w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_29.png?resize=300%2C300&amp;ssl=1 300w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_29.png?resize=144%2C144&amp;ssl=1 144w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_29.png?w=512&amp;ssl=1 512w" sizes="(max-width: 150px) 100vw, 150px" data-recalc-dims="1" /></a></p> <p>Basic authentication is a rather weak authentication mechanism. You Base64 encode a string username:password and send that as an HTTP header to the API you are calling. If someone intercepts the message, he/she can easily Base64 decode the username:password string to obtain the credentials. You can thus understand why I&#8217;ve blanked out that part of the Authorization field in several screenshots.</p> <p>In addition to specifying the basic authentication header, you also need to specify the Oracle-Mobile-Backend-Id HTTP header which can be obtained from the main page of the Mobile Backend configuration page.</p> <p>Obtain Oracle-Mobile-Backend-Id</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?ssl=1"><img data-attachment-id="44583" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/image_25/" data-orig-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?fit=1600%2C768&amp;ssl=1" data-orig-size="1600,768" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image_25" data-image-description="" data-medium-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?fit=300%2C144&amp;ssl=1" data-large-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?fit=702%2C337&amp;ssl=1" class="aligncenter size-medium wp-image-44583" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?resize=300%2C144&#038;ssl=1" alt="" srcset="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?resize=300%2C144&amp;ssl=1 300w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?resize=768%2C369&amp;ssl=1 768w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?resize=1024%2C492&amp;ssl=1 1024w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?resize=1078%2C516&amp;ssl=1 1078w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?resize=702%2C336&amp;ssl=1 702w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?w=1600&amp;ssl=1 1600w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/image_25.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a>Call your API with Basic authentication</p> <p><a href="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/basic-authentication.png?ssl=1"><img data-attachment-id="44577" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/basic-authentication/" data-orig-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/basic-authentication.png?fit=1600%2C637&amp;ssl=1" data-orig-size="1600,637" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="basic authentication" data-image-description="" data-medium-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/basic-authentication.png?fit=300%2C119&amp;ssl=1" data-large-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/basic-authentication.png?fit=702%2C280&amp;ssl=1" class="aligncenter size-medium wp-image-44577" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/basic-authentication.png?resize=300%2C119&#038;ssl=1" alt="" srcset="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/basic-authentication.png?resize=300%2C119&amp;ssl=1 300w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/basic-authentication.png?resize=768%2C306&amp;ssl=1 768w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/basic-authentication.png?resize=1024%2C408&amp;ssl=1 1024w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/basic-authentication.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/basic-authentication.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>This mechanism is rather straightforward. The authorization header needs to be supplied with every request though.</p> <h1>OAuth2</h1> <p>OAuth2 works a bit different than basic authentication in that first a token is obtained from a token service and the token is used in subsequent requests. When using the token, no additional authentication is required.<a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/oauth-token.png?ssl=1"><img data-attachment-id="44586" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/oauth-token/" data-orig-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/oauth-token.png?fit=1463%2C736&amp;ssl=1" data-orig-size="1463,736" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="oauth token" data-image-description="" data-medium-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/oauth-token.png?fit=300%2C151&amp;ssl=1" data-large-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/oauth-token.png?fit=702%2C353&amp;ssl=1" class="aligncenter size-medium wp-image-44586" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/oauth-token.png?resize=300%2C151&#038;ssl=1" alt="" srcset="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/oauth-token.png?resize=300%2C151&amp;ssl=1 300w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/oauth-token.png?resize=768%2C386&amp;ssl=1 768w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/oauth-token.png?resize=1024%2C515&amp;ssl=1 1024w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/oauth-token.png?w=1463&amp;ssl=1 1463w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/04/oauth-token.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>You can obtain the token from the Mobile Backend settings page as shown above. When you do a request to this endpoint, you need to provide some information:</p> <p><a href="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?ssl=1"><img data-attachment-id="44590" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/using-a-token/" data-orig-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?fit=1600%2C460&amp;ssl=1" data-orig-size="1600,460" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="using a token" data-image-description="" data-medium-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?fit=300%2C86&amp;ssl=1" data-large-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?fit=702%2C202&amp;ssl=1" class="aligncenter size-medium wp-image-44590" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?resize=300%2C86&#038;ssl=1" alt="" srcset="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?resize=300%2C86&amp;ssl=1 300w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?resize=768%2C221&amp;ssl=1 768w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?resize=1024%2C294&amp;ssl=1 1024w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>You can use basic authentication with the Client ID:Client secret to access the token endpoint. These can be obtained from the screen shown below.</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?ssl=1"><img data-attachment-id="44578" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/client-id-and-client-secret/" data-orig-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?fit=1600%2C766&amp;ssl=1" data-orig-size="1600,766" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="client id and client secret" data-image-description="" data-medium-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?fit=300%2C144&amp;ssl=1" data-large-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?fit=702%2C336&amp;ssl=1" class="aligncenter size-medium wp-image-44578" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?resize=300%2C144&#038;ssl=1" alt="" srcset="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?resize=300%2C144&amp;ssl=1 300w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?resize=768%2C368&amp;ssl=1 768w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?resize=1024%2C490&amp;ssl=1 1024w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?resize=1078%2C516&amp;ssl=1 1078w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?resize=702%2C336&amp;ssl=1 702w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?w=1600&amp;ssl=1 1600w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/client-id-and-client-secret.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>You also need to supply a username and password of the user for whom the token is generated. After you have done a request to the token service, you obtain a token.</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/got-a-token.png?ssl=1"><img data-attachment-id="44579" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/got-a-token/" data-orig-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/got-a-token.png?fit=1600%2C611&amp;ssl=1" data-orig-size="1600,611" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="got a token" data-image-description="" data-medium-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/got-a-token.png?fit=300%2C115&amp;ssl=1" data-large-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/got-a-token.png?fit=702%2C268&amp;ssl=1" class="aligncenter size-medium wp-image-44579" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/got-a-token.png?resize=300%2C115&#038;ssl=1" alt="" srcset="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/got-a-token.png?resize=300%2C115&amp;ssl=1 300w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/got-a-token.png?resize=768%2C293&amp;ssl=1 768w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/got-a-token.png?resize=1024%2C391&amp;ssl=1 1024w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/got-a-token.png?w=1600&amp;ssl=1 1600w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/got-a-token.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>This token can be used in subsequent request to your API. You can add the Bearer field with the token as Authentication HTTP header to authenticate instead of sending your username/password every time. This is thus more secure.</p> <p><a href="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?ssl=1"><img data-attachment-id="44590" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/using-a-token/" data-orig-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?fit=1600%2C460&amp;ssl=1" data-orig-size="1600,460" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="using a token" data-image-description="" data-medium-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?fit=300%2C86&amp;ssl=1" data-large-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?fit=702%2C202&amp;ssl=1" class="aligncenter size-medium wp-image-44590" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?resize=300%2C86&#038;ssl=1" alt="" srcset="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?resize=300%2C86&amp;ssl=1 300w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?resize=768%2C221&amp;ssl=1 768w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?resize=1024%2C294&amp;ssl=1 1024w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/using-a-token.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <h1>Finally</h1> <p>I&#8217;ve not talked about security options for outgoing requests provided by the supplied connectors.</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/outgoing-authentication.png?ssl=1"><img data-attachment-id="44588" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/outgoing-authentication/" data-orig-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/outgoing-authentication.png?fit=1348%2C633&amp;ssl=1" data-orig-size="1348,633" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="outgoing authentication" data-image-description="" data-medium-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/outgoing-authentication.png?fit=300%2C141&amp;ssl=1" data-large-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/outgoing-authentication.png?fit=702%2C330&amp;ssl=1" class="aligncenter size-medium wp-image-44588" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/outgoing-authentication.png?resize=300%2C141&#038;ssl=1" alt="" srcset="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/outgoing-authentication.png?resize=300%2C141&amp;ssl=1 300w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/outgoing-authentication.png?resize=768%2C361&amp;ssl=1 768w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/outgoing-authentication.png?resize=1024%2C481&amp;ssl=1 1024w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/outgoing-authentication.png?w=1348&amp;ssl=1 1348w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>These have per connector specific options and allow identity propagation. For example the REST connector (described in the Oracle documentation <a href="https://docs.oracle.com/en/cloud/paas/mobile-cloud/mcsua/rest-connector-apis.html#GUID-AC81173E-BA4F-412A-AC5C-135344856DCC">here</a>) supports SAML tokens, CSF keys, basic authentication, OAuth2, JWT. The SOAP connector (see <a href="https://docs.oracle.com/en/cloud/paas/mobile-cloud/mcsua/security-policies-connector-apis.html#GUID-67243763-70B0-40AB-84BF-45EFF2F18436">here</a>) can use WS-Security in several flavours, SAML tokens, CSF keys, basic authentication, etc (quite a list).</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/soap_security.png?ssl=1"><img data-attachment-id="44589" data-permalink="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/soap_security/" data-orig-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/soap_security.png?fit=788%2C563&amp;ssl=1" data-orig-size="788,563" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="soap_security" data-image-description="" data-medium-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/soap_security.png?fit=300%2C214&amp;ssl=1" data-large-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/soap_security.png?fit=702%2C502&amp;ssl=1" class="aligncenter size-medium wp-image-44589" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/soap_security.png?resize=300%2C214&#038;ssl=1" alt="" srcset="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/soap_security.png?resize=300%2C214&amp;ssl=1 300w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/soap_security.png?resize=768%2C549&amp;ssl=1 768w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/soap_security.png?w=788&amp;ssl=1 788w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/04/07/mcs-introduction-api-security-basic-authentication-oauth2/">Oracle Mobile Cloud Service (MCS): An introduction to API security: Basic Authentication and OAuth2</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Maarten Smeets https://technology.amis.nl/?p=44575 Fri Apr 07 2017 08:41:40 GMT-0400 (EDT) Oracle E-Business Suite 12.2 Web Services Security: Authentication and Authorization https://www.integrigy.com/security-resources/oracle-e-business-suite-122-web-services-security-authentication-and <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>This is the seventh posting in a blog series summarizing the new Oracle E-Business Suite 12.2 Mobile and web services functionality and recommendations for securing them.</p> <p>Once traffic is accepted and passed by the URL Firewall, WebLogic initiates the standard Oracle E-Business Suite authentication and authorization procedures. Web services are authenticated and authorized no differently than for end-users.</p> <p>Authorization rules for web services are relatively easy to configure in that all web services are defined as functions. The Oracle E-Business Suite's function security scheme and rules engine apply the same to GUI forms as for web services. In other words, the table APPLSYS.FND_FORM_FUNCTIONS defines all the forms that users use as well as defines all web services deployed. Menus then are built referencing these functions and Oracle E-Business Suite user accounts (APPLSYS.FND_USER) are given responsibilities with the menus of functions. These user accounts can be staff members or can be generic accounts (e.g. to support specific web services). Ensuring that appropriate users and responsibilities can call and use specific web services is the same critical step as ensuring that only appropriate users can use specific forms.</p> <p>There are two authentication options for web services, local FND_USER passwords and tokens. Tokens can be SAML send vouchers/E-Business Suite Session Ids). Whichever is used, ensure that accounts are not inappropriately over privileged and the passwords and tokens not widely known and/or shared.</p> <p>If you have any questions, please contact us at <a href="mailto:info@integrigy.com">info@integrigy.com</a></p> <p>-Michael Miller, CISSP-ISSMP, CCSP, CCSK</p> <h3>References</h3> <ul> <li><a data-jsb_prepared="ykbfl5hty6" href="/security-resources/oracle-e-business-suite-mobile-and-web-services-security-0" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security</a>&nbsp;- Integrigy Whitepaper</li> <li><a data-jsb_prepared="q6ttrgzbhv" href="/security-resources/oracle-e-business-suite-mobile-and-web-services-security" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security</a>&nbsp;- Integrigy Webinar</li> <li><a data-jsb_prepared="fnwzv64bp8" href="https://support.oracle.com/rs?type=doc&amp;id=1375670.1" rel="noreferrer">Oracle E-Business Suite Release 12.2 Configuration in a DMZ</a>&nbsp;(Note 1375670.1)</li> </ul> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> </div></div></div><a href="/tags/web-services" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Web Services</a>, <a href="/tags/dmzexternal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">DMZ/External</a>, <a href="/tags/oracle-e-business-suite" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle E-Business Suite</a> mmiller 550 at https://www.integrigy.com Fri Apr 07 2017 07:00:00 GMT-0400 (EDT) Machine learning: Getting started with random forests in R https://technology.amis.nl/2017/04/07/machine-learning-getting-started-random-forests-r/ <p>According to <a href="http://www.gartner.com/newsroom/id/3412017">Gartner</a>, machine learning is on top of the hype cycle at the peak of inflated expectations. There is a lot of misunderstanding about what machine learning actually is and what it can be done with it.</p> <p>Machine learning is not as abstract as one might think. If you want to get value out of known data and do predictions for unknown data, the most important challenge is asking the right questions and of course knowing what you are doing, especially if you want to optimize your prediction accuracy.</p> <p>In this blog I&#8217;m exploring an example of machine learning. The random forest algorithm. I&#8217;ll provide an example on how you can use this algorithm to do predictions. In order to implement a random forest, I&#8217;m using R with the randomForest library and I&#8217;m using the <a href="https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/iris.html">iris data set</a> which is provided by the R installation.</p> <p><span id="more-44569"></span></p> <h1>The Random Forest</h1> <p>A popular method of machine learning is by using decision tree learning. Decision tree learning comes closest to serving as an off-the-shelf procedure for data mining (see here). You do not need to know much about your data in order to be able to apply this method. The random forest algorithm is an example of a decision tree learning algorithm.</p> <h2>Random forest in (very) short</h2> <p>How it works exactly takes some time to figure out. If you want to know details, I recommend watching some youtube recordings of lectures on the topic. Some of its most important features of this method:</p> <ul> <li>A random forest is a method to do classifications based on features. This implies you need to have features and classifications.</li> <li>A random forest generates a set of classification trees (an ensemble) based on splitting a subset of features at locations which maximize information gain. This method is thus very suitable for distributed parallel computation.</li> <li>Information gain can be determined by how accurate the splitting point is in determining the classification. Data is split based on the feature at a specific point and the classification on the left and right of the splitting point are checked. If for example the splitting point splits all data of a first classification from all data of a second classification, the confidence is 100%; maximum information gain.</li> <li>A splitting point is a branching in the decision tree.</li> <li>Splitting points are based on values of features (this is fast)</li> <li>A random forest uses randomness to determine features to look at and randomness in the data used to construct the tree. Randomness helps reducing compute time.</li> <li>Each tree gets to see a different dataset. This is called bagging.</li> <li>Tree classification confidences are summed and averaged. Products of the confidences can also be taken. Individual trees have a high variance because they have only seen a small subset of data. Averaging helps creating a better result.</li> <li>With correlated features, strong features can end up with low scores and the method can be biased towards variables with many categories.</li> <li>A random forest does not perform well with unbalanced datasets; samples where there are more occurrences of a specific class.</li> </ul> <h2>Use case for a random forest</h2> <p>Use cases for a random forest can be for example text classification such as spam detection. Determine if certain words are present in a text can be used as a feature and the classification would be spam/not spam or even more specific such as news, personal, etc. Another interesting use case lies in genetics. Determining if the expression of certain genes is relevant for a specific disease. This way you can take someone&#8217;s DNA and determine with a certain confidence if someone will contract a disease. Of course you can also take other features into account such as income, education level, smoking, age, etc.</p> <h1>R</h1> <h2>Why R</h2> <p>I decided to start with R. Why? Mainly because it is easy. There are many libraries available and there is a lot of experience present worldwide; a lot of information can be found online. R however also has some drawbacks.</p> <p>Some benefits</p> <ul> <li>It is free and easy to get started. Hard to master though.</li> <li>A lot of libraries are available. R package management works well.</li> <li>R has a lot of users. There is a lot of information available online</li> <li>R is powerful in that if you know what you are doing, you require little code doing it.</li> </ul> <p>Some challenges</p> <ul> <li>R loads datasets in memory</li> <li>R is not the best at doing distributed computing but can do so. See for example here</li> <li>The R syntax can be a challenge to learn</li> </ul> <h2>Getting the environment ready</h2> <p>I decided to install a Linux VM to play with. You can also install R and R studio (the R IDE) on Windows or Mac. I decided to start with <a href="https://www.ubuntu.com/download/server">Ubuntu Server</a>. I first installed the usual things like a GUI. Next I installed some handy things like a terminal emulator, Firefox and stuff like that. I finished with installing R and R-studio.</p> <p>So first download and install Ubuntu Server (next, next, finish)</p> <p>sudo apt-get update<br /> sudo apt-get install aptitude</p> <p>&#8211;Install a GUI<br /> sudo aptitude install &#8211;without-recommends ubuntu-desktop</p> <p>&#8212; Install the VirtualBox Guest additions<br /> sudo apt-get install build-essential linux-headers-$(uname -r)<br /> Install guest additions (first mount the ISO image which is part of VirtualBox, next run the installer)</p> <p>&#8212; Install the below stuff to make Dash (Unity search) working<br /> http://askubuntu.com/questions/125843/dash-search-gives-no-result<br /> sudo apt-get install unity-lens-applications unity-lens-files</p> <p>&#8212; A shutdown button might come in handy<br /> sudo apt-get install indicator-session</p> <p>&#8212; Might come in handy. Browser and fancy terminal application<br /> sudo apt-get install firefox terminator</p> <p>&#8211;For the installation of R I used the following as inspiration: https://www.r-bloggers.com/how-to-install-r-on-linux-ubuntu-16-04-xenial-xerus/<br /> sudo echo &#8220;deb http://cran.rstudio.com/bin/linux/ubuntu xenial/&#8221; | sudo tee -a /etc/apt/sources.list<br /> gpg &#8211;keyserver keyserver.ubuntu.com &#8211;recv-key E084DAB9<br /> gpg -a &#8211;export E084DAB9 | sudo apt-key add &#8211;<br /> sudo apt-get update<br /> sudo apt-get install r-base r-base-dev</p> <p>&#8212; For the installation of R-studio I used: https://mikewilliamson.wordpress.com/2016/11/14/installing-r-studio-on-ubuntu-16-10/</p> <p>wget http://ftp.ca.debian.org/debian/pool/main/g/gstreamer0.10/libgstreamer0.10-0_0.10.36-1.5_amd64.deb<br /> wget http://ftp.ca.debian.org/debian/pool/main/g/gst-plugins-base0.10/libgstreamer-plugins-base0.10-0_0.10.36-2_amd64.deb<br /> sudo dpkg -i libgstreamer0.10-0_0.10.36-1.5_amd64.deb<br /> sudo dpkg -i libgstreamer-plugins-base0.10-0_0.10.36-2_amd64.deb<br /> sudo apt-mark hold libgstreamer-plugins-base0.10-0<br /> sudo apt-mark hold libgstreamer0.10</p> <p>wget https://download1.rstudio.org/rstudio-1.0.136-amd64.deb<br /> sudo dpkg -i rstudio-1.0.136-amd64.deb<br /> sudo apt-get -f install</p> <h2>Doing a random forest in R</h2> <p>R needs some libraries to do random forests and create nice plots. First give the following commands:</p> <p>#to do random forests<br /> install.packages(&#8220;randomForest&#8221;)</p> <p>#to work with R markdown language<br /> install.packages(&#8220;knitr&#8221;)</p> <p>#to create nice plots<br /> install.packages(&#8220;ggplot2&#8221;)</p> <p>In order to get help on a library you can give the following command which will give you more information on the library.</p> <p>library(help = &#8220;randomForest&#8221;)</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture02.png?ssl=1"><img data-attachment-id="44570" data-permalink="https://technology.amis.nl/2017/04/07/machine-learning-getting-started-random-forests-r/capture02-12/" data-orig-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture02.png?fit=1004%2C564&amp;ssl=1" data-orig-size="1004,564" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Capture02" data-image-description="" data-medium-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture02.png?fit=300%2C169&amp;ssl=1" data-large-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture02.png?fit=702%2C394&amp;ssl=1" class="aligncenter size-medium wp-image-44570" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture02.png?resize=300%2C169&#038;ssl=1" alt="" srcset="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture02.png?resize=300%2C169&amp;ssl=1 300w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture02.png?resize=768%2C431&amp;ssl=1 768w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture02.png?w=1004&amp;ssl=1 1004w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a>¬†Of course, the randomForest implementation does have some specifics:</p> <ul> <li>it uses the reference implementation based on CART trees</li> <li>it is biased in favor of continuous variables and variables with many categories</li> </ul> <p>A simple program to do a random forest looks like this:</p> <p>#load libraries<br /> library(randomForest)<br /> library(knitr)<br /> library(ggplot2)</p> <p>#random numbers after the set.seed(10) are reproducible if I do set.seed(10) again<br /> set.seed(10)</p> <p>#create a training sample of 45 items from the iris dataset. replace indicates items can only be present once in the dataset. If replace is set to true, you will get Out of bag errors.<br /> idx_train &lt;- sample(1:nrow(iris), 45, replace = FALSE)</p> <p>#create a data.frame from the data which is not in the training sample<br /> tf_test &lt;- !1:nrow(iris) %in% idx_train</p> <p>#the column ncol(iris) is the last column of the iris dataset. this is not a feature column but a classification column<br /> feature_columns &lt;- 1:(ncol(iris)-1)</p> <p>#generate a randomForest.<br /> #use the feature columns from training set for this<br /> #iris[idx_train, ncol(iris)] indicates the classification column<br /> #importance=TRUE indicates the importance of features in determining the classification should be determined<br /> #y = iris[idx_train, ncol(iris)] gives the classifications for the provided data<br /> #ntree=1000 indicates 1000 random trees will be generated<br /> model &lt;- randomForest(iris[idx_train, feature_columns], y = iris[idx_train, ncol(iris)], importance = TRUE, ntree = 1000)</p> <p>#print the model<br /> #printing the model indicates how the sample dataset is distributed among classes. The sum of the sample classifications is 45 which is the sample size. OOB rate indicates &#8216;out of bag&#8217; (the overall classification error).</p> <p>print(model)</p> <p><a href="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture03.png?ssl=1"><img data-attachment-id="44571" data-permalink="https://technology.amis.nl/2017/04/07/machine-learning-getting-started-random-forests-r/capture03-9/" data-orig-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture03.png?fit=855%2C192&amp;ssl=1" data-orig-size="855,192" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Capture03" data-image-description="" data-medium-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture03.png?fit=300%2C67&amp;ssl=1" data-large-file="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture03.png?fit=702%2C158&amp;ssl=1" class="aligncenter size-medium wp-image-44571" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture03.png?resize=300%2C67&#038;ssl=1" alt="" srcset="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture03.png?resize=300%2C67&amp;ssl=1 300w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture03.png?resize=768%2C172&amp;ssl=1 768w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture03.png?w=855&amp;ssl=1 855w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>#we use the model to predict the class based on the feature columns of the dataset (minus the sample used to train the model).<br /> response &lt;- predict(model, iris[tf_test, feature_columns])</p> <p>#determine the number of correct classifications<br /> correct &lt;- response == iris[tf_test, ncol(iris)]</p> <p>#determine the percentage of correct classifications<br /> sum(correct) / length(correct)</p> <p>#print a variable importance (varImp) plot of the randomForest<br /> varImpPlot(model)</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture04.png?ssl=1"><img data-attachment-id="44572" data-permalink="https://technology.amis.nl/2017/04/07/machine-learning-getting-started-random-forests-r/capture04-7/" data-orig-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture04.png?fit=830%2C492&amp;ssl=1" data-orig-size="830,492" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Capture04" data-image-description="" data-medium-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture04.png?fit=300%2C178&amp;ssl=1" data-large-file="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture04.png?fit=702%2C416&amp;ssl=1" class="aligncenter size-medium wp-image-44572" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture04.png?resize=300%2C178&#038;ssl=1" alt="" srcset="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture04.png?resize=300%2C178&amp;ssl=1 300w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture04.png?resize=768%2C455&amp;ssl=1 768w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/04/Capture04.png?w=830&amp;ssl=1 830w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>#in this dataset the petal length and width are more important measures to determine the class than the sepal length and width.</p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/04/07/machine-learning-getting-started-random-forests-r/">Machine learning: Getting started with random forests in R</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Maarten Smeets https://technology.amis.nl/?p=44569 Fri Apr 07 2017 03:08:23 GMT-0400 (EDT) Oracle Code : See you there! http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/CrMkRjtpJyU/ <p><a href="https://developer.oracle.com/code"><img class="size-full wp-image-7058 alignleft" src="https://oracle-base.com/blog/wp-content/uploads/2017/04/oracle_code.png" alt="" width="188" height="189" /></a>You may have seen a lot of tweets (<a href="https://twitter.com/search?src=typd&amp;q=%23OracleCode">#OracleCode</a>) recently¬†about the <a href="https://developer.oracle.com/code">Oracle Code</a> events around the world.</p> <p>The content of the events is rather different to the typical Oracle events I go to, so it will be a good opportunity for me to learn some new stuff.</p> <p>I&#8217;ll be speaking at two¬†of the European events this year.</p> <ul> <li><a href="https://developer.oracle.com/code/london">London</a></li> <li><a href="https://developer.oracle.com/code/prague">Prague</a></li> </ul> <p>They are Oracle events, so there is bound to be an Oracle spin on things, but I think it&#8217;s a welcome change of tack for Oracle to acknowledge¬†that they are not always the centre of the universe in the minds of developers.¬†If there is an event near you, check it out and see what is happening in the development world these days.</p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/07/oracle-code-see-you-there/">Oracle Code : See you there!</a> was first posted on April 7, 2017 at 7:30 am.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /><img src="http://feeds.feedburner.com/~r/TheOracleBaseBlog/~4/CrMkRjtpJyU" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=7057 Fri Apr 07 2017 02:30:32 GMT-0400 (EDT) Indexing in Oracle, Fragmentation http://dbakevlar.com/2017/04/indexing-oracle-fragmentation/ <div id="tweetbutton6629" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Findexing-oracle-fragmentation%2F&amp;text=RT%20%40DBAKevlar%20%40DBAKevlar%20%3A&amp;related=DBAKevlar:DBA+Kevlar&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Findexing-oracle-fragmentation%2F" class="twitter-share-button" style="width:55px;height:22px;background:transparent url('http://dbakevlar.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat 0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><div class="pf-content"><p>I just uploaded my slides from Collaborate 2017 to Slideshare, but also, the findings missing from my slide deck I used for Oak Table World on War of the Indices- Oracle and SQL Server. ¬†Feel free to download them <a href="https://www.slideshare.net/kellynpotvin/war-of-the-indices-sql-server-and-oracle">here</a>.</p> <p><a href="http://dbakevlar.com/2017/04/indexing-oracle-fragmentation/showdown/" rel="attachment wp-att-6647"><img class="alignnone size-full wp-image-6647" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/04/showdown.gif?resize=256%2C192" alt="" data-recalc-dims="1" /></a></p> <p>As I tested out Oracle vs. SQL Server Index performance, I ran across this great script to check for fragmentation from <a href="https://blog.dbi-services.com/how-i-measure-oracle-index-fragmentation/">Franck Pachot</a>. ¬†You&#8217;ll need to simply update the script to declare the table and index name or simply edit the script as is, adding those two values correctly before running it.</p> <p>The outcome when run against my ugly index in the testing of the good, the bad and the ugly, was fun, to say the least:</p> <pre class="p1"><span class="s1">SQL&gt; @index_frag.sql;</span> <span class="s1"> C1 -&gt; <span class="Apple-converted-space">¬† ¬† ¬† </span>C1 rows/block bytes/block %free space blocks free</span> <span class="s1">---------- -- ---------- ---------- ----------- ----------- ---------- -----</span> <span class="s1"><span class="Apple-converted-space">¬†¬† ¬† </span>30041 -&gt; <span class="Apple-converted-space">¬† </span>130221 35 <span class="Apple-converted-space">¬† ¬† </span>560<span class="Apple-converted-space">¬† </span>93 <span class="Apple-converted-space">¬† </span>2851 oooo</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>130256 -&gt; <span class="Apple-converted-space">¬† </span>230433 35 <span class="Apple-converted-space">¬† ¬† </span>560<span class="Apple-converted-space">¬† </span>93 <span class="Apple-converted-space">¬† </span>2851 oooo</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>230468 -&gt; <span class="Apple-converted-space">¬† </span>330654 35 <span class="Apple-converted-space">¬† ¬† </span>560<span class="Apple-converted-space">¬† </span>93 <span class="Apple-converted-space">¬† </span>2851 oooo</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>330689 -&gt; <span class="Apple-converted-space">¬† </span>430874 35 <span class="Apple-converted-space">¬† ¬† </span>560<span class="Apple-converted-space">¬† </span>93 <span class="Apple-converted-space">¬† </span>2851 oooo</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>430909 -&gt; <span class="Apple-converted-space">¬† </span>531073 35 <span class="Apple-converted-space">¬† ¬† </span>560<span class="Apple-converted-space">¬† </span>93 <span class="Apple-converted-space">¬† </span>2851 oooo</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>531108 -&gt; <span class="Apple-converted-space">¬† </span>631264 35 <span class="Apple-converted-space">¬† ¬† </span>560<span class="Apple-converted-space">¬† </span>93 <span class="Apple-converted-space">¬† </span>2850 oooo</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>631299 -&gt; <span class="Apple-converted-space">¬† </span>731429 35 <span class="Apple-converted-space">¬† ¬† </span>560<span class="Apple-converted-space">¬† </span>93 <span class="Apple-converted-space">¬† </span>2850 oooo</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>731464 -&gt; <span class="Apple-converted-space">¬† </span>831547 35 <span class="Apple-converted-space">¬† ¬† </span>560<span class="Apple-converted-space">¬† </span>93 <span class="Apple-converted-space">¬† </span>2850 oooo</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>831583 -&gt; <span class="Apple-converted-space">¬† </span>931711 35 <span class="Apple-converted-space">¬† ¬† </span>560<span class="Apple-converted-space">¬† </span>93 <span class="Apple-converted-space">¬† </span>2850 oooo</span> <span class="s1"><span class="Apple-converted-space">¬† ¬† </span>931746 -&gt; 1030047 34 <span class="Apple-converted-space">¬† ¬† </span>560<span class="Apple-converted-space">¬† </span>93 <span class="Apple-converted-space">¬† </span>2850 oooo</span></pre> <p class="p1">If you have just one or a couple indexes that you want to perform some deep analysis to view fragmentation, Franck&#8217;s script does an awesome job.</p> <p class="p1">Just my share for the day&#8230;. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <!-- Easy Plugin for AdSense Unfiltered [count: 3 is not less than 3] --></div><br><br><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/ico-tag.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> Tags:&nbsp;&nbsp;<a href="http://dbakevlar.com/tag/index-fragmentation/" rel="tag">index fragmentation</a>, <a href="http://dbakevlar.com/tag/oracle/" rel="tag">oracle</a><br><br><div style="width:100%"><table align="left" width="100%" cellspacing="0" cellpadding="0" bgcolor="#f1f1f1" border="0px;"> <tbody> <tr bgcolor="#ffffff"><td align="center" width="17%" valign="top"> <span class="sb_title">Del.icio.us</span><br> <a href="http://del.icio.us/post?url=http://dbakevlar.com/2017/04/indexing-oracle-fragmentation/&title=Indexing in Oracle, Fragmentation"> <img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/delicious.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"> </a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Facebook</span><br> <a href="http://www.facebook.com/share.php?u=http://dbakevlar.com/2017/04/indexing-oracle-fragmentation/"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/facebook_icon.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">TweetThis</span><br> <a href="http://twitthis.com/twit?url=http://dbakevlar.com/2017/04/indexing-oracle-fragmentation/&title=Indexing in Oracle, Fragmentation"><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tweet.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Digg</span><br> <a href="http://digg.com/submit?phase=2&url=http://dbakevlar.com/2017/04/indexing-oracle-fragmentation/&title=Indexing in Oracle, Fragmentation"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/digg.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">StumbleUpon</span><br> <a href="http://www.stumbleupon.com/submit?url=http://dbakevlar.com/2017/04/indexing-oracle-fragmentation/&title=Indexing in Oracle, Fragmentation"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/stumble.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td></tr> </tbody></table></div><br><div style="clear:both"></div><div style="background:#EEEEEE; padding:0px 0px 0px 15px; margin:10px 0px 0px 0px;"><div style="padding:5px 0px 5px 0px;"><b>Comments:</b>&nbsp;&nbsp;<a href="http://dbakevlar.com/2017/04/indexing-oracle-fragmentation/#comments">1 (One) on this item</a></div><br><div style="clear:both"></div><div style="padding:13px 0px 5px 0px;"><span style="border-bottom:1px dashed #003399;padding-bottom:4px;"><strong>You might be interested in this:</strong></span>&nbsp;&nbsp;<br><ul style="margin:0; padding:0; padding-top:10px; padding-bottom:5px;"><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2013/01/rmoug-tomorrow-is-last-day-for-early-bird-pricing/" >RMOUG- Tomorrow is Last Day for Early Bird Pricing!</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2017/03/iceland-awesome-colder-utah/" >Iceland is Awesome....and Colder than Utah</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2012/10/slides-from-oracle-open-world-and-other-schtuff/" >Slides from Oracle Open World and Other Schtuff!</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2011/12/its-an-rmoug-christmas/" >It's an RMOUG Christmas!</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2015/08/creating-a-trace-file-from-em12/" >Creating a Trace File from EM12</a></li></ul></div></div><hr style="color:#EBEBEB" /><small>Copyright ¬©¬†<a href="http://dbakevlar.com">DBA Kevlar</a> [<a href="http://dbakevlar.com/2017/04/indexing-oracle-fragmentation/">Indexing in Oracle, Fragmentation</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/04/indexing-oracle-fragmentation/">Indexing in Oracle, Fragmentation</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6629 Wed Apr 05 2017 18:41:12 GMT-0400 (EDT) Oracle and SQL Server Index Comparison http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/ <div id="tweetbutton6562" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Foracle-sql-server-index-comparison%2F&amp;text=RT%20%40DBAKevlar%20%40DBAKevlar%20%3A&amp;related=DBAKevlar:DBA+Kevlar&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdbakevlar.com%2F2017%2F04%2Foracle-sql-server-index-comparison%2F" class="twitter-share-button" style="width:55px;height:22px;background:transparent url('http://dbakevlar.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat 0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><div class="pf-content"><p><strong>This post has a lot of the support code and data for my Oak Table Talk that I&#8217;ll be giving at IOUG Collaborate 2017 in Las Vegas on April 5th, 2017. ¬†</strong></p> <p>One of the Iceland 2017 SQL Saturday sessions got me thinking about indexing and how similar and different it all is¬†in Oracle vs. SQL Server. ¬†There was some really fun, (well, at least what I call fun&#8230;) test cases built out and referenced by Paul Randal. ¬†After looking through some of it, I decided it might be interesting to try to replicate it to Oracle, (as close as possible) and compare how the two database platforms deal with index storage and specifically- SQL Server&#8217;s Fill Factor vs. Oracle PctIncrease index percentage filled.</p> <p>B-tree indexing is the cornerstone of physically optimizing searches on data. ¬†No consensus exists on what the &#8220;B&#8221; stands for, (some think its from Bayer, for one of the main gentlemen who did the research and many more believe it&#8217;s for Boeing, for the Research Center the research was done at.)</p> <p>The choice in how the data is organized, leafs and such are pretty standard, but database platforms have created some unique indexing that enhances queries on RDBMS vs. just having heap tables.</p> <p>Using Oracle and SQL Server as our choice for a comparison today,¬†there are a few translations I need for readers of this¬†blog:</p> <table id="tablepress-14" class="tablepress tablepress-id-14"> <thead> <tr class="row-1 odd"> <th class="column-1">Oracle</th><th class="column-2">SQL Server</th><th class="column-3">Description</th> </tr> </thead> <tbody class="row-hover"> <tr class="row-2 even"> <td class="column-1">Index Organized Table, (IOT)</td><td class="column-2">Clustered Index</td><td class="column-3">physical index storing data in their key values. In SQL Server, there can be only one Clustered index per table.</td> </tr> <tr class="row-3 odd"> <td class="column-1">Pctfree of block</td><td class="column-2">FillFactor of page</td><td class="column-3">Percent of storage that is allowed filled. There are different times when this is used for each platform.</td> </tr> <tr class="row-4 even"> <td class="column-1">Sequence</td><td class="column-2">TOP</td><td class="column-3">Ability to populate data with a sequential number</td> </tr> <tr class="row-5 odd"> <td class="column-1">dbms_random.string</td><td class="column-2">Replicate</td><td class="column-3">Ability to populate data with string values</td> </tr> <tr class="row-6 even"> <td class="column-1">block</td><td class="column-2">page</td><td class="column-3">unit of storage</td> </tr> <tr class="row-7 odd"> <td class="column-1">Automatic Workload Repository, (AWR)</td><td class="column-2">Dynamic Management Views, (DMV)</td><td class="column-3">Performance data collection</td> </tr> </tbody> </table> <!-- #tablepress-14 from cache --> <p>Now that we have that out of the way, you can use this trusty, little graph for common¬†terms that require a &#8220;translation&#8221;¬†from one database platform¬†to the other.</p> <p>The next thing to remember is that PCTFree and FillFactor aren&#8217;t adhered to at all times. ¬†Appending a row to an index is different than updating a row in an index and each platform has it&#8217;s own set of criteria to decide if it follows the rule of percentage of a block or page to fill or not.</p> <h3>The Test</h3> <p><strong>The steps of this test:</strong></p> <ol> <li>Create a table with three columns and two indexes- ¬†SQL Server having its trusted clustered index.</li> <li>Populate data of different sizes to each¬†of the tables.</li> <li>check the storage of our index &#8220;health&#8221;</li> <li>Remove data</li> <li>Repeat step 2 and also remove data</li> <li>Check the storage again to see how it has changed- ¬†page splits in SQL Server, leaf block splits in Oracle</li> </ol> <p><strong>Goal is:</strong></p> <ol> <li>Inspect the differences and similarities of indexing in both platforms</li> <li>The pros and cons of how index data is stored and used in both platforms</li> </ol> <h3>Oracle Code for Creation of Objects and Support</h3> <ul> <li>Table and PK with constraint</li> <li>Alter index statement to decrease pctfree</li> <li>Sequence to populate c1 column</li> <li>Trigger to do this in simple way</li> <li>Rinse, repeat, more &#8220;shampoo&#8221;, and do it all again&#8230; <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li> </ul> <p>Yes, I could have just used RowNum, but I was trying to kill a second bird, (testing task) with this one stone, so an trigger with a sequence it is&#8230; <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <pre class="p1"><span class="s1">CREATE</span> <span class="s1">TABLE</span> ORA_INDEX_TST ( <span class="s2">C1 NUMBER NOT NULL</span> <span class="s3">,</span><span class="s2">C2 VARCHAR</span>2<span class="s3">(255)</span> <span class="s3">,</span>CREATEDATE <span class="s1">TIMESTAMP</span> ); <span class="s1">CREATE</span> <span class="s1">INDEX</span> PK_INDEXPS <span class="s1">ON</span> ORA_INDEX_TST <span class="s3">(</span>C1<span class="s3">); </span>ALTER TABLE ORA_INDEX_TST ADD CONSTRAINT OIT_PK PRIMARY KEY(C1) USING INDEX PK_INDEXPS; CREATE UNIQUE INDEX IDX_INDEXPS ON ORA_INDEX_TST(C2); <span class="s4">ALTER INDEX PK_INDEXPS REBUILD PCTFREE 90 INITRANS 5;</span> ALTER INDEX IDX_INDEXPS REBUILD PCTFREE 90 INITRANS 5; <span class="s4">CREATE SEQUENCE C1_SEQ START WITH 1;</span> <span class="s5">CREATE</span> <span class="s5">OR</span><span class="s6"> REPLACE </span><span class="s5">TRIGGER</span><span class="s6"> C1_BIR </span> <span class="s6">BEFORE </span><span class="s5">INSERT</span> <span class="s5">ON</span><span class="s6"> ORA_INDEX_TST </span> <span class="s5">FOR</span><span class="s6"> EACH </span><span class="s5">ROW</span> <span class="s6">BEGIN</span> <span class="s6"><span class="Apple-converted-space">¬† </span></span><span class="s5">SELECT</span><span class="s6"> C1_SEQ.NEXTVAL</span> <span class="s6"><span class="Apple-converted-space">¬† </span></span><span class="s5">INTO</span><span class="s6"> <span class="Apple-converted-space">¬† </span>:new.C1</span> <span class="s6"><span class="Apple-converted-space">¬† </span></span><span class="s5">FROM</span><span class="s6"> <span class="Apple-converted-space">¬† DUAL</span>;</span> <span class="s6">END</span><span class="s7">;</span> <span class="s6">/</span></pre> <p class="p8">We&#8217;ll need to manually insert just enough data to fill up one block, which is 8KB in this database, (and default.)</p> <pre><span class="s1">INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) </span> <span class="s1">VALUES (dbms_random.string('A', 200), SYSDATE); </span><span class="s1">INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) </span> <span class="s1">VALUES (dbms_random.string('B', 200), SYSDATE); </span><span class="s1">INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) </span> <span class="s1">VALUES (dbms_random.string('C', 200), SYSDATE); </span><span class="s1">INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) </span> <span class="s1">VALUES (dbms_random.string('D', 200), SYSDATE); </span><span class="s1">INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) </span> <span class="s1">VALUES (dbms_random.string('E', 200), SYSDATE); </span><span class="s1">INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) </span> <span class="s1">VALUES (dbms_random.string('F', 200), SYSDATE); </span><span class="s1">INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) </span> <span class="s1">VALUES (dbms_random.string('G', 200), SYSDATE); </span>COMMIT;</pre> <p class="p8">We&#8217;ll now verify that our data is inserted into one block:</p> <pre class="p1"><span class="s1">SQL&gt; ANALYZE INDEX PK_INDEXPS VALIDATE STRUCTURE;</span> <span class="s1">SQL&gt; SELECT LF_BLKS, LF_BLK_LEN, DEL_LF_ROWS,USED_SPACE, PCT_USED</span><span class="s1"><span class="Apple-converted-space">¬†</span>FROM INDEX_STATS where NAME='PK_INDEXPS';</span></pre> <pre class="p1"><span class="s1"><span class="Apple-converted-space">¬†¬† </span>LF_BLKS LF_BLK_LEN DEL_LF_ROWS USED_SPACE <span class="Apple-converted-space">¬† </span>PCT_USED</span> <span class="s1">---------- ---------- ----------- ---------- ----------</span> <span class="s1"> 1 7924 0 1491 <span class="Apple-converted-space">¬† ¬† </span>19</span></pre> <p class="p8">Code for SQL Server Objects and Support. ¬†Since I didn&#8217;t have the same secondary project request, this one will appear simpler:</p> <ul> <li class="p8">Table with PK with constraint</li> <li class="p8">alter index and change fill factor</li> <li class="p8">Second Table to use for data population</li> </ul> <div> <div> <pre>CREATE TABLE SQL_INDEX_TST (c1 INT NOT NULL, c2 CHAR (255), createdate datetime); CREATE INDEX CL2_INDEX_TST ON SQL_INDEX_TST(C2); GO ALTER TABLE SQL_INDEX_TST ADD CONSTRAINT PK_CLINDX_TST PRIMARY KEY CLUSTERED (c1); GO</pre> </div> </div> <p>First, in SQL Server, a page will hold around 8KB of data, so let&#8217;s test out our index storage:</p> <pre><strong><span style="font-family: 'courier new', courier; font-size: small;">INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (1, 'a'); INSERT INTO </span><span style="font-family: 'courier new', courier; font-size: small;">SQL_INDEX_TST(c1,c2) </span><span style="font-family: 'courier new', courier; font-size: small;">VALUES (2, 'a'); INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (3, 'a'); INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (4, 'a'); </span><span style="font-family: 'courier new', courier; font-size: small;">INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (5, 'a'); </span><span style="font-family: 'courier new', courier; font-size: small;">INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (6, 'a'); INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (7, 'a'); GO</span></strong></pre> <p>We now have officially &#8220;filled&#8221; the first page as much as possible¬†and we should see this if we query the information schema:</p> <div> <pre>SELECT OBJECT_SCHEMA_NAME(ios.object_id) + '.' + OBJECT_NAME(ios.object_id) as table_name, i.name as index_name, leaf_allocation_count, nonleaf_allocation_count, fill_factor, type_desc FROM sys.dm_db_index_operational_stats(DB_ID(), OBJECT_ID('dbo.SQL_INDEX_TST'),NULL, NULL) ios INNER JOIN sys.indexes i ON i.object_id = ios.object_id AND i.index_id = ios.index_id;</pre> </div> <div class="line number32 index31 alt1">¬†<a href="http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/screen-shot-2017-03-29-at-12-11-51-pm/" rel="attachment wp-att-6602"><img class="alignnone size-large wp-image-6602" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-29-at-12.11.51-PM.png?resize=600%2C74" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-29-at-12.11.51-PM.png?resize=1024%2C127 1024w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-29-at-12.11.51-PM.png?resize=300%2C37 300w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-29-at-12.11.51-PM.png?resize=768%2C95 768w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-29-at-12.11.51-PM.png?w=1550 1550w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-29-at-12.11.51-PM.png?w=1200 1200w" sizes="(max-width: 600px) 100vw, 600px" data-recalc-dims="1" /></a></div> <h3>Data Loads</h3> <p><strong>Oracle:</strong></p> <pre class="p1"><span class="s1">SQL&gt; Begin</span> <span class="s1">For IDS in 1..1000000</span> <span class="s1">Loop</span> <span class="s1">INSERT INTO ORA_INDEX_TST (C2) </span> <span class="s1">VALUES (dbms_random.string('X', 200));</span> <span class="s1">Commit;</span> <span class="s1">End loop;</span> <span class="s1">End;¬†</span> <span class="s1"><span class="Apple-converted-space">¬† </span>/</span></pre> <p><b>10% PCT Free- Time Elapsed 2 minutes, 12 seconds</b></p> <p><span style="color: #ff0000;"><b>90% PCT Free- Time Elapsed 7 minutes, 3 seconds</b></span></p> <p class="p1">I&#8217;ll have both the initial test data and the new 10000 rows I&#8217;ve added:</p> <pre class="p1"><span class="s1">SQL&gt; select count(*) from ora_index_tst;</span> <span class="s1"><span class="Apple-converted-space">¬† </span>COUNT(*)</span> <span class="s1">----------</span> <span class="s1"><span class="Apple-converted-space">¬†¬† ¬† </span>1000008</span></pre> <p class="p1"><span class="s1">Let&#8217;s delete some of this data load to create deleted leaf blocks:</span></p> <pre>SQL&gt; delete from ora_index_tst 2 where c2 like '%200%'; 4179 rows deleted. SQL&gt; commit; Commit complete.</pre> <p class="p1">Now let&#8217;s analyze and take a look at the stats again:</p> <pre class="p1"><span class="s1">SELECT LF_BLKS, LF_BLK_LEN, DEL_LF_ROWS,USED_SPACE, PCT_USED FROM INDEX_STATS where NAME='PK_INDEXPS';</span> </pre> <pre>¬†¬† LF_BLKS LF_BLK_LEN DEL_LF_ROWS USED_SPACE¬†¬† PCT_USED ---------- ---------- ----------- ---------- ---------- ¬†¬†¬†¬† 41227¬† 7924¬† ¬†¬†¬†¬† <b>121</b> 212596009¬† ¬†¬†¬†¬† 19</pre> <p>There&#8217;s a substantial difference in number of leaf blocks vs. when the pct_used is allowed to fill up:</p> <pre>¬†¬† LF_BLKS LF_BLK_LEN DEL_LF_ROWS USED_SPACE¬†¬† PCT_USED ---------- ---------- ----------- ---------- ---------- ¬†¬†¬†¬† 2004¬† 7996¬† ¬†¬†¬†¬† <b>531</b>¬†¬† 15985741¬† ¬†¬† 100</pre> <p>Oracle wasn‚Äôt impacted by PCTFREE that¬†much, but there was some impact. Rebuilds were required to clean up some wait, but it wasn‚Äôt a true ‚Äúrequirement‚ÄĚ, just a preferences if consistent deletes, updates where data was different sized than original and poor storage choices. ¬†The differences in performance weren&#8217;t that significant.</p> <p class="p1">Now that we know we have deleted rows, let&#8217;s do the same on the SQL Server side:</p> <p class="p1"><strong>SQL Server</strong></p> <pre>declare @id int select @id = 9 --already inserted 8 rows while @id &gt;= 0 and @id &lt;= 1000000 begin ¬†¬† insert into sql_index_tst (c1,c2) values(@id, 'DKUELKJ' + convert(varchar(7), @id)) ¬†¬† select @id = @id + 1 end</pre> <p><b>Default Fill Factor- Elapsed Time: 4 minutes, 43 seconds</b></p> <p><span style="color: #ff0000;"><b>10% Fill Factor- Elapsed time: 23 minutes, 18 seconds</b></span></p> <p class="p1">Delete some rows to test similar to Oracle:</p> <pre>DELETE FROM SQL_INDEX_TST WHERE c2 LIKE ‚Äė%200%‚Äô;</pre> <p class="p1">Now there are a few ways we can look at how the indexes were impacted. ¬†We&#8217;ll first check for page splits, which as we&#8217;ve discussed, cause extra work to the transaction log and fragmentation in the index:</p> <pre>SELECT OBJECT_SCHEMA_NAME(ios.object_id) + '.' + OBJECT_NAME(ios.object_id) as table_name ,i.name as index_name ,leaf_allocation_count ,nonleaf_allocation_count FROM sys.dm_db_index_operational_stats(DB_ID(), OBJECT_ID('dbo.SQL_Index_tst'),NULL, NULL) ios INNER JOIN sys.indexes i ON i.object_id = ios.object_id AND i.index_id = ios.index_id;</pre> <p class="p1"><a href="http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/screen-shot-2017-03-30-at-4-57-31-pm/" rel="attachment wp-att-6626"><img class="alignnone size-large wp-image-6626" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-30-at-4.57.31-PM.png?resize=600%2C93" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-30-at-4.57.31-PM.png?resize=1024%2C158 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-30-at-4.57.31-PM.png?resize=300%2C46 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-30-at-4.57.31-PM.png?resize=768%2C119 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-30-at-4.57.31-PM.png?w=1140 1140w" sizes="(max-width: 600px) 100vw, 600px" data-recalc-dims="1" /></a></p> <p class="p1">Next, we&#8217;ll look at the physical fragmentation of the index:</p> <pre>SELECT OBJECT_SCHEMA_NAME(ips.object_id) + '.' + OBJECT_NAME(ips.object_id) as table_name ,ips.avg_fragmentation_in_percent ,ips.fragment_count ,page_count FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID('dbo.SQL_Index_tst') GO</pre> <p class="p1"><a href="http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/screen-shot-2017-03-30-at-5-10-41-pm/" rel="attachment wp-att-6627"><img class="alignnone size-large wp-image-6627" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-30-at-5.10.41-PM.png?resize=600%2C71" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-30-at-5.10.41-PM.png?resize=1024%2C121 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-30-at-5.10.41-PM.png?resize=300%2C36 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-30-at-5.10.41-PM.png?resize=768%2C91 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-30-at-5.10.41-PM.png?w=1166 1166w" sizes="(max-width: 600px) 100vw, 600px" data-recalc-dims="1" /></a></p> <p class="p1">There&#8217;s significant fragmentation and it also impacted performance as we viewed above.</p> <h3 class="p1">Index Maintenance</h3> <pre>USE AS_test;¬†¬† GO DBCC DBREINDEX ('SQL_INDEX_TST', CL2_INDEX_TST,100); DBCC DBREINDEX ('SQL_INDEX_TST', PK_CLINDX_TST,100); GO</pre> <p>We&#8217;ve now rebuilt our indexes and moved the fillfactor to 100%. ¬†Queries using each index column in where clause improved over 20%. ¬†Insert and updates increased to perform similarly to Oracle, unless‚Ķ.</p> <p>Sorts on data for C1 column on a clustered index in SQL Server increased dramatically and out-performed Oracle‚Äôs PK. Only IOT tables could compete, but the use case was very small where it was beneficial.</p> <h3 class="p1">And The Winner Is&#8230;</h3> <p class="p1">So who won out in my comparison at Oak Table World? ¬†As we always hear from the DBA,</p> <blockquote> <p class="p1">It Depends&#8230;</p> </blockquote> <p class="p1"><strong>Some of the benefits of clustered indexes in SQL Server are superior to Oracle:</strong></p> <ul> <li>Data is physically sorted in the clustered index</li> <li>Optimizer usage specific- clustered index seek</li> <li>Work best with sequential data, identity columns and order dates</li> <li>Option to randomize the writes on the index can deter from hot spots.</li> </ul> <p><strong>There are negatives that leave this debate still open for me:</strong></p> <ul> <li>Vulnerable to fragmentation</li> <li>Inserts are added at end and introduce ‚ÄúLast Page Insert Latch CoContention‚ÄĚ wait event.</li> <li>Subject to hot spots, (see above‚Ķ)</li> <li>Page Splits- hit performance hard, especially to the transaction log, (requires much more work than standard insert.)</li> <li>Fillfactor can be a hit or miss configuration for some systems.</li> </ul> <p class="p1">There was a lot of other tests and queries I used than what is presented here, but this is the main focus of the test. ¬†I need to thank those that have contributed to the deep index knowledge that offered me the research to then want to research on my own.¬† Shout out to <a href="https://richardfoote.wordpress.com/">Richard Foote</a>, Mr. Oracle Index¬†and <a href="https://www.sqlskills.com/blogs/paul/how-expensive-are-page-splits-in-terms-of-transaction-log/">Paul Randal</a> and <a href="http://www.jasonstrate.com/">Jason Strate</a> for the SQL Server expertise!</p> <!-- Easy Plugin for AdSense Unfiltered [count: 3 is not less than 3] --></div><br><br><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/ico-tag.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> Tags:&nbsp;&nbsp;<a href="http://dbakevlar.com/tag/oracle-indexes/" rel="tag">Oracle Indexes</a>, <a href="http://dbakevlar.com/tag/sql-server-indexes/" rel="tag">SQL Server Indexes</a><br><br><div style="width:100%"><table align="left" width="100%" cellspacing="0" cellpadding="0" bgcolor="#f1f1f1" border="0px;"> <tbody> <tr bgcolor="#ffffff"><td align="center" width="17%" valign="top"> <span class="sb_title">Del.icio.us</span><br> <a href="http://del.icio.us/post?url=http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/&title=Oracle and SQL Server Index Comparison"> <img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/delicious.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"> </a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Facebook</span><br> <a href="http://www.facebook.com/share.php?u=http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/facebook_icon.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">TweetThis</span><br> <a href="http://twitthis.com/twit?url=http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/&title=Oracle and SQL Server Index Comparison"><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tweet.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Digg</span><br> <a href="http://digg.com/submit?phase=2&url=http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/&title=Oracle and SQL Server Index Comparison"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/digg.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%&qu; valign="top"> <span class="sb_title">StumbleUpon</span><br> <a href="http://www.stumbleupon.com/submit?url=http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/&title=Oracle and SQL Server Index Comparison"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/stumble.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td></tr> </tbody></table></div><br><div style="clear:both"></div><div style="background:#EEEEEE; padding:0px 0px 0px 15px; margin:10px 0px 0px 0px;"><div style="padding:5px 0px 5px 0px;"><b>Comments:</b>&nbsp;&nbsp;<a href="http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/#comments">3 comments on this item</a></div><br><div style="clear:both"></div><div style="padding:13px 0px 5px 0px;"><span style="border-bottom:1px dashed #003399;padding-bottom:4px;"><strong>You might be interested in this:</strong></span>&nbsp;&nbsp;<br><ul style="margin:0; padding:0; padding-top:10px; padding-bottom:5px;"><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2015/10/delphix-express-virtualize-your-first-database-and-application/" >Delphix Express - virtualize your first database (and application)</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2011/02/pythian-devotion-to-my-vocation/" >Pythian- Devotion to my Vocation</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2016/02/importance-of-network-to-the-cloud/" >Importance of Network to the Cloud</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2015/08/python-pass-the-pigs/" >Python Pass the Pigs</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2013/08/latency-heatmaps-in-d3-and-highcharts/" >Latency heatmaps in D3 and Highcharts</a></li></ul></div></div><hr style="color:#EBEBEB" /><small>Copyright ¬©¬†<a href="http://dbakevlar.com">DBA Kevlar</a> [<a href="http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/">Oracle and SQL Server Index Comparison</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/">Oracle and SQL Server Index Comparison</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6562 Wed Apr 05 2017 14:25:54 GMT-0400 (EDT) Oracle Listener Security New ORACLE 12.2 Firewall Feature https://www.integrigy.com/security-resources/oracle-listener-security-new-oracle-122-firewall-feature <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>Service-Level ALCs is a new feature of the 12.2 Listener that allows every database service to have its own ACL. The ACL must be based on IP addresses and this feature allows multitenant pluggable databases (PDBs) to each have an ACL enforced by the Listener. This is because each PDB is a unique service registered in the Listener.</p> <p>To implement this feature a new parameter <strong>FIREWALL</strong> must be used and has the following options:</p> <ul> <li><strong>(FIREWALL=ON)</strong> - This enables strict ACL validation (whitelist-based approach) of all connections based on the ACLs. If no ACLs are configured for a service, all connections are rejected.</li> <li><strong>FIREWALL</strong> is not set (defined for service) ‚Äď This is a mixed mode. If an ACL is configured for a service, it will be enforced. If no ACL is defined, all connections will be accepted.</li> <li><strong>(FIREWALL=OFF)</strong> No validation (No ACLs enforced) and all connections are accepted</li> </ul> <p>For more information refer to:&nbsp;<a data-jsb_prepared="ak8pmzz4zx" href="http://docs.oracle.com/database/122/NETAG/configuring-and-administering-oracle-net-listener.htm#NETAG0102" rel="noreferrer">http://docs.oracle.com/database/122/NETAG/configuring-and-administering-oracle-net-listener.htm#NETAG0102</a></p> <p>If you have questions, please contact us at <a data-jsb_prepared="yuou2thj6e" href="mailto:info@integrigy.com" rel="noreferrer">info@integrigy.com</a></p> <p>-Michael Miller, CISSP-ISSMP, CCSP, CCSK</p> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> </div></div></div><a href="/tags/security-strategy-and-standards" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Security Strategy and Standards</a>, <a href="/tags/oracle-database" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle Database</a> mmiller 567 at https://www.integrigy.com Wed Apr 05 2017 07:00:00 GMT-0400 (EDT) 12.2 Some Cool Partitioning New Features (Big Wheels) https://richardfoote.wordpress.com/2017/04/05/12-2-some-cool-partitioning-new-features-big-wheels/ I previously discussed just how easy it is to convert online a non-partitioned table to be partitioned with Oracle Database 12.2. Thought I might run through a number of really cool new partitioning features and capabilities that were also introduced in 12.2. To start, I&#8217;m just going to create a basic range-partitioning table and populate [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=richardfoote.wordpress.com&#038;blog=2301564&#038;post=4397&#038;subd=richardfoote&#038;ref=&#038;feed=1" width="1" height="1" /> Richard Foote http://richardfoote.wordpress.com/?p=4397 Wed Apr 05 2017 04:21:00 GMT-0400 (EDT) Google Big Querry and Oracle Smart Scan http://www.fahdmirza.com/2017/04/google-big-querry-and-oracle-smart-scan.html <div dir="ltr" style="text-align: left;" trbidi="on">Marveling at the technology is my pastime and lately there are 2 technologies which truly have made me say ' Simply Wow.' One is Google's Big Query and the other one is Oracle's Exadata Smart Scan.<br /><br />I have been managing data in different databases for a long time to appreciate how critical it is for the client to get the results out of their data as fast as possible. It's all about the returning results at the end after issuing a query or clicking a button.<br /><br />End user or developer don't really care as how many terabytes of data is there. DBAs and data architects might love to boast about the humongous volumes of data they store and support but there is nothing to write home about, if that data cannot be retrieved as quickly as possible.<br /><br />When I first migrated a 9TB database to Oracle Exadata few years back and ran a heavy report first time, it returned results in a jiffy, while my jaws dropped. This report used to take at least 70 minutes before without smart scan. I had to bring the developer to double check whether the results were correct or not . Oracle's Exadata smart scan is phenomenal.<br /><br />I got similar jaw-dropping experience yesterday when I saw Google Cloud Platform's product <a href="https://cloud.google.com/bigquery/">Big Query</a> in action during an Onboard session Sydney. A SQL with regex was run on multi terabyte of dataset with lots of sorting and it returned the results from the cloud in few seconds. Best thing about Big Query is that the all-familiar SQL is used and nothing fancy is needed. You get your petabytes of data warehouse in Google's cloud and then use your SQL to analyze that dataset. Sweet part is the agility and transparency with which that data is returned.<br /><br />Simply beautiful. </div> Fahd Mirza tag:blogger.com,1999:blog-3496259157130184660.post-5660239173281970339 Wed Apr 05 2017 00:26:00 GMT-0400 (EDT) Why do we offer Milk on Shivling? http://ezsaid.blogspot.com/2017/04/why-do-we-offer-milk-on-shivling.html ashish tag:blogger.com,1999:blog-14142302.post-7706986011580039831 Tue Apr 04 2017 13:30:00 GMT-0400 (EDT) How I learned to appreciate MongoDB https://technology.amis.nl/2017/04/04/learned-appreciate-mongodb/ <p>Last week at our company we organized a session about NoSQL in general and MongoDB in particular, as you can read <a href="https://technology.amis.nl/2017/03/15/inroducing-nosql-and-mongodb-to-relational-database-professionals/">here</a>. The MongoDB focus was presented by me and I would like to take you with me on my trip to actually appreciating the NoSQL database world (and MongoDB in particular).</p> <p>Coming from RDBMS I&#8217;m used to ACID. Business models reside within the database, data never gets lost, transactions are isolated, you&#8217;ve got your read consistency, strictly defined tables, foreign keys et cetera. MongoDB on the other hand I saw as an unstructured pile of data, not stuctured, no such thing as transactions, it&#8217;s &#8216;eventually consistent&#8217; (that sounds like a leap of faith), no joins hence no foreign keys&#8230; You get the picture.</p> <p>I am a DBA. My major concern is to have all data available or at least recoverable, no matter what. But the world is changing. Developers more and more look at the database as a storage engine; business logica is programmed in the application. We, DBA&#8217;s, try to teach them to use the database better, but is that really necessary? There&#8217;s no law..</p> <p>The world is changing fast and so are businesses. It&#8217;s not unusual to deploy a new release every night. If developers need to redesign the database every few days, then maybe the structure of data is not that important. If we collect the number of hits on our website, is it a disaster if out of 10,000 hits we occasionally miss 1?</p> <p>It takes a lot of discussion and &#8216;yes, but..&#8217; for this other look at data to finally settle in. At least, for me it did. What finally won me over was an online course at MongoDB University that sort of mitigated the pain. Because, once you let go of the ACID model, you gain a lot of flexibility in terms of database design and infrastructure design. Scaling out becomes a very easy operation for instance. Resilience against hardware failure is a piece of cake. And due the lack of the RDBMS legacy, the engine can focus almost entirely on reading and writing data which leads to lightning fast performance.</p> <p>In the next paragraphs i will show some examples of the resilience and general behaviour of MongoDB, losely compared to Oracle. It is handson so I will also get you started, as minimal as possible, with mongoDB in general.</p> <p>I will not go into the way you read and write data. Only some actions will be shown that are needed for the examples. But in general:</p> <p>db = database and can be compared to a schema in Oracle.</p> <p>A db contains collections, which can be compared to tables.</p> <p>A collections contains documents which can be compared to rows.</p> <p>Joins are not possible, so all data you need should be in the same collection.</p> <p>Collections consist of key:value pairs, as many as you like within one collection.</p> <p>So, you can have the database &#8216;trades&#8217; with collection &#8216;customers&#8217; with documents like</p> <p>{&#8220;name&#8221;:&#8221;Larry&#8221;,&#8221;company&#8221;:&#8221;Oracle&#8221;,&#8221;hobby&#8221;:&#8221;sailing&#8221;}</p> <h2>Getting started.</h2> <p>Go to the MongoDB site <a href="https://www.mongodb.com/download-center#community">here </a>and download the appropriate version. The entire handson can be run on your typical Windows or Linux laptop or Virtual Box. The installation is very easy, no instructions needed from my part.</p> <p>The software will be installed in C:\Program Files\MongoDB\Server\3.4\bin. Version can change over time off course.</p> <p>Add that to your path in your environment variables.</p> <p>In linux, add the path where you unpacked the tar ball, followed by bin, to your $PATH.</p> <p>Starting an instance is also very easy. Open a command box, create a directory \data\db1 and start the instance with</p> <pre class="brush: plain; title: ; notranslate">mongod --dbpath \data\db1</pre> <p>On windows you should leave this box open. When you close it the instance shuts down. Better would be to create a service but for this demonstration, this will do.</p> <p>Stop the database by pressing ^C.</p> <p>On linux you can fork the process so you don&#8217;t have to open a terminal for every instance:</p> <pre class="brush: plain; title: ; notranslate">mongod --dbpath /data/db1 --fork --logpath a.log</pre> <p>End it by killing the process.</p> <p>From now on I will continue in Windows, Linux users can follow the instructions with minor adjustments, like / instead of \</p> <p>Also make sure to use a different logpath for each instance.</p> <h2>Resilience against hardware failure.</h2> <p>In Oracle we have 2 kinds of resilience against hardware failure. Instance failure can be mitigated by RAC, storage failure by data guard. Besides, if a single instance crashes you can recover all data, provided you have a decent backup strategy.</p> <p>MongoDB uses a different approach called replica sets. Each instance (or member as it&#8217;s called) has its own storage and can be replicated to another instance (or many) with its own storage too. Only one instance can read and write, that is the primary instance. The others only allow you to read data.</p> <p>In production this is a no brainer: should a single instance fail, then you can&#8217;t recover all data like in Oracle, no matter how often you make backups.</p> <p>All instances vote who will be the primary. This can be manipulated by setting the priority parameter. I will not go into that here but just demonstrate a simple replica set.</p> <p>Open a command box and type:</p> <pre class="brush: plain; title: ; notranslate">mkdir \data\db1\r1 mkdir \data\db1\r1 mkdir \data\db1\r1 mongod --smallfiles --oplogSize 50 --port 27001 --dbpath \data\db1\r1 --replSet r</pre> <p>Leave it open and open a second Command box and type:</p> <pre class="brush: plain; title: ; notranslate">mongod --smallfiles --oplogSize 50 --port 27002 --dbpath \data\db1\r2 --replSet r</pre> <p>Leave it open and open a third Command box and type:</p> <pre class="brush: plain; title: ; notranslate">mongod --smallfiles --oplogSize 50 --port 27003 --dbpath \data\db1\r3 --replSet r</pre> <p>Open fourth command box This will be used to actually talk to the database using the mongo shell. We will then initiate the replica set.</p> <pre class="brush: plain; title: ; notranslate">mongo ‚Äď-port 27003 rs.initiate( { _id:'r', members:[ { _id:1, host:'localhost:27001' }, { _id:2, host:'localhost:27002', &quot;arbiterOnly&quot; : true }, { _id:3, host:'localhost:27003' } ] } ) rs.status()</pre> <p>I introduced a special member, the Arbiter. This is a member without data, it only helps to have an uneven number of members which is necessary to always get a majority of votes when it comes to choosing the Primary member.</p> <p>In the output you can see that we have 3 members: a Secondary on port 27001, an Arbiter on port 27002 and a Primary on port 27003. You can also see by the prompt that we are connected to the Primary.</p> <p>We will now create a collection called &#8216;simple&#8217; and insert some data. Also, the writeConcern phrase makes sure data is written to at least 2 members. If there are more members they will be &#8216;eventually consistent&#8217;, meaning that they will synchronize but not immediately.</p> <pre class="brush: plain; title: ; notranslate">db.simple.insert( { _id : 1 }, { writeConcern : { w : 2 } } ) db.simple.insert( { _id : 2 }, { writeConcern : { w : 2 } } ) db.simple.insert( { _id : 3 }, { writeConcern : { w : 2 } } )</pre> <p>Go to your secondary member and try to read the data. This involves giving your self permission to read from the secondary as I&#8217;ll show:</p> <pre class="brush: plain; title: ; notranslate">exit mongo --port 27001 r:SECONDARY&gt; db.simple.find() Error: error: { &quot;$err&quot; : &quot;not master and slaveOk=false&quot;, &quot;code&quot; : 13435 } r:SECONDARY&gt; rs.slaveOk() r:SECONDARY&gt; db.simple.find() { &quot;_id&quot; : 1 } { &quot;_id&quot; : 2 } { &quot;_id&quot; : 3 }</pre> <p>This looks okay. Not featured here: if I stop the Secondary, add data on the Primary and restart the Secondary, it synchronizes as expected. Just one thing: the writeConcern for 2 members can not be used since we only have 1 member.</p> <p>Now it becomes interesting. I&#8217;ll stop the Secondary, write some data on the Primary, stop the Primary and start the Secondary. Would the data written whilst the Secondary was down still be visible? If not, would it be recoverable?</p> <pre class="brush: plain; title: ; notranslate">r:SECONDARY&gt; exit bye</pre> <p>Go to your first box and stop the Secondary with ^C.</p> <p>Go to the mongoshell box and connect to port 27003, the Primary and add some more data:</p> <pre class="brush: plain; title: ; notranslate">mongo --port 27003 MongoDB shell version: 3.0.14 connecting to: 127.0.0.1:27003/test r:PRIMARY&gt; db.simple.insert( { _id : 4 } ) WriteResult({ &quot;nInserted&quot; : 1 }) r:PRIMARY&gt; db.simple.insert( { _id : 5 } ) WriteResult({ &quot;nInserted&quot; : 1 }) r:PRIMARY&gt; db.simple.insert( { _id : 6 } ) WriteResult({ &quot;nInserted&quot; : 1 }) r:PRIMARY&gt; db.simple.find() { &quot;_id&quot; : 1 } { &quot;_id&quot; : 2 } { &quot;_id&quot; : 3 } { &quot;_id&quot; : 4 } { &quot;_id&quot; : 5 } { &quot;_id&quot; : 6 } r:PRIMARY&gt; exit bye</pre> <p>Now stop the primary in your 3rd box with ^C and restart the Secondary in your 1st box. Then go to the mongoshell box and connect to port 27001</p> <pre class="brush: plain; title: ; notranslate">mongo --port 27001 MongoDB shell version: 3.0.14 connecting to: 127.0.0.1:27001/test r:PRIMARY&gt; rs.status() { &quot;set&quot; : &quot;r&quot;, &quot;date&quot; : ISODate(&quot;2017-03-20T19:12:43.425Z&quot;), &quot;myState&quot; : 1, &quot;members&quot; : [ { &quot;_id&quot; : 1, &quot;name&quot; : &quot;localhost:27001&quot;, &quot;health&quot; : 1, &quot;state&quot; : 1, &quot;stateStr&quot; : &quot;PRIMARY&quot;, &quot;uptime&quot; : 25, &quot;optime&quot; : Timestamp(1490035617, 1), &quot;optimeDate&quot; : ISODate(&quot;2017-03-20T18:46:57Z&quot;), &quot;electionTime&quot; : Timestamp(1490037141, 1), &quot;electionDate&quot; : ISODate(&quot;2017-03-20T19:12:21Z&quot;), &quot;configVersion&quot; : 1, &quot;self&quot; : true }, { &quot;_id&quot; : 2, &quot;name&quot; : &quot;localhost:27002&quot;, &quot;health&quot; : 1, &quot;state&quot; : 7, &quot;stateStr&quot; : &quot;ARBITER&quot;, &quot;uptime&quot; : 24, &quot;lastHeartbeat&quot; : ISODate(&quot;2017-03-20T19:12:43.354Z&quot;), &quot;lastHeartbeatRecv&quot; : ISODate(&quot;2017-03-20T19:12:43.167Z&quot;), &quot;pingMs&quot; : 0, &quot;configVersion&quot; : 1 }, { &quot;_id&quot; : 3, &quot;name&quot; : &quot;localhost:27003&quot;, &quot;health&quot; : 0, &quot;state&quot; : 8, &quot;stateStr&quot; : &quot;(not reachable/healthy)&quot;, &quot;uptime&quot; : 0, &quot;optime&quot; : Timestamp(0, 0), &quot;optimeDate&quot; : ISODate(&quot;1970-01-01T00:00:00Z&quot;), &quot;lastHeartbeat&quot; : ISODate(&quot;2017-03-20T19:12:43.354Z&quot;), &quot;lastHeartbeatRecv&quot; : ISODate(&quot;1970-01-01T00:00:00Z&quot;), &quot;configVersion&quot; : -1 } ], &quot;ok&quot; : 1 } r:PRIMARY&gt; db.simple.find() { &quot;_id&quot; : 1 } { &quot;_id&quot; : 2 } { &quot;_id&quot; : 3 } r:PRIMARY&gt;db.simple.insert( { _id : 7 } ) WriteResult({ &quot;nInserted&quot; : 1 }) r:PRIMARY&gt; db.simple.find() { &quot;_id&quot; : 1 } { &quot;_id&quot; : 2 } { &quot;_id&quot; : 3 } { &quot;_id&quot; : 7 } r:PRIMARY&gt; </pre> <p>So, member 1 now has become the Primary, but we hit data loss: it never had a chance to synchronize and they do not share any storage to read from.</p> <p>What would happen if we restart the 3rd member? After all, that one does have the lost data stored, somewhere.</p> <p>Start up the 3rd member (in the 3rd box)</p> <p>In the output you will see it transitions to Secondary and it performs a rollback: the lost data is actually rolled back. And the good news: it is stored. Under its data directory \data\db1\r3 it created a directory called rollback which contains a .bson file. This file can be examend and/or imported in the database as I&#8217;ll show.</p> <p>Go to the 4th box and exit mongoshell. Then:</p> <pre class="brush: plain; title: ; notranslate">cd \data\db1\r3\rollback C:\data\db1\r3\rollback&gt;bsondump test.simple.2017-03-20T19-32-31.0.bson {&quot;_id&quot;:4.0} {&quot;_id&quot;:5.0} {&quot;_id&quot;:6.0} 2017-03-20T20:45:06.412+0100 3 objects found C:\data\db1\r3\rollback&gt;mongorestore --port 27001 --db test --collection simple test.simple.2017-03-20T19-32-31.0.bson 2017-03-20T20:47:59.880+0100 checking for collection data in test.simple.2017-03-20T19-32-31.0.bson 2017-03-20T20:47:59.886+0100 restoring test.simple from file test.simple.2017-03-20T19-32-31.0.bson 2017-03-20T20:48:00.463+0100 no indexes to restore 2017-03-20T20:48:00.463+0100 finished restoring test.simple (3 documents) 2017-03-20T20:48:00.463+0100 done C:\data\db1\r3\rollback&gt;mongo --port 27001 MongoDB shell version: 3.0.14 connecting to: 127.0.0.1:27001/test r:PRIMARY&gt; db.simple.find() { &quot;_id&quot; : 1 } { &quot;_id&quot; : 2 } { &quot;_id&quot; : 3 } { &quot;_id&quot; : 7 } { &quot;_id&quot; : 4 } { &quot;_id&quot; : 5 } { &quot;_id&quot; : 6 } r:PRIMARY&gt; </pre> <p>Okay, Oracle would have done everything by itself. But at what cost? It needs to maintain redologs and archived redo logs. It only has 1 member to query, the Primary database. Yes, you can have a read only Standby database with Active Data Guard since 11G, but that&#8217;s a licensed option. It&#8217;s robust, nevertheless. I only want to say that the alternative is different but not all bad. Not at all.</p> <p>;</p> <p>;</p> <h2>Scaling out, also known as sharding</h2> <p>In the previous paragraph we covered HA and recoverablility. Now let&#8217;s have a look at scaling out, best compared to RAC.</p> <p>RAC enables you to add CPU power and memory to a database. It also enables you to distribute different kinds of workloads over different machines, for instance reporting on one node and OLTP on another node. That distribution can be compared to smart using of replica sets explained above.</p> <p>Adding CPU power and memory is something else. MongoDB heavily relies on memory to perform. And they made it very easy for you to add more nodes to your cluster. This is done by sharding.</p> <p>Sharding can best be described as range based partitioning. Sharding is done on a per collection base. A shard cluster consists of 1 (!) or more nodes that automatically partitions a collection and distributes it evenly over all cluster members.</p> <p>Let&#8217;s have a closer look.</p> <p>First of all, each mongod needs to know it is part of a shard cluster. That is accomplished with a &#8211;shardsvr startup parameter. It is also very wise to explicitely declare the port number with the &#8211;port parameter. Finally it needs its own storage, the &#8211;dbpath parameter. Example:</p> <pre class="brush: plain; title: ; notranslate">mongod --shardsvr --port 27020 --dbpath \data\db1\s1 mongod --shardsvr --port 27021 --dbpath \data\db1\s2</pre> <p>Next we need a config server. This is also a mongodb, but instead of data, it has a special database that contains all information there is to know about the cluster. Especially which members are known and the relation between the members and the partitions, the shards in mongo language.</p> <p>As of Mongo 3.4 config servers need to be in a replica set instead of standalone. For demonstration of develoment, it is allowed to have a set of only 1 member.</p> <p>In a production environment you typically create 3 config servers, for now we&#8217;ll create just one:</p> <pre class="brush: plain; title: ; notranslate">mongod --configsvr --replSet c --dbpath \data\db1\conf --port 27019</pre> <p>Start the mongo shell in another command box so we can configure the relica set &#8220;c&#8221;:</p> <pre class="brush: plain; title: ; notranslate">rs.initiate( { _id: &quot;c&quot;, configsvr: true, members: [ { _id : 0, host : &quot;localhost:27019&quot; } ] } )</pre> <p>Finally we need at least one mongos which is a routing service and serves as the front end to which the users connect. The mongos has no persitant data, it reads the config server and distributes client requests over the shards.</p> <p>It needs to know where to find the config server so we tell it with a parameter configReplSetName/hostname:port:</p> <pre class="brush: plain; title: ; notranslate">mongos --configdb c/localhost:27019</pre> <p>We can now open a mongo shell. It will by default connect to port 27017 and, lo and behold, a mongos automatically runs on port 27017. Since we are all running on the same host, connecting is very easy.</p> <p>In the shell we will add shard servers to the cluster. Next we will enable sharding for a specific database.</p> <pre class="brush: plain; title: ; notranslate">mongo mongos&gt; sh.addShard( &quot;localhost:27020&quot;) mongos&gt; sh.addShard( &quot;localhost:27021&quot;) mongos&gt; sh.enableSharding(&quot;test&quot;)</pre> <p>The only thing we have done is enable sharding for a db. But nothing is harded yet. For that to happen we need to decide which collection(s) will be sharded and on what key. This key needs to have an index on the shard key. And then finally nothing needs to be done anymore.</p> <p>So what did I learn?<br /> Sure, you lack the robustnes of an RDBMS. Sure, you can not join and sure, therefor you store way more bytes then usual. But it&#8217;s fast, it&#8217;s easy and it serves many purposes. And last but not least, it takes some serious out of the box thinking for a DBA to actually appriciate this new world: you have to let go of some fundamental principles on which your world was based for the last ten, twenty or more years.</p> <p>And finally a disclaimer: These examples have been over simplified. In the real world you&#8217;d use many hosts. You&#8217;d use 3 config servers, many mongos instances and off course a replicated shard cluster.<br /> Apart from that, there are many ways to make the behaviour more sophisticated and robust. Chack out the official documentation, it&#8217;s quite good in my opinion and challenges you to many experiments.</p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/04/04/learned-appreciate-mongodb/">How I learned to appreciate MongoDB</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Pom Bleeksma https://technology.amis.nl/?p=44367 Tue Apr 04 2017 06:11:11 GMT-0400 (EDT) Pivotal Cloud Foundry Cloud Service Brokers for AWS, Azure and GCP http://feedproxy.google.com/~r/blogspot/PEqWE/~3/wGC-o3WreQI/pivotal-cloud-foundry-cloud-service.html Pivotal Cloud Foundry (PCF) has various cloud service brokers for all the public clouds we support which include AWS, Azure and GCP. You can download and install those service brokers on premise or off premise giving you the capability to use Cloud services where it makes sense for your on premise or off premise cloud native applications.<br /><br /><a href="https://network.pivotal.io/">https://network.pivotal.io/</a><br /><br />The three cloud service brokers are as follows:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-W91LGhZWGYs/WOMmW1UQr6I/AAAAAAAAA6E/6BeAeMSTb6ME30kciI3txnOtabu9OirfgCLcB/s1600/Screen%2BShot%2B2017-04-04%2Bat%2B10.20.35%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="65" src="https://3.bp.blogspot.com/-W91LGhZWGYs/WOMmW1UQr6I/AAAAAAAAA6E/6BeAeMSTb6ME30kciI3txnOtabu9OirfgCLcB/s320/Screen%2BShot%2B2017-04-04%2Bat%2B10.20.35%2BAM.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-2Bsrm1QC3bk/WOMmW1vQtcI/AAAAAAAAA6I/mYAyFG6ezdkky1jxcXlpCXUNMEt25SC2ACLcB/s1600/Screen%2BShot%2B2017-04-04%2Bat%2B10.20.42%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="66" src="https://3.bp.blogspot.com/-2Bsrm1QC3bk/WOMmW1vQtcI/AAAAAAAAA6I/mYAyFG6ezdkky1jxcXlpCXUNMEt25SC2ACLcB/s320/Screen%2BShot%2B2017-04-04%2Bat%2B10.20.42%2BAM.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-Tmtm6HAuxAo/WOMmW277TmI/AAAAAAAAA6M/SR8trtZ0v6AvJ2xXmrmjxQPcgmqiuseAgCLcB/s1600/Screen%2BShot%2B2017-04-04%2Bat%2B10.20.50%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="67" src="https://3.bp.blogspot.com/-Tmtm6HAuxAo/WOMmW277TmI/AAAAAAAAA6M/SR8trtZ0v6AvJ2xXmrmjxQPcgmqiuseAgCLcB/s320/Screen%2BShot%2B2017-04-04%2Bat%2B10.20.50%2BAM.png" width="320" /></a></div><br /><br />In the example below we have a PCF install running on vSphere and it has the AWS service broker tile installed as shown by the Ops Manager UI<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-EQrzfrwdy8s/WOMnSDv_GCI/AAAAAAAAA6Q/c-UWpoty42M8aYec0b5GnTZ28E7yxK0NACLcB/s1600/Screen%2BShot%2B2017-04-04%2Bat%2B2.41.24%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="156" src="https://4.bp.blogspot.com/-EQrzfrwdy8s/WOMnSDv_GCI/AAAAAAAAA6Q/c-UWpoty42M8aYec0b5GnTZ28E7yxK0NACLcB/s320/Screen%2BShot%2B2017-04-04%2Bat%2B2.41.24%2BPM.png" width="320" /></a></div><br />Once installed this PCF instance can then provision AWS services and you can do that one of two ways.<br /><br />1. Using Apps Manager UI as shown below<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-7cTEIno1Rkk/WOMoxiN_JJI/AAAAAAAAA6Y/c0TSsr1RLS00mXRZtA0Il-81c13RC2LUwCLcB/s1600/Screen%2BShot%2B2017-04-04%2Bat%2B2.57.44%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="222" src="https://1.bp.blogspot.com/-7cTEIno1Rkk/WOMoxiN_JJI/AAAAAAAAA6Y/c0TSsr1RLS00mXRZtA0Il-81c13RC2LUwCLcB/s320/Screen%2BShot%2B2017-04-04%2Bat%2B2.57.44%2BPM.png" width="320" /></a></div><br />2. Use the CF CLI tool and invoking "<b>cf marketplace</b>" to list the service and then "<b>cf create-service</b>" to actually create an instance of the service.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-MRp04Bt4Gxk/WOMo37_DAlI/AAAAAAAAA6g/MW4S8a7nQYsCBF7yReQB9Jr4Oz-D8gCRQCLcB/s1600/Screen%2BShot%2B2017-04-04%2Bat%2B3.01.00%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="100" src="https://3.bp.blogspot.com/-MRp04Bt4Gxk/WOMo37_DAlI/AAAAAAAAA6g/MW4S8a7nQYsCBF7yReQB9Jr4Oz-D8gCRQCLcB/s320/Screen%2BShot%2B2017-04-04%2Bat%2B3.01.00%2BPM.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-jrf2I8QACHg/WOMo3oaYsjI/AAAAAAAAA6c/PzcLLufhwtcaOy_Uok7cSaehVKyqw3RnQCLcB/s1600/Screen%2BShot%2B2017-04-04%2Bat%2B3.01.44%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="80" src="https://3.bp.blogspot.com/-jrf2I8QACHg/WOMo3oaYsjI/AAAAAAAAA6c/PzcLLufhwtcaOy_Uok7cSaehVKyqw3RnQCLcB/s320/Screen%2BShot%2B2017-04-04%2Bat%2B3.01.44%2BPM.png" width="320" /></a></div><br />Once provisioned within a SPACE of PCF you can then bind and use the service from applications as you normally would to consume the service reading the VCAP_SERVICES ENV variable and essentially access AWS services from your on premise installation of PCF in the example above.<br /><br /><b>More Information</b><br /><br />GCP service broker:<br /><a href="https://network.pivotal.io/products/gcp-service-broker">https://network.pivotal.io/products/gcp-service-broker</a><br /><br />AWS service broker:<br /><a href="https://network.pivotal.io/products/pcf-service-broker-for-aws">https://network.pivotal.io/products/pcf-service-broker-for-aws</a><br /><br />Azure service broker:<br /><a href="https://network.pivotal.io/products/microsoft-azure-service-broker">https://network.pivotal.io/products/microsoft-azure-service-broker</a><br /><br /><br /><div class="blogger-post-footer">http://feeds.feedburner.com/TheBlasFromPas</div><img src="http://feeds.feedburner.com/~r/blogspot/PEqWE/~4/wGC-o3WreQI" height="1" width="1" alt=""/> Pas Apicella tag:blogger.com,1999:blog-6527688743456205256.post-3988992350427612473 Tue Apr 04 2017 01:10:00 GMT-0400 (EDT) Manually running a BOSH errand for Pivotal Cloud Foundry on GCP http://feedproxy.google.com/~r/blogspot/PEqWE/~3/FLi30KeUZZY/manually-running-bosh-errand-for.html Pivotal Ops Manager has various errands in runs for different deployments within a PCF instance. These Errands can be switched off manually when installing new Tiles or upgrading the platform, in fact in PCF 1.10 the errands themselves will only run if they need to run making it a lot faster.<br /><br />Below I am going to show you how you would manually run an Errand if you needed to on a PCF instance running on GCP. These instructions would work for PCF running on AWS, Azure or even vSphere so there not specific to PCF on GCP.<br /><br />1. First login to your Ops Manager VM itself<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/GCP/install/10/opsmanager$ ./ssh-opsman.sh</span><br /><span style="color: #3d85c6;">Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-66-generic x86_64)</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp;* Documentation: &nbsp;https://help.ubuntu.com/</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; System information as of Mon Apr &nbsp;3 23:38:57 UTC 2017</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; System load: &nbsp;0.0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Processes: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 141</span><br /><span style="color: #3d85c6;">&nbsp; Usage of /: &nbsp; 14.7% of 78.71GB &nbsp; Users logged in: &nbsp; &nbsp; 0</span><br /><span style="color: #3d85c6;">&nbsp; Memory usage: 68% &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IP address for eth0: 0.0.0.0</span><br /><span style="color: #3d85c6;">&nbsp; Swap usage: &nbsp; 0%</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; Graph this data and manage this system at:</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; https://landscape.canonical.com/</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; Get cloud support with Ubuntu Advantage Cloud Guest:</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; http://www.ubuntu.com/business/services/cloud</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">5 packages can be updated.</span><br /><span style="color: #3d85c6;">0 updates are security updates.</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Your Hardware Enablement Stack (HWE) is supported until April 2019.</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">*** System restart required ***</span><br /><span style="color: #3d85c6;">Last login: Mon Apr &nbsp;3 23:38:59 2017 from 110.175.56.52</span><br /><span style="color: #3d85c6;">ubuntu@om-pcf-110:~$</span><br /><br />2. Target the Bosh director which would look like this<br /><br /><span style="color: #3d85c6;">ubuntu@om-pcf-110:~$ bosh --ca-cert /var/tempest/workspaces/default/root_ca_certificate target 10.0.0.10</span><br /><span style="color: #3d85c6;">Target set to 'p-bosh'</span><br /><br /><span style="color: #e69138;">Note: You may be asked to login if you have not logged in to the bosh director which you can determine the login details from Ops Manager UI as follows</span><br /><br />- Log into Ops Manager UI<br />- Click on the tile for the the the "<b>Ops Manager Director</b>" which would be specific to your IaaS provider, in the example below that is GCP<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-VFzHi5kKdJQ/WOLkzPBFuTI/AAAAAAAAA5w/IethIBdmhX8WhW_fydH-91GKG8krqicJgCLcB/s1600/Screen%2BShot%2B2017-04-04%2Bat%2B10.05.25%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="162" src="https://4.bp.blogspot.com/-VFzHi5kKdJQ/WOLkzPBFuTI/AAAAAAAAA5w/IethIBdmhX8WhW_fydH-91GKG8krqicJgCLcB/s320/Screen%2BShot%2B2017-04-04%2Bat%2B10.05.25%2BAM.png" width="320" /></a></div><br />- Click on the credentials tab<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-bkad-KcK4XM/WOLlDwt3L9I/AAAAAAAAA50/IjOrkvYwUMc75cICnMxOuSUC8UFtarH0QCLcB/s1600/Screen%2BShot%2B2017-04-04%2Bat%2B10.05.41%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="https://3.bp.blogspot.com/-bkad-KcK4XM/WOLlDwt3L9I/AAAAAAAAA50/IjOrkvYwUMc75cICnMxOuSUC8UFtarH0QCLcB/s320/Screen%2BShot%2B2017-04-04%2Bat%2B10.05.41%2BAM.png" width="320" /></a></div><br />3. Target the correct deployment. In the example below I am targeting the Elastic Runtime deployment.<br /><br /><span style="color: #3d85c6;">ubuntu@om-pcf-110:~$ bosh deployment /var/tempest/workspaces/default/deployments/cf-c099637fab39369d6ba0.yml</span><br /><span style="color: #3d85c6;">Deployment set to '/var/tempest/workspaces/default/deployments/cf-c099637fab39369d6ba0.yml'</span><br /><br /><span style="color: #e69138;">Note: You can list out the deployment names using "<b>bosh deployments</b>"</span><br /><br />4. List out the errands as shown below using "<b>bosh errands</b>"<br /><br /><span style="color: #3d85c6;">ubuntu@om-pcf-110:~$ <b>bosh errands</b></span><br /><span style="color: #3d85c6;">RSA 1024 bit CA certificates are loaded due to old openssl compatibility</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">+-----------------------------+</span><br /><span style="color: #3d85c6;">| Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</span><br /><span style="color: #3d85c6;">+-----------------------------+</span><br /><span style="color: #3d85c6;">| smoke-tests &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</span><br /><span style="color: #3d85c6;">| push-apps-manager &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</span><br /><span style="color: #3d85c6;">| notifications &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</span><br /><span style="color: #3d85c6;">| notifications-ui &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</span><br /><span style="color: #3d85c6;">| push-pivotal-account &nbsp; &nbsp; &nbsp; &nbsp;|</span><br /><span style="color: #3d85c6;">| autoscaling &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</span><br /><span style="color: #3d85c6;">| autoscaling-register-broker |</span><br /><span style="color: #3d85c6;">| nfsbrokerpush &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</span><br /><span style="color: #3d85c6;">| bootstrap &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</span><br /><span style="color: #3d85c6;">| mysql-rejoin-unsafe &nbsp; &nbsp; &nbsp; &nbsp; |</span><br /><span style="color: #3d85c6;">+-----------------------------+</span><br /><br />5. Now in this example we are going to run the errand "push-apps-manager" and we do it as shown below<br /><br /><b>$ bosh run errand push-apps-manager</b><br /><br /><span style="color: #3d85c6;">** Output **</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">ubuntu@om-pcf-110:~$ bosh run errand push-apps-manager</span><br /><span style="color: #3d85c6;">Acting as user 'director' on deployment 'cf-c099637fab39369d6ba0' on 'p-bosh'</span><br /><span style="color: #3d85c6;">RSA 1024 bit CA certificates are loaded due to old openssl compatibility</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Director task 621</span><br /><span style="color: #3d85c6;">&nbsp; Started preparing deployment &gt; Preparing deployment</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; Started preparing package compilation &gt; Finding packages to compile. Done (00:00:01)</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp;Done preparing deployment &gt; Preparing deployment (00:00:05)</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; Started creating missing vms &gt; push-apps-manager/32218933-7511-4c0d-b512-731ca69c4254 (0)</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">...</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">+ '[' '!' -z 'Invitations deploy log: ' ']'</span><br /><span style="color: #3d85c6;">+ printf '** Invitations deploy log: &nbsp;\n'</span><br /><span style="color: #3d85c6;">+ printf '*************************************************************************************************\n'</span><br /><span style="color: #3d85c6;">+ cat /var/vcap/packages/invitations/invitations.log</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Errand 'push-apps-manager' completed successfully (exit code 0)</span><br /><span style="color: #3d85c6;">ubuntu@om-pcf-110:~$</span><br /><br /><br /><div class="blogger-post-footer">http://feeds.feedburner.com/TheBlasFromPas</div><img src="http://feeds.feedburner.com/~r/blogspot/PEqWE/~4/FLi30KeUZZY" height="1" width="1" alt=""/> Pas Apicella tag:blogger.com,1999:blog-6527688743456205256.post-4506127478270083172 Mon Apr 03 2017 20:33:00 GMT-0400 (EDT) 12cR1 RAC Posts -- 8e : Redo Shipping and Apply (RAC to nonRAC) http://hemantoracledba.blogspot.com/2017/04/12cr1-rac-posts-8e-redo-shipping-and.html <div dir="ltr" style="text-align: left;" trbidi="on">Continuing the series of posts on the RAC/ASM to SingleInstance/FileSystem&nbsp; DataGuard configuration ...<br /><br />With both instances RAC1 and RAC2 running, I have redo shipping from both instances to the single instance STBY.<br />(In my test server with 3 VMs, it takes a number of minutes to have all 3 instances running and communicating with each other ... so there are spurious ORA and TNS errors until the 3 instances have stabilized.&nbsp;{in fact, it would be&nbsp;best to start the&nbsp;Standby before starting the RAC Primary instances}.&nbsp;I am posting messages after the stabilization).<br /><br />Thus, on RAC 1 :<br /><pre>Mon Apr 03 22:43:51 2017<br />Archived Log entry 97 added for thread 1 sequence 59 ID 0x96312536 dest 1:<br />Mon Apr 03 22:43:52 2017<br />TT00: Standby redo logfile selected for thread 1 sequence 60 for destination LOG_ARCHIVE_DEST_2<br /></pre><br />And on RAC 2:<br /><pre>Mon Apr 03 22:44:12 2017<br />Thread 2 cannot allocate new log, sequence 32<br />Checkpoint not complete<br /> Current log# 3 seq# 31 mem# 0: +DATA/RAC/ONLINELOG/group_3.290.931826413<br /> Current log# 3 seq# 31 mem# 1: +FRA/RAC/ONLINELOG/group_3.259.931826417<br />Mon Apr 03 22:44:19 2017<br />Thread 2 advanced to log sequence 32 (LGWR switch)<br /> Current log# 4 seq# 32 mem# 0: +DATA/RAC/ONLINELOG/group_4.291.931826417<br /> Current log# 4 seq# 32 mem# 1: +FRA/RAC/ONLINELOG/group_4.260.931826421<br />Mon Apr 03 22:44:20 2017<br />Archived Log entry 99 added for thread 2 sequence 31 ID 0x96312536 dest 1:<br />Mon Apr 03 22:44:21 2017<br />TT00: Standby redo logfile selected for thread 2 sequence 32 for destination LOG_ARCHIVE_DEST_2<br /></pre><br />And on STBY :<br /><pre>Mon Apr 03 22:43:13 2017<br />Media Recovery Waiting for thread 2 sequence 31 (in transit)<br />RFS[2]: Selected log 5 for thread 1 sequence 60 dbid 2519807290 branch 931825279<br />Mon Apr 03 22:43:52 2017<br />Archived Log entry 25 added for thread 1 sequence 59 ID 0x96312536 dest 1:<br />Mon Apr 03 22:44:20 2017<br />Archived Log entry 26 added for thread 2 sequence 31 rlc 931825279 ID 0x96312536 dest 2:<br />Mon Apr 03 22:44:20 2017<br />Media Recovery Log /u01/app/oracle/fast_recovery_area/STBY/archivelog/2017_04_03/o1_mf_2_31_dg4qr2qw_.arc<br />RFS[1]: Selected log 7 for thread 2 sequence 32 dbid 2519807290 branch 931825279<br />Mon Apr 03 22:44:21 2017<br />Media Recovery Log /u01/app/oracle/fast_recovery_area/STBY/archivelog/2017_04_03/o1_mf_1_59_dg4qx70d_.arc<br />Resize operation completed for file# 3, old size 768000K, new size 778240K<br />Media Recovery Waiting for thread 1 sequence 60 (in transit)<br />Mon Apr 03 22:44:24 2017<br />Recovery of Online Redo Log: Thread 1 Group 5 Seq 60 Reading mem 0<br /> Mem# 0: /u01/app/oracle/oradata/STBY/onlinelog/group_5.292.937936339<br /> Mem# 1: /u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_5.303.937936343<br /></pre><br />Thus, Thread1 (instance RAC1) is currently at Sequence#60, Thread2 (instanc RAC2) is currently at Sequence=32.&nbsp; The STBY alert log shows that it is receiving Redo for both Threads.<br /><br />Let me login to the PDB in the RAC database and create some data.<br /><br /><pre>[oracle@collabn1 ~]$ tnsping PDB<br /><br />TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 03-APR-2017 22:49:34<br /><br />Copyright (c) 1997, 2014, Oracle. All rights reserved.<br /><br />Used parameter files:<br /><br /><br />Used TNSNAMES adapter to resolve the alias<br />Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn-cluster-scan.racattack)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PDB.racattack)))<br />OK (0 msec)<br />[oracle@collabn1 ~]$ sqlplus hemant/hemant@PDB<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Mon Apr 3 22:49:39 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />Last Successful login time: Mon Apr 03 2017 22:48:56 +08:00<br /><br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,<br />Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; show con_id<br /><br />CON_ID<br />------------------------------<br />3<br />SQL&gt; create table my_data (id_col number, data_col varchar2(15));<br /><br />Table created.<br /><br />SQL&gt; insert into my_data select rownum, 'Row:' || to_char(rownum)<br /> 2 from dual connect by level &lt; 101;<br /><br />100 rows created.<br /><br />SQL&gt; commit;<br /><br />Commit complete.<br /><br />SQL&gt;<br /></pre><br /><br />So, user HEMANT in the Pluggable Database PDB has a table with 100 rows.<br /><br />I open the Standby Database Read Only.<br /><br /><pre>[oracle@oem132 ~]$ . oraenv<br />ORACLE_SID = [oracle] ? STBY<br />The Oracle base has been set to /u01/app/oracle<br />[oracle@oem132 ~]$ sqlplus<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Mon Apr 3 22:53:05 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />Enter user-name: / as sysdba<br /><br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; recover managed standby database cancel;<br />Media recovery complete.<br />SQL&gt; alter database open;<br /><br />Database altered.<br /><br />SQL&gt; alter pluggable database pdb open;<br />alter pluggable database pdb open<br />*<br />ERROR at line 1:<br />ORA-44309: unknown failure<br />ORA-44777: Pluggable database service cannot be started.<br /><br /><br />SQL&gt; alter pluggable database pdb open;<br />alter pluggable database pdb open<br />*<br />ERROR at line 1:<br />ORA-65019: pluggable database PDB already open<br /><br />SQL&gt; alter pluggable database pdb close;<br /><br />Pluggable database altered.<br /></pre><br /><br />So, there is an error opening the PDB in the Standby database.&nbsp; I can't find a note about it on MoS.&nbsp; This will need more research. Let my try with a Common User in CDB$ROOT.<br /><b>UPDATE</b> : This PDB Error (numbers 44309 and 44777) is spurious and misleading. &nbsp;The PDB does OPEN READ ONLY. &nbsp;See <a href="https://hemantoracledba.blogspot.sg/2017/04/12cr1-rac-posts-8f-accessing-data-in.html" target="_blank">my next post</a>.<br /><br />Restart the Standby.<br /><pre>SQL&gt; shutdown<br />Database closed.<br />Database dismounted.<br />ORACLE instance shut down.<br />SQL&gt; exit<br />Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br />[oracle@oem132 ~]$ sqlplus<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Mon Apr 3 23:14:54 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />Enter user-name: / as sysdba<br />Connected to an idle instance.<br /><br />SQL&gt; startup nomount;<br />ORACLE instance started.<br /><br />Total System Global Area 838860800 bytes<br />Fixed Size 2929936 bytes<br />Variable Size 230689520 bytes<br />Database Buffers 599785472 bytes<br />Redo Buffers 5455872 bytes<br />SQL&gt; alter database mount standby database;<br /><br />Database altered.<br /><br />SQL&gt; recover managed standby database using current logfile disconnect from session;<br />Media recovery complete.<br />SQL&gt;<br /></pre><br /><br />Create a Common User with data in the RAC Primary.<br /><br /><pre>SQL&gt; exit<br />Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,<br />Advanced Analytics and Real Application Testing options<br />[oracle@collabn1 ~]$ sqlplus '/ as sysdba'<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Mon Apr 3 23:17:00 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br /><br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,<br />Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; create user C##HKCCOMMON identified by hemant;<br /><br />User created.<br /><br />SQL&gt; grant connect, resource, dba to c##HKCCOMMON;<br /><br />Grant succeeded.<br /><br />SQL&gt; connect C##HKCCOMMON/hemant<br />Connected.<br />SQL&gt; create table root_my_table (id_col number, data_col varchar2(15));<br /><br />Table created.<br /><br />SQL&gt; insert into root_my_table select rownum, 'AA' || to_char(rownum)<br /> 2 from dual connect by level &lt; 101;<br /><br />100 rows created.<br /><br />SQL&gt; commit;<br /><br />Commit complete.<br /><br />SQL&gt;<br /></pre><br /><br />Now, open the Standby Read Only and verify the ROOT_MY_TABLE.<br /><br /><pre>SQL&gt; recover managed standby database cancel;<br />Media recovery complete.<br /><br />SQL&gt; alter database open read only;<br /><br />Database altered.<br /><br />SQL&gt; connect c##HKCCOMMON/hemant<br />Connected.<br />SQL&gt; select count(*) from root_my_table;<br /><br /> COUNT(*)<br />----------<br /> 100<br /><br />SQL&gt;<br /></pre><br /><br />Yes, the CDB ROOT user and data have gone over to the Standby !<br /><br />.<br />.<br /><br /><br /></div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-8477604958301373690 Mon Apr 03 2017 11:22:00 GMT-0400 (EDT) 4 Minute Video Tip: Navigating Database Objects http://www.thatjeffsmith.com/archive/2017/04/4-minute-video-tip-navigating-database-objects/ <p>I don&#8217;t do enough video.</p> <p>I&#8217;ve been cheating with animated GIFs &#8211; they&#8217;re &#8216;nice&#8217; because I don&#8217;t have to worry about the &#8216;ums&#8217; and &#8216;ahs&#8217; as I talk, or even about putting on a clean shirt.</p> <p>But, I have a bunch of videos I need to record for v4.2, so I thought I&#8217;d practice a bit.</p> <p>Here&#8217;s a short and sweet tutorial on how to go from a table to its index and back, and again with a trigger. And then just because it&#8217;s my favorite all time SQL Developer &#8216;trick&#8217;, how to jump to a table in your PL/SQL code.</p> <p><iframe width="853" height="480" src="https://www.youtube.com/embed/SyuQxqPLHEo" frameborder="0" allowfullscreen></iframe></p> <h3>Other Video Bloggers</h3> <p>Just because I don&#8217;t do enough video blogging, doesn&#8217;t mean there aren&#8217;t others out there that are super awesome.</p> <p><a href="http://www.rebellionrider.com/" target="_blank">This guy (@RebellionRider)</a> doesn&#8217;t work for Oracle, but maybe he should <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f609.png" alt="ūüėČ" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>I wish I could summon the energy and excitement that comes so naturally for him. </p> <p>Here&#8217;s an example of what I&#8217;m talking about.</p> <p><iframe width="853" height="480" src="https://www.youtube.com/embed/tLFjwyHCEqk" frameborder="0" allowfullscreen></iframe></p> <p>Now, as for people that actually do work for Oracle, I think you might enjoy <a href="https://www.youtube.com/channel/UCWeOtlakw8g01MrR8U4yYtg" target="_blank">Chris (the Magic of SQL!)</a> and <a href="https://www.youtube.com/channel/UCVN7PnJnuKQ65QLmWjFvhiw" target="_blank">Connor&#8217;s (Simply Smarter SQL)</a> YouTube channels.</p> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6117 Mon Apr 03 2017 09:59:43 GMT-0400 (EDT) Block Names https://jonathanlewis.wordpress.com/2017/04/03/block-names/ <p>There are a number of tiny details that I can never remember when I&#8217;m sketching out models to test ideas, and one of those is the PL/SQL block name. Virtually every piece of PL/SQL I write ends up with variables which have one of two prefixes in their names &#8220;M_&#8221; or &#8220;G_&#8221; (for memory or global, respectively) but I probably ought to be formal than that, so here&#8217;s an example of labelling blocks &#8211; specifically, labelling anonymous blocks from SQL*Plus using a trivial and silly bit of code:</p> <pre class="brush: plain; title: ; notranslate"> rem rem Script: plsql_block_names.sql rem Author: Jonathan Lewis rem Dated: March 2017 rem create table t1 nologging as select * from all_objects ; begin dbms_stats.gather_table_stats( ownname =&gt; user, tabname =&gt;'T1', method_opt =&gt; 'for all columns size 1' ); end; / create index t1_i1 on t1(object_id) nologging; -- -- Anonymous PL/SQL block with label, and a couple of -- uses of the label as the qualifier for variables -- &lt;&lt;my_block&gt;&gt; declare data_object_id t1.data_object_id%type; object_id t1.object_id%type; begin select data_object_id into my_block.data_object_id from t1 where data_object_id is not null and rownum = 1 ; select object_id into my_block.object_id from t1 where data_object_id = my_block.data_object_id and rownum = 1 ; dbms_output.put_line('Object: ' || object_id || ' - ' || my_block.object_id); dbms_output.put_line('Data Object: ' || data_object_id || ' - ' || my_block.data_object_id); end; / Object: 16 - 16 Data Object: 6 - 6 </pre> <p>The important point, of course, is that with a qualified variable name you eliminate the risk of a problem that appears occasionally on the public fora where someone has lost track of duplicated variable names, or used (as I have above) a variable name that matches a column name, and doesn&#8217;t notice that a little further down the code Oracle has captured the &#8220;wrong&#8221; interpretation of the name.</p> <p>You&#8217;ll note that the block name has to be surrounded by doubled angle brackets &#8211; and now that I&#8217;ve written about it I might actually remember that for a couple of weeks ;)</p> <p>&nbsp;</p> <h3>Footnote:</h3> <p>This isn&#8217;t the only use for labels, by the way, it&#8217;s just one that probably ought to be used more frequently in production code.</p> <p>The other thing I can never remember is how to escape quote marks &#8211; so I invariably end up using the old &#8220;double the quotes&#8221; method when I want to quote quotes.</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16964/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16964&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16964 Mon Apr 03 2017 08:04:28 GMT-0400 (EDT) Oracle Database Listener Security Guide ‚Äď Rewritten For Oracle 12.2 https://www.integrigy.com/security-resources/oracle-database-listener-security-guide-%E2%80%93-rewritten-oracle-122 <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>In October 2002 Integrigy first posted a guide to securing the Oracle Listener. Since then this whitepaper has been our most popular download. This month we rewrote the whitepaper for Oracle 12c, inclusive of 12.2</p> <p>Integrigy Consulting has found the Database Listener to be one of the most frequently overlooked security risks at customers. This whitepaper is an overview of the Database Listener, its unique security risks, and step-by-step recommendations for securing it are provided.</p> <p>If you have questions, please contact us at <a data-jsb_prepared="pjpyvsvjto" href="mailto:info@integrigy.com" rel="noreferrer">info@integrigy.com</a></p> <p>-Michael Miller, CISSP-ISSMP, CCSP, CCSK</p> <h3 class="grammarly-disable-indicator">References</h3> <ul> <li><a data-jsb_prepared="52zsvzm7wl" href="/security-resources/oracle-database-listener-security-guide" rel="noreferrer">Oracle Database Listener Security Guide</a></li> </ul> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> </div></div></div><a href="/tags/security-strategy-and-standards" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Security Strategy and Standards</a>, <a href="/tags/oracle-database" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle Database</a> mmiller 568 at https://www.integrigy.com Mon Apr 03 2017 07:00:00 GMT-0400 (EDT) Oracle GoldenGate Consultant http://gavinsoorma.com/2017/04/oracle-goldengate-consultant/ <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/04/ad2.jpg" rel="attachment wp-att-7498"><img class="aligncenter size-full wp-image-7498" src="http://gavinsoorma.com/wp-content/uploads/2017/04/ad2.jpg" alt="ad2" width="1281" height="483" srcset="http://gavinsoorma.com/wp-content/uploads/2017/04/ad2.jpg 1281w, http://gavinsoorma.com/wp-content/uploads/2017/04/ad2-300x113.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/04/ad2-768x290.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/04/ad2-1024x386.jpg 1024w, http://gavinsoorma.com/wp-content/uploads/2017/04/ad2-300x113@2x.jpg 600w" sizes="(max-width: 1281px) 100vw, 1281px" /></a></p> Gavin Soorma http://gavinsoorma.com/?p=7500 Mon Apr 03 2017 00:49:14 GMT-0400 (EDT) The Oracle ACE Program : My 11 Year Anniversary http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/1wteaHLlWiQ/ <p><a href="http://www.oracle.com/technetwork/community/oracle-ace/index.html"><img class="size-full wp-image-4795 alignleft" src="https://oracle-base.com/blog/wp-content/uploads/2015/04/ace-director.gif" alt="" width="144" height="54" /></a>It&#8217;s that time of year again! On 1st April 2006¬†I got an email telling me I was an <a href="http://www.oracle.com/technetwork/community/oracle-ace/index.html">Oracle ACE</a>¬†and they&#8217;ve not managed to get rid of me yet. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>This years anniversaries will look¬†like this.</p> <ul> <li>22 years working with Oracle technology in August. (August 1995)</li> <li>17 years doing <a href="https://oracle-base.com">my website</a> in July. (Original name: 03¬†July¬†2000 or Current name: 31¬†August¬†2001)</li> <li>12 years blogging in June. (15 June 2005)</li> <li>11¬†years on the <a href="http://www.oracle.com/technetwork/community/oracle-ace/index.html">Oracle ACE Program</a>. (01 April 2006)</li> <li>2 years¬†<a href="https://www.youtube.com/c/oraclebasepage">making videos</a>, with some very lazy periods. (6 July 2015)</li> </ul> <p>Oh man I feel old!¬†<img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Cheers</p> <p>Tim‚Ķ</p> <p>PS. I&#8217;m hoping to see a post from¬†<a href="http://thomaslarock.com/">Thomas LaRock</a>¬†(<a href="https://twitter.com/sqlrockstar">@SQLRockstar</a>)¬†who got his Microsoft MVP on the same day several years ago and is hopefully still and MVP.</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/04/01/the-oracle-ace-program-my-11-year-anniversary/">The Oracle ACE Program : My 11 Year Anniversary</a> was first posted on April 1, 2017 at 9:20 am.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /><img src="http://feeds.feedburner.com/~r/TheOracleBaseBlog/~4/1wteaHLlWiQ" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=7049 Sat Apr 01 2017 04:20:13 GMT-0400 (EDT) Fixing Development Mistakes from the Command Line with Delphix TimeFlow http://dbakevlar.com/2017/03/fixing-development-mistakes-command-line-delphix-timeflow/ <div id="tweetbutton6631" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Ffixing-development-mistakes-command-line-delphix-timeflow%2F&amp;text=RT%20%40DBAKevlar%20%40DBAKevlar%20%3A&amp;related=DBAKevlar:DBA+Kevlar&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Ffixing-development-mistakes-command-line-delphix-timeflow%2F" class="twitter-share-button" style="width:55px;height:22px;background:transparent url('http://dbakevlar.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat 0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><div class="pf-content"><p>How many times have you had a developer come to you and say, &#8220;I just did a bad thing in the database. ¬†Can you recover from what I just did?&#8221;</p> <p><a href="http://dbakevlar.com/2017/03/fixing-development-mistakes-command-line-delphix-timeflow/ksbp/" rel="attachment wp-att-6632"><img class="alignnone wp-image-6632" src="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/ksbp.gif?resize=385%2C194" alt="" data-recalc-dims="1" /></a></p> <p>With Delphix virtualization, we make this pretty easy to address from the user interface with a simple slider to recover from a PIT before the catastrophic mistake, but today, we&#8217;ll discuss how to do this from the command line</p> <p>1.Log into the Delphix engine as an admin user.</p> <pre class="prettyprint prettyprinted"><span class="pln">ssh delphix_admin@</span><span class="str">&lt;yourengine&gt;</span><span class="pln"> delphix </span><span class="pun">&gt;</span><span class="pln"> timeflow delphix timeflow </span><span class="pun">&gt;</span><span class="pln"> ls</span></pre> <p>2. Depending on the platform that you&#8217;re using, (in our example, we&#8217;ll use Oracle)¬†you&#8217;ll see the list of the databases available and can choose the one that you want to refresh before the catastrophic incident from the clueless developer</p> <pre class="prettyprint prettyprinted"><span class="pln">delphix database&gt; select [VDB name]</span></pre> <p>3. We can do a simple rollback if we just want to go back to the last snapshot or we can use an list command to see more options:</p> <pre class="prettyprint prettyprinted"><span class="pln">delphix database </span><span class="str">"[VDB Name]"</span><span class="pun">&gt;</span><span class="pln"> rollback</span></pre> <pre class="prettyprint prettyprinted"><span class="pln">delphix database </span><span class="str">"[VDB Name]"</span><span class="pln"> rollback </span><span class="pun">*&gt;</span><span class="pln"> ls </span><span class="typ">Properties</span><span class="pln"> type</span><span class="pun">:</span> <span class="typ">OracleRollbackParameters</span><span class="pln"> credential</span><span class="pun">:</span> <span class="pun">(</span><span class="pln">unset</span><span class="pun">)</span><span class="pln"> timeflowPointParameters</span><span class="pun">:</span><span class="pln"> type</span><span class="pun">:</span> <span class="typ">TimeflowPointSemantic</span><span class="pln"> container</span><span class="pun">:</span> <span class="pun">(</span><span class="pln">required</span><span class="pun">)</span><span class="pln"> location</span><span class="pun">:</span><span class="pln"> LATEST_POINT username</span><span class="pun">:</span> <span class="pun">(</span><span class="pln">unset</span><span class="pun">)</span></pre> <p>4.¬†So we&#8217;ve decided to do a PIT recovery after the mistake and use the following command and then commit the changes:</p> <pre class="prettyprint prettyprinted"><span class="pln">delphix database </span><span class="str">"[VDB Name]"</span><span class="pln"> rollback </span><span class="pun">*&gt;</span> <span class="kwd">set</span><span class="pln"> timeflowPointParameters</span><span class="pun">.</span><span class="pln">location</span><span class="pun">=82439 </span></pre> <pre class="prettyprint prettyprinted"><span class="pln">delphix database </span><span class="str">"[VDB Name"</span><span class="pln"> rollback </span><span class="pun">*&gt;</span><span class="pln"> commit</span></pre> <p><strong>That&#8217;s all there is to it.</strong></p> <blockquote><p>So what if the developer is incompetent and screws up repeatedly?</p></blockquote> <p>Follow steps 1-4 above and then to purge the problem from the environment, run the following command from the delphix engine:</p> <pre class="prettyprint prettyprinted"><span class="pln">delphix database developer [developer employee ID] remove </span><span class="pun">*&gt;</span><span class="pln"> commit</span></pre> <p>An eject button we&#8217;ve installed in the delphix engine will remove the developer from the premises and Delphix will even submit all necessary paperwork to Human Resources to complete his termination processing.</p> <p>If you&#8217;d like to automate the process, you can create a handy script that simply asks for the following parameters by calling it from any shell, Powershell for windows or even Jenkins as part of DevOps!</p> <p><span style="color: #0000ff;"><strong>Happy April 1st!</strong></span></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <!-- Easy Plugin for AdSense Unfiltered [count: 3 is not less than 3] --></div><br><br><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/ico-tag.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> Tags:&nbsp;&nbsp;<a href="http://dbakevlar.com/tag/april-fools/" rel="tag">April Fools</a><br><br><div style="width:100%"><table align="left" width="100%" cellspacing="0" cellpadding="0" bgcolor="#f1f1f1" border="0px;"> <tbody> <tr bgcolor="#ffffff"><td align="center" width="17%" valign="top"> <span class="sb_title">Del.icio.us</span><br> <a href="http://del.icio.us/post?url=http://dbakevlar.com/2017/03/fixing-development-mistakes-command-line-delphix-timeflow/&title=Fixing Development Mistakes from the Command Line with Delphix TimeFlow"> <img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/delicious.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"> </a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Facebook</span><br> <a href="http://www.facebook.com/share.php?u=http://dbakevlar.com/2017/03/fixing-development-mistakes-command-line-delphix-timeflow/"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/facebook_icon.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">TweetThis</span><br> <a href="http://twitthis.com/twit?url=http://dbakevlar.com/2017/03/fixing-development-mistakes-command-line-delphix-timeflow/&title=Fixing Development Mistakes from the Command Line with Delphix TimeFlow"><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tweet.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Digg</span><br> <a href="http://digg.com/submit?phase=2&url=http://dbakevlar.com/2017/03/fixing-development-mistakes-command-line-delphix-timeflow/&title=Fixing Development Mistakes from the Command Line with Delphix TimeFlow"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/digg.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">StumbleUpon</span><br> <a href="http://www.stumbleupon.com/submit?url=http://dbakevlar.com/2017/03/fixing-development-mistakes-command-line-delphix-timeflow/&title=Fixing Development Mistakes from the Command Line with Delphix TimeFlow"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/stumble.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td></tr> </tbody></table></div><br><div style="clear:both"></div><div style="background:#EEEEEE; padding:0px 0px 0px 15px; margin:10px 0px 0px 0px;"><div style="padding:5px 0px 5px 0px;"><b>Comments:</b>&nbsp;&nbsp;<a href="http://dbakevlar.com/2017/03/fixing-development-mistakes-command-line-delphix-timeflow/#respond">0 (Zero), Be the first to leave a reply!</a></div><br><div style="clear:both"></div><div style="padding:13px 0px 5px 0px;"><span style="border-bottom:1px dashed #003399;padding-bottom:4px;"><strong>You might be interested in this:</strong></span>&nbsp;&nbsp;<br><ul style="margin:0; padding:0; padding-top:10px; padding-bottom:5px;"><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2015/04/kickstarting-after-a-failed-addition-to-the-awr-warehouse/" >Kickstarting After a Failed Addition to the AWR Warehouse</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2011/07/addressing-a-deadlock/" >Addressing a Deadlock</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2011/10/oow11-dinners/" >OOW11 Dinners</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2013/08/tcp-trace-analysis-for-nfs/" >TCP Trace Analysis for NFS</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2015/08/the-evolution-of-a-programmer-and-the-pythonic-way-of-thinking/" >The Evolution of a Programmer and the Pythonic Way of Thinking</a></li></ul></div></div><hr style="color:#EBEBEB" /><small>Copyright ¬©¬†<a href="http://dbakevlar.com">DBA Kevlar</a> [<a href="http://dbakevlar.com/2017/03/fixing-development-mistakes-command-line-delphix-timeflow/">Fixing Development Mistakes from the Command Line with Delphix TimeFlow</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/03/fixing-development-mistakes-command-line-delphix-timeflow/">Fixing Development Mistakes from the Command Line with Delphix TimeFlow</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6631 Fri Mar 31 2017 12:58:31 GMT-0400 (EDT) Oracle OpenWorld 2017: Call for Speakers Is Now Open http://www.odtug.com/p/bl/et/blogaid=695&source=1 What‚Äôs the big idea? Share yours with the world's largest gathering of Oracle technologists and business leaders during Oracle OpenWorld 2017, happening October 1-5, 2017 in San Francisco. This year‚Äôs Call for Speakers is NOW open. ODTUG http://www.odtug.com/p/bl/et/blogaid=695&source=1 Fri Mar 31 2017 11:19:25 GMT-0400 (EDT) Big Announcement ‚Äď New Job, New Country (A New Career In A New Town) https://richardfoote.wordpress.com/2017/04/01/big-announcement-new-job-new-country-a-new-career-in-a-new-town/ APRIL FOOLS After 5 1/2 years at Oracle Corporation, I&#8217;ve decided to leave and take on a very¬†exciting new challenge !! President Trump&#8217;s office have accepted my nomination to head their IT department¬†in Washington DC, where I&#8217;ll be responsible for ensuring all USA government data is stored in a extremely efficient and secure manner. So [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=richardfoote.wordpress.com&#038;blog=2301564&#038;post=4302&#038;subd=richardfoote&#038;ref=&#038;feed=1" width="1" height="1" /> Richard Foote http://richardfoote.wordpress.com/?p=4302 Fri Mar 31 2017 09:45:27 GMT-0400 (EDT) GaOUG Tech Days Session: REST Request and JSON with APEX Packages http://dbaontap.com/2017/03/31/gaoug-tech-days-session-rest-request-json-apex-packages/ <p>It&#8217;s that time of year where we have to start delivering on those promises made months ago when we professed to be experts at some Oracle tech. Experts enough to commit to standing up in front an audience eagerly awaiting us to drop that tidbit of knowledge that will change their lives. Give then that ...</p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/03/31/gaoug-tech-days-session-rest-request-json-apex-packages/">GaOUG Tech Days Session: REST Request and JSON with APEX Packages</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">dbaonTap</a>.</p> DB http://dbaontap.com/?p=1181 Fri Mar 31 2017 09:00:04 GMT-0400 (EDT) Oracle GoldenGate 101 at IOUG 17 and GaOUG TechDays 17 within two month https://dbasolved.com/2017/03/31/oracle-goldengate-101-at-ioug-17-and-gaoug-techdays-17-within-two-month/ <p dir="auto">Losts have changed for me since my last blog post. A new job and new responsibilities, which will include presenting more at conferences on the conference circuit and a few roadshows that are planned in the near future. </p> <p dir="auto">Back in the fall of 2016, when most of the Call for Papers open, I had a great idea for introducing people to Oracle GoldenGate. This idea is walk everyone through the progression of replication technology from CDC through Oracle GoldenGate, including some future road map items; that will ensure Oracle GoldenGate stays the number 1 replication tool on the market. </p> <p dir="auto">Over the next two months, I will be presenting this great idea/topic in a presentation called <strong>Oracle GoldenGate 101 &#8211; Replication from the beginning</strong> starting at <a href="http://collaborate.ioug.org/" target="_blank">IOUG Collaborate</a> next week (April 2-6, 2017) and then at the best keep secret in the south &#8211; <a href="http://gaoug.strikingly.com/#tech-days-2017" target="_blank">Georgia Oracle User Group (GaOUG) Tech Days 17</a> on May 9th-1th, 2017 (<a href="https://www.eventbrite.com/e/gaoug-tech-days-2017-registration-28290002158" target="_blank">register here</a>). This is going to be a session you will not want to miss, espeically if your organization uses Oracle GoldenGate for any architecture.</p> <p dir="auto">Additionally, the great guys who run the Georgia Oracle User Group (GaOUG) have done e amazing things since the planning of Tech Days 17 started. Just getting the key note speaker was a great addition to the already packed schedule of talks. This year, the keynote speaker is Maria Colgan, Master Product Manager for Oracle. She will be sharing some new and exciting items related to the Oracle Database and the direction Oracle is taking with new and exciting products.</p> <p dir="auto">GaOUG will also have dozens of Oracle ACE‚Äôs and ACE Director‚Äôs talking about topics accross multiple track (Database Development, Big Data, Applications, Middleteir). As an added bouns this year, GaOUG has added a half day Cloud track where you can learn all the items needed for your future Cloud deployments.</p> <p dir="auto">Hope to see everyone at both of these events, especially GaOUG in the coming months!</p> <p dir="auto">If you want to learn more about GaOUG Tech Days and the other impressive speakers, check out the blog hop posts below! What is a blog hop? It‚Äôs a group of bloggers who all get together to blog on a similar topic, giving you a lot of useful information from different perspectives, but in one stream. Enjoy your &#8220;hop&#8221; between blog posts and register for GaOUG Tech Days today!<br /><a href="http://redpillanalytics.com/gaoug-session/" target="_blank"><br />Stewart Bryson</a>, RedPill Analytics<br /><a href="https://jimczuprynski.wordpress.com/2017/03/29/2017-05-09_gaoug/" target="_blank">Jim Czuprynski</a>, OnX Enterprise Solutions<br /><a href="http://blog.dbvisit.com/kafka-for-the-oracle-dba/" target="_blank">Chris Lawless</a>, Dbvisit Software<br /> <a href="http://dbaontap.com/2017/03/31/gaoug-tech-days-session-rest-request-json-apex-packages/" target="_blank">Danny Bryant</a>, Accenture Enkitec Group<br /><a href="https://theitside.net/" target="_blank">Eric Helmer</a>, Mercury Technology Group</p><br />Filed under: <a href='https://dbasolved.com/category/gaoug/'>GaOUG</a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=dbasolved.com&#038;blog=41578630&#038;post=1621&#038;subd=curtisbl&#038;ref=&#038;feed=1" width="1" height="1" /> curtisbl http://dbasolved.com/?p=1621 Fri Mar 31 2017 09:00:00 GMT-0400 (EDT) Oracle E-Business Suite Mobile and Web Services Security Explained - Starting with URL Firewall https://www.integrigy.com/security-resources/oracle-e-business-suite-mobile-and-web-services-security-explained-starting-url <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"> <p>This is the sixth posting in a blog series summarizing the new Oracle E-Business Suite 12.2 Mobile and web services functionality and recommendations for securing them.</p> <p>How are web services secured in Oracle 12.2? To start at the beginning, the ‚Äúfront door‚ÄĚ of the Oracle E-Business Suite is its web server, the Apache server deployed within the WebLogic server that is installed with release 12.2. To secure an Apache web server largely requires setting various configurations in the Apache configuration file (httpd.conf). For the Oracle E-Business Suite, these critical settings are maintained by Oracle through the AutoConfig utility.&nbsp;</p> <h3>URL Firewall</h3> <p>The most important setting for Internet-facing clients is the include for the Oracle E-Business Suite‚Äôs URL Firewall. When the URL Firewall is included in the httpd.conf, every web request is passed through the URL Firewall, both for forms and for web services. The URL Firewall is non-discretionary and mandatory requirement when the Oracle E-Business Suite is deployed on the Internet.</p> <p style="margin-left: 40px;"><img alt="" src="/files/images/EBS12-2_URLFirewall.jpg" style="width: 315px; height: 37px;"></p> <p style="margin-left:.5in;">HTTPD.CONF include for the URL Firewall</p> <p>The URL Firewall is a template maintained by Oracle that whitelists those forms (e.g. JSP pages) that Oracle Corporation has hardened for use on the Internet. If the JSP is not listed ‚Äúwhitelisted‚ÄĚ in the file url_fw.conf it should NOT be used on the Internet. Be sure to use the latest version of the template as Oracle periodically updates the template.</p> <p>In the template, Oracle comments out all lines which effectively <strong><em>‚ÄúDenies All.‚ÄĚ </em></strong>To use the url_fw.conf, DBAs at each client site need to manually uncomment (‚Äúopen‚ÄĚ) specific JSP pages appropriate to their site. This ‚Äúopening‚ÄĚ by the DBAs must be carefully done and routinely reviewed.</p> <p>The mechanics of when the url_fw.conf is called or not is determined by the Node's trust level. Most large Oracle E-Business Suite implementations have multiple web servers (referred to as nodes). To deploy the Oracle E-Business Suite on the Internet, one ore more nodes are deployed in a DMZ. If the node making the request of the Apache web server is flagged as an "Internal" web node, the url_fw.conf is skipped. If however the Node's trust level is flagged as "External" because the node is deployed in the DMZ, the url_fw.conf is called.</p> <p>When called, the url_fw.conf applies regular expressions to the web request to determine if the request is BOTH exists in the whitelist and has been uncommented ‚Äúopened‚ÄĚ by the DBAs. If no match is found, a default-deny result is returned. In security terms, this means all requests are rejected unless explicitly allowed. If a match is found, the web request continues and the WebLogic server will then proceed with authentication and authorization tasks.</p> <p style="margin-left: 40px;"><img alt="" src="/files/images/EBS12-2_URLFirewall2.jpg" style="width: 350px; height: 117px;"></p> <p style="margin-left: 40px;">Example of URL FW line uncommented</p> <p>Enabling and configuring the URL Firewall is the first step in securing web services. Unfortunately, Oracle buries the documentation for the URL Firewall in Appendix E of DMZ configuration guide ‚Äď see the reference section of this paper for more information on the documentation.</p> <p>To secure web services, it gets more complicated in that a second whitelist is appended to the first. To secure Oracle E-Business Suite web services, the url_fw.conf calls the url_fw_ws.conf. Similar to the configuration of the url_fw.conf, the documentation is buried deep in Appendix E of the DMZ configuration guide.</p> <p>Different than the url_fw.conf which is supplied as a static listing of JSP pages, a utility (txkGenWebServiceUrlFwConf.pl) is run to generate the file url_fw_ws.conf. After being generated, DBAs similarly need to manually uncomment only those lines for the web services being used. If a web service is not found to be whitelisted, a default-deny rule will be applied; all web services commented out will be denied.</p> <p style="margin-left: 40px;"><img alt="" src="/files/images/EBS12-2_URLFirewall3.jpg" style="width: 432px; height: 171px;"></p> <p style="margin-left: 40px;">Example of URL FW WS.conf</p> <p>Errors in selecting a Node‚Äôs trust level and configuring either the url_fw.conf and/or the url_fw_ws.conf have serious security consequences and should be routinely reviewed as part of on-going security audits.</p> <p>Web services can be publically deployed without using the URL Firewall. For example, clients can if they so choose route Internet traffic directly to the E-Business Suite without setting up an External node. Integrigy Corporation highly recommends against doing this. Integrigy Corporation highly recommends always using the URL Firewall when deployed on the Internet, both for forms and for web services.</p> <p style="margin-left: 40px;"><img alt="" src="/files/images/EBS12-2_URLFirewall4.jpg" style="width: 322px; height: 225px;"></p> <p style="margin-left:.5in;">URL Firewall called by Node Trust Level</p> <p style="margin-left: 40px;"><img alt="" src="/files/images/EBS12-2_URLFirewall5.jpg" style="width: 312px; height: 216px;"></p> <p style="margin-left:.5in;">httpd.conf calls the URL Firewall</p> <p>If you have any questions, please contact us at <a href="mailto:info@integrigy.com">info@integrigy.com</a></p> <p>-Michael Miller, CISSP-ISSMP, CCSP, CCSK</p> <div class="grammarly-disable-indicator"> <h3>References</h3> <ul> <li><a data-jsb_prepared="ykbfl5hty6" href="/security-resources/oracle-e-business-suite-mobile-and-web-services-security-0" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security</a>&nbsp;- Integrigy Whitepaper</li> <li><a data-jsb_prepared="q6ttrgzbhv" href="/security-resources/oracle-e-business-suite-mobile-and-web-services-security" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security</a>&nbsp;- Integrigy Webinar</li> <li><a data-jsb_prepared="pdvxa4jbj7" href="https://support.oracle.com/rs?type=doc&amp;id=1375670.1" rel="noreferrer">Oracle E-Business Suite Release 12.2 Configuration in a DMZ</a>&nbsp;(Note 1375670.1)</li> </ul> </div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> </div></div></div><a href="/tags/web-services" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Web Services</a>, <a href="/tags/dmzexternal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">DMZ/External</a>, <a href="/tags/oracle-e-business-suite" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle E-Business Suite</a> mmiller 549 at https://www.integrigy.com Fri Mar 31 2017 07:00:00 GMT-0400 (EDT) The value of the Oracle PaaS Partner Community Forum https://technology.amis.nl/2017/03/31/the-value-of-the-oracle-paas-partner-community-forum/ <p><a href="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7692.jpg?ssl=1"><img title="IMG_7692" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: left; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="IMG_7692" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7692_thumb.jpg?resize=301%2C227&#038;ssl=1" align="left" data-recalc-dims="1"></a>I have just returned home from the Oracle PaaS Partner Community Forum 2017 which took place in Split, Croatia. Filled with energy, inspiration, impressions, already fond memories, more understanding, longer term plans and shorter term action items and a warm feeling of being part of an international network of smart, open, helpful and fun people. Does that sound soft, a little over the top &#8211; slightly brainwashed even? Let me try to explain what this event entails and what it means to me.</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7722.jpg?ssl=1"><img title="IMG_7722" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="IMG_7722" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7722_thumb.jpg?resize=244%2C151&#038;ssl=1" align="right" data-recalc-dims="1"></a>200 Representatives from Oracle PaaS and Middleware partners in 25+ countries &#8211; primarily in Europe and including North America, Asia and Africa &#8211; flocked to Split, Croatia to meet with each other as well as with&nbsp; a few dozen Oracle staff &#8211; from Vice President Product Management Fusion Middleware and PaaS Cloud to the Oracle A Team. The objectives of the event are to share real life experiences with Oracle technology and Oracle as a company to do business with. The partners share experience with each other &#8211; to learn and teach &#8211; as well as with Oracle &#8211; to enlighten them as to what works well and what is sorely lacking in products. Oracle staff lay out the product roadmaps for the next 6-18 months, share commercial opportunities, demonstrate new or hidden features in the products and in general enable attendees to make more successful use of their technology. The common goal is clear: become more successful in applying Oracle products for customers &#8211; by making the products better and by better understanding how the products can be best used.</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7773.jpg?ssl=1"><img title="IMG_7773" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: right; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="IMG_7773" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7773_thumb.jpg?resize=416%2C313&#038;ssl=1" align="right" data-recalc-dims="1"></a>The common ground for this community is strong and clear: a shared enthusiasm to work with technology and achieve business value for customers with it. We share a lot of history &#8211; even if this is the first time we meet &#8211; from working many years with the same technology, trying to achieve similar results for customers, facing the same challenges and probably unknowingly collaborating through discussion forums and blog articles. This shared history and common vocabulary make it very easy to strike up conversations &#8211; with just about anyone. Talking about a product, a technology, a wild plan at Oracle, the demo in the previous session. We speak the same language. And this common ground ground and shared history result in a warm, open atmosphere where conversations about sensitive topics and personal affairs can easily take place. With such a group of smart and very smart people, it seems easy to analyze the large problems of the world &#8211; and to overcome them as well (although that may have been the very agreeable local red wine speaking). </p> <p><a href="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7770.jpg?ssl=1"><img title="IMG_7770" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: left; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="IMG_7770" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7770_thumb.jpg?resize=184%2C244&#038;ssl=1" align="left" data-recalc-dims="1"></a>Some of the conversations I was part of included topics such as: Political situation in Brazil, economy of Portugal, president Trump, the Dutch elections, Oracle SaaS in Belgium, recent history and current relations in Slovenia, Croatia and Former Yugoslavia, politics and healthy food trends in Germany, history and culture in India, the Brexit and its consequences for Northern Ireland, raising children &#8211; especially at that tender age of 16 &#8211; in Slovenia, Portugal, Netherlands and the USA, regional differences within Spain, weather and seasons in Peru, absorbing the move from Mexico to Norway.&nbsp; </p> <p>I treasure the warm, open, positive, inquisitive, helpful attitude of the attendees &#8211; their willingness to share and help, to collaborate and appreciate. I am sure people have similar experiences with scientific communities and conferences, scouting jamborees, musical festivals and other gatherings of people with a shared passion. I am glad I have my own professional social community to be a part of. </p> <p>Thanks J√ľrgen for building and facilitating that community &#8211; it does not just happen.<a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7753.jpg?ssl=1"><img title="IMG_7753" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="IMG_7753" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7753_thumb.jpg?resize=244%2C184&#038;ssl=1" align="right" data-recalc-dims="1"></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <h3>OMESA &#8211; the Open Modern Enterprise Software Architecture</h3> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-48.png?ssl=1"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: left; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-48.png?resize=244%2C188&#038;ssl=1" align="left" data-recalc-dims="1"></a>Starting at the Community Day on Monday &#8211; but actually continuing an initiative that was started around Oracle OpenWorld 2016 &#8211; a small team of likeminded spirits with shared architectural interests, experiences and zeal gathered to work on OMESA &#8211; the Open Modern Enterprise Software Architecture initiative, initiated by Hajo Normann and especially Luis Weir. Taking into account many modern themes and upcoming technology patterns and trends &#8211; such as microservices, IoT, wearables and other devices, APIs, real time, big data, DevOps, scale out , stateless/server-less &#8211; the OMESA initiative tries to come up with good ways to describe, design and eventually implement enterprise software architecture patterns that actually work in real life. Drawing on the many decades experience across organizations, IT landscapes, corporate cultures as well as countries and continents, the OMESA discussions ran deep (more than 2 hours for about 20% of a single slide) and wide (from business objectives to infrastructure design, from fine grained component to end to end business flow). All in good spirit and at times quite passionate. Fun to do and very meaningful as well. <a href="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-49.png?ssl=1"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: right; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-49.png?resize=449%2C254&#038;ssl=1" align="right" data-recalc-dims="1"></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <h3>Themes</h3> <p>Clearly, one community day, two conference days and two days of in depth handson workshops cover many topics and details. A number of subjects and themes kept reappearing and seemed to define the main scope for the conference and the imminent roadmaps. A prime example was: <em>ChatBot</em> which made an appearance in almost every presentation. </p> <p>More far reaching themes included:</p> <ul> <li>Integration &#8211; various solutions to create end to end integration flow across technology stacks, locations, cloud &amp; on premises ; </li> <li>SaaS Extension &#8211; Oracle focuses on various aspects of SaaS Extension (and SaaS enablement) and specific solutions for those. ABCS (Application Builder Cloud Service) is put forward as the primary solution for (simple) UI extensions of SaaS solutions. ABCS is rapidly evolving into a low code/no code/visual development environment for citizen developers and IT professionals to create cloud based user interfaces on top of local, custom business objects, SaaS APIs or custom REST APIs. Integration and Process &amp; Workflow are other areas where through ICS with Cloud Adapters and PCS for human workflow and complex business processes the SaaS offerings can be extended and tailored. In terms of financial conditions &#8211; Oracle is offering these cloud services at very attractive price points for use with Oracle SaaS.</li> <li>Machine Learning &amp; AI &#8211; leveraging data to predict &amp; recommend, based on statistical analysis of (big data) is rapidly becoming the holy grail for many organizations. The Big Data lakes are to be exploited and machine learning is one way of doing exactly that. IoT is leading to even more data and even more real time requirements. Machine Learning is popping up in various cloud services to provide them with predictive capabilities &#8211; for example in Dynamic Processes in PCS and Log and Infrastructure Analytics in OMC.</li> <li>Processes &#8211; PCS will be extended and enriched with dynamic process (evolved from adaptive case management), business rules and more.</li> <li>APIs &#8211; APIs &#8211; internal and external, generic business APIs and single purpose, consumer tailored APIs &#8211; API first design; API Platform/Catalog (design time) and API Gateway (runtime). apiary.io will always be free (promises Vikas Anand) &#8211; for API design and (design time) publication</li> <li>PaaS orchestration &#8211; using the Oracle PaaS services together; having them talk to each other, share data, connections, information, logging, events, monitoring, IaaS resources. Oracle is working on that, and I getting better at it. </li> <li>Containers &amp; Microservices &#8211; another holy grail seems to be a definition of what a <em>microservice</em> is. It seems obvious that microservice is the next level in decoupling, ownership, stateless and flexible horizontal scale out and modern DevOps. In terms of implementation &#8211; containers including application contains and serverless functions &#8211; seem an obvious choice (to an extent where sometimes means and end get confused). </li> <li>DevOps &#8211; taking ownership of a software component throughout its lifecycle (you build it, you run it, you fix it), using automated continuous delivery, automated (anti-)regression testing and automated monitoring/problem analysis as well as automated recovery/fail over and scaling. Containers at infra structure level, microservices as organization and architecture level and tooling such as Oracle Management Cloud for monitoring and analysis.</li> </ul> <p>&nbsp;</p> <p>&nbsp;</p> <h3>REAL &#8211; Red Expert Alliance</h3> <p><img style="float: right; display: inline" alt="" src="https://i1.wp.com/pbs.twimg.com/profile_images/519137582458757120/XHwSgJwX_200x200.png?w=702&#038;ssl=1" align="right" data-recalc-dims="1"></p> <p>The partner community forum is a great opportunity for the partners who collaborate even more within the <a href="https://www.redexpertalliance.com/" target="_blank">Red Expert Alliance (or REAL)</a> to catch up with each other. With partners in Mexico, USA, Australia, Portugal, Norway, Germany, Spain, UK, The Netherlands &#8211; REAL network forms an international team of Oracle partners and over 400 Oracle Professionals, supporting customers on all continents. Split provided a good opportunity to exchange the latest developments, discuss new business propositions, better get to know each other and in general strengthen the mutual ties. Additionally, some conversations took place with new candidate members for REAL.</p> <p>&nbsp;</p> <h3>Soaring through the Clouds</h3> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7759.jpg?ssl=1"><img title="IMG_7759" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: left; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="IMG_7759" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/IMG_7759_thumb.jpg?resize=184%2C244&#038;ssl=1" align="left" data-recalc-dims="1"></a>One of the highlights for me of the community event was the Soaring through the Cloud Live Demonstration of integrating 15 cloud services &#8211; prepared by a team of seven Oracle ACEs spanning three countries and five companies. The preparation for this session started over two months before the actual performance &#8211; and in a way already started over a year ago with the first and decidedly more challenging (given the state of the PaaS Cloud services at that time) live demo at the community event in Valencia, Spain &#8211; March 2016.</p> <p>In 1 hour and 20 minutes, we described an end to end business flow with many interaction points with things, social media, IT components and people including the audience. We managed to leverage 18 and demonstrate 15 cloud services, with only one or two minor hiccups around switching between Oracle Public Cloud identity domains. In doing so, we claim to have set the world record for integrating PaaaS Cloud Services.<a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-50.png?ssl=1"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-50.png?resize=244%2C138&#038;ssl=1" align="right" data-recalc-dims="1"></a></p> <p>You can find the resources for this presentation at: <a title="http://tinyurl.com/SoaringSplit" href="http://tinyurl.com/SoaringSplit">http://tinyurl.com/SoaringSplit</a> (live endpoints, UI and supporting resources including source code). </p> <p>The presentation slide deck itself (including many screenshots from our live demo) is available from SlideShare:</p> <p><iframe style="margin-bottom: 5px; max-width: 100%; border-top: #ccc 1px solid; border-right: #ccc 1px solid; border-bottom: #ccc 1px solid; border-left: #ccc 1px solid" height="485" marginheight="0" src="//www.slideshare.net/slideshow/embed_code/key/86fOiauJxEtNWU" frameborder="0" width="595" marginwidth="0" scrolling="no" allowfullscreen> </iframe> </p> <div style="margin-bottom: 5px"><strong><a title="Soaring through the Clouds &ndash;Live Demo of Setting a World Record in Integrating Oracle Public Cloud Services - PaaS Partner Community Forum, March 2017, Split, Croatia" href="//www.slideshare.net/lucasjellema/soaring-through-the-clouds-live-demo-of-setting-a-world-record-in-integrating-oracle-public-cloud-services-paas-partner-community-forum-march-2017-split-croatia" target="_blank">Soaring through the Clouds ‚ÄďLive Demo of Setting a World Record in Integrating Oracle Public Cloud Services &#8211; PaaS Partner Community Forum, March 2017, Split, Croatia</a> </div> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/31/the-value-of-the-oracle-paas-partner-community-forum/">The value of the Oracle PaaS Partner Community Forum</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Lucas Jellema https://technology.amis.nl/?p=44560 Fri Mar 31 2017 05:10:23 GMT-0400 (EDT) Collaborate 2017 http://dbakevlar.com/2017/03/collaborate-2017/ <div id="tweetbutton6612" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Fcollaborate-2017%2F&amp;text=RT%20%40DBAKevlar%20%40DBAKevlar%20%3A&amp;related=DBAKevlar:DBA+Kevlar&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Fcollaborate-2017%2F" class="twitter-share-button" style="width:55px;height:22px;background:transparent url('http://dbakevlar.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat 0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><div class="pf-content"><p>Every year I make the trek to Vegas for the large Collaborate conference and 2017 is no different!</p> <p><a href="http://dbakevlar.com/2017/03/collaborate-2017/las-vegas-animated-gif-9/" rel="attachment wp-att-6613"><img class="alignnone wp-image-6613" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/las-vegas-animated-gif-9.gif?resize=318%2C212" alt="" data-recalc-dims="1" /></a></p> <p>It&#8217;s a busy schedule for me at Delphix, so buckle up and hang on for this next week&#8217;s events!</p> <p><a href="https://app.attendcollaborate.com/event/member?item_id=5744040">Sunday, April 2nd, 9am-1pm</a></p> <p><strong>Pre-Conference Hands on Lab</strong></p> <p><strong>Location:</strong> South Seas C ¬†<strong>Session#</strong> 666</p> <p>Registration is required for this special conference event and it will give the registered attendees a chance to get hands on experience with databases with virtualization. ¬†This is an important skill set for Database Administrators as they discover how easy it is to migrate to the cloud with virtualized environments and for developers and testers, as they discover this is how to get those pesky, monstrous databases to move at the same speed as DevOps.</p> <p><a href="https://app.attendcollaborate.com/event/member?item_id=5744017">Monday, April 3rd, 1:30-2:30pm</a></p> <p><strong>Database Patching and Upgrading Using Virtualization, (IOUGenius Session)</strong></p> <p><strong>Location:</strong> ¬†Jasmine C ¬†<strong>Session#</strong> 149</p> <p><a href="https://app.attendcollaborate.com/exhibitor/member/184884">Tuesday, April 4th, ALL DAY</a>&#8211; OK, for the entire time the exhibitor area is up! <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p><strong>Delphix Booth, doing demos and running amok! ¬†</strong></p> <p>Location: Booth 1210</p> <p><a href="https://app.attendcollaborate.com/event/member?item_id=5744021">Wednesday, April 5th, 9:45-10:45am</a></p> <p><strong>Virtualization 101 and Q&amp;A</strong></p> <p><strong>Location:</strong> Jasmine C ¬†<strong>Session#</strong> 201</p> <p><a href="http://www.oaktable.net/blog/oak-table-world-collaborate-2017-edition">Wednesday, April 5th, ALL DAY</a></p> <p><strong>Oak Table World</strong></p> <p>Location: South Seas C</p> <p>1:15 Session from me!</p> <p><span style="color: #003366;"><strong>Oracle vs. SQL Server- ¬†Page Splits, Leaf Blocks and Other Wars</strong></span></p> <p>If you haven&#8217;t noticed, if you come to an Oak Table World session, (and really, why would you miss any of the phenomenal Oakies speaking??) ¬†You can put your name in for a raffle for a (difficult to find) NES system. ¬†Yeah, entertain me, it took me a bit to track this game console down for the event!</p> <p><a href="http://dbakevlar.com/2017/03/collaborate-2017/nes-classic-edition/" rel="attachment wp-att-6614"><img class="alignnone wp-image-6614" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/nes-classic-edition-1024x512.png?resize=362%2C181" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/nes-classic-edition.png?resize=1024%2C512 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/nes-classic-edition.png?resize=300%2C150 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/nes-classic-edition.png?resize=768%2C384 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/nes-classic-edition.png?w=1200 1200w" sizes="(max-width: 362px) 100vw, 362px" data-recalc-dims="1" /></a></p> <p>For a complete list of Delphix Session, you can locate them in the following spreadsheet:</p> <table dir="ltr" border="1" cellspacing="0" cellpadding="0"> <colgroup> <col width="287" /> <col width="238" /> <col width="207" /> <col width="233" /></colgroup> <tbody> <tr> <td><span class="aBn" tabindex="0" data-term="goog_1491181002"><span class="aQJ">9:00 AM ‚Äď 1:00 PM</span></span> ‚Äď South Seas C<br /> Data Virtualization Hands-On Lab (pre-registration required)<br /> Presenters: Kellyn Pot‚ÄôVin-Gorman and Leighton Nelson</td> <td><span class="aBn" tabindex="0" data-term="goog_1491181003"><span class="aQJ">1:30 PM ‚Äď 2:30 PM</span></span> ‚Äď Jasmine C<br /> Database Patching and Upgrading Using Virtualization<br /> Presenter: Kellyn Pot‚ÄôVin-Gorman</td> <td><span class="aBn" tabindex="0" data-term="goog_1491181004"><span class="aQJ">9:30 AM &#8211; 4:15 PM</span></span> &#8211; Exhibitor Showcase</td> <td></td> </tr> <tr> <td></td> <td><span class="aBn" tabindex="0" data-term="goog_1491181006"><span class="aQJ">4:15 PM ‚Äď 5:15 PM</span></span> ‚Äď Palm D<br /> Linux/UNIX Tools for Oracle DBAs<br /> Presenter: Tim Gorman</td> <td><span class="aBn" tabindex="0" data-term="goog_1491181007"><span class="aQJ">9:45 AM ‚Äď 10:45 AM</span></span> ‚Äď Jasmine C<br /> Virtualization 101 and Q&amp;A<br /> Presenter: Kellyn Pot‚ÄôVin-Gorman</td> <td></td> </tr> <tr> <td></td> <td><span class="aBn" tabindex="0" data-term="goog_1491181009"><span class="aQJ">5:15 PM &#8211; 8:00 PM</span></span> &#8211; Exhibitor Showcase</td> <td><span class="aBn" tabindex="0" data-term="goog_1491181010"><span class="aQJ">2:45 PM ‚Äď 3:45 PM</span></span> ‚Äď Banyan E<br /> OAUG Archive &amp; Purge SIG Session<br /> Presenter: Brian Bent</td> <td><span class="aBn" tabindex="0" data-term="goog_1491181011"><span class="aQJ">10:45 AM &#8211; 4:15 PM</span></span> &#8211; Exhibitor Showcase</td> </tr> <tr> <td></td> <td><span class="aBn" tabindex="0" data-term="goog_1491181005"><span class="aQJ">8:30 AM ‚Äď 9:30 AM</span></span> ‚Äď Palm A<br /> Migration Enterprise Applications to the Cloud<br /> Presenter: Leighton Nelson</td> <td><span class="aBn" tabindex="0" data-term="goog_1491181012"><span class="aQJ">5:15 PM &#8211; 7:00 PM</span></span> &#8211; Exhibitor Showcase</td> </tr> </tbody> </table> <h3><strong>See you next week in Vegas!!</strong></h3> <p>&nbsp;</p> <!-- Easy Plugin for AdSense Unfiltered [count: 3 is not less than 3] --></div><br><br><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/ico-tag.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> Tags:&nbsp;&nbsp;<br><br><div style="width:100%"><table align="left" width="100%" cellspacing="0" cellpadding="0" bgcolor="#f1f1f1" border="0px;"> <tbody> <tr bgcolor="#ffffff"><td align="center" width="17%" valign="top"> <span class="sb_title">Del.icio.us</span><br> <a href="http://del.icio.us/post?url=http://dbakevlar.com/2017/03/collaborate-2017/&title=Collaborate 2017"> <img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/delicious.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"> </a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Facebook</span><br> <a href="http://www.facebook.com/share.php?u=http://dbakevlar.com/2017/03/collaborate-2017/"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/facebook_icon.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">TweetThis</span><br> <a href="http://twitthis.com/twit?url=http://dbakevlar.com/2017/03/collaborate-2017/&title=Collaborate 2017"><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tweet.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Digg</span><br> <a href="http://digg.com/submit?phase=2&url=http://dbakevlar.com/2017/03/collaborate-2017/&title=Collaborate 2017"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/digg.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">StumbleUpon</span><br> <a href="http://www.stumbleupon.com/submit?url=http://dbakevlar.com/2017/03/collaborate-2017/&title=Collaborate 2017"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/stumble.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td></tr> </tbody></table></div><br><div style="clear:both"></div><div style="background:#EEEEEE; padding:0px 0px 0px 15px; margin:10px 0px 0px 0px;"><div style="padding:5px 0px 5px 0px;"><b>Comments:</b>&nbsp;&nbsp;<a href="http://dbakevlar.com/2017/03/collaborate-2017/#respond">0 (Zero), Be the first to leave a reply!</a></div><br><div style="clear:both"></div><div style="padding:13px 0px 5px 0px;"><span style="border-bottom:1px dashed #003399;padding-bottom:4px;"><strong>You might be interested in this:</strong></span>&nbsp;&nbsp;<br><ul style="margin:0; padding:0; padding-top:10px; padding-bottom:5px;"><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2016/04/the-amazon-kindle-fire-10-hd-tablet/" >The Amazon Kindle Fire 10 HD Tablet</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2017/01/working-aws-host-dba/" >Working on an AWS Host as a DBA</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2012/10/jessica-ridgeway/" >Jessica Ridgeway</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2015/03/distributed_transactions_and_em12c_page_perf/" >Distributed Transactions and EM12c Page Performance</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2017/04/chicken-egg-cloud-migrations/" >The Chicken Before the Egg of Cloud Migrations</a></li></ul></div></div><hr style="color:#EBEBEB" /><small>Copyright ¬©¬†<a href="http://dbakevlar.com">DBA Kevlar</a> [<a href="http://dbakevlar.com/2017/03/collaborate-2017/">Collaborate 2017</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/03/collaborate-2017/">Collaborate 2017</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6612 Thu Mar 30 2017 13:29:33 GMT-0400 (EDT) Preparing an AzureEnvironment- Part I http://dbakevlar.com/2017/03/preparing-azureenvironment-part/ <div id="tweetbutton6504" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Fpreparing-azureenvironment-part%2F&amp;text=RT%20%40DBAKevlar%20%40DBAKevlar%20%3A&amp;related=DBAKevlar:DBA+Kevlar&amp;lang=en&amp;count=horizontal&amp;counturl=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Fpreparing-azureenvironment-part%2F" class="twitter-share-button" style="width:55px;height:22px;background:transparent url('http://dbakevlar.com/wp-content/plugins/wp-tweet-button/tweetn.png') no-repeat 0 0;text-align:left;text-indent:-9999px;display:block;"></a></div><div class="pf-content"><p><a href="https://manage.windowsazure.com"><strong>Azure</strong></a> is the second most popular cloud platform to date, so it&#8217;s where <strong><a href="http://delphix.com">Delphix</a></strong> naturally is going to support second on our road to the cloud. ¬†As I start to work with the options for us deploying Delphix, there are complexities I need to educate myself on in Azure. ¬†As we&#8217;re just starting out, there&#8217;s a lot to learn and a lot of automation we can take advantage of. ¬†It&#8217;s an excellent time for me to get up to speed with this cloud platform, so hopefully everyone will learn right along with me!</p> <p>We&#8217;ll be using Terraform to deploy to Azure, just as we prefer to use it for our AWS deployments. ¬†It&#8217;s open source, very robust and has significant support in the community, so we&#8217;ll switch from cloud setup to Terraform prep in many of these posts. ¬†Before we can do that, we need to set up our Azure environment after we&#8217;ve registered our subscription with Azure.</p> <h3>Azure Consoles</h3> <p>There are the <a href="https://portal.azure.com/">New</a>¬†and the <a href="https://manage.windowsazure.com/">Classic</a> consoles for Azure, but also ones in the modern, New¬†console that are marked as &#8220;Classic&#8221; that aren&#8217;t part of the actual &#8220;Classic&#8221; one. ¬†I found this a bit confusing, so it&#8217;s good to have the distinction.</p> <p><a href="http://dbakevlar.com/2017/03/preparing-azureenvironment-part/screen-shot-2017-03-08-at-1-16-50-pm/" rel="attachment wp-att-6505"><img class="alignnone wp-image-6505" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.16.50-PM.png?resize=462%2C457" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.16.50-PM.png?w=762 762w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.16.50-PM.png?resize=300%2C297 300w" sizes="(max-width: 462px) 100vw, 462px" data-recalc-dims="1" /></a></p> <p><em>Azure&#8217;s &#8220;New&#8221; Portal, with it&#8217;s modern, sleek design</em></p> <p><a href="http://dbakevlar.com/2017/03/preparing-azureenvironment-part/screen-shot-2017-03-08-at-1-16-06-pm/" rel="attachment wp-att-6506"><img class="alignnone wp-image-6506" src="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.16.06-PM.png?resize=467%2C261" alt="" srcset="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.16.06-PM.png?resize=1024%2C572 1024w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.16.06-PM.png?resize=300%2C167 300w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.16.06-PM.png?resize=768%2C429 768w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.16.06-PM.png?w=1304 1304w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.16.06-PM.png?w=1200 1200w" sizes="(max-width: 467px) 100vw, 467px" data-recalc-dims="1" /></a></p> <p><em>Azure&#8217;s &#8220;Classic&#8221; management interface, with it&#8217;s pale blue and white schema, which still serves a very significant purpose</em></p> <p>Once you&#8217;ve created your Azure account, you&#8217;ll find that you need access to the Classic console to perform many of the basic setup tasks, where the Modern console is better for advanced administration.</p> <h3>Preparation is Key</h3> <p>There are a number of steps you&#8217;ll need to perform in preparation for Delphix to deploy to Azure. ¬†The delphix engine, a source and a target are out goal, so we&#8217;ll start simple and work our way out. ¬†Let&#8217;s see how much I can figure out and how much I may need to look to others more experienced to get me through. ¬†No matter what, you&#8217;ll need both consoles, so keep the links above handy and I&#8217;ll refer to the consoles by &#8220;<strong>New</strong>&#8221; and &#8220;<strong>Classic</strong>&#8221; to help distinguish them as I go along. ¬†Know that in this post, we&#8217;ll spend most of our time in the Classic console.</p> <h3>Set up an Account and Add Web App</h3> <p>If you don&#8217;t already have one, Microsoft will let you set up an account and even give you $200 in free credits to use. ¬†Once you sign up, then you need to know where to go next. ¬†This is where the &#8220;<strong>Classic</strong>&#8221; console comes in, as you need to set up your &#8220;application&#8221; that will be used for your deployment.</p> <p>Log into the &#8220;<strong><a href="http://manage.windowsazure.com">Classic</a></strong>&#8221; console and click on <strong>Active Directory</strong> and the <strong>Default Directory</strong> highlighted in blue. ¬†This will open a new page and you will have the opportunity to click<strong> Add</strong> at the bottom of the page to add a new Active Directory application.</p> <ul> <li>Name the Application, (open up a text editor, copy and paste the name of the app into it,¬†you&#8217;ll need this data later)</li> <li>The application type is web app or api</li> <li>Enter a URL/URI and yes, they can be made up. ¬†They don&#8217;t have to be real.</li> </ul> <h3>Client and Client Secret</h3> <p>Now that your application is created, you&#8217;ll see a tab called <strong>Configure</strong>. ¬†Click on this tab and you&#8217;ll see the client ID displayed. ¬†Copy the Client ID and add that to your text editor, also for later.</p> <p>Scroll down and you&#8217;ll see a section called <strong>Keys</strong>. ¬†Click on the button that says &#8220;Select Duration&#8221; and choose 1 or 2 years. ¬†At the very bottom of the screen, you&#8217;ll see a <strong>Save</strong> button, click it and then the Secret passcode will be displayed for you to copy and paste into your text editor. ¬†<strong>Do this now</strong>, as you won&#8217;t be able to get to it later.</p> <h3>Tenant ID</h3> <p>To the left of the Save button, you&#8217;ll see &#8220;View Endpoints&#8221;. ¬†Click on this and you&#8217;ll see a number of entries. ¬†The tenant ID¬†is the repeat value shown in each of the entries at the end. ¬†An example is shown below:</p> <p><a href="http://dbakevlar.com/2017/03/preparing-azureenvironment-part/screen-shot-2017-03-08-at-1-44-54-pm/" rel="attachment wp-att-6507"><img class="alignnone wp-image-6507" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.44.54-PM.png?resize=340%2C137" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.44.54-PM.png?w=762 762w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-1.44.54-PM.png?resize=300%2C121 300w" sizes="(max-width: 340px) 100vw, 340px" data-recalc-dims="1" /></a></p> <p>Copy and paste this into your text editor under a heading of tenant ID.</p> <h3>Add Application to the Active Directory</h3> <p>Now that you&#8217;ve created this framework, you need to grant permissions to use it all. ¬†In the Configure tab, scroll to the very bottom where it says &#8220;Permissions to Other Applications&#8221; and click on <strong>Add Application</strong>. ¬†Choose the<strong> Active Directory</strong> application from the list, (if you have a new account, you won&#8217;t have much to choose from) <strong>Azure Service Management AP</strong>I and click on the checkmark in the lower right corner of the pane. ¬†This will return you to the previous page. ¬†Click on the designated privileges and choose to grant it¬†<strong>Access Azure Service Management as organization</strong> and then save.</p> <h3>Subscription Data</h3> <p>Now, log into the <a href="https://portal.Azure.com">New</a> portal and click on <strong>Subscriptions</strong> on the left hand side. ¬†Click on the Subscription and it will open up to display your Subscription ID, which you&#8217;ll need to copy and paste into your text editor.</p> <p>Click on <strong>Access Control, (IAM)</strong> and click on Add. ¬†Now you may only see your username, but the applications are there- ¬†they just won&#8217;t be displayed by default. ¬†Type in your application name that you put in your text editor, (example, mine is Web_K_Terra.) ¬†Reminder- ¬†you must type in the name of your app, just as you did when you created it, (it is cap sensitive, etc.) Grant <strong>reader</strong> and <strong>contributor</strong> roles from the role list, saving between each additional role.</p> <p>You should now see your user in the list with both roles assigned to it like the example below for Web_K_Terra app:</p> <p><a href="http://dbakevlar.com/2017/03/preparing-azureenvironment-part/screen-shot-2017-03-08-at-2-06-40-pm/" rel="attachment wp-att-6508"><img class="alignnone wp-image-6508" src="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-2.06.40-PM.png?resize=439%2C242" alt="" srcset="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-2.06.40-PM.png?resize=1024%2C565 1024w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-2.06.40-PM.png?resize=300%2C166 300w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-2.06.40-PM.png?resize=768%2C424 768w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-08-at-2.06.40-PM.png?w=1210 1210w" sizes="(max-width: 439px) 100vw, 439px" data-recalc-dims="1" /></a></p> <p>Our configuration is complete and ready to go onto the networking piece.</p> <p>The first part of my terraform template is ready, too. ¬†All the pertinent data that I required from my build out has been added to it and it looks something like the following:</p> <p>provider ‚ÄúWeb_K_Terra‚ÄĚ {<br /> subscription_id = &#8220;gxxxxxxx-db34-4gi7-xxxxx-9k31xxxxxxxxxp2&#8221;<br /> client_id = &#8220;d76683b5-9848-4d7b-xxxx-xxxxxxxxxxxx&#8221;<br /> client_secret = &#8220;trKgvXxxxxxXXXXxxxXXXXfNOc8gipHf-xxxxxxXXx=&#8221;<br /> tenant_id = &#8220;xxxxxxxx-9706-xxxx-a13a-4a8363bxxxxx&#8221;</p> <p>}</p> <p>This is a great start to getting us out on Azure, in part II, we&#8217;ll talk about setting up connectivity between your desktop and Azure for remote access and recommendations for tools to access it locally.</p> <p>&nbsp;</p> <!-- Easy Plugin for AdSense Unfiltered [count: 3 is not less than 3] --></div><br><br><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/ico-tag.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> Tags:&nbsp;&nbsp;<a href="http://dbakevlar.com/tag/azure/" rel="tag">azure</a>, <a href="http://dbakevlar.com/tag/cloud/" rel="tag">Cloud</a>, <a href="http://dbakevlar.com/tag/delphix/" rel="tag">Delphix</a><br><br><div style="width:100%"><table align="left" width="100%" cellspacing="0" cellpadding="0" bgcolor="#f1f1f1" border="0px;"> <tbody> <tr bgcolor="#ffffff"><td align="center" width="17%" valign="top"> <span class="sb_title">Del.icio.us</span><br> <a href="http://del.icio.us/post?url=http://dbakevlar.com/2017/03/preparing-azureenvironment-part/&title=Preparing an AzureEnvironment- Part I"> <img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/delicious.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"> </a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Facebook</span><br> <a href="http://www.facebook.com/share.php?u=http://dbakevlar.com/2017/03/preparing-azureenvironment-part/"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/facebook_icon.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">TweetThis</span><br> <a href="http://twitthis.com/twit?url=http://dbakevlar.com/2017/03/preparing-azureenvironment-part/&title=Preparing an AzureEnvironment- Part I"><img src="https://i2.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tweet.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">Digg</span><br> <a href="http://digg.com/submit?phase=2&url=http://dbakevlar.com/2017/03/preparing-azureenvironment-part/&title=Preparing an AzureEnvironment- Part I"><img src="https://i0.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/digg.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td><td align="center" width="17%" valign="top"> <span class="sb_title">StumbleUpon</span><br> <a href="http://www.stumbleupon.com/submit?url=http://dbakevlar.com/2017/03/preparing-azureenvironment-part/&title=Preparing an AzureEnvironment- Part I"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/stumble.gif?w=600" border="0" align="absmiddle" data-recalc-dims="1"></a> </td></tr> </tbody></table></div><br><div style="clear:both"></div><div style="background:#EEEEEE; padding:0px 0px 0px 15px; margin:10px 0px 0px 0px;"><div style="padding:5px 0px 5px 0px;"><b>Comments:</b>&nbsp;&nbsp;<a href="http://dbakevlar.com/2017/03/preparing-azureenvironment-part/#respond">0 (Zero), Be the first to leave a reply!</a></div><br><div style="clear:both"></div><div style="padding:13px 0px 5px 0px;"><span style="border-bottom:1px dashed #003399;padding-bottom:4px;"><strong>You might be interested in this:</strong></span>&nbsp;&nbsp;<br><ul style="margin:0; padding:0; padding-top:10px; padding-bottom:5px;"><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2017/02/aws-quirks-fake-news-delphix-admin-console/" >AWS Quirks and Fake News to the Delphix Admin Console</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2014/12/em12c-and-the-optimizer-statistics-console/" >EM12c and the Optimizer Statistics Console</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/bakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2015/01/why-automate-target-patching-with-enterprise-manager-12c/" >Why Automate Target Patching with Enterprise Manager 12c</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2013/06/kscope-2013/" >KSCOPE 2013!</a></li><li style="list-style-type: none;"><img src="https://i1.wp.com/dbakevlar.com/wp-content/plugins/readers-from-rss-2-blog/wpsmartapps-lic/images/tick.png?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2017/03/manually-adding-sales-history-sh-schema-11-2-0-4/" >Manually Adding Sales History, (SH) Schema to 11.2.0.4</a></li></ul></div></div><hr style="color:#EBEBEB" /><small>Copyright ¬©¬†<a href="http://dbakevlar.com">DBA Kevlar</a> [<a href="http://dbakevlar.com/2017/03/preparing-azureenvironment-part/">Preparing an AzureEnvironment- Part I</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/03/preparing-azureenvironment-part/">Preparing an AzureEnvironment- Part I</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6504 Thu Mar 30 2017 11:44:06 GMT-0400 (EDT) Oracle Applications User Experience (OAUX) : Social Media Channels https://oracle-base.com/blog/2017/03/30/oracle-applications-user-experience-oaux-social-media-channels/ <p><a href="http://www.oracle.com/webfolder/ux/applications/index.html"><img class="alignnone size-full wp-image-7052" src="https://oracle-base.com/blog/wp-content/uploads/2017/03/oaux.png" alt="" width="647" height="173" /></a></p> <p>If you are interested in User Experience (UX), you can keep up with the latest news on these new channels from the Oracle Applications User Experience (OAUX) team.</p> <ul> <li><a href="https://www.facebook.com/oauxcloud">OAUX Facebook page</a></li> <li><a href="https://twitter.com/oauxcloud">OAUX on Twitter</a></li> </ul> <p>Of course, you can still keep up to date with¬†information from the <a href="http://www.oracle.com/webfolder/ux/applications/index.html">Usable Apps</a> website.</p> <p>Happy UXing&#8230; <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/03/30/oracle-applications-user-experience-oaux-social-media-channels/">Oracle Applications User Experience (OAUX) : Social Media Channels</a> was first posted on March 30, 2017 at 12:44 pm.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /> Tim... https://oracle-base.com/blog/?p=7051 Thu Mar 30 2017 07:44:36 GMT-0400 (EDT) Adding Indexes https://jonathanlewis.wordpress.com/2017/03/30/adding-indexes/ <p>The following <a href="http://community.oracle.com/message/14196159"><em><strong>question came up on the OTN database forum</strong></em></a> recently:</p> <p><i><i><br /> We have below table with columns,</i></i></p> <pre class="brush: plain; title: ; notranslate"> Table T1 Columns: ----------- Col_1, Col_2, Col_3, Col_4, Col_5, Col_6, Col_7, Col_8, Col_9, Col_10, Col_11, Col_12, Col_13, Col_14, Col_15 </pre> <p><em>on which below indexes are created.</em></p> <pre class="brush: plain; title: ; notranslate"> XXTEST_Col_1 Col_1 XXTEST_Col_2 Col_2 XXTEST_Col_3 Col_3 XXTEST_Col_5 Col_5 XXTEST_Col_6 Col_6 XXTEST_Col_7 Col_7 XXTEST_Col_8 Col_8 XXTEST_Col_8 (Col_4, Col_10, Col_11) </pre> <p><em>I have requirement to update table T1 as below and it&#8217;s taking really long. [JPL: I&#8217;m assuming that the naming of the second xxtest_col_8 index is a trivial error introduced while the OP was concealing names.)<br /> </em></p> <pre class="brush: plain; title: ; notranslate"> UPDATE T1 SET Col_3 = x_value, Col_6 = y_value where Col_4='N' and Col_3 IS NULL; </pre> <p><em>To improve performance, created below index and it improved the performance of the update.</em></p> <pre class="brush: plain; title: ; notranslate"> New Index: XXTEST_Col_4 (Col_4, Col_3) </pre> <p><em>My question is it good idea to create the above index with already existing indexes? Is there any other better way to handle this?<br /> </em></p> <p>There is insufficient information to answer these questions properly but if I had been given this problem there are several things I&#8217;d want to check before I came up with any answers. (In the absence of complete information the default answers are &#8220;probably not&#8221;, &#8220;probably&#8221;).</p> <h3>What Happened</h3> <p>The first question, of course, is <em>&#8220;why did the update take a really long time?&#8221;</em>, and the second is <em>&#8220;why did the performance improve after the index creation?&#8221;</em>.</p> <p>There are (generally) two execution paths for the update &#8211; full tablescan or index access through the index starting with <em><strong>col_4</strong></em>. Whichever path Oracle took would the update have been faster (and fast enough) if the alternative path had been taken ?¬† (I have to include the &#8220;generally&#8221; caveat since it&#8217;s just possible that with silly settings for a couple of parameters and statistics the optimizer could have been doing an amazingly stupid <em>&#8220;index full scan&#8221;</em> on any index that contained a column declared as <em><strong>not null</strong></em>.)</p> <p>Then consider the fact that the update is changing two columns that are indexed &#8211; and one of those columns (<em><strong>col_3</strong></em>) is changing from null to a value, so it&#8217;s going to increase the size of the index. Is the slow performance due to the time spent maintaining the indexes, and is the improved performance due to the fact that there are no rows left to update because the first run of the test updated all of them ?</p> <p>It does seem reasonably likely that Oracle would use the new index for the update and that the better precision would be the cause of the improved performance; but a side effect of the index creation is that Oracle would now have some statistics about the combination of (<em><strong>col_4, col_3</strong></em>) that wasn&#8217;t previously available. Perhaps gathering stats on the column group (<em><strong>col_4, col_3</strong></em>) would have been sufficient to result in a change in execution path that would have given the required performance without introducing the extra¬† maintenance costs.</p> <h3>What&#8217;s the requirement</h3> <p>Before deciding whether or not an index should be used to improve the performance of a statement it&#8217;s important to have some idea of the cost/benefit/risk analysis. This often boils down to &#8220;how much data should change, how often does it happen, what could possibly go wrong&#8221;.</p> <p>As far as &#8220;what could possibly go wrong&#8221; &#8211; by adding the index (col_4, col_3) we introduce 4 groups of risk:</p> <ul> <li>any SQL currently using the col_3 index might change plans</li> <li>any SQL currently using the (col_4, col_10, col_11) index might change plans</li> <li>any query that has a predicate <em>&#8220;col_3 is null&#8221;</em> might change plans because that predicate could be resolved in the index if <em><strong>col_4</strong></em> had been declared not null,</li> <li>any query with equality predicates on both col_3 and col_4 might change plans because the new index supplies some statistics about the combination</li> </ul> <p>We don&#8217;t have enough information to evaluate the degree of risk &#8211; and we haven&#8217;t been given any figures about the volume of data that changes or the frequency with which the update runs, so we can&#8217;t really say much beyond raising the warning flags.</p> <h3>What does the data look like.</h3> <p>Despite my closing comment above, we have two little clues about the data. First is that one of the predicates is col_4 = &#8216;N&#8217; &#8211; to me this always raises the suspicion that we&#8217;re looking at a column which is a Yes/No, or Yes/No/NULL column; secondly the OP has marked the following response as &#8220;Correct Answer&#8221;:</p> <p><em>Depends on your data.</em><br /> <em>Check count of both queries</em></p> <pre class="brush: plain; title: ; notranslate"> select count(*) from T1 where Col_4='N' and Col_3 IS NULL; select count(*) from T1 where Col_4='N'; </pre> <p><em>If there is a significant difference in count, and delete is executed frequently, it might be good to have</em></p> <p>If we assume that this means (a) there is a significant difference in the counts and (b) the delete IS executed frequently then we we have some (though not really enough) useful information about what the data looks like and how it is handled. Perhaps over a short period of time a small volume of new data appears where col_3 is null and there is a scheduled mechanism that looks for that data and modifies it.</p> <p>If that&#8217;s the case then an index that gives use high precision when we&#8217;re searching for a (very) small amount of data from a very large table would be very helpful, while an index that starts with the first of our search columns (col_4 is the leading column of an existing index) might actually be a liability if we do a large range scan, visit the table for lots of rows, and then discard them because they fail our second predicate.</p> <p>However, if this IS the case then it&#8217;s not a good idea to create a large index that is constantly subject to change &#8211; especially if the update from NULL to something else results in updates that scatter the <em><strong>col_3</strong></em> values randomly around the index. (The NULL rows will be well packed in the index, and may be in a small collection of recent table blocks; but the update will delete one index entry and we have no idea about the impact that inserting the replacement could have.) So, if we&#8217;re also allowed to modify the code, let&#8217;s create an index that is as small as possible, won&#8217;t be used accidentally by any other code, and minimises the workload when updated. Here&#8217;s the code to create the index and one option for gathering stats on the resulting hidden column, and the modified update code:</p> <pre class="brush: plain; title: ; notranslate"> create index xxtext_fbi1 on t1( case when col_4='N' and col_3 is null then 0 end ) ; begin dbms_stats.gather_table_stats( user, 't1', method_opt=&gt;'for columns (case when col_4=''N'' and col_3 is null then 0 end) size 1' ); end; / update t1 set col_3 = {x_value}, col_6 = {y_value} where case when col_4='N' and col_3 is null then 0 end = 0 ; </pre> <p>This index will contain entries for just those rows that we need to update, and when we update them the index entries will simply disappear. The index is the smallest that we could have, with the minimum workload imposed, and no risk of being hi-jacked by any other process.</p> <p>As a variation on a theme, and depending on version, we could create a virtual column with this definition (making it invisible in 12c) and creating an index on the virtual column. For preference I think I&#8217;d use the FBI in 11g, and the invisible virtual column in 12c.</p> <pre class="brush: plain; title: ; notranslate"> alter table t1 add ( wanted_flag invisible generated always as ( case when col_4='N' and col_3 is null then 0 end ) virtual ) ; begin dbms_stats.gather_table_stats( user, 't1', method_opt=&gt;'for columns wanted_flag size 1' ); end; / create index xxtest_virt1 on t1(wanted_flag); update t1 set col_3 = {x_value}, col_6 = {y_value} where wanted_flag = 0 ; </pre> <p>The thread raised a couple of other worthwhile points &#8211; one post pointed out that if they were going to create a new index they would want to make it as useful for as many other processes as possible: this, of course, is a different view on the cost/benefit/risk assessment, especially (I would say) if there is no option to create a very small, low-cost, index that is guaranteeably safe. The point also came up that there are two or three variations on how one could produce an expression that produced index entries only for the rows where col_4 = &#8216;N&#8217; and col_3 is null; and a point about further possibilities if there were a few different values for col_4 that resulted in similar queries.</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16909/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16909/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16909&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16909 Thu Mar 30 2017 03:31:28 GMT-0400 (EDT) Oracle Database 12c Release 2 New Feature ‚Äď Application Containers http://gavinsoorma.com/2017/03/oracle-database-12c-release-2-new-feature-application-containers/ <p>One of the new multitenancy related features in Oracle 12c Release 2 is <strong>Application Containers</strong>.</p> <p>In 12c Release 1, we could have a Container database (CDB) host a number of optional pluggable databases or PDBs. Now in 12.2.0.1, the multitenancy feature has been enhanced further and we can now have not only CDBs and PDBs but also have another component called an Application Container which in essence is a hybrid of a CDB and a PDB.</p> <p>So now in 12.2.0.1, a CDB can contain (optionally) user created Application Containers and then Application Containers can in turn host one or more PDBs.</p> <p>For example, an Application Container can contain a number of PDBs which contain individual sales data of different regions, but at the same time can share what are called common objects.</p> <p>Maybe each region&#8217;s PDB has data just for that region, but the table structure is the same regardless of the region. In that case the table definition (or metadata) is stored in the application container accessible to all the PDBs hosted by that application container. If any changes are required to be made for application tables, then that DDL change need only be made once in the central application container and that change will then be visible to all the PDBs hosted by that application container.</p> <p>Or there are some tables which are common to all the PDBs &#8211; some kind of master data maybe. And rather than have to store this common data in each individual PDB (as was the case in 12.1.0.2), we just store it once in a central location which is the application container and then that data is visible to all the hosted PDBs.</p> <p>In other words, <strong>an application container functions as an application specific CDB within a CDB</strong>.</p> <p>Think of a Software as a Service (SaaS) deployment model where we are hosting a number of customers and each customer has its own individual data which needs to be stored securely in a separate database but at the same time we need to share some metadata or data which is common to all the customers.</p> <p>Let&#8217;s have a look a simple example of 12c Release 2 Application Containers at work.</p> <p>The basic steps are:</p> <ul> <li>Create the Application Container</li> <li>Create the Pluggable Databases</li> <li>Install the Application</li> <li>After installing the application, synchronize the pluggable databases with the application container root so that any changes in terms of DDL or DML made by the application are now visible to all hosted pluggable databases</li> <li>Optionally upgrade or deinstall the application </li> </ul> <p>&nbsp;</p> <p><strong>Create</strong> the <strong>Application Container</strong><br /> &nbsp;</p> <pre>SQL&gt; CREATE PLUGGABLE DATABASE appcon1 AS APPLICATION CONTAINER ADMIN USER appadm IDENTIFIED BY oracle FILE_NAME_CONVERT=('/u03/app/oradata/cdb1/pdbseed/','/u03/app/oradata/cdb1/appcon1/');¬† Pluggable database created. </pre> <p>&nbsp;<br /> <strong>Create the Pluggable Databases</strong> which are to be hosted by the Application Container by connecting to the application container root<br /> &nbsp;</p> <pre> SQL&gt; alter session set container=appcon1; &nbsp; Session altered. &nbsp; SQL&gt; alter pluggable database open; &nbsp; Pluggable database altered. &nbsp; SQL&gt; CREATE PLUGGABLE DATABASE pdbhr1 ADMIN USER pdbhr1_adm IDENTIFIED BY oracle FILE_NAME_CONVERT=('/u03/app/oradata/cdb1/pdbseed/','/u03/app/oradata/cdb1/appcon1/pdbhr1/'); &nbsp; Pluggable database created. &nbsp; SQL&gt; SQL&gt; CREATE PLUGGABLE DATABASE pdbhr2 ADMIN USER pdbhr2_adm IDENTIFIED BY oracle FILE_NAME_CONVERT=('/u03/app/oradata/cdb1/pdbseed/','/u03/app/oradata/cdb1/appcon1/pdbhr2/'); &nbsp; Pluggable database created. &nbsp; SQL&gt; SQL&gt; alter pluggable database all open; &nbsp; Pluggable database altered. </pre> <p>&nbsp;</p> <p><strong>Install </strong>the application<br /> &nbsp;<br /> In the first example we will be seeing how some common data is being shared among all the pluggable databases. Note the keyword <strong>SHARING=DATA</strong>.<br /> &nbsp;</p> <pre> SQL&gt; alter pluggable database application region_app begin install '1.0'; &nbsp; Pluggable database altered. &nbsp; SQL&gt; create user app_owner identified by oracle; &nbsp; User created. &nbsp; SQL&gt; grant connect,resource,unlimited tablespace to app_Owner; &nbsp; Grant succeeded. &nbsp; SQL&gt; create table app_owner.regions 2¬† sharing=data 3¬† (region_id number, region_name varchar2(20)); &nbsp; Table created. &nbsp; SQL&gt; insert into app_owner.regions 2¬† values (1,'North'); &nbsp; 1 row created. &nbsp; SQL&gt; insert into app_owner.regions 2¬† values (2,'South'); &nbsp; 1 row created. &nbsp; SQL&gt; commit; &nbsp; Commit complete. &nbsp; SQL&gt; alter pluggable database application region_app end install '1.0'; &nbsp; Pluggable database altered. </pre> <p>&nbsp;</p> <p><strong>View </strong>information about Application Containers via the <strong>DBA_APPLICATIONS</strong> view</p> <p>&nbsp;</p> <pre>SQL&gt; select app_name,app_status from dba_applications; APP_NAME -------------------------------------------------------------------------------- APP_STATUS ------------ APP$4BDAAF8836A20F9CE053650AA8C0AF21 NORMAL REGION_APP NORMAL </pre> <p><strong>Synchronize</strong> the pluggable databases with the application root<br /> &nbsp;<br /> Note that until this is done, changes made by the application install are not visible to the hosted PDBs.<br /> &nbsp;</p> <pre> SQL> alter session set container=pdbhr1; Session altered. SQL> select * from app_owner.regions; select * from app_owner.regions * ERROR at line 1: ORA-00942: table or view does not exist SQL> alter pluggable database application region_app sync; Pluggable database altered. SQL> select * from app_owner.regions; REGION_ID REGION_NAME ---------- -------------------- 1 North 2 South SQL> alter session set container=pdbhr2; Session altered. SQL> alter pluggable database application region_app sync; Pluggable database altered. SQL> select * from app_owner.regions; REGION_ID REGION_NAME ---------- -------------------- 1 North 2 South </pre> <p>&nbsp;</p> <p>Note that any direct DDL or DML is not permitted in this case<br /> &nbsp;</p> <pre> SQL> drop table app_owner.regions; drop table app_owner.regions * ERROR at line 1: ORA-65274: operation not allowed from outside an application action SQL> insert into app_owner.regions values (3,'East'); insert into app_owner.regions values (3,'East') * ERROR at line 1: ORA-65097: DML into a data link table is outside an application action </pre> <p>Let us now <strong>upgrade the application</strong> we just created and create the same application table, but this time with the keyword <strong>SHARING=METADATA</strong><br /> &nbsp;</p> <pre> SQL> alter pluggable database application region_app begin upgrade '1.0' to '1.1'; Pluggable database altered. SQL> select app_name,app_status from dba_applications; APP_NAME -------------------------------------------------------------------------------- APP_STATUS ------------ APP$4BDAAF8836A20F9CE053650AA8C0AF21 NORMAL REGION_APP UPGRADING SQL> drop table app_owner.regions; Table dropped. SQL> create table app_owner.regions 2 sharing=metadata 3 (region_id number,region_name varchar2(20)); Table created. SQL> alter pluggable database application region_app end upgrade; Pluggable database altered. </pre> <p>&nbsp;<br /> We can now see that the table definition is the same in both the PDBs, but each PDB can now insert its own individual data in the table.<br /> &nbsp;</p> <pre> SQL> alter session set container=pdbhr1; Session altered. SQL> alter pluggable database application region_app sync; Pluggable database altered. SQL> desc app_owner.regions Name Null? Type ----------------------------------------- -------- ---------------------------- REGION_ID NUMBER REGION_NAME VARCHAR2(20) SQL> insert into app_owner.regions 2 values (1,'North'); 1 row created. SQL> insert into app_owner.regions 2 values (2,'North-East'); 1 row created. SQL> commit; Commit complete. SQL> select * from app_owner.regions; REGION_ID REGION_NAME ---------- -------------------- 1 North 2 North-East SQL> alter session set container=pdbhr2; Session altered. SQL> alter pluggable database application region_app sync; Pluggable database altered. SQL> desc app_owner.regions Name Null? Type ----------------------------------------- -------- ---------------------------- REGION_ID NUMBER REGION_NAME VARCHAR2(20) SQL> select * from app_owner.regions; no rows selected SQL> insert into app_owner.regions 2 values (1,'South'); 1 row created. SQL> insert into app_owner.regions 2 values (2,'South-East'); 1 row created. SQL> commit; Commit complete. SQL> select * from app_owner.regions; REGION_ID REGION_NAME ---------- -------------------- 1 South 2 South-East </pre> <p>&nbsp;<br /> While DML activity was permitted in this case, still any DDL activity is not permitted.<br /> &nbsp;</p> <pre> SQL> drop table app_owner.regions; drop table app_owner.regions * ERROR at line 1: ORA-65274: operation not allowed from outside an application action SQL> alter table app_owner.regions 2 add (region_location varchar2(10)); alter table app_owner.regions * ERROR at line 1: ORA-65274: operation not allowed from outside an application action </pre> <p>&nbsp;<br /> We will now perform another upgrade to the application and this time note the keyword <strong>SHARING=EXTENDED DATA</strong>. In this case while some portion of the data is common and shared among all the PDBs, the individual PDBs can still have the flexibility to have additional data specific to that PDB stored in the table along with the common data which is the same for all the PDBs.<br /> &nbsp;</p> <pre> SQL> alter session set container=appcon1; Session altered. SQL> alter pluggable database application region_app begin upgrade '1.1' to '1.2'; Pluggable database altered. SQL> drop table app_owner.regions; Table dropped. SQL> create table app_owner.regions 2 sharing=extended data 3 (region_id number,region_name varchar2(20)); Table created. SQL> insert into app_owner.regions 2 values (1,'North'); 1 row created. SQL> commit; Commit complete. SQL> alter pluggable database application region_app end upgrade; Pluggable database altered. </pre> <p>&nbsp;<br /> Note that the PDBs share some common data, but individual PDB can insert its own data.<br /> &nbsp;</p> <pre> SQL> alter session set container=pdbhr1; Session altered. SQL> alter pluggable database application region_app sync; Pluggable database altered. SQL> select * from app_owner.regions; REGION_ID REGION_NAME ---------- -------------------- 1 North SQL> insert into app_owner.regions 2 values 3 (2,'North-West'); 1 row created. SQL> commit; Commit complete. SQL> select * from app_owner.regions; REGION_ID REGION_NAME ---------- -------------------- 1 North 2 North-West SQL> alter session set container=pdbhr2; Session altered. SQL> select * from app_owner.regions; REGION_ID REGION_NAME ---------- -------------------- 1 South 2 South-East SQL> alter pluggable database application region_app sync; Pluggable database altered. SQL> select * from app_owner.regions; REGION_ID REGION_NAME ---------- -------------------- 1 North </pre> Gavin Soorma http://gavinsoorma.com/?p=7489 Wed Mar 29 2017 23:23:22 GMT-0400 (EDT) JDev/ADF sample - Oracle JET Slider in Foreach Loop http://andrejusb-samples.blogspot.com/2017/03/jdevadf-sample-oracle-jet-slider-in.html <div dir="ltr" style="text-align: left;" trbidi="on"><ul><li><a href="http://andrejusb.blogspot.lt/2017/03/oracle-jet-slider-in-foreach-loop.html" target="_blank">Oracle JET Slider in Foreach Loop</a>. While working in the project last week, I had a question from development team - how to render multiple Oracle JET Slider components in foreach loop. I thought this could be useful tip for other developers too.</li></ul><ol>Download - <a href="https://github.com/abaranovskis-redsamurai/JETSliderSample.git" target="_blank">JETSliderSample</a></ol></div> Andrejus Baranovskis tag:blogger.com,1999:blog-4301764760924839143.post-4835322630294264047 Wed Mar 29 2017 15:01:00 GMT-0400 (EDT) Oracle BPM: Time for Time Out (2) http://kettenisblogs.blogspot.com/2017/03/oracle-bpm-time-for-time-out-2.html <div dir="ltr" style="text-align: left;" trbidi="on"><i>In a <a href="http://kettenisblogs.blogspot.se/2017/03/oracle-bpm-time-for-time-out.html">previous blog posting</a> I discussed a solution to re-initiate a scope in BPMN that is supposed to time out after some time. In this posting I discuss how that solution inspires a couple of other use cases where a time out has to be re-initiated by calling an operation on the process.</i><br /><br />In the following process model there are three flow, for three different use cases to re-initiate the time-out of:<br /><br /><ol style="text-align: left;"><li>A process instance (top flow),</li><li>An (asynchronous) Receive activity (middle flow),</li><li>A User activity (bottom flow).</li></ol><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-6mzM2KWU59g/WNvhdpqtIxI/AAAAAAAAA74/g-8cHHPCyks6VNW-AQSZdZrR8rOjT9S6ACLcB/s1600/reinitiateTimer01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="317" src="https://1.bp.blogspot.com/-6mzM2KWU59g/WNvhdpqtIxI/AAAAAAAAA74/g-8cHHPCyks6VNW-AQSZdZrR8rOjT9S6ACLcB/s320/reinitiateTimer01.png" width="320" /></a></div><br /><br /><h4 style="text-align: left;"><span style="color: blue;">Re-initiate Timer for Process Instance</span></h4>The trick here is to use an Event Based gateway that either fires when the time-ut occurs, or responds to the call to the re-initiation operation (<i>Reinitiate Requested</i> in the picture) which passes on a new duration. The <i>Timeout Event</i>&nbsp;Gateway is started again, whereby the the new duration is used to (re)schedule the <i>Time Out</i> timer. The <i>reinitiate</i>&nbsp;Gateway is necessary to loop back, and is the default. The condition of the <i>no</i>&nbsp;flow is "false".<br /><br />The following picture shows the flow when that happens.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-C93iYewzt44/WNvz1oYrUxI/AAAAAAAAA8I/PbUivAd_DVspGTsu9EfEjxU7CSEwVFE-QCLcB/s1600/reinitiateTimer02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="86" src="https://1.bp.blogspot.com/-C93iYewzt44/WNvz1oYrUxI/AAAAAAAAA8I/PbUivAd_DVspGTsu9EfEjxU7CSEwVFE-QCLcB/s400/reinitiateTimer02.png" width="400" /></a></div><br /><h4 style="text-align: left;"><span style="color: blue;">Re-initiate Timer for Receive Activity</span></h4>The re-initiation of the Receive activity happens through a Boundary Message event. The <i>dummy</i>&nbsp;Gateway does not do anything but is necessary to loop back to. The Receive is then rescheduled with a timer that has a new duration as passed on through the call.<br /><br />The following picture shows the flow when that happens.<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-iNAXafOU0Og/WNvz83gJK7I/AAAAAAAAA8M/577Yi-dxvHIpA__PxiqMSgllJsmU_IY9wCLcB/s1600/reinitiateTimer03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="100" src="https://3.bp.blogspot.com/-iNAXafOU0Og/WNvz83gJK7I/AAAAAAAAA8M/577Yi-dxvHIpA__PxiqMSgllJsmU_IY9wCLcB/s400/reinitiateTimer03.png" width="400" /></a></div><br /><h4 style="text-align: left;"><span style="color: blue;">Re-initiate Timer for a User Activity</span></h4>In the previous two examples, the timer is completely (re)scheduled with the passed-on duration. In the bottom example the time-out of the User activity happens by setting the expiration on the Human Task. This is the recommended way as it will make the expiration visible in Workspace, and make sure the Human Workflow Engine properly cleans up the Human Task (which was not always the case in previous releases of the Oracle BPM Suite).<br /><br />What happens in this scenario is that the expiry is actually not re-initiated but instead paused for a while using an Update activity with operation "Suspend Timers", then wait, and then continue the timer using an Update activity with operation "Resume Timers". This construction allows usage of an (non-interrupting) Event Subprocess, which has the advantage that it does not clutter the rest of the process model, you keep the same Human Task instance (with the same taskId) plus, if you have multiple Human Tasks at the same time, you can also use this construction to suspend other user activities as well.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-IYe158bJEp0/WNv0E4H1X0I/AAAAAAAAA8Q/V0YmmdU4CvMUv86E2RPHN5zllDnBsFRjACLcB/s1600/reinitiateTimer04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="156" src="https://3.bp.blogspot.com/-IYe158bJEp0/WNv0E4H1X0I/AAAAAAAAA8Q/V0YmmdU4CvMUv86E2RPHN5zllDnBsFRjACLcB/s320/reinitiateTimer04.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-in7HKTceSPo/WNv0EwfGYVI/AAAAAAAAA8U/7RRj79ZCq48w3U6jbI5ZszMD0VLZ_wJVQCLcB/s1600/reinitiateTimer05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="158" src="https://3.bp.blogspot.com/-in7HKTceSPo/WNv0EwfGYVI/AAAAAAAAA8U/7RRj79ZCq48w3U6jbI5ZszMD0VLZ_wJVQCLcB/s320/reinitiateTimer05.png" width="320" /></a></div><br /><br />The following picture shows the flow when that happens.<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-WPfjLXYODnw/WNv0Kr-i9sI/AAAAAAAAA8Y/9CZaN6kMeGAKu73VDtRtqR0GUgvnmEwdQCLcB/s1600/reinitiateTimer06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="95" src="https://3.bp.blogspot.com/-WPfjLXYODnw/WNv0Kr-i9sI/AAAAAAAAA8Y/9CZaN6kMeGAKu73VDtRtqR0GUgvnmEwdQCLcB/s400/reinitiateTimer06.png" width="400" /></a></div><br />If you want to re-initiate the timer in a similar way as in the previous two use cases, then you can use the second solution with a Boundary Timer event and a Boundary Message event. The result will be that the Human Task is actually aborted (as said not in some older 11g versions), and then a new instance is created (with a new taskId!). Depending on your process model you can also put the User activity in a scope of its own, and re-initiate the timer of that as described in the <a href="http://kettenisblogs.blogspot.se/2017/03/oracle-bpm-time-for-time-out.html">previous posting</a> on this topic.</div> Jan Kettenis tag:blogger.com,1999:blog-33270406.post-1262780534763996252 Wed Mar 29 2017 13:53:00 GMT-0400 (EDT) Development and Runtime Experiences with a Canonical Data Model Part I: Standards & Guidelines https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part1/ <h2>Introduction</h2> <p>In <a href="https://technology.amis.nl/2016/08/08/soa-benefits-of-a-canonical-data-model/">my previous blog</a> I&#8217;ve explained what a <a href="https://en.wikipedia.org/wiki/Canonical_model">Canonical Data Model</a> (CDM) is and why you should use it. This blog is about how to do this. I will share my experiences on how to create and use a CDM. I gained these experiences at several projects, small ones, and large ones. All of these experiences were related to an XML based CDM. This blog consists of three parts. This blogpost contains part I: Standards &amp; Guidelines. The <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part2/">next blogpost</a>, part two, is about XML Namespace Standards and the <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part3/">last blogpost</a> contains part three about Dependency Management &amp; Interface Tailoring.<br /> This first part, about standards and naming conventions, primarily apply to XML, but the same principles and ideas will mostly apply to other formats, like JSON, as well. The second part about XML namespace standards only is, as it already indicates, applicable to an XML format CDM. The last part, in the third blogpost, about dependency management &#038; interface tailoring entirely, applies to all kind of data formats. <span id="more-41822"></span></p> <h2>Developing a CDM</h2> <p>About the way of creating a CDM. It&#8217;s not doable to create a complete CDM upfront and only then start designing services and developing them. This is because you only can determine usage of data, completeness and quality while developing the services and gaining experience in using them. A CDM is a &#8216;living&#8217; model and will change in time.<br /> When the software modules (systems or data stores) which are to be connected by the integration layer are being developed together, the CDM will change very often. While developing software you always encounter shortcomings in the design, unseen functional flaws, unexpected requirements or restrictions and changes in design because of new insights or changed functionality. So sometimes the CDM will even change on a daily base. This perfectly fits into the modern Agile Software Development methodologies, like Scrum, where changes are welcome.<br /> When the development stage is finished and the integration layer (SOA environment) is in a maintenance stage, the CDM still will change, but at a much slower pace. It will keep on changing because of maintenance changes and modifications of connected systems or trading partners. Changes and modifications due to new functionality also causes new data entities and structures which have to be added to the CDM. These changes and modifications occur because business processes change in time, caused by a changing world, ranging from technical innovations to social behavioral changes.<br /> In either way, the CDM will never be ready and reach a final changeless state, so a CDM should be flexible and created in such a way that it welcomes changes.</p> <p>When you start creating a CDM, it&#8217;s wise to define standards and guidelines about defining the CDM and using it beforehand. Make a person (or group of persons in a large project), responsible for developing and defining the CDM. This means he defines the data definitions and structures of the CDM. When using XML this person is responsible for creating and maintaining the XML schema definition (XSD) files which represent the CDM. He develops the CDM based on requests from developers and designers. He must be able to understand the need of the developers, but he should also keep the model consistent, flexible and future proof. This means he must have experience in data modeling and the data format (e.g. XML or JSON) and specification language (e.g. XSD) being used. Of course, he also guards the standards and guidelines which has been set. He also is able, when needed, to deny requests for a CDM change from (senior) developers and designers in order to preserve a well-defined CDM and provide an alternative which meets their needs as well.</p> <h2>Standards &amp; Guidelines</h2> <p>There are more or less three types of standards and guidelines when defining an XML data model:</p> <ul> <li>Naming Conventions</li> <li>Structure Standards</li> <li>Namespace Standards</li> </ul> <h3>Naming Conventions</h3> <p>The most important advice is that you define naming conventions upfront and stick to them. Like all the naming convention in programming languages, there are a lot of options and often it&#8217;s a matter of personal preference. Changing conventions because of different personal preferences it not a good idea. Mixed conventions results in ugly code. Nevertheless I do have some recommendations. </p> <p><b>Nodes versus types</b><br /> The first one is to make a distinction between the name of a node (element or attribute) and an XML type. I&#8217;ve been in a project where the standard was to give them exactly the same name. In XML this is possible! But the drawback was that there were connecting systems and programming languages which couldn&#8217;t handle this! For example the standard Java library for XML parsing, JAX-P, had an issue with this. The Java code which was generated under the hood used the name of an XML type for a Java class name and the name of an element as a Java variable name. In Java it is not possible to use an identical name for both. In that specific project, this had to be fixed manually in the generated Java source code. That is not what you want! It can easily be avoided by using different names for types and elements.</p> <p><b>Specific name for types</b><br /> A second recommendation, which complements the advice above, is to use a specific naming convention for XML types, so their names always differ from node names. The advantage for developers is that they can recognize from the name if something is an XML node or an XML type. This eases XML development and makes the software code easier to read and understand and thus to maintain.<br /> Often I&#8217;ve seen the naming convention, which tries to implements this, by prescribing that the name of an XML type should be suffixed with the token &#8220;Type&#8221;. I personally do not like this specific naming convention. Consider you have a &#8220;Person&#8221; entity and so you end up with an XML type named &#8220;PersonType&#8221;. This perfectly makes sense, doesn&#8217;t it? But how about a &#8220;Document&#8221; entity? You end up with an XML type named &#8220;DocumentType&#8221; and guess what: there is also going to be a &#8220;DocumentType&#8221; entity resulting in an XML type named &#8220;DocumentTypeType&#8221;&#8230;!? Very confusing in the first place. Secondly, you end up with an element and an XML type with the same name! The name &#8220;DocumentType&#8221; is used as a name for an element (of type &#8220;DocumentTypeType&#8221;) and &#8220;DocumentType&#8221; is used as an XML type (of an element named &#8220;Document&#8221;).<br /> From experience I can tell you there are more entities with a name that ends with &#8220;Type&#8221; than you would expect!<br /> My advice is to prefix an XML type with the character &#8220;t&#8221;. This not only prevents this problem, but it&#8217;s also shorter. Additionally you can distinguish an XML node from an XML type by the start of its name. This naming convention results into element names like &#8220;Person&#8221;, &#8220;Document&#8221; and &#8220;DocumentType&#8221; versus type names &#8220;tPerson&#8221;, &#8220;tDocument&#8221; and &#8220;tDocumentType&#8221;. </p> <p><b>Use CamelCase &#8211; not_underscores</b><br /> The third recommendation is to use Camel Case for names instead of using underscores as separator between the words which make up a name of a node or type. This shortens a name and still the name can be read easily. I&#8217;ve got a slight preference to start a name with an uppercase character, because then I can use camel Case beginning with a lowercase character for local variables in logic or translations (BPEL, xslt, etc) in the integration layer or tooling. This results in a node named &#8220;DocumentType&#8221; of type &#8220;tDocumentType&#8221; and when used in a local variable in code, this variable is named &#8220;documentType&#8221;.</p> <h3>Structure Standards</h3> <p>I also have some recommendations about standards which apply to the XML structure of the CDM. </p> <p><b>Use elements only</b><br /> The first one is to never use attributes, so only elements. You can never expand an attribute and create child elements in it. This may not be necessary at the moment, but may be necessary sometime in the future. Also an attribute cannot have the &#8216;null&#8217; value in contrast with an element. You can argue that an empty value can represent the null value. But this is only possible with String type attributes (otherwise it&#8217;s considered as invalid XML when validating against its schema) and often there is a difference between an empty string and a null value. Another disadvantage is that you can not have multiple attributes with the same name inside an element.<br /> Furthermore, using elements makes XML better readable by humans, so this helps developers in their coding and debugging. A good read about this subject is <a href="http://www.ibm.com/developerworks/library/x-eleatt/" target="_blank">&#8220;Principles of XML design: When to use elements versus attributes&#8221;</a>. This article contains a nice statement: &#8220;Elements are the extensible engine for expressing structure in XML.&#8221; And that&#8217;s exactly what you want when developing a CDM that will change in time.<br /> The last advantage is that when the CDM only consists of elements, processing layers can add their own &#8216;processing&#8217; attributes only for the purpose of helping the processing itself. This means that the result, the XML which is used in communicating with the world outside of the processing system, should be free of attributes again. Also processing attributes can be added in the interface, to provide extra information about the functionality of the interface. For example, when retrieving orders with operation getOrders, you might want to indicate for each order whether it has to be returned with or without customer product numbers:</p> <pre class="brush: xml; light: true; title: ; notranslate">&lt;getOrdersRequest&gt; &lt;Orders&gt; &lt;Order includeCustProdIds='false'&gt; &lt;Id&gt;123&lt;/Id&gt; &lt;/Order&gt; &lt;Order includeCustProdIds='true'&gt; &lt;Id&gt;125&lt;/Id&gt; &lt;/Order&gt; &lt;Order includeCustProdIds='false'&gt; &lt;Id&gt;128&lt;/Id&gt; &lt;/Order&gt; &lt;/Orders&gt; &lt;/getOrdersRequest&gt;</pre> <p> Beware these attributes are processing or functionality related, so they should not be a data part the entity. And ask yourself if they are really necessary. You might consider to provide this extra functionality in a new operation, e.g. operation getCustProdIds to retrieve customer product ids or operation getOrderWithCustIds to retrieve order with customer product number.</p> <p><b>All elements optional</b><br /> The next advice is to make all the elements optional! There unexpectedly always is a system or business process which doesn&#8217;t need a certain (child) element of which you initially had thought it would always be necessary. On one project this was the case with id elements. Each data entity must have an id element, because the id element contains the functional unique identifying value for the data entity. But then there came a business case with a front end system that had screens in which the data entity was being created. Some of the input data had to be validated before the unique identifying value was known. So the request to the validation system contained the entity data without the identifying id element, so the mandatory id element had to be changed to an optional element. Of-course, you can solve this by creating a request which only contains the data that is used in separate elements, so without the use of the CDM element representing the entity. But one of the powers of a CDM is that there is one definition of an entity.<br /> At that specific project, in time, more and more mandatory elements turned out to be optional somewhere. Likely this will happen at your project as well!</p> <p><b>Use a &#8216;plural container&#8217; element</b><br /> There is, of course, an exception of an element which should be mandatory. That is the &#8216;plural container&#8217; element, which only is a wrapper element around a single element which may occur multiple times. This is my next recommendation: when a data entity (XML structure) contains another data entity as a child element and this child element occurs two or more times, or there is a slight chance that this will happen in the future, then create a mandatory &#8216;plural container&#8217; element which acts as a wrapper element that contains these child elements. A nice example of this is an address. More often than you might think, a data entity contains more than one address. When you have an order as data entity, it may contain a delivery address and a billing address, while you initially started with only the delivery address. So when initially there is only one address and the XML is created like this:</p> <pre class="brush: xml; light: true; title: ; notranslate">&lt;Order&gt; &lt;Id&gt;123&lt;/Id&gt; &lt;CustomerId&gt;456/&lt;CustomerId&gt; &lt;Address&gt; &lt;Street&gt;My Street&lt;/Street&gt; &lt;ZipCode&gt;23456&lt;/ZipCode&gt; &lt;City&gt;A-town&lt;/City&gt; &lt;CountryCode&gt;US&lt;/CountryCode&gt; &lt;UsageType&gt;Delivery&lt;/UsageType&gt; &lt;/Address&gt; &lt;Product&gt;...&lt;/Product&gt; &lt;Product&gt;...&lt;/Product&gt; &lt;Product&gt;...&lt;/Product&gt; &lt;/Order&gt;</pre> <p>Then you have a problem with backwards compatibility when you have to add the billing address. This is why it&#8217;s wise to create a plural container element for addresses, and for products as well. The name of this element will be the plural of the element it contains. Above XML will then become like this:</p> <pre class="brush: xml; light: true; title: ; notranslate">&lt;Order&gt; &lt;Id&gt;123&lt;/Id&gt; &lt;CustomerId&gt;456/&lt;CustomerId&gt; &lt;Addresses&gt; &lt;Address&gt; &lt;Street&gt;My Street&lt;/Street&gt; &lt;ZipCode&gt;23456&lt;/ZipCode&gt; &lt;City&gt;A-town&lt;/City&gt; &lt;CountryCode&gt;US&lt;/CountryCode&gt; &lt;UsageType&gt;Delivery&lt;/UsageType&gt; &lt;/Address&gt; &lt;/Addresses&gt; &lt;Products&gt; &lt;Product&gt;...&lt;/Product&gt; &lt;Product&gt;...&lt;/Product&gt; &lt;Product&gt;...&lt;/Product&gt; &lt;/Products&gt; &lt;/Order&gt;</pre> <p>In the structure definition, the XML Schema Definition (XSD), define the plural container element to be single and mandatory. Make its child elements optional and without a maximum of occurrences. First this results in maximum flexibility and second, in this way there is only one way of constructing XML data that doesn&#8217;t have any child elements. In contrast, when you make the plural container element optional, you can create XML data that doesn&#8217;t have any child element in two ways, by omitting the plural container element completely and by adding it without any child elements. You may want to solve this by dictating that child elements always have at least one element, but then the next advantage, discussed below, is lost.<br /> So the XML data example of above will be modeled as follows:</p> <pre class="brush: xml; light: true; title: ; notranslate">&lt;complexType name=&quot;tOrder&quot;&gt; &lt;sequence&gt; &lt;element name=&quot;Id&quot; type=&quot;string&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot;/&gt; &lt;element name=&quot;CustomerId&quot; type=&quot;string&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot;/&gt; &lt;element name=&quot;Addresses&quot; minOccurs=&quot;1&quot; maxOccurs=&quot;1&quot;&gt; &lt;complexType&gt; &lt;sequence&gt; &lt;element name=&quot;Address&quot; type=&quot;tns:tAddress&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;/&gt; &lt;/sequence&gt; &lt;/complexType&gt; &lt;/element&gt; &lt;element name=&quot;Products&quot; minOccurs=&quot;1&quot; maxOccurs=&quot;1&quot;&gt; &lt;complexType&gt; &lt;sequence&gt; &lt;element name=&quot;Product&quot; type=&quot;tns:tProduct&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;/&gt; &lt;/sequence&gt; &lt;/complexType&gt; &lt;/element&gt; &lt;/sequence&gt; &lt;/complexType&gt; &lt;complexType name=&quot;tAddress&quot;&gt; &lt;sequence&gt; ... &lt;/sequence&gt; &lt;/complexType&gt; &lt;complexType name=&quot;tProduct&quot;&gt; &lt;sequence&gt; ... &lt;/sequence&gt; &lt;/complexType&gt;</pre> <p>There is another advantage of this construction for developers. When there is a mandatory plural container element, this elements acts as a kind of anchor or &#8216;join point&#8217; when XML data has be modified in the software and for example, child elements have to be added. As this element is mandatory, it&#8217;s always present in the XML data that has to be changed, even if there are no child elements yet. So the code of a software developer can safely &#8216;navigate&#8217; to this element and make changes, e.g. adding child elements. This eases the work of a developer.</p> <p><b>Be careful with restrictions</b><br /> You never know beforehand with which systems or trading partners the integration layer will connect in future. When you define restrictions in your CDM, beware of this. For example restricting a string type to a list of possible values (enumeration) is very risky. What to do when in future another possible value is added?<br /> Even a more flexible restriction, like a regular expression can soon become too strict as well. Take for example the top level domain names on internet. It once was restricted to two character abbreviations for countries, some other three character abbreviations (&#8220;net&#8221;, &#8220;com&#8221;, &#8220;org&#8221;, &#8220;gov&#8221;, &#8220;edu&#8221;) and one four character word &#8220;info&#8221;, but <a href="https://en.wikipedia.org/wiki/Top-level_domain" target="_blank">that&#8217;s history now!</a><br /> This risk applies for all restrictions, restriction on character length, numeric restrictions, restriction on value ranges, etc.<br /> Likewise I bet that the length of product id&#8217;s in the new version of your ERP system will exceed the current one.<br /> My advice is to minimize restriction as much as possible in your CDM, preferable no restrictions at all!<br /> Instead define restrictions on the interfaces, the API to the connection systems. When for example the product id of your current ERP system is restricted to 8 characters, it perfectly makes sense that you define a restriction on the interface with that system. More on this in part III in <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part3/">my last blogpost</a> in the section about Interface Tailoring.</p> <p><b>String type for id elements</b><br /> Actually this one is the same as the one above about restrictions. I want to discuss this one separately, because of its importance and because it often goes wrong. Defining an id element as a numeric type is a way of applying a nummeric restriction to a string type id.<br /> The advice is to make all identifying elements (id, code, etc) of type string and never a numeric type! Even when they always get a numeric value&#8230; for now! The integration layer may in future connect to another system that uses non-numeric values for an id element or an existing system may be replaced by a system that uses non-numeric id&#8217;s. Only make those elements numeric which truly contain numbers, so the value has a nummeric meaning. You can check this by asking yourself whether it functionally makes sense to calculate with the value or not. So for example phone numbers should be strings. Also when there is a check (algorithm) based on the sequence of the digits whether a number is valid or not (e.g. <a href="https://en.wikipedia.org/wiki/Check_digit" target="_blank">bank account check digit</a>), this means the number serves as an identification and thus should be a string type element! Another way to detect numbers which are used as identification, is to determine if it matters when you add a preceding zero to the value. If that does matter, it means it&#8217;s not used nummeric. After all, preceding zero&#8217;s doesn&#8217;t change a nummeric value.</p> <p><b>Determine null usage</b><br /> The usage of the null value in XML (<label style="font-family: monospace">xsi:nil=&#8221;true&#8221;</label>) always leads to lots of discussions. The most import advice is to explicitly define standards &#038; rules and <strong>communicate them</strong>! Decide whether the null usage is allowed or not. If so, determine in what situation it is allowed and what it functionally means. Ask yourself how it is used and how it differs from an element being absent (optional elements).<br /> For example I&#8217;ve been in a project where a lot of data was updated in the database. An element being absent meant that a value didn&#8217;t change, while a null value meant that for a container element it&#8217;s record had be deleted and for a &#8216;value&#8217; element that the database value had to be set to null.<br /> The most important advice in this is: Make up your mind, decide, document and communicate it!</p> <p>To summarize this first part of naming conventions and guidelines:</p> <blockquote> <ul> <li>Keep in mind that a CDM keeps on changing, so it&#8217;s never finished</li> <li>Define naming and structure standards upfront</li> <li>and communicate your standards and guidelines!</li> </ul> </blockquote> <p>When creating a CDM in the XML format, you also have to think about namespaces and how to design the XML. This is where the second part in <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part2/">my next blogpost</a> is all about. When you are not defining a CDM in the XML format, you can skip this one and immediately go to <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part3/">the third and last blogpost</a> about dependency management &#038; interface tailoring.</p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part1/">Development and Runtime Experiences with a Canonical Data Model Part I: Standards &#038; Guidelines</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Emiel Paasschens https://technology.amis.nl/?p=41822 Wed Mar 29 2017 13:21:46 GMT-0400 (EDT) Development and Runtime Experiences with a Canonical Data Model Part II: XML Namespace Standards https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part2/ <p>This blog is about XML namespace standards. Primary for using them in a Canonical Data Model (CDM), but also interesting for anyone who has to define XML data by creating XML Schema files (XSD). This blogpost is the second part of a trilogy about my experiences in using and developing a CDM. The <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part1/">first blogpost</a> is about naming &#038; structure standards and <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part3/">the third blogpost</a> is about dependency management &#038; interface tailoring.<span id="more-44473"></span></p> <h2>XML Namespace Standards</h2> <p>A very important part of an XML model, is its namespace. With a namespace you can bind an XML model to specific domain and can represent a company, a business domain, a system, a service or even a single component or layer within a service. For a CDM model this means that choices have to be made. Use one or more namespaces. How to deal with newer versions of a CDM, etc.</p> <p><b>Two approaches: one generic namespace vs component specific namespaces</b><br /> Basically I&#8217;ve come across two approaches of defining a namespace in a CDM. Both ways can be a good approach, but you have to choose one based on your specific project characteristics.</p> <ol> <li>The first approach is to use one generic fixed namespace for the entire CDM. This may also be the &#8217;empty&#8217; namespace which looks like there is no namespace. This approach of one generic fixed namespace is useful when you have a central CDM that is available at run time and all services refer to this central CDM. When you go for this approach, go for one namespace only, so do not use different namespaces within the CDM.<br /> For maintenance and to keep the CDM manageable, it can be useful to split up the CDM into more definition files (XSD&#8217;s), each one representing a different group (domain) of entities. However my advise is to still use the same namespace in all of these definition files. The reason is that in time the CDM will change and you may want to move entities from one group to another group or you wan to split up a group. When each group had its own namespace, you would have gotten a problem with backward compatibility. That&#8217;s because an element which moves from one group to another, would then have changed from its namespace.<br /> When at a certain moment you&#8217;re going to have a huge amount of changes which also impacts the running software, you can create a new version of the CDM. Examples of such situations are connecting a new external system or replacing an important system by another system. In case you have more versions of the CDM, each version must have its own namespace where the version number is part of the name of the namespace. New functionality can now be developed with the new version of the CDM. When it uses existing functionality (e.g. calling an existing service) it has to transform the data from the new version of the CDM to the old version (and vice versa).</p> <p><!--afdwingen lege regel--> </li> <li>The second approach is that each software component (e.g. a SOAP webservice) has its own specific namespace. This specific namespaces is used as the namespace for a copy of the CDM. The software component uses this copy of the CDM. You can consider it as &#8216;his&#8217; own copy of the CDM. A central runtime CDM is not needed any more. This means that the software components have <b>no runtime dependencies</b> on the CDM! The result is that the software components can be deployed and run independent of the current version of the CDM. This is the most important advantage!<br /> The way to achieve this is to have a central CDM without a namespace (or a dummy namespace like &#8216;xxx&#8217;), which is <b>only available</b> as an off-line library at <b>design time</b>. So there even is <b>no run time</b> CDM to reference to!<br /> Developers need to create a hard coded copy of the CDM for the software component they are building and apply a namespace to the copy. The name of this namespace is specific for that software component and typically includes the name (and version) of the software component itself. Because the software component is the &#8216;owner&#8217; of this copy, the parts (entities) of CDM which are not used by the software component, can be removed from this copy.</li> </ol> <p>In part III in <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part3/">my last blogpost</a> about run time dependencies and interface tailoring I will advise when to use the first and when to use the second approach. First some words about XML patterns and their usage in these two namespace approaches.</p> <p><b>XML Patterns</b><br /> XML patterns are design patterns, applicable to the design of XML. Because the design of XML is defined by XML Schema, XSD files, these XML patterns actually are XML Schema (XSD) patterns. These design patterns describe a specific way of modeling XML. Different ways of modeling can result into the same XML, but may be different in terms of maintenance, flexibility, ease of extension, etc.<br /> As far as I know, there are four XML patterns: &#8220;Russian Doll&#8221;, &#8220;Salami Slice&#8221;, &#8220;Venetian Blind&#8221; and &#8220;Garden of Eden&#8221;. I&#8217;m not going to describe these patterns, because that has already be done by others. For a good description of the first three, see <a href="http://www.xfront.com/GlobalVersusLocal.html" target="_blank">http://www.xfront.com/GlobalVersusLocal.html</a> and <a href="http://www.oracle.com/technetwork/java/design-patterns-142138.html" target="_blank">http://www.oracle.com/technetwork/java/design-patterns-142138.html</a> gives for a brief summary of all four. I advise you to read and understand them when you want to setup an XML type CDM.</p> <p>I&#8217;ve described two approaches of using a CDM above, a central run-time referenced CDM and a design time only CDM. So the question is, which XML design pattern matches best for each approach?</p> <p>When you&#8217;re going for the first approach, a central run-time-referenced CDM, there are no translations necessary when passing (a part of) an XML payload from one service to another service. This is easier compared with the second approach where each service has a different namespace. Because there are no translations necessary and the services need to reference parts of entities as well as entire entity elements, it&#8217;s advisable to use the &#8220;Salami Slice&#8221; or the &#8220;Garden of Eden&#8221; pattern. They both have all elements defined globaly, so it&#8217;s easy to reuse them. With the &#8220;Garden of Eden&#8221; patterns types are defined globally as well and thus reusable providing more flexibility and freedom to designers and developers. The downside is that you end up with a very scattered and verbose CDM.<br /> So solve this disadvantage, you can go for the &#8220;Venetian Blind&#8221; pattern and set the schema attribute &#8220;elementFormDefault&#8221; to &#8220;unqualified&#8221; and do <b>not include</b> any <em>element</em> definitions in the root of the schema&#8217;s (XSD) which make up the CDM. This means there are <b>only</b> <em>XML type</em> definitions in the root of the schema(s), so CDM is defined by types. The software components, e.g. a web service, do have their own namespace. In this way the software components define a namespace (through their XSD or WSDL) for the root element of the payload (in the SOAP body), while all the child elements below this root remain &#8216;namespace-less&#8217;.<br /> This makes the life of an developer easier as there is no namespace and thus no prefixes needed the payloads messages. No dealing with namespaces in all transformation, validation and processing software that works with those messages makes programming code (e.g. xslt) less complicated, so less error prone.<br /> This leads to my advise that:</p> <blockquote><p>The &#8220;Venetion Blind&#8221; pattern with the schema attribute &#8220;elementFormDefault&#8221; set to &#8220;unqualified&#8221; and no elements in the root of the schema&#8217;s, is the best XML pattern for the approach of using a central run-time referenced CDM.</p></blockquote> <p>When you&#8217;re going for the second option, <b>no</b> runtime CDM, but only a design time CDM, you shouldn&#8217;t use a model which results in payloads (or part of the payloads) of different services having exact the same namespace. So you cannot use the &#8220;Venetian Blind&#8221; pattern with &#8220;elementFormDefault&#8221; set to &#8220;unqualified&#8221; which I have just explained. You can still can use the &#8220;Salami Slice&#8221; or &#8220;Garden of Eden&#8221; pattern, but the disadvantages of large scattered and verbose CDM remain.<br /> The reason that you can not have the same namespace for the payload of services with this approach is because the services have their own copy (&#8216;version&#8217;) of the CDM. When (parts of) payloads of different services have the same element with also the same namespace (or the empty namespace), the XML structure of both is considered to be exactly equal, while that need not be the case!. When they are not the same you have a problem when services need to call each other and payloads are passed to each other. They can already be different at design time and then it&#8217;s quite obvious.<br /> Much more dangerous is that they even can become different later in time without even being noticed! To explain this, assume that at a certain time two software components were developed, they used the same CDM version, so the XML structure was the same. But what if one of them changes later in time and these changes are considered as backwards compatible (resulting in a new minor version). The design time CDM has changed, so the newer version of this service uses this newer CDM version. The other service did not change and now receives a payload from the changed service with elements of a newer version of the CDM. Hopefully this unchanged service can handle this new CDM format correctly, but it might not! Another problem is that it might break its own contract (WSDL) when this service copies the new CDM entities (or part of it) to its response of caller. Thus breaking its own contract while the service itself has not changed! Keep in mind its WSDL still uses the old CDM definitions of the entities in the payload.<br /> Graphically explained:<br /> <img data-attachment-id="41946" data-permalink="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part1/servicebreachofcontract/" data-orig-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceBreachOfContract.jpg?fit=641%2C270&amp;ssl=1" data-orig-size="641,270" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Breach of Service Contract" data-image-description="" data-medium-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceBreachOfContract.jpg?fit=300%2C126&amp;ssl=1" data-large-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceBreachOfContract.jpg?fit=641%2C270&amp;ssl=1" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceBreachOfContract.jpg?resize=641%2C270&#038;ssl=1" alt="Breach of Service Contract" class="alignnone size-full wp-image-41946" srcset="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceBreachOfContract.jpg?w=641&amp;ssl=1 641w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceBreachOfContract.jpg?resize=300%2C126&amp;ssl=1 300w" sizes="(max-width: 641px) 100vw, 641px" data-recalc-dims="1" /><br /> Service B calls Service A and retrieves a (part of) the payload entity X from Service A. Service B uses this entity to return it to his consumers as (part of) payload. This is all nice and correct according to its service contract (WSDL).<br /> Later in time, Service A is updated to version 1.1 and the newer version of the CDM is used in this updated version. In the newer CDM version, entity X has also been updated to X&#8217;. Now this X&#8217; entity is passed from Service A to Service B. Service B returns this new entity X&#8217; to its consumers, while they expect the original X entity. So service B returns an invalid response and breaks its own contract!<br /> You can imagine what happens when there is a chain of services and probably there are more consumers of Service A. Such an update can spread out through the entire integration layer (SOA environment) like ripples on water!<br /> You don&#8217;t want to update all the services in the chains effected by such a little update.<br /> I&#8217;m aware a service should not do this. Theoretically a service is fully responsible that always complies to its own contract (WSDL), but this is very difficult to implement this when developing lots of services. When there is a mapping in a service, this is quite clear, but all mapping should be checked. However an XML entity often is used as variable (e.g. BPEL) in some processing code and can be passed to a caller unnoticed.<br /> The only solution is to avoid passing complete entities (container elements), so, when passing through, all data fields (data elements) have to be mapped individually (in a so called transformation) for all incoming and outgoing data of the service.<br /> The problem is that you cannot enforce software to do this, so this must become a rule, a standard, for software developers.<br /> Everyone, who has been in a software development for some years, knows this is not going to work. There will always be a software developer (at that moment or maybe in future for maintenance) not knowing or understanding this standard.<br /> The best way to prevent this problem, is to give each service its own namespace, so entities (container elements) cannot be copied and passed through in its entirety and thus developers have to map the data elements individually.</p> <blockquote><p>This is why I advise for the approach of a design time only CDM to also use the &#8220;Venetian Blind&#8221; pattern, but now with the schema attribute &#8220;elementFormDefault&#8221; set to &#8220;qualified&#8221;. This results into a CDM of which</p> <ul> <li>it is easy to copy the elements that are needed, including child elements and necessary types, from the design time CDM to the runtime constituents of the software component being developed. Do not forget to apply the component specific target namespace to this copy.</li> <li>it is possible to reuse type definitions within the CDM itself, preventing multiple definitions of the same entity.</li> </ul> </blockquote> <p>In <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part3/">my next blogpost</a>, part III about runtime dependencies and interface tailoring, I explain why you should go in most cases for a design time CDM and not a central runtime CDM.</p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part2/">Development and Runtime Experiences with a Canonical Data Model Part II: XML Namespace Standards</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Emiel Paasschens https://technology.amis.nl/?p=44473 Wed Mar 29 2017 13:21:07 GMT-0400 (EDT) Development and Runtime Experiences with a Canonical Data Model Part III: Dependency Management & Interface Tailoring https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part3/ <h2>Introduction</h2> <p>This blogpost is part III, the last part of a trilogy on how to create and use a Canonical Data Model (CDM). The <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part1/">first blogpost</a> contains part I in which I share my experiences in developing a CDM and provide you with lots of standards and guidelines for creating a CDM. The <a href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part2/">second part</a> is all about XML Namespace Standards. This part is about usage of a CDM in the integration layer, thus how to use it in a run time environment and what are the consequences for the development of the services which are part of the integration layer.<span id="more-44395"></span></p> <h2>Dependency Management &amp; Interface Tailoring</h2> <p>When you&#8217;ve decided to use a CDM, it&#8217;s quite tempting to use the XSD files, that make up the CDM, in a central place in the run time environment where all the services can reference to. In this way there is only one model, one &#8216;truth&#8217; for all the services. However there are a few problems you run into quite fast when using such a central run time CDM. </p> <h3>Dependency Management</h3> <p><b>Backwards compatibility</b><br /> The first challenge is to maintain backwards compatibility. This means that when there is a change in the CDM, this change is implemented in such a way that the CDM supports both the &#8216;old&#8217; data format, according to the CDM before the change, as well as the new data format with the change. When you&#8217;re in the development stage of the project, the CDM will change quite frequently, in large projects even on a daily basis. When these changes are backwards compatible, the services which already have been developed and are considered as finished, do not need to change (unless of course the change also involves a functional change of a finished service). Otherwise, when these changes are not backwards compatible, all software components, so all services, which have been finished have to be investigated whether they are hit by the change. Since all services use the same set of central XSD definitions, many will be hit by a change in these definitions.<br /> If you&#8217;re lucky you have nice unit tests or other code analysis tools you can use to detect this. You may ask yourself if these test and/or tool will cover a 100% hit range. When services are hit, they have to be modified, tested and released again. To reduce maintenance and rework of all finished services, there will be pressure to maintain backwards compatibility as much as possible.<br /> Maintaining backwards compatibility in practice means</p> <ul> <li>that all elements that are added to the CDM have to be optional;</li> <li>That you can increase the maximum occurrence of an element, but never reduce it;</li> <li>That you can make mandatory elements optional, but not vice versa;</li> <li>And that structure changes are much more difficult.</li> </ul> <p>For example, when a data element has to be split up into multiple elements. Let&#8217;s take a product id element of type string and split it up into a container elements that is able to contain multiple product identifications for the same product. The identification container element will have child elements for product id, product id type and an optional owner id for the &#8216;owner&#8217; of the identification (e.g. a customer may have his own product identification). One way of applying this change and still maintain backwards compatibility is by using an XML choice construction:</p> <pre class="brush: xml; light: true; title: ; notranslate">&lt;complexType name=&quot;tProduct&quot;&gt; &lt;sequence&gt; &lt;choice minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot;&gt; &lt;element name=&quot;Id&quot; type=&quot;string&quot; /&gt; &lt;element name=&quot;Identifications&quot;&gt; &lt;complexType&gt; &lt;sequence&gt; &lt;element name=&quot;Identification&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt; &lt;complexType&gt; &lt;sequence&gt; &lt;element name=&quot;Id&quot; type=&quot;string&quot; /&gt; &lt;element name=&quot;IdType&quot; type=&quot;string&quot; /&gt; &lt;element name=&quot;IdOwner&quot; type=&quot;string&quot; minOccurs=&quot;0&quot;/&gt; &lt;/sequence&gt; &lt;/complexType&gt; &lt;/element&gt; &lt;/sequence&gt; &lt;/complexType&gt; &lt;/element&gt; &lt;/choice&gt; &lt;element name=&quot;Name&quot; type=&quot;string&quot; /&gt; ... &lt;/sequence&gt; &lt;/complexType&gt;</pre> <p>There are other ways to implement this change and remain backwards compatible, but they will all will into a redundant and verbose data model. As you can imagine, this soon results in a very ugly CDM, which is hard to read and understand. </p> <p><b>Hidden functional bugs</b><br /> There is another danger. When keeping backward compatibility in this way, the services which were finished technically don&#8217;t break and still run. But they might functional break! This break is even more dangerous because it may not be visible immediately and it can take quite a long time before this hidden functional bug is discovered. Perhaps the service already runs in a production environment and execute with unnoticed functional bugs!<br /> Take the example above and consider that there has already been a service developed which does something with orders. Besides order handling, it also sends the product id&#8217;s in an order to a CRM system, but only for the product id&#8217;s in the range 1000-2000. The check in the service on the product id being in the range 1000-2000 will be based upon the original product id field. But what happens if the CDM is changed as described in previous paragraph, so the original product id field is part of a choice and thus becomes optional. This unchanged service now might handle orders that contain products with the newer data definition for a product in where the new &#8220;Identification&#8221; element is used instead of the old &#8220;Id&#8221; element. If you&#8217;re lucky, the check on the range fails with a run time exception! Lucky, because you&#8217;re immediately notified of this functional flaw. It probably will be detected quite early in a test environment when it&#8217;s common functionality. But what if it is rare functionality? Then the danger is that it might not be detected and you end up with a run time exception in a production environment. That is not what you want, but at least it is detected!<br /> The real problem is that there is a realistic chance that the check doesn&#8217;t throw an exception and doesn&#8217;t log an error or warning. It might conclude that the product id is not in the range 1000-2000, because the product id field is not there, while the product identification <em>is</em> in that range! It just uses the new way of data modeling the product identification with the new &#8220;Identification&#8221; element. This results into a service that has a functional bug while it seems to run correctly!</p> <p><b>Backward compatibility in time</b><br /> Sometimes you have no choice and you have to make changes which are not backward compatible. This can cause another problem: you&#8217;re not backwards compatible in time. You might be developing newer versions of services. But what if in production there is a problem with one of these new services using the new CDM and you want to go back to a previous version of that service? You have to go back to the old version of the CDM as well, because the old version is not compatible with the new CDM. But that also means that none of the newer services can run, because they depend on the new CDM. So you have to revert to the old versions for all of the new services using the new CDM!</p> <blockquote><p>The base cause of these problems is that all software components (service) are dependent on the central run time CDM!<br /> So this central run CDM introduces dependencies between all (versions of) components. This heavily conflicts with one of the base principles of SOA: loose coupled, independent services.</p></blockquote> <p>&nbsp;</p> <h3>Interface Tailoring</h3> <p>There is another problem with a central CDM which has more to do with programming concepts, but also impacts the usage of services resulting in a slower development cycle. The interface of a service which is described in its contract (WSDL) should reflect the functionality of a service. However, if you&#8217;re using a central CDM, the CDM is used by all the services. This means that the entities in the CDM contain all the data elements which are needed in the contracts of all the services. So basically a CDM entity consists of a &#8216;merge&#8217; of all these data elements. The result is that the entities will be quite large, detailed and extensive. The services use these CDM entities in their contracts, while functionally only a (small) part of the elements are used in a single service. </p> <blockquote><p>This makes the interface of a service very unclear, ambiguous and meaningless.</p></blockquote> <p>Another side effect is that it makes no sense to validate (request) messages, because all elements will be optional.</p> <p>Take for example a simple service that returns the street and city based upon the postal code and house number (this is a very common functionality in The Netherlands). The interface would be nice and clear and almost self-describing when the service contract dictates that the input (request) only is a postal code and the output (response) only contains the street name and the city. But with a central CDM, the input will be an entity of type address, as well as the output. With some bad luck, the address entity also contain all kind of elements for foreign addresses, post office boxes, etc. I&#8217;ve seen exactly this example in a real project with an address entity containing more than 30 child elements! While the service only needed four of them: two elements, postal code and house number, as input and also two elements, street and city, as the output. You might consider to this by defining these separate elements as input and output and not to use the entity element. But that&#8217;s not the idea of a central CDM! Take notice that this is just a little example. I&#8217;ve seen this problem in a project with <em>lawsuit</em> entities. You can imagine how large such an entity can become, with hundreds of elements. Services individually only used some of the elements of the <em>lawsuit</em> entity, but these elements were scattered across the entire entity. So is does not help either to split up the type definition of a <em>lawsuit</em> entity into several sub types. In that project almost all the services needed one or more <em>lawsuit</em> entities resulting in interface contracts (WSDL) which all were very generic and didn&#8217;t make sense. You needed the (up to date) documentation of the service in order to know which elements you had to use in the input and which elements were returned as output, because the definitions of the request and response messages were not useful as they contained complete entities.</p> <h3>Solution</h3> <p>The solution to both of the problems described above, is not to use a <em>central run</em> time CDM, but only a <em>design time</em> CDM.<br /> This design time CDM has no namespace (or a dummy one). When a service is developed, a hard copy is made of (a part of) the CDM at that moment to a (source) location specific for that service. Then a service specific namespace has to be applied to this local copy of the (service specific) CDM.<br /> And now you can shape this local copy of the CDM to your needs! Tailor it by removing elements that the service contract (WSDL) doesn&#8217;t need. You can also apply more restrictions to the remaining elements by making optional elements mandatory, reduce the maximum occurrences of an element and even create data value restrictions for an element (e.g. set a maximum string length). By doing this, you can tailor the interface in such a way that it reflects the functionality of the service!<br /> You can even have two different versions of an entity in this copy of the CDM. For example one to use in the input message and one in the output message.<br /> Let&#8217;s demonstrate this with the example of above: An address with only postal code and house number for the input message and an address with street and city for the output message. The design time CDM contains the full address entity, while the local and tailored copy of the service CDM contains two tailored address entities. And this one can be used by the service XSD which contains the message definitions of the request and response payloads:<div id="attachment_44531" style="width: 969px" class="wp-caption alignnone"><img data-attachment-id="44531" data-permalink="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part3/cdmandservicexsds/" data-orig-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/CDMandServiceXSDs.png?fit=959%2C477&amp;ssl=1" data-orig-size="959,477" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="CDM XSD and Service XSD" data-image-description="" data-medium-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/CDMandServiceXSDs.png?fit=300%2C149&amp;ssl=1" data-large-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/CDMandServiceXSDs.png?fit=702%2C349&amp;ssl=1" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/CDMandServiceXSDs.png?resize=702%2C349&#038;ssl=1" alt="CDM XSD and Service XSD" class="size-full wp-image-44531" srcset="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/CDMandServiceXSDs.png?w=959&amp;ssl=1 959w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/CDMandServiceXSDs.png?resize=300%2C149&amp;ssl=1 300w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/CDMandServiceXSDs.png?resize=768%2C382&amp;ssl=1 768w" sizes="(max-width: 702px) 100vw, 702px" data-recalc-dims="1" /><p class="wp-caption-text">CDM XSD and Service XSD</p></div> You can expand the source code if you are interested:</p> <pre class="brush: xml; collapse: true; light: false; title: DesignTimeCDM.xsd; toolbar: true; notranslate">&lt;schema targetNamespace=&quot;DUMMY_NAMESPACE&quot; xmlns=&quot;http://www.w3.org/2001/XMLSchema&quot; version=&quot;1.0&quot;&gt; &lt;complexType name=&quot;TAddress&quot;&gt; &lt;sequence&gt; &lt;element name=&quot;Department&quot; type=&quot;string&quot; minOccurs=&quot;0&quot;/&gt; &lt;element name=&quot;Street&quot; type=&quot;string&quot; minOccurs=&quot;0&quot;/&gt; &lt;element name=&quot;Number&quot; type=&quot;string&quot; minOccurs=&quot;0&quot;/&gt; &lt;element name=&quot;PostalCode&quot; type=&quot;string&quot; minOccurs=&quot;0&quot;/&gt; &lt;element name=&quot;City&quot; type=&quot;string&quot; minOccurs=&quot;0&quot;/&gt; &lt;element name=&quot;County&quot; type=&quot;string&quot; minOccurs=&quot;0&quot;/&gt; &lt;element name=&quot;State&quot; type=&quot;string&quot; minOccurs=&quot;0&quot;/&gt; &lt;element name=&quot;Country&quot; type=&quot;string&quot; minOccurs=&quot;0&quot;/&gt; &lt;/sequence&gt; &lt;/complexType&gt; &lt;/schema&gt;</pre> <pre class="brush: xml; collapse: true; light: false; title: AddressServiceCDM.xsd; toolbar: true; notranslate">&lt;schema targetNamespace=&quot;http://nl.amis.AddressServiceCDM&quot; xmlns=&quot;http://www.w3.org/2001/XMLSchema&quot; version=&quot;1.0&quot;&gt; &lt;complexType name=&quot;TAddressInput&quot;&gt; &lt;sequence&gt; &lt;element name=&quot;Number&quot; type=&quot;string&quot; minOccurs=&quot;0&quot;/&gt; &lt;element name=&quot;PostalCode&quot; type=&quot;string&quot; minOccurs=&quot;1&quot;/&gt; &lt;/sequence&gt; &lt;/complexType&gt; &lt;complexType name=&quot;TAddressOutput&quot;&gt; &lt;sequence&gt; &lt;element name=&quot;Street&quot; type=&quot;string&quot; minOccurs=&quot;1&quot;/&gt; &lt;element name=&quot;City&quot; type=&quot;string&quot; minOccurs=&quot;1&quot;/&gt; &lt;/sequence&gt; &lt;/complexType&gt; &lt;/schema&gt;</pre> <pre class="brush: xml; collapse: true; light: false; title: AddressService.xsd; toolbar: true; notranslate">&lt;schema targetNamespace=&quot;http://nl.amis.AddressService&quot; xmlns=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:cdm=&quot;http://nl.amis.AddressServiceCDM&quot; version=&quot;1.0&quot;&gt; &lt;import namespace=&quot;http://nl.amis.AddressServiceCDM&quot; schemaLocation=&quot;AddressServiceCDM.xsd&quot;/&gt; &lt;element name=&quot;getAddressRequest&quot;&gt; &lt;complexType&gt; &lt;sequence&gt; &lt;element name=&quot;Address&quot; type=&quot;cdm:TAddressInput&quot; minOccurs=&quot;1&quot;/&gt; &lt;/sequence&gt; &lt;/complexType&gt; &lt;/element&gt; &lt;element name=&quot;getAddressResponse&quot;&gt; &lt;complexType&gt; &lt;sequence&gt; &lt;element name=&quot;Address&quot; type=&quot;cdm:TAddressOutput&quot; minOccurs=&quot;1&quot;/&gt; &lt;/sequence&gt; &lt;/complexType&gt; &lt;/element&gt; &lt;/schema&gt;</pre> <p>When you&#8217;re finished tailoring, you can still deploy these service interfaces (WSDL) containing the shaped data definitions (XSDs) to a central run time location. However each service must have its own location within this run time location, to store these tailored data definitions (XSDs). When you do this, you can also store the service interface (abstract WSDL) in there as well. In this way there is only one copy of a service interface, that is used by the implementing service as well as by consuming services.<br /> I&#8217;ve worked in a project with SOAP services where the conventions dictated that the filename of a WSDL is the same as the name of the service. The message payloads were not defined in this WSDL, but were included from an external XSD file. This XSD also had the same filename as the service name. This service XSD defined the payload of the messages, but it did <b>not</b> contain CDM entities or CDM type definitions. They were included from another XSD with the fixed name CDM.xsd. This local, service specific, CDM.xsd contained the tailored (stripped and restricted) copy of the central design time CDM, but had the same target namespace as the service.wsdl and the service.xsd:<br /> <img data-attachment-id="41959" data-permalink="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part1/servicemds/" data-orig-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceMDS.png?fit=334%2C130&amp;ssl=1" data-orig-size="334,130" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Service Files" data-image-description="" data-medium-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceMDS.png?fit=300%2C117&amp;ssl=1" data-large-file="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceMDS.png?fit=334%2C130&amp;ssl=1" src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceMDS.png?resize=300%2C117&#038;ssl=1" alt="Service Files" class="alignnone size-medium wp-image-41959" srcset="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceMDS.png?resize=300%2C117&amp;ssl=1 300w, https://i2.wp.com/technology.amis.nl/wp-content/uploads/2016/08/ServiceMDS.png?w=334&amp;ssl=1 334w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /><br /> This approach also gave the opportunity to add operation specific elements to the message definitions in the service.xsd. These operation specific elements were not part of the central CDM and did not belong there due to their nature (operation specific). These operation specific elements ware rarely needed, but when needed, they did not pollute the CDM, because you don&#8217;t need to somehow add them to the CDM. Think of switches and options on operations which act on functionality, e.g. a boolean type element &#8220;includeProductDescription&#8221; in the request message for operation &#8220;getOrder&#8221;.</p> <p>Note: The services in the project all did use a little generic XML of which the definition (XSD) was stored in a central run time location. However these data definitions are technical data fields and therefor are not part of the CDM. For example header fields that are used for security, a generic response entity containing messages (error, warning info) and optional paging information elements in case a response contains a collection. You need a central type definition when you are using generic functionality (e.g. from a software library) in all services and consuming software.</p> <p><b>Conclusion</b><br /> With this approach of a design time CDM and tailored interfaces: </p> <ul> <li>There are no run time dependencies on the CDM and thus no dependencies between (versions of) services</li> <li>Contract breach and hidden functional bugs are prevented. (Because of different namespaces services have to copy each data element individually when passing an entity or part of an entity, to its output)</li> <li>Service interfaces reflect the service functionality</li> <li>Method specific parameters can be added without polluting the CDM</li> <li>And &#8211; most important &#8211; the CDM can change without limitations and as often as you want to!</li> </ul> <blockquote><p>The result is that the CDM in time will grow to a nice clean and mature model that reflects the business data model of the organization ‚Äď while not impending and even promoting the agility of service development. And that is exactly what you want with a CDM!</p></blockquote> <p>&nbsp;</p> <h3>When to use a central run time CDM</h3> <p>A final remark about a central run time CDM. There are situations where this can be a good solution. That is for smaller integration projects and in the case when all the systems and data sources which are to be connected with the integration layer are already in place, so they are not being developed. They probably already run in production for a while.<br /> This means that the data and the data format which has to be passed through the integration layer and is used in the services is already fixed. You could state that the CDM already is there, although it still has to be described, documented in a data model. It&#8217;s likely that it&#8217;s also a project where there is a &#8216;one go&#8217; to production, instead of frequent delivery cycles.<br /> When after a while one system is replaced by another system or the integration layer is extended by connecting one or more systems and this results that the CDM has to be changed, you can add versioning to the CDM. Create a copy of the existing CDM and give it a new version (e.g. with a version number in the namespace) and you can make the changed in CDM which are needed. This is also a good opportunity to clean up the CDM by removing unwanted legacy due to keeping backwards compatibility. Use this newer version of the CDM for all new development and maintenance of services.<br /> Again, only use this central run time CDM for smaller projects and when it is a &#8216;one go&#8217; to production (e.g. replacement of one system). As soon as the project becomes larger and/or integration of systems keeps on going, switch over to the design time CDM approach.<br /> You can easily switch over by starting to develop the new services with the design time CDM approach and keep the &#8216;old&#8217; services running with the central run time CDM. As soon there is a change in an &#8216;old&#8217; service, refactor it to the new approach of the design time CDM. In time there will be no more services using the run time CDM, so the run time CDM can be removed.</p> <p>After reading this blogpost, together with the previous two blogpost which make up the trilogy about my experiences with a Canonical Data Model, you should be able to have good understanding about how to set up a CDM and use it in your projects. Hopefully it helps you in making valuable decisions about creating and using a CDM and your projects will benefit from it.</p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/29/cdm-development-and-runtime-experiences-part3/">Development and Runtime Experiences with a Canonical Data Model Part III: Dependency Management &#038; Interface Tailoring</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Emiel Paasschens https://technology.amis.nl/?p=44395 Wed Mar 29 2017 13:20:39 GMT-0400 (EDT) Oracle Application Express (APEX) 5.1.1 http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/QLOVccRKTLw/ <p><a href="http://www.oracle.com/technetwork/developer-tools/apex/downloads/download-085147.html"><img class="size-full wp-image-5013 alignleft" src="https://oracle-base.com/blog/wp-content/uploads/2015/05/apex.jpg" alt="" width="108" height="105" /></a>I read <a href="http://joelkallman.blogspot.co.uk/2017/03/oracle-application-express-511-now.html">Joel Kallman&#8217;s</a> post this morning announcing the release of <a href="http://www.oracle.com/technetwork/developer-tools/apex/downloads/download-085147.html">APEX 5.1.1</a>. We&#8217;ve got APEX 5.1 across the board, so I downloaded patch¬†25341386 from MOS, as instructed, and went to work patching stuff.</p> <p>The patching was¬†just like every other patch I&#8217;ve done for APEX (<a href="/articles/misc/oracle-application-express-apex-patches">see here</a>), super easy. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>I thought there was a problem with the APEX images, but it turned out I was a donkey and I&#8217;d copied the images¬†to the wrong directory on one of the app servers. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>We now have APEX 5.1.1 on all Dev and Test systems. It went so well I&#8217;ll probably push it to production really soon. Happy days. <img src="https://s.w.org/images/core/emoji/2.2.1/72x72/1f642.png" alt="ūüôā" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/03/29/oracle-application-express-apex-5-1-1/">Oracle Application Express (APEX) 5.1.1</a> was first posted on March 29, 2017 at 5:08 pm.<br />¬©2012 "<a href="http://www.oracle-base.com/blog">The ORACLE-BASE Blog</a>". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.<br /><img src="http://feeds.feedburner.com/~r/TheOracleBaseBlog/~4/QLOVccRKTLw" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=7046 Wed Mar 29 2017 12:08:16 GMT-0400 (EDT) Running Oracle REST Data Services Without Oracle Application Express http://www.thatjeffsmith.com/archive/2017/03/running-oracle-rest-data-services-ords-without-oracle-application-express-apex/ <p>Can you?</p> <p>YES. Absolutely, even.</p> <div id="attachment_6116" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/whatisords2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/whatisords2.png" alt="" width="1024" height="490" class="size-full wp-image-6116" /></a><p class="wp-caption-text">No mention of APEX &#8211; not that that&#8217;s a bad thing.</p></div> <p>Go from your app to your Oracle Database resources via REST (GET|POST|PUT|DELETE), and your responses come back via JSON. No APEX required.</p> <p>And even better, you can <a href="http://www.thatjeffsmith.com/archive/2015/04/deploying-oracle-rest-data-services-from-oracle-sql-developer/" target="_blank">have ORDS up and running in less than 5 minutes</a>. </p> <h3>Ok, but what about ORDS &#038; APEX?</h3> <p>If you want to provide a RESTful API for your Oracle Database, then ORDS is for you. But, when I do talks on ORDS, I ask the room, who in here is an APEX Developer?</p> <p>The answer to this question very much determines who the audience comes to the talk in terms of expectations and experience with ORDS.</p> <p>To run APEX, <a href="https://docs.oracle.com/cd/E59726_01/install.50/e39144/pre_require.htm#HTMIG380" target="_blank">you need a &#8216;Web Listener&#8217;</a> &#8211; that is, you need a service that can handle the http(s) traffic to and from the database &#8211; which is where APEX runs. It runs in the database, because APEX is built with PL/SQL. That&#8217;s also why it&#8217;s so fast &#8211; PL/SQL in the database is awesome when you want to get to your Oracle data and &#8216;do stuff&#8217; with it.</p> <div id="attachment_6080" style="width: 138px" class="wp-caption alignleft"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/ords_logo.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/ords_logo.png" alt="ORDS logo" width="128" height="128" class="size-full wp-image-6080" /></a><p class="wp-caption-text">GET, POST, PUT, DELETE your way in and out of Oracle Database.</p></div><em>ORDS used to be called the Oracle APEX Listener. </em> This was an accurate, but incomplete description of what it offered. Because it does so much more than that, and of course it&#8217;s available to run WITHOUT APEX. Hence the branding/name changes a few years back to Oracle REST Data Services.</p> <p><strong>So how do you get from your browser or mobile app to the database?</strong></p> <p>You have a few options today, and ORDS is the recommended way to go &#8211; <a href="http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html" target="_blank">version 3.0.9</a> is currently available for your APEX and/or REST needs.</p> <p>If you want to create and deploy RESTful services for your APEX app, then ORDS is DEFINITELY the way to go. When you install ORDS, it has a few questions regarding APEX, and it&#8217;ll also offer to migrate any RESTful Services you have defined in APEX over to ORDS.</p> <p>So ORDS does have a ton to offer to the APEX developer other than just being the vehicle that gets you to the database where APEX is installed.</p> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6115 Wed Mar 29 2017 11:32:37 GMT-0400 (EDT) Monitor audit_file_dest ! http://laurentschneider.com/wordpress/2017/03/monitor-audit_file_dest.html <p>Until 11.2, audit_file_dest used to remain small with default settings and reasonably sized and active database. Suddenly, in 12c, you will sooned or later get ORA-09925: Unable to create audit trail file.</p> <p>At that point, no more connection is possible to the database, it is a complete loss of service.</p> <p>Why suddenly in 12c ? This is because the default for audit_sys_operations changed to true. In 11g, you used to get an 1K file each time you connect as sysdba. So a few tousands sysdba connections a weeks, a few mega, no worries.</p> <p><pre><code> Mon Mar 27 14:08:01 2017 +02:00 LENGTH : &#039;155&#039; ACTION :[7] &#039;CONNECT&#039; DATABASE USER:[1] &#039;/&#039; PRIVILEGE :[6] &#039;SYSDBA&#039; CLIENT USER:[6] &#039;oracle&#039; CLIENT TERMINAL:[0] &#039;&#039; STATUS:[1] &#039;0&#039; </code></pre></p> <p>Suddenly in 12c, you get plenty files that are many Mb. For instance for AUTOTASK jobs, every single select is dumped to the filesystem. A single week-end of an quiet database may generate 1Gb of *.aud files of DBMS_SCHEDULER.</p> <p>Those DB001_j000_12345_20170327140802123456789.aud files are highly useless and annoying.<br /> <pre><code> LENGTH : &#039;641&#039; ACTION :[490] &#039;select /*+&nbsp;&nbsp;no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring xmlindex_sel_idx_tbl no_substrb_pad&nbsp;&nbsp;*/ substrb(dump(&quot;PERIOD_END_TIME&quot;,16,0 ,64),1,240) val, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowidtochar(rowid) rwid from &quot;SYS&quot;.&quot;WRP$_REPORTS_TIME_BANDS&quot; t where rowid in (chartorowid(&#039;AABJ58AADAAAMsrAAA&#039;),chartorowid(&#039;AABJ58AADAAAMsrAAB&#039;),chartorowid(&#039;AABJ58AADAAAMsrAAC&#039;),chartorowid(&#039;AABJ58A ADAAAMssAAA&#039;)) order by &quot;PERIOD_END_TIME&quot;&#039; DATABASE USER:[3] &#039;SYS&#039; PRIVILEGE :[4] &#039;NONE&#039; CLIENT USER:[0] &#039;&#039; CLIENT TERMINAL:[7] &#039;UNKNOWN&#039; STATUS:[1] &#039;0&#039; </code></pre></p> <p>Once your audit_file_dest is getting full, your database stops, so better delete those <i>*_j00*_*</i> and <i>*_m00*_*</i> quickly enough!</p> Laurent Schneider http://laurentschneider.com/?p=2426 Tue Mar 28 2017 10:25:32 GMT-0400 (EDT) connect / as sysoper generates ORA-1017 http://laurentschneider.com/wordpress/2017/03/connect-as-sysoper-generates-ora-1017.html <p>Today I had the issue that I could not login as sysoper on one database, despite being in the dba and oper groups.</p> <p>The problem is that the osoper group was -probably- not selected during installation</p> <p>e.g. in 12c /AIX<br /> <b>it may be called differently on your system</b><br /> <pre><code> $ sqlplus -L -s / as sysoper ERROR: ORA-01017: invalid username/password; logon denied $ awk &#039;/H.17.*, 3/,/End/{print}&#039; $ORACLE_HOME/rdbms/lib/config.s &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.csect&nbsp;&nbsp;H.17.NO_SYMBOL{RO}, 3 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.string &quot;&quot; # End&nbsp;&nbsp; csect&nbsp;&nbsp; H.17.NO_SYMBOL{RO} </code></pre></p> <p>The string is empty. Let&#8217;s change this to oper or dba. Stopping any processes using that home is strongly recommended before relink.<br /> <pre><code> $ vi $ORACLE_HOME/rdbms/lib/config.s &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.string &quot;dba&quot; $ relink $ sqlplus -s -L / as sysoper sho user USER is &quot;PUBLIC&quot; quit $ </code></pre></p> Laurent Schneider http://laurentschneider.com/?p=2422 Tue Mar 28 2017 07:42:47 GMT-0400 (EDT) 12cR1 RAC Posts -- 8d : Registering the two databases in DataGuard Broker http://hemantoracledba.blogspot.com/2017/03/12cr1-rac-posts-8c-registering-two.html <div dir="ltr" style="text-align: left;" trbidi="on">Continuing my series on setting up a non-RAC, FileSystem Standby for a RAC, ASM Database....<br /><br />On the Standby:<br /><br /><pre>[oracle@oem132 ~]$ . oraenv<br />ORACLE_SID = [oracle] ? STBY<br />The Oracle base has been set to /u01/app/oracle<br />[oracle@oem132 ~]$ lsnrctl start<br /><br />LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 27-MAR-2017 22:24:54<br /><br />Copyright (c) 1991, 2014, Oracle. All rights reserved.<br /><br />Starting /u01/app/oracle/product/12.1.0/dbhome_1/bin/tnslsnr: please wait...<br /><br />TNSLSNR for Linux: Version 12.1.0.2.0 - Production<br />System parameter file is /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora<br />Log messages written to /u01/app/oracle/diag/tnslsnr/oem132/listener/alert/log.xml<br />Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oem132.racattack)(PORT=1521)))<br />Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))<br /><br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oem132.racattack)(PORT=1521)))<br />STATUS of the LISTENER<br />------------------------<br />Alias LISTENER<br />Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production<br />Start Date 27-MAR-2017 22:24:58<br />Uptime 0 days 0 hr. 0 min. 2 sec<br />Trace Level off<br />Security ON: Local OS Authentication<br />SNMP OFF<br />Listener Parameter File /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora<br />Listener Log File /u01/app/oracle/diag/tnslsnr/oem132/listener/alert/log.xml<br />Listening Endpoints Summary...<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oem132.racattack)(PORT=1521)))<br /> (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))<br />Services Summary...<br />Service "STBY" has 1 instance(s).<br /> Instance "STBY", status UNKNOWN, has 2 handler(s) for this service...<br />The command completed successfully<br />[oracle@oem132 ~]$ sqlplus '/ as sysdba'<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Mon Mar 27 22:25:07 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />Connected to an idle instance.<br /><br />SQL&gt; startup nomount<br />ORACLE instance started.<br /><br />Total System Global Area 838860800 bytes<br />Fixed Size 2929936 bytes<br />Variable Size 230689520 bytes<br />Database Buffers 599785472 bytes<br />Redo Buffers 5455872 bytes<br />SQL&gt; alter database mount standby database;<br /><br />Database altered.<br /><br />SQL&gt;<br />SQL&gt; show parameter dg_broker<br /><br />NAME TYPE VALUE<br />------------------------------------ ----------- ------------------------------<br />dg_broker_config_file1 string /u01/app/oracle/product/12.1.0<br /> /dbhome_1/dbs/dr1STBY.dat<br />dg_broker_config_file2 string /u01/app/oracle/product/12.1.0<br /> /dbhome_1/dbs/dr2STBY.dat<br />dg_broker_start boolean FALSE<br />SQL&gt;<br />SQL&gt; alter system set dg_broker_Start=TRUE;<br /><br />System altered.<br /><br />SQL&gt;<br /></pre><br /><br />On the first instance of the Primary :<br /><br /><pre>SQL&gt; show parameter dg_broker<br /><br />NAME TYPE VALUE<br />------------------------------------ ----------- ------------------------------<br />dg_broker_config_file1 string /u01/app/oracle/product/12.1.0<br /> /dbhome_1/dbs/dr1RAC.dat<br />dg_broker_config_file2 string /u01/app/oracle/product/12.1.0<br /> /dbhome_1/dbs/dr2RAC.dat<br />dg_broker_start boolean FALSE<br />SQL&gt; alter system set dg_broker_config_file1='+DATA/RAC/dgbroker1.dat' sid='*' scope=BOTH;<br /><br />System altered.<br /><br />SQL&gt; alter system set dg_broker_config_file2='+FRA/RAC/dgbroker2.dat' sid='*' scope=BOTH;<br /><br />System altered.<br /><br />SQL&gt; alter system set dg_broker_start=TRUE;<br /><br />System altered.<br /><br />SQL&gt;<br /><br />[oracle@collabn1 ~]$ tnsping RAC1<br /><br />TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 27-MAR-2017 22:37:41<br /><br />Copyright (c) 1997, 2014, Oracle. All rights reserved.<br /><br />Used parameter files:<br /><br /><br />Used TNSNAMES adapter to resolve the alias<br />Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC.racattack)))<br />OK (0 msec)<br />[oracle@collabn1 ~]$ sqlplus sys/racattack@STBY<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Mon Mar 27 22:37:51 2017<br /><br />Copyright (c) 1982, 2014, Oracle. All rights reserved.<br /><br />ERROR:<br />ORA-01033: ORACLE initialization or shutdown in progress<br />Process ID: 0<br />Session ID: 0 Serial number: 0<br /><br /><br />Enter user-name: sys/racattack@STBY as SYSDBA<br /><br />Connected to:<br />Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />Withe Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; exit<br />Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production<br />With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options<br />[oracle@collabn1 ~]$ tnsping RAC1<br /><br />TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 27-MAR-2017 22:38:07<br /><br />Copyright (c) 1997, 2014, Oracle. All rights reserved.<br /><br />Used parameter files:<br /><br /><br />Used TNSNAMES adapter to resolve the alias<br />Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC.racattack)))<br />OK (0 msec)<br />[oracle@collabn1 ~]$ tnsping STBY<br /><br />TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 27-MAR-2017 22:38:10<br /><br />Copyright (c) 1997, 2014, Oracle. All rights reserved.<br /><br />Used parameter files:<br /><br /><br />Used TNSNAMES adapter to resolve the alias<br />Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oem132)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = STBY)))<br />OK (0 msec)<br />[oracle@collabn1 ~]$ dgmgrl<br />DGMGRL for Linux: Version 12.1.0.2.0 - 64bit Production<br /><br />Copyright (c) 2000, 2013, Oracle. All rights reserved.<br /><br />Welcome to DGMGRL, type "help" for information.<br />DGMGRL&gt; connect sys/racattack@RAC1<br />Connected as SYSDBA.<br />DGMGRL&gt; create configuration RAC as primary database is RAC connect identifier is RAC1;<br />Configuration "rac" created with primary database "rac"<br />DGMGRL&gt; add database stby as connect identifier is stby maintained as physical;<br />Database "stby" added<br />DGMGRL&gt; enable configuration;<br />Enabled.<br />DGMGRL&gt; show configuration;<br /><br />Configuration - rac<br /><br /> Protection Mode: MaxPerformance<br /> Members:<br /> rac - Primary database<br /> stby - Physical standby database<br /> Error: ORA-16664: unable to receive the result from a database<br /><br />Fast-Start Failover: DISABLED<br /><br />Configuration Status:<br />ERROR (status updated 7 seconds ago)<br /><br />DGMGRL&gt;<br /></pre><br /><br />Errors in the STBY DataGuard Broker Logfile drcSTBY.log :<br /><br /><pre>03/27/2017 22:45:12<br />Warning: Property 'StandbyFileManagement' has inconsistent values:METADATA='MANUAL', SPFILE='', DATABASE='MANUAL'<br />Warning: Property 'ArchiveLagTarget' has inconsistent values:METADATA='0', SPFILE='', DATABASE='0'<br />Warning: Property 'LogArchiveMaxProcesses' has inconsistent values:METADATA='4', SPFILE='', DATABASE='4'<br />Warning: Property 'LogArchiveMinSucceedDest' has inconsistent values:METADATA='1', SPFILE='', DATABASE='1'<br />SPFILE is missing value for property 'LogArchiveTrace' with sid='STBY'<br />Warning: Property 'LogArchiveTrace' has inconsistent values:METADATA='0', SPFILE='(missing)', DATABASE='0'<br />SPFILE is missing value for property 'LogArchiveFormat' with sid='STBY'<br />Warning: Property 'LogArchiveFormat' has inconsistent values:METADATA='%t_%s_%r.dbf', SPFILE='(missing)', DATABASE='%t_%s_%r.dbf'<br />Failed to send message to site rac. Error code is ORA-16501.<br /></pre><br />Errors in the RAC1 DataGuard Broker Logfile drcRAC1.log :<br /><br /><pre>Site stby returned ORA-16664.<br />Data Guard Broker Status Summary:<br /> Type Name Severity Status<br /> Configuration rac Warning ORA-16607<br /> Primary Database rac Success ORA-00000<br /> Physical Standby Database stby Error ORA-16664<br /></pre><br /><br />Actions taken on the Standby :<br /><br /><pre>SQL&gt; show parameter standby<br /><br />NAME TYPE VALUE<br />------------------------------------ ----------- ------------------------------<br />standby_archive_dest string ?/dbs/arch<br />standby_file_management string MANUAL<br />SQL&gt; alter system set standby_file_management='AUTO' scope=BOTH;<br /><br />System altered.<br /><br />SQL&gt; alter system set archive_lag_target=0 scope=BOTH;<br /><br />System altered.<br /><br />SQL&gt; alte system set log_archive_max_processes=4 scope=BOTH;<br />SP2-0734: unknown command beginning "alte syste..." - rest of line ignored.<br />SQL&gt; alter system set log_archive_max_processes=4 scope=BOTH;<br /><br />System altered.<br /><br />SQL&gt; alter system set log_archive_min_succeed_dest=1 scope=BOTH;<br /><br />System altered.<br /><br />SQL&gt; alter system set log_archive_trace=0 scope=BOTH;<br /><br />System altered.<br /><br />SQL&gt; alter system set log_archive_format='%t_%s_%r.dbf' scope=BOTH;<br />alter system set log_archive_format='%t_%s_%r.dbf' scope=BOTH<br /> *<br />ERROR at line 1:<br />ORA-02095: specified initialization parameter cannot be modified<br /><br /><br />SQL&gt;<br /></pre><br /><br /><b>I also had to edit the TNSNAMES.ORA on the STBY server for the correct *VIP* entry (not the physical hostname) for the RAC1 instance.</b><br /><br /><pre>RAC1 =<br /> (DESCRIPTION =<br /> (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.78.61)(PORT = 1521))<br /> (CONNECT_DATA =<br /> (SERVER = DEDICATED)<br /> (SERVICE_NAME = RAC.racattack)<br /> )<br /> )<br /><br />RAC1_DGB =<br /> (DESCRIPTION =<br /> (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.78.61)(PORT = 1521))<br /> (CONNECT_DATA =<br /> (SERVER = DEDICATED)<br /> (SERVICE_NAME = RAC_DGMGRL)<br /> )<br /> )<br /></pre><br /><br />Thereafter, it worked. &nbsp;Note : You sometimes have to wait a while to enter the SHOW CONFIGURATION, the first result may show an error. &nbsp;So I entered it twice.<br /><br /><pre>DGMGRL&gt; disable configuration;<br />Disabled.<br />DGMGRL&gt; enable configuration;<br />Enabled.<br />DGMGRL&gt; show configuration;<br /><br />Configuration - rac<br /><br /> Protection Mode: MaxPerformance<br /> Members:<br /> rac - Primary database<br /> stby - Physical standby database<br /> Error: ORA-16664: unable to receive the result from a database<br /><br />Fast-Start Failover: DISABLED<br /><br />Configuration Status:<br />ERROR (status updated 125 seconds ago)<br /><br />DGMGRL&gt; show configuration;<br /><br />Configuration - rac<br /><br /> Protection Mode: MaxPerformance<br /> Members:<br /> rac - Primary database<br /> stby - Physical standby database<br /><br />Fast-Start Failover: DISABLED<br /><br />Configuration Status:<br />SUCCESS (status updated 14 seconds ago)<br /><br />DGMGRL&gt;<br /></pre><br /><br />These are the drcSTBY.log entries when the TNSNAMES.ORA for RAC1 was incorrect on the Standby Server :<br /><br /><pre>Failed to connect to remote database rac. Error is ORA-12541<br />Failed to send message to site rac. Error code is ORA-12541.<br /></pre><br /><br />This is the drcSTBY.log entry on success :<br /><br /><pre>03/27/2017 23:00:51<br />Apply Instance for Database stby set to STBY<br /></pre><br /><br />And the entry in drcRAC1.log on success :<br /><br /><pre>03/27/2017 23:00:10<br />DISABLE CONFIGURATION<br />03/27/2017 23:00:46<br />ENABLE CONFIGURATION<br />03/27/2017 23:00:57<br />EDIT DATABASE stby SET PROPERTY ActualApplyInstance = STBY<br />03/27/2017 23:01:00<br />Apply Instance for database stby is STBY<br /></pre><br /><br />Setting Maximum Performance mode (command issued on the *Primary*) :<br /><br /><pre>SQL&gt; alter database set standby to maximize performance;<br /><br />Database altered.<br /><br />SQL&gt;<br /><br />DGMGRL&gt; EDIT CONFIGURATION SET PROTECTION MODE AS MaxPerformance;<br />Succeeded.<br />DGMGRL&gt; show configuration;<br /><br />Configuration - rac<br /><br /> Protection Mode: MaxPerformance<br /> Members:<br /> rac - Primary database<br /> stby - Physical standby database<br /><br />Fast-Start Failover: DISABLED<br /><br />Configuration Status:<br />SUCCESS (status updated 34 seconds ago)<br /><br />DGMGRL&gt;<br />DGMGRL&gt; show configuration verbose<br /><br />Configuration - rac<br /><br /> Protection Mode: MaxPerformance<br /> Members:<br /> rac - Primary database<br /> stby - Physical standby database<br /><br /> Properties:<br /> FastStartFailoverThreshold = '30'<br /> OperationTimeout = '30'<br /> TraceLevel = 'USER'<br /> FastStartFailoverLagLimit = '30'<br /> CommunicationTimeout = '180'<br /> ObserverReconnect = '0'<br /> FastStartFailoverAutoReinstate = 'TRUE'<br /> FastStartFailoverPmyShutdown = 'TRUE'<br /> BystandersFollowRoleChange = 'ALL'<br /> ObserverOverride = 'FALSE'<br /> ExternalDestination1 = ''<br /> ExternalDestination2 = ''<br /> PrimaryLostWriteAction = 'CONTINUE'<br /><br />Fast-Start Failover: DISABLED<br /><br />Configuration Status:<br />SUCCESS<br /><br />DGMGRL&gt;<br /></pre><br /><br />Will be testing Redo Transmission and Apply later.<br />.<br />.<br />.<br /><br /></div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-5102527130750068001 Mon Mar 27 2017 11:19:00 GMT-0400 (EDT) Index out of range https://jonathanlewis.wordpress.com/2017/03/27/index-out-of-range/ <p>I&#8217;ve waxed lyrical in the past about creating suitable column group statistics whenever you drop an index because even when the optimizer doesn&#8217;t use an index in its execution path it might have used the number of distinct keys of the index (<em><strong>user_indexes.distinct_keys</strong></em>) in its estimates of cardinality.</p> <p>I&#8217;ve also highlighted various warnings (<a href="https://jonathanlewis.wordpress.com/2012/04/11/extended-stats/"><em><strong>here</strong></em></a> (with several follow-on URLs) and <a href="https://jonathanlewis.wordpress.com/2015/11/05/column-groups/"><em><strong>here</strong></em></a>) about when the optimizer declines to use column group statistics. One of those cases is when a predicate on one of the columns goes &#8220;out of¬† range&#8221; &#8211; i.e. is below the column <em><strong>low_value</strong></em> or above the column <em><strong>high_value</strong></em>. Last night it suddenly crossed my mind that if we drop an index and replace it with a column group we might see an example of inconsistent behaviour: what happens when the index exists but the predicate is out of range &#8211; would you find that dropping the index and replacing it with a column group would give you different cardinality estimates for out of range predicates ?</p> <p>Here&#8217;s the demonstration of what happened when I created a simple test on 12.1.0.2:</p> <pre class="brush: plain; title: ; notranslate"> rem rem Script: index_v_colgrp.sql rem Author: Jonathan Lewis rem rem Last tested rem 12.1.0.2 rem create table t1 nologging as with generator as ( select rownum id from dual connect by level &lt;= 1e4 ) select rownum id, mod(rownum-1,100) n1, mod(rownum-1,100) n2, lpad('x',100,'x') padding from generator v1, generator v2 where rownum &lt;= 1e6 -- &gt; comment to avoid WordPress format problem ; begin dbms_stats.gather_table_stats( ownname =&gt; user, tabname =&gt;'T1', method_opt =&gt; 'for all columns size 1' ); end; / create index t1_i1 on t1(n1, n2); set autotrace traceonly explain </pre> <p>I&#8217;ve created a table with 1M rows, where <em><strong>n1</strong></em> and <em><span style="text-decoration:underline;"><strong>n2</strong></span></em> are perfectly correlated &#8211; there are 100 distinct pairs of values (ranging from (0,0) to (99,99)). Now with <em><strong>autotrace</strong> </em>enabled I&#8217;ll execute three queries &#8211; two with an index on the table of which one will be the baseline plan for predicates that are &#8220;in-range&#8221; and the other will take the predicates out of range, and the third after I&#8217;ve dropped the index and substituted a matching column group to see what I get for the &#8220;out of range&#8221; plan. The plans may produce different paths as the index disappears, of course, but what we&#8217;re only interested in the cardinality estimates in this experiment.</p> <p>Here&#8217;s the code to run the three queries:</p> <pre class="brush: plain; title: ; notranslate"> select padding from t1 where n1 = 50 and n2 = 50 ; select padding from t1 where n1 = 110 and n2 = 110 ; drop index t1_i1; begin dbms_stats.gather_table_stats( ownname =&gt; user, tabname =&gt;'T1', method_opt =&gt; 'for columns (n1, n2) size 1' ); end; / select padding from t1 where n1 = 110 and n2 = 110 ; </pre> <p>And the three execution plans:</p> <pre class="brush: plain; title: ; notranslate"> -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 10000 | 1044K| 2142 (4)| 00:00:01 | |* 1 | TABLE ACCESS FULL| T1 | 10000 | 1044K| 2142 (4)| 00:00:01 | -------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(&quot;N1&quot;=50 AND &quot;N2&quot;=50) --------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 79 | 8453 | 83 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID BATCHED| T1 | 79 | 8453 | 83 (0)| 00:00:01 | |* 2 | INDEX RANGE SCAN | T1_I1 | 79 | | 3 (0)| 00:00:01 | --------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access(&quot;N1&quot;=110 AND &quot;N2&quot;=110) -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 79 | 8453 | 2142 (4)| 00:00:01 | |* 1 | TABLE ACCESS FULL| T1 | 79 | 8453 | 2142 (4)| 00:00:01 | -------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(&quot;N1&quot;=110 AND &quot;N2&quot;=110) </pre> <p>In summary:</p> <ul> <li>With the index in place and the predicates in range the optimizer used <em><strong>user_indexes.</strong><strong>distinct_keys</strong></em> to calculate cardinality.</li> <li>With the index in place and the predicates (or just one of them, in fact) out of range the optimizer used the individual column selectivities with linear decay.</li> <li>With a column group instead of an index the optimizer behaved exactly as it used to with the index in place.</li> </ul> <p>So my concern that substituting column groups for indexes was unfounded &#8211; the optimizer was being silly (legal disclaimer: that&#8217;s just my opinion) with indexes, and the silly (ditto) behaviour with column groups hasn&#8217;t changed anything.</p> <p>I&#8217;ll have to go back a couple of versions of Oracle to repeat these tests &#8211; maybe this behaviour with <em><strong>user_indexes.distinct_keys</strong></em> in place is relatively recent, but it&#8217;s another reason why execution plans may change suddenly and badly as time passes when <a href="https://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/"><em><strong>&#8220;nothing changed&#8221;</strong></em></a>.</p> <p>&nbsp;</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16943/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16943/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16943&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16943 Mon Mar 27 2017 03:42:59 GMT-0400 (EDT) What Oracle DBAs Need to Learn in Oracle Cloud Platform? http://www.fahdmirza.com/2017/03/what-oracle-dbas-need-to-learn-in.html <div dir="ltr" style="text-align: left;" trbidi="on">The transition from Oracle on-premises DBA to Oracle Cloud DBA is imminent for many of us. In fact, IMHO; the existing Oracle DBAs would have to manage database both on-premises and in cloud for a long time.<br /><br />So what Oracle DBA needs to learn in Oracle Cloud Platform? If you visit the <a href="https://cloud.oracle.com/">Oracle Cloud website</a>, it's a mouthful and more. Its very easy to get bogged down as there are lots of things to learn it seems at first.<br /><br />The good news is that as an experienced Oracle DBA you know most of things already. So just brush up your basic concept of cloud computing and then start from the following cloud offerings from Oracle Cloud Platform:<br /><br /><ul style="text-align: left;"><li>Database Cloud Schema Service</li><li>Database Cloud Database as a Service</li><li>Database Backup Cloud Service</li></ul><br />Read about above as much as possible, and if you get a chance play with them. You would be surprised to find out that you know almost everything about these things as they are built upon the existing Oracle technologies.<br /><br />One thing which is a must for this brave new world of Oracle Cloud DBA (OCDBA) in Oracle Cloud Platform or in any other cloud platform is to know how to migrate an Oracle database to Oracle Cloud (or any other cloud for that matter.) For this purpose, make sure you understand the following concepts:<br /><br /><ul style="text-align: left;"><li>Oracle Goldengate</li><li>Oracle Datapump</li><li>Oracle Secure External Password Store</li><li>Oracle Connection Manager</li><li>RMAN</li><li>Oracle Cloud Control</li></ul><br />If all of above is ready, you are all good to go! :) </div> Fahd Mirza tag:blogger.com,1999:blog-3496259157130184660.post-7026814524391756668 Mon Mar 27 2017 02:28:00 GMT-0400 (EDT) 12.2 Online Conversion of a Non-Partitioned Table to a Partitioned Table (A Small Plot Of Land) https://richardfoote.wordpress.com/2017/03/27/12-2-online-conversion-of-a-non-partitioned-table-to-a-partitioned-table-a-small-plot-of-land/ In my previous post, I discussed how you can now move heap tables online with Oracle Database 12.2 and how this can be very beneficial in helping to address issues with the Clustering Factor of key indexes. A¬†problem with this technique is that is requires the entire table to be effectively reorganised when most of [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=richardfoote.wordpress.com&#038;blog=2301564&#038;post=4179&#038;subd=richardfoote&#038;ref=&#038;feed=1" width="1" height="1" /> Richard Foote http://richardfoote.wordpress.com/?p=4179 Sun Mar 26 2017 19:46:47 GMT-0400 (EDT)