ODTUG Aggregator ODTUG Blogs http://localhost:8080 Fri, 24 Mar 2017 09:57:03 +0000 http://aggrssgator.com/ Auto REST with ORDS: An Overview and What‚Äôs Next? http://www.thatjeffsmith.com/archive/2017/03/auto-rest-with-ords-an-overview-and-whats-next/ <p>In the current issue of <a href="https://t.co/aBFp1uh2QG" target="_blank">Oracle Magazine, you can read all about how to get started with the Auto REST</a> feature of Oracle REST Data Services&#8230;or in other words, how to automatically make Tables and Views available via REST APIs.</p> <p>A table or view is very easy to consider as a resource in the REST model. What ORDS does is allows you to interact with them via GET, PUT, POST, and DELETE &#8211; without writing any code. That&#8217;s why we call it &#8216;Auto.&#8217;</p> <div id="attachment_6111" style="width: 1042px" class="wp-caption aligncenter"><a href="https://t.co/aBFp1uh2QG"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/ords-rest-oraclemag.png" alt="" width="1032" height="740" class="size-full wp-image-6111" /></a><p class="wp-caption-text">It&#8217;s like a blog, but my grammar is better.</p></div> <h3>This is Where Auto REST Starts</h3> <p>This concept of making database resources automatically available via ORDS has started with tables and views. I think that&#8217;s the natural place TO start, but it doesn&#8217;t end there.</p> <p>And there is a very good case to be made about how one could better interface with their data in the Oracle domain. I&#8217;ll let one of our advocates speak for himself&#8230;</p> <blockquote class="twitter-tweet" data-partner="tweetdeck"> <p lang="en" dir="ltr"><a href="https://twitter.com/OracleSQLDev">@OracleSQLDev</a> making it as easy as possible to use REST with tables and views. But still good to build <a href="https://twitter.com/hashtag/PLSQL?src=hash">#PLSQL</a> APIs around 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;" /> <a href="https://t.co/dLtCIMnUPx">https://t.co/dLtCIMnUPx</a></p> <p>&mdash; Steven Feuerstein (@sfonplsql) <a href="https://twitter.com/sfonplsql/status/844932523377479681">March 23, 2017</a></p></blockquote> <p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p> <p>So, how does a stored procedure fit into this world?</p> <!-- 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>A stored procedure can do anything, or even nothing! So how do we map things like a GET or PUT onto a piece of code that just executes? For an upcoming version of ORDS, we will allow you to make your stored procedures available via POST calls. Your POST call will execute the &#8216;Auto&#8217; enabled PL/SQL object.</p> <p>If this sounds like RPC, then that&#8217;s probably because this is what that basically is.</p> <ul> <li>Execute via POST</li> <li>Pass parameters via BODY {json} <li>Output returned as {json}</li> <ul> <li>REFURSORs? CHECK</li> <li>Complex types, SDO_GEOMETRY, Intervals, Custom types? Check-check-check, and CHECK</li> </ul> </ul> <p>Here&#8217;s some PL/SQL I want to have at&#8230;</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="plsql"><pre class="de1"><span class="kw1">CREATE</span> <span class="kw1">OR</span> <span class="kw2">REPLACE</span> <span class="kw1">FUNCTION</span> refcursor_function <span class="kw1">RETURN</span> SYS_REFCURSOR <span class="kw1">AS</span> c SYS_REFCURSOR<span class="sy0">;</span> <span class="kw1">BEGIN</span> <span class="kw1">OPEN</span> c <span class="kw1">FOR</span> <span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> hr<span class="sy0">.</span>job_runs<span class="sy0">;</span> <span class="co1">-- i know, don't do SELECT * FROM!!!</span> <span class="kw1">RETURN</span> c<span class="sy0">;</span> <span class="kw1">END</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div> <p>So I&#8217;ll make this available via PL/SQL API to ORDS (ORDS.ENABLE_OBJECT) or via SQL Developer&#8230;and then I can make my POST call.</p> <div id="attachment_6112" style="width: 595px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/post-plsql.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/post-plsql.png" alt="" width="585" height="671" class="size-full wp-image-6112" /></a><p class="wp-caption-text">Something we&#8217;re working on for a future ORDS release.</p></div> <p>You can see in the response body the REFCURSOR that&#8217;s been returned &#8211; and you&#8217;ll notice it hands timestamp and interval data types with no problems whatsoever. </p> <p>I&#8217;ll go into more details once this feature is officially available. But if you already had a PL/SQL package for managing your table or all tables, you&#8217;d simply enable ORDS access to this PL/SQL, and away you&#8217;d go.</p> <h3>Ok, but what&#8217;s next after that?</h3> <p>We&#8217;re working on a few &#8211; ok, make that a LOT &#8211; of things. Things like making the entire database available via REST APIs. Want a list of sessions, an ASH report, or a list of RMAN backups? That kind of stuff. Or maybe you want to be able to just execute SQL via REST. </p> <p>If you&#8217;re going to be in <a href="http://info.insum.ca/en/oracle-developer-day-montreal" target="_blank">Montreal</a>, <a href="https://www.neooug.org/gloc/" target="_blank">Cleveland</a>, or <a href="http://kscope17.com/" target="_blank">San Antonio</a> over the next few months, you can find people like me and <a href="https://twitter.com/krisrice" target="_blank">Kris </a>there at Oracle conference events talking about this stuff. </p> thatjeffsmith http://www.thatjeffsmith.com/?p=6110 Thu Mar 23 2017 12:18:11 GMT-0400 (EDT) OUG Ireland : The Journey Begins http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/BzC_kobhKS8/ <p><img class="alignnone size-full wp-image-6795" src="https://oracle-base.com/blog/wp-content/uploads/2017/01/ougire17-hp-804x162-vta-v2.gif" alt="" width="804" height="162" /></p> <p>There is something about early starts that get me so nervous I can&#8217;t sleep properly. As a result I was awake before my 05:00 alarm, which gave me plenty of time to get ready. That¬†was good because I hadn&#8217;t packed up laptop bag, which was also acting as my overnight bag. <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 taxi ride to the airport was pretty standard, but I did have a conversation about <a href="https://en.wikipedia.org/wiki/Roza_Bal">Roza Bal</a> in Kashmir.</p> <p>I only had hand luggage, so I didn&#8217;t have to wait for the bag drop and security was mercifully quick. They did an explosives test on my phone, but ignored my laptop, cameras and huge power bank. Go figure&#8230;</p> <p>Boarding happened on time and there was a gap in our row, so I was able to get the laptop out, which is always a bonus. The flight took about 40 minutes and was generally uneventful.</p> <p>The journey from Dublin Airport to the conference venue was pretty simple. The AirLink Express takes you straight to the Gresham Hotel, so no drama there.</p> <p>It is easier and cheaper for me to get to the OUG Ireland events than it is to get to London events. <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 arrived, registered and went straight to the first session, but that&#8217;s another blog post! <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/23/oug-ireland-the-journey-begins/">OUG Ireland : The Journey Begins</a> was first posted on March 23, 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 /><img src="http://feeds.feedburner.com/~r/TheOracleBaseBlog/~4/BzC_kobhKS8" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=7007 Thu Mar 23 2017 07:01:58 GMT-0400 (EDT) min/max Upgrade https://jonathanlewis.wordpress.com/2017/03/23/minmax-upgrade/ <p>A question came up on the OTN database forum a little while ago about <a href="http://community.oracle.com/thread/4019538"><em><strong>a very simple query that was taking different execution paths</strong></em></a> on two databases with the same table and index definitions and similar data. In one database the plan used the <em>&#8220;index full scan (min/max)&#8221;</em> operation while the other database used a brute force <em>&#8220;index fast full scan&#8221;</em> operation.</p> <p>In most circumstances the starting point to address a question like this is to check whether some configuration details, or some statistics, or the values used in the query are sufficiently different to result in a significant change in costs; and the first simple procedure you can follow is to hint each database to use the plan from the opposite database to see if this produces any clues about the difference &#8211; it&#8217;s a good idea when doing this test to use one of the more <a href="https://jonathanlewis.wordpress.com/2008/03/06/dbms_xplan3/"><em><strong>verbose formatting options</strong></em></a> for the call to <em><strong>dbms_xplan</strong></em>.</p> <p>In this case, though, the OP discovered a note on MoS reporting exactly the problem he was seeing:</p> <p style="padding-left:30px;"><em>Doc ID 2144428.1: <span id="kmPgTpl:r1:0:ol22" class="xq">Optimizer Picking Wrong &#8216;INDEX FAST FULL SCAN&#8217; Plan vs Correct &#8216;INDEX FULL SCAN (MIN/MAX)&#8217;</span></em></p> <p>which referred to</p> <p style="padding-left:30px;"><em>Bug 22662807: OPTIMIZER PICKING INDEX FFS CAN INSTEAD OF MIN/MAX</em></p> <p>Conveniently the document suggested a few workarounds:</p> <ul> <li>alter session set optimizer_features_enable = &#8216;11.2.0.3&#8217;;</li> <li>alter session set &#8220;_fix_control&#8221; = &#8216;13430622:off&#8217;;</li> <li>delete object stats [Ed: so that dynamic sampling takes place &#8230; maybe a /*+ dynamic_sampling(alias level) */ hint would suffice].</li> </ul> <p>Of the three options my preference would (at least in the short term) be the _fix_control one. Specifically, from the <a href="https://jonathanlewis.wordpress.com/2009/12/22/optimizer-features/"><em><strong>v$system_fix_control</strong></em></a> view, we can see that it addresses the problem very precisely with the description: <em>&#8220;index min/max cardinality estimate fix for filter predicates&#8221;</em>.</p> <p>The example in the bug note showed a very simple statement (even more simple than the OP&#8217;s query which was only a single table query anyway), so I thought I&#8217;d build a model and run a few tests to see what was going on. Luckily, before I&#8217;d started work, one of the other members of the Oak Table network sent an email to the list asking if anyone knew how the optimizer was costing an example he&#8217;d constructed &#8211; and I&#8217;ve finally got around to looking at his example, and here&#8217;s the model and answer(s), starting with the data set:</p> <pre class="brush: plain; title: ; notranslate"> rem rem Script: test_min_max.sql rem Dated: March 2017 rem rem Last tested rem 12.1.0.2 rem 11.2.0.4 rem 11.2.0.3 rem create table min_max_test nologging as with ids as ( select /*+ Materialize */ rownum id from dual connect by rownum &lt;= 50000 -- &gt; comment to protect formatting ), line_nrs as ( select /*+ Materialize */ rownum line_nr from dual connect by rownum &lt;= 20 -- &gt; comment to protect formatting ) select id, line_nr ,rpad(' ', 800, '*') data from line_nrs, ids order by line_nr, id ; begin dbms_stats.gather_table_stats( ownname =&gt; user, tabname =&gt;'min_max_test', method_opt =&gt; 'for all columns size 1' ); end; / create index mmt_ln_id on min_max_test (line_nr, id) nologging; create index mmt_id on min_max_test (id) nologging; </pre> <p>The table has two critical columns: each <em><strong>id</strong> </em>has 20 <em><strong>line_nr</strong></em> values associated with it, but the way the data was generated means that the line numbers for a given <em><strong>id</strong></em> are scattered across 20 separate table blocks.</p> <p>There are two indexes &#8211; one on the <em><strong>id</strong></em> which will allow us to find all the rows for a given <em><strong>id</strong></em> as efficiently as possible, and one (slightly odd-looking in this context) that would allow us to find a specific row for a given <em><strong>line_nr</strong></em> and <em><strong>id</strong></em> very efficiently. Two things about these indexes &#8211; in a live application they should both be compressed on the first (only, in the case of index <em><strong>mmt_id</strong></em>) column, and secondly the necessity of the <em><strong>mmt_id</strong></em> index is questionable and it might be an index you could drop if you reversed the order of the columns in <em><strong>mmt_ln_id</strong></em>. The thing about these indexes, though, is that they allow us to demonstrate a problem. So let&#8217;s query the data &#8211; twice, hinting each index in turn:</p> <pre class="brush: plain; title: ; notranslate"> set serveroutput off select /*+ index(t(id)) */ min(line_nr) from min_max_test t where id = :b1 ; select * from table(dbms_xplan.display_cursor); select /*+ index(t(line_nr, id)) */ min(line_nr) from min_max_test t where id = :b1 ; select * from table(dbms_xplan.display_cursor); </pre> <p>It&#8217;s fairly safe to make a prediction about the execution plan and cost of the first query &#8211; it&#8217;s likely to be a range scan that accesses a couple of branch blocks, a leaf block and 20 separate table blocks followed by a &#8220;sort aggregate&#8221; &#8211; with a cost of about 23.</p> <p>It&#8217;s a little harder to make a prediction about the second query. The optimizer could infer that the <em><strong>min(line_nr)</strong></em> has to be close to the left hand section of the index, and could note that the number of rows in the table is the same as the product of the number of distinct values of the two separate columns, and it might note that the <em><strong>id</strong></em> column is evenly distributed (no histogram) across the data, so it might &#8220;guess&#8221; that it need only range scan all the entries for the first <em><strong>line_nr</strong></em> to find the appropriate <em><strong>id</strong></em>. So perhaps the optimizer will use the index min/max range scan with a cost that is roughly 2 branch blocks plus total leaf blocks / 20 (since there are 20 distinct values for <em><strong>line_nr</strong></em>); maybe it would divide the leaf block estimate by two because &#8220;on average&#8221; &#8211; i.e. for repeated random selections of value for <em><strong>id &#8211;</strong></em> it would have to scan half the leaf blocks. There were 2,618 leaf blocks in my index, so the cost should be close to either 133 or 68.</p> <p>Here are the two plans &#8211; range scan first, min/max second:</p> <pre class="brush: plain; title: ; notranslate"> select /*+ index(t(id)) */ min(line_nr) from min_max_test t where id = :b1 ----------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 23 (100)| | | 1 | SORT AGGREGATE | | 1 | 8 | | | | 2 | TABLE ACCESS BY INDEX ROWID BATCHED| MIN_MAX_TEST | 20 | 160 | 23 (0)| 00:00:01 | |* 3 | INDEX RANGE SCAN | MMT_ID | 20 | | 3 (0)| 00:00:01 | ----------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - access(&quot;ID&quot;=:B1) select /*+ index(t(line_nr, id)) */ min(line_nr) from min_max_test t where id = :b1 ----------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 22 (100)| | | 1 | SORT AGGREGATE | | 1 | 8 | | | | 2 | FIRST ROW | | 1 | 8 | 22 (0)| 00:00:01 | |* 3 | INDEX FULL SCAN (MIN/MAX)| MMT_LN_ID | 1 | 8 | 22 (0)| 00:00:01 | ----------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - filter(&quot;ID&quot;=:B1) </pre> <p>Spot on with the estimate for the simple range scan &#8211; but what did we do wrong with the estimate for the min/max scan ? You might notice in the first example the <em>&#8220;table access by rowid batched&#8221;</em> and realise that this is running on 12c. Here&#8217;s the plan if I get if I set the <em><strong>optimizer_features_enable</strong></em> back to 11.2.0.3 before running the second query again:</p> <pre class="brush: plain; title: ; notranslate"> select /*+ index(t(line_nr, id)) */ min(line_nr) from min_max_test t where id = :b1 ----------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 136 (100)| | | 1 | SORT AGGREGATE | | 1 | 8 | | | | 2 | FIRST ROW | | 1 | 8 | 136 (1)| 00:00:01 | |* 3 | INDEX FULL SCAN (MIN/MAX)| MMT_LN_ID | 1 | 8 | 136 (1)| 00:00:01 | ----------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - filter(&quot;ID&quot;=:B1) </pre> <p>Using the 11.2.0.3 optimizer model the plan has a cost that&#8217;s very close to our prediction &#8211; we&#8217;ll see why there&#8217;s a slight difference in a moment. If we set the <em><strong>optimizer_features_enable</strong></em> to 11.2.0.4 the cost drops back to 22. So for our example 11.2.0.3 will use the simple &#8220;index range scan&#8221; and an upgrade to 11.2.0.4 (or higher) will switch to the &#8220;index full scan (min/max)&#8221;. If you look at the OTN posting the impact of the change in costing is exactly the other way around &#8211; 11.2.0.3 uses the min/max path, 11.2.0.4 uses the simple index range scan.</p> <h3>The techy bit</h3> <p>You really don&#8217;t need to know this &#8211; experimenting with the <strong><em>optimizer_features_enable</em></strong> (or <em><strong>_fix_control</strong></em>) will give you plans that show you all the numbers you need to see to check whether or not you&#8217;ve run into this particular problem &#8211; but if you&#8217;re interested here&#8217;s a little bit from the two 10053 trace files. We need only look at a few critical lines. From the 11.2.0.3 costing for the min/max scan:</p> <pre class="brush: plain; title: ; notranslate"> Index Stats:: Index: MMT_ID Col#: 1 LVLS: 2 #LB: 2202 #DK: 50000 LB/K: 1.00 DB/K: 20.00 CLUF: 1000000.00 NRW: 1000000.00 Index: MMT_LN_ID Col#: 2 1 LVLS: 2 #LB: 2618 #DK: 1000000 LB/K: 1.00 DB/K: 1.00 CLUF: 125000.00 NRW: 1000000.00 SINGLE TABLE ACCESS PATH Single Table Cardinality Estimation for MIN_MAX_TEST[T] Column (#1): ID(NUMBER) AvgLen: 5 NDV: 50536 Nulls: 0 Density: 0.000020 Min: 1.000000 Max: 50000.000000 Table: MIN_MAX_TEST Alias: T Card: Original: 1000000.000000 Rounded: 20 Computed: 19.787874 Non Adjusted: 19.787874 ****** Costing Index MMT_LN_ID Access Path: index (Min/Max) Index: MMT_LN_ID resc_io: 135.000000 resc_cpu: 961594 ix_sel: 1.000000 ix_sel_with_filters: 1.9788e-05 Cost: 135.697679 Resp: 135.697679 Degree: 1 </pre> <p>I was running 12.1.0.2 so there were a few extra bits and pieces that I&#8217;ve deleted (mostly about SQL Plan Directives and in-memory). Critically we can see that the stats collection has a small error for the ID column &#8211; 50,536 distinct values (NDV) instead of exactly 50,000. This seems to have given us a cost for the expected index range of: 2 <em>(blevel)</em> + ceiling(2618 <em>(leaf blocks)</em> * 50536 / 1000000) = 2 + ceil(132.3) = 135, to which we add a bit for the CPU and get to 136. (<a href="https://en.wikipedia.org/wiki/Q.E.D."><em><strong>Q.E.D.</strong></em></a>)</p> <p>Then we switch to costing for 11.2.0.4:</p> <pre class="brush: plain; title: ; notranslate"> SINGLE TABLE ACCESS PATH Single Table Cardinality Estimation for MIN_MAX_TEST[T] Column (#1): ID(NUMBER) AvgLen: 5 NDV: 50536 Nulls: 0 Density: 0.000020 Min: 1.000000 Max: 50000.000000 Table: MIN_MAX_TEST Alias: T Card: Original: 1000000.000000 Rounded: 20 Computed: 19.787874 Non Adjusted: 19.787874 ****** Costing Index MMT_LN_ID Access Path: index (Min/Max) Index: MMT_LN_ID resc_io: 21.787874 resc_cpu: 156872 ix_sel: 1.000000 ix_sel_with_filters: 1.9788e-05 Cost: 22.324608 Resp: 22.324608 Degree: 1 </pre> <p>We still have the small error in the number of distinct values for <em><strong>id</strong></em>, so the estimated number of rows that we need to access from the table for a given <em><strong>id</strong></em> (before &#8220;aggregating&#8221; to find its minimum <em><strong>line_nr</strong></em>) is 19.787874 (Computed: / Non Adjusted:) rather than exactly 20. Notice, then, that the cost of using the index is 19.787874 + 2 which looks suspiciously like adding the <em><strong>blevel</strong></em> to the number of table blocks to get a cost and forgetting that we might have to kiss a lot of frogs before we find the prince. Basically, in this example at least, it looks like the costing algorithm has NOTHING to do with the mechanics of what actually has to happen at run-time.</p> <h3>Footnote</h3> <p>This is only an initial probe into what&#8217;s going on with the min/max scan; there are plenty more patterns of data that would need to be tested before we could have any confidence that we had produced a generic model of how the optimizer does its calculations &#8211; the only thing to note so far is that there IS a big change as¬† you move from 11.2.0.3 to later versions: the case on OTN showed the min/max scan disappearing on the <em><strong>upgrade</strong></em>, the example above shows the min/max disappearing on the <em><strong>downgrade</strong></em> &#8211; either change could be bad news for parts of a production system.</p> <p>There are a couple of related bugs that might also be worth reviewing.</p> <ul> <li>Bug 11834402 : CBO CHOOSES A SLOW INDEX FULL SCAN OVER A MUCH FASTER INDEX RANGE SCAN</li> <li>Bug 13430622 : INDEX SCAN IN VERY SLOW FOR ONE PREDICATE AND FAST FOR OTHERS</li> </ul> <p>There is a note, though that this last bug was fixed in 12.1</p> <h3>Footnote 2</h3> <p>When experimenting, one idea to pursue as the models get more complex and you&#8217;re using indexes with more than two columns is to test whether the presence of carefully chosen column group statistics might make a difference to the optimizer&#8217;s estimates of cardinality (hence cost) of the min/max scan.</p> <p>&nbsp;</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16867/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16867/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16867&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16867 Thu Mar 23 2017 04:53:13 GMT-0400 (EDT) Oracle BPM: Time for Time Out http://kettenisblogs.blogspot.com/2017/03/oracle-bpm-time-for-time-out.html <div dir="ltr" style="text-align: left;" trbidi="on"><i>In this posting I describe how to time out a specific BPM scope with the option to re-initiate the timer.</i><br /><br />In case you need to model a time out for a specific scope within a process where you want to be able to modify the time out run-time, then you can model it similar to this:<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-WWdayIyGilY/WNKpNFHYzHI/AAAAAAAAA6o/C8QbbX_zXYgvoqzNL08LehpfbcNMhYwuACLcB/s1600/reinitiateTimer01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="218" src="https://2.bp.blogspot.com/-WWdayIyGilY/WNKpNFHYzHI/AAAAAAAAA6o/C8QbbX_zXYgvoqzNL08LehpfbcNMhYwuACLcB/s400/reinitiateTimer01.jpg" width="400" /></a></div><br />A parallel flow is used where the top flow covers the main process, and the bottom flow handles the timeout. To make the timeout configurable, the bottom flow uses an Event Gateway with a Message event to interrupt timer and re-initiate it again. The first of the two flows that reaches the Complex Merge aborts the other one (first come, first served), as configured in the Complex Merge:<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-pyfPALJxb9Y/WNKpfNNOv2I/AAAAAAAAA6w/8P5KFVr6--QzC9YDTC5A4HzRWN7rUtbmACLcB/s1600/reinitiateTimer02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="157" src="https://2.bp.blogspot.com/-pyfPALJxb9Y/WNKpfNNOv2I/AAAAAAAAA6w/8P5KFVr6--QzC9YDTC5A4HzRWN7rUtbmACLcB/s200/reinitiateTimer02.png" width="200" /></a></div><br /><b>Note</b>: If you want re-initiation to happen based on a Signal, than you cannot use that in an Event Gateway. However, as a work-around you can define a separate component in the composite that is subscribed to the Signal event, and then calls the "Reinitiation Requested" Message Start event.<br /><br /><h4 style="text-align: left;">Time Out Flow</h4>The timer is configured using an expression that results in a duration:<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-sQuqGRERV0c/WNKprRURN7I/AAAAAAAAA60/-R4fZKW8tFwMiurhShCu_SsLtN3iiAnyQCLcB/s1600/reinitiateTimer03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="185" src="https://1.bp.blogspot.com/-sQuqGRERV0c/WNKprRURN7I/AAAAAAAAA60/-R4fZKW8tFwMiurhShCu_SsLtN3iiAnyQCLcB/s200/reinitiateTimer03.png" width="200" /></a></div><br />Furthermore you need some variable that is initiated in the Start operation as false, e.g. called a "mainProcessTimesOut":<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-KTqQsQ4PKhU/WNKpxYXvPCI/AAAAAAAAA64/CrAKcBOqk1U9ESNAfdACFKHQdiRWJmzaQCLcB/s1600/reinitiateTimer04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="211" src="https://3.bp.blogspot.com/-KTqQsQ4PKhU/WNKpxYXvPCI/AAAAAAAAA64/CrAKcBOqk1U9ESNAfdACFKHQdiRWJmzaQCLcB/s320/reinitiateTimer04.png" width="320" /></a></div><br /><br />"mainProcessTimeOut" is set to true in the "Set Timed Out" Script activity, and used in the "timed out?" Exclusive Gateway to go to the "End" or "Timed Out" End event.<br /><br /><h4 style="text-align: left;">Reinitiate Flow</h4>The "Reinitiation Requested" Message Catch event exposes a "reinitiateTimer" operation that takes the new expiry duration as input, plus an id to correlate the instance:<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-SZDZQsB6Z54/WNKp-NdYO7I/AAAAAAAAA68/YsVo-nw_M6Ykkcb25nVGAZpPG4UTJZ8bACLcB/s1600/reinitiateTimer05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="265" src="https://4.bp.blogspot.com/-SZDZQsB6Z54/WNKp-NdYO7I/AAAAAAAAA68/YsVo-nw_M6Ykkcb25nVGAZpPG4UTJZ8bACLcB/s320/reinitiateTimer05.png" width="320" /></a></div><br /><br />As the "Reinitiation Requested" Message Catch is only activated in case re-initialization of the timer is requested, the condition of the no-flow from "reinitiate?" can simply be set to false, and the yes-flow as the default.&nbsp;</div> Jan Kettenis tag:blogger.com,1999:blog-33270406.post-5987968863670128381 Wed Mar 22 2017 12:47:00 GMT-0400 (EDT) Consume WebLogic Server RESTFul Management Services with ELK http://dirknachbar.blogspot.com/2017/03/consume-weblogic-server-restful.html In several of my projects for Oracle WebLogic Server and Oracle Fusion Middleware Environments a main topic is the monitoring.<br />Oracle provides with the Oracle Enterprise Manager Cloud Control are really powerful solution to monitor Oracle WebLogic Server and Oracle Fusion Middleware Environments, but the disadvantage is the huge license cost for the necessary Management Packs for Oracle WebLogic / Fusion Middleware. Moreover in many small to midrange sized environments the Oracle Enterprise Manager Cloud Control can be an overkill and due to the license costs for the Management Packs a no-go.<br /><br />There are several solutions on the market, some commercial and some open source, for Oracle WebLogic Server Monitoring.<br /><br />I will show you a short test case, how to consume Oracle WebLogic Server RESTFul Management Services with the so called ELK Stack (Elasticsearch / Logstash / Kibana). How to setup the ELK stack, just check Google or the documentation on elastic.co&nbsp;<a href="https://www.elastic.co/guide/en/elastic-stack/current/index.html" target="_blank">https://www.elastic.co/guide/en/elastic-stack/current/index.html</a><br /><br />My environment is as follows:<br /><br /><ul><li>Ubuntu 16.04 server named "monitoring" which is hosting my ELK Stack</li><li>Oracle Enterprise Linux named "wls12212" which is hosting my Oracle WebLogic Server with a Domain called demo_domain</li><ul><li>AdminServer running on Port 7001</li></ul></ul><div>On the ELK server monitoring add a Logstash configuration file wls-rest.conf under /etc/logstash/conf.d<br />For this I will use the Input Plugin http_poller (see&nbsp;<a href="https://www.elastic.co/guide/en/logstash/current/plugins-inputs-http_poller.html" target="_blank">https://www.elastic.co/guide/en/logstash/current/plugins-inputs-http_poller.html</a>)</div><br /><pre class="brush:bash">input {<br /> http_poller {<br /> urls =&gt; {<br /> test1 =&gt; {<br /> method =&gt; get<br /> # define the RESTFul Management Service URL<br /> url =&gt; "http://wls12212:7001/management/wls/latest/servers"<br /> headers =&gt; {<br /> Accept =&gt; "application/json"<br /> }<br /> # Define the Basic Authentication against the WebLogic Server<br /> auth =&gt; {<br /> user =&gt; "weblogic"<br /> password =&gt; "welcome01"<br /> }<br /> }<br /> }<br /> request_timeout =&gt; 30<br /> # poll every 60 seconds the metrics<br /> interval =&gt; 60<br /> # Set the Codec to json<br /> codec =&gt; "json"<br /> metadata_target =&gt; "http_poller_metadata"<br /> }<br />}<br /><br />output {<br /> # Output to elasticsearch<br /> elasticsearch { hosts =&gt; ["localhost:9200"] }<br /> # Output to stdout<br /> stdout { codec =&gt; rubydebug }<br />}<br /></pre><br /><br />Now we can start our logstash process on the ELK server monitoring <br /><br /><pre class="brush:bash">/opt/logstash/bin/logstash -f /etc/logstash/conf.d/wls-rest.conf<br />Settings: Default pipeline workers: 1<br />Pipeline main started<br />{<br /> "items" =&gt; [<br /> [0] {<br /> "heapFreeCurrent" =&gt; 188998424,<br /> "heapSizeCurrent" =&gt; 374341632,<br /> "usedPhysicalMemory" =&gt; 3520323584,<br /> "jvmProcessorLoad" =&gt; 0,<br /> "health" =&gt; {<br /> "state" =&gt; "ok"<br /> },<br /> "activeHttpSessionCount" =&gt; 0,<br /> "activeThreadCount" =&gt; 11,<br /> "name" =&gt; "DemoAdminServer",<br /> "state" =&gt; "running"<br /> },<br /> [1] {<br /> "heapFreeCurrent" =&gt; 275771456,<br /> "heapSizeCurrent" =&gt; 401080320,<br /> "usedPhysicalMemory" =&gt; 3520323584,<br /> "jvmProcessorLoad" =&gt; 0,<br /> "health" =&gt; {<br /> "state" =&gt; "ok"<br /> },<br /> "activeHttpSessionCount" =&gt; 0,<br /> "activeThreadCount" =&gt; 8,<br /> "name" =&gt; "DemoMS1",<br /> "state" =&gt; "running"<br /> },<br />. . .<br />. . .<br /></pre><br /><br />Now we can check in Kibana the Indices under Settings: <br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-ICoPDOAPp_4/WNKSUxoMo3I/AAAAAAAAAmY/nX7GprBSynMO0QjNLhbLhNeo4gxe5yStQCLcB/s1600/kibana01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="388" src="https://1.bp.blogspot.com/-ICoPDOAPp_4/WNKSUxoMo3I/AAAAAAAAAmY/nX7GprBSynMO0QjNLhbLhNeo4gxe5yStQCLcB/s640/kibana01.png" width="640" /></a></div><br /><br />and define our Visualization under Visualize:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/---MyFtKtu5E/WNKSxmSg0RI/AAAAAAAAAmc/5og-POsljJ8vQilsnGpd_rZW8ySKWBMRACLcB/s1600/kibana02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="358" src="https://3.bp.blogspot.com/---MyFtKtu5E/WNKSxmSg0RI/AAAAAAAAAmc/5og-POsljJ8vQilsnGpd_rZW8ySKWBMRACLcB/s640/kibana02.png" width="640" /></a></div><br /><br /><br />With this really simple configuration you can consume all available Metrics within the WebLogic RESTFul Management Services via ELK Stack just by defining the url in the http_poller configuration, visualise them, create dashboard and with the Output Plugins in Logstash (<a href="https://www.elastic.co/guide/en/logstash/current/output-plugins.html" target="_blank">https://www.elastic.co/guide/en/logstash/current/output-plugins.html</a>) you can even define notifications through Email, Nagios, Zabbix and so on ...<br /><br /><br /> Dirk Nachbar tag:blogger.com,1999:blog-4344684978957885806.post-4441386986834228670 Wed Mar 22 2017 11:23:00 GMT-0400 (EDT) Scheduler (DBMS_SCHEDULER) Enhancements in Oracle Database 12.2 http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/zDH4uGw1FJc/ <p><img class="alignleft wp-image-6537" src="https://oracle-base.com/blog/wp-content/uploads/2016/10/stopwatch-25763_640.png" alt="" width="150" height="184" />Since its release in 10gR1, Oracle have consistently added neat functionality to the &#8220;new&#8221; scheduler with every database release. Yes, I still call it the new scheduler and you would be surprised how many people still insist on using DBMS_JOB rather than switching to DBMS_SCHEDULER.</p> <p>Oracle Database 12c Release 2 (12.2) is no exception to this pattern, as once again we have some new stuff to play with.</p> <ul> <li><a href="https://oracle-base.com/articles/12c/scheduler-enhancements-12cr2">Scheduler (DBMS_SCHEDULER) Enhancements in Oracle Database 12c Release 2 (12.2)</a></li> </ul> <p>In website housekeeping news, each scheduler article on the site was getting loaded down with links to other scheduler articles, so I&#8217;ve collected them all together into a section on one of my links pages, along with a feature list breakdown, so you don&#8217;t have to trawl through all the articles to get to the bit you need. You can see that section <a href="/articles/misc/articles-misc#scheduler">here</a>.</p> <p>For many people the <a href="/articles/10g/scheduler-10g#simple">simple example</a> in the first article I wrote on the scheduler will be all they ever use, but it&#8217;s good to know what it&#8217;s capable of doing, especially when you see what some people get up to with CRON. <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><strong>Update</strong>: For the¬†person that just contacted me about the non-transactional nature of DBMS_SCHEDULER, I wrote about this <a href="/articles/10g/scheduler-10g#implicit-commit">here</a> and finally raised an SR about it some time ago. That was converted to a bug, which was then altered to an enhancement request.</p> <p>Bug 21247177 : DBMS_SCHEDULER JOB NOT DELETED WITH ROLLBACK, WHEREAS DBMS_JOB JOB DOES</p> <p>This issue is still present in 12cR2, with a workaround of using DBMS_JOB. <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/03/22/scheduler-dbms_scheduler-enhancements-in-oracle-database-12-2/">Scheduler (DBMS_SCHEDULER) Enhancements in Oracle Database 12.2</a> was first posted on March 22, 2017 at 8:48 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/zDH4uGw1FJc" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=7002 Wed Mar 22 2017 03:48:02 GMT-0400 (EDT) Oracle Database 12c Release 2 New Feature ‚Äď Create Data Guard Standby Database Using DBCA http://gavinsoorma.com/2017/03/oracle-database-12c-release-2-new-feature-create-data-guard-standby-database-using-dbca/ <p>One of the real nice new features in Oracle 12c Release 2 (12.2.0.1) is the ability to create an Oracle Data Guard Standby Database using DBCA (Database Configuration Assistant). This really does simplify the process of creating a standby database as well and automates a number of steps in the creation process which were earlier manually performed.</p> <p>In this example we will see how a 12.2.0.1 Data Guard environment is created via DBCA and then Data Guard Broker (DGMGRL).</p> <p>The source database is called <strong>salesdb</strong> and the standby database DB_UNIQUE_NAME will be <strong>salesdb_sb</strong>.</p> <p>Primary database host name is <strong>host01</strong> and the Standby database host name is <strong>host02</strong>.</p> <p>The syntax is:</p> <pre dir="ltr">dbca -createDuplicateDB -gdbName global_database_name -primaryDBConnectionString easy_connect_string_to_primary -sid database_system_identifier [-createAsStandby [-dbUniqueName db_unique_name_for_standby]] </pre> <p>We will run the command from the standby host host02 as shown below.<br /> &nbsp;</p> <pre>[oracle@host02 ~]$ <strong>dbca -silent -createDuplicateDB -gdbName salesdb -primaryDBConnectionString</strong> <strong>host01:1521/salesdb -sid salesdb -createAsStandby -dbUniqueName salesdb_sb</strong> Enter SYS user password: Listener config step 33% complete Auxiliary instance creation 66% complete RMAN duplicate 100% complete Look at the log file "/u02/app/oracle/cfgtoollogs/dbca/salesdb_sb/salesdb.log" for further details. </pre> <p>Connect to the Standby Database and verify the role of the database<br /> &nbsp;<br /> <a href="http://gavinsoorma.com/wp-content/uploads/2017/03/dg1.png" rel="attachment wp-att-7481"><img class="aligncenter size-full wp-image-7481" src="http://gavinsoorma.com/wp-content/uploads/2017/03/dg1.png" alt="dg1" width="844" height="367" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/dg1-300x130.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/dg1-768x334.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/dg1.png 844w, http://gavinsoorma.com/wp-content/uploads/2017/03/dg1-300x130@2x.png 600w" sizes="(max-width: 844px) 100vw, 844px" /></a></p> <p>&nbsp;</p> <p>Note that the SPFILE and Password File for the Standby Database has been automatically created</p> <pre> [oracle@host02 dbs]$ ls -l sp* -rw-r-----. 1 oracle dba 5632 Mar 22 09:40 spfilesalesdb.ora [oracle@host02 dbs]$ ls -l ora* -rw-r-----. 1 oracle dba 3584 Mar 17 14:38 orapwsalesdb </pre> <p>&nbsp;</p> <p>Add the required entries to the tnsnames.ora file</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/dg2.png" rel="attachment wp-att-7482"><img class="aligncenter size-full wp-image-7482" src="http://gavinsoorma.com/wp-content/uploads/2017/03/dg2.png" alt="dg2" width="694" height="302" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/dg2-300x131.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/dg2.png 694w, http://gavinsoorma.com/wp-content/uploads/2017/03/dg2-300x131@2x.png 600w" sizes="(max-width: 694px) 100vw, 694px" /></a></p> <p>Continue with the Data Guard Standby Database creation using the Data Guard Broker<br /> &nbsp;</p> <pre>SQL&gt; <strong>alter system set dg_broker_start=true scope=both;</strong> System altered. SQL&gt; quit Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production [oracle@host01 archivelog]$<strong> dgmgrl</strong> DGMGRL for Linux: Release 12.2.0.1.0 - Production on Fri Mar 17 14:47:27 2017 <Copyright (c) 1982, 2017, Oracle and/or its affiliates.¬† All rights reserved. Welcome to DGMGRL, type "help" for information. DGMGRL&gt; <strong>connect /</strong> Connected to "salesdb" Connected as SYSDG. DGMGRL&gt; <strong>create configuration 'salesdb_dg'</strong> &gt; <strong>as primary database is 'salesdb'</strong> &gt; <strong>connect identifier is 'salesdb';</strong> Configuration "salesdb_dg" created with primary database "salesdb" </pre> <pre>DGMGRL&gt; <strong>add database 'salesdb_sb' as connect identifier is 'salesdb_sb';</strong> Database "salesdb_sb" added DGMGRL&gt; <strong>enable configuration;</strong> Enabled.</pre> <p>&nbsp;</p> <p>Create the Standby Redo Log Files on the primary database</p> <p>&nbsp;</p> <pre>SQL&gt; select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /u03/app/oradata/salesdb/redo03.log /u03/app/oradata/salesdb/redo02.log /u03/app/oradata/salesdb/redo01.log SQL&gt; select bytes/1048576 from v$log; BYTES/1048576 ------------- ¬†¬† ¬† 200 ¬†¬†¬† ¬†200 ¬†¬†¬†¬† 200 SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo1.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo2.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo3.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo4.log' size 200m; Database altered. </pre> <p>&nbsp;<br /> Create the Standby Redo Log Files on the standby database</p> <p>&nbsp;</p> <pre>DGMGRL&gt; connect / Connected to "salesdb" Connected as SYSDG. DGMGRL&gt; edit database 'salesdb_sb' set state='APPLY-OFF'; Succeeded. SQL&gt; shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL&gt; startup mount; ORACLE instance started. Total System Global Area 1174405120 bytes Fixed Size¬†¬†¬†¬†¬† ¬†¬†¬† 8619984 bytes Variable Size¬†¬†¬†¬†¬†¬†¬†¬† ¬† 436209712 bytes Database Buffers ¬† 721420288 bytes Redo Buffers¬†¬†¬†¬†¬†¬†¬†¬†¬† ¬†¬†¬† 8155136 bytes Database mounted. SQL&gt;¬† alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo1.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo2.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo3.log' size 200m; Database altered. SQL&gt; alter database add standby logfile '/u03/app/oradata/salesdb/standy_redo4.log' size 200m; Database altered. SQL&gt; alter database open; Database altered. SQL&gt;</pre> <p>&nbsp;<br /> Verify the Data Guard Configuration<br /> &nbsp;</p> <pre>DGMGRL&gt; edit database 'salesdb_sb' set state='APPLY-ON'; Succeeded. DGMGRL&gt; show configuration; Configuration - salesdb_dg Protection Mode: MaxPerformance salesdb¬†¬†¬† - Primary database ¬†¬† salesdb_sb - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS¬†¬† (status updated 8 seconds ago)</pre> <p>&nbsp;<br /> Set the property <strong>StaticConnectIdentifier</strong> to prevent errors during switchover operations<br /> &nbsp;</p> <pre>Edit database ‚Äėsalesdb‚Äô set property StaticConnectIdentifier= '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host01.localdomain)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=salesdb_DGMGRL)(INSTANCE_NAME=salesdb)(SERVER=DEDICATED)))'; Edit database ‚Äėsalesdb_sb‚Äô set property StaticConnectIdentifier=StaticConnectIdentifier= '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host02.localdomain)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=salesdb_sb_DGMGRL)(INSTANCE_NAME=salesdb)(SERVER=DEDICATED)))';</pre> <p>Edit listener.ora on primary database host and add the lines shown below. Reload the listener.<br /> &nbsp;</p> <pre> SID_LIST_LISTENER = ¬† (SID_LIST = ¬†¬†¬† (SID_DESC = ¬†¬†¬†¬†¬† (GLOBAL_DBNAME = salesdb_DGMGRL) ¬†¬†¬†¬†¬† (SID_NAME = salesdb) ¬†¬†¬†¬†¬†¬†¬† ) ¬† ) </pre> <p>&nbsp;<br /> Edit listener.ora on standby database host and add the lines shown below. Reload the listener.<br /> &nbsp;</p> <pre>SID_LIST_LISTENER = ¬† (SID_LIST = ¬†¬†¬† (SID_DESC = ¬†¬†¬†¬†¬† (GLOBAL_DBNAME = salesdb_sb_DGMGRL) ¬†¬†¬†¬†¬† (SID_NAME = salesdb) ¬†¬†¬†¬†¬†¬†¬† ) ¬† )</pre> Gavin Soorma http://gavinsoorma.com/?p=7480 Wed Mar 22 2017 00:06:10 GMT-0400 (EDT) Visual Studio Code editor support for Cloud Foundry Manifest files http://feedproxy.google.com/~r/blogspot/PEqWE/~3/GcN63SjoGNA/visual-studio-code-editor-support-for.html An early BETA version of the Cloud Foundry (CF) manifest file support is available in <a href="https://code.visualstudio.com/" target="_blank">Visual Studio Code</a>. To see a video on this support follow the link below which shows how to install the extension and use Code Completion and a bit more follow link.<br /><br />&nbsp;&nbsp;<a href="https://www.youtube.com/watch?v=Ao6Mx6Q0XKE">https://www.youtube.com/watch?v=Ao6Mx6Q0XKE</a><br /><br />With this extension for manifest files, it becomes a pleasure to write and modify those CF manifest files. You get content-assist, validations, and hover help - even for dynamic content like buildpacks and services (it integrates with the CF CLI for that)<br /><br /><b>Some screen shots of this as follows -</b><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-PDA56RVlFQ4/WNHA3FHjOFI/AAAAAAAAA5Y/0ZeLiWEGSmcjer3AeRp4rviI5nbOirYJwCLcB/s1600/Screen%2BShot%2B2017-03-22%2Bat%2B11.06.46%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="238" src="https://4.bp.blogspot.com/-PDA56RVlFQ4/WNHA3FHjOFI/AAAAAAAAA5Y/0ZeLiWEGSmcjer3AeRp4rviI5nbOirYJwCLcB/s320/Screen%2BShot%2B2017-03-22%2Bat%2B11.06.46%2BAM.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-ZS95qUoJ08A/WNHA3HBCQyI/AAAAAAAAA5g/04sPITtvuGcWGeB4ZyIalp2hki9KwI0rgCLcB/s1600/Screen%2BShot%2B2017-03-22%2Bat%2B11.07.36%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://3.bp.blogspot.com/-ZS95qUoJ08A/WNHA3HBCQyI/AAAAAAAAA5g/04sPITtvuGcWGeB4ZyIalp2hki9KwI0rgCLcB/s320/Screen%2BShot%2B2017-03-22%2Bat%2B11.07.36%2BAM.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-fMb4ur3deg0/WNHA3PIQgaI/AAAAAAAAA5c/JiqK7CXUQVAC9xtyecKFP3BIVaOmsZ_yACLcB/s1600/Screen%2BShot%2B2017-03-22%2Bat%2B11.09.15%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://2.bp.blogspot.com/-fMb4ur3deg0/WNHA3PIQgaI/AAAAAAAAA5c/JiqK7CXUQVAC9xtyecKFP3BIVaOmsZ_yACLcB/s320/Screen%2BShot%2B2017-03-22%2Bat%2B11.09.15%2BAM.png" width="320" /></a></div><br /><br /><br /><div class="blogger-post-footer">http://feeds.feedburner.com/TheBlasFromPas</div><img src="http://feeds.feedburner.com/~r/blogspot/PEqWE/~4/GcN63SjoGNA" height="1" width="1" alt=""/> Pas Apicella tag:blogger.com,1999:blog-6527688743456205256.post-1065128976269642176 Tue Mar 21 2017 20:14:00 GMT-0400 (EDT) Iceland is Awesome‚Ķ.and Colder than Utah http://dbakevlar.com/2017/03/iceland-awesome-colder-utah/ <div id="tweetbutton6552" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Ficeland-awesome-colder-utah%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%2Ficeland-awesome-colder-utah%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: 2 urCount: 2 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>I ended up speaking at two events this last week. ¬†Now if timezones and flights weren&#8217;t enough to confuse someone, I was speaking at both an Oracle AND a SQL Server event- yeah, that&#8217;s how I roll these days.</p> <p><a href="http://dbakevlar.com/2017/03/iceland-awesome-colder-utah/10-boatroll/" rel="attachment wp-att-6553"><img class="alignnone wp-image-6553" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/10.BoatRoll.gif?resize=361%2C203" alt="" data-recalc-dims="1" /></a></p> <h3>Utah Oracle User Group, (UTOUG)</h3> <p>I arrived last Sunday in Salt Lake, which is just a slightly milder weather and more conservative version of Colorado, to speak at <a href="http://utoug.org/TrainingDays">UTOUG&#8217;s Spring Training Days Conference</a>. ¬†I love this location and the weather was remarkable, but even with the warm temps, skiing was still only a 1/2 hour drive from the city. ¬†Many of the speakers and attendees took advantage of this opportunity by doing just that while visiting. ¬†I chose to hang out with<strong> <a href="https://twitter.com/MeKolbe">Michelle Kolbe</a> </strong>and <strong><a href="https://twitter.com/LoriLorusso">Lori Lorusso.</a>¬† </strong>I had a great time at the event and although I was only onsite for 48hrs, I really like this event so close to my home state.</p> <p>I presented on Virtualization 101 for DBAs and it was a well attended session. ¬†I really loved how many questions I received and how curious the database community has become about how this is the key to moving to the cloud seamlessly.</p> <p>There are significant take-aways from UTOUG. ¬†The user group, although small, is well cared for and the event is using some of the best tools to ensure that they get the best bang for the buck. ¬†It&#8217;s well organized a I applaud all that Michelle does to keep everyone engaged. ¬†It&#8217;s not an easy endeavor, yet she takes¬†this challenge on with gusto and with much success.</p> <h3>SQL Saturday Iceland</h3> <p>After spending Wednesday at home, I was back at the airport to head to <a href="http://www.sqlsaturday.com/602/eventhome.aspx">Reykjavik, Iceland for their SQL Saturday</a>. ¬†I&#8217;ve visited Iceland a couple times now and if you aren&#8217;t aware of this, IcelandAir offers up to 7 day layovers to visit Iceland and then you can continue on to your final destination. ¬†Tim and I have taken advantage of this perk on one of our trips to OUGN, (Norway) and it was a great way to visit some of this incredible country. ¬†When the notification arrived for SQL Saturday Iceland, I promptly submitted my abstracts and crossed my fingers. ¬†Lucky for me,¬†<strong class="fullname"><a class="pretty-link js-user-profile-link js-nav" href="https://twitter.com/bidgeir" data-user-id="240180549">√Āsgeir Gunnarsson</a>¬†</strong>accepted my abstract and I was offered the chance to speak with this great SQL Server user group.</p> <p>After arriving before 7am on Friday morning at Keflavik airport, I realized that I wouldn&#8217;t have a hotel room ready for me, no matter how much I wanted to sleep. ¬†Luckily there is a great article on the<a href="http://www.iheartreykjavik.net/category/reykjavik/"> &#8220;I Love Reykjavik&#8221; site</a> offering inside info on what to do if you do show up early. ¬†I was able to use the FlyBus to get a shuttle directly to and from my hotel, (all you have to do is ask the front desk to call them the night before you&#8217;re leaving and they&#8217;ll pick you back up in front of your hotel 3 hrs before your flight.) ¬†Once I arrived, I was able to check in my bags with their front desk and headed out into town.</p> <p>I stayed at Hlemmur Square, which was central to the town and the event and next to almost all of the buses throughout the city. ¬†The main street in front of it, Laugavegur, is one of the main streets that runs East-West and is very walkable. ¬†Right across this street from the hotel was a very &#8220;memorable&#8221; museum, the Phallilogical Museum. ¬†I&#8217;m not going to link to it or post any pictures, but if you&#8217;re curious, I&#8217;ll warn you, it&#8217;s NSFW, even if it&#8217;s very, uhm&#8230;educational. ¬†It was recommended by a few folks on Twitter and it did ensure I stayed awake after only 2 hours of sleep in 24 hours!</p> <p>As I wandered about town, there are a few things you&#8217;ll note about Iceland- ¬†the murals of graffiti is really awesome and Icelandic folks like good quality products- ¬†the stores housed local and international goods often made from wool, wood, quality metal and such. The city parliment building is easily accessible and it&#8217;s right across from the main shopping area and new city development.</p> <p><a href="http://dbakevlar.com/2017/03/iceland-awesome-colder-utah/screen-shot-2017-03-21-at-4-47-43-pm/" rel="attachment wp-att-6560"><img class="alignnone wp-image-6560" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-21-at-4.47.43-PM.png?resize=455%2C380" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-21-at-4.47.43-PM.png?resize=1024%2C856 1024w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-21-at-4.47.43-PM.png?resize=300%2C251 300w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-21-at-4.47.43-PM.png?resize=768%2C642 768w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-21-at-4.47.43-PM.png?w=1400 1400w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-21-at-4.47.43-PM.png?w=1200 1200w" sizes="(max-width: 455px) 100vw, 455px" data-recalc-dims="1" /></a></p> <p>On Saturday, I was quick to arrive at Iceland&#8217;s SQL Saturday, as I had a full list of sessions I wanted to attend. ¬†I was starting to feel the effects of Iceland weather on my joints, but I was going to make sure I got the most out of the event. ¬†I had connected with a couple of the speakers at the dinner the night before, but with jet lag, you hope you&#8217;ll make a better impression on the day of the event.</p> <p>I had the opportunity to learn about the most common challenges with SQL Server 2016 and that Dynamic Data Masking isn&#8217;t an enterprise solution. ¬†Due to lacking discovery tools, the ability to join to non-masked objects¬†and common values, (i.e. 80% of data is local and the most common location value would easily be identified, etc.) the confidential data of masked objects could be identified.</p> <p>I also enjoyed an introduction to containers with SQL Server and security challenges. ¬†The opening slide from Andy says it all:</p> <p><a href="http://dbakevlar.com/2017/03/iceland-awesome-colder-utah/screen-shot-2017-03-21-at-3-44-59-pm/" rel="attachment wp-att-6556"><img class="alignnone wp-image-6556" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-21-at-3.44.59-PM.png?resize=455%2C353" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-21-at-3.44.59-PM.png?w=746 746w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-21-at-3.44.59-PM.png?resize=300%2C232 300w" sizes="(max-width: 455px) 100vw, 455px" data-recalc-dims="1" /></a></p> <p>Makes you proud to be an American, doesn&#8217;t 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>My session was in the afternoon and we not only had excellent discussions on how to empower database environments with virtualization, but I even did a few quick demonstrations of ease of cloud management with AWS and Oracle&#8230;yes, to SQL Server DBAs. ¬†It was interesting to see the ease of management, but how easy it was for me to manage Oracle with the interface. ¬†I performed all validations of data refreshes from the command line, so there was no doubt that I was working in Oracle, yet the refreshes and such were done in AWS and with the Delphix Admin console.</p> <p>I made it through the last session on the introduction to containers with SQL Server, which included a really interesting demonstration of a SQL Server container sans an OS installation, allowing it to run with very limited resource requirements on a Mac. ¬†After this session was over, I was thankful that two of my fellow presenters were willing to drop me off at my hotel and I promptly collapsed in slumber, ready to return home. ¬†I was sorry to miss out on the after event dinner and drinks, but learned that although I love Iceland, a few days and some extra recovery time may be required.</p> <p>Thank you to everyone at <a href="http://utoug.org/">Utah Oracle User Group</a> and <a href="http://www.sqlsaturday.com/602/eventhome.aspx">Iceland&#8217;s SQL Server User Group</a> for having me as a guest at your wonderful events. ¬†If you need me, I&#8217;ll be taking a nap&#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>&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/conferences/" rel="tag">Conferences</a>, <a href="http://dbakevlar.com/tag/oracle-user-groups/" rel="tag">Oracle User Groups</a>, <a href="http://dbakevlar.com/tag/sql-saturday/" rel="tag">SQL Saturday</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/iceland-awesome-colder-utah/&title=Iceland is Awesome....and Colder than Utah"> <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/iceland-awesome-colder-utah/"><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/iceland-awesome-colder-utah/&title=Iceland is Awesome....and Colder than Utah"><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/iceland-awesome-colder-utah/&title=Iceland is Awesome....and Colder than Utah"><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/iceland-awesome-colder-utah/&title=Iceland is Awesome....and Colder than Utah"><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/iceland-awesome-colder-utah/#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/2013/02/using-the-em-diagnostic-kit-with-em12c/" >Using the EM Diagnostic REPVFY Kit with EM12c</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/06/awr-warehouse-in-em12c-rel-4-part-ii/" >AWR Warehouse in EM12c, Rel 4, Part II</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/10/delphix-express-refreshing-a-virtual-database-with-new-source-data/" >Delphix Express: refreshing a virtual database with source data</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/oracle-time-units-in-v-views/" >Oracle time units in V$ views</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/dba-necessary-cloud-part/" >Why the DBA is Necessary to the Cloud- Part I</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/iceland-awesome-colder-utah/">Iceland is Awesome....and Colder than Utah</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/03/iceland-awesome-colder-utah/">Iceland is Awesome&#8230;.and Colder than Utah</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6552 Tue Mar 21 2017 18:46:44 GMT-0400 (EDT) Single-Sign-On to Oracle ERP Cloud https://technology.amis.nl/2017/03/21/sso-oracle-fusion-cloud/ <p>More and more enterprises are using Single-Sign-On (SSO) for there on-premise applications today, but what if they want to use SSO for there cloud applications as well?</p> <p>This blog post is addressing this topic for Single-Sign-On to Oracle ERP Cloud in a hybrid environment.</p> <p>First of all lets focus on SSO on-premise and introduce some terminology.</p> <p>A user (aka principal) wants to have access to a particular service. This service can be found at the Service Provider (SP). The provided services are secured so the user needs to authenticate itself first. The Identity Provider (IdP) is able to validate (assert) the authenticity of the user by asking, for instance, the username and password (or using other methods).</p> <p>So for authentication we always have three different roles: User, Service Provider (SP) and Identity Provider (IdP), as shown below.</p> <p><img class="alignnone size-medium wp-image-43413" src="https://technology.amis.nl/wp-content/uploads/2016/12/SSO-diagram-300x219.png" alt="" width="300" height="219" srcset="https://technology.amis.nl/wp-content/uploads/2016/12/SSO-diagram-300x219.png 300w, https://technology.amis.nl/wp-content/uploads/2016/12/SSO-diagram.png 536w" sizes="(max-width: 300px) 100vw, 300px" /></p> <p>For Single-Sign-On we should have a centralized IdP and we should have a standardized way to assert the authentication information.</p> <p>In an on-premise landscape there is plenty of choice for an IdP. Some common used ones are: Microsoft Active Directory (AD) (closed source), Oracle Identity &amp; Access Management (closed source) and Shibboleth (open source). For now we assume we are using AD.</p> <h2>Kerberos</h2> <p>The most used standard for doing SSO is Kerberos. In that case a Kerberos ticket is asserted by the IdP which is used towards all the Service Providers to be able to login.</p> <p>This Kerberos method is suited for an on-premise landscape and also suited if the connection to a private cloud is via a VPN (the two are effectively part of the internal network and everything should work ok for the cloud as well). But what if we want to integrate a public cloud such as Oracle Fusion Cloud then things get messy.</p> <p>Arguably the reason Kerberos isn&#8217;t used over the public Internet doesn&#8217;t have to do with the security of the protocol itsef, but rather that it&#8217;s an authentication model that doesn&#8217;t fit the needs of most &#8220;public Internet&#8221; applications. Kerberos is a heavy protocol and cannot be used in scenarios where users want to connect to services from unknown clients as in a typical Internet or Public Cloud computer scenario, where the authentication provider typically does not have knowledge about the users client system.</p> <p>The main standards to be able to facilitate SSO for the internet are:</p> <ul> <li>OpenID</li> <li>OAuth</li> <li>Security Assertion Markup Language (SAML)</li> </ul> <h2 class="post-text">SAML 2.0</h2> <div class="post-text">Oracle Fusion Cloud is based on SAML 2.0 so let&#8217;s go on with this standard for now.</div> <div class="post-text"></div> <div class="post-text">Conceptually the SAML handshake looks like Kerberos; you can also see the different roles for User, SP and IdP and the assertion of a SSO ticket.</div> <div class="post-text"></div> <div class="post-text"><img class="alignnone wp-image-43406" src="https://technology.amis.nl/wp-content/uploads/2016/12/SAML-300x212.png" alt="" width="443" height="313" srcset="https://technology.amis.nl/wp-content/uploads/2016/12/SAML-300x212.png 300w, https://technology.amis.nl/wp-content/uploads/2016/12/SAML-1024x724.png 1024w, https://technology.amis.nl/wp-content/uploads/2016/12/SAML.png 1200w" sizes="(max-width: 443px) 100vw, 443px" /></div> <h2 class="post-text">Identity Federation</h2> <div class="post-text">But how can we integrate Kerberos with SAML?</div> <div class="post-text"></div> <div class="post-text">Now a different concept comes in: Identity Federation. This means linking and using the identity of a user across several security domains (on-premise and public cloud). In simpler terms, an SP does not necessarily need to obtain and store the user credentials in order to authenticate them. Instead, the SP can use an IdP that is already storing this. In our case the IdP is on-premise (Active Directory for example) and the SP is the Oracle Fusion Cloud application.</div> <div class="post-text"></div> <div class="post-text">Now there are two things to be done:</div> <ul> <li class="post-text">The on-premise Kerberos ticked should be translated to SAML. Because we want SSO.</li> <li class="post-text">There is need for trust between IdP en SP. Only trusted security domains can access the SP. Trust configuration should be done at both sites (on-premise vs cloud)</li> </ul> <div class="post-text">Translation of Kerberos ticked is performed by a Security Token Service (STS). This is the broker that sits between a SP and the user. An STS is an issuer of security tokens. &#8220;Issuer&#8221; is often a synonym of an STS. STS&#8217;s can have different roles: as IdP when they authenticate users or as Federation Provider (FP) when they sit in the middle of a trust chain and act as &#8220;relying parties&#8221; for other IdPs.</div> <div class="post-text">In our case the STS translates Kerberos to SAML and Microsoft Active Directory Federation Server (ADFS) and Oracle Identity Federation Server (part of Oracle Identity Governance Suite) are examples of doing this.</div> <div class="post-text"></div> <div class="post-text">So the picture look like this now:</div> <div class="post-text"><img class="alignnone wp-image-44432" src="https://technology.amis.nl/wp-content/uploads/2017/03/Cloud_SSO-1-300x196.png" alt="" width="343" height="224" srcset="https://technology.amis.nl/wp-content/uploads/2017/03/Cloud_SSO-1-300x196.png 300w, https://technology.amis.nl/wp-content/uploads/2017/03/Cloud_SSO-1-214x140.png 214w, https://technology.amis.nl/wp-content/uploads/2017/03/Cloud_SSO-1.png 595w" sizes="(max-width: 343px) 100vw, 343px" /></div> <h2 class="post-text">Trust</h2> <div class="post-text">But how is the Trust achieved?</div> <div class="post-text"></div> <div class="post-text">Trust is just metadata about the SP and the IdP. So the metadata from the IdP should be uploaded in Oracle ERP Cloud and visa versa.When you create metadata for the IdP, the IdP entity is added to a circle of trust. A circle of trust is used to group SP&#8217;s and IdP&#8217;s in a secure, trusted environment. Other remote provider entities can be added to the circle of trust.</div> <div class="post-text"></div> <div class="post-text">Metadata is defined in XML. A SP uses the Metadata to know how to communicate with the IdP and vise versa. Metadata define things like what service is available, addresses and certificates:</div> <div class="post-text"> <ul> <li>Location of its SSO service.</li> <li>An ID identifying the provider.</li> <li>Signature of the metadata and public keys for verifying and encrypting further communication.</li> <li>Information about if the IdP wants the communication signed or encrypted.</li> </ul> </div> <div class="post-text">There is no protocol how the exchange is done, but there are no secret information in the metadata so the XML can be freely distributed by mail or published in clear text on the Internet.<br /> It is however highly recommended that the metadata is protected from unauthorized modification, this could be a good start on a Man-In-The-Middle attack.<br /> The integrity of the Metadata could be protected using for example digital signatures or by transporting the metadata using some secure channels.</div> <div class="post-text">Metadata could contain lots of other information. For a full description have a look at the SAML specifications <a href="http://saml.xml.org/saml-specifications">http://saml.xml.org/saml-specifications</a></div> <div class="post-text"></div> <h2 class="post-text">Oracle ERP Cloud Security</h2> <div class="post-text">Application Security in Oracle ERP Cloud consists of two parts:</div> <ol> <li class="post-text">Oracle Identity Management (OIM) running in the cloud (Oracle Identity Federation is part of this).</li> <li class="post-text">Authorization Policy Manager (APM).</li> </ol> <div class="post-text">Oracle Identity Management is responsible for the user accounts management. Authorization Policy Manager is responsible for the fine grained SaaS role mapping (aka Entitlements).</div> <div class="post-text">See this blog post from Oracle how this works: http://www.ateam-oracle.com/introduction-to-fusion-applications-roles-concepts/</div> <div class="post-text"></div> <div class="post-text"> <div class="post-text">Remark: the application security in Oracle ERP Cloud will change with R12 and will benefit from the following new capabilities:</div> </div> <ul> <li class="post-text">Separation between OIM and APM is no longer available. A new simplified Security Console will contain both.</li> </ul> <div class="post-text"> <div class="post-text"> <p><img class=" wp-image-44424 aligncenter" src="https://technology.amis.nl/wp-content/uploads/2017/03/R12-300x139.png" alt="" width="554" height="257" srcset="https://technology.amis.nl/wp-content/uploads/2017/03/R12-300x139.png 300w, https://technology.amis.nl/wp-content/uploads/2017/03/R12-768x356.png 768w, https://technology.amis.nl/wp-content/uploads/2017/03/R12-1024x475.png 1024w, https://technology.amis.nl/wp-content/uploads/2017/03/R12.png 1233w" sizes="(max-width: 554px) 100vw, 554px" /></p> <ul> <li>Configuration of SSO integration (with IdP) is simplified and can be performed from a single screen.</li> <li>REST API&#8217;s based on SCIM (System for Cross-Domain Identity Management) 2.0 are available for Identity Synchronization with IdP.</li> </ul> </div> </div> <div class="post-text">Another remark: <a href="https://technology.amis.nl/2016/11/02/just-launched-the-oracle-identity-cloud-service-for-authentication-and-authorization-across-the-cloud-and-on-premises/">Oracle Identity Cloud Service</a> is released in Q1 2017. Integration with Oracle ERP Cloud is not the case yet because Identity Federation functionality is not implemented yet. The release date isn&#8217;t clear, so we have to deal with the functionality presented above.</div> <div class="post-text"></div> <h2 class="post-text">Configuring SSO for Oracle ERP Cloud</h2> <div class="post-text">¬†For SSO the following aspects should be taken into account:</div> <ul> <li class="post-text">Users and Entitlements</li> <li class="post-text">Initial upload of identities and users</li> <li class="post-text">Identity and user Synchronization</li> <li class="post-text">Exchange of SP and IdP metadata</li> </ul> <h3 class="post-text">Users and Entitlements</h3> <p>Before going into this I must explain the difference between users and employees.</p> <ul> <li>When talking about users we mean the user login account. As explained before these accounts are the domain of IAM.</li> <li>Users have access rights based on Role Based Access Controls (RBAC). Also IAM is handling this.</li> <li>Users have entitlements to use particular ERP functionality. This is handled in APM.</li> <li>When talking about employees we mean the business employee with it&#8217;s associated business job. This is the domain of Oracle HCM Cloud (even when you don&#8217;t have a HCM full-use license). An employee can access Oracle ERP Cloud when it&#8217;s having an user account in IAM and the proper entitlements in APM.</li> </ul> <h3 class="post-text">Initial user upload</h3> <p>To establish SSO between the customer‚Äôs on-premises environment and the Oracle ERP Cloud environment, the customer must specify which identity attribute (aka GUID) (user name or email address) will be unique across all users in the customer‚Äôs organization. The SAML token should pass this attribute so the SP could determine which user is asserted (remember the first picture in this blog post).</p> <div class="post-text">But before this could work the SP should have all users loaded. This is a initial step in the Oracle ERP Cloud on-boarding process.</div> <div class="post-text"></div> <div class="post-text">Currently (Oracle ERP Cloud R11) the following options are available:</div> <ul> <li class="post-text">If running Oracle HCM Public Cloud, you may need to use HR2HR Integration</li> <li class="post-text">If running Non-HCM Public Cloud, use Spreadsheet Upload [Document Note 1454722.1] or if you are running CRM Public Cloud, use the CRM upload utility for HCM employees. You could also manually enter the employee.</li> </ul> <p>Do the following tasks to load the initial user data into Oracle ERP Cloud:</p> <ol> <li>Extract user data from your local LDAP directory service to a local file by using the tools provided by your LDAP directory service vendor.</li> <li>Convert the data in the file into a format that is delivered and supported by Oracle ERP Cloud.</li> <li>Load the user data into Oracle ERP Cloud by using one of the supported data loading methods.</li> </ol> <p>Data loaders in Oracle ERP Cloud import data in the CSV format. Therefore, you must convert user data extracted from your local LDAP directory into the CSV format. Ensure that the mandatory attributes are non-empty and present.</p> <p>From Oracle ERP Cloud R12 the initial load can also be performed by using the SCIM 2.0 REST API&#8217;s. For details about this see: <a href="https://docs.oracle.com/cd/E52734_01/oim/OMDEV/scim.htm#OMDEV5526">https://docs.oracle.com/cd/E52734_01/oim/OMDEV/scim.htm#OMDEV5526</a></p> <h3 class="post-text"></h3> <h3 class="post-text">Identity and user Synchronization</h3> <p>The IdP should always have the truth about the users and business roles. So there should be something in place to push them to the Oracle ERP Cloud.</p> <p>For R12 the SCIM REST API&#8217;s are the best way to do that. For R11 it&#8217;s a lot more complicated as explained below.</p> <p>Now the concept of employee and job comes in again. As explained earlier in this blog post this is the domain of Oracle HCM Cloud (which is also part of Oracle ERP Cloud).</p> <p>Oracle HCM Cloud is having REST API&#8217;s for read and push of Employee and Job data to Oracle HCM Cloud:</p> <ul> <li>GET /hcmCoreApi/resources/11.12.1.0/emps</li> <li>POSThcmCoreApi/resources/11.12.1.0/emps</li> <li>PATCH /hcmCoreApi/resources/11.12.1.0/emps/{empsUniqID}</li> <li>GET /hcmCoreSetupApi/resources/11.12.1.0/jobs</li> <li>GET /hcmCoreSetupApi/resources/11.12.1.0/jobs/{jobsUniqID}</li> </ul> <p>For more details about these see (which are also available in R11) see: https://docs.oracle.com/cloud/latest/globalcs_gs/FARWS/Global_HR_REST_APIs_and_Atom_Feeds_R12.html</p> <p>But how can we provision IAM/APM? For that Oracle HCM Cloud have standard provisioning job:</p> <ul> <li>Send Pending LDAP Requests: Sends bulk requests and future-dated requests that are now active to OIM. The response to each request from OIM to Oracle Fusion HCM indicates transaction status (for example, Completed).</li> <li>Retrieve Latest LDAP Changes: Requests updates from OIM that may not have arrived automatically because of a failure or error, for example.</li> </ul> <p><img class="alignnone size-medium wp-image-44429" src="https://technology.amis.nl/wp-content/uploads/2017/03/IAM_provisioning_jobs-300x170.png" alt="" width="300" height="170" srcset="https://technology.amis.nl/wp-content/uploads/2017/03/IAM_provisioning_jobs-300x170.png 300w, https://technology.amis.nl/wp-content/uploads/2017/03/IAM_provisioning_jobs.png 639w" sizes="(max-width: 300px) 100vw, 300px" /></p> <p>For details see: <a href="http://docs.oracle.com/cloud/farel8/common/OCHUS/F1210304AN1EB1F.htm">http://docs.oracle.com/cloud/farel8/common/OCHUS/F1210304AN1EB1F.htm</a></p> <p>Now the problem could arise that an administer has changed user permissions in ERP Cloud (HCM or IAM/APM) which are not reflected in the IdP (which should always reflect the truth), so these are out-of-sync.</p> <p>To solve this the IdP should first read all employee and job data from Oracle HCM Cloud and based on that creates the delta with it&#8217;s own administration. This delta is pushed to Oracle HCM Cloud so all manually changes are removed. This synchronization job should be performed at least every day.</p> <p>The whole solution for Identity and user synchronization for R11 could look like this:</p> <h3 class="post-text"><img class="alignnone wp-image-44427" src="https://technology.amis.nl/wp-content/uploads/2017/03/Identity_Sync-1-300x192.png" alt="" width="419" height="268" srcset="https://technology.amis.nl/wp-content/uploads/2017/03/Identity_Sync-1-300x192.png 300w, https://technology.amis.nl/wp-content/uploads/2017/03/Identity_Sync-1-768x491.png 768w, https://technology.amis.nl/wp-content/uploads/2017/03/Identity_Sync-1.png 772w" sizes="(max-width: 419px) 100vw, 419px" /></h3> <p>&nbsp;</p> <h3 class="post-text">Exchange metadata for SSO</h3> <div class="post-text">In R11 of Oracle ERP Cloud the exchange of SAML metadata for SSO is a manual process. In R12 there is a screen to do this. So for R12 skip the rest of this blog.</div> <div class="post-text"></div> <div class="post-text">For R11, generation of SP metadata.xml (to setup the Federation for IdP) and upload of your IdP metadata.xml into the SP is performed by the Oracle Cloud Operations team. To start the integration process you should create a Service Request and provide the following information:</div> <ul> <li class="post-text">Which type Federation Server is used on-premise.</li> <li class="post-text">Which SaaS application you want to integrate.</li> <li class="post-text">How many users will be enabled.</li> <li class="post-text">URL&#8217;s for IdP production and IdP non-production.</li> <li class="post-text">Technical contacts.</li> </ul> <p>The following should also be taken into account (at both sites):</p> <ul> <li>The Assertion Consumer Service URL of the SP, where the user will be redirected from the IdP with SAML Assertion.</li> <li>The Signing Certificate corresponding to the private key used by the SP to sign the SAML Messages.</li> <li>The Encryption Certificate corresponding to the private key used by the SP to decrypt the SAML Assertion, if SAML encryption is to be used.</li> <li>The Logout service endpoint.</li> </ul> <div class="post-text">The Oracle Cloud Operations team document delivers a document how to configure the on-premises IdP (Microsoft Active Directory Federation Server (ADFS) 2.0 or Oracle Identity Federation Server 11g).</div> <div class="post-text">Be aware that the Oracle Cloud Operations team needs two weeks as least to do the configuration in Oracle SSO Cloud.</div> <div class="post-text"></div> <div class="post-text">For detailed information about this see Oracle Support Document: <span id="kmPgTpl:r1:0:ol22" class="xq">Co-Existence and SSO: The SSO Enablement Process for Public Cloud Customers (Doc ID 1477245.1).</span></div> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/21/sso-oracle-fusion-cloud/">Single-Sign-On to Oracle ERP Cloud</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Gertjan van het Hof https://technology.amis.nl/?p=43398 Tue Mar 21 2017 11:04:55 GMT-0400 (EDT) Deception https://jonathanlewis.wordpress.com/2017/03/21/deception/ <p>One of the difficulties with trouble-shooting is that&#8217;s it very easy to overlook, or forget to go hunting for, the little details that turn a puzzle into a simple problem. Here&#8217;s an example showing how you can read a bit of an AWR report and think you&#8217;ve found an unpleasant anomaly. I&#8217;ve created a little model and taken a couple of AWR snapshots a few seconds apart so the numbers involved are going to be very small, but all I&#8217;m trying to demonstrate is a principle. So here&#8217;s a few lines of one of the more popular sections of an AWR report:</p> <pre class="brush: plain; title: ; notranslate"> SQL ordered by Gets DB/Inst: OR32/or32 Snaps: 1754-1755 -&gt; Resources reported for PL/SQL code includes the resources used by all SQL statements called by the code. -&gt; %Total - Buffer Gets as a percentage of Total Buffer Gets -&gt; %CPU - CPU Time as a percentage of Elapsed Time -&gt; %IO - User I/O Time as a percentage of Elapsed Time -&gt; Total Buffer Gets: 351,545 -&gt; Captured SQL account for 65.0% of Total Buffer Gets Elapsed Gets Executions per Exec %Total Time (s) %CPU %IO SQL Id ----------- ----------- ------------ ------ ---------- ----- ----- ------------- 8,094 20 404.7 2.3 0.0 114.1 2.3 017r1rur8atzv Module: SQL*Plus UPDATE /*+ by_pk */ T1 SET N1 = 0 WHERE ID = :B1 </pre> <p>We have a simple update statement which, according to the hint/comment (that&#8217;s not a real hint, by the way) and guessing from column names, is doing an update by primary key; but it&#8217;s taking 400 buffer gets per execution!</p> <p>It&#8217;s possible, but unlikely, that there are about 60 indexes on the table that all contain the <em><strong>n1</strong></em> column; perhaps there&#8217;s a massive read-consistency effect going on thanks to some concurrent long-running DML on the table; or maybe there are a couple of very hot hotspots in the table that are being constantly modified by multiple sessions; or maybe the table is a FIFO (first-in, first-out) queueing table and something funny is happening with a massively sparse index.</p> <p>Let&#8217;s just check, first of all, that the access path is the <em>&#8220;update by PK&#8221;</em> that the hint/comment suggests (cut-n-paste):</p> <pre class="brush: plain; title: ; notranslate"> SQL&gt; select * from table(dbms_xplan.display_cursor('017r1rur8atzv',null)); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------ SQL_ID 017r1rur8atzv, child number 0 ------------------------------------- UPDATE /*+ by_pk */ T1 SET N1 = 0 WHERE ID = :B1 Plan hash value: 1764744892 ---------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------- | 0 | UPDATE STATEMENT | | | | 3 (100)| | | 1 | UPDATE | T1 | | | | | |* 2 | INDEX UNIQUE SCAN| T1_PK | 1 | 14 | 2 (0)| 00:00:01 | ---------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access(&quot;ID&quot;=:B1) </pre> <p>The plan is exactly as expected &#8211; so where do we look next to find out what&#8217;s going on? I&#8217;m a great believer in trying to make sure I have as much relevant information as possible; but there&#8217;s always the compromise when collecting information that balances the benefit of the new information against the difficulty of gathering it &#8211; sometimes the information that would be really helpful is just too difficult, or time-consuming, to collect.</p> <p>Fortunately, in this case, there&#8217;s a very quick easy way to enhance the information we&#8217;ve got so far. The rest of the AWR report &#8211; why not search for that SQL_ID in the rest of the report to see if that gives us a clue ? Unfortunately the value doesn&#8217;t appear anywhere else in the report. On the other hand there&#8217;s the AWR SQL report (<em><strong>?/rdbms/admin/</strong><strong>awrsqrpt.sql</strong></em> &#8211; or the equivalent drill-down on the OEM screen), and here&#8217;s a key part of what it tells us for this statement:</p> <pre class="brush: plain; title: ; notranslate"> Stat Name Statement Per Execution % Snap ---------------------------------------- ---------- -------------- ------- Elapsed Time (ms) 36 1.8 0.0 CPU Time (ms) 41 2.0 0.1 Executions 20 N/A N/A Buffer Gets 8,094 404.7 2.3 Disk Reads 1 0.1 0.0 Parse Calls 20 1.0 0.4 Rows 2,000 100.0 N/A User I/O Wait Time (ms) 1 N/A N/A Cluster Wait Time (ms) 0 N/A N/A Application Wait Time (ms) 0 N/A N/A Concurrency Wait Time (ms) 0 N/A N/A Invalidations 0 N/A N/A Version Count 1 N/A N/A Sharable Mem(KB) 19 N/A N/A ------------------------------------------------------------- </pre> <p>Spot the anomaly?</p> <p>We updated by primary key 20 times &#8211; and updated 2,000 rows!</p> <p>Take another look at the SQL &#8211; it&#8217;s all in upper case (apart from the hint/comment) with a bind variable named <em><strong>B1</strong></em> &#8211; that means it&#8217;s (probably) an example of SQL embedded in PL/SQL. Does that give us any clues ? Possibly, but even if it doesn&#8217;t we might be able to search <em><strong>dba_source</strong></em> for the PL/SQL code where that statement appears. And this is what it looks like in the source:</p> <pre class="brush: plain; title: ; notranslate"> forall i in 1..m_tab.count update /*+ by_pk */ t1 set n1 = 0 where id = m_tab(i).id ; </pre> <p>It&#8217;s PL/SQL array processing &#8211; we register one execution of the SQL statement while processing the whole array, so if we can show that there are 100 rows in the array the figures we get from the AWR report now make sense. One of the commonest oversights I (used to) see in places like the Oracle newsgroup or listserver was people reporting the amount of work done but forgetting to consider the equally important <em>&#8220;work done per row processed&#8221;</em>. To me it&#8217;s also one of the irritating little defects with the AWR report &#8211; I&#8217;d like to see <em>&#8220;rows processed&#8221;</em> in various of the <em>&#8220;SQL ordered by&#8221;</em> sections of the report (not just the <em>&#8220;SQL ordered by Executions&#8221;</em> section), rather than having to fall back on the AWR SQL report.</p> <h3>Footnote:</h3> <p>If you want to recreate the model and tests, here&#8217;s the code:</p> <pre class="brush: plain; title: ; notranslate"> rem rem Script: forall_pk_confusion.sql rem Author: Jonathan Lewis rem Dated: Mar 2017 rem rem Last tested rem 12.1.0.2 rem create table t1 nologging as with generator as ( select --+ materialize rownum id from dual connect by level &lt;= 1e4 ) select cast(rownum as number(8,0)) id, 2 * trunc(dbms_random.value(1e10,1e12)) n1, cast(lpad('x',100,'x') as varchar2(100)) 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; alter table t1 add constraint t1_pk primary key(id); declare cursor c1 is select id from t1 where mod(id,10000) = 1 ; type c1_array is table of c1%rowtype index by binary_integer; m_tab c1_array; begin open c1; fetch c1 bulk collect into m_tab ; dbms_output.put_line('Fetched: ' || m_tab.count); close c1; forall i in 1..m_tab.count update /*+ by_pk */ t1 set n1 = 0 where id = m_tab(i).id ; dbms_output.put_line('Updated: ' || sql%rowcount); end; / select v.plan_table_output from v$sql sql, table(dbms_xplan.display_cursor(sql.sql_id, sql.child_number)) v where sql_text like 'UPDATE%by_pk%' ; select executions, rows_processed, disk_reads, buffer_gets from v$sql where sql_id = '017r1rur8atzv' ; </pre><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16931/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16931/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16931&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16931 Tue Mar 21 2017 10:41:33 GMT-0400 (EDT) Oracle BPM: Hiding Faults from BPM? Don't use Service Activity! http://kettenisblogs.blogspot.com/2017/03/oracle-bpm-hiding-faults-from-bpm-dont.html <div dir="ltr" style="text-align: left;" trbidi="on"><i>In the following I explain how you can hide faults from BPM by not using (synchronous) Service activities, but (asynchronous) Send/Receive activities instead.</i><br /><div><br /></div><div>When calling services from a BPM process, you should think about where you want faults to show up and to be handled. This is specifically of interest when you have some integration layer between your BPM processes and external services that you call to abstract the external services from the BPM process. Let's call this layer the Service Layer. I have seen such a layer in various formats, ranging from a Reusable Subprocess, a BPEL process in the same composite as the BPM process, or a BPEL process in a separate composite, or instead of BPEL a Mediator. You may have such a layer to hide technical details from the business process, to cover some sort of custom exception handling, or to hide the message format from these external services from the BPM process (or a combination of all that). The latter might be because you don't have the luxury to do message transformation in a service bus.</div><div><br /></div><div>In case the BPM process calls the Service Layer through a (synchronous) Service activity and that fails, then this will result in the main BPM instance to get into an errored state, and you will have to handle the error in the BPM process. This behavior might be exactly what you wanted to prevent with the Service Layer, for example because the Service call is in a parallel flow and you want to be sure that the fault does not impact processing of the other, parallel threads.</div><div><br /></div><div>The following example shows what happens. It concerns a main BPM process, that calls synchronous ServicePS from the Service Layer, which on its turn calls some other ServiceA that (finally) calls a FailingService that always fails. The example is a bit over complicated because I configured a fault policy in the synchronous services. You may be aware that I <a href="https://kettenisblogs.blogspot.nl/2016/06/why-in-oracle-bpmsoa-suite-attaching.html">wrote some other article</a> explaining that this is not a good practice, but when creating this example I did not had that insight yet ;-) So bear with me and just ignore these synchronous services still being in a "Running" state after they failed.</div><div><br /></div><div>The following shows the synchronous BPEL of the ServicePS.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-B5byMAg7Zyk/WNEjhyVhnqI/AAAAAAAAA6A/nVq18R_JpvsUMCEFMySVCIZ0DS3_VbcqwCLcB/s1600/BPMServiceCalls01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="https://1.bp.blogspot.com/-B5byMAg7Zyk/WNEjhyVhnqI/AAAAAAAAA6A/nVq18R_JpvsUMCEFMySVCIZ0DS3_VbcqwCLcB/s320/BPMServiceCalls01.png" width="320" /></a></div><span id="goog_649022855"></span><span id="goog_649022856"></span><br />Because the whole chains of calls is synchronous from beginning to the end, you will see that all synchronous services have the "Faulted" state. Because of the fault policy in the BPM (the only one that makes sense in this case) it is still running, but because the fault bubbled up to the BPM instance that shows the error as well.<br /><br /></div><div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-JWhHtRv2eio/WNEj9KTxKTI/AAAAAAAAA6E/M__No6yQW24-OB_AfHgOLNdFka1bBDM1ACLcB/s1600/BPMServiceCalls02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="161" src="https://1.bp.blogspot.com/-JWhHtRv2eio/WNEj9KTxKTI/AAAAAAAAA6E/M__No6yQW24-OB_AfHgOLNdFka1bBDM1ACLcB/s320/BPMServiceCalls02.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-0s2Jmn3Zwdw/WNEkRDBPOKI/AAAAAAAAA6I/gqR1UqUqVhENlFb7GzaGG8AA8MGiqh9FgCLcB/s1600/BPMServiceCalls03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="96" src="https://1.bp.blogspot.com/-0s2Jmn3Zwdw/WNEkRDBPOKI/AAAAAAAAA6I/gqR1UqUqVhENlFb7GzaGG8AA8MGiqh9FgCLcB/s320/BPMServiceCalls03.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>Now lets refactor this to a solution where the Service Layer will hide the fault from the BPM process. To do so, all calls from the BPM process to the Service Layer will have to be asynchronous.</div><div><br /></div><div>The following shows the asynchronous BPEL of ServiceAsyncPS_NP.&nbsp;</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-Nv99YOA-u64/WNEkvxwp5jI/AAAAAAAAA6M/8Edps2UkJLAGSSznhmdY6cAEpORoP-v6QCLcB/s1600/BPMServiceCalls04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="294" src="https://4.bp.blogspot.com/-Nv99YOA-u64/WNEkvxwp5jI/AAAAAAAAA6M/8Edps2UkJLAGSSznhmdY6cAEpORoP-v6QCLcB/s320/BPMServiceCalls04.png" width="320" /></a></div><br /></div><div>Learning from my earlier mistake with the fault policy, this asynchronous service now is the only one in the chain with a fault policy. Because the FailingService failed, also the (synchronous) ServiceA_NP failed. But because ServicePSAsync_PS is asynchronous, that is where it stopped.<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-ikrrf4oiFgE/WNEk5dnk3xI/AAAAAAAAA6U/odbekQfU9s0S0uiAuv5nGo-t9ikWJdtbACLcB/s1600/BPMServiceCalls05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://3.bp.blogspot.com/-ikrrf4oiFgE/WNEk5dnk3xI/AAAAAAAAA6U/odbekQfU9s0S0uiAuv5nGo-t9ikWJdtbACLcB/s320/BPMServiceCalls05.png" width="320" /></a></div><br /></div><div><br /></div><div>The error can be recovered from there, and in the meantime, the BPM process runs like there is no cloud in the sky.</div><div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-HkkLynEdCTw/WNEk_nY007I/AAAAAAAAA6Y/tPQr18V7dZ4TAAFfJw2cdzT1SQ-ED5DEQCLcB/s1600/BPMServiceCalls06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="96" src="https://4.bp.blogspot.com/-HkkLynEdCTw/WNEk_nY007I/AAAAAAAAA6Y/tPQr18V7dZ4TAAFfJw2cdzT1SQ-ED5DEQCLcB/s320/BPMServiceCalls06.png" width="320" /></a></div><br /></div><div>Because of the asynchronous nature of the ServiceLayer, this is not a decision you should take lightly. For example, statefull BPEL cannot be migrated, so any error in it cannot be fixed for running instances. It therefore might not be the silver bullet you were looking for.</div></div></div> Jan Kettenis tag:blogger.com,1999:blog-33270406.post-1850357978154851701 Tue Mar 21 2017 09:18:00 GMT-0400 (EDT) dotnet publish - ASP.NET Core app deployed to Pivotal Cloud Foundry http://feedproxy.google.com/~r/blogspot/PEqWE/~3/V06gOBGxug4/dotnet-publish-aspnet-core-app-deployed.html I previously showed how to push a ASP .NET Core application to Pivotal Cloud Foundry by just using the source code files itself. It turns out this creates a rather large droplet and hence slows down the deployment. So here we are going to take the same demo and use "<b>dotnet publish</b>" to make this a lot faster. The previous post is here which is the base for this blog entry itself.<br /><br />ASP.NET Core app deployed to Pivotal Cloud Foundry<br /><a href="http://theblasfrompas.blogspot.com.au/2017/03/aspnet-core-app-deployed-to-pivotal.html">http://theblasfrompas.blogspot.com.au/2017/03/aspnet-core-app-deployed-to-pivotal.html</a><br /><br />First we need to make some changes to our project<br /><br />1. Open "<b>dotnet-core-mvc.csproj</b>" and add "<b>RuntimeIdentifiers</b>" inside the "<b>PropertyGroup</b>" tag<br /><pre class="brush: xml"> <br />&lt;PropertyGroup&gt;<br /> &lt;TargetFramework&gt;netcoreapp1.0&lt;/TargetFramework&gt;<br /> &lt;RuntimeIdentifiers&gt;osx.10.10-x64;osx.10.11-x64;ubuntu.14.04-x64;ubuntu.15.04-x64;debian.8-x64&lt;/RuntimeIdentifiers&gt;<br />&lt;/PropertyGroup&gt;<br /></pre><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-e0pW6Roojzw/WNEHcL0E2YI/AAAAAAAAA5I/nRjHAOVA2uYYqEzlp4xdGVd27OhsBKd4QCLcB/s1600/Screen%2BShot%2B2017-03-21%2Bat%2B9.54.57%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="112" src="https://4.bp.blogspot.com/-e0pW6Roojzw/WNEHcL0E2YI/AAAAAAAAA5I/nRjHAOVA2uYYqEzlp4xdGVd27OhsBKd4QCLcB/s320/Screen%2BShot%2B2017-03-21%2Bat%2B9.54.57%2BPM.png" width="320" /></a></div><br />2. Perform a "<b>dotnet restore</b>" as shown below either form a terminal windows/prompt or from Visual Studio Code itself , this step is vital and is required<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/software/dotnet/dotnet-core-mvc$ dotnet restore</span><br /><span style="color: #3d85c6;">....</span><br /><br />3. Now lets publish this as Release and ensure we target the correct runtime. For Cloud Foundry (CF) that will be "<b>ubuntu.14.04-x64</b>" and the framework version is 1.0 as we created the application using 1.0 , we could of used 1.1 here if we wanted to.<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/software/dotnet/dotnet-core-mvc$ <b>dotnet publish --output ./publish --configuration Release --runtime ubuntu.14.04-x64 &nbsp;--framework netcoreapp1.0</b></span><br /><span style="color: #3d85c6;">Microsoft (R) Build Engine version 15.1.548.43366</span><br /><span style="color: #3d85c6;">Copyright (C) Microsoft Corporation. All rights reserved.</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; dotnet-core-mvc -&gt; /Users/pasapicella/pivotal/software/dotnet/dotnet-core-mvc/bin/Release/netcoreapp1.0/ubuntu.14.04-x64/dotnet-core-mvc.dll</span><br /><div><br /></div>4. Finally cd into the "<b>Publish</b>" folder and verify there are the required DLL's as well as project files, JSON files , everything ready to run your application.<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/software/dotnet/dotnet-core-mvc/publish$ ls -lartF</span><br /><span style="color: #3d85c6;">total 116848</span><br /><span style="color: #3d85c6;">-rwxr--r-- &nbsp; &nbsp;1 pasapicella &nbsp;staff &nbsp; &nbsp;25992 Jun 11 &nbsp;2016 Microsoft.Win32.Primitives.dll*</span><br /><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">..</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><div><span style="color: #3d85c6;">-rwxr--r-- &nbsp; &nbsp;1 pasapicella &nbsp;staff &nbsp; &nbsp; &nbsp;168 Mar 16 22:33 appsettings.Development.json*</span></div><div><span style="color: #3d85c6;">drwxr-xr-x &nbsp; &nbsp;7 pasapicella &nbsp;staff &nbsp; &nbsp; &nbsp;238 Mar 21 08:01 wwwroot/</span></div><div><span style="color: #3d85c6;">-rwxr--r-- &nbsp; &nbsp;1 pasapicella &nbsp;staff &nbsp; &nbsp; 1332 Mar 21 08:01 dotnet-core-mvc.pdb*</span></div><div><span style="color: #3d85c6;">-rwxr--r-- &nbsp; &nbsp;1 pasapicella &nbsp;staff &nbsp; &nbsp; 8704 Mar 21 08:01 dotnet-core-mvc.dll*</span></div><div><span style="color: #3d85c6;">drwxr-xr-x &nbsp; &nbsp;6 pasapicella &nbsp;staff &nbsp; &nbsp; &nbsp;204 Mar 21 08:01 Views/</span></div><div><span style="color: #3d85c6;">drwxr-xr-x &nbsp; 16 pasapicella &nbsp;staff &nbsp; &nbsp; &nbsp;544 Mar 21 08:01 ../</span></div><div><span style="color: #3d85c6;">-rwxr--r-- &nbsp; &nbsp;1 pasapicella &nbsp;staff &nbsp; &nbsp; &nbsp;362 Mar 21 08:01 web.config*</span></div><div><span style="color: #3d85c6;">drwxr-xr-x &nbsp; 79 pasapicella &nbsp;staff &nbsp; &nbsp; 2686 Mar 21 08:01 refs/</span></div><div><span style="color: #3d85c6;">-rwxr--r-- &nbsp; &nbsp;1 pasapicella &nbsp;staff &nbsp; &nbsp; &nbsp; 92 Mar 21 08:01 dotnet-core-mvc.runtimeconfig.json*</span></div><div><span style="color: #3d85c6;">-rwxr--r-- &nbsp; &nbsp;1 pasapicella &nbsp;staff &nbsp; 297972 Mar 21 08:01 dotnet-core-mvc.deps.json*</span></div><div><span style="color: #3d85c6;">drwxr-xr-x &nbsp;212 pasapicella &nbsp;staff &nbsp; &nbsp; 7208 Mar 21 08:01 ./</span></div></div><div><br /></div>5. Now this time lets "<b>cf push</b>" using the files in the "<b>Publish</b>" folder and<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/software/dotnet/dotnet-core-mvc/publish$ <b>cf push pas-dotnetcore-mvc-demo -b https://github.com/cloudfoundry/dotnet-core-buildpack -m 512m</b></span><br /><span style="color: #3d85c6;">Creating app pas-dotnetcore-mvc-demo in org apples-pivotal-org / 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;">Using route pas-dotnetcore-mvc-demo.cfapps.io</span><br /><span style="color: #3d85c6;">Binding pas-dotnetcore-mvc-demo.cfapps.io to pas-dotnetcore-mvc-demo...</span><br /><span style="color: #3d85c6;">OK</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Uploading pas-dotnetcore-mvc-demo...</span><br /><span style="color: #3d85c6;">Uploading app files from: /Users/pasapicella/pivotal/software/dotnet/dotnet-core-mvc/publish</span><br /><span style="color: #3d85c6;">Uploading 14.8M, 280 files</span><br /><span style="color: #3d85c6;">Done uploading</span><br /><span style="color: #3d85c6;">OK</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Starting app pas-dotnetcore-mvc-demo in org apples-pivotal-org / space development as papicella@pivotal.io...</span><br /><span style="color: #3d85c6;">Creating container</span><br /><span style="color: #3d85c6;">Successfully created container</span><br /><span style="color: #3d85c6;">Downloading app package...</span><br /><span style="color: #3d85c6;">Downloaded app package (23.7M)</span><br /><span style="color: #3d85c6;">-----&gt; Buildpack version 1.0.13</span><br /><span style="color: #3d85c6;">ASP.NET Core buildpack version: 1.0.13</span><br /><span style="color: #3d85c6;">ASP.NET Core buildpack starting compile</span><br /><span style="color: #3d85c6;">-----&gt; Restoring files from buildpack cache</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">-----&gt; Restoring NuGet packages cache</span><br /><span style="color: #3d85c6;">-----&gt; Extracting libunwind</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;libunwind version: 1.2</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;https://buildpacks.cloudfoundry.org/dependencies/manual-binaries/dotnet/libunwind-1.2-linux-x64-f56347d4.tgz</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">-----&gt; Saving to buildpack cache</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Copied 38 files from /tmp/app/libunwind to /tmp/cache</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">-----&gt; Cleaning staging area</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">ASP.NET Core buildpack is done creating the droplet</span><br /><span style="color: #3d85c6;">Exit status 0</span><br /><span style="color: #3d85c6;">Uploading droplet, build artifacts cache...</span><br /><span style="color: #3d85c6;">Uploading build artifacts cache...</span><br /><span style="color: #3d85c6;">Uploading droplet...</span><br /><span style="color: #3d85c6;">Uploaded build artifacts cache (995K)</span><br /><span style="color: #3d85c6;">Uploaded droplet (23.8M)</span><br /><span style="color: #3d85c6;">Uploading complete</span><br /><span style="color: #3d85c6;">Destroying container</span><br /><span style="color: #3d85c6;">Successfully destroyed container</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">1 of 1 instances running</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">App started</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">OK</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">App pas-dotnetcore-mvc-demo was started using this command `cd . &amp;&amp; ./dotnet-core-mvc --server.urls http://0.0.0.0:${PORT}`</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Showing health and status for app pas-dotnetcore-mvc-demo in org apples-pivotal-org / 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;">requested state: started</span><br /><span style="color: #3d85c6;">instances: 1/1</span><br /><span style="color: #3d85c6;">usage: 512M x 1 instances</span><br /><span style="color: #3d85c6;">urls: pas-dotnetcore-mvc-demo.cfapps.io</span><br /><span style="color: #3d85c6;">last uploaded: Mon Mar 20 21:05:08 UTC 2017</span><br /><span style="color: #3d85c6;">stack: cflinuxfs2</span><br /><span style="color: #3d85c6;">buildpack: https://github.com/cloudfoundry/dotnet-core-buildpack</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp;state &nbsp; &nbsp; since &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cpu &nbsp; &nbsp;memory &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;disk &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;details</span><br /><span style="color: #3d85c6;">#0 &nbsp; running &nbsp; 2017-03-21 08:06:05 AM &nbsp; 0.0% &nbsp; 39.2M of 512M &nbsp; 66.9M of 1G</span><br /><br /><div class="blogger-post-footer">http://feeds.feedburner.com/TheBlasFromPas</div><img src="http://feeds.feedburner.com/~r/blogspot/PEqWE/~4/V06gOBGxug4" height="1" width="1" alt=""/> Pas Apicella tag:blogger.com,1999:blog-6527688743456205256.post-7990663987934966668 Tue Mar 21 2017 07:16:00 GMT-0400 (EDT) MobaXterm 10.2 http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/clzkC9pcREU/ <p><img class="wp-image-4858 alignleft" src="https://oracle-base.com/blog/wp-content/uploads/2015/05/command-prompt.png" alt="" width="150" height="150" /><a href="http://mobaxterm.mobatek.net/download-home-edition.html">MobaXterm 10.2</a> has just been released.</p> <p>The <a href="https://mobaxterm.mobatek.net/download-home-edition.html">downloads</a> and <a href="https://mobaxterm.mobatek.net/download-home-edition.html">changelog</a> are in the usual places.</p> <p>The <a href="https://oracle-base.com/blog/2017/02/20/mobaxterm-10-0/">previous version (10.0)</a> was pulled as it was getting false positives with some AV software. I&#8217;m glad to report this one doesn&#8217;t get flagged and installs fine!</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/03/21/mobaxterm-10-2/">MobaXterm 10.2</a> was first posted on March 21, 2017 at 11:36 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/clzkC9pcREU" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=7000 Tue Mar 21 2017 06:36:45 GMT-0400 (EDT) SQLcl ‚Äď Setting Up the Formatter http://www.thatjeffsmith.com/archive/2017/03/sqlcl-setting-up-the-formatter/ <p>Just because you&#8217;re in a command line interface doesn&#8217;t mean you&#8217;re stuck with ugly code!</p> <p>Wait, if it&#8217;s my code, you&#8217;re stuck with ugly code.</p> <p>But if it&#8217;s YOUR code, then you&#8217;re not stuck with poorly formatted code.</p> <p>You can of course use the FORMAT command to format what&#8217;s in a file or in the SQLcl buffer.</p> <h3>I don&#8217;t like the formatter default settings!</h3> <p>Have no fear.</p> <p>Load up the GUI.</p> <p>Yes, THAT GUI.</p> <p>Set your preferences.</p> <p>Save them.</p> <div id="attachment_6103" style="width: 1034px" class="wp-caption aligncenter"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sqlcl-formatter-rules1.png" alt="" width="1024" height="628" class="size-full wp-image-6103" /><p class="wp-caption-text">Set it and forget it?</p></div> <p>Go back to SQLcl, load the formatter rules.</p> <div id="attachment_6104" style="width: 1172px" class="wp-caption aligncenter"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sqlcl-formatter-rules2.png" alt="" width="1162" height="448" class="size-full wp-image-6104" /><p class="wp-caption-text">remember, you have HELP for each command and for each SET[ting] in SQLcl!</p></div> <p><em>Before the format&#8230;</em><br /> <div id="attachment_6105" style="width: 656px" class="wp-caption aligncenter"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sqlcl-formatter-rules3.png" alt="" width="646" height="782" class="size-full wp-image-6105" /><p class="wp-caption-text">I want leading commas!</p></div> <p>Ok, let&#8217;s format that.</p> <div id="attachment_6106" style="width: 698px" class="wp-caption aligncenter"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sqlcl-formatter-rules4.png" alt="" width="688" height="783" class="size-full wp-image-6106" /><p class="wp-caption-text">Most of you will hate this formatting scheme.</p></div> <p>Easy-peasy!</p> <p>Note I did with this the latest copy of SQLcl &#8211; updated just LAST WEEK &#8211; and a pre-production version of version 4.2 of SQL Developer which you folks will be able to get access to later this year.</p> <p>Here&#8217;s SQLcl using formatter settings applied from EA2, so that SHOULD work for those of you using the EA.</p> <div id="attachment_6107" style="width: 943px" class="wp-caption aligncenter"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sqlcl-formatter-rules5.png" alt="" width="933" height="390" class="size-full wp-image-6107" /><p class="wp-caption-text">My code&#8217;s not ugly, YOUR code is ugly <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> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6102 Mon Mar 20 2017 16:41:27 GMT-0400 (EDT) Refreshing VDB With Sales History Data http://dbakevlar.com/2017/03/refreshing-vdb-sales-history-data/ <div id="tweetbutton6530" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Frefreshing-vdb-sales-history-data%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%2Frefreshing-vdb-sales-history-data%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>Now that I&#8217;ve loaded a ton of transactions and did a bunch of work load on my source database with the SH sample schema and <a href="http://dbakevlar.com/2017/03/swingbench-aws-trial/">Swingbench</a>, I&#8217;ve noted how little impact to the databases using different cloud tools, (which will come in a few later posts) now I&#8217;m going to show you how easy it is to create a new VDB from all of this, WITH the new SH data included. ¬†During all of this time, the primary users of my <strong>Delphix VDB</strong>, (virtualized databases) would have been working in the previous iage, but someone wants that new SH schema now that my testing has completed.</p> <p>To do this, I open up my Delphix admin console, (using the IP address for the Delphix Engine from the¬†AWS Trail build output), log in as <strong>delphix_admin</strong> and open up the <strong>Source</strong> group to access the Employee Oracle 11g database, (aka ORCL.)</p> <p>I know my new load is complete on the ORCL database and need to take a new snapshot to update the Delphix Engine outside of the standard refresh interval, (I&#8217;m set at the default of every 24 hrs.) ¬†Access this by clicking on the Configuration tab and to take a snapshot, I simply click on the camera icon.</p> <p><a href="http://dbakevlar.com/2017/03/refreshing-vdb-sales-history-data/screen-shot-2017-03-10-at-4-43-01-pm/" rel="attachment wp-att-6532"><img class="alignnone wp-image-6532" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-4.43.01-PM.png?resize=481%2C268" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-4.43.01-PM.png?resize=1024%2C570 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-4.43.01-PM.png?resize=300%2C167 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-4.43.01-PM.png?resize=768%2C427 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-4.43.01-PM.png?w=1046 1046w" sizes="(max-width: 481px) 100vw, 481px" data-recalc-dims="1" /></a></p> <p>A snapshot will take a couple seconds, as this is a very, very small database, (2.3G) and then you can click on Timeflow to view the new snapshot available for use. ¬†Ensure the new snapshot is chosen by moving the slider all the way to the right and look at the timestamp, ensuring it&#8217;s the latest, matching your recent one.</p> <p><a href="http://dbakevlar.com/2017/03/refreshing-vdb-sales-history-data/screen-shot-2017-03-10-at-4-48-58-pm/" rel="attachment wp-att-6533"><img class="alignnone wp-image-6533" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-4.48.58-PM.png?resize=470%2C274" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-4.48.58-PM.png?resize=1024%2C597 1024w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-4.48.58-PM.png?resize=300%2C175 300w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-4.48.58-PM.png?resize=768%2C448 768w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-4.48.58-PM.png?w=1104 1104w" sizes="(max-width: 470px) 100vw, 470px" data-recalc-dims="1" /></a></p> <p>Click on Provision and it will default to the Source host, change to the target, update to a new, preferred database name, (if you don&#8217;t like the default) and then you may have to scroll down to see the Next button to go through the subsequent steps in the wizard. ¬†I know my Macbook has a smaller screen and I do have to scroll to see the Next button. ¬†After you&#8217;ve made any other changes, click on Finish and let the job run. ¬†Don&#8217;t be surprised by the speed that a VDB is provisioned- ¬†I know it&#8217;s really fast, but it really did create a new VDB!</p> <p>Now that we have it, let&#8217;s connect to it from SQL*Plus and check prove that we got the new SH schema over.</p> <p>Using the IP Address for the Linux Target that was given to use in our AWS Trial build, let&#8217;s connect:</p> <pre>ssh delphix@&lt;linuxtarget IP Address&gt;</pre> <p>Did you really just create a whole new VDB?</p> <pre class="p1"><span class="s1">[delphix@linuxtarget ~]$ ps -ef | grep pmon</span> <span class="s1">delphix <span class="Apple-converted-space">¬† </span>1148<span class="Apple-converted-space">¬† </span>1131<span class="Apple-converted-space">¬† </span>0 18:57 pts/0<span class="Apple-converted-space">¬† ¬† </span>00:00:00 grep pmon</span> <span class="s1">delphix<span class="Apple-converted-space">¬† </span>16825 <span class="Apple-converted-space">¬† ¬† </span>1<span class="Apple-converted-space">¬† </span>0 Mar09 ?<span class="Apple-converted-space">¬† ¬† ¬† ¬† </span>00:00:06 ora_pmon_devdb</span> <span class="s1">delphix<span class="Apple-converted-space">¬† </span>16848 <span class="Apple-converted-space">¬† ¬† </span>1<span class="Apple-converted-space">¬† </span>0 Mar09 ?<span class="Apple-converted-space">¬† ¬† ¬† ¬† </span>00:00:06 ora_pmon_qadb</span> <span class="s1">delphix<span class="Apple-converted-space">¬† </span>31479 <span class="Apple-converted-space">¬† ¬† </span>1<span class="Apple-converted-space">¬† </span>0 18:30 ?<span class="Apple-converted-space">¬† ¬† ¬† ¬† </span>00:00:00 ora_pmon_VEmp6C0</span></pre> <p class="p1">Yep, there it is&#8230;</p> <p class="p1">Now let&#8217;s connect to it.</p> <p class="p1">Set our environment:</p> <pre class="p1">. 11g.env</pre> <p class="p1">Set the ORACLE_SID to the new VDB</p> <pre class="p1">export ORACLE_SID=VEmp6C0</pre> <p class="p1">Connect to SQL*Plus as our SH user using the password used in our creation on the source database, ORCL:</p> <pre class="p1">$ sqlplus sh <span class="s1">Enter password: </span> <span class="s1">Connected to:</span> <span class="s1">Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production</span> <span class="s1">With the Partitioning, OLAP, Data Mining and Real Application Testing options</span> <span class="s1">SQL&gt; select object_type, count(*) from user_objects</span> <span class="s1"><span class="Apple-converted-space">¬† </span>2<span class="Apple-converted-space">¬† </span>group by object_type;</span> <span class="s1">OBJECT_TYPE <span class="Apple-converted-space">¬† ¬† ¬† </span>COUNT(*)</span> <span class="s1">------------------- ----------</span> <span class="s1">INDEX PARTITION<span class="Apple-converted-space">¬† ¬† </span>196</span> <span class="s1">TABLE PARTITION <span class="Apple-converted-space">¬† ¬† </span>56</span> <span class="s1">LOB <span class="Apple-converted-space">¬† ¬† </span>2</span> <span class="s1">DIMENSION <span class="Apple-converted-space">¬† ¬† </span>5</span> <span class="s1">MATERIALIZED VIEW <span class="Apple-converted-space">¬† </span>2</span> <span class="s1">INDEX <span class="Apple-converted-space">¬† ¬† </span>30</span> <span class="s1">VIEW <span class="Apple-converted-space">¬† ¬† </span>1</span> <span class="s1">TABLE <span class="Apple-converted-space">¬† ¬† </span>16</span> <span class="s1">8 rows selected.</span> <span class="s1">SQL&gt; select table_name, sum(num_rows) from user_tab_statistics</span> <span class="s1"><span class="Apple-converted-space">¬† </span>2<span class="Apple-converted-space">¬† </span>where table_name not like 'DR$%'</span> <span class="s1"><span class="Apple-converted-space">¬† </span>3<span class="Apple-converted-space">¬† </span>group by table_name</span> <span class="s1"><span class="Apple-converted-space">¬† </span>4<span class="Apple-converted-space">¬† </span>order by table_name;</span> <span class="s1">TABLE_NAME <span class="Apple-converted-space">¬† ¬† ¬† </span>SUM(NUM_ROWS)</span> <span class="s1">------------------------------ -------------</span> <span class="s1">CAL_MONTH_SALES_MV <span class="Apple-converted-space">¬† </span>48</span> <span class="s1">CHANNELS <span class="Apple-converted-space">¬† </span>5</span> <span class="s1">COSTS <span class="Apple-converted-space">¬† ¬† ¬† </span>164224</span> <span class="s1">COUNTRIES <span class="Apple-converted-space">¬† </span>23</span> <span class="s1">CUSTOMERS <span class="Apple-converted-space">¬† ¬† ¬† </span>55500</span> <span class="s1">FWEEK_PSCAT_SALES_MV <span class="Apple-converted-space">¬† ¬† ¬† </span>11266</span> <span class="s1">PRODUCTS <span class="Apple-converted-space">¬† </span>72</span> <span class="s1">PROMOTIONS 503</span> <span class="s1">SALES <span class="Apple-converted-space">¬† ¬† </span>1837686</span> <span class="s1">SALES_TRANSACTIONS_EXT <span class="Apple-converted-space">¬† ¬† ¬† </span>916039</span> <span class="s1">SUPPLEMENTARY_DEMOGRAPHICS 4500</span> <span class="s1">TIMES 1826</span> <span class="s1">12 rows selected.</span></pre> <p>Well, lookie there, the same as the s<a href="http://dbakevlar.com/2017/03/manually-adding-sales-history-sh-schema-11-2-0-4/">ource database we loaded earlier.</a>.. <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;" /> ¬†Next, we&#8217;ll go into the stuff that always gets my interest- performance data, the cloud and visualization tools.</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/aws-trial/" rel="tag">AWS Trial</a>, <a href="http://dbakevlar.com/tag/sh-schema/" rel="tag">SH Schema</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/refreshing-vdb-sales-history-data/&title=Refreshing VDB With Sales History Data"> <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/refreshing-vdb-sales-history-data/"><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/refreshing-vdb-sales-history-data/&title=Refreshing VDB With Sales History Data"><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/refreshing-vdb-sales-history-data/&title=Refreshing VDB With Sales History Data"><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/refreshing-vdb-sales-history-data/&title=Refreshing VDB With Sales History Data"><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/refreshing-vdb-sales-history-data/#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/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.p?w=600" border="0" align="absmiddle" data-recalc-dims="1"> &nbsp;<a href="http://dbakevlar.com/2012/07/error-during-maintenance-work-in-10-2-0-4-0-rollback-segment-0-with-name-system-too-small/" >Error During Maintenance Work in 10.2.0.4.0 + Rollback Segment 0 with Name "SYSTEM" too Small</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/03/first-week-at-oracle/" >First Week at Oracle</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/11/em12c-damage-control/" >EM12c, Damage Control</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/refreshing-vdb-sales-history-data/">Refreshing VDB With Sales History Data</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/03/refreshing-vdb-sales-history-data/">Refreshing VDB With Sales History Data</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6530 Mon Mar 20 2017 13:05:15 GMT-0400 (EDT) Oracle Database 12c Release 2: Analytic Views & SQL Developer http://www.thatjeffsmith.com/archive/2017/03/oracle-database-12c-release-2-analytic-views-sql-developer/ <p>One of the major new features in Oracle Database 12c Release 2 is <a href="https://docs.oracle.com/database/122/NEWFT/new_features.htm#NEWFT-GUID-C2204A84-C12F-48BE-9374-8AB11A3BC381" target="_blank">Analytic Views</a>.</p> <p><em><br /> An analytic view is a type of view that can be used to easily extend the content of a star schema with aggregated data, measure calculations and descriptive metadata, and to simplify the SQL needed to access data.</p> <p>Analytic views layer a hierarchical/dimensional model over data. Analytic views are defined over the dimension tables and fact table of a star schema. Hierarchies are defined over dimension tables. The analytic view references hierarchies and a fact table.<br /> </em></p> <p>I&#8217;m not here to introduce this new feature itself, more just to let you know that Oracle SQL Developer v4.2 has a TON of support for it &#8211; courtesy the same team that built this database feature.</p> <p>If you&#8217;d like to take a tutorial on this subject, <a href="https://livesql.oracle.com/apex/livesql/file/tutorial_EDVE861IID1QUD1NIUPU5ALEW.html" target="_blank">LiveSQL has a nice on-line demo</a> &#8211; no database required!</p> <h3>The SQLDev Stuff</h3> <p>It starts in the Tree.</p> <div id="attachment_6093" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av1.png" alt="" width="1024" height="559" class="size-full wp-image-6093" /></a><p class="wp-caption-text">Let the fun begin!</p></div> <p>Or wait, don&#8217;t already have a Analytic View to play with? We have kind of a quick-start wizard for you. And I used it, on my Hockey Stats table, which has a ton of fun data to slice and dice.</p> <p>Just right-click on the analytic view tree node item, and ask for the &#8216;Quick Analytic View&#8230;&#8217; option.</p> <div id="attachment_6094" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av2.png" alt="" width="1024" height="645" class="size-full wp-image-6094" /></a><p class="wp-caption-text">Quick, that sounds cool.</p></div> <p>Pick a table&#8230;the wizard will then try to identify and model some dimension keys, measures, and attribute dimensions. </p> <div id="attachment_6095" style="width: 810px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/quick1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/quick1.png" alt="" width="800" height="600" class="size-full wp-image-6095" /></a><p class="wp-caption-text">Pick a table, the wizard looks for likely candidates.</p></div> <p>I can of course change any of the guesses that may or may not have been spot on.</p> <div id="attachment_6096" style="width: 987px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-quick.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-quick.png" alt="" width="977" height="760" class="size-full wp-image-6096" /></a><p class="wp-caption-text">The &#8216;defaults&#8217; &#8211; you can go and un-check or change any of these.</p></div> <p>And of course I can see the generated DDL &#8211; and here&#8217;s what some of that looks like.</p> <div id="attachment_6097" style="width: 810px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-ddl.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-ddl.png" alt="" width="800" height="600" class="size-full wp-image-6097" /></a><p class="wp-caption-text">The code!</p></div> <p>So I click, &#8216;OK&#8217;, and the tree refreshes, and I suddenly have new toys to play with!</p> <div id="attachment_6098" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-data1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-data1.png" alt="" width="1024" height="604" class="size-full wp-image-6098" /></a><p class="wp-caption-text">Check whatever parameters you want to shape your query.</p></div> <p>Hit the &#8216;Play&#8217; Button, then toggle to the data panel&#8230;</p> <div id="attachment_6099" style="width: 664px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-data2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-data2.png" alt="" width="654" height="723" class="size-full wp-image-6099" /></a><p class="wp-caption-text">Kinda boring, but it&#8217;s our data.</p></div> <p>&#8230;or much more interesting, go over to the graph page!</p> <div id="attachment_6100" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-data3.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-data3.png" alt="" width="1024" height="583" class="size-full wp-image-6100" /></a><p class="wp-caption-text">The same charting system you&#8217;ll see in SQL Developer&#8217;s Reports feature.</p></div> <h3>There&#8217;s so, so, so much more than this.</h3> <p>Do you have 45 minutes? If so, try this very <a href="http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r2/AnalyticViews/UsingAVs.html#overview" target="_blank">nice hands on lab</a>.</p> <div id="attachment_6101" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r2/AnalyticViews/UsingAVs.html#overview"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/av-lab.png" alt="" width="1024" height="675" class="size-full wp-image-6101" /></a><p class="wp-caption-text">Teach me!!!</p></div> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6092 Mon Mar 20 2017 12:01:23 GMT-0400 (EDT) Kscope17 Preview: Your Destination Awaits http://www.odtug.com/p/bl/et/blogaid=685&source=1 Kscope12, my very first Kscope and the one that shares this year's location, was a superbly unique event. In last year's ODTUG Cinco de Mayo #tbt Twitter party ("tbt" = "ThrowBack Thursday" for those of you who don't use Twitter), pictures from Kscope12 kept surfacing attached to fond memories... ODTUG http://www.odtug.com/p/bl/et/blogaid=685&source=1 Mon Mar 20 2017 11:09:55 GMT-0400 (EDT) March ODTUG News http://www.odtug.com/p/bl/et/blogaid=687&source=1 ODTUG celebrated its 20th birthday! The ODTUG News will keep you up to date on ODTUG Kscope17 updates, events, and sponsorship opportunities. Read more to learn about Meetups and events in your area, and mark your calendars for our upcoming March and April webinars. ODTUG http://www.odtug.com/p/bl/et/blogaid=687&source=1 Mon Mar 20 2017 11:04:27 GMT-0400 (EDT) Oracle SOA Suite: Find that composite instance! https://technology.amis.nl/2017/03/20/oracle-soa-suite-find-composite-instance/ <p>When executing BPM or BPEL processes, they are usually executed in the context of a specific entity. Sometimes you want to find instances involved with a specific entity. There are different ways to make this easy. You can for example use composite instance <a href="https://technology.amis.nl/2011/11/28/soa-suite-11g-set-the-composite-instance-title-with-a-bpel-component/">titles</a> or <a href="http://www.avioconsulting.com/blog/composite-sensors-oracle-soa-suite-12c">sensors</a> and set them to a unique identifier for your entity. If they have not been used, you can check the audit trail. However, manually checking the audit trail, especially if there are many instances, can be cumbersome. Also if different teams use different standards or standards have evolved over time, there might not be a single way to look for your entity identifier in composite instances. You want to automate this.</p> <p>It is of course possible to write Java or WLST code and use the API to gather all relevant information. It would however require fetching large amounts of data from the SOAINFRA database to analyse. Fetching all that data into WLST or Java and combining it, would not be fast. I&#8217;ve created a database package / query which performs this feat directly on the 11g SOAINFRA database (and most likely with little alteration on 12c).</p> <p><span id="more-44371"></span></p> <h1>How does it work</h1> <p>The checks which are performed in order (the first result found is returned):</p> <ul> <li>Check the composite instance title</li> <li>Check the sensor values</li> <li>Check the composite audit trail</li> <li>Check the composite audit details</li> <li>Check the BPM audit trail</li> <li>Check the Mediator audit trail</li> <li>Do the above checks for every composite sharing the same ECID.</li> </ul> <p>It first looks for instance titles conforming to a specific syntax (with a regular expression), next it looks for sensor values of sensors with a specific name. After that it starts to look in the audit trail and if even that fails, it looks in the audit details where messages are stored when they become larger than a <a href="http://docs.oracle.com/cd/E25054_01/admin.1111/e10226/bp_config.htm">set value</a> (look for Audit Trail threshold). Next the BPM and Mediator specific audit tables are looked at and as a last resort, it uses the ECID to find other composite instances in the same flow which might provide the required information and it does the same checks as mentioned above on those composite instances. Using this method I could find for almost any composite instance in my environment a corresponding entity identifier. The package/query has been tested on 11g but not on 12c. You should of course check to see if it fits your personal requirements. The code is mostly easy to read save the audit parsing details. For parsing the audit trail and details tables, I&#8217;ve used <a href="https://gibaholms.wordpress.com/2014/02/03/export-audit-trail-from-database-soa-10g-and-11g/">the following blog</a>. The data is saved in a file which can be imported in Excel and can be scheduled on Linux with a provided sh script.</p> <h1>Getting the script to work for your case</h1> <p>You can download the script <a href="https://github.com/MaartenSmeets/weblogic/tree/master/SOASuite/queries/getcomposites">here</a>. Several minor changes are required to make the script suitable for a specific use case.</p> <ul> <li>In the example script getcomposites_run.sql the identification regular expressing: AA\d\d\.\d+ is used. You should of course replace this with a regular expression reflecting the format of your entity identification.</li> <li>In the example script getcomposites_run.sql sensors which have AAIDENTIFICATION in the name will be looked at. This should be changed to reflect the names used by your sensors.</li> <li>The getcomposites.sh contains a connect string: connect soainfra_username/soainfra_password. You should change this to your credentials.</li> <li>The getcomposites.sh script can be scheduled. In the example script, it is scheduled to run at 12:30:00. If you do not need it, you can remove the scheduling. It can come in handy when you want to run it outside of office hours because the script most likely will impact performance.</li> <li>The selection in getcomposites_run.sql only looks at running composites. Depending on your usecase, you might want to change this to take all composites into consideration.</li> <li>The script has not been updated to 12g. If you happen to create a 12g version of this script (I think not much should have to be changed), please inform me so I can add it to the Github repository.</li> </ul> <h1>Considerations</h1> <ul> <li>The script contains some repetition of code. This could be improved.</li> <li>If you have much data in your SOAINFRA tables, the query will be slow. It could take hours. During this period, performance might be adversely affected.</li> <li>That I had to create a script like this (first try this, then this, then this, etc) indicates that I encountered a situation in which there was not a single way to link composite instances to a specific identifier. If your project uses strict standards and these standards are enforced, a script like this would not be needed. For example, you set your composite instance title to reflect your main entity identifier or use specific sensors. In such a case, you do not need to fall back to parsing audit data.</li> </ul> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/20/oracle-soa-suite-find-composite-instance/">Oracle SOA Suite: Find that composite instance!</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=44371 Mon Mar 20 2017 07:14:39 GMT-0400 (EDT) Apache Kafka on the Oracle Cloud: My First experiences with Oracle Event Hub Cloud Service https://technology.amis.nl/2017/03/18/apache-kafka-on-the-oracle-cloud-my-first-experiences-with-oracle-event-hub-cloud-service/ <p>Oracle recently made their ‚ÄėKafka on Cloud‚Äô service available: the Event Hub cloud service &#8211; offered as part of the Big Data Compute Cloud Service. In this article, I will briefly show the steps I went through to get up and running with this service. To be frank, it was not entirely intuitive &#8211; so this may be handy the next time I have to do it or perhaps when you are struggling. One obvious point of confusion is the overloaded use of the ‚Äėservice‚Äô &#8211; which is applied among others for Kafka Topics.</p> <p>The steps are:</p> <ol> <li>Initialize the Oracle BigData Compute CS | Oracle Event Hub Cloud Service &#8211; Platform &#8211; -expose REST Proxy <li>Create Network Access Rule to enable access to the Event Hub Platform instance from the public internet <li>Create a Event Hub service instance on the Event Hub Platform &#8211; corresponding to a Kafka Topic <li>Inspect Event Hub using PSM <li>Interact with Event Hub through CURL <li>Create application (e.g. NodeJS) to access the Event Hub Service (aka Kafka Topic): produce message, create consumer, consume messages (through the REST proxy) &#8211; discussed in a subsequent blog article</li> </ol> <h2>Initialize the Oracle BigData Compute CS | Oracle Event Hub Cloud Service &#8211; Platform &#8211; -expose REST Proxy</h2> <p>&nbsp;</p> <p>From the Dashboard, open the BigData Compute Cloud Service. Open the dropdown menu. Select option <em>Oracle Event Hub Cloud Service &#8211; Platform</em>.</p> <p>&nbsp;</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-32.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-32.png" width="672" height="410"></a></p> <p>&nbsp;</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-33.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-33.png" width="749" height="323"></a></p> <p>&nbsp;</p> <p>Provide the name of the service &#8211; the Kafka Event Hub Cluster: <em>soaringEventsHub</em>. Click Next</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-34.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-34.png" width="731" height="310"></a></p> <p>Specify Basic deployment type (for simple explorations). Upload the SSH Public Key.</p> <p>For a trial, select just a single node (I started out with 5 nodes and it cost me a huge pile of resources). </p> <p>Enable REST Access &#8211; to be able to communicate with the Event Hub through the REST API. Specify the username and password for accessing the REST proxy. (in hindsight, I probably should have picked a different username than admin). </p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-35.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-35.png" width="745" height="483"></a></p> <p>&nbsp;</p> <p>Click Next. The service will be created &#8211; with a generous memory an storage allocation:<a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-36.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-36.png" width="756" height="436"></a></p> <p>When the service creation is complete &#8211; details are shown, including the public IP for the Kafka cluster and the ZooKeeper instance<a href="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTMLd64c40.png"><img title="SNAGHTMLd64c40" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="SNAGHTMLd64c40" src="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTMLd64c40_thumb.png" width="768" height="459"></a></p> <p>And the Rest Proxy details:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML1296a2d.png"><img title="SNAGHTML1296a2d" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="SNAGHTML1296a2d" src="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML1296a2d_thumb.png" width="765" height="445"></a></p> <h2>Create Network Access Rule to enable access to the Event Hub Platform instance from the public internet </h2> <p>To be perfectly honest &#8211; I am not sure anymore that this step is really required. I had trouble accessing the Event Hub service from my laptop &#8211; and I am still not able to connect to the Kafka broker from a regular Kafka client &#8211; so I tried many different things, including exposing the public IP address on the Event Hub (Kafk)a node. Whether it helped or made any difference, I am not entirely sure. I will share the steps I took, and you figure out whether you need them. (I am still hoping that accessing the Event Hub from applications running inside the same identity domain on Oracle PaaS will be easier).</p> <p>I opened the Access Rule for the Event Hub service:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-37.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-37.png" width="829" height="499"></a></p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-38.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-38.png" width="782" height="520"></a></p> <p>I created an access rule</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-39.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-39.png" width="868" height="259"></a></p> <p>And enabled it. In red the new access rule. In the blue rectangle the access rule that opens up the REST Proxy for the Event Hub service:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML152941b.png"><img title="SNAGHTML152941b" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="SNAGHTML152941b" src="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML152941b_thumb.png" width="825" height="517"></a></p> <p>&nbsp;</p> <h2>Create Event Hub Service on the Event Hub Service Platform aka Create a Kafka Topic </h2> <p>Open the Oracle Event Hub Cloud Service console (not the Oracle Event Hub Cloud Service &#8211; Platform!)</p> <p>&nbsp;</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-40.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-40.png" width="691" height="591"></a></p> <p>Click on Create Service. This corresponds to creating a Kafka Topic. The naming is awfully confusing here. Create an instance of Event Hub Service on top of an instance of Event Hub Platform Service actually means create a Kafka message topic. Now that is much clearer. </p> <p>&nbsp;</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-41.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-41.png" width="719" height="296"></a></p> <p>&nbsp;</p> <p>Specify the name for the service &#8211; which will be part of the name of the Kafka Topic. Specify the Number of Partitions and the default Retention Period for messages published to the topic. Indicate on which instance of the Event Hub Cloud Service Platform &#8211; created in the first step in this article &#8211; the topic should be created.<a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-42.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-42.png" width="752" height="341"></a></p> <p>Click Next.<a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-43.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-43.png" width="797" height="361"></a></p> <p>Click Create.</p> <p>The Topic is created with a name that is composed from the name of the identity domain and the name specified for the Event Hub Service instance: partnercloud17-SoaringEventBus.</p> <p>&nbsp;</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-44.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-44.png" width="821" height="481"></a></p> <p>The popup details for the ‚Äúservice‚ÄĚ&nbsp; (aka Topic) indicate the main configuration details as well as the REST endpoint for this Topic. Messages can be produced at this endpoint<a href="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTMLd98394.png">:<img title="SNAGHTMLd98394" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="SNAGHTMLd98394" src="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTMLd98394_thumb.png" width="790" height="469"></a></p> <p>The log of all Service activity (again, Service here is at the same level of Kafka Topic)</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-45.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-45.png" width="808" height="436"></a></p> <p>The Service Console now lists these instances:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-46.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-46.png" width="808" height="476"></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <h2>Inspect Event Hub using PSM</h2> <p>The PSM (PaaS Service Manager) command line interface for the Oracle Cloud (read <a href="https://technology.amis.nl/2017/03/07/getting-started-with-oracle-paas-service-manager-command-line-interface-psm/" target="_blank">here</a> on how to install it and get going) can be used to inspect the state of the Event Hub Service. It cannot be used to produce and consume messages though.</p> <p>Using PSM for Event Hub is described in the documentation:&nbsp; <a href="http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/oehcs-commands.html">http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/oehcs-commands.html</a></p> <p>To list all services (topics)<br />psm oehcs services</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-47.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-47.png" width="498" height="579"></a></p> <p>&#8212; details for a single service<br />psm oehcs service &#8211;service-name SoaringEventBus</p> <p>&#8212; to create a new Topic:</p> <pre>psm oehcs create-service</pre> <p>&#8212; to update the retention time for a topic:</p> <p>psm oehcs update-service </p> <p>&nbsp;</p> <h2>Interact with Event Hub through CURL</h2> <ul><!--EndFragment--></ul> <p>One way to produce messages to the topic and/or consume message from a topic is by using cURL. </p> <p>It took me some time to figure out the correct syntax for each of these operations. It seems not abundantly well documented/explained at present. Anyways, here it goes. (note: the -k option tells cURL to accept an unknown certificate)</p> <p>* To produce a message to the topic on Event Hub, use:</p> <p>curl -X POST -k -u username:password -H &#8220;Content-Type: application/vnd.kafka.json.v1+json&#8221;&nbsp; -d &#8220;{ \&#8221;records\&#8221;: [ { \&#8221;key\&#8221;: \&#8221;myKey\&#8221;, \&#8221;value\&#8221;: \&#8221;mySpecialValue\&#8221;}] }&#8221; https://public_ip_REST-PROXY:1080/restproxy/topics/NAME_OF_EVENT_HUB_SERVICE</p> <p>* Create a consumer group: in order to consume messages, you first need to create a consumer group with a consumer instance. Subsequently, you can consume messages through the consumer:</p> <p>curl -X POST -k -u username:password -H &#8220;Content-Type: application/vnd.kafka.json.v1+json&#8221;&nbsp; -d &#8220;{ \&#8221;name\&#8221;:&nbsp; \&#8221;soaring-eventbus-consumer\&#8221;, \&#8221;format\&#8221;: \&#8221;json\&#8221; }&#8221;&nbsp; https://public_ip_REST-PROXY:1080/restproxy/consumers/soaring-eventbus-consumer-group</p> <p>* To consume messages &#8211; levering the consumer group soaring-eventbus-consumer-group and the consumer instance soaring-events-consumer:<br />curl -X POST -k -u username:password -H &#8220;Accept: application/vnd.kafka.json.v1+json&#8221;&nbsp;&nbsp;&nbsp; https://public_ip_REST-PROXY:1080/restproxy/consumers/soaring-eventbus-consumer-group/instances/soaring-eventbus-consumer/topics/partnercloud17-SoaringEventBus</p> <p>&nbsp;</p> <p>Here three commands: create a consumer group, produce a message and consume (all) available messages &#8211; all from the same topic:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML142b0dd.png"><img title="SNAGHTML142b0dd" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="SNAGHTML142b0dd" src="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML142b0dd_thumb.png" width="1078" height="120"></a></p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/18/apache-kafka-on-the-oracle-cloud-my-first-experiences-with-oracle-event-hub-cloud-service/">Apache Kafka on the Oracle Cloud: My First experiences with Oracle Event Hub Cloud Service</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=44363 Sat Mar 18 2017 07:46:06 GMT-0400 (EDT) Oracle Analytics Cloud Release - Blog Hop Takeaways http://www.odtug.com/p/bl/et/blogaid=686&source=1 If you haven‚Äôt heard already, Oracle Analytics Cloud (OAC) is officially released! This includes the Essbase Cloud (EssCS), Business Intelligence Cloud (BICS), and Data Visualization Cloud (DVCS). Find out more here! ODTUG http://www.odtug.com/p/bl/et/blogaid=686&source=1 Fri Mar 17 2017 14:34:06 GMT-0400 (EDT) Oracle BPM: Loops and Gateway Struggles http://kettenisblogs.blogspot.com/2017/03/oracle-bpm-loops-and-gateway-struggles.html <div dir="ltr" style="text-align: left;" trbidi="on"><i>If there is one issue that I see people often struggle with, then it is the use of loops in combination with gateways. The following discusses a few cases.</i><br /><div><br /></div><div>The following picture shows several loops in combination with a Parallel gateway, of which some are valid and some not. The same holds for the Inclusive gateway.</div><div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-OqaJ75B3ylE/WMwQQHb_2rI/AAAAAAAAA5I/TK8Gc5oRg5QzZKvJcApcC3xOTKO0X37KwCLcB/s1600/LoopAndGateways.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="151" src="https://2.bp.blogspot.com/-OqaJ75B3ylE/WMwQQHb_2rI/AAAAAAAAA5I/TK8Gc5oRg5QzZKvJcApcC3xOTKO0X37KwCLcB/s400/LoopAndGateways.png" width="400" /></a></div><div class="Text3"><span lang="EN-US">To understand why some loops are valid and other not, you have to realize that at the beginning of a Parallel or Inclusive gateway as many tokens are generated as there are parallel flows that run between the start and end of the gateway. To the BPM engine this translates to 1 or more threads that are instantiated.<o:p></o:p></span></div><div class="Text3"><span lang="EN-US"><br /></span></div><div class="Text3"><span lang="EN-US">No such restrictions are there for an exclusive gateway, because then there is only one token (thread) active at any time.<o:p></o:p></span></div><div class="Text3"><span lang="EN-US"><br /></span></div><div class="Text3"><span lang="EN-US">So in BPMN the following flows are not valid:</span></div><div class="Text3"></div><ul style="text-align: left;"><li>From "crossover?", because you are going to another thread that may already have passed the point that the flow goes to. However, JDeveloper does not prevent you from doing so.</li><li>From "loop back inside to beginning", because at the beginning of the gateway new threads would have to be instantiated for flows of which some threads may already run. JDeveloper should fail validation of such a construct.</li><li>From "loop back inside from outside", because you would then have to go back to a thread already ended in the merge. JDeveloper should fail validation of such a construct.</li></ul><br /><div class="Text3"><span lang="EN-US"></span></div><div class="Text3"><span lang="EN-US">The flows that are valid in BPMN are:</span></div><div class="Text3"></div><ul style="text-align: left;"><li>From "loop back inside", as you loop back within the same thread.</li><li>From "loop back outside to beginning" as you are re-instantiating a new set of threads for which the previous set already ended.</li></ul><br /><div class="Text3">In case the latter does not work apply patch 23230734.</div><div class="Text3"><span lang="EN-US"></span></div></div></div> Jan Kettenis tag:blogger.com,1999:blog-33270406.post-8796752513741755179 Fri Mar 17 2017 12:40:00 GMT-0400 (EDT) Integrigy COLLABORATE 17 Sessions - Presentations on Oracle Database, Oracle E-Business Suite, and PeopleSoft Security https://www.integrigy.com/security-resources/integrigy-collaborate-17-sessions-presentations-oracle-database-oracle-e-business <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>Integrigy is presenting nine papers this year at COLLABORATE 17 (<a data-jsb_prepared="60lgfj5xfr" href="https://collaborate.oaug.org/" rel="noreferrer">https://collaborate.oaug.org/</a>). The COLLABORATE 17 conference is a joint conference for the Oracle Applications User Group (OAUG), Independent Oracle Users Group (IOUG), and Quest International Users Group.</p> <p>Here is our schedule. If you have questions or would like to meet with us while at COLLABORTE 17, please conact us at&nbsp;<a data-jsb_prepared="x8pkvz2c90" href="mailto:info@integrigy.com?subject=Collaborate17" rel="noreferrer">info@integrigy.com</a>.</p> <table cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td colspan="4"> <p><strong>Sunday&nbsp;Apr 02, 2017</strong></p> </td> </tr> <tr> <td style="width:115px;"> <p>1:45 PM - 2:45 PM</p> </td> <td style="width:413px;"> <p><strong>Oracle E-Business Suite 12.2 Security Enhancements</strong><br><br /> <a data-jsb_prepared="j6k09ba83r" href="https://app.attendcollaborate.com/event/member?item_id=5621519" rel="noreferrer">https://app.attendcollaborate.com/event/member?item_id=5621519</a></p> </td> <td> <p>Banyan E</p> </td> <td> <p>Speaker: Stephen Kost</p> </td> </tr> <tr> <td style="width:115px;"> <p>1:45 PM - 2:45 PM</p> </td> <td style="width:413px;"> <p><strong>How to Control and Secure Your DBAs and Developers in Oracle E- Business Suite</strong><br><br /> <a data-jsb_prepared="tn0ec2h4zq" href="https://app.attendcollaborate.com/event/member?item_id=5740411" rel="noreferrer">https://app.attendcollaborate.com/event/member?item_id=5740411</a></p> </td> <td> <p>South Seas F</p> </td> <td> <p>Speaker: Michael Miller</p> </td> </tr> <tr> <td colspan="4"> <p><strong>Monday&nbsp;Apr 03, 2017</strong></p> </td> </tr> <tr> <td style="width:115px;"> <p>9:45 AM - 10:45 AM</p> </td> <td style="width:413px;"> <p><strong>The Thrifty DBA Does Database Security</strong><br><br /> <a data-jsb_prepared="de0kxldddy" href="https://app.attendcollaborate.com/event/member?item_id=5660960" rel="noreferrer">https://app.attendcollaborate.com/event/member?item_id=5660960</a></p> </td> <td> <p>Jasmine D</p> </td> <td> <p>Speaker: Stephen Kost</p> </td> </tr> <tr> <td style="width:115px;"> <p>1:00 PM - 4:30 PM</p> </td> <td style="width:413px;"> <p><strong>Integrigy team available for meetings and discussions </strong>Contacts us at <a href="mailto:info@integrigy.com">info@integrigy.com</a> to arrange</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td colspan="4"> <p><strong>Tuesday&nbsp;Apr 04, 2017</strong></p> </td> </tr> <tr> <td style="width:115px;"> <p>9:45 AM - 10:45 AM</p> </td> <td style="width:413px;"> <p><strong>Solving Application Security Challenges with Database Vault</strong><br><br /> <a data-jsb_prepared="2to2iro2rt" href="https://app.attendcollaborate.com/event/member?item_id=5660961" rel="noreferrer">https://app.attendcollaborate.com/event/member?item_id=5660961</a></p> </td> <td> <p>Jasmine D</p> </td> <td> <p>Speaker: Stephen Kost</p> </td> </tr> <tr> <td style="width:115px;"> <p>1:00 PM - 4:30 PM</p> </td> <td style="width:413px;"> <p><strong>Integrigy team available for meetings and discussions </strong>Contacts us at <a href="mailto:info@integrigy.com">info@integrigy.com</a> to arrange</p> </td> <td> <p>&nbsp;</p> </td> <td> <p>&nbsp;</p> </td> </tr> <tr> <td colspan="4"> <p><strong>Wednesday&nbsp;Apr 05, 2017</strong></p> </td> </tr> <tr> <td style="width:115px;"> <p>9:45 AM - 10:45 AM</p> </td> <td style="width:413px;"> <p><strong>When You Can't Apply Database Security Patches</strong><br><br /> <a data-jsb_prepared="1sxiwjuyp2" href="https://app.attendcollaborate.com/event/member?item_id=5660962" rel="noreferrer">https://app.attendcollaborate.com/event/member?item_id=5660962</a></p> </td> <td> <p>Jasmine D</p> </td> <td> <p>Speaker: Stephen Kost</p> </td> </tr> <tr> <td style="width:115px;"> <p>11:00 AM - 12:00 PM</p> </td> <td style="width:413px;"> <p><strong>Common Mistakes When Deploying Oracle E-Business Suite to the Internet</strong><br><br /> <a data-jsb_prepared="dz4mudp9kv" href="https://app.attendcollaborate.com/event/member?item_id=5621520" rel="noreferrer">https://app.attendcollaborate.com/event/member?item_id=5621520</a></p> </td> <td> <p>South Seas B</p> </td> <td> <p>Speaker: Stephen Kost</p> </td> </tr> <tr> <td style="width:115px;"> <p>1:30 PM - 2:30 PM</p> </td> <td style="width:413px;"> <p><strong>Securing Oracle 12c Multitenant Pluggable Databases</strong><br><br /> <a data-jsb_prepared="nsfaw9355i" href="https://app.attendcollaborate.com/event/member?item_id=5660950" rel="noreferrer">https://app.attendcollaborate.com/event/member?item_id=5660950</a></p> </td> <td> <p>Palm A</p> <p>&nbsp;</p> </td> <td> <p>Speaker: Michael Miller</p> </td> </tr> <tr> <td style="width:115px;"> <p>2:45 PM - 3:45 PM</p> </td> <td style="width:413px;"> <p><strong>How to Control and Secure Your DBAs and Developers in PeopleSoft</strong><br><br /> <a data-jsb_prepared="ax0kxpaafy" href="https://app.attendcollaborate.com/event/member?item_id=5617942" rel="noreferrer">https://app.attendcollaborate.com/event/member?item_id=5617942</a></p> </td> <td> <p>Ballroom&nbsp; J</p> </td> <td> <p>Speaker: Michael Miller</p> </td> </tr> <tr> <td colspan="4"> <p><strong>Thursday&nbsp;Apr 06, 2017</strong></p> </td> </tr> <tr> <td style="width:115px;"> <p>8:30 AM - 9:30 AM</p> </td> <td style="width:413px;"> <p><strong>Oracle E-Business Suite Mobile and Web Services Security</strong><br><br /> <a data-jsb_prepared="h70o8p4d1m" href="https://app.attendcollaborate.com/event/member?item_id=5621407" rel="noreferrer">https://app.attendcollaborate.com/event/member?item_id=5621407</a></p> </td> <td> <p>South Seas B</p> </td> <td> <p>Speaker: Michael Miller</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p>You can download a complete listing of Integrigy's sessions at <a data-jsb_prepared="9hk69pec8v" href="/security-resources/integrigy-collaborate-17-sessions-oaug-ioug-and-quest" rel="noreferrer">Integrigy COLLABORATE 17 Sessions.</a></p> </div></div></div><a href="/tags/oracle-database" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle Database</a>, <a href="/tags/oracle-e-business-suite" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle E-Business Suite</a>, <a href="/tags/oracle-peoplesoft" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle PeopleSoft</a> mmiller 562 at https://www.integrigy.com Fri Mar 17 2017 11:12:29 GMT-0400 (EDT) PeopleSoft Security https://www.integrigy.com/security-resources/peoplesoft-security-0 <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 a quick summary of Integrigy‚Äôs latest research on PeopleSoft. Was sending this to a client and decided it was a good posting:</p> <p><a data-jsb_prepared="z0zm3g5tt0" href="/security-resources/guide-peoplesoft-logging-and-auditing" rel="noreferrer">Guide to PeopleSoft Logging and Auditing</a></p> <p><a data-jsb_prepared="3j59vsszq6" href="/security-resources/how-control-and-secure-peoplesoft-dbas-and-developers" rel="noreferrer">How to Control and Secure PeopleSoft DBAs and Developers</a></p> <p><a data-jsb_prepared="wv9x7oew74" href="/security-resources/peoplesoft-database-security" rel="noreferrer">PeopleSoft Database Security</a></p> <p><a data-jsb_prepared="mtbbz9samv" href="/security-resources/peoplesoft-database-secure-baseline-configuration" rel="noreferrer">PeopleSoft Database Secure Baseline Configuration</a></p> <p><a data-jsb_prepared="tqte6ld7tr" href="/security-resources/peoplesoft-security-quick-reference" rel="noreferrer">PeopleSoft Security Quick Reference</a></p> <p>If you have any questions, please contact us at <a href="mailto:info@integrigy.com">info@integrigy.com</a></p> <p>&nbsp;</p> <div class="grammarly-disable-indicator">&nbsp;</div> <div class="grammarly-disable-indicator">&nbsp;</div> </div></div></div><a href="/tags/oracle-peoplesoft" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Oracle PeopleSoft</a>, <a href="/tags/whitepaper" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Whitepaper</a> mmiller 560 at https://www.integrigy.com Fri Mar 17 2017 10:34:03 GMT-0400 (EDT) Deploying Oracle E-Business Suite 12.2 REST Web Services https://www.integrigy.com/security-resources/deploying-oracle-e-business-suite-122-rest-web-services <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 forth 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>Physically deploying REST services with 12.2 is straightforward. REST is an architectural style and not a protocol and is best used to support lightweight and ‚Äúchatty‚ÄĚ interfaces such as Mobile applications.&nbsp; With 12.2, REST Web Application Description Language (WADL) interface definition files are generated within the E-Business Suite's WebLogic server and run through the OAFM Application. The OAFM application created with the installation of the Oracle E-Business Suite.</p> <p style="margin-left: 40px;"><img alt="" src="/files/images/EBS12-2_REST.jpg" style="width: 377px; height: 206px;"></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="undfdxl0n4" href="file://localhost/node/543" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security ‚Äď Integrigy Whitepaper</a></li> <li><a data-jsb_prepared="5wjg0qj4rl" href="file://localhost/node/534" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security ‚Äď Integrigy Webinar</a></li> <li><a data-jsb_prepared="je4k6g7r45" 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" style="margin-left: 40px;">&nbsp;</div> <div class="grammarly-disable-indicator"> <p>&nbsp;</p> <ul></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 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 547 at https://www.integrigy.com Fri Mar 17 2017 07:00:00 GMT-0400 (EDT) ASP.NET Core app deployed to Pivotal Cloud Foundry http://feedproxy.google.com/~r/blogspot/PEqWE/~3/rNX6e1VUXG4/aspnet-core-app-deployed-to-pivotal.html This post will show you how to write your first ASP.NET Core application on macOS or Linux and push it to Pivotal Cloud Foundry without having to PUBLISH it for deployment.<br /><br />Before getting started you will need the following<br /><br />1. Download and install <a href="https://microsoft.com/net/core">.NET Core</a><br />2.&nbsp;<a href="https://code.visualstudio.com/">Visual Studio Code</a> with the <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp">C# extension</a>.<br />3. CF CLI installed&nbsp;<a href="https://github.com/cloudfoundry/cli">https://github.com/cloudfoundry/cli</a><br /><br /><b>Steps</b><br /><br /><span style="color: #e69138;">Note: Assumes your already logged into Pivotal Cloud Foundry and connected to Pivotal Web Services (run.pivotal.io), the command below shows I am connected and targeted</span><br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~$ cf target</span><br /><span style="color: #3d85c6;">API endpoint: &nbsp; https://api.run.pivotal.io</span><br /><span style="color: #3d85c6;">API version: &nbsp; &nbsp;2.75.0</span><br /><span style="color: #3d85c6;">User: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; papicella@pivotal.io</span><br /><span style="color: #3d85c6;">Org: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;apples-pivotal-org</span><br /><span style="color: #3d85c6;">Space: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;development</span><br /><br />1. Create new project<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/software/dotnet/dotnet-core-mvc$ dotnet new mvc&nbsp;--auth None --framework netcoreapp1.0</span><br /><span style="color: #3d85c6;">Content generation time: 278.4748 ms</span><br /><span style="color: #3d85c6;">The template "ASP.NET Core Web App" created successfully.</span><br /><br />2. Restore as follows<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/software/dotnet/dotnet-core-mvc$ dotnet restore</span><br /><span style="color: #3d85c6;">&nbsp; Restoring packages for /Users/pasapicella/pivotal/software/dotnet/dotnet-core-mvc/dotnet-core-mvc.csproj...</span><br /><span style="color: #3d85c6;">&nbsp; Generating MSBuild file /Users/pasapicella/pivotal/software/dotnet/dotnet-core-mvco/obj/dotnet-core-mvc.csproj.nuget.g.props.</span><br /><span style="color: #3d85c6;">&nbsp; Generating MSBuild file /Users/pasapicella/pivotal/software/dotnet/dotnet-core-mvc/obj/dotnet-core-mvc.csproj.nuget.g.targets.</span><br /><span style="color: #3d85c6;">&nbsp; Writing lock file to disk. Path: /Users/pasapicella/pivotal/software/dotnet/dotnet-core-mvc/obj/project.assets.json</span><br /><span style="color: #3d85c6;">&nbsp; Restore completed in 1.09 sec for /Users/pasapicella/pivotal/software/dotnet/dotnet-core-mvc/dotnet-core-mvc.csproj.</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; NuGet Config files used:</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; /Users/pasapicella/.nuget/NuGet/NuGet.Config</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; Feeds used:</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; https://api.nuget.org/v3/index.json</span><br /><br />3. At this point we can run the application and see what it looks like in a browser<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/software/dotnet/dotnet-core-mvc$ dotnet run</span><br /><span style="color: #3d85c6;">Hosting environment: Production</span><br /><span style="color: #3d85c6;">Content root path: /Users/pasapicella/pivotal/software/dotnet/dotnet-core-mvc</span><br /><span style="color: #3d85c6;">Now listening on: http://localhost:5000</span><br /><span style="color: #3d85c6;">Application started. Press Ctrl+C to shut down.</span><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-nNu9BL_CKB8/WMtQa2QrOII/AAAAAAAAA4Q/OAyVgTaxIvMthGCbKreZUs5eeNDn2MiTwCLcB/s1600/Screen%2BShot%2B2017-03-17%2Bat%2B1.56.05%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="154" src="https://4.bp.blogspot.com/-nNu9BL_CKB8/WMtQa2QrOII/AAAAAAAAA4Q/OAyVgTaxIvMthGCbKreZUs5eeNDn2MiTwCLcB/s320/Screen%2BShot%2B2017-03-17%2Bat%2B1.56.05%2BPM.png" width="320" /></a></div><br />Now to prepare this demo for Pivotal Cloud Foundry we need to make some changes to he generated code as shown in the next few steps<br /><br />4. In Visual Studio Code, under the menu item ‚Äú<b>File/Open</b>‚ÄĚ select the ‚Äú<span style="color: #3d85c6;"><b>dotnet-core-mvc</b></span>‚ÄĚ folder and open it. Confirm all messages from Visual Studio Code.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-3Z1196Ax-cY/WMtR5KGkPYI/AAAAAAAAA4c/MJ7igGlc3AU-2Yqk-ja5hMYXcyNbYhsiwCLcB/s1600/Screen%2BShot%2B2017-03-17%2Bat%2B2.02.38%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="207" src="https://2.bp.blogspot.com/-3Z1196Ax-cY/WMtR5KGkPYI/AAAAAAAAA4c/MJ7igGlc3AU-2Yqk-ja5hMYXcyNbYhsiwCLcB/s320/Screen%2BShot%2B2017-03-17%2Bat%2B2.02.38%2BPM.png" width="320" /></a></div><br /><br />The .NET Core buildpack configures the app web server automatically so you don‚Äôt have to handle this yourself, but you have to prepare your app in a way that allows the buildpack to deliver this information via the command line to your app<br /><br />5. Open "<b>Program.cs</b>" and modify the Main() method as follows adding "var config = ..." and ".UseConfiguration(config)" as shown below<br /><pre class="brush: java"> <br />using System;<br />using System.Collections.Generic;<br />using System.IO;<br />using System.Linq;<br />using System.Threading.Tasks;<br />using Microsoft.AspNetCore.Hosting;<br />using Microsoft.Extensions.Configuration;<br /><br />namespace dotnet_core_mvc<br />{<br /> public class Program<br /> {<br /> public static void Main(string[] args)<br /> {<br /> var config = new ConfigurationBuilder()<br /> .AddCommandLine(args)<br /> .Build();<br /><br /> var host = new WebHostBuilder()<br /> .UseKestrel()<br /> .UseConfiguration(config)<br /> .UseContentRoot(Directory.GetCurrentDirectory())<br /> .UseIISIntegration()<br /> .UseStartup&lt;Startup&gt;()<br /> .Build();<br /><br /> host.Run();<br /> }<br /> }<br />}<br /></pre><br />6. Open "<b>dotnet-core-mvc.csproj</b>" and add the following dependency "<b>Microsoft.Extensions.Configuration.CommandLine</b>" as shown below<br /><pre class="brush: xml"> <br />&lt;Project Sdk="Microsoft.NET.Sdk.Web"&gt;<br /><br /> &lt;PropertyGroup&gt;<br /> &lt;TargetFramework&gt;netcoreapp1.0&lt;/TargetFramework&gt;<br /> &lt;/PropertyGroup&gt;<br /><br /><br /> &lt;ItemGroup&gt;<br /> &lt;PackageReference Include="Microsoft.AspNetCore" Version="1.0.4" /&gt;<br /> &lt;PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.0.3" /&gt;<br /> &lt;PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.0.2" /&gt;<br /> &lt;PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.0.2" /&gt;<br /> <b>&lt;PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="1.0.0" /&gt;</b><br /> &lt;PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.0.1" /&gt;<br /> &lt;/ItemGroup&gt;<br /><br /><br />&lt;/Project&gt;<br /></pre><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-y2_nfyCUT-M/WMtWFOenG0I/AAAAAAAAA4o/V25d9ksTSSMRY4GWpUaWTamBlhQ1pB5qgCLcB/s1600/Screen%2BShot%2B2017-03-17%2Bat%2B2.19.55%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="206" src="https://3.bp.blogspot.com/-y2_nfyCUT-M/WMtWFOenG0I/AAAAAAAAA4o/V25d9ksTSSMRY4GWpUaWTamBlhQ1pB5qgCLcB/s320/Screen%2BShot%2B2017-03-17%2Bat%2B2.19.55%2BPM.png" width="320" /></a></div><br />7. File -&gt; Save All<br /><br />8. Jump back out to a terminal windows, you can actually restore from Visual Studio Code IDE BUT I still like to do it from the command line<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/software/dotnet/dotnet-core-mvc$ dotnet restore</span><br /><span style="color: #3d85c6;">...</span><br /><br />9. Deploy to Pivotal Cloud Foundry as follows, you will need to use a unique name so replace "pas" with your own name that should do it.<br /><br /><span style="color: #e69138;">$ cf push pas-dotnetcore-mvc-demo -b https://github.com/cloudfoundry/dotnet-core-buildpack -m 512m</span><br /><br />** Output **<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/pivotal/software/dotnet/dotnet-core-mvc$ cf push pas-dotnetcore-mvc-demo -b https://github.com/cloudfoundry/dotnet-core-buildpack -m 512m</span><br /><span style="color: #3d85c6;">Creating app pas-dotnetcore-mvc-demo in org apples-pivotal-org / 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;">Using route pas-dotnetcore-mvc-demo.cfapps.io</span><br /><span style="color: #3d85c6;">Binding pas-dotnetcore-mvc-demo.cfapps.io to pas-dotnetcore-mvc-demo...</span><br /><span style="color: #3d85c6;">OK</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Uploading pas-dotnetcore-mvc-demo...</span><br /><span style="color: #3d85c6;">Uploading app files from: /Users/pasapicella/pivotal/software/dotnet/dotnet-core-mvc</span><br /><span style="color: #3d85c6;">Uploading 208.7K, 84 files</span><br /><span style="color: #3d85c6;">Done uploading</span><br /><span style="color: #3d85c6;">OK</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Starting app pas-dotnetcore-mvc-demo in org apples-pivotal-org / space development as papicella@pivotal.io...</span><br /><span style="color: #3d85c6;">Creating container</span><br /><span style="color: #3d85c6;">Successfully created container</span><br /><span style="color: #3d85c6;">Downloading app package...</span><br /><span style="color: #3d85c6;">Downloaded app package (675.5K)</span><br /><span style="color: #3d85c6;">ASP.NET Core buildpack version: 1.0.13</span><br /><span style="color: #3d85c6;">ASP.NET Core buildpack starting compile</span><br /><span style="color: #3d85c6;">-----&gt; Restoring files from buildpack cache</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">-----&gt; Restoring NuGet packages cache</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">-----&gt; Extracting libunwind</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;libunwind version: 1.2</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;https://buildpacks.cloudfoundry.org/dependencies/manual-binaries/dotnet/libunwind-1.2-linux-x64-f56347d4.tgz</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">-----&gt; Installing .NET SDK</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;.NET SDK version: 1.0.1</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">-----&gt; Restoring dependencies with Dotnet CLI</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Welcome to .NET Core!</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;---------------------</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Telemetry</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include command-line arguments. The data is collected by Microsoft and shared with the community.</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell.</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;You can read more about .NET Core tools telemetry @ https://aka.ms/dotnet-cli-telemetry.</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Configuring...</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;-------------------</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;A command is running to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Decompressing 100% 16050 ms</span><br /><span style="color: #3d85c6;">-----&gt; Buildpack version 1.0.13</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;https://buildpacks.cloudfoundry.org/dependencies/dotnet/dotnet.1.0.1.linux-amd64-99324ccc.tar.gz</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;--------------</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Expanding 100% 13640 ms</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Restoring packages for /tmp/app/dotnet-core-mvc.csproj...</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Installing Microsoft.Extensions.Configuration 1.0.0.</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Installing Microsoft.Extensions.Configuration.CommandLine 1.0.0.</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Generating MSBuild file /tmp/app/obj/dotnet-core-mvc.csproj.nuget.g.props.</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Writing lock file to disk. Path: /tmp/app/obj/project.assets.json</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Restore completed in 2.7 sec for /tmp/app/dotnet-core-mvc.csproj.</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NuGet Config files used:</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/tmp/app/.nuget/NuGet/NuGet.Config</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Feeds used:</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;https://api.nuget.org/v3/index.json</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Installed:</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2 package(s) to /tmp/app/dotnet-core-mvc.csproj</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Detected .NET Core runtime version(s) 1.0.4, 1.1.1 required according to 'dotnet restore'</span><br /><span style="color: #3d85c6;">-----&gt; Installing required .NET Core runtime(s)</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;.NET Core runtime 1.0.4 already installed</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;.NET Core runtime 1.1.1 already installed</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">-----&gt; Publishing application using Dotnet CLI</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Microsoft (R) Build Engine version 15.1.548.43366</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Copyright (C) Microsoft Corporation. All rights reserved.</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dotnet-core-mvc -&gt; /tmp/app/bin/Debug/netcoreapp1.0/dotnet-core-mvc.dll</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Copied 38 files from /tmp/app/libunwind to /tmp/cache</span><br /><span style="color: #3d85c6;">-----&gt; Saving to buildpack cache</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Copied 850 files from /tmp/app/.dotnet to /tmp/cache</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Copied 19152 files from /tmp/app/.nuget to /tmp/cache</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">-----&gt; Cleaning staging area</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;Removing /tmp/app/.nuget</span><br /><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp; &nbsp;OK</span><br /><span style="color: #3d85c6;">ASP.NET Core buildpack is done creating the droplet</span><br /><span style="color: #3d85c6;">Exit status 0</span><br /><span style="color: #3d85c6;">Uploading droplet, build artifacts cache...</span><br /><span style="color: #3d85c6;">Uploading droplet...</span><br /><span style="color: #3d85c6;">Uploaded build artifacts cache (359.9M)</span><br /><span style="color: #3d85c6;">Uploaded droplet (131.7M)</span><br /><span style="color: #3d85c6;">Uploading complete</span><br /><span style="color: #3d85c6;">Successfully destroyed container</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">0 of 1 instances running, 1 starting</span><br /><span style="color: #3d85c6;">1 of 1 instances running</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">App started</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">OK</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">App pas-dotnetcore-mvc-demo was started using this command `cd .cloudfoundry/dotnet_publish &amp;&amp; dotnet dotnet-core-mvc.dll --server.urls http://0.0.0.0:${PORT}`</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Showing health and status for app pas-dotnetcore-mvc-demo in org apples-pivotal-org / 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;">requested state: started</span><br /><span style="color: #3d85c6;">instances: 1/1</span><br /><span style="color: #3d85c6;">usage: 512M x 1 instances</span><br /><span style="color: #3d85c6;"><b>urls: pas-dotnetcore-mvc-demo.cfapps.io</b></span><br /><span style="color: #3d85c6;">last uploaded: Fri Mar 17 03:19:51 UTC 2017</span><br /><span style="color: #3d85c6;">stack: cflinuxfs2</span><br /><span style="color: #3d85c6;">buildpack: https://github.com/cloudfoundry/dotnet-core-buildpack</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp;state &nbsp; &nbsp; since &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cpu &nbsp; &nbsp;memory &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;disk &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; details</span><br /><span style="color: #3d85c6;">#0 &nbsp; running &nbsp; 2017-03-17 02:26:03 PM &nbsp; 0.0% &nbsp; 39.1M of 512M &nbsp; 302.7M of 1G</span><br /><br />10. Finally invoke the application using the URL which can be determined by the output at the end of the PUSH above or using "<b>cf apps</b>"<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-rH_OHlmIWso/WMtYIdPwqUI/AAAAAAAAA40/CmRluOvdZdM0mB4mfmIFssBiTepa7B1lQCLcB/s1600/Screen%2BShot%2B2017-03-17%2Bat%2B2.28.29%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="112" src="https://3.bp.blogspot.com/-rH_OHlmIWso/WMtYIdPwqUI/AAAAAAAAA40/CmRluOvdZdM0mB4mfmIFssBiTepa7B1lQCLcB/s320/Screen%2BShot%2B2017-03-17%2Bat%2B2.28.29%2BPM.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-PdYUy-WkQPs/WMtYJOztd2I/AAAAAAAAA44/Er5Yo9AYiokwTogpDcnzUaBDVos0r1UHwCLcB/s1600/Screen%2BShot%2B2017-03-17%2Bat%2B2.28.46%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="203" src="https://2.bp.blogspot.com/-PdYUy-WkQPs/WMtYJOztd2I/AAAAAAAAA44/Er5Yo9AYiokwTogpDcnzUaBDVos0r1UHwCLcB/s320/Screen%2BShot%2B2017-03-17%2Bat%2B2.28.46%2BPM.png" width="320" /></a></div><br /><b>More Information</b><br /><br /><a href="https://docs.microsoft.com/en-us/aspnet/core/tutorials/your-first-mac-aspnet">https://docs.microsoft.com/en-us/aspnet/core/tutorials/your-first-mac-aspnet</a><div class="blogger-post-footer">http://feeds.feedburner.com/TheBlasFromPas</div><img src="http://feeds.feedburner.com/~r/blogspot/PEqWE/~4/rNX6e1VUXG4" height="1" width="1" alt=""/> Pas Apicella tag:blogger.com,1999:blog-6527688743456205256.post-2069047394014857611 Thu Mar 16 2017 23:37:00 GMT-0400 (EDT) AWS CloudWatch with Delphix AWS Trial http://dbakevlar.com/2017/03/aws-cloudwatch-delphix-aws-trial/ <div id="tweetbutton6521" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Faws-cloudwatch-delphix-aws-trial%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%2Faws-cloudwatch-delphix-aws-trial%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 love valuable metric data and I wanted to see what&#8217;s offered from different cloud providers.¬† Metrics are data and data ensures that when performance is impacted, we have the information we need to answer questions and resolve issues.</p> <p><a href="http://dbakevlar.com/2017/03/aws-cloudwatch-delphix-aws-trial/thatsgold/" rel="attachment wp-att-6543"><img class="alignnone wp-image-6543" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/thatsgold.gif?resize=288%2C216" alt="" data-recalc-dims="1" /></a></p> <p>For my first adventure, we&#8217;ll start with a high level review of Amazon. ¬†<a href="https://console.aws.amazon.com/cloudwatch/">Cloudwatch</a> is one of the main tools to inspect the workload on instances in EC2, using the AWS Trial while <a href="http://dbakevlar.com/2017/03/swingbench-aws-trial/">Swingbench</a> runs the <a href="http://dbakevlar.com/2017/03/manually-adding-sales-history-sh-schema-11-2-0-4/">Sales History</a> workload.</p> <p>There is <a href="https://aws.amazon.com/cloudwatch/pricing/">additional charges for this feature</a>, but it&#8217;s pretty minimal per instance vs. other tools, so I&#8217;ll talk about the basics here and you can make up your own mind.</p> <p><a href="http://dbakevlar.com/2017/03/aws-cloudwatch-delphix-aws-trial/screen-shot-2017-03-16-at-6-16-12-pm/" rel="attachment wp-att-6544"><img class="alignnone wp-image-6544" src="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-16-at-6.16.12-PM.png?resize=372%2C193" alt="" srcset="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-16-at-6.16.12-PM.png?w=1004 1004w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-16-at-6.16.12-PM.png?resize=300%2C155 300w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-16-at-6.16.12-PM.png?resize=768%2C398 768w" sizes="(max-width: 372px) 100vw, 372px" data-recalc-dims="1" /></a></p> <p>Once you enter this console, the graph area will be empty and you&#8217;ll need to add metrics to the graph. ¬†Since I&#8217;m using EC2, I click on <strong>EC2</strong> in the <strong>Metrics</strong> area below the empty graph and each of the metrics available for each of my instances will be shown in a list.</p> <p><a href="http://dbakevlar.com/2017/03/aws-cloudwatch-delphix-aws-trial/screen-shot-2017-03-10-at-3-11-57-pm/" rel="attachment wp-att-6522"><img class="alignnone wp-image-6522" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.11.57-PM.png?resize=341%2C154" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.11.57-PM.png?resize=1024%2C462 1024w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.11.57-PM.png?resize=300%2C135 300w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.11.57-PM.png?resize=768%2C346 768w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.11.57-PM.png?w=1082 1082w" sizes="(max-width: 341px) 100vw, 341px" data-recalc-dims="1" /></a></p> <p>Click on the instance and metric you&#8217;re interested and then a list of options will show. ¬†Click on <strong>Add to graph</strong> to add it to the graph above the list and have it start collecting metric data.</p> <p>You can also click on the check box at the top of All Metrics to add them all.</p> <p>Once you&#8217;ve completed adding the metrics for all the instances you&#8217;re interested in, you&#8217;re graph will look something like this:</p> <p><a href="http://dbakevlar.com/2017/03/aws-cloudwatch-delphix-aws-trial/screen-shot-2017-03-10-at-3-06-37-pm/" rel="attachment wp-att-6523"><img class="alignnone size-large wp-image-6523" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.06.37-PM.png?resize=600%2C298" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.06.37-PM.png?resize=1024%2C508 1024w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.06.37-PM.png?resize=300%2C149 300w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.06.37-PM.png?resize=768%2C381 768w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.06.37-PM.png?w=1200 1200w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.06.37-PM.png?w=1800 1800w" sizes="(max-width: 600px) 100vw, 600px" data-recalc-dims="1" /></a></p> <p>As you can see, you can highlight the line on the graph to match it to the metric/instance name below the graph or vice-versa.</p> <p>As most of the work for <strong>Swingbench</strong> is going to the source and then to the Delphix Engine to track the changes to be used by the targets, those first two instances and network activity will be the highest usage. ¬†I haven&#8217;t played with the <strong>Graphed Options</strong> tab, yet and will leave that for another day.</p> <p>If there&#8217;s a metric for an instance you&#8217;ve added that isn&#8217;t providing any value to the charge, it&#8217;s simplest to click on the <strong>Graphed Metrics</strong> tab, then click on the checkmark in the list¬†and it will stop displaying it in the graph.</p> <p>If you haven&#8217;t had an opportunity to play with the free AWS Trial of Delphix, <a href="https://www.delphix.com/products/free-trial-request">check it out</a>! ¬†It&#8217;s a great way to become familiar with Delphix and AWS- ¬†all in one shot!</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/aws-trial/" rel="tag">AWS Trial</a>, <a href="http://dbakevlar.com/tag/cloudwatch/" rel="tag">Cloudwatch</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/aws-cloudwatch-delphix-aws-trial/&title=AWS CloudWatch with Delphix AWS Trial"> <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/aws-cloudwatch-delphix-aws-trial/"><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/aws-cloudwatch-delphix-aws-trial/&title=AWS CloudWatch with Delphix AWS Trial"><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/aws-cloudwatch-delphix-aws-trial/&title=AWS CloudWatch with Delphix AWS Trial"><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/aws-cloudwatch-delphix-aws-trial/&title=AWS CloudWatch with Delphix AWS Trial"><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/aws-cloudwatch-delphix-aws-trial/#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/08/raspberry-pi-controlled-airplane-launcher/" >Raspberry Pi Controlled Airplane Launcher</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/02/the-new-chapter/" >The New Chapter</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/oracles-safra-catz-trumps-transition-team/" >Oracle's Safra Catz and Trump's Transition Team</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/presentation-slides-for-ioug-collaborate/" >Presentation Slides for IOUG Collaborate</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/12/twas-four-nights-after-christmas-and-other-reasons-not-to-eat-mcdonalds-at-11pm/" >"Twas four nights after Christmas" and Other Reasons Not to Eat McDonalds at 11PM</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/aws-cloudwatch-delphix-aws-trial/">AWS CloudWatch with Delphix AWS Trial</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/03/aws-cloudwatch-delphix-aws-trial/">AWS CloudWatch with Delphix AWS Trial</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6521 Thu Mar 16 2017 20:17:46 GMT-0400 (EDT) VirtualBox 5.1.18 http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/319nwS8Oh04/ <p><a href="https://www.virtualbox.org/"><img class="size-full wp-image-4959 alignleft" src="https://oracle-base.com/blog/wp-content/uploads/2015/05/virtualbox.jpg" alt="" width="129" height="145" /></a>It&#8217;s barely a week since 5.1.16 dropped and here we have¬†<a href="https://www.virtualbox.org/">VirtualBox</a> 5.1.18!¬†<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="https://www.virtualbox.org/wiki/Downloads">Downloads</a> and <a href="https://www.virtualbox.org/wiki/Changelog#v18">changelog</a> are in the usual places.</p> <p>I‚Äôve done the installation on my Windows 7 desktop at work and Oracle Linux 6 host at home. I&#8217;ll do the update of the Mac over the weekend probably.</p> <p>Cheers</p> <p>Tim‚Ķ</p> <p><strong>Update</strong>: Worked fine on macOS Sierra¬†also.</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/03/16/virtualbox-5-1-18/">VirtualBox 5.1.18</a> was first posted on March 16, 2017 at 2:58 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/319nwS8Oh04" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=6993 Thu Mar 16 2017 09:58:09 GMT-0400 (EDT) Updated SQLcl: 2 New Commands, Bug Fixes, and 12cR2 Oh My! http://www.thatjeffsmith.com/archive/2017/03/updated-sqlcl-2-new-commands-bug-fixes-and-12cr2-oh-my/ <p>You have a new version of SQLcl to <a href="http://www.oracle.com/technetwork/developer-tools/sqlcl/downloads/index.html" target="_blank">download </a>this morning.</p> <p><a href="http://www.oracle.com/technetwork/developer-tools/sqlcl/downloads/sqlcl-bugsfixed-42-3630578.html" target="_blank">Lots and lots of bug fixes</a> &#8211; again, thanks everyone in the community for providing feedback so we can make continuous improvements. </p> <p>A few things of note:</p> <h3>Two New Commands</h3> <p>They do pretty much what you&#8217;d expect.</p> <div id="attachment_6087" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/find-which.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/find-which.png" alt="Oracle SQLcl new commands, find and which " width="1024" height="458" class="size-full wp-image-6087" /></a><p class="wp-caption-text">FIND and WHICH &#8211; hopefully will save you even more time now.</p></div> <p>You&#8217;ll also notice something new on startup/connects if you&#8217;re using a &#8216;local&#8217; LOGIN.SQL</p> <div id="attachment_6088" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/login-warning.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/login-warning.png" alt="oracle sqlcl login.sql warning" width="1024" height="562" class="size-full wp-image-6088" /></a><p class="wp-caption-text">A security measure &#8211; SQLcl will ignore any SQL to be executed in a &#8216;local&#8217; login.sql file.</p></div> <p>What&#8217;s a &#8216;local&#8217; LOGIN.SQL?</p> <p>It&#8217;s a LOGIN.SQL file that we find in your current working directory when starting SQLcl and doing a CONNECT.</p> <p>If we find one, we won&#8217;t run any SQL. But, we will let you run SET commands so you can get your prompt and <a href="http://www.thatjeffsmith.com/archive/2016/05/configuring-your-generated-ddl-in-sql-developer-and-sqlcl/" target="_blank">DDL shaping settings</a> all just the way you need for your script. You can override this security precaution by setting your SQL_PATH env var to include the &#8216;.&#8217; directory &#8211; not something I&#8217;d recommend.</p> <h3>12cR2 Stuff</h3> <p>Yes, we support 12cR2. More than that, SQLcl is using a 12.2 JDBC driver by default.</p> <div id="attachment_6089" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/122-sqlcl.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/122-sqlcl.png" alt="" width="1024" height="290" class="size-full wp-image-6089" /></a><p class="wp-caption-text">12.2 AND Cloud ready. Go build stuff!</p></div> <p>And one of the things you can do in 12.2 is of course get more descriptive TABLE and COLUMN names.</p> <p>Our insight feature supports that, as well.</p> <div id="attachment_6090" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/122-sqlcl-long.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/122-sqlcl-long.png" alt="" width="1024" height="483" class="size-full wp-image-6090" /></a><p class="wp-caption-text">I hope you can come up with better names than I.</p></div> <h3>Just Installed Oracle Database 12c Release 2?</h3> <p>Good news &#8211; SQLcl is already there!</p> <blockquote class="twitter-tweet" data-lang="en"> <p lang="en" dir="ltr">No config needed! SQLcl there by default in 12cR2. <a href="https://twitter.com/oraclesqlcl">@oraclesqlcl</a> <a href="https://twitter.com/OracleDatabase">@OracleDatabase</a> <a href="https://t.co/eoDk61WR6e">pic.twitter.com/eoDk61WR6e</a></p> <p>&mdash; Tim Hall (@oraclebase) <a href="https://twitter.com/oraclebase/status/837275035547095040">March 2, 2017</a></p></blockquote> <p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p> <p>Of course, it&#8217;s already out of date with today&#8217;s update.</p> <p>We&#8217;re able to update SQLcl and SQL Developer MUCH more frequently on OTN&#8230;not so much with core database and client distributions. It&#8217;ll be there if you need it, but you might want to check OTN for the latest updates and bug fixes.</p> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6086 Thu Mar 16 2017 09:11:41 GMT-0400 (EDT) old jdbc driver generates ORA-28040 http://laurentschneider.com/wordpress/2017/03/old-jdbc-driver-generates-ora-28040.html <p>I read on note 401934.1 that Oracle 10gR2 jdbc clients are still supported with Oracle 12c. </p> <p>I have an application using an oracle10gr2 jdbc, and connection to 12c generates ORA-28040.</p> <p>Connection to 11gR2 works like a charm.</p> <p>O12.java<br /> <pre><code> import java.util.Properties; import java.sql.*; public class O12 { &nbsp;&nbsp;public static void main(String argv[]) throws &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQLException { &nbsp;&nbsp;&nbsp;&nbsp;Properties props = new Properties(); &nbsp;&nbsp;&nbsp;&nbsp;props.setProperty(&quot;user&quot;, &quot;scott&quot;); &nbsp;&nbsp;&nbsp;&nbsp;props.setProperty(&quot;password&quot;, &quot;tiger&quot;); &nbsp;&nbsp;&nbsp;&nbsp;DriverManager.registerDriver(new &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oracle.jdbc.driver.OracleDriver()); &nbsp;&nbsp;&nbsp;&nbsp;Connection conn = DriverManager.getConnection( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argv[0], props); &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;JDBC Version: &quot;+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.getMetaData().getDriverVersion()); &nbsp;&nbsp;&nbsp;&nbsp;conn.close(); &nbsp;&nbsp;} } </code></pre></p> <p>compile<br /> <pre><code> javac -cp ojdbc14.jar O12.java </code></pre></p> <p>test with jdbc 10.2.0.2 db 11.2.0.4<br /> <pre><code> java -cp ojdbc14.jar:. O12 jdbc:oracle:thin:@DB11204:1521:DB11204 JDBC Version: 10.2.0.2.0 </code></pre></p> <p>test with jdbc 10.2.0.2 db 12.1.0.2<br /> <pre><code> java -cp ojdbc14.jar:. O12 jdbc:oracle:thin:@DB12102:1521:DB12102 Exception in thread &quot;main&quot; java.sql.SQLException: ORA-28040: No matching authentication protocol </code></pre></p> <p>The easy solution of course is to update the driver. Even without recompile it worked.</p> <p>test with jdbc 11.2.0.1 db 12.1.0.2<br /> <pre><code> java -cp ojdbc5.jar:. O12 jdbc:oracle:thin:@DB12102:1521:DB12102 JDBC Version: 11.2.0.1.0 </code></pre></p> <p>Before upgrading the db server to 12c, check 10g jdbc jar&#8217;s are upgraded </p> Laurent Schneider http://laurentschneider.com/?p=2416 Thu Mar 16 2017 09:09:54 GMT-0400 (EDT) Let‚Äôs Talk Database: New Dates Released (You Can‚Äôt Talk) https://richardfoote.wordpress.com/2017/03/16/lets-talk-database-new-dates-released-you-cant-talk/ Good news for all you Oracle Database folk in ANZ. I&#8217;ll be running a new series of &#8220;Let&#8217;s Talk Database&#8221; sessions at¬†a venue near you in the coming months. I&#8217;ll be discussing two interesting¬†topics, &#8220;Introduction to the Oracle Cloud for DBAs&#8221; and &#8220;Introduction to Oracle Database 12c Release 2&#8220;. The dates for this series and¬†registration [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=richardfoote.wordpress.com&#038;blog=2301564&#038;post=4119&#038;subd=richardfoote&#038;ref=&#038;feed=1" width="1" height="1" /> Richard Foote http://richardfoote.wordpress.com/?p=4119 Thu Mar 16 2017 01:53:58 GMT-0400 (EDT) Let‚Äôs Encrypt : Free Certificates on Oracle Linux (CertBot) http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/esOXhj8_tJU/ <p><img class="alignleft wp-image-6991" src="https://oracle-base.com/blog/wp-content/uploads/2017/03/security-146536_640.png" alt="" width="150" height="210" />My <a href="https://oracle-base.com">website</a> has been using HTTPS for over¬†18 months¬†now. A couple of months ago I came across <a href="https://letsencrypt.org/">Let&#8217;s Encrypt</a> and thought, &#8220;Free Certificates? That&#8217;s interesting!&#8221;, so I gave it a shot for some other stuff I look after, just to see how I got on with it.</p> <p>The certificates only last 3 months, but you can automate their renewal using CertBot. You set it up to check every day, and the certificates get renewed if they are¬†within 30 days of expiring. Since I set it up a little over 2 months ago, the first round of renewals happened a couple of days ago. No dramas.</p> <p>Having seen the first automated refresh happen successfully,¬†I decided to switch¬†the main website to use the Let&#8217;s Encrypt certificate today. That means no more buying certificates for me! <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 put together this¬†article when I did the initial setup, just to document it for myself.</p> <ul> <li><a href="/articles/linux/letsencrypt-free-certificates-on-oracle-linux">Let&#8217;s Encrypt &#8211; Free Certificates on Oracle Linux (CertBot)</a></li> </ul> <p>I didn&#8217;t mention it at the time as I wasn&#8217;t really sure about how it would work out, but now I&#8217;m using it I thought it might be interesting to any other cheapskates out there. <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/15/lets-encrypt-free-certificates-on-oracle-linux-certbot/">Let&#8217;s Encrypt : Free Certificates on Oracle Linux (CertBot)</a> was first posted on March 15, 2017 at 8:13 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/esOXhj8_tJU" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=6990 Wed Mar 15 2017 15:13:27 GMT-0400 (EDT) ODTUG Turns 20 http://www.odtug.com/p/bl/et/blogaid=684&source=1 ODTUG Turns 20On March 13, 2017, ODTUG celebrated its 20th birthday! Yes, there‚Äôs been a lot of changes over the years, but one thing remains the same: ODTUG‚Äôs commitment to keeping you on the cutting-edge of the constantly changing Oracle technology landscape. Check out these highlights: ODTUG http://www.odtug.com/p/bl/et/blogaid=684&source=1 Wed Mar 15 2017 09:32:08 GMT-0400 (EDT) Online Table Moves and Partitioning in Oracle Database 12c Release 2 (12.2) http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/lM05sHrQMuw/ <p><img class="alignleft wp-image-6987" src="https://oracle-base.com/blog/wp-content/uploads/2017/03/happy-1296589_640.png" alt="" width="150" height="163" />A couple of articles have crept out over the last few days that¬†relate to online operations on Oracle Database 12c Release 2 (12.2). Both of them are pretty small in terms of what you have to do, but are pretty awesome in terms of impact, so I&#8217;m giving them the official thumbs-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 first one is about moving tables online.</p> <ul> <li><a href="/articles/12c/online-move-table-12cr2">Online Move of a Table in Oracle Database 12c Release 2 (12.2)</a></li> </ul> <p>I wonder if this was a 12.1 feature that got pulled? In 12.1 we got to <a href="/articles/12c/online-move-partitions-and-subpartitions-12cr1">move partitions and sub-partitions online</a>,¬†but being able to move a table as an online operation is great. Saves you having to mess around with <a href="/articles/10g/online-table-redefinition-enhancements-10gr1">DBMS_REDEFINITION</a> for a bunch of tasks.</p> <p>The second one is about converting non-partitioned tables to partitioned tables.</p> <ul> <li><a href="https://oracle-base.com/articles/12c/online-conversion-of-a-non-partitioned-table-to-a-partitioned-table-12cr2">Online Conversion of a Non-Partitioned Table to a Partitioned Table in Oracle Database 12c Release 2 (12.2)</a></li> </ul> <p>This is pretty cool too. For one, you can use a single command to do it now, rather than having to use <a href="/articles/misc/partitioning-an-existing-table-using-exchange-partition">EXCHANGE PARTITION</a> or <a href="/articles/misc/partitioning-an-existing-table">DBMS_REDEFINITION</a> to do it. What&#8217;s more, it can be done online!</p> <p>As I&#8217;ve said many times before, it&#8217;s these convenience new features that usually have a bigger impact on my day-to-day life than the big sexy features.</p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/03/15/online-table-moves-and-partitioning-in-oracle-database-12c-release-2-12-2/">Online Table Moves and Partitioning in Oracle Database 12c Release 2 (12.2)</a> was first posted on March 15, 2017 at 12: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 /><img src="http://feeds.feedburner.com/~r/TheOracleBaseBlog/~4/lM05sHrQMuw" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=6986 Wed Mar 15 2017 07:45:05 GMT-0400 (EDT) Introducing NoSQL and MongoDB to Relational Database professionals https://technology.amis.nl/2017/03/15/inroducing-nosql-and-mongodb-to-relational-database-professionals/ <p>Most enterprises have a lot of variety in the data they deal with. Some data is highly structured and other is very unstructured, some data is bound by strict integrity rules and quality constraints and other is free of any restrictions, some data is ‚Äúhot‚ÄĚ &#8211; currently very much in demand ‚Äď and other data can be stone cold. Some data needs to extremely accurate, down to a prescribed number of fractional digits and other is only approximate. Some is highly confidential and other publicly accessible. Some is around in small quantities and other in huge volumes.</p> <p>Over the years many IT professionals and companies have come to the realization that all this differentiation in data justifies or even mandates a differentiation in how the data is stored and processed. It does not make sense to treat the hottest transactional data in the same way as the archived records from 30 years. Yet many organizations have been doing exactly that: store it all in the enterprise relational database. It works, keeps all data accessible for those rare instances where that really old data is required and most importantly: keeps all data accessible in the same way ‚Äď through straightforward SQL queries.</p> <p>On March 14th, we organized a SIG session at AMIS around NoSQL in general and MongoDB in particular. We presented on the history of NoSQL, how it complements relational databases and a pure SQL approach and what types of NoSQL databases are available. Subsequently we focused on MongoDB, introducing the product and its architecture and discussing how to interact with MongoDB from JavaScript/NodeJS and from Java.</p> <p>The slides presented by the speakers &#8211; Pom Bleeksma and Lucas Jellema &#8211; are shown here (from SlideShare):</p> <p><iframe style="margin-bottom: 5px; max-width: 100%; border: #ccc 1px solid;" src="//www.slideshare.net/slideshow/embed_code/key/h5GHBeEeE2D0DX" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen="allowfullscreen"> </iframe></p> <p>&nbsp;</p> <p>The handson workshop is completely available from GitHub: <a title="https://github.com/lucasjellema/sig-nosql-mongodb" href="https://github.com/lucasjellema/sig-nosql-mongodb">https://github.com/lucasjellema/sig-nosql-mongodb</a>.</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-31.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-31.png" alt="image" width="678" height="490" border="0" /></a></p> <p>An additional slide deck was discussed &#8211; to demonstrate 30 queries side by side, against MongoDB vs Oracle Database SQL. This slide deck includes the MongoDB operations:</p> <p>‚ÄĘFilter &amp; Sort (find, sort)</p> <p>‚ÄĘAggregation ($group, $project, $match, $sort)</p> <p>‚ÄĘLookup &amp; Outer Join ($lookup, $arrayElemAt)</p> <p>‚ÄĘFacet Search ($facet, $bucket, $sortByCount)</p> <p>‚ÄĘUpdate (findAndModify, forEach, save, update, upsert, $set, $unset)</p> <p>‚ÄĘDate and Time operations</p> <p>‚ÄĘMaterialized View ($out)</p> <p>‚ÄĘNested documents/tables ($unwind, $reduce)</p> <p>‚ÄĘGeospatial (ensureIndex, 2dsphere, $near, $geoNear)</p> <p>‚ÄĘText Search (createIndex, text, $text, $search)</p> <p>‚ÄĘStored Procedures (db.system.js.save, $where)</p> <p>&nbsp;</p> <p><iframe style="margin-bottom: 5px; max-width: 100%; border: #ccc 1px solid;" src="//www.slideshare.net/slideshow/embed_code/key/7H7fhOcLaAnmTe" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen="allowfullscreen"> </iframe></p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/15/inroducing-nosql-and-mongodb-to-relational-database-professionals/">Introducing NoSQL and MongoDB to Relational Database professionals</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=44313 Wed Mar 15 2017 07:25:56 GMT-0400 (EDT) Oracle Public Cloud ‚Äď Invoking ICS endpoints from SOA CS ‚Äď configure SSL certificate and basic authentication https://technology.amis.nl/2017/03/15/oracle-public-cloud-invoking-ics-endpoints-from-soa-cs-configure-ssl-certificate-and-basic-authentication/ <p>As part of the Soaring through the Clouds demo of 17 Oracle Public Cloud services, I had to integrate SOA CS with both ACCS (Application Container Cloud) and ICS (Integration Cloud Service).</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-13.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-13.png" alt="image" width="637" height="299" border="0" /></a></p> <p>Calls from Service Bus and SOA Composites running in SOA Suite 12c on SOA CS to endpoints on ACCS (Node.js Express applications) and ICS (REST connector endpoint) were required in this demo. These calls are over SSL (to https endpoints) and for ICS also require basic authentication (at present, ICS endpoints cannot be invoked anonymously).</p> <p>This article shows the steps for taking care of these two aspects:</p> <ul> <li>ensure that the JVM under SOA Suite on SOA CS knows and trusts the SSL certificate for ACCS or ICS</li> <li>ensure that the call from SOA CS to ICS carries basic authentication details</li> </ul> <p>The starting point is a SOA Composite that corresponds with the preceding figure &#8211; with external references to DBaaS (through Database Adapter), ICS (to call an integration that talks to Twitter) and ACCS (to invoke a REST API on NodeJS that calls out to the Spotify API):</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-14.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-14.png" alt="image" width="838" height="439" border="0" /></a></p> <h2>Configure SSL Certificate on JVM under SOA Suite on SOA CS</h2> <p>I have tried to deploy the SOA composite (successful) and invoke the TweetServiceSOAP endpoint (that invokes ICS) (not successful). The first error I run into is:</p> <blockquote><p><em>env:Serverjavax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetoracle.sysman.emInternalSDK.webservices.util.SoapTestException: Client received SOAP Fault from server : javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target</em></p></blockquote> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-15.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-15.png" alt="image" width="564" height="289" border="0" /></a></p> <p>This may sound a little cryptic, but is actually quite simple: the endpoint for the ICS service I am trying to invoke is: https://ics4emeapartner-partnercloud17.integration.us2.oraclecloud.com/integration/flowapi/rest/ACEDEM_RESTME_‚Ķ The essential is right at the beginning: http<strong>s</strong>. The communication with the endpoint is secure, over SSL. This requires the certificate of the ICS server to be used by SOA CS (in particular the JVM under WebLogic running SOA Suite on the SOA CS instance). For this to happen, the certificate needs to be configured with the JVM as a trusted certificate.</p> <p>With WebLogic 12c it has become a lot easier to register certificates with the server &#8211; going through the Enterprise Manager Fusion Middleware Control. These are the steps:</p> <p>1. Paste the endpoint for the ICS service in the browser‚Äôs location bar and try to access it; this will not result in a meaningful response. It will however initiate an SSL connection between browser and server, as you can tell from the padlock icon displayed to the left of the location bar</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-16.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-16.png" alt="image" width="666" height="134" border="0" /></a></p> <p>2. Click on the padlock icon, to open the details for the SSL certificate</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML1005017.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="SNAGHTML1005017" src="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML1005017_thumb.png" alt="SNAGHTML1005017" width="558" height="489" border="0" /></a></p> <p>Open the Security tab and click on View Certificate</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML100be83.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="SNAGHTML100be83" src="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML100be83_thumb.png" alt="SNAGHTML100be83" width="479" height="504" border="0" /></a></p> <p>3. Open the Details tab and Export the Certificate</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML101da3d.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="SNAGHTML101da3d" src="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML101da3d_thumb.png" alt="SNAGHTML101da3d" width="484" height="436" border="0" /></a></p> <p>Save the certificate to a file:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML10236cd.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="SNAGHTML10236cd" src="https://technology.amis.nl/wp-content/uploads/2017/03/SNAGHTML10236cd_thumb.png" alt="SNAGHTML10236cd" width="737" height="401" border="0" /></a></p> <p>4. Open the Enterprise Manager Fusion Middleware Control for the WebLogic Domain under the SOA CS instance. Navigate to Security | Keystore:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-17.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-17.png" alt="image" width="471" height="533" border="0" /></a></p> <p>5. Select Stripe system | trust and click on the Manage button</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-18.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-18.png" alt="image" width="574" height="384" border="0" /></a></p> <p>6. Click on Import to import a new certificate:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-19.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-19.png" alt="image" width="752" height="250" border="0" /></a></p> <p>Select Trusted Certificate as the Certificate Type. Provide an alias to identify the certificate.</p> <p>Click browse and select the file that was saved when exporting the certificate in step 3:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-20.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-20.png" alt="image" width="527" height="372" border="0" /></a></p> <p>Click OK.</p> <p>The Certificate is imported and added to the keystore:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-21.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-21.png" alt="image" width="1045" height="333" border="0" /></a></p> <p>7. Restart the WebLogic Domain (admin server and all managed servers)</p> <p>Unfortunately for the new certificate to become truly available, a restart is (still) required. (or at least, that is my understanding, perhaps you can try without because it seems like a very heavy step)</p> <p>This blog by Adam DesJardin from our REAL partner AVIO Consulting provided much of the answer: <a href="http://www.avioconsulting.com/blog/soa-suite-12c-and-opss-keystore-service">http://www.avioconsulting.com/blog/soa-suite-12c-and-opss-keystore-service</a></p> <p>&nbsp;</p> <h2>Add basic authentication to the call from SOA CS to ICS</h2> <p>When I again tested my call to the TweetServiceSOAP endpoint (that invokes ICS), I was again not successful. This time, a different exception occurred:</p> <blockquote><p>env:ServerAuthorization Requiredoracle.sysman.emInternalSDK.webservices.util.SoapTestException: Client received SOAP Fault from server : Authorization Required</p></blockquote> <p>This is not really a surprise: all calls to ICS endpoints require basic authentication (because at present, ICS endpoints cannot be invoked anonymously). These are the steps to make this successful:</p> <p>1. Create an Oracle Public Cloud user account with one permission: call ICS services: <em>johndoe</em></p> <p>Now we need to a credential for <em>jonhdoe</em> in a credential map in the credential store in WebLogic, and refer to that credential in a OWMS Security Policy that we add to the Reference in the SOA Composite that makes the call to ICS.</p> <p>2. Open the Enterprise Manager Fusion Middleware Control for the WebLogic Domain under the SOA CS instance. Navigate to Security | Credentials:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-22.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-22.png" alt="image" width="455" height="451" border="0" /></a></p> <p>3. If the map oracle.wsm.security does not yet exist, click on Create Map. Enter the name oracle.wsm.security in the Map Name field and click on OK.</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-23.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-23.png" alt="image" width="775" height="344" border="0" /></a></p> <p>4. Select the map oracle.wsm.security and click on Create Key</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-24.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-24.png" alt="image" width="691" height="431" border="0" /></a></p> <p>Set the Key for this credential; the key is used to refer to the credential in the security policy. Here I use ICSJohnDoe.</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-25.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-25.png" alt="image" width="537" height="362" border="0" /></a></p> <p>Set the type of Password and the username and password to the correct values for the ICS user. Click on OK to create.</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-26.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-26.png" alt="image" width="742" height="352" border="0" /></a></p> <p>5. Add a security policy to the Reference in the SOA Composite.</p> <p>In JDeveloper open the SOA Composite. Right click on the Reference. Select <em>Configure SOA WS Policies </em>from the context menu.</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-27.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-27.png" alt="image" width="678" height="369" border="0" /></a></p> <p>Click on the plus icon in the category Security. Select oracle/http_basic_auth_over_ssl_client_policy.</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-28.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-28.png" alt="image" width="556" height="365" border="0" /></a></p> <p>Set the value of property csf-key to the Key value defined for the credential in step 4, in my case ICSJohnDoe.</p> <p>Click on OK.</p> <p>6. Redeploy the SOA Composite to SOA CS.</p> <p>&nbsp;</p> <p>This time when I invoke the Web Service, my Tweet gets published:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-29.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-29.png" alt="image" width="534" height="265" border="0" /></a></p> <p>The flow trace for the SOA Composite:</p> <p><a href="https://technology.amis.nl/wp-content/uploads/2017/03/image-30.png"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://technology.amis.nl/wp-content/uploads/2017/03/image_thumb-30.png" alt="image" width="744" height="217" border="0" /></a></p> <h2>Resources</h2> <p>A-Team Article &#8211; add certificate to JCS and invoke JCS from ICS &#8211; http://www.ateam-oracle.com/configuring-https-between-integration-cloud-service-and-java-cloud-service/</p> <ul><!--EndFragment--></ul> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/15/oracle-public-cloud-invoking-ics-endpoints-from-soa-cs-configure-ssl-certificate-and-basic-authentication/">Oracle Public Cloud &#8211; Invoking ICS endpoints from SOA CS &#8211; configure SSL certificate and basic authentication</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=44309 Wed Mar 15 2017 07:16:00 GMT-0400 (EDT) 12.2 Moving Tables Online (Real Cool World) https://richardfoote.wordpress.com/2017/03/15/12-2-moving-tables-online-real-cool-world/ One of the really cool new features¬†introduced in Oracle Database 12c Release 2 is the capability to MOVE tables ONLINE, while maintaining all the associated index structures. This was possible for table partitions in Oracle Database 12c Release 1 but only¬†for Indexed Organized Tables before then. Rather than show¬†a demo that just moves a table, [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=richardfoote.wordpress.com&#038;blog=2301564&#038;post=3994&#038;subd=richardfoote&#038;ref=&#038;feed=1" width="1" height="1" /> Richard Foote http://richardfoote.wordpress.com/?p=3994 Wed Mar 15 2017 02:41:50 GMT-0400 (EDT) Establish SSH Connection to Oracle Database Cloud Service with SQL Developer http://dbaontap.com/2017/03/15/establish-ssh-connection-oracle-database-cloud-service-sql-developer/ <h1 style="text-align: center;"><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sql_dev.jpg"><img class="alignleft size-full wp-image-1156" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sql_dev.jpg?resize=154%2C195" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sql_dev.jpg?w=154 154w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sql_dev.jpg?resize=118%2C150 118w" sizes="(max-width: 154px) 100vw, 154px" data-recalc-dims="1" /></a>Establish SSH Connection to Oracle Database Cloud Service with SQL Developer</h1> <p>A couple of days ago, I showed how to Configuring the <a href="http://dbaontap.com/2017/03/12/oracle-cloud-database-service/" target="_blank">Oracle Database Cloud Service</a>, and finished up with promising to help you connect to this database with SQL Developer.</p> <p>As part of the example, you are required to create an SSH key. We are going to use this to enable SQL Developer connectivity to the cloud database service. The assumption here is that you have provisioned your database instance, created a your ssh public/private key pair, and have opened the appropriate port(s) to the database. If you haven&#8217;t click the link above, and I&#8217;ll walk you through the steps.</p> <ol> <li>Launch SQL Developer and choose SSH under the¬†<strong>View</strong> Toolbar menu item.</li> </ol> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host.jpg"><img class="aligncenter size-large wp-image-1145" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host.jpg?resize=800%2C527" alt="SSH View" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host.jpg?resize=1030%2C679 1030w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host.jpg?resize=300%2C198 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host.jpg?resize=768%2C506 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host.jpg?resize=227%2C150 227w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host.jpg?resize=150%2C99 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host.jpg?w=1348 1348w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>2. Right-click SSH Hosts and select the¬†<span style="text-decoration: underline;">N</span>ew SSH Host&#8230;</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_right_click_hosts.jpg"><img class="size-full wp-image-1144 alignnone" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_right_click_hosts.jpg?resize=281%2C257" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_right_click_hosts.jpg?w=281 281w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_right_click_hosts.jpg?resize=164%2C150 164w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_right_click_hosts.jpg?resize=150%2C137 150w" sizes="(max-width: 281px) 100vw, 281px" data-recalc-dims="1" /></a></p> <p>3. Complete the dialog box with the appropriate information. As a note, your Host (database ip address) can be found on the Services Overview page from the Dashboard. Click OK.</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host.jpg"><img class="aligncenter size-full wp-image-1147" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host.jpg?resize=469%2C425" alt="New SSH" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host.jpg?w=469 469w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host.jpg?resize=300%2C272 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host.jpg?resize=166%2C150 166w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host.jpg?resize=150%2C136 150w" sizes="(max-width: 469px) 100vw, 469px" data-recalc-dims="1" /></a></p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host_ip.jpg"><img class="aligncenter size-full wp-image-1146" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host_ip.jpg?resize=800%2C396" alt="IP Address" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host_ip.jpg?w=830 830w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host_ip.jpg?resize=300%2C149 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host_ip.jpg?resize=768%2C380 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host_ip.jpg?resize=250%2C124 250w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_host_ip.jpg?resize=150%2C74 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>4. Right click the SSH Host you just created, select New¬†<span style="text-decoration: underline;">L</span>ocal Port Forward, and complete the dialog box.</p> <p>Leave <strong>Host </strong>as localhost and <strong>Port¬†</strong>should be remain 1521.</p> <p>Click OK<a href="http://dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host_creen.jpg"><br /> </a> <a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host.jpg"><img class="size-full wp-image-1149 alignnone" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host.jpg?resize=308%2C268" alt="New SSH Host" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host.jpg?w=308 308w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host.jpg?resize=300%2C261 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host.jpg?resize=172%2C150 172w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host.jpg?resize=150%2C131 150w" sizes="(max-width: 308px) 100vw, 308px" data-recalc-dims="1" /></a></p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host_creen.jpg"><img class="size-full wp-image-1148 alignnone" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host_creen.jpg?resize=385%2C204" alt="New SSh Host" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host_creen.jpg?w=385 385w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host_creen.jpg?resize=300%2C159 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host_creen.jpg?resize=250%2C132 250w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/ssh_host_new_local_host_creen.jpg?resize=150%2C79 150w" sizes="(max-width: 385px) 100vw, 385px" data-recalc-dims="1" /></a></p> <p>This process creates the¬†Port Forward name for the SQL Developer SSH Connection type. Now let&#8217;s open and configure a new database Connection.</p> <p>5. Click the down arrow next to the green plus in the Connections window</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection.jpg"><img class="size-full wp-image-1151 alignnone" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection.jpg?resize=382%2C258" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection.jpg?w=382 382w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection.jpg?resize=300%2C203 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection.jpg?resize=222%2C150 222w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection.jpg?resize=150%2C101 150w" sizes="(max-width: 382px) 100vw, 382px" data-recalc-dims="1" /></a></p> <p>6. Complete the New Connections Dialog box. Make sure you use the password you established during the Database instance setup. You can decide whether you want to Save Password. Note that the user name is SYS and you must select SYSDBA as the Role.</p> <p>Select SSH as your connection type.</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup.jpg"><img class="aligncenter size-full wp-image-1150" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup.jpg?resize=800%2C357" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup.jpg?w=996 996w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup.jpg?resize=300%2C134 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup.jpg?resize=768%2C343 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup.jpg?resize=250%2C112 250w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup.jpg?resize=150%2C67 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>7. Once you select SSH for your Connection Type, the Hostname and Port boxes will be replaced by simply the Port Forward dropdown.</p> <p>Select the port you created back in step 4 from this dropdown and enter the SID, which in this case will be¬†<strong>orcl</strong>. If you find that both SID and Service name are &#8220;greyed out&#8221;, click the Service name radio button then click the SID radio button, and you should be able to enter the appropriate value.</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_2.jpg"><img class="aligncenter size-full wp-image-1152" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_2.jpg?resize=800%2C357" alt="DBaaS setup 2" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_2.jpg?w=996 996w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_2.jpg?resize=300%2C134 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_2.jpg?resize=768%2C343 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_2.jpg?resize=250%2C112 250w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_2.jpg?resize=150%2C67 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>8. Click on the¬†<strong>Test</strong> button and you should be ¬†presented with a passphrase dialog box. This is the passphrase you entered when creating you SSH key.</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_3.jpg"><img class="aligncenter size-full wp-image-1153" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_3.jpg?resize=800%2C357" alt="Passphrase" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_3.jpg?w=996 996w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_3.jpg?resize=300%2C134 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_3.jpg?resize=768%2C343 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_3.jpg?resize=250%2C112 250w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_3.jpg?resize=150%2C67 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>9. If all works well, you get a Success Status message.</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_4.jpg"><img class="aligncenter size-full wp-image-1154" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_4.jpg?resize=800%2C357" alt="DBaaS success" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_4.jpg?w=996 996w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_4.jpg?resize=300%2C134 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_4.jpg?resize=768%2C343 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_4.jpg?resize=250%2C112 250w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_4.jpg?resize=150%2C67 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>Click Connect, and you should be connected to your Oracle Cloud Database Service.</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_5.jpg"><img class="aligncenter size-large wp-image-1155" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_5.jpg?resize=800%2C285" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_5.jpg?resize=1030%2C367 1030w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_5.jpg?resize=300%2C107 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_5.jpg?resize=768%2C274 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_5.jpg?resize=250%2C89 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_5.jpg?resize=150%2C53 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/dbaas_new_connection_setup_5.jpg?w=1347 1347w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>Enjoy!<a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png"><img class="alignright size-medium wp-image-265" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=300%2C134" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=300%2C134 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=250%2C111 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=150%2C67 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?w=525 525w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/03/15/establish-ssh-connection-oracle-database-cloud-service-sql-developer/">Establish SSH Connection to Oracle Database Cloud Service with SQL Developer</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">My Experiences with Oracle Technology</a>.</p> DB http://dbaontap.com/?p=1143 Wed Mar 15 2017 02:25:57 GMT-0400 (EDT) Should I learn Cloud? http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/hmKnaYJmCDw/ <p><img class="size-full wp-image-5050 alignleft" src="https://oracle-base.com/blog/wp-content/uploads/2015/06/cloud.jpg" alt="" width="150" height="98" />I was asked a question on Twitter today, but it is similar to the types of questions I get asked quite a lot, so I thought I would write¬†this general answer, rather than try to answer in 140 characters. Remember, this is just my opinion and it&#8217;s coming from an Oracle DBA perspective. <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> <h2>Should I learn Cloud?</h2> <p>More specifically I&#8217;ve had people ask me, &#8220;Should I learn AWS or Oracle Cloud?&#8221; When you ask¬†that question, I am tempted to respond with a question like, &#8220;What do you think there is to learn?&#8221;¬†Are you planning to learn the interfaces or the APIs? Let&#8217;s narrow things down *a lot*. If you are asking about learning to¬†running <a href="/articles/misc/oracle-databases-in-the-cloud">Oracle Databases in the Cloud</a>, I would say you are probably going to end up with a couple of choices over time.</p> <ol> <li>Do everything yourself. You need all the same skills as you do now, because the cloud provider is just providing kit. It&#8217;s just another hosting company.</li> <li>Let them do everything for you. If it&#8217;s a managed service, there may be significantly less for you to do.</li> </ol> <p>That is of course being a little simplistic. Each cloud provider will have it&#8217;s own ways of doing some things, but you should be able to pick that up really quickly.</p> <p>The main focus¬†for¬†good cloud implementations of Oracle databases is more to do with architectural concerns. Planning networking, security, how services will interact between the cloud and on-prem, which services should you pick to deliver the results you want, interactions between cloud services and even cloud providers.</p> <ul> <li>If you are not currently performing some architectural-type role, you aren&#8217;t going to be a DBA one day and a &#8220;cloud architect&#8221; the next.</li> <li>If you are not currently looking after your company&#8217;s virtual infrastructure, you probably won&#8217;t be looking after your company&#8217;s cloud account and get to use any of the tools directly.</li> <li>If you are not currently doing network¬†and sysadmin work in your company, it is unlikely you will be involved in any of the planning for a move to the cloud.</li> </ul> <p>So I come back to my initial response, with specific reference to Oracle databases on the cloud, ¬†&#8220;What do you think there is to learn?&#8221; If you are already an experienced DBA, then there isn&#8217;t a lot you need to learn about running Oracle on the cloud.¬†It&#8217;s not the interface or even the APIs for any one provider that matter. It&#8217;s the technologies the other cloud services provide that matter. Doing some of this stuff on the cloud is a lot simpler than building it yourself. <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> <h2>Can you recommend a book I should read to help me learn &#8220;The Cloud&#8221;?</h2> <p>There are books out there that discuss cloud computing in general terms, as well as all the projects that make up some of the cool new cloud services, but¬†I don&#8217;t think that is what you are asking for. I think you want a book that will¬†teach you a new job in record time. That book does not exist.</p> <h2>I&#8217;m an eBusiness Suite DBA. How do I learn to be an Oracle Cloud Apps DBA?</h2> <p>You don&#8217;t. Your job has gone. Unless you are one of the very few companies in the world that run Oracle Cloud Apps on prem, you don&#8217;t get to touch any of this stuff. It&#8217;s Software as a Service (SaaS). My company uses Oracle Cloud Apps and I can&#8217;t connect to our databases or WebLogic servers. It&#8217;s all hidden on the cloud and Oracle look after everything to do with Oracle Cloud Apps. For SaaS it&#8217;s the functional people that matter, not so much the techies.</p> <p>There is development work for data transfers and custom reporting, but the EBS DBA role that used to exist isn&#8217;t really there as part of Oracle Cloud Apps. If you were planning to transition from an EBS DBA to an Oracle Cloud DBA you have a big shock coming.</p> <h2>Conclusion</h2> <p>The DBA job has changed a lot over the last 20+ years I&#8217;ve been doing it.¬†The cloud, especially Software as a Service (SaaS) will have a huge impact on the &#8220;conventional&#8221; DBA job. Relational databases will remain important for some time, but they are no longer considered the right tool for every job. You&#8217;ve just got to roll with the punches. <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 think the question you are really asking is, &#8220;What new skills do I need to learn?&#8221;¬†<a href="https://twitter.com/TanelPoder">Tanel Poder</a>&#8216;s response¬†was really good and sounds like a good place to start.</p> <blockquote><p>&#8220;Learn Python for scripting, Hadoop for non-transactional data &amp; Google BigQuery to see what the future is like.&#8221;</p></blockquote> <p>Here&#8217;s some of my ramblings on the subject.</p> <p><a href="/blog/2016/10/30/as-a-dba-what-do-i-need-to-learn-next/">As a DBA, what do I need to learn next?</a></p> <p>So stop asking, &#8220;Should I learn Cloud?&#8221;, because it doesn&#8217;t make sense. Start asking questions like, &#8220;What new skills do I need to learn?&#8221; You may learn them while using a cloud service, but that&#8217;s not the same as &#8220;learning the cloud&#8221;. <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. I understand cloud providers have loads of different services, but realistically you are not going to magically be an expert in all of them overnight. If you are a Hadoop person, you will try the Hadoop implementations of a few providers. If you are an Oracle DBA, that will be your focus on¬†day one.</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/03/13/should-i-learn-cloud/">Should I learn Cloud?</a> was first posted on March 13, 2017 at 7: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 /><img src="http://feeds.feedburner.com/~r/TheOracleBaseBlog/~4/hmKnaYJmCDw" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=6972 Mon Mar 13 2017 14:16:57 GMT-0400 (EDT) Swingbench with the AWS Trial http://dbakevlar.com/2017/03/swingbench-aws-trial/ <div id="tweetbutton6525" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Fswingbench-aws-trial%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%2Fswingbench-aws-trial%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="http://dominicgiles.com/swingbench.html">Swingbench</a> is a one of the best choices for easy loads on a database. ¬†I wanted to use it against the <a href="http://dbakevlar.com/2017/03/manually-adding-sales-history-sh-schema-11-2-0-4/">SH sample schema I loaded</a> into my Oracle Source database and I haven&#8217;t used Swingbench outside of the command line quite a while back, (my databases seem to always come with a load on them!) ¬†so it was time to update my Swingbench skills and catch up with the user interface. ¬†Thanks to <a href="https://twitter.com/dominic_giles">Dominic Giles</a> for keeping the download, features and documentation so well maintained.</p> <p><a href="http://dbakevlar.com/2017/03/swingbench-aws-trial/goodstuff/" rel="attachment wp-att-6536"><img class="alignnone size-full wp-image-6536" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/goodstuff.gif?resize=500%2C211" alt="" data-recalc-dims="1" /></a></p> <p>After adding the application¬†rights to run on my Macbook Pro, I was impressed by the clean and complete interface. ¬†I wanted to connect it to my AWS instance and as we talk about, the cloud is a lot simpler a change than most DBAs first consider.</p> <p>When first accessing, Swingbench will prompt you to choose what pre-configured workload you&#8217;d like to utilize. ¬†I had already set up the Sales History schema in my AWS Trial source database, so I chose Sales History and then had to perform a few simple configurations to get it to run.</p> <pre>Username: sh Password: &lt;password for your sh user&gt; Connect String: &lt;IP Address for AWS Instance&gt;:&lt;DB Port&gt;:&lt;services name&gt;</pre> <p>Proceed down to the tab for Environment Variables and add the following:</p> <pre>ORACLE_HOME ¬†&lt;Oracle Home&gt;</pre> <p>I chose the default 16 connections to start out, but you can add more if you&#8217;d like. You can also configure stats collection, snapshot collection before and after the workload.</p> <p><a href="http://dbakevlar.com/2017/03/swingbench-aws-trial/screen-shot-2017-03-10-at-2-40-00-pm/" rel="attachment wp-att-6526"><img class="alignnone size-large wp-image-6526" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-2.40.00-PM.png?resize=600%2C303" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-2.40.00-PM.png?resize=1024%2C517 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-2.40.00-PM.png?resize=300%2C152 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-2.40.00-PM.png?resize=768%2C388 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-2.40.00-PM.png?w=1200 1200w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-2.40.00-PM.png?w=1800 1800w" sizes="(max-width: 600px) 100vw, 600px" data-recalc-dims="1" /></a></p> <p>I set my¬†<strong>autoconnect</strong>¬†to true, but the default is to not start the load until you hit the green arrow button. ¬†The load will then execute the workload with the amount of connections requested until you hit the red stop button. ¬†You should see the users logged in at the bottom right and in the events window:</p> <p><a href="http://dbakevlar.com/2017/03/swingbench-aws-trial/screen-shot-2017-03-10-at-3-39-39-pm/" rel="attachment wp-att-6527"><img class="alignnone wp-image-6527" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.39.39-PM.png?resize=342%2C69" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.39.39-PM.png?w=860 860w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.39.39-PM.png?resize=300%2C61 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-10-at-3.39.39-PM.png?resize=768%2C155 768w" sizes="(max-width: 342px) 100vw, 342px" data-recalc-dims="1" /></a></p> <p>Next post we&#8217;ll discuss what you&#8217;ll see when running a Swingbench on a source database, the Delphix Engine host and subsequently refreshes to a VDB, (virtual database.) ¬†We&#8217;ll also discuss other tools that can grant you visibility to optimization opportunities in the cloud.</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/aws-trial/" rel="tag">AWS Trial</a>, <a href="http://dbakevlar.com/tag/cloud/" rel="tag">Cloud</a>, <a href="http://dbakevlar.com/tag/swingbench/" rel="tag">Swingbench</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/swingbench-aws-trial/&title=Swingbench with the AWS Trial"> <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/swingbench-aws-trial/"><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/swingbench-aws-trial/&title=Swingbench with the AWS Trial"><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/swingbench-aws-trial/&title=Swingbench with the AWS Trial"><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/swingbench-aws-trial/&title=Swingbench with the AWS Trial"><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/swingbench-aws-trial/#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/2010/01/rmoug-deadbeat/" >RMOUG Deadbeat</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/12/expanded-ace-recognition-at-rmoug-training-days/" >Expanded ACE Recognition at RMOUG Training Days</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/11/gathering-statistics-on-highly-partitioned-tables/" >Gathering Statistics on Highly Partitioned Tables</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/03/girls-develop-it-weekend-adventures-intro-to-javascript/" >Girls Develop It Weekend Adventures- Intro to Javascript</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/rmoug-board-of-directors/" >RMOUG Board of Directors</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/swingbench-aws-trial/">Swingbench with the AWS Trial</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/03/swingbench-aws-trial/">Swingbench with the AWS Trial</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6525 Mon Mar 13 2017 11:44:43 GMT-0400 (EDT) 1.5million PageViews http://hemantoracledba.blogspot.com/2017/03/15million-pageviews.html <div dir="ltr" style="text-align: left;" trbidi="on">My Oracle Blog now has had 1.5million PageViews.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-1pfUZEos3fY/WMaz7xigEAI/AAAAAAAAL_o/-t0AX_S9jXMYrm945myky9fdVMl4ec84wCLcB/s1600/ScreenHunter_06%2BMar.%2B13%2B23.02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="177" src="https://3.bp.blogspot.com/-1pfUZEos3fY/WMaz7xigEAI/AAAAAAAAL_o/-t0AX_S9jXMYrm945myky9fdVMl4ec84wCLcB/s640/ScreenHunter_06%2BMar.%2B13%2B23.02.jpg" width="640" /></a></div><br />The <a href="https://hemantoracledba.blogspot.com/2015/03/1-million-page-views-in-less-than-5.html" target="_blank">1million PageViews mark was hit in March 2015</a>.<br />.<br />.<br />.<br /><br /></div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-5749385433132489860 Mon Mar 13 2017 11:01:00 GMT-0400 (EDT) 12cR1 RAC Posts -- 8c : Ignorable "Errors" during the DUPLICATE http://hemantoracledba.blogspot.com/2017/03/12cr1-rac-posts-8c-ignorable-errors.html <div dir="ltr" style="text-align: left;" trbidi="on">In <a href="https://hemantoracledba.blogspot.com/2017/03/12cr1-rac-posts-8b-duplicate-database.html" target="_blank">yesterday's post</a>, I had shown a DUPLICATE DATABASE from RAC-ASM to SingleInstance-FileSystem.<br /><br />During the course of the DUPLICATE DATABASE run, the Standby alert log seemingly reported errors. &nbsp;I chose to ignore the "errors" as I know the DUPLICATE was running successfully.<br /><br />For your reference, here are some of the good messages :<br /><br /><pre>Sun Mar 12 23:17:55 2017<br />ALTER SYSTEM SET control_files='/u01/app/oracle/oradata/STBY/controlfile/o1_mf_ddbs0p3w_.ctl','/u01/app/oracle/fast_recovery_area/STBY/controlfile/o1_mf_ddbs0p40_.ctl' COMMENT='Set by RMAN' SCOPE=SPFILE;<br />Sun Mar 12 23:17:59 2017<br />ALTER SYSTEM SET control_files='/u01/app/oracle/oradata/STBY/controlfile/o1_mf_ddbs0p3w_.ctl','/u01/app/oracle/fast_recovery_area/STBY/controlfile/o1_mf_ddbs0p40_.ctl' COMMENT='Set by RMAN' SCOPE=SPFILE;<br /><br />Sun Mar 12 23:21:41 2017<br />Switch of datafile 1 complete to datafile copy<br /> checkpoint is 3315193<br />Switch of datafile 3 complete to datafile copy<br /> checkpoint is 3315211<br />Switch of datafile 4 complete to datafile copy<br /> checkpoint is 3315270<br />Switch of datafile 5 complete to datafile copy<br /> checkpoint is 1754712<br />Switch of datafile 6 complete to datafile copy<br /> checkpoint is 3315280<br />Switch of datafile 7 complete to datafile copy<br /> checkpoint is 1754712<br />Switch of datafile 8 complete to datafile copy<br /> checkpoint is 3315276<br />Switch of datafile 9 complete to datafile copy<br /> checkpoint is 2978862<br />Switch of datafile 10 complete to datafile copy<br /> checkpoint is 2978862<br />Switch of datafile 11 complete to datafile copy<br /> checkpoint is 2978862<br /></pre><br /><br />And here are the errors (about the online redo logs) continuously being reported. &nbsp;These are messages which I ignored because the Standby has no online redo logs yet.<br /><br /><pre>Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 1 of thread 1<br />ORA-00312: online log 1 thread 1: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_1.257.931825281'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/STBY/onlinelog/group_1.283.931825279'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 1 of thread 1<br />ORA-00312: online log 1 thread 1: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_1.257.931825281'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/STBY/onlinelog/group_1.283.931825279'<br />ORA-27037: unable to obtain file status<br />Lin86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 2 of thread 1<br />ORA-00312: online log 2 thread 1: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_2.258.931825287'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/STBY/onlinelog/group_2.284.931825283'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 2 of thread 1<br />ORA-00312: online log 2 thread 1: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_2.258.931825287'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 2 thread 1: '/u01/app/oracle/oradata/STBY/onlinelog/group_2.284.931825283'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 3 of thread 2<br />ORA-00312: online log 3 thread 2: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_3.259.931826417'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 3 thread 2: '/u01/app/oracle/oradata/STBY/onlinelog/group_3.290.931826413'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 3 of thread 2<br />ORA-00312: online log 3 thread 2: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_3.259.931826417'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 3 thread 2: '/u01/app/oracle/oradata/STBY/onlinelog/group_3.290.931826413'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 4 of thread 2<br />ORA-00312: online log 4 thread 2: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_4.260.931826421'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 4 thread 2: '/u01/app/oracle/oradata/STBY/onlinelog/group_4.291.931826417'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 4 of thread 2<br />ORA-00312: online log 4 thread 2: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_4.260.931826421'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 4 thread 2: '/u01/app/oracle/oradata/STBY/onlinelog/group_4.291.931826417'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 5 of thread 0<br />ORA-00312: online log 5 thread 0: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_5.303.937936343'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 5 thread 0: '/u01/app/oracle/oradata/STBY/onlinelog/group_5.292.937936339'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 5 of thread 0<br />ORA-00312: online log 5 thread 0: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_5.303.937936343'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 5 thread 0: '/u01/app/oracle/oradata/STBY/onlinelog/group_5.292.937936339'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 6 of thread 0<br />ORA-00312: online log 6 thread 0: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_6.304.937936363'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 6 thread 0: '/u01/app/oracle/oradata/STBY/onlinelog/group_6.298.937936361'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 6 of thread 0<br />ORA-00312: online log 6 thread 0: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_6.304.937936363'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 6 thread 0: '/u01/app/oracle/oradata/STBY/onlinelog/group_6.298.937936361'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 7 of thread 0<br />ORA-00312: online log 7 thread 0: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_7.305.937936377'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 7 thread 0: '/u01/app/oracle/oradata/STBY/onlinelog/group_7.299.937936375'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 7 of thread 0<br />ORA-00312: online log 7 thread 0: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_7.305.937936377'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 7 thread 0: '/u01/app/oracle/oradata/STBY/onlinelog/group_7.299.937936375'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 8 of thread 0<br />ORA-00312: online log 8 thread 0: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_8.306.937936389'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 8 thread 0: '/u01/app/oracle/oradata/STBY/onlinelog/group_8.300.937936389'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 8 of thread 0<br />ORA-00312: online log 8 thread 0: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_8.306.937936389'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 8 thread 0: '/u01/app/oracle/oradata/STBY/onlinelog/group_8.300.937936389'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 9 of thread 0<br />ORA-00312: online log 9 thread 0: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_9.307.937936405'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 9 thread 0: '/u01/app/oracle/oradata/STBY/onlinelog/group_9.301.937936403'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />Sun Mar 12 23:18:22 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_lgwr_16416.trc:<br />ORA-00313: open failed for members of log group 9 of thread 0<br />ORA-00312: online log 9 thread 0: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_9.307.937936405'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br />ORA-00312: online log 9 thread 0: '/u01/app/oracle/oradata/STBY/onlinelog/group_9.301.937936403'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br /><br />alter database clear logfile group 1<br />Clearing online log 1 of thread 1 sequence number 41<br />Sun Mar 12 23:21:42 2017<br />Errors in file /u01/app/oracle/diag/rdbms/stby/STBY/trace/STBY_ora_16474.trc:<br />ORA-00313: open failed for members of log group 1 of thread 1<br />ORA-00312: online log 1 thread 1: '/u01/app/oracle/fast_recovery_area/STBY/onlinelog/group_1.257.931825281'<br />ORA-27037: unable to obtain file status<br />Linux-x86_64 Error: 2: No such file or directory<br />Additional information: 3<br /></pre><br /><br /><br />It is also interesting to see how CONTROL_FILES, DB_FILE_NAME_CONVERT and LOG_FILE_NAME_CONVERT are reported in the alert log :<br /><br /><pre> <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 /></pre><br />Each component of the entry in the init parameter file is reported on a separate line in the alert log.<br />.<br />.<br />.<br /><br /></div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-8451887327118187948 Mon Mar 13 2017 10:56:00 GMT-0400 (EDT) Oracle Database 12c Release 2 (12.2): Installation Articles http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/DhnL-6sdmg4/ <p><img class="alignleft wp-image-6956" src="https://oracle-base.com/blog/wp-content/uploads/2017/03/toolbox-306888_640.png" alt="" width="150" height="155" />If you follow me on social media, you will know I&#8217;ve put out a few <a href="/articles/12c/articles-12c#database-12cr2-installations">12cR2 installation articles</a> recently. It&#8217;s good motivation for me to read through the installation guides and see what&#8217;s changed, if anything, between versions. I quite like doing some of this nuts &amp; bolts 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>If you&#8217;re interested, this is what I&#8217;ve done so far.</p> <ul> <li><a href="/articles/12c/oracle-db-12cr2-installation-on-oracle-linux-6-and-7">Oracle Database 12c Release 2 (12.2) Installation On Oracle Linux 6 (OL6) and 7 (OL7)</a></li> <li><a href="/articles/12c/oracle-db-12cr2-installation-on-fedora-25">Oracle Database 12c Release 2 (12.2) Installation On Fedora 25 (F25)</a></li> <li><a href="/articles/12c/oracle-db-12cr2-rac-installation-on-oracle-linux-7-using-virtualbox">Oracle Database 12c Release 2 (12.2) RAC On Oracle Linux 7 Using VirtualBox</a></li> <li><a href="/articles/12c/oracle-db-12cr2-rac-installation-on-oracle-linux-6-using-virtualbox">Oracle Database 12c Release 2 (12.2) RAC On Oracle Linux 6¬†Using VirtualBox</a></li> </ul> <p>I always feel like I should stress a few things in relation to my install guides, or anyone else&#8217;s for that matter.</p> <ul> <li>You should always read the installation manuals. I know it can be boring, but there is a bunch of stuff you should understand that I don&#8217;t include, because my intention isn&#8217;t to regurgitate the manual. Maybe you have a situation where something is relevant that other&#8217;s don&#8217;t care about.</li> <li>The RAC articles are intentionally really basic. I avoid some of the job separation (users and groups) that you may want in your organisation. I keep the storage very simple. I avoid a lot of the possible topology variations. I would always consider these as a starting point for playing with RAC on a VM, rather than something you would consider a RAC &#8220;best practice&#8221;.¬†Once you&#8217;ve got one of these running you can try variations. Don&#8217;t expect me to write a separate guide for all variations. Try it yourself.</li> <li>I will make choices over my approach to make stuff suit the wider audience. For example I&#8217;ve tended to steer clear of ASMLib and the new¬†&#8220;ASM Filter Driver&#8221; because a big chunk of my audience are sceptical of them and prefer to use UDEV. I&#8217;m happy to use either and if you are using Oracle Linux and UEK it really doesn&#8217;t make a great deal of difference. I think you should play with both and decide for yourself which you like.¬†Remember, I&#8217;m not going to write multiple variations of the article.</li> <li>The installation guides are all using interactive installations, but I rarely do these nowadays, preferring to use <a href="/articles/misc/oui-silent-installations">silent installations</a> and <a href="/articles/misc/database-configuration-assistant-dbca-silent-mode">silent database creations</a>. I&#8217;m not sure how many people would be happy with a bunch of response files as their introduction to a new version. I think the GUI screens aid with understanding when you are new. You should definitely graduate to the silent stuff though! I&#8217;ve included the response files generated during each interactive installation.</li> <li>I modify the installation guides over time as I learn more about the stuff. That&#8217;s true of all my articles, but don&#8217;t assume because I installed it this way today, that&#8217;s definitely the way to do it!</li> </ul> <p>I guess what I&#8217;m saying is I&#8217;ve only done a handful of 12.2 installations, so I&#8217;m no guru. Keep that in mind and learn to think for yourself! <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>Happy installing!</p> <p>Cheers</p> <p>Tim&#8230;</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/03/13/oracle-database-12c-release-2-12-2-installation-articles/">Oracle Database 12c Release 2 (12.2): Installation Articles</a> was first posted on March 13, 2017 at 8:38 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/DhnL-6sdmg4" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=6955 Mon Mar 13 2017 03:38:44 GMT-0400 (EDT) SQLcl: Make NULLs ‚Äúvisible‚ÄĚ https://galobalda.wordpress.com/2017/03/12/sqlcl-make-nulls-visible/ <p>One of the nice features in SQL Developer is to be able to define a value to replace NULLs (for display purpose only) in the data grids. Jeff Smith has a blog <a href="http://www.thatjeffsmith.com/archive/2011/11/sql-developer-quick-tip-take-the-guess-work-out-of-null/">post</a> about it in case you are interested.</p> <p>You can achieve something similar in your SQLcl session by using <strong>set null some_string</strong>.</p> <p><a href="https://galobalda.wordpress.com/set_null/"><img data-attachment-id="516" data-permalink="https://galobalda.wordpress.com/2017/03/12/sqlcl-make-nulls-visible/set_null/" data-orig-file="https://galobalda.files.wordpress.com/2017/03/set_null.png?w=1365&#038;h=464" data-orig-size="1417,482" 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="set_null" data-image-description="" data-medium-file="https://galobalda.files.wordpress.com/2017/03/set_null.png?w=1365&#038;h=464?w=300" data-large-file="https://galobalda.files.wordpress.com/2017/03/set_null.png?w=1365&#038;h=464?w=590" class="aligncenter wp-image-516" src="https://galobalda.files.wordpress.com/2017/03/set_null.png?w=1365&#038;h=464" alt="" width="1365" height="464" srcset="https://galobalda.files.wordpress.com/2017/03/set_null.png?w=1365&amp;h=464 1365w, https://galobalda.files.wordpress.com/2017/03/set_null.png?w=150&amp;h=51 150w, https://galobalda.files.wordpress.com/2017/03/set_null.png?w=300&amp;h=102 300w, https://galobalda.files.wordpress.com/2017/03/set_null.png?w=768&amp;h=261 768w, https://galobalda.files.wordpress.com/2017/03/set_null.png?w=1024&amp;h=348 1024w, https://galobalda.files.wordpress.com/2017/03/set_null.png 1417w" sizes="(max-width: 1365px) 100vw, 1365px" /></a></p> <p>And here is ¬†the output from a query after setting the system variable.</p> <p><a href="https://galobalda.wordpress.com/set_null_query_result/"><img data-attachment-id="517" data-permalink="https://galobalda.wordpress.com/2017/03/12/sqlcl-make-nulls-visible/set_null_query_result/" data-orig-file="https://galobalda.files.wordpress.com/2017/03/set_null_query_result.png?w=1365&#038;h=483" data-orig-size="1417,501" 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="set_null_query_result" data-image-description="" data-medium-file="https://galobalda.files.wordpress.com/2017/03/set_null_query_result.png?w=1365&#038;h=483?w=300" data-large-file="https://galobalda.files.wordpress.com/2017/03/set_null_query_result.png?w=1365&#038;h=483?w=590" class="aligncenter wp-image-517 " src="https://galobalda.files.wordpress.com/2017/03/set_null_query_result.png?w=1365&#038;h=483" alt="" width="1365" height="483" srcset="https://galobalda.files.wordpress.com/2017/03/set_null_query_result.png?w=1365&amp;h=483 1365w, https://galobalda.files.wordpress.com/2017/03/set_null_query_result.png?w=150&amp;h=53 150w, https://galobalda.files.wordpress.com/2017/03/set_null_query_result.png?w=300&amp;h=106 300w, https://galobalda.files.wordpress.com/2017/03/set_null_query_result.png?w=768&amp;h=272 768w, https://galobalda.files.wordpress.com/2017/03/set_null_query_result.png?w=1024&amp;h=362 1024w, https://galobalda.files.wordpress.com/2017/03/set_null_query_result.png 1417w" sizes="(max-width: 1365px) 100vw, 1365px" /></a></p> <p>&nbsp;</p><br />Filed under: <a href='https://galobalda.wordpress.com/category/oracle/'>Oracle</a>, <a href='https://galobalda.wordpress.com/category/sqlcl/'>SQLcl</a> Tagged: <a href='https://galobalda.wordpress.com/tag/oracle/'>Oracle</a>, <a href='https://galobalda.wordpress.com/tag/sqlcl/'>SQLcl</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/galobalda.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/galobalda.wordpress.com/18/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=galobalda.wordpress.com&#038;blog=26962515&#038;post=18&#038;subd=galobalda&#038;ref=&#038;feed=1" width="1" height="1" /> gbalda http://galobalda.wordpress.com/?p=18 Sun Mar 12 2017 22:40:19 GMT-0400 (EDT) My Cloud Services DBaaS: Configuring the Oracle Cloud Database Service http://dbaontap.com/2017/03/12/oracle-cloud-database-service/ <h1><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/logo.jpg"><img class="wp-image-1108 size-medium alignnone" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/logo.jpg?resize=300%2C25" alt="" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/logo.jpg?resize=300%2C25 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/logo.jpg?resize=250%2C20 250w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/logo.jpg?resize=150%2C12 150w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/logo.jpg?w=318 318w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></h1> <h1 style="text-align: center;">My Cloud Services DBaaS</h1> <p>I went ahead and jumped on the bandwagon¬†and signed up for my very own Oracle Cloud Services Account. They make it too easy, so let&#8217;s jump right in and create a new Database Service. Obviously you will need to sign-up and get an account, which can be done right here: <a href="https://shop.oracle.com/apex/f?p=cloud:free&amp;intcmp=cloud-tryit" target="_blank">Cloud Promotion</a>. Once you&#8217;ve gone through the sign-up process and received your credentials, come back here and we can get started.</p> <p>I would also suggest that you go ahead and create an SSH Key. It is required for remote connections from tools such as SQL Developer. If you need some instructions on generating a key, check out my <a href="http://dbaontap.com/2017/03/12/generate-ssh-key-macos/" target="_blank">Generate an SSH key on macOS</a> post.</p> <p>1. Log into your account with the provided credentials.</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Cloud-Login.jpg"><img class="aligncenter wp-image-1109 size-large" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Cloud-Login.jpg?resize=800%2C565" alt="Oracle Cloud login screen" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Cloud-Login.jpg?resize=1030%2C727 1030w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Cloud-Login.jpg?resize=300%2C212 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Cloud-Login.jpg?resize=768%2C542 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Cloud-Login.jpg?resize=212%2C150 212w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Cloud-Login.jpg?resize=150%2C106 150w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Cloud-Login.jpg?w=1321 1321w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>2. A successful login should present you with your dashboard where you have access to all your services.</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Dashboard.jpg"><img class="aligncenter wp-image-1110 size-large" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Dashboard.jpg?resize=800%2C581" alt="My Cloud Services Dashboard" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Dashboard.jpg?resize=1030%2C748 1030w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Dashboard.jpg?resize=300%2C218 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Dashboard.jpg?resize=768%2C558 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Dashboard.jpg?resize=206%2C150 206w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Dashboard.jpg?resize=150%2C109 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Dashboard.jpg?w=1199 1199w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>3. Click on &#8220;Create Instance&#8221; and select Database</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Instance.jpg"><img class="aligncenter wp-image-1111 size-large" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Instance.jpg?resize=800%2C581" alt="My Cloud Services selection screen" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Instance.jpg?resize=1030%2C748 1030w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Instance.jpg?resize=300%2C218 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Instance.jpg?resize=768%2C558 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Instance.jpg?resize=206%2C150 206w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Instance.jpg?resize=150%2C109 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Instance.jpg?w=1199 1199w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>4. As you can see I have already created a Database Instance and you&#8217;ll get there too. Just click in the &#8220;Create Service&#8221; button.</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Service.jpg"><img class="aligncenter wp-image-1113 size-large" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Service.jpg?resize=800%2C581" alt="My Cloud Services DBaaS Screen" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Service.jpg?resize=1030%2C748 1030w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Service.jpg?resize=300%2C218 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Service.jpg?resize=768%2C558 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Service.jpg?resize=206%2C150 206w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Service.jpg?resize=150%2C109 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Service.jpg?w=1199 1199w" sizes="(max-width: 800px) 100vw, 800px&quo data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <p>5.¬†Next provide the basic service instance information. The only change I&#8217;d recommend is the choosing the Database 12c Release 2 version of the database and leave the remaining options alone. Click Next.</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_1.jpg"><img class="aligncenter wp-image-1114 size-large" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_1.jpg?resize=800%2C581" alt="My Cloud Services DBaaS Screen 2" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_1.jpg?resize=1030%2C748 1030w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_1.jpg?resize=300%2C218 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_1.jpg?resize=768%2C558 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_1.jpg?resize=206%2C150 206w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_1.jpg?resize=150%2C109 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_1.jpg?w=1199 1199w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>6. On the Service Details screen, we are going to accept the default values for¬†<strong>DB name (SID)</strong>, <strong>PDB Name</strong>, <strong>Usable Database Storage</strong>, and <strong>Compute Shape</strong>. This will also be a good time to make sure you have an SSH Public Key.</p> <p>Enter and confirm the Administration Password, upload your SSH Public Key. Directions for creating one macOS can be found <a href="http://dbaontap.com/2017/03/12/generate-ssh-key-macos/" target="_blank">here</a>. Also choose¬†&#8220;None&#8221; from the Backup Destination dropdown. Click Next</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Details-1.jpg"><img class="aligncenter wp-image-1122 size-large" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Details-1.jpg?resize=800%2C610" alt="My Cloud Services DBaaS Screen 2" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Details-1.jpg?resize=1030%2C786 1030w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Details-1.jpg?resize=300%2C229 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Details-1.jpg?resize=768%2C586 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Details-1.jpg?resize=197%2C150 197w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Details-1.jpg?resize=150%2C114 150w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Details-1.jpg?w=1199 1199w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>7. Verify everything on the Confirmation screen is acceptable. Click Create.</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Confirmation.jpg"><img class="aligncenter wp-image-1123 size-large" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Confirmation.jpg?resize=800%2C610" alt="My Cloud Services DBaaS Screen 3" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Confirmation.jpg?resize=1030%2C786 1030w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Confirmation.jpg?resize=300%2C229 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Confirmation.jpg?resize=768%2C586 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Confirmation.jpg?resize=197%2C150 197w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Confirmation.jpg?resize=150%2C114 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/Basic-Service_Confirmation.jpg?w=1199 1199w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>At this point, we will wait for the services to be provisioned.</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Status_page.jpg"><img class="aligncenter wp-image-1132 size-large" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Status_page.jpg?resize=800%2C610" alt="" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Status_page.jpg?resize=1030%2C786 1030w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Status_page.jpg?resize=300%2C229 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Status_page.jpg?resize=768%2C586 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Status_page.jpg?resize=197%2C150 197w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Status_page.jpg?resize=150%2C114 150w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/Status_page.jpg?w=1199 1199w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>&#8230;. and approximately 21 minutes later, we have a newly provisioned 12cR2 database.</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Status.jpg"><img class="aligncenter wp-image-1130 size-large" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Status.jpg?resize=800%2C672" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Status.jpg?resize=1030%2C865 1030w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Status.jpg?resize=300%2C252 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Status.jpg?resize=768%2C645 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Status.jpg?resize=179%2C150 179w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Status.jpg?resize=150%2C126 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/Create-Status.jpg?w=1199 1199w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>8. Click on the Service name (Blog-Example) to get the details of your new Database instance. Pay particular attention to the IP address as you will need this later to connect to the DB instance.</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/instance-info.jpg"><img class="aligncenter size-large wp-image-1134" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/instance-info.jpg?resize=800%2C501" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/instance-info.jpg?resize=1030%2C645 1030w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/instance-info.jpg?resize=300%2C188 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/instance-info.jpg?resize=768%2C481 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/instance-info.jpg?resize=239%2C150 239w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/instance-info.jpg?resize=150%2C94 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/instance-info.jpg?w=1199 1199w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>9. Finally we need to open a port 1521 via the Access Rules enable remote connectivity to the database. Click the dropdown menu icon beside the instance name, and choose Access Rules.</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules.jpg"><img class="aligncenter size-large wp-image-1137" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules.jpg?resize=800%2C576" alt="Access Rules" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules.jpg?resize=1030%2C741 1030w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules.jpg?resize=300%2C216 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules.jpg?resize=768%2C553 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules.jpg?resize=208%2C150 208w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules.jpg?resize=150%2C108 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules.jpg?w=1195 1195w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>10. Click the Actions dropdown for Rule Name: ora_p2_dblistener and select Enable to allow access to port 1521.</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521.jpg"><img class="aligncenter size-large wp-image-1138" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521.jpg?resize=800%2C576" alt="Enable Port 1521" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521.jpg?resize=1030%2C741 1030w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521.jpg?resize=300%2C216 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521.jpg?resize=768%2C553 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521.jpg?resize=208%2C150 208w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521.jpg?resize=150%2C108 150w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521.jpg?w=1195 1195w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>11. Click the enable button on the¬†<strong>Enable Access Rule</strong> dialogue box.</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enable.jpg"><img class="aligncenter size-large wp-image-1139" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enable.jpg?resize=800%2C576" alt="Enable 1521 Access Rules" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enable.jpg?resize=1030%2C741 1030w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enable.jpg?resize=300%2C216 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enable.jpg?resize=768%2C553 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enable.jpg?resize=208%2C150 208w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enable.jpg?resize=150%2C108 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enable.jpg?w=1195 1195w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enablesuccess.jpg"><img class="aligncenter size-large wp-image-1140" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enablesuccess.jpg?resize=800%2C576" alt="1521 Success page" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enablesuccess.jpg?resize=1030%2C741 1030w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enablesuccess.jpg?resize=300%2C216 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enablesuccess.jpg?resize=768%2C553 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enablesuccess.jpg?resize=208%2C150 208w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enablesuccess.jpg?resize=150%2C108 150w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/access_rules1521enablesuccess.jpg?w=1195 1195w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>12. Finally you can connect remotely to your database via a tool such as SQLcl. I have added an entry in my /etc/hosts file to resolve the blog-example name to its IP address <strong>129.150.65.254</strong></p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-2.jpg"><img class="aligncenter size-full wp-image-1141" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-2.jpg?resize=760%2C429" alt="SQLcl" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-2.jpg?w=760 760w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-2.jpg?resize=300%2C169 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-2.jpg?resize=250%2C141 250w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-2.jpg?resize=150%2C85 150w" sizes="(max-width: 760px) 100vw, 760px" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <p>Next we will learn how to use SQL Developer to connect to a database instance.</p> <p>Enjoy!<a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png"><img class="alignright size-medium wp-image-265" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=300%2C134" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=300%2C134 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=250%2C111 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=150%2C67 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?w=525 525w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/03/12/oracle-cloud-database-service/">My Cloud Services DBaaS: Configuring the Oracle Cloud Database Service</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">My Experiences with Oracle Technology</a>.</p> DB http://dbaontap.com/?p=1107 Sun Mar 12 2017 18:06:43 GMT-0400 (EDT) Generate an SSH key on macOS http://dbaontap.com/2017/03/12/generate-ssh-key-macos/ <h1 style="text-align: center;"><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg"><img class="alignleft size-thumbnail wp-image-1117" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg?resize=80%2C80" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg?resize=80%2C80 80w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg?zoom=2&amp;resize=80%2C80 160w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg?zoom=3&amp;resize=80%2C80 240w" sizes="(max-width: 80px) 100vw, 80px" data-recalc-dims="1" /></a>Generate an SSH key on macOS (Sierra 10.12.3)</h1> <p>Generating an SSH key with macOS is relatively straight forward using the variety of Terminal applications available for the OS.</p> <p>I have written this post as part of a prereq documentation for building on Oracle Cloud Services, but the step apply regardless of your objective. There are plenty of places documenting these steps for both Windows and Linux</p> <h1>Open the Terminal application</h1> <p>To open the a terminal application you can either find it in the Dock, but if it&#8217;s not there, follow these steps:</p> <ol> <li>Click the¬†Applications icon in the dock</li> <li>Search for and click the Utilities folder</li> <li>Launch the Terminal application</li> </ol> <div id="attachment_1117" style="width: 310px" class="wp-caption aligncenter"><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg"><img class="wp-image-1117 size-medium" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg?resize=300%2C212" alt="SSH terminal image" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg?resize=300%2C212 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg?resize=768%2C541 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg?resize=213%2C150 213w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg?resize=150%2C106 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/sshTerminal.jpg?w=790 790w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a><p class="wp-caption-text">Terminal Application on macOS</p></div> <h1>Generate the ssh key</h1> <p>Once your terminal window is open, to generate the ssh key, follow these steps:</p><pre class="crayon-plain-tag">1. Change to the ~/.ssh directory. This will ensure that the ssh keys will be saved in your .ssh directory. Danny: &gt; cd .ssh</pre><p></p><pre class="crayon-plain-tag">2. Execute ssh-keygen -t rsa to start the process Danny: &gt; ssh-keygen -t rsa Generating public/private rsa key pair.</pre><p></p><pre class="crayon-plain-tag">3. Provide a name the key files generated. In this example I have called it "cloudKey" Enter file in which to save the key (/Users/username/.ssh/id_rsa): cloudKey</pre><p></p><pre class="crayon-plain-tag">4. Enter a passphrase. Please remember this passphrase, you will need it later. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in cloudKey. Your public key has been saved in cloudKey.pub. The key fingerprint is: SHA256:xxxxxxxxxxXXXXXXXXXXxxxxxxxxxxXXXXXXXXXXxxx username@computername The key's randomart image is: +---[RSA 2048]----+ |4einc | |hhhh | |+.+. . | |*oo= . o | |+B= o E S | |B=cc o | |=+=.. . | |ooo-= .o | |grdB..ot | +----[SHA256]-----+</pre><p>Your private key is saved as &#8220;cloudKey&#8221; and your public key is &#8220;cloudKey.pub&#8221; both in the ~/.ssh directory. Next steps will be use these files to enable secure remote access without the need to use passwords.</p> <p>Enjoy!<a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png"><img class="alignright size-medium wp-image-225" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png?resize=300%2C134" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png?resize=300%2C134 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png?resize=250%2C111 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png?resize=150%2C67 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png?w=525 525w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/03/12/generate-ssh-key-macos/">Generate an SSH key on macOS</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">My Experiences with Oracle Technology</a>.</p> DB http://dbaontap.com/?p=1116 Sun Mar 12 2017 12:29:10 GMT-0400 (EDT) 12cR1 RAC Posts -- 8b : DUPLICATE DATABASE FOR STANDBY http://hemantoracledba.blogspot.com/2017/03/12cr1-rac-posts-8b-duplicate-database.html <div dir="ltr" style="text-align: left;" trbidi="on">Continuing the <a href="https://hemantoracledba.blogspot.com/2017/03/12cr1-rac-posts-8a-setting-up.html" target="_blank">previous post</a>, where I have done the pre-setup...<br />(A reminder : This is a SingleInstance Standby on FileSystem for a RAC Database with a PDB on ASM)<br /><br /><br />On the SingleInstance Node (for the Standby database)<br /><br />Precreate the required folders for the database (and redo and control) files (I later realised that the "onlinelog" folders for the SEED and PDB are not required)<br /><br /><pre>[oracle@oem132 ~]$ cd /u01/app/oracle/oradata<br />[oracle@oem132 oradata]$ mkdir STBY<br />[oracle@oem132 oradata]$ cd STBY<br />[oracle@oem132 STBY]$ mkdir datafile<br />[oracle@oem132 STBY]$ mkdir onlinelog<br />[oracle@oem132 STBY]$ mkdir 44bbc69ce8f552aee053334ea8c07365<br />[oracle@oem132 STBY]$ mkdir fd9ac20f64d244d7e043b6a9e80a2f2f<br />[oracle@oem132 STBY]$ cd 44*<br />[oracle@oem132 44bbc69ce8f552aee053334ea8c07365]$ mkdir datafile tempfile<br />[oracle@oem132 44bbc69ce8f552aee053334ea8c07365]$ cd ../fd*<br />[oracle@oem132 fd9ac20f64d244d7e043b6a9e80a2f2f]$ mkdir datafile tempfile<br />[oracle@oem132 fd9ac20f64d244d7e043b6a9e80a2f2f]$<br />[oracle@oem132 STBY]$<br />[oracle@oem132 STBY]$ cd /u01/app/oracle/fast_recovery_area<br />[oracle@oem132 fast_recovery_area]$ mkdir STBY<br />[oracle@oem132 fast_recovery_area]$ cd STBY<br />[oracle@oem132 STBY]$ mkdir onlinelog<br />[oracle@oem132 STBY]$ mkdir 44bbc69ce8f552aee053334ea8c07365<br />[oracle@oem132 STBY]$ mkdir fd9ac20f64d244d7e043b6a9e80a2f2f<br />[oracle@oem132 STBY]$ cd 44*<br />[oracle@oem132 44bbc69ce8f552aee053334ea8c07365]$ mkdir onlinelog<br />[oracle@oem132 44bbc69ce8f552aee053334ea8c07365]$ cd ../fd*<br />[oracle@oem132 fd9ac20f64d244d7e043b6a9e80a2f2f]$ mkdir onlinelog<br />[oracle@oem132 fd9ac20f64d244d7e043b6a9e80a2f2f]$<br />[oracle@oem132 STBY]$<br /></pre><br />Note that the names of the two folders for the SEED and the PDB are in *lower case*.<br /><br />Next start the listener for STBY.<br /><br /><pre>[oracle@oem132 STBY]$ cd<br />[oracle@oem132 ~]$ tail -1 /etc/oratab<br />STBY:/u01/app/oracle/product/12.1.0/dbhome_1:N<br />[oracle@oem132 ~]$ . oraenv<br />ORACLE_SID = [oracle] ? STBY<br />The Oracle base has been set to /u01/app/oracle<br />[oracle@oem132 ~]$ ls -l $ORACLE_HOME/dbs/*STBY*<br />-rw-r--r-- 1 oracle oinstall 508 Mar 6 22:11 /u01/app/oracle/product/12.1.0/dbhome_1/dbs/initSTBY.ora<br />-rw-r----- 1 oracle oinstall 7680 Mar 6 22:13 /u01/app/oracle/product/12.1.0/dbhome_1/dbs/orapwSTBY<br />[oracle@oem132 ~]$ sqlplus '/ as sysdba'<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Sun Mar 12 23:03:43 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; 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 ~]$ lsnrctl start<br /><br />LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 12-MAR-2017 23:04:28<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 12-MAR-2017 23:04:28<br />Uptime 0 days 0 hr. 0 min. 12 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 ~]$<br /></pre><br />I am now ready to issue the DUPLICATE DATABASE command from the RAC Primary.<br /><br /><pre>[oracle@collabn1 ~]$ . oraenv<br />ORACLE_SID = [RAC1] ? RAC1<br />The Oracle base remains unchanged with value /u01/app/oracle<br />[oracle@collabn1 ~]$ rman<br /><br />Recovery Manager: Release 12.1.0.2.0 - Production on Sun Mar 12 23:17:27 2017<br /><br />Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.<br /><br />RMAN&gt; connect target sys/racattack<br /><br />connected to target database: RAC (DBID=2519807290)<br /><br />RMAN&gt; connect auxiliary sys/racattack@STBY<br /><br />connected to auxiliary database: RAC (not mounted)<br /><br />RMAN&gt; DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE ;<br /><br />Starting Duplicate Db at 12-MAR-17<br />using target database control file instead of recovery catalog<br />allocated channel: ORA_AUX_DISK_1<br />channel ORA_AUX_DISK_1: SID=12 device type=DISK<br /><br />contents of Memory Script:<br />{<br /> backup as copy reuse<br /> targetfile '+DATA/RAC/PASSWORD/pwdrac.277.931824933' auxiliary format<br /> '/u01/app/oracle/product/12.1.0/dbhome_1/dbs/orapwSTBY' ;<br />}<br />executing Memory Script<br /><br />Starting backup at 12-MAR-17<br />allocated channel: ORA_DISK_1<br />channel ORA_DISK_1: SID=273 instance=RAC1 device type=DISK<br />Finished backup at 12-MAR-17<br /><br />contents of Memory Script:<br />{<br /> sql clone "alter system set control_files =<br /> ''/u01/app/oracle/oradata/STBY/controlfile/o1_mf_ddbs0p3w_.ctl'', ''/u01/app/oracle/fast_recovery_area/STBY/controlfile/o1_mf_ddbs0p40_.ctl'' comment=<br /> ''Set by RMAN'' scope=spfile";<br /> backup as copy current controlfile for standby auxiliary format '/u01/app/oracle/oradata/STBY/controlfile/o1_mf_ddbs0p3w_.ctl';<br /> restore clone primary controlfile to '/u01/app/oracle/fast_recovery_area/STBY/controlfile/o1_mf_ddbs0p40_.ctl' from<br /> '/u01/app/oracle/oradata/STBY/controlfile/o1_mf_ddbs0p3w_.ctl';<br /> sql clone "alter system set control_files =<br /> ''/u01/app/oracle/oradata/STBY/controlfile/o1_mf_ddbs0p3w_.ctl'', ''/u01/app/oracle/fast_recovery_area/STBY/controlfile/o1_mf_ddbs0p40_.ctl'' comment=<br /> ''Set by RMAN'' scope=spfile";<br /> shutdown clone immediate;<br /> startup clone nomount;<br />}<br />executing Memory Script<br /><br />sql statement: alter system set control_files = ''/u01/app/oracle/oradata/STBY/controlfile/o1_mf_ddbs0p3w_.ctl'', ''/u01/app/oracle/fast_recovery_area/STBY/controlfile/o1_mf_ddbs0p40_.ctl'' comment= ''Set by RMAN'' scope=spfile<br /><br />Starting backup at 12-MAR-17<br />using channel ORA_DISK_1<br />channel ORA_DISK_1: starting datafile copy<br />copying standby control file<br />output file name=/u01/app/oracle/oradata/STBY/controlfile/o1_mf_ddbs0p3w_.ctl tag=TAG20170312T231755<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01<br />Finished backup at 12-MAR-17<br /><br />Starting restore at 12-MAR-17<br />using channel ORA_AUX_DISK_1<br /><br />channel ORA_AUX_DISK_1: copied control file copy<br />Finished restore at 12-MAR-17<br /><br />sql statement: alter system set control_files = ''/u01/app/oracle/oradata/STBY/controlfile/o1_mf_ddbs0p3w_.ctl'', ''/u01/app/oracle/fast_recovery_area/STBY/controlfile/o1_mf_ddbs0p40_.ctl'' comment= ''Set by RMAN'' scope=spfile<br /><br />Oracle instance shut down<br /><br />connected to auxiliary database (not started)<br />Oracle instance started<br /><br />Total System Global Area 838860800 bytes<br /><br />Fixed Size 2929936 bytes<br />Variable Size 230689520 bytes<br />Database Buffers 599785472 bytes<br />Redo Buffers 5455872 bytes<br /><br />contents of Memory Script:<br />{<br /> sql clone 'alter database mount standby database';<br />}<br />executing Memory Script<br /><br />sql statement: alter database mount standby database<br /><br />contents of Memory Script:<br />{<br /> set newname for tempfile 1 to<br /> "/u01/app/oracle/oradata/STBY/tempfile/temp.285.931825311";<br /> set newname for tempfile 2 to<br /> "/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/pdbseed_temp012016-12-29_12-23-03-am.dbf";<br /> set newname for tempfile 3 to<br /> "/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/tempfile/temp.295.931827153";<br /> switch clone tempfile all;<br /> set newname for datafile 1 to<br /> "/u01/app/oracle/oradata/STBY/datafile/system.279.931825083";<br /> set newname for datafile 3 to<br /> "/u01/app/oracle/oradata/STBY/datafile/sysaux.278.931825019";<br /> set newname for datafile 4 to<br /> "/u01/app/oracle/oradata/STBY/datafile/undotbs1.281.931825149";<br /> set newname for datafile 5 to<br /> "/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/system.287.931825323";<br /> set newname for datafile 6 to<br /> "/u01/app/oracle/oradata/STBY/datafile/users.280.931825149";<br /> set newname for datafile 7 to<br /> "/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/sysaux.286.931825323";<br /> set newname for datafile 8 to<br /> "/u01/app/oracle/oradata/STBY/datafile/undotbs2.289.931826143";<br /> set newname for datafile 9 to<br /> "/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/system.293.931827089";<br /> set newname for datafile 10 to<br /> "/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/sysaux.294.931827089";<br /> set newname for datafile 11 to<br /> "/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/users.296.931827189";<br /> backup as copy reuse<br /> datafile 1 auxiliary format<br /> "/u01/app/oracle/oradata/STBY/datafile/system.279.931825083" datafile<br /> 3 auxiliary format<br /> "/u01/app/oracle/oradata/STBY/datafile/sysaux.278.931825019" datafile<br /> 4 auxiliary format<br /> "/u01/app/oracle/oradata/STBY/datafile/undotbs1.281.931825149" datafile<br /> 5 auxiliary format<br /> "/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/system.287.931825323" datafile<br /> 6 auxiliary format<br /> "/u01/app/oracle/oradata/STBY/datafile/users.280.931825149" datafile<br /> 7 auxiliary format<br /> "/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/sysaux.286.931825323" datafile<br /> 8 auxiliary format<br /> "/u01/app/oracle/oradata/STBY/datafile/undotbs2.289.931826143" datafile<br /> 9 auxiliary format<br /> "/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/system.293.931827089" datafile<br /> 10 auxiliary format<br /> "/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/sysaux.294.931827089" datafile<br /> 11 auxiliary format<br /> "/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/users.296.931827189" ;<br /> sql 'alter system archive log current';<br />}<br />executing Memory Script<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />renamed tempfile 1 to /u01/app/oracle/oradata/STBY/tempfile/temp.285.931825311 in control file<br />renamed tempfile 2 to /u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/pdbseed_temp012016-12-29_12-23-03-am.dbf in control file<br />renamed tempfile 3 to /u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/tempfile/temp.295.931827153 in control file<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />executing command: SET NEWNAME<br /><br />Starting backup at 12-MAR-17<br />using channel ORA_DISK_1<br />channel ORA_DISK_1: starting datafile copy<br />input datafile file number=00001 name=+DATA/RAC/DATAFILE/system.279.931825083<br />output file name=/u01/app/oracle/oradata/STBY/datafile/system.279.931825083 tag=TAG20170312T231824<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:45<br />channel ORA_DISK_1: starting datafile copy<br />input datafile file number=00003 name=+DATA/RAC/DATAFILE/sysaux.278.931825019<br />output file name=/u01/app/oracle/oradata/STBY/datafile/sysaux.278.931825019 tag=TAG20170312T231824<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35<br />channel ORA_DISK_1: starting datafile copy<br />input datafile file number=00007 name=+DATA/RAC/FD9AC20F64D244D7E043B6A9E80A2F2F/DATAFILE/sysaux.286.931825323<br />output file name=/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/sysaux.286.931825323 tag=TAG20170312T231824<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35<br />channel ORA_DISK_1: starting datafile copy<br />input datafile file number=00010 name=+DATA/RAC/44BBC69CE8F552AEE053334EA8C07365/DATAFILE/sysaux.294.931827089<br />output file name=/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/sysaux.294.931827089 tag=TAG20170312T231824<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25<br />channel ORA_DISK_1: starting datafile copy<br />input datafile file number=00009 name=+DATA/RAC/44BBC69CE8F552AEE053334EA8C07365/DATAFILE/system.293.931827089<br />output file name=/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/system.293.931827089 tag=TAG20170312T231824<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15<br />channel ORA_DISK_1: starting datafile copy<br />input datafile file number=00005 name=+DATA/RAC/FD9AC20F64D244D7E043B6A9E80A2F2F/DATAFILE/system.287.931825323<br />output file name=/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/system.287.931825323 tag=TAG20170312T231824<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15<br />channel ORA_DISK_1: starting datafile copy<br />input datafile file number=00004 name=+DATA/RAC/DATAFILE/undotbs1.281.931825149<br />output file name=/u01/app/oracle/oradata/STBY/datafile/undotbs1.281.931825149 tag=TAG20170312T231824<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15<br />channel ORA_DISK_1: starting datafile copy<br />input datafile file number=00008 name=+DATA/RAC/DATAFILE/undotbs2.289.931826143<br />output file name=/u01/app/oracle/oradata/STBY/datafile/undotbs2.289.931826143 tag=TAG20170312T231824<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03<br />channel ORA_DISK_1: starting datafile copy<br />input datafile file number=00006 name=+DATA/RAC/DATAFILE/users.280.931825149<br />output file name=/u01/app/oracle/oradata/STBY/datafile/users.280.931825149 tag=TAG20170312T231824<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01<br />channel ORA_DISK_1: starting datafile copy<br />input datafile file number=00011 name=+DATA/RAC/44BBC69CE8F552AEE053334EA8C07365/DATAFILE/users.296.931827189<br />output file name=/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/users.296.931827189 tag=TAG20170312T231824<br />channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01<br />Finished backup at 12-MAR-17<br /><br />sql statement: alter system archive log current<br /><br />contents of Memory Script:<br />{<br /> switch clone datafile all;<br />}<br />executing Memory Script<br /><br />datafile 1 switched to datafile copy<br />input datafile copy RECID=3 STAMP=938474501 file name=/u01/app/oracle/oradata/STBY/datafile/system.279.931825083<br />datafile 3 switched to datafile copy<br />input datafile copy RECID=4 STAMP=938474501 file name=/u01/app/oracle/oradata/STBY/datafile/sysaux.278.931825019<br />datafile 4 switched to datafile copy<br />input datafile copy RECID=5 STAMP=938474501 file name=/u01/app/oracle/oradata/STBY/datafile/undotbs1.281.931825149<br />datafile 5 switched to datafile copy<br />input datafile copy RECID=6 STAMP=938474501 file name=/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/system.287.931825323<br />datafile 6 switched to datafile copy<br />input datafile copy RECID=7 STAMP=938474501 file name=/u01/app/oracle/oradata/STBY/datafile/users.280.931825149<br />datafile 7 switched to datafile copy<br />input datafile copy RECID=8 STAMP=938474501 file name=/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/sysaux.286.931825323<br />datafile 8 switched to datafile copy<br />input datafile copy RECID=9 STAMP=938474501 file name=/u01/app/oracle/oradata/STBY/datafile/undotbs2.289.931826143<br />datafile 9 switched to datafile copy<br />input datafile copy RECID=10 STAMP=938474501 file name=/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/system.293.931827089<br />datafile 10 switched to datafile copy<br />input datafile copy RECID=11 STAMP=938474501 file name=/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/sysaux.294.931827089<br />datafile 11 switched to datafile copy<br />input datafile copy RECID=12 STAMP=938474501 file name=/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/users.296.931827189<br />Finished Duplicate Db at 12-MAR-17<br /><br />RMAN&gt;<br /></pre><br />The DUPLICATE ... FOR STANDBY has completed. &nbsp;Let me just run two verification checks.<br /><br />On the Standby :<br /><br /><pre>[oracle@oem132 ~]$ sqlplus '/ as sysdba'<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Sun Mar 12 23:24:05 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, OLAP, Advanced Analytics and Real Application Testing options<br /><br />SQL&gt; select database_role from v$database;<br /><br />DATABASE_ROLE<br />----------------<br />PHYSICAL STANDBY<br /><br />SQL&gt; select open_mode from v$database;<br /><br />OPEN_MODE<br />--------------------<br />MOUNTED<br /><br />SQL&gt;<br />SQL&gt; select file#, name from v$datafile order by 1;<br /><br /> FILE#<br />----------<br />NAME<br />--------------------------------------------------------------------------------<br /> 1<br />/u01/app/oracle/oradata/STBY/datafile/system.279.931825083<br /><br /> 3<br />/u01/app/oracle/oradata/STBY/datafile/sysaux.278.931825019<br /><br /> 4<br />/u01/app/oracle/oradata/STBY/datafile/undotbs1.281.931825149<br /><br /> 5<br />/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/system.28<br />7.931825323<br /><br /> 6<br />/u01/app/oracle/oradata/STBY/datafile/users.280.931825149<br /><br /> 7<br />/u01/app/oracle/oradata/STBY/fd9ac20f64d244d7e043b6a9e80a2f2f/datafile/sysaux.28<br />6.931825323<br /><br /> 8<br />/u01/app/oracle/oradata/STBY/datafile/undotbs2.289.931826143<br /><br /> 9<br />/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/system.29<br />3.931827089<br /><br /> 10<br />/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/sysaux.29<br />4.931827089<br /><br /> 11<br />/u01/app/oracle/oradata/STBY/44bbc69ce8f552aee053334ea8c07365/datafile/users.296<br />.931827189<br /><br /><br />10 rows selected.<br /><br />SQL&gt;<br />SQL> 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 ~]$ cd $ORACLE_HOME/dbs<br />[oracle@oem132 dbs]$ ls -ltr *STBY*<br />-rw-r--r-- 1 oracle oinstall 508 Mar 6 22:11 initSTBY.ora<br />-rw-r----- 1 oracle oinstall 24 Mar 12 23:07 lkSTBY<br />-rw-r----- 1 oracle oinstall 7680 Mar 12 23:17 orapwSTBY<br />-rw-rw---- 1 oracle oinstall 1544 Mar 12 23:18 hc_STBY.dat<br />-rw-r----- 1 oracle oinstall 17920 Mar 12 23:18 spfileSTBY.ora<br />[oracle@oem132 dbs]$<br /></pre><br />On the Primary :<br /><br /><pre>RMAN&gt; exit<br /><br /><br />Recovery Manager complete.<br />[oracle@collabn1 ~]$ sqlplus '/ as sysdba'<br /><br />SQL*Plus: Release 12.1.0.2.0 Production on Sun Mar 12 23:26:17 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 database_role from v$database;<br /><br />DATABASE_ROLE<br />----------------<br />PRIMARY<br /><br />SQL&gt; select open_mode from v$database;<br /><br />OPEN_MODE<br />--------------------<br />READ WRITE<br /><br />SQL&gt; set pages600<br />SQL&gt; select file#, name from v$datafile order by 1;<br /><br /> FILE#<br />----------<br />NAME<br />--------------------------------------------------------------------------------<br /> 1<br />+DATA/RAC/DATAFILE/system.279.931825083<br /><br /> 3<br />+DATA/RAC/DATAFILE/sysaux.278.931825019<br /><br /> 4<br />+DATA/RAC/DATAFILE/undotbs1.281.931825149<br /><br /> 5<br />+DATA/RAC/FD9AC20F64D244D7E043B6A9E80A2F2F/DATAFILE/system.287.931825323<br /><br /> 6<br />+DATA/RAC/DATAFILE/users.280.931825149<br /><br /> 7<br />+DATA/RAC/FD9AC20F64D244D7E043B6A9E80A2F2F/DATAFILE/sysaux.286.931825323<br /><br /> 8<br />+DATA/RAC/DATAFILE/undotbs2.289.931826143<br /><br /> 9<br />+DATA/RAC/44BBC69CE8F552AEE053334EA8C07365/DATAFILE/system.293.931827089<br /><br /> 10<br />+DATA/RAC/44BBC69CE8F552AEE053334EA8C07365/DATAFILE/sysaux.294.931827089<br /><br /> 11<br />+DATA/RAC/44BBC69CE8F552AEE053334EA8C07365/DATAFILE/users.296.931827189<br /><br /><br />10 rows selected.<br /><br />SQL&gt;<br /></pre><br />All datafiles (CDB, SEED and 1 PDB) are replicated. &nbsp;Note how the folder names for the SEED and PDB are in lower-case on the Standby. &nbsp;Since the source database is RAC, it has two Undo Tablespaces. &nbsp;(This is 12.1 so I do not have the 12.2 feature of Local Undo in PDBs)<br /><br />The next few posts will be on the DataGuard Broker and Redo Shipping and Applly.<br />(Should I also do a SWITCHOVER ?)<br />.<br />.<br />.<br /><br /><br /></div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-2491248074755042433 Sun Mar 12 2017 11:27:00 GMT-0400 (EDT) JDev/ADF sample - Improved Display for Empty Field Values in ADF Form http://andrejusb-samples.blogspot.com/2017/03/jdevadf-sample-improved-display-for.html <div dir="ltr" style="text-align: left;" trbidi="on"><ul><li><a href="http://andrejusb.blogspot.lt/2017/03/improved-display-for-empty-field-values.html" target="_blank">Improved Display for Empty Field Values in ADF Form</a>. I had a task in the project, to improve display for empty field in ADF form. By default, if there is no row data in the result - all input text entries in ADF form will be hidden, user will see only labels. This is not ideal, most of time users would prefer to see disabled input text boxes instead.</li></ul><ol>Download - <a href="https://docs.google.com/uc?export=download&amp;id=0Bw_kr1_tXc-eR2JUY2Y1TlkzTGs">ADFDataEntryUIApp.zip</a></ol></div> Andrejus Baranovskis tag:blogger.com,1999:blog-4301764760924839143.post-439143968277159363 Sun Mar 12 2017 06:00:00 GMT-0400 (EDT) Change UUIDs in VirtualBox https://technology.amis.nl/2017/03/12/change-uuids-in-virtualbox/ <p>If you are anything like me you will have multiple virtualboxes running on your system. Sometimes you might want to run a copy of a virtualbox for different purposes. Like running an Oracle 11 Devdays instance as test environment but also running the same vbox for customer testing. If you copy the vbox and try to run it in the manager you‚Äôll be presented with an error that a harddisk with the same UUID already exists. Here‚Äôs how I solved it.</p> <p><span id="more-44261"></span></p> <p>First of all you make a backup-copy of the Virtualbox you want to change. While this is running you can download the <a href="http://portableapps.com/apps/utilities/uuid-guid_generator_portable" target="_blank">portable apps UUID-GUID generator</a> or if you are not running windows a similar program. You can also use an <a href="https://www.guidgen.com/" target="_blank">online GUID generator</a>.</p> <p>After the backup has completed you can start changing the UUIDs for the VirtualBox. Open the &lt;virtualboxname&gt;.vbox file in a text editor. There are a couple of UUIDs that need to be changed:</p> <p>First look for the &lt;Machine&gt; tag (2nd tag in the xml file). One of the attributes is uuid={some_uuid}. You can change this to your new uuid. This is where the generator comes in, just generate a new uuid and paste that here.</p> <p>Next you need to change the uuids for the harddisks. This is a little more tricky. Find the tag &lt;Harddisk&gt; and look for the uuid attribute. This uuid is used multiple times in the xml file. Also in the StorageControllers section. The easiest way to keep these in sync is to do a search-and-replace over the entire file. Search for the current uuid, replace with a freshly generated uuid. Before you change the next one. you also need to change the uuid in the harddisk file. You do this running a command line utility VBoxManage. <br />The command is like this: <br />&lt;path_to_virtualbox&gt;VBoxManage internalcommands sethduuid &lt;filepath&gt; &lt;uuid&gt;</p> <p>Repeat this process for all the harddisks that are defined. This way you can have multiple instances of the same VirtualBox in your VirtualBox Manager.</p> <p>You may want to change other settings like MAC Addresses for your network cards, but you can do this using the VBox interface.</p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/12/change-uuids-in-virtualbox/">Change UUIDs in VirtualBox</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Patrick Barel https://technology.amis.nl/?p=44261 Sun Mar 12 2017 01:31:17 GMT-0500 (EST) Manually Adding Sales History, (SH) Schema to 11.2.0.4 http://dbakevlar.com/2017/03/manually-adding-sales-history-sh-schema-11-2-0-4/ <div id="tweetbutton6512" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Fmanually-adding-sales-history-sh-schema-11-2-0-4%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%2Fmanually-adding-sales-history-sh-schema-11-2-0-4%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>Most people know I like to do things the hard way&#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/03/manually-adding-sales-history-sh-schema-11-2-0-4/juggarnaut/" rel="attachment wp-att-6516"><img class="alignnone wp-image-6516" src="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/juggarnaut.gif?resize=399%2C165" alt="" data-recalc-dims="1" /></a></p> <p>When it comes to learning things, there&#8217;s¬†often no better way to get a strong understanding than to have to take something apart and put it back together. ¬†I wanted to use swingbench on my AWS deployment and needed the Sales History, (SH) sample schema. ¬†I don&#8217;t have an interface to perform the installation via the configuration manager, so I was going to install it manually.</p> <p>Surprise, the scripts¬†in the $ORACLE_HOME/demo/schema/sh directory were missing. ¬†There are a couple options to solve this dilemma. ¬†Mine was to first get the sample schemas. ¬†You can retrieve them from a handy GitHub repository found <a href="https://github.com/oracle/db-sample-schemas">here</a>, maintained¬†by Gerald Venzl.</p> <p>I downloaded the entire demo scripts directory and then SCP&#8217;d them up to my AWS host.</p> <pre class="p1"><span class="s1">scp db-sample-schemas-master.zip delphix@&lt;IP Address&gt;:/home/oracle/.</span></pre> <p class="p1">Next, I extracted the files to the $ORACLE_HOME/demo directory.</p> <pre class="p1">unzip¬†db-sample-schemas-master.zip</pre> <p class="p1">Now the unzip will call the directory db-sample-schemas-master, which is fine with me, as I like to retain the previous one, (I&#8217;m a DBA, so have copies of data until I&#8217;m sure I don&#8217;t need it is my life.)</p> <pre class="p1">mv schema schema_kp mv¬†db-sample-schemas-master schema</pre> <p class="p1">With that change, everything is now as it should be, but the one thing you&#8217;ll find out, is that the download is for 12c and I&#8217;m alright with this, as the swingbench I&#8217;m using is expecting SH for 12c, too. ¬†Not that I expect any differences, but¬†as Jeff Smith was all too happy to remind me on Facebook, I&#8217;m using decade old version of Oracle on my image here.</p> <p class="p1">There are a lot of scripts in the Sales_History folder, but all you&#8217;ll need to run is the <strong>sh_main.sql </strong>from SQL*Plus as sysdba<strong>¬†</strong>to create the SH schema.</p> <p class="p1">There are parameter values¬†that you&#8217;ll enter to create the SH schema manually that you may assume are different than the prompt terms¬†and as I&#8217;ve seen very little written on it, (even after all these years of this existing) this may help others out:</p> <p class="p1"><strong>specify password for SH as parameter 1:</strong></p> <p class="p1">Self-explanatory- what password would you like SH user to have.</p> <p><strong>specify default tablespace for SH as parameter 2:</strong></p> <p class="p1">What tablespace do you want this created in? ¬†I chose Users, as this is just my play database.</p> <p><strong>specify temporary tablespace for SH as parameter 3:</strong></p> <p class="p1">Temp was mine and is the common value for this prompt.</p> <p><strong>specify password for SYS as parameter 4:</strong></p> <p class="p1">This is the password for SYSTEM, not SYS, btw.</p> <p><strong>specify directory path for the data files as parameter 5: ¬†</strong></p> <p class="p1">This is not Oracle datafiles, this is the path to your SH directory, (<strong>$ORACLE_HOME/demo/schemas/sales_history/</strong>) for access to the control files and dat files for SQL Loader. ¬†Remember to have a slash at the end of the path name.</p> <p class="p1"><strong>writeable directory path for the log files as parameter 6:</strong></p> <p class="p1">A directory for log files- ¬†I put this in the same directory and remember to use a slash at the end or you&#8217;re log files will have the previous directory as the beginning of the file name and save to one directory up.</p> <p class="p1"><strong>specify version as parameter 7:</strong></p> <p class="p1">This isn&#8217;t the version of the database, but the version of the sample schema- ¬†the one from Github is &#8220;v3&#8221;.</p> <p class="p1"><strong>specify connect string as parameter 8:</strong></p> <p class="p1">pretty clear, but the service or connect string for the database that the schema is being created in.</p> <h3 class="p1">Error Will Robinson, Error!</h3> <p class="p1">I then ran into some errors, but it was pretty easy to view the log and then the script and see why:</p> <pre class="p1"><span class="s1">SP2-0310: unable to open file "__SUB__CWD__/sales_history/psh_v3"</span></pre> <p class="p1">Well, the scripts, (<strong>psh_v3.sql, lsh_v3.sql and csh_v3.sql</strong>) called in the <strong>sh_main.sql</strong> is looking in the sales_history directory, so we need to get rid of the sub directory paths that don&#8217;t exist in the 11g environment.</p> <p class="p1">view the <strong>sh_main.sql</strong>, you&#8217;ll see three paths¬†to update. ¬†Below is an example of one section of the script with the section to be removed BOLDED:</p> <pre class="p1"><span class="s1">REM Post load operations</span> <span class="s1">REM =======================================================</span> <span class="s1">DEFINE vscript = <strong>_SUB_CWD_/sales_history/</strong>psh_&amp;vrs</span> <span class="s1">@&amp;vscript</span></pre> <p>The DEFINE will now look like the following so it looks in the sales_history directory if you haven&#8217;t been pointing to the $ORACLE_HOME/demo directory:</p> <pre class="p1"><span class="s1">DEFINE vscript = psh_&amp;vrs</span></pre> <p>Once you&#8217;ve saved your changes, you can simply re-run <strong>sh_main.sql</strong> again, as it does a drop schema on the sample schema before it does the create. ¬†If no other changes need to be made to your parameters, just execute sh_main.sql, if you need to change your values for the parameters entered, just quickest to exit from SQL*Plus and reconnect to unset the values.</p> <h3>Are We There Yet?</h3> <p>Verify that there weren&#8217;t any errors in your $RUN_HOME/sh_v3.log file and if all was successful, then connect as the SH user with SQL*Plus and check the schema:</p> <pre class="p1"><span class="s1">SQL&gt; select object_type, count(*) from user_objects</span> <span class="s1"><span class="Apple-converted-space">¬† </span>2<span class="Apple-converted-space">¬† </span>group by object_type;</span></pre> <pre class="p1"><span class="s1">OBJECT_TYPE <span class="Apple-converted-space">¬† ¬† ¬† </span>COUNT(*)</span> <span class="s1">------------------- ----------</span> <span class="s1">INDEX PARTITION<span class="Apple-converted-space">¬† ¬† </span>196</span> <span class="s1">TABLE PARTITION <span class="Apple-converted-space">¬† ¬† </span>56</span> <span class="s1">LOB <span class="Apple-converted-space">¬† ¬† </span>2</span> <span class="s1">DIMENSION <span class="Apple-converted-space">¬† ¬† </span>5</span> <span class="s1">MATERIALIZED VIEW <span class="Apple-converted-space">¬† </span>2</span> <span class="s1">INDEX <span class="Apple-converted-space">¬† ¬† </span>30</span> <span class="s1">VIEW <span class="Apple-converted-space">¬† ¬† </span>1</span> <span class="s1">TABLE <span class="Apple-converted-space">¬† ¬† </span>16</span></pre> <pre class="p1"><span class="s1">SQL&gt; select table_name, sum(num_rows) from user_tab_statistics</span> <span class="s1"><span class="Apple-converted-space">¬† </span>2<span class="Apple-converted-space">¬† </span>where table_name not like 'DR$%' --Dimensional Index Transformation</span> <span class="s1"><span class="Apple-converted-space">¬† </span>3<span class="Apple-converted-space">¬† </span>group by table_name</span> <span class="s1"><span class="Apple-converted-space">¬† </span>4<span class="Apple-converted-space">¬† </span>order by table_name;</span></pre> <pre class="p1"><span class="s1">TABLE_NAME <span class="Apple-converted-space">¬† ¬† ¬† </span>SUM(NUM_ROWS)</span> <span class="s1">------------------------------ -------------</span> <span class="s1">CAL_MONTH_SALES_MV <span class="Apple-converted-space">¬† </span>48</span> <span class="s1">CHANNELS <span class="Apple-converted-space">¬† </span>5</span> <span class="s1">COSTS <span class="Apple-converted-space">¬† ¬† ¬† </span>164224</span> <span class="s1">COUNTRIES <span lass="Apple-converted-space">¬† </span>23</span> <span class="s1">CUSTOMERS <span class="Apple-converted-space">¬† ¬† ¬† </span>55500</span> <span class="s1">FWEEK_PSCAT_SALES_MV <span class="Apple-converted-space">¬† ¬† ¬† </span>11266</span> <span class="s1">PRODUCTS <span class="Apple-converted-space">¬† </span>72</span> <span class="s1">PROMOTIONS 503</span> <span class="s1">SALES <span class="Apple-converted-space">¬† ¬† </span>1837686</span> <span class="s1">SALES_TRANSACTIONS_EXT <span class="Apple-converted-space">¬† ¬† </span>916039</span> <span class="s1">SUPPLEMENTARY_DEMOGRAPHICS 4500</span> <span class="s1">TIMES 1826</span></pre> <p>And now we&#8217;re ready to run Swingbench Sales History against our AWS instance to collect performance data. ¬†I&#8217;ll try to blog on Swingbench connections and data collection next time.</p> <p>See everyone at U<a href="http://utoug.org/event-2361959">TOUG for Spring Training Days on Monday, March 13th</a> and at the end of the week I&#8217;ll be in <a href="http://www.sqlsaturday.com/602/eventhome.aspx">Iceland at SQL Saturady #602!</a></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/" rel="tag">oracle</a>, <a href="http://dbakevlar.com/tag/sales-history/" rel="tag">Sales History</a>, <a href="http://dbakevlar.com/tag/sh-schema/" rel="tag">SH Schema</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/manually-adding-sales-history-sh-schema-11-2-0-4/&title=Manually Adding Sales History, (SH) Schema to 11.2.0.4"> <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/manually-adding-sales-history-sh-schema-11-2-0-4/"><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/manually-adding-sales-history-sh-schema-11-2-0-4/&title=Manually Adding Sales History, (SH) Schema to 11.2.0.4"><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/manually-adding-sales-history-sh-schema-11-2-0-4/&title=Manually Adding Sales History, (SH) Schema to 11.2.0.4"><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/manually-adding-sales-history-sh-schema-11-2-0-4/&title=Manually Adding Sales History, (SH) Schema to 11.2.0.4"><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/manually-adding-sales-history-sh-schema-11-2-0-4/#comments">2 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/2017/03/dba-necessary-cloud-part/" >Why the DBA is Necessary to the Cloud- Part I</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/give-them-the-friggin-ipad/" >Give them the Friggin' IPad</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/03/supporting-your-virtual-vms-post-ii-pc-and-vmimage-settings/" >Supporting Your Virtual VMs, Post II, PC and VM/Image Settings</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/raspberry-pi-controlled-airplane-launcher/" >Raspberry Pi Controlled Airplane Launcher</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/enterprise-manager-13c-webtier-could-not-be-started/" >Enterprise Manager 13c, "Webtier Could Not Be Started"</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/manually-adding-sales-history-sh-schema-11-2-0-4/">Manually Adding Sales History, (SH) Schema to 11.2.0.4</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" 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> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6512 Fri Mar 10 2017 15:59:09 GMT-0500 (EST) Parameters and Binds for your RESTful Services: RESULTSETs http://www.thatjeffsmith.com/archive/2017/03/parameters-and-binds-for-your-restful-services-resultsets/ <p>Yesterday I talked about how to <a href="http://www.thatjeffsmith.com/archive/2017/03/parameters-and-binds-for-your-restful-services/" target="_blank">grab the output returned from your stored procedure</a> when executing via Oracle REST Data Services.</p> <p>The example was:<br /> <em>INSERT a new record into a table. Return the new employee ID and the total number of employees in the table.</em></p> <p>So we just needed 2 parameters for our handler to catch the two integers returned, easy-peasy.</p> <p>But, what if we were going to return the entire record?</p> <p>So let&#8217;s write the stored procedure first, again not using my PL/SQL as anything other than the most basic of examples&#8230;</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="plsql"><pre class="de1"><span class="kw1">CREATE</span> <span class="kw1">OR</span> <span class="kw2">REPLACE</span> <span class="kw1">PROCEDURE</span> ADD_EMP2 <span class="br0">&#40;</span> P_EMP_NAME <span class="kw1">IN</span> SIMPLE_EMP<span class="sy0">.</span>name<span class="sy0">%</span><span class="kw1">TYPE</span><span class="sy0">,</span> P_EMP_SALARY <span class="kw1">IN</span> SIMPLE_EMP<span class="sy0">.</span>SALARY<span class="sy0">%</span><span class="kw1">TYPE</span><span class="sy0">,</span> P_OUT_EMP <span class="kw1">OUT</span> sys_refcursor<span class="sy0">,</span> P_OUT_TOTAL <span class="kw1">OUT</span> <span class="kw1">INTEGER</span> <span class="br0">&#41;</span> <span class="kw1">AS</span> NEW_ID <span class="kw1">INTEGER</span><span class="sy0">;</span> <span class="kw1">BEGIN</span> <span class="kw1">INSERT</span> <span class="kw1">INTO</span> SIMPLE_EMP <span class="br0">&#40;</span>name<span class="sy0">,</span> SALARY<span class="br0">&#41;</span> <span class="kw1">VALUES</span> <span class="br0">&#40;</span>P_EMP_NAME<span class="sy0">,</span> P_EMP_SALARY<span class="br0">&#41;</span> <span class="kw1">RETURN</span> id <span class="kw1">INTO</span> NEW_ID<span class="sy0">;</span> &nbsp; <span class="kw1">OPEN</span> P_OUT_EMP <span class="kw1">FOR</span> <span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> SIMPLE_EMP <span class="kw1">WHERE</span> ID <span class="sy0">=</span> NEW_ID<span class="sy0">;</span> &nbsp; <span class="kw1">SELECT</span> <span class="kw2">COUNT</span><span class="br0">&#40;</span>id<span class="br0">&#41;</span> <span class="kw1">INTO</span> P_OUT_TOTAL <span class="kw1">FROM</span> SIMPLE_EMP<span class="sy0">;</span> &nbsp; <span class="kw1">EXCEPTION</span> <span class="kw1">WHEN</span> <span class="kw1">OTHERS</span> <span class="kw1">THEN</span> HTP<span class="sy0">.</span>print<span class="br0">&#40;</span><span class="kw1">SQLERRM</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw1">END</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div> <p>Now we need to create our RESTful Services Template (AddGetEmp) and Handler (POST).</p> <p>So the URI Module is &#8216;/rpc&#8217; and the URI Pattern is &#8216;AddGetEmp&#8217;</p> <p>The code behind the RESTful Service is very basic, same as before, except now we need to &#8216;catch&#8217; the ID and refcursor.</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="plsql"><pre class="de1"><span class="kw1">BEGIN</span> ADD_EMP2<span class="br0">&#40;</span>P_EMP_NAME <span class="sy0">=&gt;</span> <span class="sy0">:</span>P_EMP_NAME<span class="sy0">,</span> P_EMP_SALARY <span class="sy0">=&gt;</span> <span class="sy0">:</span>P_EMP_SALARY<span class="sy0">,</span> P_OUT_EMP <span class="sy0">=&gt;</span> <span class="sy0">:</span>NEW_RECORD<span class="sy0">,</span> P_OUT_TOTAL <span class="sy0">=&gt;</span> <span class="sy0">:</span>TOTAL<span class="br0">&#41;</span><span class="sy0">;</span> <span class="kw1">COMMIT</span><span class="sy0">;</span> <span class="kw1">END</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div> <p>And now we need to define the parameters, one for :NEW_RECORD, and one for :TOTAL.</p> <div id="attachment_6072" style="width: 676px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/parameter_resultset.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/parameter_resultset.png" alt="oracle rest data services module parameter resultset" width="666" height="263" class="size-full wp-image-6072" /></a><p class="wp-caption-text">Ding-ding-ding!</p></div> <p>Now we SAVE the definition &#8211; don&#8217;t forget this step or your testing will result in some very nice and frustrating 404&#8217;s (also not forgetting to check the &#8216;publish&#8217; box when creating the module to begin with!)</p> <div id="attachment_6073" style="width: 907px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/parameter_resultset2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/parameter_resultset2.png" alt="REST client POST to ORDS to insert new record and get back employee record" width="897" height="628" class="size-full wp-image-6073" /></a><p class="wp-caption-text">My total number of employees and the employee I just created.</p></div> <p>Now I&#8217;ll right click to export my Module to PL/SQL and share the entire thing with you:</p> <div id="attachment_6074" style="width: 357px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/export_module.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/export_module.png" alt="sql developer export rest module" width="347" height="249" class="size-full wp-image-6074" /></a><p class="wp-caption-text">Generates PL/SQL block to create this module. Good thing to tie into your source code repository for sure.</p></div> <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="plsql"><pre class="de1"><span class="co1">-- Generated by Oracle SQL Developer REST Data Services 4.2.0.17.065.2202</span> <span class="co1">-- Exported REST Definitions from ORDS Schema Version 3.0.9.348.07.16</span> <span class="co1">-- Schema: HR Date: Fri Mar 10 09:37:59 EST 2017</span> <span class="co1">--</span> <span class="kw1">BEGIN</span> ORDS<span class="sy0">.</span>ENABLE_SCHEMA<span class="br0">&#40;</span> p_enabled <span class="sy0">=&gt;</span> <span class="kw1">TRUE</span><span class="sy0">,</span> p_schema <span class="sy0">=&gt;</span> <span class="st0">'HR'</span><span class="sy0">,</span> p_url_mapping_type <span class="sy0">=&gt;</span> <span class="st0">'BASE_PATH'</span><span class="sy0">,</span> p_url_mapping_pattern <span class="sy0">=&gt;</span> <span class="st0">'peeps'</span><span class="sy0">,</span> p_auto_rest_auth <span class="sy0">=&gt;</span> <span class="kw1">FALSE</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; ORDS<span class="sy0">.</span>DEFINE_MODULE<span class="br0">&#40;</span> p_module_name <span class="sy0">=&gt;</span> <span class="st0">'rpc'</span><span class="sy0">,</span> p_base_path <span class="sy0">=&gt;</span> <span class="st0">'/rpc/'</span><span class="sy0">,</span> p_items_per_page <span class="sy0">=&gt;</span> <span class="nu0">25</span><span class="sy0">,</span> p_status <span class="sy0">=&gt;</span> <span class="st0">'PUBLISHED'</span><span class="br0">&#41;</span><span class="sy0">;</span> ORDS<span class="sy0">.</span>DEFINE_TEMPLATE<span class="br0">&#40;</span> p_module_name <span class="sy0">=&gt;</span> <span class="st0">'rpc'</span><span class="sy0">,</span> p_pattern <span class="sy0">=&gt;</span> <span class="st0">'AddEmp'</span><span class="sy0">,</span> p_priority <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span> p_etag_type <span class="sy0">=&gt;</span> <span class="st0">'HASH'</span><span class="sy0">,</span> p_etag_query <span class="sy0">=&gt;</span> <span class="kw1">NULL</span><span class="br0">&#41;</span><span class="sy0">;</span> ORDS<span class="sy0">.</span>DEFINE_HANDLER<span class="br0">&#40;</span> p_module_name <span class="sy0">=&gt;</span> <span class="st0">'rpc'</span><span class="sy0">,</span> p_pattern <span class="sy0">=&gt;</span> <span class="st0">'AddEmp'</span><span class="sy0">,</span> p_method <span class="sy0">=&gt;</span> <span class="st0">'POST'</span><span class="sy0">,</span> p_source_type <span class="sy0">=&gt;</span> <span class="st0">'plsql/block'</span><span class="sy0">,</span> p_items_per_page <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span> p_mimes_allowed <span class="sy0">=&gt;</span> <span class="st0">'application/json'</span><span class="sy0">,</span> p_source <span class="sy0">=&gt;</span> <span class="st0">'declare -- new_empID NUMBER; BEGIN ADD_EMP(P_EMP_NAME =&gt; :P_EMP_NAME, P_EMP_SALARY =&gt; :P_EMP_SALARY, P_OUT_ID =&gt; :NEW_EMPID, P_OUT_TOTAL =&gt; :TOTAL); commit; END;'</span> <span class="br0">&#41;</span><span class="sy0">;</span> ORDS<span class="sy0">.</span>DEFINE_PARAMETER<span class="br0">&#40;</span> p_module_name <span class="sy0">=&gt;</span> <span class="st0">'rpc'</span><span class="sy0">,</span> p_pattern <span class="sy0">=&gt;</span> <span class="st0">'AddEmp'</span><span class="sy0">,</span> p_method <span class="sy0">=&gt;</span> <span class="st0">'POST'</span><span class="sy0">,</span> p_name <span class="sy0">=&gt;</span> <span class="st0">'ID'</span><span class="sy0">,</span> p_bind_variable_name <span class="sy0">=&gt;</span> <span class="st0">'new_empID'</span><span class="sy0">,</span> p_source_type <span class="sy0">=&gt;</span> <span class="st0">'RESPONSE'</span><span class="sy0">,</span> p_param_type <span class="sy0">=&gt;</span> <span class="st0">'INT'</span><span class="sy0">,</span> p_access_method <span class="sy0">=&gt;</span> <span class="st0">'OUT'</span><span class="br0">&#41;</span><span class="sy0">;</span> ORDS<span class="sy0">.</span>DEFINE_PARAMETER<span class="br0">&#40;</span> p_module_name <span class="sy0">=&gt;</span> <span class="st0">'rpc'</span><span class="sy0">,</span> p_pattern <span class="sy0">=&gt;</span> <span class="st0">'AddEmp'</span><span class="sy0">,</span> p_method <span class="sy0">=&gt;</span> <span class="st0">'POST'</span><span class="sy0">,</span> p_name <span class="sy0">=&gt;</span> <span class="st0">'NumofEmps'</span><span class="sy0">,</span> p_bind_variable_name <span class="sy0">=&gt;</span> <span class="st0">'TOTAL'</span><span class="sy0">,</span> p_source_type <span class="sy0">=&gt;</span> <span class="st0">'RESPONSE'</span><span class="sy0">,</span> p_param_type <span class="sy0">=&gt;</span> <span class="st0">'INT'</span><span class="sy0">,</span> p_access_method <span class="sy0">=&gt;</span> <span class="st0">'OUT'</span><span class="br0">&#41;</span><span class="sy0">;</span> ORDS<span class="sy0">.</span>DEFINE_TEMPLATE<span class="br0">&#40;</span> p_module_name <span class="sy0">=&gt;</span> <span class="st0">'rpc'</span><span class="sy0">,</span> p_pattern <span class="sy0">=&gt;</span> <span class="st0">'AddGetEmp'</span><span class="sy0">,</span> p_priority <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span> p_etag_type <span class="sy0">=&gt;</span> <span class="st0">'HASH'</span><span class="sy0">,</span> p_etag_query <span class="sy0">=&gt;</span> <span class="kw1">NULL</span><span class="br0">&#41;</span><span class="sy0">;</span> ORDS<span class="sy0">.</span>DEFINE_HANDLER<span class="br0">&#40;</span> p_module_name <span class="sy0">=&gt;</span> <span class="st0">'rpc'</span><span class="sy0">,</span> p_pattern <span class="sy0">=&gt;</span> <span class="st0">'AddGetEmp'</span><span class="sy0">,</span> p_method <span class="sy0">=&gt;</span> <span class="st0">'POST'</span><span class="sy0">,</span> p_source_type <span class="sy0">=&gt;</span> <span class="st0">'plsql/block'</span><span class="sy0">,</span> p_items_per_page <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span> p_mimes_allowed <span class="sy0">=&gt;</span> <span class="st0">'application/json'</span><span class="sy0">,</span> p_source <span class="sy0">=&gt;</span> <span class="st0">'begin ADD_EMP2(P_EMP_NAME =&gt; :P_EMP_NAME, P_EMP_SALARY =&gt; :P_EMP_SALARY, P_OUT_EMP =&gt; :NEW_RECORD, P_OUT_TOTAL =&gt; :TOTAL); commit; END;'</span> <span class="br0">&#41;</span><span class="sy0">;</span> ORDS<span class="sy0">.</span>DEFINE_PARAMETER<span class="br0">&#40;</span> p_module_name <span class="sy0">=&gt;</span> <span class="st0">'rpc'</span><span class="sy0">,</span> p_pattern <span class="sy0">=&gt;</span> <span class="st0">'AddGetEmp'</span><span class="sy0">,</span> p_method <span class="sy0">=&gt;</span> <span class="st0">'POST'</span><span class="sy0">,</span> p_name <span class="sy0">=&gt;</span> <span class="st0">'EMP'</span><span class="sy0">,</span> p_bind_variable_name <span class="sy0">=&gt;</span> <span class="st0">'NEW_RECORD'</span><span class="sy0">,</span> p_source_type <span class="sy0">=&gt;</span> <span class="st0">'RESPONSE'</span><span class="sy0">,</span> p_param_type <span class="sy0">=&gt;</span> <span class="st0">'RESULTSET'</span><span class="sy0">,</span> p_access_method <span class="sy0">=&gt;</span> <span class="st0">'OUT'</span><span class="br0">&#41;</span><span class="sy0">;</span> ORDS<span class="sy0">.</span>DEFINE_PARAMETER<span class="br0">&#40;</span> p_module_name <span class="sy0">=&gt;</span> <span class="st0">'rpc'</span><span class="sy0">,</span> p_pattern <span class="sy0">=&gt;</span> <span class="st0">'AddGetEmp'</span><span class="sy0">,</span> p_method <span class="sy0">=&gt;</span> <span class="st0">'POST'</span><span class="sy0">,</span> p_name <span class="sy0">=&gt;</span> <span class="st0">'NumOfEmps'</span><span class="sy0">,</span> p_bind_variable_name <span class="sy0">=&gt;</span> <span class="st0">'TOTAL'</span><span class="sy0">,</span> p_source_type <span class="sy0">=&gt;</span> <span class="st0">'RESPONSE'</span><span class="sy0">,</span> p_param_type <span class="sy0">=&gt;</span> <span class="st0">'INT'</span><span class="sy0">,</span> p_access_method <span class="sy0">=&gt;</span> <span class="st0">'OUT'</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; &nbsp; <span class="kw1">COMMIT</span><span class="sy0">;</span> <span class="kw1">END</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6071 Fri Mar 10 2017 09:43:04 GMT-0500 (EST) Oracle 12c Release 2 (12.2.0.1.0) Grid Infrastructure Upgrade http://gavinsoorma.com/2017/03/oracle-12c-release-2-12-2-0-1-0-grid-infrastructure-upgrade/ <p>I recently performed an upgrade of an Oracle 12c Release 1 (12.1.0.2) Grid Infrastructure environment hosted on a RAC Virtual Box environment on my laptop to the latest release 12c Release 2 12.2.0.1.0 version.</p> <p>Here are some points to be noted related to the upgrade process:</p> <ul> <ul> <li>The Grid Infrastructure 12c Release 2 (12.2) software is now available as a <strong>single image file for direct download and installation</strong>. This greatly simplifies and enables a much quicker installation of the Grid Infrastructure software.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>We just have to extract the image file <strong>linuxx64_12201_grid_home.zip</strong> into an empty directory where we want the Grid home to be located.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>Once the software has been extracted we have to run the <strong>gridSetup.sh</strong> script which will launch the installer where we can perform both an initial install as well as an upgrade.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>We need to have about <strong>33 GB of free disk space in the ASM disk groups</strong> for the upgrade process.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>The mount point which hosts the Grid Infrastructure home needs to have at least <strong>12 GB of free disk space</strong>.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>It is now<strong> mandatory to store the Oracle Clusterware files like the Cluster Registry (OCR) and Voting Disks on ASM</strong> and we cannot locate these files now on any kind of other shared storage system.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>We have to install a <strong>mandatory patch 21255373</strong> to the Grid Infrastructure software home.¬† We will see that in this case a number of prerequisite checks have failed related to memory (now needs <strong>8 GB minimum RAM</strong> on each node ) as well as other checks related to swap size, NTP and resolv.conf &#8211; since this is test Virtual Box environment we can ignore those and continue with the upgrade &#8211; however we cannot ignore the mandatory patch 21255373 which needs to be applied to the existing 12.1.0.2 Grid Infrastructure home.</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>In order to install the patch, we have to also download the opatch patch 6880880 for Oracle 12.2.0.1.0 (opatch 12.2.0.1.8).</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>When we run opatchauto to apply the patch 21255373, we get an error <strong><span class="skimlinks-unlinked">java.text.ParseException</span>: Unparseable date</strong>.¬† This is because time zone TZ entry AWST (Australian Western Standard Time)¬† is added into $ORACLE_HOME/inventory/ContentsXML/<span class="skimlinks-unlinked">comps.xml and the opatch is using $ORACLE_HOME/jdk/jre, which is version 1.6. Java 1.6 is not able read the TZ entry AWST. We can ignore the error and continue with¬† the patch application &#8211; but after the patch has been applied, <strong>we have to change all the occurrences of string &#8220;AWST&#8221; in the comps.xml file to &#8220;WST&#8221;</strong> &#8211; otherwise even though we have applied the patch, the command opatch lsinventory will not show that the patch has been applied until the date format string in the comps.xml is changed as mentioned earlier.</span><strong><br /> </strong></li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>Upgrade failed at 46% in the phase Execute Root Scripts. Ran the command <strong>crsctl stop crs -f</strong> as root on each node and clicked on the Retry button and the upgrade then continued without any error</li> </ul> </ul> <p>&nbsp;</p> <ul> <ul> <li>At the end of the upgrade, the Cluster Verification Utility fails because it checks for NTP configuration appropriate for an Oracle RAC environment. NTP is not configured on this Virtual Box environment so we can ignore the error</li> </ul> </ul> <p>&nbsp;</p> <p>&nbsp;</p> <p>Here are some screen shots captured while the 12c Release 2 Grid Infrastructure upgrade was in progress&#8230;..</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi1.jpg" rel="attachment wp-att-7431"><img class="aligncenter size-full wp-image-7431" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi1.jpg" alt="gi1" width="606" height="476" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi1-300x236.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi1.jpg 606w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi1-300x236@2x.jpg 600w" sizes="(max-width: 606px) 100vw, 606px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi2.jpg" rel="attachment wp-att-7432"><img class="aligncenter size-full wp-image-7432" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi2.jpg" alt="gi2" width="554" height="419" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi2-300x227.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi2.jpg 554w" sizes="(max-width: 554px) 100vw, 554px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi3.jpg" rel="attachment wp-att-7433"><img class="aligncenter size-full wp-image-7433" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi3.jpg" alt="gi3" width="798" height="597" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi3-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi3-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi3-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi3.jpg 798w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi3-300x224@2x.jpg 600w" sizes="(max-width: 798px) 100vw, 798px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi4.jpg" rel="attachment wp-att-7434"><img class="aligncenter size-full wp-image-7434" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi4.jpg" alt="gi4" width="804" height="598" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi4-300x223.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi4-768x571.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi4.jpg 804w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi4-300x223@2x.jpg 600w" sizes="(max-width: 804px) 100vw, 804px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi5.jpg" rel="attachment wp-att-7435"><img class="aligncenter size-full wp-image-7435" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi5.jpg" alt="gi5" width="798" height="598" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi5-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi5-768x576.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi5-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi5.jpg 798w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi5-300x225@2x.jpg 600w" sizes="(max-width: 798px) 100vw, 798px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi6.jpg" rel="attachment wp-att-7436"><img class="aligncenter size-full wp-image-7436" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi6.jpg" alt="gi6" width="800" height="599" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi6-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi6-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi6-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi6.jpg 800w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi6-300x225@2x.jpg 600w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi7.jpg" rel="attachment wp-att-7437"><img class="aligncenter size-full wp-image-7437" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi7.jpg" alt="gi7" width="802" height="600" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi7-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi7-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi7-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi7.jpg 802w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi7-300x224@2x.jpg 600w" sizes="(max-width: 802px) 100vw, 802px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi8.jpg" rel="attachment wp-att-7438"><img class="aligncenter size-full wp-image-7438" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi8.jpg" alt="gi8" width="797" height="600" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi8-300x226.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi8-768x578.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi8.jpg 797w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi8-300x226@2x.jpg 600w" sizes="(max-width: 797px) 100vw, 797px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi9.jpg" rel="attachment wp-att-7439"><img class="aligncenter wp-image-7439" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi9.jpg" alt="gi9" width="987" height="327" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi9-300x99.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi9-768x254.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi9-1024x339.jpg 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi9.jpg 1322w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi9-300x99@2x.jpg 600w" sizes="(max-width: 987px) 100vw, 987px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi10.jpg" rel="attachment wp-att-7440"><img class="aligncenter size-full wp-image-7440" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi10.jpg" alt="gi10" width="953" height="524" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi10-300x165.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi10-768x422.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi10.jpg 953w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi10-300x165@2x.jpg 600w" sizes="(max-width: 953px) 100vw, 953px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi11.jpg" rel="attachment wp-att-7441"><img class="aligncenter size-full wp-image-7441" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi11.jpg" alt="gi11" width="802" height="602" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi11-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi11-768x576.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi11-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi11.jpg 802w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi11-300x225@2x.jpg 600w" sizes="(max-width: 802px) 100vw, 802px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi12.jpg" rel="attachment wp-att-7442"><img class="aligncenter size-full wp-image-7442" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi12.jpg" alt="gi12" width="804" height="601" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi12-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi12-768x574.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi12.jpg 804w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi12-300x224@2x.jpg 600w" sizes="(max-width: 804px) 100vw, 804px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi13.jpg" rel="attachment wp-att-7443"><img class="aligncenter size-full wp-image-7443" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi13.jpg" alt="gi13" width="799" height="597" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi13-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi13-768x574.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi13.jpg 799w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi13-300x224@2x.jpg 600w" sizes="(max-width: 799px) 100vw, 799px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi14.jpg" rel="attachment wp-att-7444"><img class="aligncenter size-full wp-image-7444" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi14.jpg" alt="gi14" width="800" height="604" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi14-300x227.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi14-768x580.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi14.jpg 800w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi14-300x227@2x.jpg 600w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi15.jpg" rel="attachment wp-att-7445"><img class="aligncenter size-full wp-image-7445" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi15.jpg" alt="gi15" width="801" height="600" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi15-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi15-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi15-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi15.jpg 801w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi15-300x225@2x.jpg 600w" sizes="(max-width: 801px) 100vw, 801px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi16.jpg" rel="attachment wp-att-7446"><img class="aligncenter size-full wp-image-7446" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi16.jpg" alt="gi16" width="800" height="598" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi16-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi16-768x574.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi16.jpg 800w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi16-300x224@2x.jpg 600w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi17.jpg" rel="attachment wp-att-7447"><img class="aligncenter size-full wp-image-7447" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi17.jpg" alt="gi17" width="801" height="599" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi17-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi17-768x574.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi17-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi17.jpg 801w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi17-300x224@2x.jpg 600w" sizes="(max-width: 801px) 100vw, 801px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi18.jpg" rel="attachment wp-att-7448"><img class="aligncenter size-full wp-image-7448" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi18.jpg" alt="gi18" width="800" height="602" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi18-300x226.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi18-768x578.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi18.jpg 800w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi18-300x226@2x.jpg 600w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi19.jpg" rel="attachment wp-att-7449"><img class="aligncenter size-full wp-image-7449" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi19.jpg" alt="gi19" width="1042" height="362" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi19-300x104.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi19-768x267.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi19-1024x356.jpg 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi19.jpg 1042w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi19-300x104@2x.jpg 600w" sizes="(max-width: 1042px) 100vw, 1042px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Note:</p> <p>Change all occurrences of &#8220;AWST&#8221; to &#8220;WST&#8221; in comps.xml file</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi22.jpg" rel="attachment wp-att-7450"><img class="aligncenter size-full wp-image-7450" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi22.jpg" alt="gi22" width="649" height="157" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi22-300x73.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi22.jpg 649w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi22-300x73@2x.jpg 600w" sizes="(max-width: 649px) 100vw, 649px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Now opatch lsinventory command will show that the patch 21255373 has been applied.</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi23.jpg" rel="attachment wp-att-7451"><img class="aligncenter size-full wp-image-7451" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi23.jpg" alt="gi23" width="640" height="176" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi23-300x83.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi23.jpg 640w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi23-300x83@2x.jpg 600w" sizes="(max-width: 640px) 100vw, 640px" /></a> <a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi24.jpg" rel="attachment wp-att-7452"><img class="aligncenter size-full wp-image-7452" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi24.jpg" alt="gi24" width="613" height="244" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi24-300x119.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi24.jpg 613w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi24-300x119@2x.jpg 600w" sizes="(max-width: 613px) 100vw, 613px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi25.jpg" rel="attachment wp-att-7453"><img class="aligncenter size-full wp-image-7453" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi25.jpg" alt="gi25" width="806" height="600" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi25-300x223.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi25-768x572.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi25.jpg 806w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi25-300x223@2x.jpg 600w" sizes="(max-width: 806px) 100vw, 806px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi26.jpg" rel="attachment wp-att-7454"><img class="aligncenter size-full wp-image-7454" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi26.jpg" alt="gi26" width="802" height="604" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi26-300x226.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi26-768x578.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi26.jpg 802w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi26-300x226@2x.jpg 600w" sizes="(max-width: 802px) 100vw, 802px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi27.jpg" rel="attachment wp-att-7455"><img class="aligncenter size-full wp-image-7455" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi27.jpg" alt="gi27" width="801" height="598" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi27-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi27-768x573.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi27.jpg 801w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi27-300x224@2x.jpg 600w" sizes="(max-width: 801px) 100vw, 801px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi28.jpg" rel="attachment wp-att-7456"><img class="aligncenter size-full wp-image-7456" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi28.jpg" alt="gi28" width="804" height="599" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi28-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi28-768x572.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi28.jpg 804w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi28-300x224@2x.jpg 600w" sizes="(max-width: 804px) 100vw, 804px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi29.jpg" rel="attachment wp-att-7457"><img class="aligncenter size-full wp-image-7457" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi29.jpg" alt="gi29" width="805" height="602" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi29-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi29-768x574.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi29-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi29.jpg 805w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi29-300x224@2x.jpg 600w" sizes="(max-width: 805px) 100vw, 805px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi30.jpg" rel="attachment wp-att-7458"><img class="aligncenter size-full wp-image-7458" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi30.jpg" alt="gi30" width="799" height="601" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi30-300x226.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi30-768x578.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi30.jpg 799w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi30-300x226@2x.jpg 600w" sizes="(max-width: 799px) 100vw, 799px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi31.jpg" rel="attachment wp-att-7459"><img class="aligncenter size-full wp-image-7459" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi31.jpg" alt="gi31" width="794" height="595" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi31-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi31-768x576.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi31-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi31.jpg 794w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi31-300x225@2x.jpg 600w" sizes="(max-width: 794px) 100vw, 794px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi32.jpg" rel="attachment wp-att-7460"><img class="aligncenter size-full wp-image-7460" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi32.jpg" alt="gi32" width="804" height="599" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi32-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi32-768x572.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi32.jpg 804w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi32-300x224@2x.jpg 600w" sizes="(max-width: 804px) 100vw, 804px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi33.jpg" rel="attachment wp-att-7461"><img class="aligncenter size-full wp-image-7461" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi33.jpg" alt="gi33" width="792" height="593" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi33-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi33-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi33-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi33.jpg 792w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi33-300x225@2x.jpg 600w" sizes="(max-width: 792px) 100vw, 792px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi34.jpg" rel="attachment wp-att-7462"><img class="aligncenter size-full wp-image-7462" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi34.jpg" alt="gi34" width="802" height="600" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi34-300x224.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi34-768x575.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi34-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi34.jpg 802w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi34-300x224@2x.jpg 600w" sizes="(max-width: 802px) 100vw, 802px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi35.jpg" rel="attachment wp-att-7463"><img class="aligncenter size-full wp-image-7463" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi35.jpg" alt="gi35" width="796" height="597" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi35-300x225.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi35-768x576.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi35-627x470.jpg 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi35.jpg 796w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi35-300x225@2x.jpg 600w" sizes="(max-width: 796px) 100vw, 796px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi36.jpg" rel="attachment wp-att-7464"><img class="aligncenter size-full wp-image-7464" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi36.jpg" alt="gi36" width="795" height="599" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi36-300x226.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi36-768x579.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi36.jpg 795w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi36-300x226@2x.jpg 600w" sizes="(max-width: 795px) 100vw, 795px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/gi37.jpg" rel="attachment wp-att-7465"><img class="aligncenter size-full wp-image-7465" src="http://gavinsoorma.com/wp-content/uploads/2017/03/gi37.jpg" alt="gi37" width="770" height="310" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/gi37-300x121.jpg 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi37-768x309.jpg 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi37.jpg 770w, http://gavinsoorma.com/wp-content/uploads/2017/03/gi37-300x121@2x.jpg 600w" sizes="(max-width: 770px) 100vw, 770px" /></a></p> Gavin Soorma http://gavinsoorma.com/?p=7466 Fri Mar 10 2017 08:51:52 GMT-0500 (EST) Oracle Database 12c Release 2 (12.2) : Default APEX Installation Gone! http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/PrCah1Q6Pfw/ <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&#8217;m a fan of <a href="http://www.oracle.com/technetwork/developer-tools/apex/downloads/download-085147.html">APEX</a>, but I am not a fan of the shared installation used in Oracle Database 12.1. I&#8217;m sure it is great for some people, but not for me. I prefer to have APEX installed locally in the PDB, which prompted this <a href="/articles/12c/multitenant-uninstall-apex-from-the-cdb-12cr1">article</a>.</p> <p>Fast forward to Oracle Database 12c Release 2 (12.2) and APEX is no longer installed by default. It&#8217;s still shipped with the software, see $ORACLE_HOME/apex (see update), but not installed. I am conflicted about this&#8230;</p> <ul> <li>On the one hand this is great because I don&#8217;t have to worry about removing the shared APEX installation¬†before installing it into the PDB.</li> <li>On the other hand this means people have to make an active choice to install APEX, which not everyone will do. That&#8217;s a pity. In addition to the tool itself, there is some useful APIs that come with it, like <a href="https://oracle-base.com/articles/misc/apex_web_service-consuming-soap-and-rest-web-services">APEX_WEB_SERVICE</a>¬†and <a href="/articles/misc/apex_json-package-generate-and-parse-json-documents-in-oracle">APEX_JSON</a>. You don&#8217;t really need the later in 12.2 as you have lots of <a href="/articles/12c/json-support-in-oracle-database-12cr2">new JSON support</a>, but it&#8217;s good to have for backwards compatibility.</li> </ul> <p>So just remember you have an extra job to do after you&#8217;ve installed your database, which to install the latest version of APEX. <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><strong>Update</strong>: As per comment from <a href="http://joelkallman.blogspot.com">Joel Kallman</a>,¬†always <a href="http://www.oracle.com/technetwork/developer-tools/apex/downloads/download-085147.html">download the latest¬†version</a> and install in the PDB locally, not in the root!</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/03/10/oracle-database-12c-release-2-12-2-default-apex-installation-gone/">Oracle Database 12c Release 2 (12.2) : Default APEX Installation Gone!</a> was first posted on March 10, 2017 at 2:49 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/PrCah1Q6Pfw" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=6960 Fri Mar 10 2017 08:49:55 GMT-0500 (EST) Deploying Oracle E-Business Suite Web Services https://www.integrigy.com/security-resources/deploying-oracle-e-business-suite-web-services <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 third 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 services are physically deployed differently depending on whether they are defined using Representational State Transfer (REST) or Simple Object Access Protocol (SOAP).&nbsp; Logically, however, both REST and SOAP web services are deployed from within the Integrated SOA Gateway (ISG). Refer to the E-Business Suite‚Äôs documentation for details, but from within the Integrated SOA Gateway, users can deploy web services by locating the particular web service and then clicking on the "Deploy" button.</p> <p style="margin-left: 40px;"><img alt="" src="/files/images/10March2017graphic.jpeg" style="width: 480px; height: 176px;"></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="an9b1i9t09" href="file://localhost/node/543" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security ‚Äď Integrigy Whitepaper</a></li> <li><a data-jsb_prepared="dv7j51sti5" href="file://localhost/node/534" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security ‚Äď Integrigy Webinar</a></li> <li><a data-jsb_prepared="d3ptha08fu" 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 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 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 546 at https://www.integrigy.com Fri Mar 10 2017 07:00:00 GMT-0500 (EST) Run a Spring Cloud Task from Pivotal Cloud Foundry using Cloud Foundry Tasks http://feedproxy.google.com/~r/blogspot/PEqWE/~3/i7uTzcesapo/run-spring-cloud-task-from-pivotal.html Recently we announced Spring Cloud Task under the umbrella of Spring Cloud through the following <a href="https://spring.io/blog/2016/01/27/introducing-spring-cloud-task" target="_blank">blog</a> entry. &nbsp;In the post below I am going to show you how you would create a Cloud Foundry Task that can invoke this Spring Cloud Task itself.<br /><br />Spring Cloud Task allows a user to develop and run short lived microservices using Spring Cloud and run them locally, in the cloud, even on Spring Cloud Data Flow. In this example we will run it in the cloud using Pivotal Cloud Foundry (PWS instance <a href="http://run.pivotal.io/">run.pivotal.io</a>). For more information on this follow the link below.<br /><br /><a href="https://cloud.spring.io/spring-cloud-task/">https://cloud.spring.io/spring-cloud-task/</a><br /><br />For more information on Cloud Foundry Tasks follow the link below<br /><br /><a href="https://docs.cloudfoundry.org/devguide/using-tasks.html">https://docs.cloudfoundry.org/devguide/using-tasks.html</a><br /><br /><b>Steps</b><br /><br /><span style="color: #e69138;">Note: This demo assumes you are already logged into PCF you can confirm that using a command as follows</span><br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/temp$ <b>cf target</b></span><br /><span style="color: #3d85c6;">API endpoint: &nbsp; https://api.run.pivotal.io</span><br /><span style="color: #3d85c6;">API version: &nbsp; &nbsp;2.75.0</span><br /><span style="color: #3d85c6;">User: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; papicella@pivotal.io</span><br /><span style="color: #3d85c6;">Org: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;apples-pivotal-org</span><br /><span style="color: #3d85c6;">Space: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;development</span><br /><br />Also ensure your using the correct version of CF CLI which at the time of this blog was as follows you will need at least that version.<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/temp$ cf --version</span><br /><span style="color: #3d85c6;">cf version 6.25.0+787326d95.2017-02-28</span><br /><br />You will also need an instance of Pivotal Cloud Foundry which supports Tasks within the Applications Manager UI which Pivotal Web Services (PWS) does<br /><br />1. Clone the simple Spring Cloud Task as follows<br /><br /><b>$ git clone&nbsp;https://github.com/papicella/SpringCloudTaskTodaysDate.git</b><br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/temp$ <b>git clone https://github.com/papicella/SpringCloudTaskTodaysDate.git</b></span><br /><span style="color: #3d85c6;">Cloning into 'SpringCloudTaskTodaysDate'...</span><br /><span style="color: #3d85c6;">remote: Counting objects: 19, done.</span><br /><span style="color: #3d85c6;">remote: Compressing objects: 100% (12/12), done.</span><br /><span style="color: #3d85c6;">remote: Total 19 (delta 0), reused 19 (delta 0), pack-reused 0</span><br /><span style="color: #3d85c6;">Unpacking objects: 100% (19/19), done.</span><br /><br />2. Change into SpringCloudTaskTodaysDate directory<br /><br />3. If you look at the class "<b>pas.au.pivotal.pa.sct.demo.SpringCloudTaskTodaysDateApplication</b>" you will see it's just a Spring Boot application that has an annotation "@EnableTask".&nbsp;As long as Spring Cloud Task is on the classpath any Spring Boot application with @EnableTask will record the start and finish of the boot application.<br /><br />4. Package the application using "<b>mvn package</b>"<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/temp/SpringCloudTaskTodaysDate$ mvn package</span><br /><span style="color: #3d85c6;">[INFO] Scanning for projects...</span><br /><span style="color: #3d85c6;">Downloading: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-task-dependencies/1.2.0.BUILD-SNAPSHOT/maven-metadata.xml</span><br /><span style="color: #3d85c6;">Downloaded: https://repo.spring.io/snapshot/org/springframework/cloud/spring-cloud-task-dependencies/1.2.0.BUILD-SNAPSHOT/maven-metadata.xml (809 B at 0.6 KB/sec)</span><br /><span style="color: #3d85c6;">[INFO]</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">..</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">[INFO] Building jar: /Users/pasapicella/temp/SpringCloudTaskTodaysDate/target/springcloudtasktodaysdate-0.0.1-SNAPSHOT.jar</span><br /><span style="color: #3d85c6;">[INFO]</span><br /><span style="color: #3d85c6;">[INFO] --- spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) @ springcloudtasktodaysdate ---</span><br /><span style="color: #3d85c6;">[INFO] ------------------------------------------------------------------------</span><br /><span style="color: #3d85c6;">[INFO] BUILD SUCCESS</span><br /><span style="color: #3d85c6;">[INFO] ------------------------------------------------------------------------</span><br /><span style="color: #3d85c6;">[INFO] Total time: 10.621 s</span><br /><span style="color: #3d85c6;">[INFO] Finished at: 2017-03-10T18:51:15+11:00</span><br /><span style="color: #3d85c6;">[INFO] Final Memory: 29M/199M</span><br /><span style="color: #3d85c6;">[INFO] ------------------------------------------------------------------------</span><br /><br />5. &nbsp;Push the application as shown below<br /><br /><b>$ cf push springcloudtask-date --no-route --health-check-type none -p ./target/springcloudtasktodaysdate-0.0.1-SNAPSHOT.jar -m 512m</b><br /><br /><u>** Output **</u><br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/temp/SpringCloudTaskTodaysDate$ cf push springcloudtask-date --no-route --health-check-type none -p ./target/springcloudtasktodaysdate-0.0.1-SNAPSHOT.jar -m 512m</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Creating app springcloud-task-date in org apples-pivotal-org / 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;">App springcloud-task-date is a worker, skipping route creation</span><br /><span style="color: #3d85c6;">Uploading springcloud-task-date...</span><br /><span style="color: #3d85c6;">Uploading app files from: /var/folders/c3/27vscm613fjb6g8f5jmc2x_w0000gp/T/unzipped-app069139431</span><br /><span style="color: #3d85c6;">Uploading 239.1K, 89 files</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">...</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">1 of 1 instances running</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">App started</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">OK</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">App springcloudtask-date was started using this command `CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.2_RELEASE -memorySizes=metaspace:64m..,stack:228k.. -memoryWeights=heap:65,metaspace:10,native:15,stack:10 -memoryInitials=heap:100%,metaspace:100% -stackThreads=300 -totMemory=$MEMORY_LIMIT) &amp;&amp; JAVA_OPTS="-Djava.io.tmpdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjava.sh $CALCULATED_MEMORY -Djavax.net.ssl.trustStore=$PWD/.java-buildpack/container_certificate_trust_store/truststore.jks -Djavax.net.ssl.trustStorePassword=java-buildpack-trust-store-password" &amp;&amp; SERVER_PORT=$PORT eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher`</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">Showing health and status for app springcloudtask-date in org apples-pivotal-org / 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;">requested state: started</span><br /><span style="color: #3d85c6;">instances: 1/1</span><br /><span style="color: #3d85c6;">usage: 512M x 1 instances</span><br /><span style="color: #3d85c6;">urls:</span><br /><span style="color: #3d85c6;">last uploaded: Fri Mar 10 07:57:17 UTC 2017</span><br /><span style="color: #3d85c6;">stack: cflinuxfs2</span><br /><span style="color: #3d85c6;">buildpack: container-certificate-trust-store=2.0.0_RELEASE java-buildpack=v3.14-offline-https://github.com/cloudfoundry/java-buildpack.git#d5d58c6 java-main open-jdk-like-jre=1.8.0_121 open-jdk-like-memory-calculator=2.0.2_RELEASE spring-auto-reconfiguration=1.10...</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">&nbsp; &nbsp; &nbsp;state &nbsp; &nbsp; &nbsp;since &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cpu &nbsp; &nbsp;memory &nbsp; &nbsp; &nbsp; &nbsp; disk &nbsp; &nbsp; &nbsp; &nbsp; details</span><br /><span style="color: #3d85c6;">#0 &nbsp; starting &nbsp; 2017-03-10 06:58:43 PM &nbsp; 0.0% &nbsp; 936K of 512M &nbsp; 1.3M of 1G</span><br /><br /><br />6. Stop the application as we only want to run it as a CF Task when we are ready to run it.<br /><br /><b>$ cf stop springcloudtask-date</b><br /><br /><u>** Output **</u><br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/temp/SpringCloudTaskTodaysDate$ cf stop springcloudtask-date</span><br /><span style="color: #3d85c6;">Stopping app springcloudtask-date in org apples-pivotal-org / space development as papicella@pivotal.io...</span><br /><span style="color: #3d85c6;">OK</span><br /><br />7. In a separate lets tail the logs from the application as follows. Don't worry there is no output yet as the application invocation through a task has not yet occurred.<br /><br /><b>$&nbsp;cf logs springcloudtask-date</b><br /><br /><u>** Output **</u><br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~$ cf logs springcloudtask-date</span><br /><span style="color: #3d85c6;">Connected, tailing logs for app springcloudtask-date in org apples-pivotal-org / space development as papicella@pivotal.io...</span><br /><div><br /></div><br />8. Now log into PWS apps manager console and navigate to your application settings page as shown below. On this page you will see the run command for the spring boot application as shown below<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-aKXfB3SPxqQ/WMJf_oc7cFI/AAAAAAAAA30/-n21wWM1DyMn3oNyfBi1WTEzDo6-7LEGQCLcB/s1600/Screen%2BShot%2B2017-03-10%2Bat%2B7.11.25%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="164" src="https://1.bp.blogspot.com/-aKXfB3SPxqQ/WMJf_oc7cFI/AAAAAAAAA30/-n21wWM1DyMn3oNyfBi1WTEzDo6-7LEGQCLcB/s320/Screen%2BShot%2B2017-03-10%2Bat%2B7.11.25%2BPM.png" width="320" /></a></div><br />9. To invoke the task we run a command as follows using the "invocation command" we get from step #8 above.<br /><br /><span style="color: #e69138;">Format: cf run-task {app-name} {invocation command}</span><br /><br /><b>$&nbsp;cf run-task springcloudtask-date 'INVOCATION COMMAND from step #8 above'</b><br /><br /><u>** Output **</u><br /><u><br /></u><span style="color: #3d85c6;">pasapicella@pas-macbook:~/temp/SpringCloudTaskTodaysDate$ cf run-task springcloudtask-date 'CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.2_RELEASE -memorySizes=metaspace:64m..,stack:228k.. -memoryWeights=heap:65,metaspace:10,native:15,stack:10 -memoryInitials=heap:100%,metaspace:100% -stackThreads=300 -totMemory=$MEMORY_LIMIT) &amp;&amp; JAVA_OPTS="-Djava.io.tmpdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjava.sh $CALCULATED_MEMORY -Djavax.net.ssl.trustStore=$PWD/.java-buildpack/container_certificate_trust_store/truststore.jks -Djavax.net.ssl.trustStorePassword=java-buildpack-trust-store-password" &amp;&amp; SERVER_PORT=$PORT eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher'</span><br /><span style="color: #3d85c6;">Creating task for app springcloudtask-date in org apples-pivotal-org / 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;">Task has been submitted successfully for execution.</span><br /><span style="color: #3d85c6;">Task name: &nbsp; 371bb9b1</span><br /><span style="color: #3d85c6;">Task id: &nbsp; &nbsp; 1</span><br /><br />10. Return to PWS Applications Manager and click on the "<b>Tasks</b>" tab to verify if was successful<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-dxuldbuECgQ/WMJhCWbtzrI/AAAAAAAAA4A/Z5X-mE-nttUPOXhbQ5DNMg6IrbXmPisbACLcB/s1600/Screen%2BShot%2B2017-03-10%2Bat%2B7.16.49%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="98" src="https://2.bp.blogspot.com/-dxuldbuECgQ/WMJhCWbtzrI/AAAAAAAAA4A/Z5X-mE-nttUPOXhbQ5DNMg6IrbXmPisbACLcB/s320/Screen%2BShot%2B2017-03-10%2Bat%2B7.16.49%2BPM.png" width="320" /></a></div><br />11. Return to the terminal window where we were tailing the logs to verify the task was run<br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~$ cf logs springcloudtask-date</span><br /><span style="color: #3d85c6;">Connected, tailing logs for app springcloudtask-date in org apples-pivotal-org / space development as papicella@pivotal.io...</span><br /><span style="color: #3d85c6;"><br /></span><span style="color: #3d85c6;">2017-03-10T19:15:29.55+1100 [APP/TASK/371bb9b1/0]OUT Creating container</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:29.89+1100 [APP/TASK/371bb9b1/0]OUT Successfully created container</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.45+1100 [APP/TASK/371bb9b1/0]OUT &nbsp; . &nbsp; ____ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;__ _ _</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.45+1100 [APP/TASK/371bb9b1/0]OUT &nbsp;/\\ / ___'_ __ _ _(_)_ __ &nbsp;__ _ \ \ \ \</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.45+1100 [APP/TASK/371bb9b1/0]OUT &nbsp;\\/ &nbsp;___)| |_)| | | | | || (_| | &nbsp;) ) ) )</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.45+1100 [APP/TASK/371bb9b1/0]OUT &nbsp; ' &nbsp;|____| .__|_| |_|_| |_\__, | / / / /</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.45+1100 [APP/TASK/371bb9b1/0]OUT &nbsp;:: Spring Boot :: &nbsp; &nbsp; &nbsp; &nbsp;(v1.5.2.RELEASE)</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.45+1100 [APP/TASK/371bb9b1/0]OUT ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.45+1100 [APP/TASK/371bb9b1/0]OUT &nbsp;=========|_|==============|___/=/_/_/_/</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.71+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:34.706 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] pertySourceApplicationContextInitializer : Adding 'cloud' PropertySource to ApplicationContext</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.85+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:34.853 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] nfigurationApplicationContextInitializer : Adding cloud service auto-reconfiguration to ApplicationContext</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.89+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:34.891 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] s.d.SpringCloudTaskTodaysDateApplication : The following profiles are active: cloud</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:34.89+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:34.890 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] s.d.SpringCloudTaskTodaysDateApplication : Starting SpringCloudTaskTodaysDateApplication on b00b045e-dea4-4e66-8298-19dd71db9c8 with PID 7 (/home/vcap/app/BOOT-INF/classes started by vcap in /home/vcap/app)</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:35.00+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:35.009 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@7a07c5b4: startup date [Fri Mar 10 08:15:35 UTC 2017]; root of context hierarchy</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:35.91+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:35.912 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] urceCloudServiceBeanFactoryPostProcessor : Auto-reconfiguring beans of type javax.sql.DataSource</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:35.91+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:35.916 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] urceCloudServiceBeanFactoryPostProcessor : No beans of type javax.sql.DataSource found. Skipping auto-reconfiguration.</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.26+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:36.259 DEBUG 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] o.s.c.t.c.SimpleTaskConfiguration &nbsp; &nbsp; &nbsp; &nbsp;: Using org.springframework.cloud.task.configuration.DefaultTaskConfigurer TaskConfigurer</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.74+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:36.748 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] o.s.j.e.a.AnnotationMBeanExporter &nbsp; &nbsp; &nbsp; &nbsp;: Registering beans for JMX exposure on startup</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.75+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:36.758 DEBUG 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] o.s.c.t.r.support.SimpleTaskRepository &nbsp; : Creating: TaskExecution{executionId=0, parentExecutionId=null, exitCode=null, taskName='DateSpringCloudTask:cloud:', startTime=Fri Mar 10 08:15:36 UTC 2017, endTime=null, exitMessage='null', externalExecutionId='null', errorMessage='null', arguments=[]}</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.77+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:36.776 DEBUG 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] o.s.c.t.r.support.SimpleTaskRepository &nbsp; : Updating: TaskExecution with executionId=0 with the following {exitCode=0, endTime=Fri Mar 10 08:15:36 UTC 2017, exitMessage='null', errorMessage='null'}</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.75+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:36.757 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] o.s.c.support.DefaultLifecycleProcessor &nbsp;: Starting beans in phase 0</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.77+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:36.775 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] s.d.SpringCloudTaskTodaysDateApplication : Executed at : 3/10/17 8:15 AM</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.77+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:36.777 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@7a07c5b4: startup date [Fri Mar 10 08:15:35 UTC 2017]; root of context hierarchy</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.77+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:36.779 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] o.s.c.support.DefaultLifecycleProcessor &nbsp;: Stopping beans in phase 0</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.78+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:36.782 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] o.s.j.e.a.AnnotationMBeanExporter &nbsp; &nbsp; &nbsp; &nbsp;: Unregistering JMX-exposed beans on shutdown</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.78+1100 [APP/TASK/371bb9b1/0]OUT 2017-03-10 08:15:36.788 &nbsp;INFO 7 --- [ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; main] s.d.SpringCloudTaskTodaysDateApplication : Started SpringCloudTaskTodaysDateApplication in 3.205 seconds (JVM running for 3.985)</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.83+1100 [APP/TASK/371bb9b1/0]OUT Exit status 0</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:36.86+1100 [APP/TASK/371bb9b1/0]OUT Destroying container</span><br /><span style="color: #3d85c6;">2017-03-10T19:15:37.79+1100 [APP/TASK/371bb9b1/0]OUT Successfully destroyed container</span><br /><br />12. Finally you can verify tasks using a command as follows<br /><br /><b>$ cf tasks springcloudtask-date</b><br /><br /><u>** Output **</u><br /><br /><span style="color: #3d85c6;">pasapicella@pas-macbook:~/temp/SpringCloudTaskTodaysDate$ cf tasks springcloudtask-date</span><br /><span style="color: #3d85c6;">Getting tasks for app springcloudtask-date in org apples-pivotal-org / 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;">id &nbsp; name &nbsp; &nbsp; &nbsp; state &nbsp; &nbsp; &nbsp; start time &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;command</span><br /><span style="color: #3d85c6;">1 &nbsp; &nbsp;371bb9b1 &nbsp; SUCCEEDED &nbsp; Fri, 10 Mar 2017 08:15:28 UTC &nbsp; CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.2_RELEASE -memorySizes=metaspace:64m..,stack:228k.. -memoryWeights=heap:65,metaspace:10,native:15,stack:10 -memoryInitials=heap:100%,metaspace:100% -stackThreads=300 -totMemory=$MEMORY_LIMIT) &amp;&amp; JAVA_OPTS="-Djava.io.tmpdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjava.sh $CALCULATED_MEMORY -Djavax.net.ssl.trustStore=$PWD/.java-buildpack/container_certificate_trust_store/truststore.jks -Djavax.net.ssl.trustStorePassword=java-buildpack-trust-store-password" &amp;&amp; SERVER_PORT=$PORT eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher</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/i7uTzcesapo" height="1" width="1" alt=""/> Pas Apicella tag:blogger.com,1999:blog-6527688743456205256.post-6003733497810990391 Fri Mar 10 2017 03:26:00 GMT-0500 (EST) 12.2 Index Advanced Compression ‚ÄúHigh‚ÄĚ Part IV (The Width of a Circle) https://richardfoote.wordpress.com/2017/03/10/12-2-index-advanced-compression-high-part-iv-the-width-of-a-circle/ A quick post (for me) with a long weekend beckoning&#8230; In Part I, Part II and Part III of looking at the new Index Advanced Compression level of &#8220;High&#8221;, we discussed¬†how it can significantly decrease the size of your indexes in a manner not previously possible. This can result in significant reductions of¬†index storage and [&#8230;]<img alt="" border="0" src="https://pixel.wp.com/b.gif?host=richardfoote.wordpress.com&#038;blog=2301564&#038;post=3915&#038;subd=richardfoote&#038;ref=&#038;feed=1" width="1" height="1" /> Richard Foote http://richardfoote.wordpress.com/?p=3915 Fri Mar 10 2017 00:18:24 GMT-0500 (EST) Quiz Night https://jonathanlewis.wordpress.com/2017/03/09/quiz-night-31/ <p>The following is a straight, continuous, untouched, cut-n-paste from an SQL*Plus session on 12.1.0.2. How come the update doesn&#8217;t execute in parallel &#8211; noting that parallel DML has been enabled and the tablescan to identify rows to be updated does execute in parallel ?</p> <pre class="brush: plain; title: ; notranslate"> SQL&gt; desc t1 Name Null? Type ------------------------------------------------------------------------------- -------- ------------------------------------------------------ OWNER NOT NULL VARCHAR2(128) OBJECT_NAME NOT NULL VARCHAR2(128) SUBOBJECT_NAME VARCHAR2(128) OBJECT_ID NOT NULL NUMBER DATA_OBJECT_ID NUMBER OBJECT_TYPE VARCHAR2(23) CREATED NOT NULL DATE LAST_DDL_TIME NOT NULL DATE TIMESTAMP VARCHAR2(19) STATUS VARCHAR2(7) TEMPORARY VARCHAR2(1) GENERATED VARCHAR2(1) SECONDARY VARCHAR2(1) NAMESPACE NOT NULL NUMBER EDITION_NAME VARCHAR2(128) SHARING VARCHAR2(13) EDITIONABLE VARCHAR2(1) ORACLE_MAINTAINED VARCHAR2(1) SQL&gt; select * from t1 minus select * from all_objects; OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_ --------------- -------------------- ---------------------- ---------- -------------- ----------------------- --------- --------- TIMESTAMP STATUS T G S NAMESPACE EDITION_NAME SHARING E O ------------------- ------- - - - --------------- -------------------- ------------- - - TEST_USER T1 159331 159331 TABLE 09-MAR-17 09-MAR-17 2017-03-09:22:16:36 VALID N N N 1 NONE N 1 row selected. SQL&gt; alter session force parallel dml; Session altered. SQL&gt; set serveroutput off SQL&gt; update t1 set object_name = lower(object_name) where data_object_id is null; 78324 rows updated. SQL&gt; select * from table(dbms_xplan.display_cursor); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------ SQL_ID b16abyv8p2790, child number 0 ------------------------------------- update t1 set object_name = lower(object_name) where data_object_id is null Plan hash value: 121765358 --------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib | --------------------------------------------------------------------------------------------------------------- | 0 | UPDATE STATEMENT | | | | 26 (100)| | | | | | 1 | UPDATE | T1 | | | | | | | | | 2 | PX COORDINATOR | | | | | | | | | | 3 | PX SEND QC (RANDOM)| :TQ10000 | 78324 | 2141K| 26 (0)| 00:00:01 | Q1,00 | P-&gt;S | QC (RAND) | | 4 | PX BLOCK ITERATOR | | 78324 | 2141K| 26 (0)| 00:00:01 | Q1,00 | PCWC | | |* 5 | TABLE ACCESS FULL| T1 | 78324 | 2141K| 26 (0)| 00:00:01 | Q1,00 | PCWP | | --------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 5 - access(:Z&gt;=:Z AND :Z&lt;=:Z) filter(&quot;DATA_OBJECT_ID&quot; IS NULL) Note ----- - Degree of Parallelism is 8 because of table property - PDML disabled because single fragment or non partitioned table used 29 rows selected. SQL&gt; select * from v$pq_tqstat; DFO_NUMBER TQ_ID SERVER_TYPE NUM_ROWS BYTES OPEN_TIME AVG_LATENCY WAITS TIMEOUTS PROCESS INSTANCE CON_ID ---------- ---------- --------------- ---------- ---------- ---------- ----------- ---------- ---------- --------------- -------- ---------- 1 0 Producer 8997 363737 ########## 0 14 0 P004 1 0 9721 409075 ########## 0 12 0 P007 1 0 9774 408591 ########## 0 12 0 P005 1 0 9844 396816 ########## 0 12 0 P003 1 0 9965 403926 ########## 0 13 0 P006 1 0 9727 388829 ########## 0 12 0 P002 1 0 9951 399162 ########## 0 14 0 P001 1 0 10345 408987 ########## 0 13 0 P000 1 0 Consumer 78324 3179123 ########## 0 0 0 QC 1 0 9 rows selected. </pre> <p>If you want to see the fully parallel plan, it would look like this (after running the query above against v$pq_tqstat I executed one statement that I&#8217;m not showing before carrying on with the statements below):</p> <pre class="brush: plain; title: ; notranslate"> SQL&gt; update t1 set object_name = lower(object_name) where data_object_id is null; 78324 rows updated. SQL&gt; select * from table(dbms_xplan.display_cursor); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------ SQL_ID b16abyv8p2790, child number 0 ------------------------------------- update t1 set object_name = lower(object_name) where data_object_id is null Plan hash value: 3991856572 --------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib | --------------------------------------------------------------------------------------------------------------- | 0 | UPDATE STATEMENT | | | | 26 (100)| | | | | | 1 | PX COORDINATOR | | | | | | | | | | 2 | PX SEND QC (RANDOM) | :TQ10000 | 78324 | 2141K| 26 (0)| 00:00:01 | Q1,00 | P-&gt;S | QC (RAND) | | 3 | UPDATE | T1 | | | | | Q1,00 | PCWP | | | 4 | PX BLOCK ITERATOR | | 78324 | 2141K| 26 (0)| 00:00:01 | Q1,00 | PCWC | | |* 5 | TABLE ACCESS FULL| T1 | 78324 | 2141K| 26 (0)| 00:00:01 | Q1,00 | PCWP | | --------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 5 - access(:Z&gt;=:Z AND :Z&lt;=:Z) filter(&quot;DATA_OBJECT_ID&quot; IS NULL) Note ----- - Degree of Parallelism is 8 because of table property 28 rows selected. SQL&gt; select object_name, object_type from user_objects; OBJECT_NAME OBJECT_TYPE -------------------- ----------------------- T1 TABLE 1 row selected. </pre> <p>Answer coming some time tomorrow.</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16920/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16920/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16920&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16920 Thu Mar 09 2017 17:34:41 GMT-0500 (EST) Parameters and Binds for your RESTful Services http://www.thatjeffsmith.com/archive/2017/03/parameters-and-binds-for-your-restful-services/ <p>I have a very simple, and not very elegant stored procedure.</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">CREATE</span> <span class="kw1">OR</span> <span class="kw1">REPLACE</span> <span class="kw1">PROCEDURE</span> ADD_EMP <span class="br0">&#40;</span> P_EMP_NAME <span class="kw1">IN</span> SIMPLE_EMP<span class="sy0">.</span>name%<span class="kw1">TYPE</span><span class="sy0">,</span> P_EMP_SALARY <span class="kw1">IN</span> SIMPLE_EMP<span class="sy0">.</span>SALARY%<span class="kw1">TYPE</span><span class="sy0">,</span> P_OUT_ID <span class="kw1">OUT</span> SIMPLE_EMP<span class="sy0">.</span>id%<span class="kw1">TYPE</span><span class="sy0">,</span> P_OUT_TOTAL <span class="kw1">OUT</span> <span class="kw1">INTEGER</span> <span class="br0">&#41;</span> <span class="kw1">AS</span> <span class="kw1">BEGIN</span> <span class="kw1">INSERT</span> <span class="kw1">INTO</span> SIMPLE_EMP <span class="br0">&#40;</span>name<span class="sy0">,</span> SALARY<span class="br0">&#41;</span> <span class="kw1">VALUES</span> <span class="br0">&#40;</span>P_EMP_NAME<span class="sy0">,</span> P_EMP_SALARY<span class="br0">&#41;</span> <span class="kw1">RETURN</span> id <span class="kw1">INTO</span> P_OUT_ID; &nbsp; <span class="kw1">SELECT</span> <span class="kw1">COUNT</span><span class="br0">&#40;</span>id<span class="br0">&#41;</span> <span class="kw1">INTO</span> P_OUT_TOTAL <span class="kw1">FROM</span> SIMPLE_EMP; &nbsp; EXCEPTION <span class="kw1">WHEN</span> OTHERS <span class="kw1">THEN</span> HTP<span class="sy0">.</span>print<span class="br0">&#40;</span>SQLERRM<span class="br0">&#41;</span>; <span class="kw1">END</span>;</pre></div></div></div></div></div></div></div> <p><em>Sidebar: Like, I&#8217;m not a professional developer. The WHEN OTHERS THEN bit&#8230;that&#8217;s BAD CODE, don&#8217;t do that. I&#8217;m trying to talk about something else though, so don&#8217;t pay attention to that.</em></p> <p>This stored procedure takes in a name and salary. It inserts a record to my table, and returns the new employee&#8217;s ID and the new total number of employees in my company.</p> <p>My app needs to know what the new employee&#8217;s ID is so it can go find it. The ID is generated by a 12c Identity Clause in the table definition.</p> <div id="attachment_6068" style="width: 810px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sp-post4.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sp-post4.png" alt="" width="800" height="600" class="size-full wp-image-6068" /></a><p class="wp-caption-text">You don&#8217;t need to manually create triggers and sequences anymore &#8211; the database can do that for you in 12c and higher.</p></div> <p>Now, I want to execute this stored procedure via REST.</p> <p>Let&#8217;s create a RESTful Service via ORDS.</p> <p>I want a new module, and I&#8217;m calling it &#8216;rpc.&#8217; I&#8217;ll have a single template in there called &#8216;AddEmp&#8217;, and it&#8217;s going to have a single POST Handler.</p> <p>The database code behind this service is VERY simple. I&#8217;m just calling a stored procedure.</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">BEGIN</span> ADD_EMP<span class="br0">&#40;</span>P_EMP_NAME <span class="sy0">=&gt;</span> :P_EMP_NAME<span class="sy0">,</span> P_EMP_SALARY <span class="sy0">=&gt;</span> :P_EMP_SALARY<span class="sy0">,</span> P_OUT_ID <span class="sy0">=&gt;</span> :NEW_EMPID<span class="sy0">,</span> P_OUT_TOTAL <span class="sy0">=&gt;</span> :TOTAL<span class="br0">&#41;</span>; commit; <span class="kw1">END</span>;</pre></div></div></div></div></div></div></div> <p>P_EMP_NAME and P_EMP_SALARY binds are important. To get the data to my stored procedure, I&#8217;m going to POST up some JSON. That looks like this:<br /> <div id="attachment_6065" style="width: 536px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sp-post1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sp-post1.png" alt="WizTools REST Client and a POST to ORDS" width="526" height="272" class="size-full wp-image-6065" /></a><p class="wp-caption-text">The json attribute names need to match your input binds for the SQL in your module.</p></div> <p>Ok, so that gets the data in.</p> <h3>How does the data get out?</h3> <p>Let&#8217;s look at the code behind the module again. We&#8217;re calling ADD_EMP and we&#8217;re passing the 2 outputs to these binds:</p> <ul> <li>:NEW_EMPID</li> <li>:TOTAL</li> </ul> <p>We need to add/define module handler parameters for those two things. If you&#8217;re using the PL/SQL API, they&#8217;re going to be the <a href="http://docs.oracle.com/cd/E56351_01/doc.30/e56293/ORDS-reference.htm#GUID-BBB858FB-DB54-44E3-A2D5-387443FF6B8E__GUID-18C7225B-293A-44CB-81F0-4C7C0064CC4B" target="_blank">p_bind_variable_name bits</a>.</p> <p>I really like using our new <a href="http://www.thatjeffsmith.com/archive/2017/01/working-with-restful-services-blobs-and-media-types/" target="_blank">REST module editor in the database tree</a> though, so I&#8217;ll toggle to the parameters page.</p> <div id="attachment_6066" style="width: 698px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sp-post2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sp-post2.png" alt="" width="688" height="196" class="size-full wp-image-6066" /></a><p class="wp-caption-text">The bind parameter name needs to MATCH the :bind in your SQL code.</p></div> <p>The Name of the parameter determines how the JSON is constructed when returned.</p> <p>Before we run this, a few things I glossed over:</p> <ul> <li>I set the mime type to &#8216;application/json&#8217; &#8211; bc I want my output to be interpreted as JSON and not HTML for example</li> <li>You&#8217;ll need v4.2 to do this in the DB tree, otherwise you can use the REST Development panel and your <a href="http://www.thatjeffsmith.com/archive/2016/10/creating-an-oracle-rest-data-services-user-with-the-sql-developer-role/" target="_blank">&#8216;sql developer&#8217; ORDS user</a></li> </ul> <p>Ok, let&#8217;s make the call.</p> <div id="attachment_6067" style="width: 934px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sp-post3.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sp-post3.png" alt="" width="924" height="628" class="size-full wp-image-6067" /></a><p class="wp-caption-text">The JSON attribute names aren&#8217;t an accident &#8211; they&#8217;re my parameter names.</p></div> <p>And it did the work, we got the output, but I&#8217;m paranoid, let&#8217;s go check out table.</p> <div id="attachment_6069" style="width: 320px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sp-post5.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/sp-post5.png" alt="sql developer table data" width="310" height="238" class="size-full wp-image-6069" /></a><p class="wp-caption-text">TOTALLY RANDOM employee names and salaries.</p></div> <h3>P.S. This is about to get easier.</h3> <p>Think, AUTO REST end points for your stored procedures. No need to create a module and POST handlers. And we&#8217;ll grab the outputs automatically for you. Something to look forward to in a future ORDS release.</p> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6064 Thu Mar 09 2017 16:55:26 GMT-0500 (EST) Join Elimination https://jonathanlewis.wordpress.com/2017/03/09/join-elimination/ <p>A question has <a href="https://community.oracle.com/thread/4024891"><em><strong>just appeared on OTN</strong></em></a> describing a problem where code that works in 11g doesn&#8217;t work in 12c (exact versions not specified). The code in question is a C-based wrapper for some SQL, and the problem is a buffer overflow problem. The query supplied is as follows:</p> <pre class="brush: plain; title: ; notranslate"> select T1.C1 from T1, T2 where T1.C1 = T2.D1; </pre> <p>The problem is that this works in 11g where the receiving (C) variable is declared as</p> <pre class="brush: plain; title: ; notranslate"> char myBuffer [31]; </pre> <p>but it doesn&#8217;t work in 12c unless the receiving variable is declared as:</p> <pre class="brush: plain; title: ; notranslate"> char myBuffer [51]; </pre> <p>There&#8217;s an important bit of background information that might be giving us a clue about what&#8217;s happened (although what I&#8217;m about to describe isn&#8217;t actually the problem unless the SQL provided is a simplified version of the problem SQL that is expected to display the problem). Column <em><strong>C1</strong></em> is defined as <em><strong>char(30)</strong></em> and column <em><strong>D1</strong></em> is defined as <em><strong>char(50)</strong></em>. Here&#8217;s some sample code showing why you might need a buffer of 50+1 bytes to hold something that ought to be 30+1 bytes long. (This may be nothing to do with the anomaly described in the original posting &#8211; it&#8217;s just something I thought of when I first saw the question.)</p> <pre class="brush: plain; title: ; notranslate"> rem Script: join_elimination_oddity.sql rem Author: Jonathan Lewis rem Dated: Mar 2017 create table t1( c30 char(30) primary key ); create table t2( d50 char(50) references t1 ); begin dbms_stats.gather_table_stats( ownname =&gt; user, tabname =&gt;'T1', method_opt =&gt; 'for all columns size 1' ); dbms_stats.gather_table_stats( ownname =&gt; user, tabname =&gt;'T2', method_opt =&gt; 'for all columns size 1' ); end; / explain plan for select t1.c30 from t1, t2 where t1.c30 = t2.d50 ; select * from table(dbms_xplan.display(null,null,'projection')); </pre> <p>So we&#8217;re selecting <em><strong>c30</strong></em> &#8211; the 30 byte character column &#8211; from <em><strong>t1</strong></em>; what do we actually get ? Here&#8217;s the plan with the projection:</p> <pre class="brush: plain; title: ; notranslate"> -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 52 | 1 (0)| 00:00:01 | |* 1 | TABLE ACCESS FULL| T2 | 1 | 52 | 1 (0)| 00:00:01 | -------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(&quot;T2&quot;.&quot;D50&quot; IS NOT NULL) Column Projection Information (identified by operation id): ----------------------------------------------------------- 1 - &quot;T2&quot;.&quot;D50&quot;[CHARACTER,50] </pre> <p>Table <em><strong>t1</strong></em> has been eliminated and the projected column is the &#8220;equivalent&#8221; column from <em><strong>t2</strong></em> &#8211; which is too long for the expected output. To work around this problem you can disable join elimination either by parameter (<em>_optimizer_join_elimination_enabled=false</em>) or by hinting <em>/*+ no_eliminate_join(t1) */</em> in which case the plan (with my data) became a nested loop join from <em><strong>t2</strong></em> to <em><strong>t1</strong></em> with column <em><strong>c1</strong></em> projected as expected.</p> <h3>Footnote:</h3> <p>Two things to note about my demonstration</p> <ul> <li>If you&#8217;re going to create a referential integrity constraint between columns they do need to be of <em><strong>exactly</strong></em> the same type. (If you want to get technical you might say &#8220;in the same domain&#8221; &#8211; but Oracle doesn&#8217;t do domains.)</li> <li>This extremely simple case demonstrates the problem in 11.2.0.4 as well as 12.1.0.2. Possibly a more complex query could be produced where (thanks to limitations in query transformations) 11g doesn&#8217;t spot the option for join elimination while 12c does; alternatively, a very simple two-column example in 11g won&#8217;t do join elimination while a two-column example in 12.2 can (<a href="https://jonathanlewis.wordpress.com/2017/01/10/join-elimination-12-2/"><em><strong>though it doesn&#8217;t always</strong></em></a>) &#8211; so upgrading to 12.2 MIGHT cause more people to see this anomaly appearing.</li> </ul> <h3>Update (14/3/17)</h3> <p>A follow-up to the original posting has identified source of the problem. Rather than a side effect of join elimination the anomaly has appeared because of the <a href="https://blog.dbi-services.com/partial-join-evaluation-in-oracle-12c/"><em><strong>&#8220;partition join evaluation&#8221;</strong></em></a> mechanism introduced in 12c. There is a hint to disable the mechanism <em>/*+ no_partial_join(alias) */</em> or &#8211; if you can&#8217;t get hints into place for all the necessary code &#8211; it would be possible to disable the feature completely through the use of a hidden parameter <em>&#8220;_optimizer_partial_join_eval&#8221;=false</em>.¬† The usual rule of checking with Oracle support before setting hidden parameter applies, of course.</p> <p>&nbsp;</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16917/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16917&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16917 Thu Mar 09 2017 13:39:18 GMT-0500 (EST) Happy 20th Birthday ODTUG http://www.odtug.com/p/bl/et/blogaid=680&source=1 On March 13, 2017, ODTUG celebrates its 20th birthday! 20 years of evolving technology and ODTUG is still the user group that keeps you on the cutting-edge of the constantly changing Oracle technology landscape. In honor of ODTUG‚Äôs birthday you can save $200 off your ODTUG Kscope17 registration. ODTUG http://www.odtug.com/p/bl/et/blogaid=680&source=1 Thu Mar 09 2017 11:22:59 GMT-0500 (EST) VirtualBox 5.1.16 http://feedproxy.google.com/~r/TheOracleBaseBlog/~3/eGQhufahxmc/ <p><a href="https://www.virtualbox.org"><img class="size-full wp-image-4959 alignleft" src="https://oracle-base.com/blog/wp-content/uploads/2015/05/virtualbox.jpg" alt="" width="129" height="145" />VirtualBox</a> 5.1.16 has been released!¬†<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="https://www.virtualbox.org/wiki/Downloads">Downloads</a> and <a href="https://www.virtualbox.org/wiki/Changelog#v16">changelog</a> are in the usual places.</p> <p>I‚Äôve done the installation on my Windows 7 desktop at work and an Oracle Linux 6 host at home. After my recent catastrophe with my MBP I&#8217;m nervous to touch 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;" />¬†I&#8217;ll update the post once I&#8217;m brave enough to do that one.</p> <p>Cheers</p> <p>Tim‚Ķ</p> <p>PS. Just did a <a href="https://oracle-base.com/articles/12c/oracle-db-12cr2-rac-installation-on-oracle-linux-6-using-virtualbox">12.2 RAC installation on OL6</a> using VirtualBox 5.1.16. No errors. <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>PPS. It worked on macOS Sierra fine too.</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/03/09/virtualbox-5-1-16/">VirtualBox 5.1.16</a> was first posted on March 9, 2017 at 2:36 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/eGQhufahxmc" height="1" width="1" alt=""/> Tim... https://oracle-base.com/blog/?p=6952 Thu Mar 09 2017 08:36:13 GMT-0500 (EST) Oracle Service Bus : Service Exploring via WebLogic Server MBeans with JMX https://technology.amis.nl/2017/03/09/oracle-service-bus-service-exploring-via-weblogic-server-mbeans-with-jmx/ <p>At a public sector organization in the Netherlands there was the need to make an inventory of the deployed OSB services in order to find out, the dependencies with certain external web services (which were on a list to become deprecated).</p> <p>For this, in particular the endpoints of business services were of interest.</p> <p>Besides that, the dependencies between services and also the Message Flow per proxy service was of interest, in particular Operational Branch, Route, Java Callout and Service Callout actions.</p> <p>Therefor an OSBServiceExplorer tool was developed to explore the services (proxy and business) within the OSB via WebLogic Server MBeans with JMX. For now, this tool was merely used to quickly return the information needed, but in the future it can be the basis for a more comprehensive one.</p> <p>This article will explain how the OSBServiceExplorer tool uses WebLogic Server MBeans with JMX.</p> <p>If you are interested in general information about, using MBeans with JMX, I kindly point you to another article (written be me) on the AMIS TECHNOLOGY BLOG: ‚ÄúOracle Service Bus : disable / enable a proxy service via WebLogic Server MBeans with JMX‚ÄĚ, via url: <u><a href="https://technology.amis.nl/2017/02/28/oracle-service-bus-disable-enable-a-proxy-service-via-weblogic-server-mbeans-with-jmx/" target="_blank">https://technology.amis.nl/2017/02/28/oracle-service-bus-disable-enable-a-proxy-service-via-weblogic-server-mbeans-with-jmx/</a></u></p> <p>Remark: Some names in the examples in this article are in Dutch, but don‚Äôt let this scare you off.</p> <p><span id="more-44208"></span></p> <h2><span style="font-weight: bold;">MBeans</span></h2> <p>For ease of use, a ms-dos batch file was created, using MBeans, to explore services (proxy and business). The WebLogic Server contains a set of MBeans that can be used to configure, monitor and manage WebLogic Server resources.</p> <p>On a server, the ms-dos batch file ‚ÄúOSBServiceExplorer.bat‚ÄĚ is called.</p> <p>The content of the ms-dos batch file ‚ÄúOSBServiceExplorer.bat‚ÄĚ is:<br /> <a style="font-family: Courier New; color: black;">java.exe -classpath &#8220;OSBServiceExplorer.jar;com.bea.common.configfwk_1.7.0.0.jar;sb-kernel-api.jar;sb-kernel-impl.jar;wlfullclient.jar&#8221; nl.xyz.osbservice.osbserviceexplorer. OSBServiceExplorer &#8220;xyz&#8221; &#8220;7001&#8221; &#8220;weblogic&#8221; &#8220;xyz&#8221;</a></p> <p>In the ms-dos batch file via java.exe a class named OSBServiceExplorer is being called. The main method of this class expects the following parameters:</p> <table border="1" cellspacing="0" cellpadding="0" style="margin-bottom: 10px"> <tbody> <tr> <td valign="top" width="256"><b>Parameter name</b></td> <td valign="top" width="256"><b>Description</b></td> </tr> <tr> <td valign="top" width="256">HOSTNAME</td> <td valign="top" width="256">Host name of the AdminServer</td> </tr> <tr> <td valign="top" width="256">PORT</td> <td valign="top" width="256">Port of the AdminServer</td> </tr> <tr> <td valign="top" width="256">USERNAME</td> <td valign="top" width="256">Username</td> </tr> <tr> <td valign="top" width="256">PASSWORD</td> <td valign="top" width="256">Passsword</td> </tr> </tbody> </table> <p>In the sample code shown at the end of this article, the use of the following MBeans can be seen:</p> <ul> <li>DomainRuntimeServiceMBean (<a style="font-family: Courier New; color: black;">weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean.class</a> part of <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/wlserver_10.3/server/lib/</a><a style="font-family: Courier New; color: blue;">wlfullclient.jar</a>)</li> </ul> <p style="padding-left: 35px;"><i>Provides a common access point for navigating to all runtime and configuration MBeans in the domain as well as to MBeans that provide domain-wide services (such as controlling and monitoring the life cycles of servers and message-driven EJBs and coordinating the migration of migratable services). </i>[<sub><a href="https://docs.oracle.com/middleware/1213/wls/WLAPI/weblogic/management/mbeanservers/domainruntime/DomainRuntimeServiceMBean.html" target="_blank">https://docs.oracle.com/middleware/1213/wls/WLAPI/weblogic/management/mbeanservers/domainruntime/DomainRuntimeServiceMBean.html</a></sub>]</p> <p style="padding-left: 35px;">This library is not by default provided in a WebLogic install and must be build. The simple way of how to do this is described in &#8220;Fusion Middleware Programming Stand-alone Clients for Oracle WebLogic Server, Using the WebLogic JarBuilder Tool&#8221;, which can be reached via url: <u><a href="https://docs.oracle.com/cd/E28280_01/web.1111/e13717/jarbuilder.htm#SACLT240" target="_blank">https://docs.oracle.com/cd/E28280_01/web.1111/e13717/jarbuilder.htm#SACLT240</a>.</u></p> <ul> <li>ServerRuntimeMBean (<a style="font-family: Courier New; color: black;">weblogic.management.runtime.ServerRuntimeMBean.class</a> part of <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/wlserver_10.3/server/lib/</a><a style="font-family: Courier New; color: blue;">wlfullclient.jar</a>)</li> </ul> <p style="padding-left: 35px;"><i>Provides methods for retrieving runtime information about a server instance and for transitioning a server from one state to another. </i>[<sub><a href="https://docs.oracle.com/cd/E11035_01/wls100/javadocs_mhome/weblogic/management/runtime/ServerRuntimeMBean.html" target="_blank">https://docs.oracle.com/cd/E11035_01/wls100/javadocs_mhome/weblogic/management/runtime/ServerRuntimeMBean.html</a></sub>]</p> <ul> <li>ALSBConfigurationMBean (<a style="font-family: Courier New; color: black;">com.bea.wli.sb.management.configuration.ALSBConfigurationMBean.class</a> part of <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/Oracle_OSB1/lib/</a><a style="font-family: Courier New; color: blue;">sb-kernel-api.jar</a>)</li> </ul> <p style="padding-left: 35px;"><i>Provides various API to query, export and import resources, obtain validation errors, get and set environment values, and in general manage resources in an ALSB domain. </i>[<sub><a href="https://docs.oracle.com/cd/E13171_01/alsb/docs26/javadoc/com/bea/wli/sb/management/configuration/ALSBConfigurationMBean.html" target="_blank">https://docs.oracle.com/cd/E13171_01/alsb/docs26/javadoc/com/bea/wli/sb/management/configuration/ALSBConfigurationMBean.html</a></sub>]</p> <p style="padding-left: 35px;">Once the connection to the DomainRuntimeServiceMBean is made, other MBeans can be found via the <a style="font-family: Courier New; color: black;">findService</a> method.</p> <p style="padding-left: 35px;"> <pre class="brush: xml; title: ; notranslate"> Service findService(String name, String type, String location) </pre> </p> <p style="padding-left: 35px;"><i>This method returns the Service on the specified Server or in the primary MBeanServer if the location is not specified. </i></p> <p style="padding-left: 35px;">In the sample code shown at the end of this article, certain java fields are used. For reading purposes the field values are shown in the following table:</p> <p style="padding-left: 35px;"> <table border="1" cellspacing="0" cellpadding="0" width="100%" style="table-layout: fixed; margin-bottom: 10px"> <tbody> <tr> <td valign="top" width="330"><b>Field</b></td> <td valign="top" width="350" style="word-wrap: break-word;"><b>Field value</b></td> </tr> <tr> <td valign="top" width="330"><a style="font-family: Courier New; color: black;">DomainRuntimeServiceMBean.MBEANSERVER_JNDI_NAME</a></td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">weblogic.management.mbeanservers.domainruntime</a></td> </tr> <tr> <td valign="top" width="330"><a style="font-family: Courier New; color: black;">DomainRuntimeServiceMBean.OBJECT_NAME</a></td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean</a></td> </tr> <tr> <td valign="top" width="330"><a style="font-family: Courier New; color: black;">ALSBConfigurationMBean.NAME</a></td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">ALSBConfiguration</a></td> </tr> <tr> <td valign="top" width="330"><a style="font-family: Courier New; color: black;">ALSBConfigurationMBean.TYPE</a></td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">com.bea.wli.sb.management.configuration.ALSBConfigurationMBean</a></td> </tr> <tr> <td valign="top" width="330"><a style="font-family: Courier New; color: black;">Ref.DOMAIN</a></td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">&lt;Reference to the domain&gt;</a></td> </tr> </tbody> </table> <p>Because of the use of <a style="font-family: Courier New; color: black;">com.bea.wli.config.Ref.class</a> , the following library <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/Oracle_OSB1/modules/</a><a style="font-family: Courier New; color: blue;">com.bea.common.configfwk_1.7.0.0.jar</a> was needed.</p> <p><i>A Ref uniquely represents a resource, project or folder that is managed by the Configuration Framework. </i></p> <p><i>A special Ref DOMAIN refers to the whole domain.</i><br /> [<sub><a href="https://docs.oracle.com/cd/E17904_01/apirefs.1111/e15033/com/bea/wli/config/Ref.html" target="_blank">https://docs.oracle.com/cd/E17904_01/apirefs.1111/e15033/com/bea/wli/config/Ref.html</a></sub>]<i></i></p> <p>Because of the use of <a style="font-family: Courier New; color: black;">weblogic.management.jmx.MBeanServerInvocationHandler.class</a> , the following library <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/wlserver_10.3/server/lib/</a><a style="font-family: Courier New; color: blue;">wlfullclient.jar</a> was needed.</p> <p>When running the code the following error was thrown:</p> <pre class="brush: xml; title: ; notranslate"> java.lang.RuntimeException: java.lang.ClassNotFoundException: com.bea.wli.sb.management.configuration.DelegatedALSBConfigurationMBean at weblogic.management.jmx.MBeanServerInvocationHandler.newProxyInstance(MBeanServerInvocationHandler.java:621) at weblogic.management.jmx.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:418) at $Proxy0.findService(Unknown Source) at nl.xyz.osbservice.osbserviceexplorer.OSBServiceExplorer.&lt;init&gt;(OSBServiceExplorer.java:174) at nl.xyz.osbservice.osbserviceexplorer.OSBServiceExplorer.main(OSBServiceExplorer.java:445) Caused by: java.lang.ClassNotFoundException: com.bea.wli.sb.management.configuration.DelegatedALSBConfigurationMBean at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at weblogic.management.jmx.MBeanServerInvocationHandler.newProxyInstance(MBeanServerInvocationHandler.java:619) ... 4 more Process exited. </pre> <p>So because of the use of <a style="font-family: Courier New; color: black;">com.bea.wli.sb.management.configuration.DelegatedALSBConfigurationMBean.class</a> the following library <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/Oracle_OSB1/lib/</a><a style="font-family: Courier New; color: blue;">sb-kernel-impl.jar</a> was also needed.</p> <h2><span style="font-weight: bold;">Runtime information (name and state) of the server instances</span></h2> <p>The OSBServiceExplorer tool writes its output to a text file called &#8220;OSBServiceExplorer.txt&#8221;.</p> <p>First the runtime information (name and state) of the server instances (Administration Server and Managed Servers) of the WebLogic domain are written to file.</p> <p>Example content fragment of the text file:</p> <pre style="font-family: Courier New; color: brown; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">Found server runtimes: - Server name: AdminServer. Server state: RUNNING - Server name: ManagedServer1. Server state: RUNNING - Server name: ManagedServer2. Server state: RUNNING</pre> <p>See the code fragment below:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">fileWriter.write("Found server runtimes:\n"); int length = (int)serverRuntimes.length; for (int i = 0; i < length; i++) { ServerRuntimeMBean serverRuntimeMBean = serverRuntimes[i]; String name = serverRuntimeMBean.getName(); String state = serverRuntimeMBean.getState(); fileWriter.write("- Server name: " + name + ". Server state: " + state + "\n"); } fileWriter.write("" + "\n");</pre> <h2><span style="font-weight: bold;">List of Ref objects (projects, folders, or resources)</span></h2> <p>Next, a list of Ref objects is written to file, including the total number of objects in the list.</p> <p>Example content fragment of the text file:</p> <pre style="font-family: Courier New; color: brown; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">Found total of 1132 refs, including the following proxy and business services: ‚Ķ - ProxyService: JMSConsumerStuFZKNMessageService-1.0/proxy/JMSConsumerStuFZKNMessageService_PS ‚Ķ - ProxyService: ZKN ZaakService-2.0/proxy/UpdateZaak_Lk01_PS ‚Ķ - BusinessService: ZKN ZaakService-2.0/business/eBUS/eBUS_FolderService_BS</pre> <p>See the code fragment below:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">Set<Ref> refs = alsbConfigurationMBean.getRefs(Ref.DOMAIN); fileWriter.write("Found total of " + refs.size() + " refs, including the following proxy and business services:\n"); for (Ref ref : refs) { String typeId = ref.getTypeId(); if (typeId.equalsIgnoreCase("ProxyService")) { fileWriter.write("- ProxyService: " + ref.getFullName() + "\n"); } else if (typeId.equalsIgnoreCase("BusinessService")) { fileWriter.write("- BusinessService: " + ref.getFullName() + "\n"); } else { //fileWriter.write(ref.getFullName()); } } fileWriter.write("" + "\n");</pre> <p>As mentioned before, a <a style="font-family: Courier New; color: black;">Ref</a> object uniquely represents a resource, project or folder. A <a style="font-family: Courier New; color: black;">Ref</a> object has two components:</p> <ul> <li><b>typeId</b> <i>that indicates whether it is a project, folder, or a resource</i></li> </ul> <ul> <li><b>array of names</b> of non-zero length.</li> </ul> <p style="padding-left: 35px;"><i>For a resource the array of names start with the project name, followed by folder names, and end with the resource name.<br /> For a project, the Ref object simply contains one name component, that is, the project name.<br /> A Ref object for a folder contains the project name followed by the names of the folders which it is nested under.</i><br /> [<sub><a href="https://docs.oracle.com/cd/E17904_01/apirefs.1111/e15033/com/bea/wli/config/Ref.html" target="_blank">https://docs.oracle.com/cd/E17904_01/apirefs.1111/e15033/com/bea/wli/config/Ref.html</a></sub>]</p> <p>Below is an example of a <a style="font-family: Courier New; color: black;">Ref</a> object that represents a folder (via JDeveloper Debug):</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_1.png" alt="" width="538" height="156" /></p> <p>Below is an example of a <a style="font-family: Courier New; color: black;">Ref</a> object that represents a resource (via JDeveloper Debug):</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_2.png" alt="" width="553" height="172" /></p> <h2><span style="font-weight: bold;">ResourceConfigurationMBean</span></h2> <p>In order to be able to determine the actual endpoints of the proxy services and business services, the <a style="font-family: Courier New; color: black;">ResourceConfigurationMBean</a> is used. When connected, the Service Bus MBeans are located under <a style="font-family: Courier New; color: black;">com.oracle.osb</a>. [<sub><a href="https://technology.amis.nl/2014/10/20/oracle-service-bus-obtaining-list-exposed-soap-http-endpoints/" target="_blank">https://technology.amis.nl/2014/10/20/oracle-service-bus-obtaining-list-exposed-soap-http-endpoints/</a></sub>]</p> <p>When we look at the java code, as a next step, the names of a set of MBeans specified by pattern matching are put in a list and looped through.</p> <p>Once the connection to the DomainRuntimeServiceMBean is made, other MBeans can be found via the <a style="font-family: Courier New; color: black;">queryNames</a> method.</p> <pre class="brush: xml; title: ; notranslate"> Set queryNames(ObjectName name, QueryExp query) throws IOException </pre> <p><i>Gets the names of MBeans controlled by the MBean server. This method enables any of the following to be obtained: The names of all MBeans, the names of a set of MBeans specified by pattern matching on the ObjectName and/or a Query expression, a specific MBean name (equivalent to testing whether an MBean is registered). When the object name is null or no domain and key properties are specified, all objects are selected (and filtered if a query is specified). It returns the set of ObjectNames for the MBeans selected.</i><br /> [<sub><a href="https://docs.oracle.com/javase/7/docs/api/javax/management/MBeanServerConnection.html" target="_blank">https://docs.oracle.com/javase/7/docs/api/javax/management/MBeanServerConnection.html</a></sub>]</p> <p>See the code fragment below:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">String domain = "com.oracle.osb"; String objectNamePattern = domain + ":" + "Type=ResourceConfigurationMBean,*"; Set<ObjectName> osbResourceConfigurations = connection.queryNames(new ObjectName(objectNamePattern), null); fileWriter.write("ResourceConfiguration list of proxy and business services:\n"); for (ObjectName osbResourceConfiguration : osbResourceConfigurations) { ‚Ķ String canonicalName = osbResourceConfiguration.getCanonicalName(); fileWriter.write("- Resource: " + canonicalName + "\n"); ‚Ķ }</pre> <p>The pattern used is: <a style="font-family: Courier New; color: black;">com.oracle.osb:Type=ResourceConfigurationMBean,*</a></p> <p>Example content fragment of the text file:</p> <pre style="font-family: Courier New; color: brown; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">ResourceConfiguration list of proxy and business services: ‚Ķ - Resource: com.oracle.osb:Location=AdminServer,Name=ProxyService$ZKN ZaakService-2.0$proxy$UpdateZaak_Lk01_PS,Type=ResourceConfiguionMBean ‚Ķ</pre> <p>Below is an example of an <a style="font-family: Courier New; color: black;">ObjectName</a> object (via JDeveloper Debug), found via the <a style="font-family: Courier New; color: black;">queryNames</a> method:</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_3.png" alt="" width="1256" height="152" /></p> <p>Via the Oracle Enterprise Manager Fusion Middleware Control for a certain domain, the System MBean Browser can be opened. Here the previously mentioned <a style="font-family: Courier New; color: black;">ResourceConfigurationMBean‚Äôs</a> can be found.</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_4.png" alt="" width="553" height="490" /><br /> [Via MBean Browser]</p> <p>The information on the right is as follows (if we navigate to a particular ResourceConfigurationMBean, for example ‚Ķ$UpdateZaak_Lk01_PS) :</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_5.png" alt="" width="1227" height="205" /><br /> [Via MBean Browser]</p> <p>Here we can see that the attributes Configuration and Metadata are available:</p> <ul> <li>Configuration</li> </ul> <p style="padding-left: 35px;"><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_6.png" alt="" width="1190" height="393" /></p> <p style="padding-left: 35px;">[Via MBean Browser]</p> <p style="padding-left: 35px;">The Configuration is made available in java by the following code fragment:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-left: 35px; margin-top: 10px; margin-bottom: 10px;">CompositeDataSupport configuration = (CompositeDataSupport)connection.getAttribute(osbResourceConfiguration,"Configuration");</pre> <ul> <li>Metadata</li> </ul> <p style="padding-left: 35px;"><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_7.png" alt="" width="1196" height="433" /></p> <p style="padding-left: 35px;">[Via MBean Browser]</p> <p style="padding-left: 35px;">The Metadata is made available in java by the following code fragment:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-left: 35px; margin-top: 10px; margin-bottom: 10px;">CompositeDataSupport metadata = (CompositeDataSupport)connection.getAttribute(osbResourceConfiguration,"Metadata");</pre> <h2><span style="font-weight: bold;">Diving into attribute Configuration of the ResourceConfigurationMBean</span></h2> <p>For each found proxy and business service the configuration information (canonicalName, service-type, transport-type, url) is written to file.</p> <p>See the code fragment below:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">String canonicalName = osbResourceConfiguration.getCanonicalName(); ‚Ķ String servicetype = (String)configuration.get("<a style="color: darkgreen;"><b>service-type</b></a>"); CompositeDataSupport transportconfiguration = (CompositeDataSupport)configuration.get("transport-configuration"); String transporttype = (String)transportconfiguration.get("<a style="color: darkgreen;"><b>transport-type</b></a>"); ‚Ķ fileWriter.write(" Configuration of " + canonicalName + ":" + " service-type=" + servicetype + ", transport-type=" + transporttype + ", url=" + url + "\n");</pre> <p><u>Proxy service configuration:</u></p> <p>Below is an example of a proxy service configuration (content fragment of the text file):</p> <pre style="font-family: Courier New; color: brown; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;"> Configuration of com.oracle.osb:Location=AdminServer,Name=<a style="color: red;"><b>ProxyService$</b></a>ZKN ZaakService-2.0$proxy$UpdateZaak_Lk01_PS,Type=ResourceConfigurationMBean: <a style="color: darkgreen;"><b>service-type</b></a>=Abstract SOAP, <a style="color: darkgreen;"><b>transport-type</b></a>=local, <a style="color: darkgreen;"><b>url</b></a>=local</pre> <p>The proxy services which define the exposed endpoints, can be recognized by the <a style="font-family: Courier New; color: red;"><b>ProxyService$</b></a> prefix.</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_8.png" alt="" width="309" height="249" /><br /> [Via MBean Browser]</p> <p>For getting the endpoint, see the code fragment below:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">String url = (String)transportconfiguration.get("<a style="color: darkgreen;"><b>url</b></a>");</pre> <p><u>Business service configuration:</u></p> <p>Below is an example of a business service configuration (content fragment of the text file):</p> <pre style="font-family: Courier New; color: brown; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;"> Configuration of com.oracle.osb:Location=AdminServer,Name=<a style="color: red;"><b>BusinessService$</b></a>ZKN ZaakService-2.0$business$eBUS$eBUS_FolderService_BS,Type=ResourceConfigurationMBean: <a style="color: darkgreen;"><b>service-type</b></a>=SOAP, <a style="color: darkgreen;"><b>transport-type</b></a>=http, <a style="color: darkgreen;"><b>url</b></a>=http://xyz/eBus/FolderService.svc</pre> <p>The business services which define the exposed endpoints, can be recognized by the <a style="font-family: Courier New; color: red;"><b>BusinessService$</b></a> prefix.</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_9.png" alt="" width="293" height="321" /><br /> [Via MBean Browser]</p> <p>For getting the endpoint, see the code fragment below:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">CompositeData[] urlconfiguration = (CompositeData[])transportconfiguration.get("url-configuration"); String url = (String)urlconfiguration[0].get("<a style="color: darkgreen;"><b>url</b></a>");</pre> <p>So, via the <b>url</b> key found in the business service configuration, the endpoint of a business service can be found (for example: <a href="http://xyz/eBus/FolderService.svc">http://xyz/eBus/FolderService.svc</a>). So in that way the dependencies (proxy and/or business services) with certain external web services (having a certain endpoint), could be found.</p> <h2><span style="font-weight: bold;">Proxy service pipeline, element hierarchy</span></h2> <p>For a proxy service the elements (nodes) of the pipeline are investigated.</p> <p>See the code fragment below:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">CompositeDataSupport pipeline = (CompositeDataSupport)configuration.get("pipeline"); TabularDataSupport nodes = (TabularDataSupport)pipeline.get("nodes");</pre> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_10.png" alt="" width="266" height="323" /><br /> [Via MBean Browser]</p> <p>Below is an example of a <a style="font-family: Courier New; color: black;">nodes</a> object (via JDeveloper Debug):</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_11.png" alt="" width="863" height="223" /></p> <p>If we take a look at the <a style="font-family: Courier New; color: black;">dataMap</a> object, we can see nodes of different types.</p> <p>Below is an example of a node of type <a style="font-family: Courier New; color: black;">Stage</a> (via JDeveloper Debug):</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_12.png" alt="" width="1052" height="170" /></p> <p>Below is an example of a node of type <a style="font-family: Courier New; color: black;">Action</a> and label <a style="font-family: Courier New; color: black;">ifThenElse</a> (via JDeveloper Debug):</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_13.png" alt="" width="1054" height="171" /></p> <p>Below is an example of a node of type <a style="font-family: Courier New; color: black;">Action</a> and label <a style="font-family: Courier New; color: black;">wsCallout</a> (via JDeveloper Debug):</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_14.png" alt="" width="1053" height="173" /></p> <p>For the examples above the Message Flow part of the <a style="font-family: Courier New; color: black;">UpdateZaak_Lk01_PS</a> proxy service looks like:</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_15.png" alt="" width="464" height="344" /></p> <p>The mapping between the node-id and the corresponding element in the Messsage Flow can be achieved by looking in the .proxy file (in this case: UpdateZaak_Lk01_PS.proxy) for the <a style="font-family: Courier New; color: black;">_ActiondId-</a> identification, mentioned as value for the <b>name</b> key.</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;"> &lt;con:stage name="EditFolderZaakStage"&gt; &lt;con:context&gt; ‚Ķ &lt;/con:context&gt; &lt;con:actions&gt; &lt;con3:ifThenElse&gt; &lt;con2:id&gt;<a style="color: red;"><b>_ActionId-7997641858449402984--36d1ada1.1562c8caabd.-7c84</b></a>&lt;/con2:id&gt; &lt;con3:case&gt; &lt;con3:condition&gt; ‚Ķ &lt;/con3:condition&gt; &lt;con3:actions&gt; &lt;con3:wsCallout&gt; &lt;con2:id&gt;<a style="color: red;"><b>_ActionId-7997641858449402984--36d1ada1.1562c8caabd.-7b7f</b></a>&lt;/con2:id&gt; ‚Ķ</pre> <p>The <b>first</b> node in the <a style="font-family: Courier New; color: black;">dataMap</a> object (via JDeveloper Debug) looks like:</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_16.png" alt="" width="1091" height="206" /></p> <p>The <a style="font-family: Courier New; color: black;">dataMap</a> object is of type <a style="font-family: Courier New; color: black;">HashMap</a>. A hashMap maintains key and value pairs and often denoted as HashMap&lt;Key, Value&gt; or HashMap&lt;K, V&gt;. HashMap implements Map interface</p> <p>As can be seen, the <b>key</b> is of type <a style="font-family: Courier New; color: black;">Object</a> and the <b>value</b> of type <a style="font-family: Courier New; color: black;">CompositeData</a>.</p> <p>In order to know what kind of information is delivered via the <a style="font-family: Courier New; color: black;">CompositeData</a> object, the <a style="font-family: Courier New; color: black;">rowType</a> object can be used.</p> <p>See the code fragment below:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">TabularType tabularType = nodes.getTabularType(); CompositeType rowType = tabularType.getRowType();</pre> <p>Below is an example of a rowType object (via JDeveloper Debug):</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_17.png" alt="" width="1009" height="242" /></p> <p>From this it is now clear that the <a style="font-family: Courier New; color: black;">CompositeData</a> object for a <a style="font-family: Courier New; color: black;">ProxyServicePipelineElementType</a> contains:</p> <table border="1" cellspacing="0" cellpadding="0" style="margin-bottom: 10px"> <tbody> <tr> <td valign="top" width="258"><b>Index</b></td> <td valign="top" width="258"><b>key</b></td> <td valign="top" width="258"><b>value</b></td> </tr> <tr> <td valign="top" width="258">0</td> <td valign="top" width="258">children</td> <td valign="top" width="258">Children of this node</td> </tr> <tr> <td valign="top" width="258">1</td> <td valign="top" width="258">label</td> <td valign="top" width="258">Label</td> </tr> <tr> <td valign="top" width="258">2</td> <td valign="top" width="258">name</td> <td valign="top" width="258">Name of the node</td> </tr> <tr> <td valign="top" width="258">3</td> <td valign="top" width="258">node-id</td> <td valign="top" width="258">Id of this node unique within the graph</td> </tr> <tr> <td valign="top" width="258">4</td> <td valign="top" width="258">type</td> <td valign="top" width="258">Pipeline element type</td> </tr> </tbody> </table> <p>In the code fragment below, an iterator is used to loop through the <a style="font-family: Courier New; color: black;">dataMap</a> object.</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">Iterator keyIter = nodes.keySet().iterator(); for (int j = 0; keyIter.hasNext(); ++j) { Object[] <a style="color: red;"><b>key</b></a> = ((Collection)keyIter.next()).toArray(); CompositeData <a style="color: red;"><b>compositeData</b></a> = nodes.get(key); ‚Ķ }</pre> <p>The <a style="font-family: Courier New; color: black;">key</a> object for the <b>first</b> node in the <a style="font-family: Courier New; color: black;">dataMap</a> object (via JDeveloper Debug) looks like:</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_18.png" alt="" width="262" height="35" /></p> <p>The value of this <a style="font-family: Courier New; color: black;">key</a> object is <b>25</b>, which also is shown as the value for the node-id of the <a style="font-family: Courier New; color: black;">compositeData</a> object, which for the <b>first</b> node in the <a style="font-family: Courier New; color: black;">dataMap</a> object (via JDeveloper Debug) looks like:</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_19.png" alt="" width="1025" height="138" /></p> <p>It‚Äôs obvious that the nodes in the pipeline form a hierarchy. A node can have children, which in turn can also have children, etc. Think for example of a ‚ÄúStage‚ÄĚ having an ‚ÄúIf Then‚ÄĚ action which in turn contains several ‚ÄúAssign‚ÄĚ actions. A proxy service Message Flow can of course contain all kinds of elements (see the Design Palette).</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_20.png" alt="" width="744" height="626" /></p> <p>Below is (for another proxy service) an example content fragment of the text file, that reflects the hierarchy:</p> <pre style="font-family: Courier New; color: brown; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;"> Index#76: <a style="color: red;"><b>level = 1</b></a> label = branch-node name = CheckOperationOperationalBranch node-id = 62 type = OperationalBranchNode children = [<a style="color: darkgreen;"><b>42</b>,<a style="color: purple;"><b>46</b></a>,50,61] <a style="color: red;"><b>level = 2</b></a> <a style="color: darkgreen;"><b>node-id = 42</b></a> children = [41] <a style="color: red;"><b>level = 3</b></a> label = route-node name = creeerZaak_Lk01RouteNode node-id = 41 type = RouteNode children = [40] <a style="color: red;"><b>level = 4</b></a> node-id = 40 children = [39] <a style="color: red;"><b>level = 5</b></a> label = route name = _ActionId-4977625172784205635-3567e5a2.15364c39a7e.-7b99 node-id = 39 type = Action children = [] <a style="color: red;"><b>level = 2</b></a> <a style="color: purple;"><b>node-id = 46</b></a> children = [45] <a style="color: red;"><b>level = 3</b></a> label = route-node name = updateZaak_Lk01RouteNode node-id = 45 type = RouteNode children = [44] <a style="color: red;"><b>level = 4</b></a> node-id = 44 children = [43] <a style="color: red;"><b>level = 5</b></a> label = route name = _ActionId-4977625172784205635-3567e5a2.15364c39a7e.-7b77 node-id = 43 type = Action children = [] ‚Ķ </pre> <p>Because of the interest in only certain kind of nodes (Route, Java Callout, Service Callout, etc.) some kind of filtering is needed. For this the <a style="color: darkgreen;"><b>label</b></a> and <a style="color: purple;"><b>type</b></a> keys are used.</p> <p>See the code fragment below:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">String label = (String)compositeData.get("<a style="color: darkgreen;"><b>label</b></a>"); String type = (String)compositeData.get("<a style="color: purple;"><b>type</b></a>"); if (<a style="color: purple;"><b>type</b></a>.equals("Action") && (<a style="color: darkgreen;"><b>label</b></a>.contains("wsCallout") || <a style="color: darkgreen;"><b>label</b></a>.contains("javaCallout") || <a style="color: darkgreen;"><b>label</b></a>.contains("route"))) { fileWriter.write(" Index#" + j + ":\n"); printCompositeData(nodes, key, 1); } else if (<a style="color: purple;"><b>type</b></a>.equals("OperationalBranchNode") || <a style="color: purple;"><b>type</b></a>.equals("RouteNode")) { fileWriter.write(" Index#" + j + ":\n"); printCompositeData(nodes, key, 1); }</pre> <p>Example content fragment of the text file:</p> <pre style="font-family: Courier New; color: brown; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;"> Index#72: level = 1 label = wsCallout name = _ActionId-7997641858449402984--36d1ada1.1562c8caabd.-7b7f node-id = 71 type = Action children = [66,70] Index#98: level = 1 label = wsCallout name = _ActionId-7997641858449402984--36d1ada1.1562c8caabd.-7997 node-id = 54 type = Action children = [48,53] Index#106: level = 1 label = wsCallout name = _ActionId-7997641858449402984--36d1ada1.1562c8caabd.-7cf4 node-id = 35 type = Action children = [30,34] </pre> <p>When we take a closer look at the node of type <a style="font-family: Courier New; color: black;">Action</a> and label <a style="font-family: Courier New; color: black;">wsCallout</a> with index <a style="font-family: Courier New; color: black;">106</a>, this can also be found in the MBean Browser:</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_21.png" alt="" width="1007" height="499" /><br /> [Via MBean Browser]</p> <p>The children node-id‚Äôs are <a style="font-family: Courier New; color: black;">30</a> (a node of type <a style="font-family: Courier New; color: black;">Sequence</a> and name <a style="font-family: Courier New; color: black;">requestTransform</a>, also having children) and <a style="font-family: Courier New; color: black;">34</a> (a node of type <a style="font-family: Courier New; color: black;">Sequence</a> and name <a style="font-family: Courier New; color: black;">responseTransform</a>, also having children).</p> <h2><span style="font-weight: bold;">Diving into attribute Metadata of the ResourceConfigurationMBean</span></h2> <p>For each found proxy service the metadata information (dependencies and dependents) is written to file.</p> <p>See the code fragment below:</p> <pre style="font-family: Courier New; color: black; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">fileWriter.write(" Metadata of " + canonicalName + "\n"); String[] dependencies = (String[])metadata.get("dependencies"); fileWriter.write(" dependencies:\n"); int size; size = dependencies.length; for (int i = 0; i < size; i++) { String dependency = dependencies[i]; if (!dependency.contains("Xquery")) { fileWriter.write(" - " + dependency + "\n"); } } fileWriter.write("" + "\n"); String[] dependents = (String[])metadata.get("dependents"); fileWriter.write(" dependents:\n"); size = dependents.length; for (int i = 0; i < size; i++) { String dependent = dependents[i]; fileWriter.write(" - " + dependent + "\n"); } fileWriter.write("" + "\n");</pre> <p>Example content fragment of the text file:</p> <pre style="font-family: Courier New; color: brown; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;"> Metadata of com.oracle.osb:Location=AdminServer,Name=ProxyService$ZKN ZaakService-2.0$proxy$UpdateZaak_Lk01_PS,Type=ResourceConfigurationMBean dependencies: - BusinessService$ZKN ZaakService-2.0$business$eBUS$eBUS_FolderService_BS - XMLSchema$CDM$Interface$StUF-ZKN_1_1_02$zkn0310$mutatie$zkn0310_msg_mutatie - BusinessService$ZKN ZaakService-2.0$business$eBUS$eBUS_SearchService_BS - BusinessService$ZKN ZaakService-2.0$business$eBUS$eBUS_LookupService_BS dependents: - ProxyService$JMSConsumerStuFZKNMessageService-1.0$proxy$JMSConsumerStuFZKNMessageService_PS - ProxyService$ZKN ZaakService-2.0$proxy$ZaakService_PS </pre> <p>As can be seen in the MBean Browser, the metadata for a particular proxy service shows the dependencies on other resources (like business services and XML Schemas) and other services that are dependent on the proxy service.</p> <p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201703_22.png" alt="" width="779" height="317" /><br /> [Via MBean Browser]</p> <p>By looking at the results in the text file "OSBServiceExplorer.txt", the dependencies between services (proxy and business) and also the dependencies with certain external web services (with a particular endpoint) could be extracted.</p> <p>Example content of the text file:</p> <pre style="font-family: Courier New; color: brown; border:none; padding: 5px; margin-top: 10px; margin-bottom: 10px;">Found server runtimes: - Server name: AdminServer. Server state: RUNNING - Server name: ManagedServer1. Server state: RUNNING - Server name: ManagedServer2. Server state: RUNNING Found total of 1132 refs, including the following proxy and business services: ‚Ķ - ProxyService: JMSConsumerStuFZKNMessageService-1.0/proxy/JMSConsumerStuFZKNMessageService_PS ‚Ķ - ProxyService: ZKN ZaakService-2.0/proxy/UpdateZaak_Lk01_PS ‚Ķ - BusinessService: ZKN ZaakService-2.0/business/eBUS/eBUS_FolderService_BS ‚Ķ ResourceConfiguration list of proxy and business services: ‚Ķ - Resource: com.oracle.osb:Location=AdminServer,Name=ProxyService$ZKN ZaakService-2.0$proxy$UpdateZaak_Lk01_PS,Type=ResourceConfigurationMBean Configuration of com.oracle.osb:Location=AdminServer,Name=ProxyService$ZKN ZaakService-2.0$proxy$UpdateZaak_Lk01_PS,Type=ResourceConfigurationMBean: service-type=Abstract SOAP, transport-type=local, url=local Index#72: level = 1 label = wsCallout name = _ActionId-7997641858449402984--36d1ada1.1562c8caabd.-7b7f node-id = 71 type = Action children = [66,70] Index#98: level = 1 label = wsCallout name = _ActionId-7997641858449402984--36d1ada1.1562c8caabd.-7997 node-id = 54 type = Action children = [48,53] Index#106: level = 1 label = wsCallout name = _ActionId-7997641858449402984--36d1ada1.1562c8caabd.-7cf4 node-id = 35 type = Action children = [30,34] Metadata of com.oracle.osb:Location=AdminServer,Name=ProxyService$ZKN ZaakService-2.0$proxy$UpdateZaak_Lk01_PS,Type=ResourceConfigurationMBean dependencies: - BusinessService$ZKN ZaakService-2.0$business$eBUS$eBUS_FolderService_BS - XMLSchema$CDM$Interface$StUF-ZKN_1_1_02$zkn0310$mutatie$zkn0310_msg_mutatie - BusinessService$ZKN ZaakService-2.0$business$eBUS$eBUS_SearchService_BS - BusinessService$ZKN ZaakService-2.0$business$eBUS$eBUS_LookupService_BS dependents: - ProxyService$JMSConsumerStuFZKNMessageService-1.0$proxy$JMSConsumerStuFZKNMessageService_PS - ProxyService$ZKN ZaakService-2.0$proxy$ZaakService_PS ‚Ķ</pre> <p>The java code:</p> <pre class="brush: xml; title: ; notranslate"> package nl.xyz.osbservice.osbserviceexplorer; import com.bea.wli.config.Ref; import com.bea.wli.sb.management.configuration.ALSBConfigurationMBean; import java.io.FileWriter; import java.io.IOException; import java.net.MalformedURLException; import java.util.Collection; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Properties; import java.util.Set; import javax.management.MBeanServerConnection; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.openmbean.CompositeData; import javax.management.openmbean.CompositeDataSupport; import javax.management.openmbean.CompositeType; import javax.management.openmbean.TabularDataSupport; import javax.management.openmbean.TabularType; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; import javax.naming.Context; import weblogic.management.jmx.MBeanServerInvocationHandler; import weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean; import weblogic.management.runtime.ServerRuntimeMBean; public class OSBServiceExplorer { private static MBeanServerConnection connection; private static JMXConnector connector; private static FileWriter fileWriter; /** * Indent a string * @param indent - The number of indentations to add before a string * @return String - The indented string */ private static String getIndentString(int indent) { StringBuilder sb = new StringBuilder(); for (int i = 0; i &lt; indent; i++) { sb.append(&quot; &quot;); } return sb.toString(); } /** * Print composite data (write to file) * @param nodes - The list of nodes * @param key - The list of keys * @param level - The level in the hierarchy of nodes */ private void printCompositeData(TabularDataSupport nodes, Object[] key, int level) { try { CompositeData compositeData = nodes.get(key); fileWriter.write(getIndentString(level) + &quot; level = &quot; + level + &quot;\n&quot;); String label = (String)compositeData.get(&quot;label&quot;); String name = (String)compositeData.get(&quot;name&quot;); String nodeid = (String)compositeData.get(&quot;node-id&quot;); String type = (String)compositeData.get(&quot;type&quot;); String[] childeren = (String[])compositeData.get(&quot;children&quot;); if (level == 1 || (label.contains(&quot;route-node&quot;) || label.contains(&quot;route&quot;))) { fileWriter.write(getIndentString(level) + &quot; label = &quot; + label + &quot;\n&quot;); fileWriter.write(getIndentString(level) + &quot; name = &quot; + name + &quot;\n&quot;); fileWriter.write(getIndentString(level) + &quot; node-id = &quot; + nodeid + &quot;\n&quot;); fileWriter.write(getIndentString(level) + &quot; type = &quot; + type + &quot;\n&quot;); fileWriter.write(getIndentString(level) + &quot; children = [&quot;); int size = childeren.length; for (int i = 0; i &lt; size; i++) { fileWriter.write(childeren[i]); if (i &lt; size - 1) { fileWriter.write(&quot;,&quot;); } } fileWriter.write(&quot;]\n&quot;); } else if (level &gt;= 2) { fileWriter.write(getIndentString(level) + &quot; node-id = &quot; + nodeid + &quot;\n&quot;); fileWriter.write(getIndentString(level) + &quot; children = [&quot;); int size = childeren.length; for (int i = 0; i &lt; size; i++) { fileWriter.write(childeren[i]); if (i &lt; size - 1) { fileWriter.write(&quot;,&quot;); } } fileWriter.write(&quot;]\n&quot;); } if ((level == 1 &amp;&amp; type.equals(&quot;OperationalBranchNode&quot;)) || level &gt; 1) { level++; int size = childeren.length; for (int i = 0; i &lt; size; i++) { key[0] = childeren[i]; printCompositeData(nodes, key, level); } } } catch (Exception ex) { ex.printStackTrace(); } } public OSBServiceExplorer(HashMap props) { super(); try { Properties properties = new Properties(); properties.putAll(props); initConnection(properties.getProperty(&quot;HOSTNAME&quot;), properties.getProperty(&quot;PORT&quot;), properties.getProperty(&quot;USERNAME&quot;), properties.getProperty(&quot;PASSWORD&quot;)); DomainRuntimeServiceMBean domainRuntimeServiceMBean = (DomainRuntimeServiceMBean)findDomainRuntimeServiceMBean(connection); ServerRuntimeMBean[] serverRuntimes = domainRuntimeServiceMBean.getServerRuntimes(); fileWriter = new FileWriter(&quot;OSBServiceExplorer.txt&quot;, false); fileWriter.write(&quot;Found server runtimes:\n&quot;); int length = (int)serverRuntimes.length; for (int i = 0; i &lt; length; i++) { ServerRuntimeMBean serverRuntimeMBean = serverRuntimes[i]; String name = serverRuntimeMBean.getName(); String state = serverRuntimeMBean.getState(); fileWriter.write(&quot;- Server name: &quot; + name + &quot;. Server state: &quot; + state + &quot;\n&quot;); } fileWriter.write(&quot;&quot; + &quot;\n&quot;); // Create an mbean instance to perform configuration operations in the created session. // // There is a separate instance of ALSBConfigurationMBean for each session. // There is also one more ALSBConfigurationMBean instance which works on the core data, i.e., the data which ALSB runtime uses. // An ALSBConfigurationMBean instance is created whenever a new session is created via the SessionManagementMBean.createSession(String) API. // This mbean instance is then used to perform configuration operations in that session. // The mbean instance is destroyed when the corresponding session is activated or discarded. ALSBConfigurationMBean alsbConfigurationMBean = (ALSBConfigurationMBean)domainRuntimeServiceMBean.findService(ALSBConfigurationMBean.NAME, ALSBConfigurationMBean.TYPE, null); Set&lt;Ref&gt; refs = alsbConfigurationMBean.getRefs(Ref.DOMAIN); fileWriter.write(&quot;Found total of &quot; + refs.size() + &quot; refs, including the following proxy and business services:\n&quot;); for (Ref ref : refs) { String typeId = ref.getTypeId(); if (typeId.equalsIgnoreCase(&quot;ProxyService&quot;)) { fileWriter.write(&quot;- ProxyService: &quot; + ref.getFullName() + &quot;\n&quot;); } else if (typeId.equalsIgnoreCase(&quot;BusinessService&quot;)) { fileWriter.write(&quot;- BusinessService: &quot; + ref.getFullName() + &quot;\n&quot;); } else { //fileWriter.write(ref.getFullName()); } } fileWriter.write(&quot;&quot; + &quot;\n&quot;); String domain = &quot;com.oracle.osb&quot;; String objectNamePattern = domain + &quot;:&quot; + &quot;Type=ResourceConfigurationMBean,*&quot;; Set&lt;ObjectName&gt; osbResourceConfigurations = connection.queryNames(new ObjectName(objectNamePattern), null); fileWriter.write(&quot;ResourceConfiguration list of proxy and business services:\n&quot;); for (ObjectName osbResourceConfiguration : osbResourceConfigurations) { CompositeDataSupport configuration = (CompositeDataSupport)connection.getAttribute(osbResourceConfiguration, &quot;Configuration&quot;); CompositeDataSupport metadata = (CompositeDataSupport)connection.getAttribute(osbResourceConfiguration, &quot;Metadata&quot;); String canonicalName = osbResourceConfiguration.getCanonicalName(); fileWriter.write(&quot;- Resource: &quot; + canonicalName + &quot;\n&quot;); if (canonicalName.contains(&quot;ProxyService&quot;)) { String servicetype = (String)configuration.get(&quot;service-type&quot;); CompositeDataSupport transportconfiguration = (CompositeDataSupport)configuration.get(&quot;transport-configuration&quot;); String transporttype = (String)transportconfiguration.get(&quot;transport-type&quot;); String url = (String)transportconfiguration.get(&quot;url&quot;); fileWriter.write(&quot; Configuration of &quot; + canonicalName + &quot;:&quot; + &quot; service-type=&quot; + servicetype + &quot;, transport-type=&quot; + transporttype + &quot;, url=&quot; + url + &quot;\n&quot;); } else if (canonicalName.contains(&quot;BusinessService&quot;)) { String servicetype = (String)configuration.get(&quot;service-type&quot;); CompositeDataSupport transportconfiguration = (CompositeDataSupport)configuration.get(&quot;transport-configuration&quot;); String transporttype = (String)transportconfiguration.get(&quot;transport-type&quot;); CompositeData[] urlconfiguration = (CompositeData[])transportconfiguration.get(&quot;url-configuration&quot;); String url = (String)urlconfiguration[0].get(&quot;url&quot;); fileWriter.write(&quot; Configuration of &quot; + canonicalName + &quot;:&quot; + &quot; service-type=&quot; + servicetype + &quot;, transport-type=&quot; + transporttype + &quot;, url=&quot; + url + &quot;\n&quot;); } if (canonicalName.contains(&quot;ProxyService&quot;)) { fileWriter.write(&quot;&quot; + &quot;\n&quot;); CompositeDataSupport pipeline = (CompositeDataSupport)configuration.get(&quot;pipeline&quot;); TabularDataSupport nodes = (TabularDataSupport)pipeline.get(&quot;nodes&quot;); TabularType tabularType = nodes.getTabularType(); CompositeType rowType = tabularType.getRowType(); Iterator keyIter = nodes.keySet().iterator(); for (int j = 0; keyIter.hasNext(); ++j) { Object[] key = ((Collection)keyIter.next()).toArray(); CompositeData compositeData = nodes.get(key); String label = (String)compositeData.get(&quot;label&quot;); String type = (String)compositeData.get(&quot;type&quot;); if (type.equals(&quot;Action&quot;) &amp;&amp; (label.contains(&quot;wsCallout&quot;) || label.contains(&quot;javaCallout&quot;) || label.contains(&quot;route&quot;))) { fileWriter.write(&quot; Index#&quot; + j + &quot;:\n&quot;); printCompositeData(nodes, key, 1); } else if (type.equals(&quot;OperationalBranchNode&quot;) || type.equals(&quot;RouteNode&quot;)) { fileWriter.write(&quot; Index#&quot; + j + &quot;:\n&quot;); printCompositeData(nodes, key, 1); } } fileWriter.write(&quot;&quot; + &quot;\n&quot;); fileWriter.write(&quot; Metadata of &quot; + canonicalName + &quot;\n&quot;); String[] dependencies = (String[])metadata.get(&quot;dependencies&quot;); fileWriter.write(&quot; dependencies:\n&quot;); int size; size = dependencies.length; for (int i = 0; i &lt; size; i++) { String dependency = dependencies[i]; if (!dependency.contains(&quot;Xquery&quot;)) { fileWriter.write(&quot; - &quot; + dependency + &quot;\n&quot;); } } fileWriter.write(&quot;&quot; + &quot;\n&quot;); String[] dependents = (String[])metadata.get(&quot;dependents&quot;); fileWriter.write(&quot; dependents:\n&quot;); size = dependents.length; for (int i = 0; i &lt; size; i++) { String dependent = dependents[i]; fileWriter.write(&quot; - &quot; + dependent + &quot;\n&quot;); } fileWriter.write(&quot;&quot; + &quot;\n&quot;); } } fileWriter.close(); System.out.println(&quot;Succesfully completed&quot;); } catch (Exception ex) { ex.printStackTrace(); } finally { if (connector != null) try { connector.close(); } catch (Exception e) { e.printStackTrace(); } } } /* * Initialize connection to the Domain Runtime MBean Server. */ public static void initConnection(String hostname, String portString, String username, String password) throws IOException, MalformedURLException { String protocol = &quot;t3&quot;; Integer portInteger = Integer.valueOf(portString); int port = portInteger.intValue(); String jndiroot = &quot;/jndi/&quot;; String mbeanserver = DomainRuntimeServiceMBean.MBEANSERVER_JNDI_NAME; JMXServiceURL serviceURL = new JMXServiceURL(protocol, hostname, port, jndiroot + mbeanserver); Hashtable hashtable = new Hashtable(); hashtable.put(Context.SECURITY_PRINCIPAL, username); hashtable.put(Context.SECURITY_CREDENTIALS, password); hashtable.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, &quot;weblogic.management.remote&quot;); hashtable.put(&quot;jmx.remote.x.request.waiting.timeout&quot;, new Long(10000)); connector = JMXConnectorFactory.connect(serviceURL, hashtable); connection = connector.getMBeanServerConnection(); } private static Ref constructRef(String refType, String serviceURI) { Ref ref = null; String[] uriData = serviceURI.split(&quot;/&quot;); ref = new Ref(refType, uriData); return ref; } /** * Finds the specified MBean object * * @param connection - A connection to the MBeanServer. * @return Object - The MBean or null if the MBean was not found. */ public Object findDomainRuntimeServiceMBean(MBeanServerConnection connection) { try { ObjectName objectName = new ObjectName(DomainRuntimeServiceMBean.OBJECT_NAME); return (DomainRuntimeServiceMBean)MBeanServerInvocationHandler.newProxyInstance(connection, objectName); } catch (MalformedObjectNameException e) { e.printStackTrace(); return null; } } public static void main(String[] args) { try { if (args.length &lt;= 0) { System.out.println(&quot;Provide values for the following parameters: HOSTNAME, PORT, USERNAME, PASSWORD.&quot;); } else { HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;(); map.put(&quot;HOSTNAME&quot;, args[0]); map.put(&quot;PORT&quot;, args[1]); map.put(&quot;USERNAME&quot;, args[2]); map.put(&quot;PASSWORD&quot;, args[3]); OSBServiceExplorer osbServiceExplorer = new OSBServiceExplorer(map); } } catch (Exception e) { e.printStackTrace(); } } } </pre> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/09/oracle-service-bus-service-exploring-via-weblogic-server-mbeans-with-jmx/">Oracle Service Bus : Service Exploring via WebLogic Server MBeans with JMX</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Marc Lameriks https://technology.amis.nl/?p=44208 Thu Mar 09 2017 04:34:00 GMT-0500 (EST) Oracle BPM 12c: Hide Implementation Details with the Refine Feature http://kettenisblogs.blogspot.com/2017/03/oracle-bpm-12c-hide-implementation.html <div dir="ltr" style="text-align: left;" trbidi="on"><i>Ever had a case with the Oracle BPM Suite where you wanted to create a BPMN model while hiding the details from the reader? Then the "refine" feature may be what you are looking for. Read on if you want to know more about this feature that has been added since 12c. I actually <a href="http://kettenisblogs.blogspot.se/2015/11/how-to-keep-your-business-process.html">blogged about it before</a>, but this time I want to also illustrate the impact it has on the flow trace.</i><br /><br />The "refine" feature is a way to detail an activity. &nbsp;Basically it is a specialization of the (already in 11g present) embedded subprocess. The difference being that - unlike a normal embedded subprocess - the refined activity keeps the icon of the main activity.<br /><br />To show this difference take the next example where I hide the details of a Script activity being executed before a User activity is scheduled. When I collapse that embedded subprocess it gets a blue color, hiding this technical detail but also that the main activity (still) is the User activity.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-47TFtbgow0s/WMBE61DEEOI/AAAAAAAAA3w/kBKrBsRajWYU2bGyeVx3O66m7yBsYyC-gCLcB/s1600/refine01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="148" src="https://4.bp.blogspot.com/-47TFtbgow0s/WMBE61DEEOI/AAAAAAAAA3w/kBKrBsRajWYU2bGyeVx3O66m7yBsYyC-gCLcB/s320/refine01.png" width="320" /></a><a href="https://2.bp.blogspot.com/-nqsdzUdfFZ0/WMBE_1N-HcI/AAAAAAAAA30/DSUvxnscpBsgjoZ2RXzzRO0fl2yjjGxvgCLcB/s1600/refine02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="83" src="https://2.bp.blogspot.com/-nqsdzUdfFZ0/WMBE_1N-HcI/AAAAAAAAA30/DSUvxnscpBsgjoZ2RXzzRO0fl2yjjGxvgCLcB/s200/refine02.png" width="200" /></a></div><br /><br />This can somewhat be mitigated by changing the icon of the activity, but the options are pretty limited. Furthermore, this deviates from the standard BPMN notation what some readers might find somewhat disruptive.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-By0Fyc1dsU8/WMBFMmM_UPI/AAAAAAAAA34/2ZN5CovulDwzRDT-tBY3sydAIuPG49fvgCLcB/s1600/refine03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="https://3.bp.blogspot.com/-By0Fyc1dsU8/WMBFMmM_UPI/AAAAAAAAA34/2ZN5CovulDwzRDT-tBY3sydAIuPG49fvgCLcB/s200/refine03.png" width="200" /></a><a href="https://3.bp.blogspot.com/-uyPGAGhROo0/WMBFPvZM4tI/AAAAAAAAA4A/Ru6Cvg3e6hkhSsBBAKZvJwiLcyDSigtvQCLcB/s1600/refine04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="165" src="https://3.bp.blogspot.com/-uyPGAGhROo0/WMBFPvZM4tI/AAAAAAAAA4A/Ru6Cvg3e6hkhSsBBAKZvJwiLcyDSigtvQCLcB/s200/refine04.png" width="200" /></a><a href="https://3.bp.blogspot.com/-NPhqXP12oYA/WMBFPcOsfnI/AAAAAAAAA38/KdOX-2Ps1NAUuTC8usOJPGvdP5dfPL2zQCLcB/s1600/refine05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="90" src="https://3.bp.blogspot.com/-NPhqXP12oYA/WMBFPcOsfnI/AAAAAAAAA38/KdOX-2Ps1NAUuTC8usOJPGvdP5dfPL2zQCLcB/s200/refine05.png" width="200" /></a></div><br />Now let's have a look at the refine feature. The use case here is a bit different, in that I want to hide from the reader that a User activity in reality is handled by some other application with some asynchronous interface to send the payload (to of what otherwise would be a normal Human Task) via a Send activity, after which I receive the updated payload and outcome via a Receive activity. In case you wonder why on earth I want to do this: the example is inspired by a real customer case where the BPM process orchestrates system and human interactions of which the latter actually are backed by activities in Siebel.<br /><br />You refine an activity by chosing "Refine" from the right-mouse-click context menu of the activity itself.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-WFFAWB1nLaE/WMBFxG60CNI/AAAAAAAAA4E/jSKY28SeVy49NhS6rHBzhg50OWrgaPHqgCLcB/s1600/refine06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://1.bp.blogspot.com/-WFFAWB1nLaE/WMBFxG60CNI/AAAAAAAAA4E/jSKY28SeVy49NhS6rHBzhg50OWrgaPHqgCLcB/s200/refine06.png" width="200" /></a></div><br />The initial result is some sort of an embedded subprocess to which a User activity has automatically been added, however without a Start and End event.<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-koWGdZuLX2k/WMBF64IindI/AAAAAAAAA4I/2AfsBFVo4fUYo3OB06DgqIc9uQOB1KgmwCLcB/s1600/refine07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://3.bp.blogspot.com/-koWGdZuLX2k/WMBF64IindI/AAAAAAAAA4I/2AfsBFVo4fUYo3OB06DgqIc9uQOB1KgmwCLcB/s200/refine07.png" width="189" /></a></div><br /><br />I can now detail this activity by adding a Send and Receive activity to it. Because I don't wamt implement the User activity I put that in draft mode. Before you criticize how ugly this is, consider this: you still may want to express that the Send and Receive actually are a placeholder of something that is not implemented as a Human Task, but still concerns some implementation of what logically is a User activity.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-1Os4-pzJp2g/WMBGTPBymiI/AAAAAAAAA4M/bRjrXpDpoDU61qO8xaKvlZQXsKcr_w2XACLcB/s1600/refine08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="88" src="https://4.bp.blogspot.com/-1Os4-pzJp2g/WMBGTPBymiI/AAAAAAAAA4M/bRjrXpDpoDU61qO8xaKvlZQXsKcr_w2XACLcB/s320/refine08.png" width="320" /></a></div><br />I can compile and deploy this BPM application without any issue, but ... As it turns out it does not work.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-OjqC_X2UJKo/WMBGfktLByI/AAAAAAAAA4Q/V1JQe7lcNzYn0dVSwGPFS5cdn1uVwXJUACLcB/s1600/refine09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="95" src="https://1.bp.blogspot.com/-OjqC_X2UJKo/WMBGfktLByI/AAAAAAAAA4Q/V1JQe7lcNzYn0dVSwGPFS5cdn1uVwXJUACLcB/s320/refine09.png" width="320" /></a></div><br />Because of what I consider a bug, the refined activity actually does need a Start and End event, just like a regular Embedded Subprocess. The compiler just forgets to tell you.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-ryYZfrhjsV0/WMBR4ObbcBI/AAAAAAAAA4g/R_QzcYh5bRIkDct_K3XB2fEjydEVZxBbwCLcB/s1600/refine10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="118" src="https://2.bp.blogspot.com/-ryYZfrhjsV0/WMBR4ObbcBI/AAAAAAAAA4g/R_QzcYh5bRIkDct_K3XB2fEjydEVZxBbwCLcB/s320/refine10.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-Nq1JQFj_1FE/WMBR4P7sTUI/AAAAAAAAA4k/KMgTMpuHr_MIPofn_QrmsU8tXNUM6D2CwCLcB/s1600/refine11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="164" src="https://2.bp.blogspot.com/-Nq1JQFj_1FE/WMBR4P7sTUI/AAAAAAAAA4k/KMgTMpuHr_MIPofn_QrmsU8tXNUM6D2CwCLcB/s320/refine11.png" width="320" /></a></div><br /><br />Not surprising, as you can see the flow trace is not different than that of a regular Embedded Subprocess. And what you can do with it is also the same, as you can tell from the next iteration in which I have implemented some fallback scenario to schedule a User activity whenever the handling by the other application is not done within some time limit.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-yrGH7CIsCDo/WMBSLdtd2hI/AAAAAAAAA4o/H8S5UEdjzFQE0IgNhi2LPVtdyd8v0d4iQCLcB/s1600/refine12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="120" src="https://1.bp.blogspot.com/-yrGH7CIsCDo/WMBSLdtd2hI/AAAAAAAAA4o/H8S5UEdjzFQE0IgNhi2LPVtdyd8v0d4iQCLcB/s320/refine12.png" width="320" /></a></div><br />And despite all these details, I can still present the activity to the reader as a simple User activity, only difference being the + symbol :-)<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-8370Qse0lA8/WMBSSTdBNFI/AAAAAAAAA4s/X-Y1NjH4jjw_PYQA5dZPEzW3jqUqMM4vACLcB/s1600/refine13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="75" src="https://1.bp.blogspot.com/-8370Qse0lA8/WMBSSTdBNFI/AAAAAAAAA4s/X-Y1NjH4jjw_PYQA5dZPEzW3jqUqMM4vACLcB/s200/refine13.png" width="200" /></a></div><br /></div> Jan Kettenis tag:blogger.com,1999:blog-33270406.post-8557365412349933538 Wed Mar 08 2017 13:55:00 GMT-0500 (EST) Upcoming ODTUG Webinars http://www.odtug.com/p/bl/et/blogaid=679&source=1 ODTUG Online EducationBelow is the list of upcoming webinars. If there is a topic you would like covered that is not on our current list, or if you would like to present a webinar, please email alicia@odtug.com. Did you miss a webinar? Our Webinar File Library lists all of our webinars and ODTUG http://www.odtug.com/p/bl/et/blogaid=679&source=1 Wed Mar 08 2017 13:31:48 GMT-0500 (EST) 12cR1 RAC Posts -- 8a : Setting up SingleInstance DG Standby for RAC http://hemantoracledba.blogspot.com/2017/03/12cr1-rac-posts-8a-setting-up.html <div dir="ltr" style="text-align: left;" trbidi="on">This is the first of a small series of subposts on setting up SingleInstance DataGuard Standby for my 12cR1 RAC environment.<br /><br />Primary Database : 12cR1 MultiTenant RAC : 2 nodes, database on ASM<br />Standby Database : 12cR1 MultiTenant SingleInstance : 1 node, database on FileSystem<br /><br />The "difficulties" are :<br />a. &nbsp;The Primary Database is MultiTenant with 1 PDB besides the SEED<br />b. &nbsp;The Primary Database is on ASM but the Standby is to be built on FileSystem<br />c. &nbsp;The Primary is a 2-node Cluster while the Standby is a SingleInstance installatin<br /><br />This post is on the initial setup.<br /><br /><u>RAC Nodes</u><br />collabn1.racattack &nbsp; 192.168.78.51<br />collabn2.racattack &nbsp; 192.168.78.52<br /><br /><u>SingleInstance Node&nbsp;</u><br />oem132.racattack &nbsp; &nbsp; 192.168.78.100<br /><div><br /></div><div><br /></div><div><u>Database Changes :</u></div><div><div>SQL&gt; alter database force logging;</div><div><br /></div><div>Database altered.</div><div><br /></div><div>SQL&gt; alter database flashback on;</div><div><br /></div><div>Database altered.</div><div><br /></div><div>SQL&gt;</div><div>SQL&gt; alter database add standby logfile size 50M;</div><div><br /></div><div>Database altered.</div><div><br /></div><div>SQL&gt; alter database add standby logfile size 50M;</div><div><br /></div><div>Database altered.</div><div><br /></div><div>SQL&gt; alter database add standby logfile size 50M;</div><div><br /></div><div>Database altered.</div><div><br /></div><div>SQL&gt; alter database add standby logfile size 50M;</div><div><br /></div><div>Database altered.</div><div><br /></div><div>SQL&gt;&nbsp;alter database add standby logfile size 50M;</div><div><br /></div><div>Database altered.</div><div><br /></div><div>SQL&gt;</div><div>SQL&gt;select &nbsp;group# , status, type, member from v$logfile order by 1;</div></div><div><br /></div><div><br /></div><div><u>Listener on Standby Server :</u></div><div><div>LISTENER =</div><div>&nbsp; (DESCRIPTION_LIST =</div><div>&nbsp; &nbsp; (DESCRIPTION =</div><div>&nbsp; &nbsp; &nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = oem132.racattack)(PORT = 1521))</div><div>&nbsp; &nbsp; &nbsp; (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))</div><div>&nbsp; &nbsp; )</div><div>&nbsp; )</div><div><br /></div><div>SID_LIST_LISTENER=</div><div>(SID_LIST =</div><div>&nbsp; (SID_DESC =</div><div>&nbsp; &nbsp; (ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)</div><div>&nbsp; &nbsp; (SID_NAME = STBY)</div><div>&nbsp; &nbsp;)</div><div>&nbsp; (SID_DESC =</div><div>&nbsp; &nbsp; (GLOBAL_NAME = STBY_DGMGRL)</div><div>&nbsp; &nbsp; (ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)</div><div>&nbsp; &nbsp; (SID_NAME = STBY)</div><div>&nbsp; &nbsp;)</div><div>)<br /><br /><br />tnsnames.ora on first RAC Node :<br />STBY =<br />&nbsp; (DESCRIPTION =<br />&nbsp; &nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = oem132)(PORT = 1521))<br />&nbsp; &nbsp; (CONNECT_DATA =<br />&nbsp; &nbsp; &nbsp; (SERVER = DEDICATED)<br />&nbsp; &nbsp; &nbsp; (SERVICE_NAME = STBY)<br />&nbsp; &nbsp; )<br />&nbsp; )<br /><br />STBY_DGB =<br />&nbsp; (DESCRIPTION =<br />&nbsp; &nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = oem132)(PORT = 1521))<br />&nbsp; &nbsp; (CONNECT_DATA =<br />&nbsp; &nbsp; &nbsp; (SERVER = DEDICATED)<br />&nbsp; &nbsp; &nbsp; (SERVICE_NAME = STBY_DGMGRL)<br />&nbsp; &nbsp; )<br />&nbsp; )<br /><br /><br /><u>STBY Instance Parameter File :</u><br />compatible=12.1.0.2.0<br />db_name=RAC<br />db_unique_name=STBY<br />enable_pluggable_database=TRUE<br />sga_target=800M<br />db_file_name_convert='+DATA/RAC','/u01/app/oracle/oradata/STBY','+FRA/RAC','/u01/app/oracle/fast_recovery_area/STBY'<br />log_file_name_convert='+DATA/RAC','/u01/app/oracle/oradata/STBY','+FRA/RAC','/u01/app/oracle/fast_recovery_area/STBY'<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 />remote_login_passwordfile=EXCLUSIVE<br /><br /><br /><u>Copying the Password File :</u><br />ASMCMD&gt; pwcopy +DATA/RAC/PASSWORD/pwdrac.277.931824933 /var/tmp/RACPasswordFile<br />copying +DATA/RAC/PASSWORD/pwdrac.277.931824933 -&gt; /var/tmp/RACPasswordFile<br />ASMCMD&gt; exit<br />scp /var/tmp/RACPasswordFile oracle@oem132:/u01/app/oracle/product/12.1.0/dbhome_1/dbs/orapwSTBY<br /><br /><br /><i>to be continued in post 8b on the filesystem directories for the STBY instance and the execution of the DUPLICATE DATABASE command.</i><br /><br /></div></div></div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-6148360840082632943 Wed Mar 08 2017 10:08:00 GMT-0500 (EST) Getting ADF Data in a Jet Component (2) https://technology.amis.nl/2017/03/08/getting-adf-data-jet-component-2/ <p>In my <a href="https://technology.amis.nl/2017/03/07/getting-adf-data-jet-component/">previous blog</a> I explained how to get ADF Data in a Jet Component, this was done by iterating through a ViewObject and rendering a component per element in the View Object. When you want to use the <a href="http://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html?component=home&amp;demo=rootVisualizations">DVT&#8217;s from Oracle Jet</a>, this won&#8217;t do the thing, because you will need the entire data set to be present at once in your component. This blog will show you how to do that without using Rest Services.</p> <p>My colleague <a href="https://technology.amis.nl/author/lucas-jellema/">Lucas Jellema</a>¬†made a JSONProviderBean, which makes data from data bindings¬†available as nested JSON object in client side JavaScript.<a title="Jump to Footnotes at end of page" href="#footnote"><sup>1</sup></a></p> <p>Using this bean we can use the iterator binding of our View Object in our component page fragment.</p> <pre class="brush: plain; title: ; notranslate"> &lt;div&gt; &lt;amis-chart chart-data=&quot;#{jsonProviderBean[bindings.EmployeesVO.DCIteratorBinding]}&quot;/&gt; &lt;/div&gt; </pre> <p>This will pass the JSON as a <strong>string </strong>to our component.</p> <pre class="brush: plain; title: ; notranslate"> { &quot;properties&quot;: { &quot;chartData&quot;: { &quot;type&quot;: &quot;string&quot; } } } </pre> <p>In our component viewmodel we can now parse this string into a json object. The &#8220;values&#8221; object of this json object contains the data we need for our barchart, but it is not in a form the barchart can understand. Therefore you need to write function to get the data you need and put it into a format that the barchart does understand.</p> <pre class="brush: plain; title: ; notranslate"> function AmisChartComponentModel(context) { var self = this; context.props.then(function (propertymap) { self.properties = propertymap; var dataAsJson = JSON.parse(propertymap.chartData); var barData = self.createBarSeries(dataAsJson.values); /* set chart data */ self.barSeriesValue = ko.observableArray(barData); }) //function to transform the data. self.createBarSeries = function (jsonDataArray) { var data = []; jsonDataArray.forEach(function (item, index, arr) { data.push( { &quot;name&quot; : item.FirstName, &quot;items&quot; : [item.Salary] }); }) return data; } } return AmisChartComponentModel; }); </pre> <p>We now have our entire employee data set available for the barchart. In this case I made a chart for Salary per employee, we can do all the fancy interactions with the component that we can normally do as well, for example stacking the data or changing from a horizontal to a vertical graph.</p> <p><img class="alignnone wp-image-44202" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/application-chart.png?resize=468%2C373&#038;ssl=1" alt="" srcset="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/application-chart.png?w=780&amp;ssl=1 780w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/application-chart.png?resize=300%2C239&amp;ssl=1 300w" sizes="(max-width: 468px) 100vw, 468px" data-recalc-dims="1" />¬† ¬†<img class="alignnone wp-image-44204" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/application-chart-2.png?resize=472%2C373&#038;ssl=1" alt="" srcset="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/application-chart-2.png?w=776&amp;ssl=1 776w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/application-chart-2.png?resize=300%2C237&amp;ssl=1 300w" sizes="(max-width: 472px) 100vw, 472px" data-recalc-dims="1" /></p> <h4 id="footnote">Sources</h4> <ol> <li><a href="https://github.com/lucasjellema/adf-binding-to-json">https://github.com/lucasjellema/adf-binding-to-json</a></li> <li><a href="https://technology.amis.nl/2017/03/07/getting-adf-data-jet-component/">https://technology.amis.nl/2017/03/07/getting-adf-data-jet-component/</a></li> <li><a href="http://andrejusb.blogspot.nl/2015/12/improved-jet-rendering-in-adf.html">http://andrejusb.blogspot.nl/2015/12/improved-jet-rendering-in-adf.html</a></li> <li><a href="https://blogs.oracle.com/groundside/entry/jet_composite_components_i_backgrounder">https://blogs.oracle.com/groundside/entry/jet_composite_components_i_backgrounder (and the other blogs)</a></li> <li>Source of this demo:¬†<a href="https://github.com/Keepertje/ADF-Jet-Integration-Demo">Github</a></li> </ol> <h4>Versions used</h4> <p>JDeveloper 12.1.3,<br /> OracleJet V2.2.0</p> <h4>Disclaimer</h4> <p>The information is based on my personal research. At the moment, Oracle does not support or encourage integrating ADF and Jet. Oracle is working on JET Composite Components in ADF.</p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/08/getting-adf-data-jet-component-2/">Getting ADF Data in a Jet Component (2)</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Cindy Berghuizen https://technology.amis.nl/?p=44201 Wed Mar 08 2017 07:47:56 GMT-0500 (EST) ASP .NET Core (CLR) on Pivotal Cloud Foundry http://feedproxy.google.com/~r/blogspot/PEqWE/~3/0i3aVb5zLYc/asp-net-core-clr-on-pivotal-cloud.html There are two ways to run .NET applications on Pivotal Cloud Foundry. In short it's as follows<br /><br /><ol><li>Windows 2012 R2 Stack (Windows 2016 coming soon)</li><li>Linux Stack - ASP.NET Core CLR only</li></ol><br />In the example below I am going to show how you would push a sample&nbsp;ASP.NET Core application using the default Linux stack. I am using <a href="http://run.pivotal.io/">run.pivotal.io</a> or better knows as PWS (Pivotal Web Services) instance which only supports a Linux stack. In your own PCF installation an operator may have provided Windows support in which case a "cf stacks" is one way to find out as shown below<br /><br /><div><span style="color: #3d85c6;">$ cf stacks </span></div><div><span style="color: #3d85c6;">Getting stacks in org pivot-papicella / space development as papicella@pivotal.io... </span></div><div><span style="color: #3d85c6;">OK </span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">name&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description</span></div><div><span style="color: #3d85c6;">cflinuxfs2&nbsp; &nbsp; &nbsp; Cloud Foundry Linux-based filesystem </span></div><!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> <br /><div><span style="color: #3d85c6;">windows2012R2&nbsp; &nbsp;Microsoft Windows / .Net 64 bit</span></div><div><br /></div><div><u><b>Steps</b></u></div><div><br /></div><div>1. Clone a demo as shown below</div><div><br /></div><div><div><span style="color: #3d85c6;">$ git clone https://github.com/bingosummer/aspnet-core-helloworld.git</span></div><div><span style="color: #3d85c6;">Cloning into 'aspnet-core-helloworld'...</span></div><div><span style="color: #3d85c6;">remote: Counting objects: 206, done.</span></div><div><span style="color: #3d85c6;">remote: Total 206 (delta 0), reused 0 (delta 0), pack-reused 206</span></div><div><span style="color: #3d85c6;">Receiving objects: 100% (206/206), 43.40 KiB | 0 bytes/s, done.</span></div><div><span style="color: #3d85c6;">Resolving deltas: 100% (78/78), done.</span></div></div><div><br /></div><div>2. Change to the right directory as shown below</div><div><br /></div><div><span style="color: #3d85c6;">$ cd aspnet-core-helloworld</span></div><div><br /></div><div>3. Edit <b>manifest.yml</b> to use the BETA buildpack as follows. You can list out the build packs using "<b>cf buildpacks</b>"</div><div><br /></div><div><div><span style="color: #3d85c6;">---</span></div><div><span style="color: #3d85c6;">applications:</span></div><div><span style="color: #3d85c6;">- name: sample-aspnetcore-helloworld</span></div><div><span style="color: #3d85c6;">&nbsp; random-route: true</span></div><div><span style="color: #3d85c6;">&nbsp; memory: 512M</span></div><div><span style="color: #3d85c6;">&nbsp; buildpack: dotnet_core_buildpack_beta</span></div></div><div><br /></div><div>4. Push as shown below</div><div><br /></div><div><div><span style="color: #3d85c6;">pasapicella@pas-macbook:~/apps/dotnet/aspnet-core-helloworld$ cf push</span></div><div><span style="color: #3d85c6;">Using manifest file /Users/pasapicella/apps/dotnet/aspnet-core-helloworld/manifest.yml</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">Updating app sample-aspnetcore-helloworld in org apples-pivotal-org / space development as papicella@pivotal.io...</span></div><div><span style="color: #3d85c6;">OK</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">Uploading sample-aspnetcore-helloworld...</span></div><div><span style="color: #3d85c6;">Uploading app files from: /Users/pasapicella/pivotal/apps/dotnet/aspnet-core-helloworld</span></div><div><span style="color: #3d85c6;">Uploading 21.9K, 15 files</span></div><div><span style="color: #3d85c6;">Done uploading</span></div><div><span style="color: #3d85c6;">OK</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">Stopping app sample-aspnetcore-helloworld in org apples-pivotal-org / space development as papicella@pivotal.io...</span></div><div><span style="color: #3d85c6;">OK</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">Starting app sample-aspnetcore-helloworld in org apples-pivotal-org / space development as papicella@pivotal.io...</span></div><div><span style="color: #3d85c6;">Downloading dotnet_core_buildpack_beta...</span></div><div><span style="color: #3d85c6;">Downloaded dotnet_core_buildpack_beta</span></div><div><span style="color: #3d85c6;">Creating container</span></div><div><span style="color: #3d85c6;">Successfully created container</span></div><div><span style="color: #3d85c6;">Downloading build artifacts cache...</span></div><div><span style="color: #3d85c6;">Downloading app package...</span></div><div><span style="color: #3d85c6;">Downloaded app package (21.5K)</span></div><div><span style="color: #3d85c6;">Downloaded build artifacts cache (157.7M)</span></div></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">...</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><div><span style="color: #3d85c6;">-----&gt; Saving to buildpack cache</span></div><div><span style="color: #3d85c6;">&nbsp; &nbsp; Copied 0 files from /tmp/app/libunwind to /tmp/cache</span></div><div><span style="color: #3d85c6;">&nbsp; &nbsp; Copied 0 files from /tmp/app/.dotnet to /tmp/cache</span></div><div><span style="color: #3d85c6;">&nbsp; &nbsp; Copied 0 files from /tmp/app/.nuget to /tmp/cache</span></div><div><span style="color: #3d85c6;">&nbsp; &nbsp; OK</span></div><div><span style="color: #3d85c6;">ASP.NET Core buildpack is done creating the droplet</span></div><div><span style="color: #3d85c6;">Uploading droplet, build artifacts cache...</span></div><div><span style="color: #3d85c6;">Uploading build artifacts cache...</span></div><div><span style="color: #3d85c6;">Uploading droplet...</span></div><div><span style="color: #3d85c6;">Uploaded build artifacts cache (157.7M)</span></div><div><span style="color: #3d85c6;">Uploaded droplet (157.7M)</span></div><div><span style="color: #3d85c6;">Uploading complete</span></div><div><span style="color: #3d85c6;">Destroying container</span></div><div><span style="color: #3d85c6;">Successfully destroyed container</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">0 of 1 instances running, 1 starting</span></div><div><span style="color: #3d85c6;">0 of 1 instances running, 1 starting</span></div><div><span style="color: #3d85c6;">1 of 1 instances running</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">App started</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">OK</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">App sample-aspnetcore-helloworld was started using this command `dotnet run --project src/dotnetstarter --server.urls http://0.0.0.0:${PORT}`</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">Showing health and status for app sample-aspnetcore-helloworld in org apples-pivotal-org / space development as papicella@pivotal.io...</span></div><div><span style="color: #3d85c6;">OK</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">requested state: started</span></div><div><span style="color: #3d85c6;">instances: 1/1</span></div><div><span style="color: #3d85c6;">usage: 512M x 1 instances</span></div><div><span style="color: #3d85c6;">urls: sample-aspnetcore-helloworld-gruffier-jackpot.cfapps.io</span></div><div><span style="color: #3d85c6;">last uploaded: Wed Mar 8 10:46:44 UTC 2017</span></div><div><span style="color: #3d85c6;">stack: cflinuxfs2</span></div><div><span style="color: #3d85c6;">buildpack: dotnet_core_buildpack_beta</span></div><div><span style="color: #3d85c6;"><br /></span></div><div><span style="color: #3d85c6;">&nbsp; state &nbsp; &nbsp; since &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cpu &nbsp; &nbsp; memory &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;disk &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; details</span></div><div><span style="color: #3d85c6;">#0 &nbsp; running &nbsp; 2017-03-08 09:48:29 PM &nbsp; 22.4% &nbsp; 36.7M of 512M &nbsp; 556.8M of 1G</span></div></div><div><br /></div><div><br /></div><div>Verify the application using the URL given at the end of the push</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-7XeOBRHqYEg/WL_iPjTPvKI/AAAAAAAAA3Y/JhOCq51VMmYoRaR2ZU7ybZhKPSK7SDt-QCLcB/s1600/Screen%2BShot%2B2017-03-08%2Bat%2B9.51.05%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="108" src="https://2.bp.blogspot.com/-7XeOBRHqYEg/WL_iPjTPvKI/AAAAAAAAA3Y/JhOCq51VMmYoRaR2ZU7ybZhKPSK7SDt-QCLcB/s320/Screen%2BShot%2B2017-03-08%2Bat%2B9.51.05%2BPM.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-YXuWJ-UC2P8/WL_iQIKTY3I/AAAAAAAAA3c/Ccz9nUfW6wIK6jjvUGxrpwNe-ekv3kLwQCLcB/s1600/Screen%2BShot%2B2017-03-08%2Bat%2B9.51.19%2BPM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="132" src="https://1.bp.blogspot.com/-YXuWJ-UC2P8/WL_iQIKTY3I/AAAAAAAAA3c/Ccz9nUfW6wIK6jjvUGxrpwNe-ekv3kLwQCLcB/s320/Screen%2BShot%2B2017-03-08%2Bat%2B9.51.19%2BPM.png" width="320" /></a></div><div><br /></div><div><br /></div><div><br /></div><div><div><br /></div></div><div class="blogger-post-footer">http://feeds.feedburner.com/TheBlasFromPas</div><img src="http://feeds.feedburner.com/~r/blogspot/PEqWE/~4/0i3aVb5zLYc" height="1" width="1" alt=""/> Pas Apicella tag:blogger.com,1999:blog-6527688743456205256.post-9103989944587132732 Wed Mar 08 2017 05:57:00 GMT-0500 (EST) Guesswork https://jonathanlewis.wordpress.com/2017/03/07/guesswork/ <p>A <a href="http://community.oracle.com/thread/4023014"><em><strong>recent posting on the OTN database forum</strong></em></a> described a problem with an insert (as select) statement that sometimes ran extremely slowly: nothing interesting yet, there could be plenty of boring reasons for that to happen. The same SQL statement (by SQL_ID) might take 6 hours to insert 300K rows one night while taking just a few minutes to insert 900K another night (still nothing terribly interesting).</p> <p>An analysis of the ASH data about the statement showed that the problem was on the &#8220;LOAD TABLE CONVENTIONAL&#8221; operation &#8211; which starts to get interesting if you also assume that someone who was competent to look at ASH would probably have noticed whether or not the time spent was on (the first obvious guess) some variant of <em>&#8220;TX enqueue&#8221;</em> waits or <em>&#8220;log file&#8221;</em> waits or something amazingly different. It&#8217;s also a little more interesting if you&#8217;ve noticed that the title of the posting is about <strong><em>&#8220;consuming a lot of CPU time&#8221;</em></strong> &#8211; so where could that be going if we see most of the excess time going on the <em><strong>insert</strong> </em>rather than on the <em><strong>select</strong></em>.</p> <p>Here&#8217;s an enormous clue that this might be a &#8220;non-standard&#8221; problem &#8211; the SQL statement starts like this:</p> <pre class="brush: plain; title: ; notranslate"> INSERT /*+ ignore_row_on_dupkey_index(tgt OTC_DAT_TV_PROC_STATUS_UK) */ INTO OTC_DAT_TV_PROC_STATUS TGT ( {list of columns} ) SELECT /*+ parallel(8) */ ... </pre> <p>See the hint which says <em>&#8220;ignore rows if they raise duplicate key errors against index</em> <em>otc_dat_tv_proc_status_uk&#8221;</em> ? Think what it might take to implement code that obeys the hint &#8211; Oracle can&#8217;t know that a row is duplicating a value until it has inserted the row (to get a rowid) then tried to maintain the index and discovered the pre-existing value, at which point it raises an exception, then handles it by undoing the single row insert (I wonder what that does to array inserts, and the logic of triggers), then carries on with the next row. (I suppose the code could check every relevant index before doing the insert &#8211; but that would mean a very big, and possibly very resource-intensive, change to all existing &#8220;insert a row&#8221; code.)</p> <p>Surely we&#8217;re going to see some dramatic effects if a large fraction of our rows result in duplicate values.</p> <p>Warning &#8211; the guess might not be right but it&#8217;s much more interesting than all the other guesses you might make at this point and a good excuse for doing a bit of experimentation and learning. So here&#8217;s a simple model to test the &#8220;excess work&#8221; hypothesis &#8211; running against 11.2.0.4:</p> <pre class="brush: plain; title: ; notranslate"> rem rem Script: ignore_dupkey.sql rem Author: Jonathan Lewis rem Dated: Mar 2017 rem drop table t2; drop table t1; create table t1 nologging as select * from all_objects where rownum &lt;= 50000 ; -- &gt; comment to protect WordPress formatting create table t2 nologging as select * from all_objects where rownum &lt;= 50000 ; -- &gt; comment to protect WordPress formatting update t1 set object_id = object_id + (select max(object_id) from t1) ; commit; create unique index t1_i1 on t1(object_id); begin dbms_stats.gather_table_stats( ownname =&gt; user, tabname =&gt;'T1', method_opt =&gt; 'for all columns size 1' ); dbms_stats.gather_table_stats( ownname =&gt; user, tabname =&gt;'T2', method_opt =&gt; 'for all columns size 1' ); end; / </pre> <p>All I&#8217;ve done is create two copies of the same data &#8211; with an update in place that changes one set of data so that the <em><strong>object_id</strong></em> doesn&#8217;t overlap with the <em><strong>object_id</strong></em> in the other set. The update statement is something that I&#8217;m going to include in one test but exclude from the second. Now for the statement that tests for the effects of the hint:</p> <pre class="brush: plain; title: ; notranslate"> execute snap_events.start_snap execute snap_my_stats.start_snap insert /*+ ignore_row_on_dupkey_index(t1 (object_id)) */ into t1 select * from t2 ; execute snap_my_stats.end_snap execute snap_events.end_snap </pre> <p>There are several different things I could do once I&#8217;ve got this basic test set up if I want to refine what I&#8217;m testing and isolate certain aspects of the mechanism, but all I&#8217;ll do for this note is a simple report of some figures from the two tests &#8211; one where the <em><strong>object_id</strong></em> values don&#8217;t overlap and one where <em><strong>t1</strong></em> and <em><strong>t2</strong></em> are exact copies of each other. The two procedures wrapping the statement are just my standard routines for capturing changes in <em><strong>v$mystat</strong></em> and <em><strong>v$session_event</strong></em> for my session.</p> <p>For the insert where I&#8217;ve done the update to avoid any duplicates appearing the insert completed in about 0.3 seconds, generating 10MB of redo and 2MB of undo.</p> <p>When I removed the update statement the (continuously failing) insert took 35.5 seconds to complete, of which almost all the time was CPU time. The redo jumped to 478MB with 14MB of undo. The extreme level of redo surprised me slightly especially since the scale of the change was so much greater than that of the undo &#8211; I think it may be due to a problem with Oracle needing to unwind one row from an (internal) array insert before retrying. Here, taken from the session stats of the problem run, is a little indication of why the time (and especially the CPU time) increased so much:</p> <pre class="brush: plain; title: ; notranslate"> Name Value ---- ----- rollback changes - undo records applied 95,014 active txn count during cleanout 24,627 cleanout - number of ktugct calls 24,627 HSC Heap Segment Block Changes 97,509 Heap Segment Array Inserts 97,509 recursive calls 682,574 recursive cpu usage 2,193 session logical reads 1,341,077 </pre> <p>Obviously there&#8217;s a lot of work done rolling back changes that should not have been made (though why it&#8217;s reported as 95,000 rather than 100,000 I don&#8217;t know and I&#8217;d rather not do a trace of buffer activity to find out) with an associated extra load of data block activity. Most visible, though, is the huge number of recursive calls with, perhaps associated, a very large number of session logical reads. Clearly it&#8217;s worth enabling extended tracing to see what&#8217;s going on &#8211; if you haven&#8217;t already guessed what some of those calls are about. Here&#8217;s an extract from the top of an appropriate <em><strong>tkprof</strong></em> output:</p> <pre class="brush: plain; title: ; notranslate"> tkprof test_ora_32298.trc ignore_dupkey sort=execnt select /*+ rule */ c.name, u.name from con$ c, cdef$ cd, user$ u where c.con# = cd.con# and cd.enabled = :1 and c.owner# = u.user# call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 48753 1.86 2.08 0 0 0 0 Execute 48753 3.75 4.17 0 0 0 0 Fetch 48753 2.86 3.12 0 97506 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 146259 8.47 9.38 0 97506 0 0 select o.name, u.name from obj$ o, user$ u where o.obj# = :1 and o.owner# = u.user# call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 48753 1.87 1.99 0 0 0 0 Execute 48753 3.60 3.63 0 0 0 0 Fetch 48753 7.35 7.52 0 243765 0 48753 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 146259 12.84 13.14 0 243765 0 48753 </pre> <p>The top two statements in the trace file show Oracle first trying to find the name of the constraint that has been breached, then falling back to searching for the name of the unique index that has caused the error to appear. If I had created a unique constraint rather than just a unique index then the second of these two statement would not have appeared in the trace file (and the run would have been a little quicker &#8211; hint: constraints are a good thing).</p> <p>You&#8217;ll notice that the total number of calls from the two statement is roughly 292,500 &#8211; far short of the 682,000 reported in the session stats. Unfortunately there was nothing else in the trace files that could be blamed for the outstanding 400,000 missing calls. It&#8217;s not really necessary to chase up all the details, though; clearly we can see that this feature is very expensive if lots of duplicates appear &#8211; like DML error logging it has probably been created as a way of dealing with occasional errors when handling large volumes of data.</p> <h2>Footnote</h2> <p>Notice that my example uses the &#8220;index description&#8221; method for specifying the index in the hint; it&#8217;s legal with either the name or the description. Interestingly (but, perhaps, unsurprisingly) this is a hint that Oracle has to parse for correctness before optimisation. I made a mistake in my first attempt at writing the update statement leaving me with duplicates in the data so Oracle couldn&#8217;t create the unique index; as a consequence of the missing unique index the insert statement reported the Oracle error &#8220;ORA-38913: Index specified in the index hint is invalid&#8221;.</p> <p>&nbsp;</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16901/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16901/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16901&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16901 Tue Mar 07 2017 14:57:18 GMT-0500 (EST) Oracle Database 12cR2 Introduces 128 Byte Identifiers http://dbaontap.com/2017/03/07/oracle-database-12cr2-introduces-128-byte-identifiers/ <h1 style="text-align: left;"></h1> <h1 style="text-align: center;"><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/12c_logo.png"><img class="wp-image-1098 alignleft" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/12c_logo.png?resize=157%2C157" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/12c_logo.png?resize=300%2C300 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/12c_logo.png?resize=80%2C80 80w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/12c_logo.png?resize=150%2C150 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/12c_logo.png?w=400 400w" sizes="(max-width: 157px) 100vw, 157px" data-recalc-dims="1" /></a></h1> <h1 style="text-align: center;">Oracle Database 12cR2 Introduces 128 byte Identifiers.</h1> <p style="text-align: center;">Let&#8217;s take a look at a simple Table and Column name example:</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>If only this were available sooner &#8230; like 6 months ago (On-Prem of course). In 12cR2, the new Identifier length limit is now 128 bytes. ¬†The 30 character limit on object names made it a pain for migrations from other databases without this limitation. Finally we are now able to some direct mappings when migrating from databases such as IBM&#8217;s DB2 to Oracle for example.</p> <h2 style="text-align: center;">¬†Try this in 12cR1:</h2> <p></p><pre class="crayon-plain-tag">create table long_name_because_this_is_a_new_feature_in_12cR2_and_it_is_great ( super_long_name_for_table_columns_work_as_well_in_the_latest_release VARCHAR2(20) );</pre><p>&nbsp;</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName2a.jpg"><img class="aligncenter size-full wp-image-1102" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName2a.jpg?resize=800%2C567" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName2a.jpg?w=898 898w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName2a.jpg?resize=300%2C213 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName2a.jpg?resize=768%2C545 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName2a.jpg?resize=211%2C150 211w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName2a.jpg?resize=150%2C106 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <h2 style="text-align: center;">Now try it again in 12cR2:</h2> <p></p><pre class="crayon-plain-tag">create table long_name_because_this_is_a_new_feature_in_12cR2_and_it_is_great ( super_long_name_for_table_columns_work_as_well_in_the_latest_release VARCHAR2(20) );</pre><p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName1a.jpg"><img class="aligncenter size-full wp-image-1101" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName1a.jpg?resize=794%2C608" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName1a.jpg?w=794 794w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName1a.jpg?resize=300%2C230 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName1a.jpg?resize=768%2C588 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName1a.jpg?resize=196%2C150 196w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/longObjectName1a.jpg?resize=150%2C115 150w" sizes="(max-width: 794px) 100vw, 794px" data-recalc-dims="1" /></a></p> <p>Now I wouldn&#8217;t recommend going crazy and start using ridiculously long names as you will still need to consider backward compatibility, but if you are migrating from another database engine, this can be quite beneficial.</p> <ul> <li>Don&#8217;t need to truncate names at the 30 character limit</li> <li>Reduces risk of duplicate identifiers due to truncate</li> <li>More descriptive names (30 characters is a decent, but more is better &#8230; right?)</li> <li>Space is cheap so who cares about using sentences to name your tables</li> <li>I&#8217;m sure there are more.</li> </ul> <p>Enjoy<a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png"><img class="alignright size-medium wp-image-265" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=300%2C134" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=300%2C134 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=250%2C111 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=150%2C67 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?w=525 525w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/03/07/oracle-database-12cr2-introduces-128-byte-identifiers/">Oracle Database 12cR2 Introduces 128 Byte Identifiers</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">My Experiences with Oracle Technology</a>.</p> DB http://dbaontap.com/?p=1095 Tue Mar 07 2017 12:27:34 GMT-0500 (EST) Getting ADF Data in a Jet Component (1) https://technology.amis.nl/2017/03/07/getting-adf-data-jet-component/ <p>Oracle JET has been around for a while, and at this moment we are investigating what it would take to integrate JET with our existing ADF Application. In the current ADF application we want to make a dashboard in JET, however we still need to know for what project we need the data from. Therefore I am researching on how to get data from our ADF application into our JET part. In this blog I will show you how you can in an easy and quick way get your ADF BC data into your JET Components without using REST services.</p> <p>I used the blog of Andrejus<a title="Jump to Footnotes at end of page" href="#footnote"><sup>1</sup></a> to set up JET within my ADF Application.</p> <p>Add the JET libraries to the public_html folder of the ViewController¬†project.</p> <p>(Final) Structure of the project:</p> <p><img class="alignnone size-full wp-image-44189" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/projectStructure.png?resize=288%2C534&#038;ssl=1" alt="" srcset="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/projectStructure.png?w=288&amp;ssl=1 288w, https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/projectStructure.png?resize=162%2C300&amp;ssl=1 162w" sizes="(max-width: 288px) 100vw, 288px" data-recalc-dims="1" /></p> <p>Make a jsf page and use af:resources to get to the css and requireJS and add the main.js</p> <pre class="brush: plain; title: ; notranslate"> &lt;?xml version='1.0' encoding='UTF-8'?&gt; &lt;!DOCTYPE html&gt; &lt;f:view xmlns:f=&quot;http://java.sun.com/jsf/core&quot; xmlns:af=&quot;http://xmlns.oracle.com/adf/faces/rich&quot; xmlns:dvt=&quot;http://xmlns.oracle.com/dss/adf/faces&quot; xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;&gt; &lt;af:document title=&quot;main.jsf&quot; id=&quot;d1&quot;&gt; &lt;af:messages id=&quot;m1&quot;/&gt; &lt;af:resource type=&quot;css&quot; source=&quot;jet/css/alta/2.2.0/web/alta.min.css&quot;/&gt; &lt;af:resource type=&quot;javascript&quot; source=&quot;jet/js/libs/require/require.js&quot;/&gt; &lt;img src=&quot;data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7&quot; data-wp-preserve=&quot;%3Cscript%3E%0A%20%20%20%20%20%20%20%20%20%20require.config(%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20baseUrl%20%3A%20%22jet%2Fjs%22%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20require(%5B%22main%22%5D)%3B%0A%20%20%20%20%20%20%20%20%3C%2Fscript%3E&quot; data-mce-resize=&quot;false&quot; data-mce-placeholder=&quot;1&quot; class=&quot;mce-object&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;&amp;lt;script&amp;gt;&quot; title=&quot;&amp;lt;script&amp;gt;&quot; /&gt; &lt;af:form id=&quot;f1&quot;&gt; &lt;/af:form&gt; &lt;/af:document&gt; &lt;/f:view&gt; </pre> <p>Then I added my composite component folder to the js folder of JET. My component is named amis-person and will show the name of the person in capital letters and the emailadress within a blue box. You can read more about composite components in the blog series of Duncan<a title="Jump to Footnotes at end of page" href="#footnote"><sup>2</sup></a></p> <p><strong>Put the metadata directly in the loader.js instead of via a json file, otherwise it will not work!.</strong> When you do it via the .json file and you console.log the in the function, you will see it does not print out the metadata from the .json file.</p> <pre class="brush: plain; title: ; notranslate"> define(['ojs/ojcore', './amis-person', 'text!./amis-person.html', 'css!./amis-person', 'ojs/ojcomposite'], function (oj, ComponentModel, view, css) { 'use strict'; var metadata = '{ &quot;properties&quot;: { &quot;amisPersonName&quot;: { &quot;type&quot;: &quot;string&quot;}, &quot;amisPersonEmail&quot;: { &quot;type&quot;: &quot;string&quot;}} }'; oj.Composite.register('amis-person', { metadata: { inline: JSON.parse(metadata) }, viewModel: { inline: ComponentModel }, view: { inline: view }, css: { inline: css } }); }); </pre> <p>Import the component in main.js to make it available.</p> <pre class="brush: plain; title: ; notranslate"> require(['ojs/ojcore', 'knockout', 'jquery', 'ojs/ojknockout', 'jet-composites/amis-person/loader'], function (oj, ko, $){ function ViewModel() { var self = this;&lt;/code&gt; } ko.applyBindings(new ViewModel(), document.body); }) </pre> <p>Create a page fragment where you will put the html to show your component, in this case it is just the composite component.</p> <pre class="brush: plain; title: ; notranslate"> &lt;?xml version='1.0' encoding='UTF-8'?&gt; &lt;ui:composition xmlns:ui=&quot;http://java.sun.com/jsf/facelets&quot;&gt; &lt;amis-person amis-person-name=&quot;NAME&quot; amis-person-email=&quot;EMAIL&quot; /&gt; &lt;/ui:composition&gt; </pre> <p>In the jsf page, create an iterator for the viewmodel and put the page fragment within the iterator</p> <pre class="brush: plain; title: ; notranslate"> &lt;af:iterator id=&quot;iterator&quot; value=&quot;#{bindings.EmployeesVO.collectionModel}&quot; var=&quot;item&quot;&gt; &lt;ui:include src=&quot;/fragments/amis-person-fragment.jsff&quot;/&gt; &lt;/af:iterator&gt; </pre> <p>Change the bindings in the page fragment to match the output of the iterator</p> <pre class="brush: plain; title: ; notranslate"> &lt;amis-person amis-person-name=&quot;#{item.bindings.FirstName.inputValue}&quot; amis-person-email=&quot;#{item.bindings.Email.inputValue}&quot; /&gt; </pre> <p>That&#8217;s it, you are done. When I now run the project I see the data from the Employee Viewmodel in the Jet Component I made:</p> <p><img class="alignnone size-large wp-image-44190" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/application.png?resize=702%2C354&#038;ssl=1" alt="" srcset="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/application.png?resize=1024%2C517&amp;ssl=1 1024w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/application.png?resize=300%2C152&amp;ssl=1 300w, https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/application.png?w=1404&amp;ssl=1 1404w" sizes="(max-width: 702px) 100vw, 702px" data-recalc-dims="1" /></p> <p>&nbsp;</p> <h4 id="footnote">Sources</h4> <ol> <li><a href="http://andrejusb.blogspot.nl/2015/12/improved-jet-rendering-in-adf.html">http://andrejusb.blogspot.nl/2015/12/improved-jet-rendering-in-adf.html</a></li> <li><a href="https://blogs.oracle.com/groundside/entry/jet_composite_components_i_backgrounder">https://blogs.oracle.com/groundside/entry/jet_composite_components_i_backgrounder (and the other blogs)</a></li> <li><a href="https://technology.amis.nl/wp-content/uploads/2017/03/ADFJetDemo.zip">ADFJetDemo Application</a> or <a href="https://github.com/Keepertje/ADF-Jet-Integration-Demo">Github</a></li> </ol> <h4>Versions used</h4> <p>JDeveloper 12.1.3,<br /> OracleJet V2.2.0</p> <h4>Disclaimer</h4> <p>The information is based on my personal research. At the moment, Oracle does not support or encourage integrating ADF and Jet. Oracle is working on JET Composite Components in ADF.</p> <p>There is also a <a href="https://technology.amis.nl/2017/03/08/getting-adf-data-jet-component-2/">second part</a>, on how to this, but then with DVT&#8217;s</p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/07/getting-adf-data-jet-component/">Getting ADF Data in a Jet Component (1)</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Cindy Berghuizen https://technology.amis.nl/?p=44188 Tue Mar 07 2017 10:33:02 GMT-0500 (EST) Getting started with Oracle PaaS Service Manager Command Line Interface (PSM) https://technology.amis.nl/2017/03/07/getting-started-with-oracle-paas-service-manager-command-line-interface-psm/ <p>Oracle PaaS Service Manager (PSM) provides a command line interface (CLI) with which you can manage the lifecycle of various services in Oracle Public Cloud. This opens the door for scripting (recurring) tasks &#8211; such as (re)deployment of applications on ACCS to provisioning new environments. PSM makes performing admin operations on the Oracle Public Cloud a lot easier and efficient, compared to using the the GUI.</p> <p>Note that the CLI is a thin wrapper over PaaS REST APIs that invokes these APIs to support common PaaS features.</p> <p>The steps for installing and configuring PSM are simple enough &#8211; and take about 6 minutes. I will briefly walk you through them. They are also <a href="http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/using-command-line-interface-1.html" target="_blank">documented just fine</a>.¬† Before I continue, I want to thank Abhijit Ramchandra Jere of Oracle for graciously helping me out with PSM.</p> <h3>1. Install Python (3.3+) and cURL</h3> <p>PSM is a Python based tool. To set it up and run it, you need to have Python set up on your machine.</p> <h3>2. Download PSM</h3> <p>The psmcli.zip can be downloaded from Cloud UI (as described <a href="http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/downloading-cli-your-service-user-interface.html" target="_blank">here</a>) or it can be fetched through cURL from the REST API (as described <a href="http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/downloading-cli-using-rest-api.html" target="_blank">here</a>):</p> <blockquote><p>curl -I -X GET¬†¬†¬†¬†¬†¬† -u &#8220;lucas.jellema:password&#8221;¬†¬†¬†¬†¬† -H &#8220;X-ID-TENANT-NAME: cloud17&#8221;¬†¬†¬†¬†¬† -H &#8220;Accept: application/json&#8221;¬†¬†¬†¬†¬†¬† https://psm.us.oraclecloud.com/paas/api/v1.1/instancemgmt/cloud17/services/cs/instances</p></blockquote> <h3>3. Install PSM as a Python Package</h3> <p>With a simple statement, PSM is installed from the downloaded zip file (see <a href="http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/installing-command-line-interface-1.html" target="_blank">here</a>)</p> <blockquote><p>pip install -U psmcli.zip</p></blockquote> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-4.png?ssl=1"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-4.png?resize=657%2C273&#038;ssl=1" alt="image" border="0" data-recalc-dims="1" /></a></p> <p>This installs PSM into the Python Scripts directory: <a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-5.png?ssl=1"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-5.png?resize=544%2C234&#038;ssl=1" alt="image" border="0" data-recalc-dims="1" /></a></p> <p>Verify the result using</p> <blockquote><p>pip show psmcli</p></blockquote> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-6.png?ssl=1"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-6.png?resize=564%2C137&#038;ssl=1" alt="image" border="0" data-recalc-dims="1" /></a></p> <p>On Linux:</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-7.png?ssl=1"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-7.png?resize=570%2C268&#038;ssl=1" alt="image" border="0" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <h3>4. Configure PSM for the identity domain and the connection to the cloud</h3> <p>Run the setup for PSM and configure it for use with your identity domain (see <a href="http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/configuring-command-line-interface-1.html" target="_blank">docs</a>). Note: this step assumes that the Python scripts directory that contains PSM is in the PATH environment variable.</p> <blockquote><p>psm setup</p></blockquote> <p><a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-8.png?ssl=1"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-8.png?resize=525%2C321&#038;ssl=1" alt="image" border="0" data-recalc-dims="1" /></a></p> <p>I am not sure if and how you can use PSM on your machine for multiple identity domains or user accounts. I have access to several Oracle Public Cloud identity domains &#8211; even in different data centers. I have now setup PSM for one of them. If I can do a setup for a second identity domain and then somehow be able to switch between the two is not yet clear to me.<br /> EDIT: switching to a different identity domain is simply done by running <em>psm setup</em> again. I need to provide the identity domain, region and credentials to make the switch. Note: psm remembers the set up across restart of the operating system.</p> <h3>5. Start using PSM for inspecting and manipulating PaaS Services</h3> <p>PSM can be used with many PaaS Services &#8211; not yet all &#8211; for inspecting their health, stopping and (re)starting, scaling and performing many administrative activities. See <a href="http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/psm-shared-commands1.html" target="_blank">docs</a> for all of them.</p> <p>Some examples:</p> <p>List all applications on Application Container Cloud:</p> <blockquote><p>psm accs apps</p></blockquote> <p><a href="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-9.png?ssl=1"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-9.png?resize=702%2C362&#038;ssl=1" alt="image" border="0" data-recalc-dims="1" /></a></p> <p>List log details for a specific application on ACCS:</p> <blockquote><p>psm accs log -n|&#8211;app-name name -i|&#8211;instance-name name</p></blockquote> <blockquote><p>psm accs log -n Artist-Enricher-API -i web.1</p></blockquote> <p>and the list of log files is presented</p> <p><a href="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-10.png?ssl=1"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border: 0px;" title="image" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-10.png?resize=702%2C281&#038;ssl=1" alt="image" border="0" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <h3>6. Update PSM</h3> <p>To get rid of the slightly annoying message about their being a later version of PSM available &#8211; and to get hold of the latest version, you simply type:</p> <blockquote><p>psm update</p></blockquote> <p>and wait for maybe 15 seconds.</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-11.png?ssl=1"><img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-11.png?resize=702%2C150&#038;ssl=1" alt="image" border="0" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <p><strong>Issues:</strong></p> <p>I ran into an issue, caused as it turned out by having multiple Python versions on my machine. PSM got installed as Python package with version 3.5 and I was trying to run PSM with Python 3.6 as first version in my PATH environment variable. Clearly, that failed.</p> <p>The error I ran into: ModuleNotFoundError: No module named ‚Äėopaascli‚Äô</p> <p><a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-12.png?ssl=1"><img style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-12.png?resize=244%2C35&#038;ssl=1" alt="image" border="0" data-recalc-dims="1" /></a></p> <p>The solution: I removed all but one Python version (3.5 because with 3.6 the installation did not go well because of missing pip) and then installed with that one version.</p> <h2>Resources</h2> <p>Documentation on PSM: <a title="http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/abouit-paas-service-manager-command-line-interface.html" href="http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/abouit-paas-service-manager-command-line-interface.html">http://docs.oracle.com/en/cloud/paas/java-cloud/pscli/abouit-paas-service-manager-command-line-interface.html</a></p> <p>Documentation on Oracle PaaS REST APIs: <a title="https://apicatalog.oraclecloud.com/ui/" href="https://apicatalog.oraclecloud.com/ui/">https://apicatalog.oraclecloud.com/ui/</a></p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/07/getting-started-with-oracle-paas-service-manager-command-line-interface-psm/">Getting started with Oracle PaaS Service Manager Command Line Interface (PSM)</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=44185 Tue Mar 07 2017 00:41:31 GMT-0500 (EST) Spring Boot Actuator support added to Pivotal Web Services (PWS) Application Manager http://feedproxy.google.com/~r/blogspot/PEqWE/~3/QYI8m0M-iRk/spring-boot-actuator-support-added-to.html Recently we added "<b>Spring Boot Actuator support</b>" to Pivotal Web Services (PWS) <a href="http://run.pivotal.io/">http://run.pivotal.io</a>. If you want to try this out simply use the demo below which is all setup to verify how this works.<br /><br /><a href="https://github.com/papicella/SpringBootPCFPas">https://github.com/papicella/SpringBootPCFPas</a><br /><br />Once pushed you will see a Spring Boot icon in the Application Manager UI showing the Actuator support as per below.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-p77Jm-oZsqY/WL3ratkIKRI/AAAAAAAAA3A/GQO-2ElOcNM6IR3vbO0i3y2wlV4zpkPHgCLcB/s1600/Screen%2BShot%2B2017-03-07%2Bat%2B10.05.01%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="126" src="https://3.bp.blogspot.com/-p77Jm-oZsqY/WL3ratkIKRI/AAAAAAAAA3A/GQO-2ElOcNM6IR3vbO0i3y2wlV4zpkPHgCLcB/s320/Screen%2BShot%2B2017-03-07%2Bat%2B10.05.01%2BAM.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-I-f08pfczvM/WL3rbwR5OiI/AAAAAAAAA3E/wWBInGi-o8Ay2Bh1TmDsc-_cL_XBl-37gCLcB/s1600/Screen%2BShot%2B2017-03-07%2Bat%2B10.05.52%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="188" src="https://1.bp.blogspot.com/-I-f08pfczvM/WL3rbwR5OiI/AAAAAAAAA3E/wWBInGi-o8Ay2Bh1TmDsc-_cL_XBl-37gCLcB/s320/Screen%2BShot%2B2017-03-07%2Bat%2B10.05.52%2BAM.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-VQLgjhYcbF8/WL3ruTN9jfI/AAAAAAAAA3I/sVUqWg9T1QAaHK1_PVmUGCXcuf5PGfkzQCLcB/s1600/Screen%2BShot%2B2017-03-07%2Bat%2B10.07.16%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://1.bp.blogspot.com/-VQLgjhYcbF8/WL3ruTN9jfI/AAAAAAAAA3I/sVUqWg9T1QAaHK1_PVmUGCXcuf5PGfkzQCLcB/s320/Screen%2BShot%2B2017-03-07%2Bat%2B10.07.16%2BAM.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><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/QYI8m0M-iRk" height="1" width="1" alt=""/> Pas Apicella tag:blogger.com,1999:blog-6527688743456205256.post-7443802078086011368 Mon Mar 06 2017 18:07:00 GMT-0500 (EST) Delphix Company Kick Off http://dbakevlar.com/2017/03/delphix-company-kick-off/ <div id="tweetbutton6483" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Fdelphix-company-kick-off%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%2Fdelphix-company-kick-off%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 had the opportunity to attend <a href="https://www.delphix.com/">Delphix</a>&#8216;s Company Kick Off last week in San Francisco. ¬†This was my first time at an event of this nature and it was incredibly successful. ¬†As Delphix had just promoted Adam Bowen and me to the Office of CTO, along with promoting Eric Schrock to the CTO position, I was in an enviable position, but not just because of the role change.</p> <p><a href="http://dbakevlar.com/2017/03/delphix-company-kick-off/imnot/" rel="attachment wp-att-6485"><img class="alignnone size-full wp-image-6485" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Imnot.gif?resize=500%2C200" alt="" data-recalc-dims="1" /></a></p> <p>For some reason, my¬†badge stated I was in Product Management, (I wasn&#8217;t) and¬†as I was transitioning from my previous role in Technical Product Marketing, (I was the full-on techie on the team.) I now belonged to a group that hadn&#8217;t¬†existed when they planned the event. ¬†I decided to become¬†a &#8220;free agent&#8221; for the week and took advantage of not belonging in anyone. ¬†As¬†the company split into their designated groups- Sales, Engineering and Professional Services, I started to move¬†between the department events. This resulted in¬†some incredible perspectives on our company and why the diversity of the roles and groups serve the company as a whole.</p> <h3>Doing¬†the Kick Off</h3> <p><strong>First off-</strong> ¬†kudos to the entire marketing team for the event. ¬†It was <strong>incredibly</strong> well done. ¬†The venue and location was excellent. ¬†Having everyone in one place, considering how many of us are remote, really made a huge difference. ¬†All of this had to be coordinated- ¬†event, people, travel, content and commonly three separate events stitched into one! ¬†As a remote employee, it was great to finally put faces to names. ¬†Networking, community and social events gave us more than enough time to get to know those we only knew virtually and even in three days, I felt more connected to the teams.</p> <p>The company kick off started¬†with a talk from John Foley,¬†the Blue Angels pilot, who discussed his <em>Glad to be Here</em> movement, (<a href="https://twitter.com/hashtag/gladtobehere?src=hash">#gladtobehere</a>). ¬†It was very inspirational and I added¬†significant knowledge in the¬†value¬†of the feedback phase of projects, which I believe is a weakness in me as a mentor. ¬†Our CEO Chris Cook and others from the <a href="https://www.delphix.com/company/delphix-management">C-Level</a> then presented Delphix goals¬†for the next year in a very energized way that provided unification of focus for all of us.¬† With our heads filled with a full picture of where we were headed, we sat down to a dinner and the big company party to follow.</p> <p><a href="http://dbakevlar.com/2017/03/delphix-company-kick-off/img_1583/" rel="attachment wp-att-6489"><img class="alignnone wp-image-6489" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/IMG_1583.jpg?resize=415%2C311" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/IMG_1583.jpg?resize=1024%2C768 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/IMG_1583.jpg?resize=300%2C225 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/IMG_1583.jpg?resize=768%2C576 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/IMG_1583.jpg?w=1200 1200w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/IMG_1583.jpg?w=1800 1800w" sizes="(max-width: 415px) 100vw, 415px" data-recalc-dims="1" /></a></p> <h3>Shout Out¬†to the Cool Kids</h3> <p>What did I learn that I may not have known before?¬† That our CEO, Chris Cook is really fantastic. ¬†He knows the business, is very personable and took the time to visit with as many Delphixers as he could during the week. ¬†He&#8217;s also not afraid to have fun and knows that downtime is essential to a healthy work environment.</p> <p><a href="http://dbakevlar.com/2017/03/delphix-company-kick-off/screen-shot-2017-03-06-at-3-44-00-pm/" rel="attachment wp-att-6499"><img class="alignnone wp-image-6499" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.44.00-PM.png?resize=413%2C337" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.44.00-PM.png?resize=1024%2C834 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.44.00-PM.png?resize=300%2C244 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.44.00-PM.png?resize=768%2C625 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.44.00-PM.png?w=1066 1066w" sizes="(max-width: 413px) 100vw, 413px" data-recalc-dims="1" /></a></p> <p><em>Our CEO, Chris Cook,¬†reliving the 80&#8217;s for our Company Kick Off party. ¬†I look like I&#8217;m signing for someone to call me. ¬†The 80&#8217;s were not my best years&#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;" /></em></p> <p>The company message was on point, <em><strong>&#8220;Delphix moves data at the speed of business.&#8221;</strong></em> ¬†As a DBA, I understand how long the database has been viewed as the bottleneck and to remove this through virtualization is incredibly powerful.</p> <p>I learned that we have a very clear vision of where we are starting to fit with the huge direction change for many businesses. ¬†With so many companies migrating to the cloud and so many others¬†that claim to do what we do, (very rarely and even more rare, do it successfully.) ¬†I started to recognize how all of our groups fit together. ¬†We are all moving parts that are necessary to make Delphix the success it is.</p> <p><a href="http://dbakevlar.com/2017/03/delphix-company-kick-off/screen-shot-2017-03-06-at-3-07-27-pm/" rel="attachment wp-att-6488"><img class="alignnone wp-image-6488" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.07.27-PM.png?resize=492%2C398" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.07.27-PM.png?resize=1024%2C828 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.07.27-PM.png?resize=300%2C243 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.07.27-PM.png?resize=768%2C621 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.07.27-PM.png?w=1294 1294w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.07.27-PM.png?w=1200 1200w" sizes="(max-width: 492px) 100vw, 492px" data-recalc-dims="1" /></a></p> <p><em>Delphix&#8217;s CFO, Stewart Grierson and Chris Cook on Stage at the CKO</em></p> <p>For me, the free agent, it was shocking to go from the buzz and big lights of the Sales/Pre-sales Kick off, to the very personalized interaction of the Professional Services, to the quiet, small groups at the hackathon for Engineering. ¬†I&#8217;m a very adaptable personality, but admit that I&#8217;m more introverted than most people realize. ¬†I&#8217;m drained by loud events and need to re-energize with downtime when I get the chance, so this bouncing from space to space, (each with their own different vibe) really worked well for me.</p> <p>The week I learned about how much our sales staff does- ¬†how many regions are handled by so few people and how much they accomplish with the help of some awesome pre-sales folks! ¬†You also get to find out how your contributions make an impact. ¬†Content you produced that you thought was just gathering dust, someone takes the time to thank you and tell you how vital it is to their day to day job.</p> <p>I discovered how the Professional Services, (PS) team closely works with those that provide our documentation and community support. ¬†Where Sales was all about recognizing what had been accomplished this year, PS was looking to the year ahead and how they would solve some of the critical challenges. ¬†Sitting in¬†granted me the opportunity to proudly hear the announcement of my husband&#8217;s promotion to Technical Manager in the Professional Services group.¬† It also gave me a chance¬†to visit with my old friend and co-author Leighton Nelson, who is doing fantastic work in Steve Karam&#8217;s group.</p> <h3>Getting My Geek On</h3> <p>On breakfast the last day, I happened to sit down with the engineers. ¬†I&#8217;ve become accustomed to speaking over everyone&#8217;s head in marketing these days, so it was this odd ¬†sense of relief as I listened and discussed some of the interesting ways this group was taking on syntax differences between the languages being utilized in our product. ¬†We chatted about Intellij, Python and Oracle Cloud complexities and the hackathon that was going on in their group for the day. ¬†When I sat in the Engineering group&#8217;s kick off later on, I was granted the opportunity to speak to Nathan Jolly, a SQL Server DBA at Delphix that I&#8217;ve only had the pleasure of speaking to in meetings. ¬†He&#8217;s on our Australian team and there aren&#8217;t many opportunities to be in the same timezone.</p> <p><a href="http://dbakevlar.com/2017/03/delphix-company-kick-off/screen-shot-2017-03-06-at-3-08-33-pm/" rel="attachment wp-att-6490"><img class="alignnone wp-image-6490" src="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.08.33-PM.png?resize=451%2C258" alt="" srcset="https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.08.33-PM.png?resize=1024%2C586 1024w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.08.33-PM.png?resize=300%2C172 300w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.08.33-PM.png?resize=768%2C440 768w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.08.33-PM.png?w=1390 1390w, https://i0.wp.com/dbakevlar.com/wp-content/uploads/2017/03/Screen-Shot-2017-03-06-at-3.08.33-PM.png?w=1200 1200w" sizes="(max-width: 451px) 100vw, 451px" data-recalc-dims="1" /></a></p> <p><em>Quieter than in the party, people chat it up</em></p> <p>The quiet was also a nice break after evenings filled with great food, conversations and company. ¬†The party was the first night, but each evening brought more dinners and community events, (I was part of a group that assembled over 40 wheelchairs for charity!) and the last evening, I ended up closing down the bar with a group that [somehow] talked me into an arm wrestling match. ¬†Now, as many know, I have about a good week at low altitude where I&#8217;m taking advantage of the extra oxygen. ¬†This results in little impact from alcohol and for the particular evening, me winning an arm wrestling match against one of the guys. ¬†Nothing more needs to be said about this¬†outside of me¬†refusing to give¬†up and that both my elbows are bruised from the match.</p> <h3>A Successful Preparation for the¬†Upcoming Year</h3> <p>I may be speaking for the rest of the teams, but I left with renewed energy, direction and connection to this great company¬†we call Delphix. ¬†I am amazed at how much we&#8217;ve grown and changed in just the 9 months I&#8217;ve been here and look forward to the upcoming year. ¬†I have no doubt 2018&#8217;s kick off will be just as awesome and that we&#8217;ll need a bigger venue to hold all the new employees!</p> <p>I quickly put together a <a href="https://www.facebook.com/kellyn.potvin/posts/10155781130812506?pnref=story">scrapbook video story</a> of my pictures, enjoy! ¬†March is also a busy month for events, both Oracle and SQL Server. ¬†Here&#8217;s where I&#8217;ll be this month:</p> <p><strong>March 8th:</strong> ¬†<a href="http://www.ioug.org/p/ca/vi/sid=739">IOUG Town hall webinar</a></p> <p><strong>March 13th:</strong> ¬†<a href="http://utoug.org/">UTOUG Training Days, Salt Lake City, UT.</a></p> <p><strong>March 18th:</strong> <a href="http://www.pass.org/attendanevent/findanevent.aspx?eventType=3">¬†Iceland SQL Saturday, Reykjavik, Iceland</a></p> <p><strong>March 28th:</strong> ¬†<a href="http://www.pass.org/attendanevent/findanevent.aspx?oevent=665&amp;upcoming=1&amp;eventType=3">Colorado SQL Saturday, Colorado Springs, CO</a></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;<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/delphix-company-kick-off/&title=Delphix Company Kick Off"> <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/delphix-company-kick-off/"><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/delphix-company-kick-off/&title=Delphix Company Kick Off"><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/delphix-company-kick-off/&title=Delphix Company Kick Off"><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/delphix-company-kick-off/&title=Delphix Company Kick Off"><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/delphix-company-kick-off/#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/12/expanded-ace-recognition-at-rmoug-training-days/" >Expanded ACE Recognition at RMOUG Training Days</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/11/why-all-tools-in-at-your-disposal-are-important/" >Why ALL Tools in at Your Disposal ARE IMPORTANT</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/03/hotsos-symposium-and-ioug-collaborate-2016/" >HotSos Symposium and IOUG Collaborate 2016</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/10/upcoming-events-and-speaking-engagements-fall-2016/" >Upcoming Events and Speaking Engagements- Fall 2016</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/changes-to-configuration-management-in-em13c/" >Changes to Configuration Management in EM13c</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/delphix-company-kick-off/">Delphix Company Kick Off</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/03/delphix-company-kick-off/">Delphix Company Kick Off</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6483 Mon Mar 06 2017 17:40:23 GMT-0500 (EST) PL/Scope in Oracle Database 12c Release 2 and Oracle SQL Developer http://www.thatjeffsmith.com/archive/2017/03/plscope-in-oracle-database-12c-release-2-and-oracle-sql-developer/ <p>PL/Scope is one of my favorite features.</p> <p>It answers SO many questions.</p> <p>Where am I declaring this, where am I calling that, when am I referencing something? And, I can get this information automatically, without hitting the big, fat SOURCE data dictionary views. </p> <div id="attachment_5706" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2016/06/plscope3.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2016/06/plscope3.png" alt="sql developer plscope search" width="1024" height="641" class="size-full wp-image-5706" /></a><p class="wp-caption-text">Where and what is my CURSOR (C1) doing?</p></div> <p>I&#8217;ve talked about this <a href="http://www.thatjeffsmith.com/archive/2016/06/plscope-support/" target="_blank">previously</a>&#8230;</p> <p>&#8230;BUT, PL/SCope didn&#8217;t help me with tracking the SQL I used in my PL/SQL.</p> <p>That is, it didn&#8217;t until 12cR2.</p> <p><em><br /> Starting with Oracle Database 12c Release 2 (12.2.0.1), a new view, DBA_STATEMENTS, reports on the occurrences of static SQL in PL/SQL units. It provides information about the SQL_ID, the canonical statement text, the statement type, useful statement usage attributes, its signature, and location in the PL/SQL code. Each row represents a SQL statement instance in the PL/SQL code (<a href="https://docs.oracle.com/database/122/ADFNS/plscope.htm#ADFNS-GUID-4EA56F25-D73A-4346-AB9A-A62F334D6628" target="_blank">DOCS</a>).<br /> </em><br /> Whiz bang, indeed.</p> <p>For now, SQL Developer&#8217;s Search feature doesn&#8217;t dip into the new STATEMENTS views, so you&#8217;ll need to build your own queries. But maybe you should consider a <a href="http://www.thatjeffsmith.com/archive/2014/05/oracle-sql-developer-reporting-101/" target="_blank">REPORT</a>, AGAIN.</p> <h3>Show me ALL the SQL My Code Is Using.</h3> <p>And WHERE it&#8217;s used.</p> <p>Let&#8217;s build a report!</p> <div id="attachment_6057" style="width: 1312px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/scope1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/scope1.png" alt="sql developer report plscope" width="1302" height="700" class="size-full wp-image-6057" /></a><p class="wp-caption-text">Master &#8211; Detail report.</p></div> <p>So I&#8217;m asking to GET all of the statements.</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">SELECT</span> <span class="kw1">DISTINCT</span> SQL_ID<span class="sy0">,</span> TEXT <span class="kw1">FROM</span> all_statements <span class="kw1">WHERE</span> text <span class="kw1">LIKE</span> <span class="st0">'%'</span> <span class="sy0">||</span> :plsql <span class="sy0">||</span> <span class="st0">'%'</span> <span class="kw1">ORDER</span> <span class="kw1">BY</span> sql_id</pre></div></div></div></div></div></div></div> <p>So I&#8217;m wrapping the bind with wildcards &#8211; we&#8217;re searching source code, so this will be handy. If my user just hits ENTER, it&#8217;ll bring back everything.</p> <div id="attachment_6058" style="width: 897px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/scope2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/scope2.png" alt="" width="887" height="386" class="size-full wp-image-6058" /></a><p class="wp-caption-text">interactive reports &#8211; prompting the user is EASY</p></div> <p>Now we have our results. This SQL_ID is being used in two different PL/SQL objects. </p> <div id="attachment_6059" style="width: 963px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/scope3.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/scope3.png" alt="" width="953" height="445" class="size-full wp-image-6059" /></a><p class="wp-caption-text">Click on the hyperlink to open the object.</p></div> <p>The funny blue hyperlink-y looking text &#8211; click on that, and it will open the object! &#8211; in a report is using a &#8216;<a href="http://www.thatjeffsmith.com/archive/2012/03/sql-developer-query-grid-tricks/" target="_blank">trick</a>.&#8217;</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">SELECT</span> <span class="kw1">TYPE</span><span class="sy0">,</span> <span class="st0">'SQLDEV:LINK:'</span> <span class="sy0">||</span>owner <span class="sy0">||</span><span class="st0">':'</span> <span class="sy0">||</span>object_type <span class="sy0">||</span><span class="st0">':'</span> <span class="sy0">||</span>OBJECT_NAME <span class="sy0">||</span><span class="st0">':oracle.dbtools.raptor.controls.grid.DefaultDrillLink'</span> OBJECT<span class="sy0">,</span> OBJECT_TYPE<span class="sy0">,</span> USAGE_ID<span class="sy0">,</span> LINE<span class="sy0">,</span> COL<span class="sy0">,</span> has_hint <span class="kw1">FROM</span> all_statements <span class="kw1">WHERE</span> SQL_ID <span class="sy0">=</span> :SQL_ID</pre></div></div></div></div></div></div></div> <p>Note that I&#8217;m not showing ALL the columns from the Scope dictionary view. It will tell you if your code is has a &#8216;FOR UPDATE&#8217; clause for instance. </p> <h3>Need 12cR2 to play around with?</h3> <p>Don&#8217;t forget 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">image</a>!</p> <div id="attachment_6052" style="width: 996px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/122-vm.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/122-vm.png" alt="oracle virtualbox image" width="986" height="680" class="size-full wp-image-6052" /></a><p class="wp-caption-text">The image is up and running, complete with sample data for you to play with.</p></div> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6056 Mon Mar 06 2017 14:48:24 GMT-0500 (EST) 12cR1 RAC Posts -- 7 : OCR Commands http://hemantoracledba.blogspot.com/2017/03/12cr1-rac-posts-7-ocr-commands.html <div dir="ltr" style="text-align: left;" trbidi="on">[Yes, I know that 12.2 is now available for download but it will be some time before I have a running 12.2 RAC environment]<br /><br />Some OCR / OLR Commands :<br /><br />The OCR is the Cluster Registry. &nbsp;We also have an OLR that is the Local Registry which is created on a local filesystem.<br /><br />We can check the consistency of the Registry with ocrcheck. &nbsp;Note the difference between using oracle (or grid) and using root to run the check. &nbsp;oracle can't check the OLR and can't do a logical consistency check of the OCR -- both require to be run as root.<br /><br /><pre>[root@collabn1 ~]# su - oracle<br />[oracle@collabn1 ~]$ . oraenv<br />ORACLE_SID = [oracle] ? +ASM1<br />The Oracle base has been set to /u01/app/oracle<br />[oracle@collabn1 ~]$ ocrcheck -local<br />PROTL-602: Failed to retrieve data from the local registry<br />PROCL-26: Error while accessing the physical storage Operating System error [Permission denied] [13]<br />[oracle@collabn1 ~]$ ocrcheck<br />Status of Oracle Cluster Registry is as follows :<br /> Version : 4<br /> Total space (kbytes) : 409568<br /> Used space (kbytes) : 1676<br /> Available space (kbytes) : 407892<br /> ID : 827167720<br /> Device/File Name : +OCRVOTE<br /> Device/File integrity check succeeded<br /><br /> Device/File not configured<br /><br /> Device/File not configured<br /><br /> Device/File not configured<br /><br /> Device/File not configured<br /><br /> Cluster registry integrity check succeeded<br /><br /> Logical corruption check bypassed due to non-privileged user<br /><br />[oracle@collabn1 ~]$ su<br />Password:<br />[root@collabn1 oracle]# ocrcheck -local<br />Status of Oracle Local Registry is as follows :<br /> Version : 4<br /> Total space (kbytes) : 409568<br /> Used space (kbytes) : 1036<br /> Available space (kbytes) : 408532<br /> ID : 1014277103<br /> Device/File Name : /u01/app/12.1.0/grid/cdata/collabn1.olr<br /> Device/File integrity check succeeded<br /><br /> Local registry integrity check succeeded<br /><br /> Logical corruption check succeeded<br /><br />[root@collabn1 oracle]# ocrcheck<br />Status of Oracle Cluster Registry is as follows :<br /> Version : 4<br /> Total space (kbytes) : 409568<br /> Used space (kbytes) : 1676<br /> Available space (kbytes) : 407892<br /> ID : 827167720<br /> Device/File Name : +OCRVOTE<br /> Device/File integrity check succeeded<br /><br /> Device/File not configured<br /><br /> Device/File not configured<br /><br /> Device/File not configured<br /><br /> Device/File not configured<br /><br /> Cluster registry integrity check succeeded<br /><br /> Logical corruption check succeeded<br /><br />[root@collabn1 oracle]#<br /></pre><br /><br />Oracle automates backups of the OCR (but not the OLR !). &nbsp;Below, the -showbackuploc shows the location of backups.<br /><br /><pre>[root@collabn1 oracle]# ocrconfig -showbackuploc<br />The Oracle Cluster Registry backup location is [/u01/app/12.1.0/grid/cdata/]<br />[root@collabn1 oracle]# ls -lt /u01/app/12.1.0/grid/cdata<br />total 1272<br />-rw-------. 1 root oinstall 503484416 Mar 6 17:03 collabn1.olr<br />drwxrwxr-x. 2 oracle oinstall 4096 Jan 16 14:12 collabn-cluster<br />drwxr-xr-x. 2 oracle oinstall 4096 Dec 19 15:06 collabn1<br />drwxr-xr-x. 2 oracle oinstall 4096 Dec 19 14:37 localhost<br />[root@collabn1 oracle]# ls -lt /u01/app/12.1.0/grid/cdata/collabn1<br />total 820<br />-rw-r--r--. 1 root root 839680 Dec 19 15:06 backup_20161219_150615.olr<br />[root@collabn1 oracle]# ocrconfig -showbackup<br /><br />collabn1 2017/01/16 14:09:40 /u01/app/12.1.0/grid/cdata/collabn-cluster/backup00.ocr 0<br /><br />collabn1 2017/01/16 14:09:40 /u01/app/12.1.0/grid/cdata/collabn-cluster/day.ocr 0<br /><br />collabn1 2017/01/16 14:09:40 /u01/app/12.1.0/grid/cdata/collabn-cluster/week.ocr 0<br /><br />collabn2 2016/12/19 15:47:24 /u01/app/12.1.0/grid/cdata/collabn-cluster/backup_20161219_154724.ocr 0 <br /><br />collabn2 2016/12/19 15:47:16 /u01/app/12.1.0/grid/cdata/collabn-cluster/backup_20161219_154716.ocr 0 <br />[root@collabn1 oracle]#<br /></pre><br /><br />All recent (4-Hourly, Daily, Weekly) of the OCR are on the "master" node -- collabn1 -- which comes up first in my cluster. &nbsp; &nbsp;The 19-Dec backups (of the OCR and OLR) are when I started setting up the Cluster. &nbsp;Note that there are no subsequent (automated) OLR backups.<br /><i>Note : There are no 4-Hourly/Daily/Weekly backups since 16-Jan because I haven't had my cluster running for long enough for those backups to kick in.</i><br /><br /><pre>[root@collabn1 oracle]# ocrconfig -local -manualbackup<br /><br />collabn1 2017/03/06 17:11:29 /u01/app/12.1.0/grid/cdata/collabn1/backup_20170306_171129.olr 0<br /><br />collabn1 2016/12/19 15:06:15 /u01/app/12.1.0/grid/cdata/collabn1/backup_20161219_150615.olr 0<br />[root@collabn1 oracle]# ocrconfig -manualbackup<br /><br />collabn1 2017/03/06 17:12:21 /u01/app/12.1.0/grid/cdata/collabn-cluster/backup_20170306_171221.ocr 0 <br /><br />collabn2 2016/12/19 15:47:24 /u01/app/12.1.0/grid/cdata/collabn-cluster/backup_20161219_154724.ocr 0 <br /><br />collabn2 2016/12/19 15:47:16 /u01/app/12.1.0/grid/cdata/collabn-cluster/backup_20161219_154716.ocr 0 <br />[root@collabn1 oracle]#<br /></pre><br /><br />I can run manual backups (the -local is for the OLR) as shown above.<br /><br />It is important to include these backups in the backup strategy for the filesystem(s) that hold the Grid Infrastructure and RDBMS installations (binaries, configuration files, trace files etc).<br />.<br />.<br />.</div> Hemant K Chitale tag:blogger.com,1999:blog-1931548025515710472.post-1794091348989137217 Mon Mar 06 2017 04:11:00 GMT-0500 (EST) Oracle E-Business Suite 12.2 Mobile and Web Services Architecture https://www.integrigy.com/security-resources/oracle-e-business-suite-122-mobile-and-web-services-architecture <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 second 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>Approximately 2,900 web services are created with an update to or installation of 12.2 and are defined in the table APPLSYS.FND_IREP_CLASSES. Within the Oracle E-Business Suite‚Äôs user interface, the Integrated SOA Gateway (ISG) module is used to deploy the web services defined in APPLSYS.FND_IREP_CLASSES. Key to understanding the 12.2 web services architecture is that ALL web services are defined in the Service Oriented Architecture (SOA) Gateway, this includes both Simple Object Access Protocol (SOAP) and Representational State Transfer (REST) web services.&nbsp;</p> <p>The E-Business Suite‚Äôs Mobile and smartphone applications are deployed internally as REST services and are likewise defined in the Integrated SOA Gateway and stored in the table APPLSYS.FND_IREP_CLASSES. The graphic below depicts the addition of web services and helps to visualize the increased attack surface that needs to be secured.</p> <p>If you have any questions, please contact us at <a href="mailto:info@integrigy.com">info@integrigy.com</a></p> <p style="margin-left: 40px;"><img alt="" src="/files/images/EBS12-2-Arch_0.jpg" style="width: 353px; height: 233px;"></p> <p>-Michael Miller, CISSP-ISSMP, CCSP, CCSK</p> <h3>References</h3> <ul> <li><a data-jsb_prepared="ie9xyau281" href="file://localhost/node/543" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security ‚Äď Integrigy Whitepaper</a></li> <li><a data-jsb_prepared="iktovxwdvm" href="file://localhost/node/534" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security ‚Äď Integrigy Webinar</a></li> <li><a data-jsb_prepared="2whyf0w778" 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 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 545 at https://www.integrigy.com Fri Mar 03 2017 07:00:00 GMT-0500 (EST) Oracle Database 12c Release 2 (12.2.0.1) upgrade using DBUA http://gavinsoorma.com/2017/03/oracle-database-12c-release-2-12-2-0-1-upgrade-using-dbua/ <p>Oracle 12c Release 2 (12.2.0.1) was officially released for on-premise deployment yesterday. I tested an upgrade of one of my test 12.1.0.2 databases using the Database Upgrade Assistant (DBUA) and the upgrade went smoothly.</p> <p>The Parallel Upgrade command line utility catctl.pl has a number of changes and enhancements as compared to 12c Release 1 and I will discuss that in a later post.</p> <p>Here are the screen shots of the database upgrade process.</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg2.png" rel="attachment wp-att-7405"><img class="aligncenter size-full wp-image-7405" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg2.png" alt="upg2" width="799" height="595" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg2-300x223.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg2-768x572.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg2.png 799w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg2-300x223@2x.png 600w" sizes="(max-width: 799px) 100vw, 799px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg1.png" rel="attachment wp-att-7404"><img class="aligncenter size-full wp-image-7404" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg1.png" alt="upg1" width="797" height="597" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg1-300x225.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg1-768x575.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg1-627x470.png 627w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg1.png 797w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg1-300x225@2x.png 600w" sizes="(max-width: 797px) 100vw, 797px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg3.png" rel="attachment wp-att-7406"><img class="aligncenter size-full wp-image-7406" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg3.png" alt="upg3" width="806" height="595" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg3-300x221.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg3-768x567.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg3.png 806w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg3-300x221@2x.png 600w" sizes="(max-width: 806px) 100vw, 806px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg5.png" rel="attachment wp-att-7408"><img class="aligncenter size-full wp-image-7408" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg5.png" alt="upg5" width="1265" height="816" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg5-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg5-768x495.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg5-1024x661.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg5.png 1265w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg5-300x194@2x.png 600w" sizes="(max-width: 1265px) 100vw, 1265px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg6.png" rel="attachment wp-att-7409"><img class="aligncenter size-full wp-image-7409" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg6.png" alt="upg6" width="1261" height="818" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg6-300x195.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg6-768x498.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg6-1024x664.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg6.png 1261w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg6-300x195@2x.png 600w" sizes="(max-width: 1261px) 100vw, 1261px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg7.png" rel="attachment wp-att-7410"><img class="aligncenter size-full wp-image-7410" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg7.png" alt="upg7" width="571" height="291" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg7-300x153.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg7.png 571w" sizes="(max-width: 571px) 100vw, 571px" /></a> <a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg8.png" rel="attachment wp-att-7411"><img class="aligncenter size-full wp-image-7411" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg8.png" alt="upg8" width="571" height="111" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg8-300x58.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg8.png 571w" sizes="(max-width: 571px) 100vw, 571px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg9.png" rel="attachment wp-att-7412"><img class="aligncenter size-full wp-image-7412" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg9.png" alt="upg9" width="1267" height="816" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg9-300x193.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg9-768x495.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg9-1024x659.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg9.png 1267w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg9-300x193@2x.png 600w" sizes="(max-width: 1267px) 100vw, 1267px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Note &#8211; I only converted my database to NOARCHIVELOG mode because I did not have the recommended free space in the FRA. Don&#8217;t do this in production because ideally you would want to either take a backup of archivelogs or last incremental level 1 backup or set a Guaranteed Restore Point so as to be able to Flashback the database if required.</p> <p>But I did see that the redo generated by the upgrade process seems to far more than that in case of earlier version upgrades. Even the DBUA recommendation was to double the Fast Recovery Area space allocation.</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg10.png" rel="attachment wp-att-7413"><img class="aligncenter size-full wp-image-7413" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg10.png" alt="upg10" width="562" height="363" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg10-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg10.png 562w" sizes="(max-width: 562px) 100vw, 562px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg11.png" rel="attachment wp-att-7414"><img class="aligncenter size-full wp-image-7414" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg11.png" alt="upg11" width="1259" height="816" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg11-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg11-768x498.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg11-1024x664.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg11.png 1259w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg11-300x194@2x.png 600w" sizes="(max-width: 1259px) 100vw, 1259px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg12.png" rel="attachment wp-att-7415"><img class="aligncenter size-full wp-image-7415" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg12.png" alt="upg12" width="1256" height="820" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg12-300x196.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg12-768x501.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg12-1024x669.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg12.png 1256w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg12-300x196@2x.png 600w" sizes="(max-width: 1256px) 100vw, 1256px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg13.png" rel="attachment wp-att-7416"><img class="aligncenter size-full wp-image-7416" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg13.png" alt="upg13" width="1259" height="819" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg13-300x195.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg13-768x500.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg13-1024x666.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg13.png 1259w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg13-300x195@2x.png 600w" sizes="(max-width: 1259px) 100vw, 1259px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg14.png" rel="attachment wp-att-7417"><img class="aligncenter size-full wp-image-7417" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg14.png" alt="upg14" width="1254" height="813" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg14-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg14-768x498.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg14-1024x664.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg14.png 1254w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg14-300x194@2x.png 600w" sizes="(max-width: 1254px) 100vw, 1254px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg15.png" rel="attachment wp-att-7418"><img class="aligncenter size-full wp-image-7418" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg15.png" alt="upg15" width="1262" height="818" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg15-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg15-768x498.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg15-1024x664.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg15.png 1262w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg15-300x194@2x.png 600w" sizes="(max-width: 1262px) 100vw, 1262px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg16.png" rel="attachment wp-att-7419"><img class="aligncenter size-full wp-image-7419" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg16.png" alt="upg16" width="1257" height="814" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg16-300x194.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg16-768x497.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg16-1024x663.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg16.png 1257w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg16-300x194@2x.png 600w" sizes="(max-width: 1257px) 100vw, 1257px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg17.png" rel="attachment wp-att-7420"><img class="aligncenter size-full wp-image-7420" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg17.png" alt="upg17" width="1201" height="835" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg17-300x209.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg17-768x534.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg17-1024x712.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg17.png 1201w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg17-300x209@2x.png 600w" sizes="(max-width: 1201px) 100vw, 1201px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg19.png" rel="attachment wp-att-7422"><img class="aligncenter size-full wp-image-7422" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg19.png" alt="upg19" width="1200" height="824" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg19-300x206.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg19-768x527.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg19-1024x703.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg19.png 1200w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg19-300x206@2x.png 600w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg20.png" rel="attachment wp-att-7423"><img class="aligncenter size-full wp-image-7423" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg20.png" alt="upg20" width="1198" height="832" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg20-300x208.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg20-768x533.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg20-1024x711.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg20.png 1198w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg20-300x208@2x.png 600w" sizes="(max-width: 1198px) 100vw, 1198px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg21.png" rel="attachment wp-att-7424"><img class="aligncenter size-full wp-image-7424" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg21.png" alt="upg21" width="1198" height="831" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg21-300x208.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg21-768x533.png 768w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg21-1024x710.png 1024w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg21.png 1198w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg21-300x208@2x.png 600w" sizes="(max-width: 1198px) 100vw, 1198px" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/03/upg22.png" rel="attachment wp-att-7425"><img class="aligncenter size-full wp-image-7425" src="http://gavinsoorma.com/wp-content/uploads/2017/03/upg22.png" alt="upg22" width="710" height="216" srcset="http://gavinsoorma.com/wp-content/uploads/2017/03/upg22-300x91.png 300w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg22.png 710w, http://gavinsoorma.com/wp-content/uploads/2017/03/upg22-300x91@2x.png 600w" sizes="(max-width: 710px) 100vw, 710px" /></a></p> Gavin Soorma http://gavinsoorma.com/?p=7426 Fri Mar 03 2017 02:34:42 GMT-0500 (EST) Why the DBA is Necessary to the Cloud- Part I http://dbakevlar.com/2017/03/dba-necessary-cloud-part/ <div id="tweetbutton6459" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Fdba-necessary-cloud-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%2Fdba-necessary-cloud-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>There are a lot of people and companies starting to push the same old myth regarding the death of the database administrator role in companies. ¬†On the Oracle side, it started with release Oracle 7 and now is proposed with the introduction of cloud. ¬†Hopefully my post will help ease the mind of those out there with concerns. ¬†There are a number of OBVIOUS reasons this is simply not true, but I&#8217;m going to write a few posts over the next year on some of the less obvious ones that will ensure DBAs stay employed for the long haul.</p> <p><a href="http://dbakevlar.com/2017/03/dba-necessary-cloud-part/tumblr_inline_nyw3dq9goa1t50901_500/" rel="attachment wp-att-6460"><img class="alignnone size-full wp-image-6460" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/02/tumblr_inline_nyw3dq9Goa1t50901_500.gif?resize=245%2C137" alt="" data-recalc-dims="1" /></a></p> <p>The first and to some- ¬†less obvious reason that DBAs are going to continue to be a necessary role in Information Technology with the Cloud is that almost all databases use a Cost Based Optimizer, (CBO).</p> <p>I&#8217;m not going to go into when it was introduced in the different platforms, but over 90% of database platforms used in the market today have a CBO. ¬†This grants the database the ability to make performance decisions based on cost vs. strict rules, granting, (in theory and in most instances) better performance.</p> <h3>Articles, Bugs and Challenges, (ABCs)</h3> <p>There was an <a href="https://www.freelists.org/post/oracle-l/Extended-database-statistics,7">interesting thread on Oracle-l</a> on hit of IO for an EBS environment due to extended statistics. ¬†There were <a href="https://jonathanlewis.wordpress.com/2016/08/02/adaptive-mayhem/">links</a> in the conversation to Jonathan Lewis&#8217; blog that bring¬†you to some incredibly interesting investigations on adaptive plans and other posts on configuration recommendations/bugs involved with extended statistics.</p> <p>With the introduction of the CBO, the DBA was supposed to have less to worry about in the way of performance. ¬†The database was supposed to have automated statistics gathering that would then be used, along with type of process, kernel settings and parameters to make intelligent decisions without human intervention. ¬†The capability allowed the engine to take advantage of advanced features outside of simple rules, (if index for where clause columns exist, then use, etc.)</p> <p>Some CBOs perform with more consistency than others, but many times the challenge of why a database chose a plan is lost on the DBA due to the complexity required to make these decisions.¬† The one thing the DBA thought they could count on was the database engine using up to date statistics on objects, calls and parameters to make the decision. ¬†DBAs began to tear apart the algorithms behind every table/index scan and the cost of each process and limits for each memory and IO feature. ¬†As their knowledge increased, IT shops became more dependent upon their skills to take the CBO to the level required to ensure customers received the data they needed when they needed it. ¬†We learned to know when to ignore the cost on a query or transaction and how to force the database to choose the improved plan.</p> <h3>Dynamic Sampling or Is It Dynamic Pain?</h3> <p>I am a database administrator that HATED Oracle dynamic sampling and still find the cost way out weighing the benefit. ¬†There were few cases where it served a DBA like me, who possessed strong CBO and statistics knowledge, that for Oracle to make choices for me, (especially with SQL¬†that had controlled hints included in the statements) caused me to find new ways to disable it anyway I could. ¬†I had dreams of the feature maturing into something that would serve my needs instead of waking me from those dreams to address another challenge where none should have been present.</p> <p>If you managed as many multi-TB databases as I did, extensive dynamic sampling, especially on large objects could come back to haunt you. ¬†I performed a number of traces on processes where an Exadata was being accused of a configuration problem when in truth,¬†it was 8 minutes of dynamic sampling out of a 9 minute db time. ¬†In each instance, I¬†proved dynamic sampling¬†was to blame¬†via trace file evidence and in each instance, developers and application folks involved would ask why dynamic sampling was even considered a feature.¬†I did see the feature usage and benefits, but it was rarely for the very large databases I managed.</p> <h3>Adaptive Plans</h3> <p>The next logical step in Oracle&#8217;s mind for enhancing features like¬†dynamic sampling¬†was to add Adaptive Plans.¬†This is another feature that Oracle has introduced to benefit query and transactional process performance in databases. Allow the plan to adapt to allow the plan to adapt to the run in question, but if you&#8217;ve read the thread and the links included in the first part of this post, you&#8217;ll know that if often performs less than optimally.</p> <h3>Silver Bullets- NOT</h3> <p>In the end, OnPrem databases required extensive knowledge of the internal database workings, metrics and an strong research skills were required to guarantee the most consistent performance for any enterprise database engine.</p> <p>All DBAs have experienced the quick fix solutionist, (not even a word, but I&#8217;m making it up here!) that would make recommendations like:</p> <p>&#8220;Oh, it&#8217;s eating up CPU? ¬†Let&#8217;s get more/faster CPU!&#8221;</p> <p>&#8220;I/O waits? ¬†Just get faster disk!&#8221;</p> <p>&#8220;We need more compute? ¬†Just throw more at it!&#8221;</p> <p>As a DBA, we knew that this was the quick and honestly, a¬†<strong>temporary</strong> fix. ¬†To quote Cary Millsap, &#8220;You can&#8217;t hardware your way out of a software problem.&#8221; ¬†It&#8217;s one of my favorites, as I found myself in the situation of explaining why adding hardware was only a short-term solution.¬†To answer why it&#8217;s short-term, we have to ask ourselves, &#8220;What is the natural life of a database?&#8221;</p> <blockquote><p><em><strong>Growth.</strong> </em></p></blockquote> <p>Either in design, processes, users or code, (especially with poorly written¬†code.) ¬†If you didn&#8217;t correct the poor foundation that was causing the heavy usage on the system by ensuring it ran more efficiently, you would only find yourself in the same place in six months or if lucky, two years, explaining why the &#8220;database sucks&#8221; again. ¬†This required research, testing and¬†traditional optimization techniques, not enabling by granting it more resources to eat up in the future.</p> <h3>The Cloud is the Key</h3> <p>Considering that in a very high level view, any cloud is really just running all of these same product features and database engines on somebody else&#8217;s computer. ¬†How does this allow¬†for complex features that required expertise to manage bypassed?</p> <p>Unlike initial project startups or quick development spin ups, do we think companies are just going to continue to pay for more and more compute and IO?</p> <p>I would be willing to bet it&#8217;s more cost effective to have people who know how to do more with less. ¬†At what point does that graph of price vs. demand hit the point that having people who know what they&#8217;re doing with a database make a difference? ¬†I think it&#8217;s a lot lower than the threshold many¬†companies assume with statements of¬† &#8220;You won&#8217;t need a Database Administrator anymore- ¬†Just standard administrator¬†and developers!&#8221;</p> <p><strong><em>Tell me what you think!</em></strong></p> <p>&nbsp;</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/cloud/" rel="tag">Cloud</a>, <a href="http://dbakevlar.com/tag/database-administrator/" rel="tag">database administrator</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/dba-necessary-cloud-part/&title=Why the DBA is Necessary to the Cloud- 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/dba-necessary-cloud-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/dba-necessary-cloud-part/&title=Why the DBA is Necessary to the Cloud- 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/dba-necessary-cloud-part/&title=Why the DBA is Necessary to the Cloud- 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/dba-necessary-cloud-part/&title=Why the DBA is Necessary to the Cloud- 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/dba-necessary-cloud-part/#comments">4 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/2011/06/rmoug-board-of-directors/" >RMOUG Board of Directors</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/03/ora-02050-remote-db-in-doubt-how-about-gone-for-years/" >ORA-02050 Remote DB in Doubt? How About Gone for Years??</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/06/em12c_and_hardware/" >EM12c and Hardware</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/rmoug-training-days-2015/" >RMOUG Training Days 2015!</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/11/november-dba-rant/" >November DBA Rant</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/dba-necessary-cloud-part/">Why the DBA is Necessary to the Cloud- Part I</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/03/dba-necessary-cloud-part/">Why the DBA is Necessary to the Cloud- Part I</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6459 Thu Mar 02 2017 15:12:20 GMT-0500 (EST) Use SQL Developer to Create a PDB ‚Äď Database 12cR2 http://dbaontap.com/2017/03/02/use-sql-developer-to-create-a-pdb-database-12cr2/ <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl.jpg"><img class="size-medium wp-image-1065 alignleft" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl.jpg?resize=300%2C193" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl.jpg?resize=300%2C193 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl.jpg?resize=233%2C150 233w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl.jpg?resize=150%2C96 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl.jpg?w=585 585w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>Continuing along with the release of 12cR2, let&#8217;s quickly look at creating a PDB in the database. Now that we have a database installed fire up one of my favorite tools, SQL Developer and let&#8217;s get to work.</p> <p><em>Note: These steps have not change from 12cR1, but maybe you haven&#8217;t seen that process either.</em></p> <p>&nbsp;</p> <p>Create a connection to the database CDB with SQL Developer. The SID will be what you set up</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev-1.jpg"><img class="wp-image-1066 size-large alignnone" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev-1.jpg?resize=800%2C683" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev-1.jpg?resize=1030%2C880 1030w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev-1.jpg?resize=300%2C256 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev-1.jpg?resize=768%2C656 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev-1.jpg?resize=176%2C150 176w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev-1.jpg?resize=150%2C128 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev-1.jpg?w=1085 1085w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>Next we will open up the DBA view and create a connection here.</p> <p>Choose <strong>DBA</strong> from the <strong>View</strong> menu: ¬†View &#8211;&gt; DBA</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB2.jpg"><img class="size-large wp-image-1067 alignnone" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB2.jpg?resize=800%2C569" alt="" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB2.jpg?resize=1030%2C733 1030w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB2.jpg?resize=300%2C213 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB2.jpg?resize=768%2C546 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB2.jpg?resize=211%2C150 211w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB2.jpg?resize=150%2C107 150w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB2.jpg?w=1338 1338w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>Select the connection you created you created earlier from the drop down</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB3.jpg"><img class="size-full wp-image-1068 alignnone" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB3.jpg?resize=527%2C334" alt="" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB3.jpg?w=527 527w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB3.jpg?resize=300%2C190 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB3.jpg?resize=237%2C150 237w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB3.jpg?resize=150%2C95 150w" sizes="(max-width: 527px) 100vw, 527px" data-recalc-dims="1" /></a></p> <p>Open the <strong>DBA</strong> connection to the 12cR2 database and expand the <strong>Container Database</strong></p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB4.jpg"><img class="size-full wp-image-1071 alignnone" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB4.jpg?resize=771%2C490" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB4.jpg?w=771 771w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB4.jpg?resize=300%2C191 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB4.jpg?resize=768%2C488 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB4.jpg?resize=236%2C150 236w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB4.jpg?resize=150%2C95 150w" sizes="(max-width: 771px) 100vw, 771px" data-recalc-dims="1" /></a></p> <p>Right click on PDB1 and select <span style="text-decoration: underline;">C</span>lone PDB&#8230;</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB5.jpg"><img class="size-large wp-image-1072 alignnone" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB5.jpg?resize=800%2C286" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB5.jpg?resize=1030%2C368 1030w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB5.jpg?resize=300%2C107 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB5.jpg?resize=768%2C275 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB5.jpg?resize=250%2C89 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB5.jpg?resize=150%2C54 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB5.jpg?w=1147 1147w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>Give your PDB a name. Also select Custom Names in the¬†<strong>File Name Conversions</strong>¬†dropdown section. If you are not using OMF, you&#8217;ll have to select Custom Names from the drop down. If you have a specific naming convention, you can modify the <strong>Target File</strong> section. Take note of the <strong>Open Automatically</strong> checkbox, which will open the PDB immediately upon its creation</p> <p>Below you can see that if we use the¬†<strong>Open Automatically</strong> option, the available State Option is IMMEDIATE and the New State will be CLOSE.</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB7.jpg"><img class="wp-image-1074 alignnone" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB7.jpg?resize=798%2C605" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB7.jpg?resize=1030%2C781 1030w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB7.jpg?resize=300%2C228 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB7.jpg?resize=768%2C582 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB7.jpg?resize=198%2C150 198w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB7.jpg?resize=150%2C114 150w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB7.jpg?w=1341 1341w" sizes="(max-width: 798px) 100vw, 798px" data-recalc-dims="1" /></a><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart3.jpg"><img class="alignright wp-image-1092" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart3.jpg?resize=301%2C285" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart3.jpg?w=413 413w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart3.jpg?resize=300%2C284 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart3.jpg?resize=158%2C150 158w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart3.jpg?resize=150%2C142 150w" sizes="(max-width: 301px) 100vw, 301px" data-recalc-dims="1" /></a></p> <p>&nbsp;</p><pre class="crayon-plain-tag">BEGIN EXECUTE IMMEDIATE 'CREATE PLUGGABLE DATABASE "dbaontap" FROM "PDB1" STORAGE UNLIMITED TEMPFILE REUSE FILE_NAME_CONVERT=( ''/u01/app/oracle/oradata/cdb1/pdb1/system01.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/system0-dbaontap.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/sysaux01.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/sysaux0-dbaontap.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/undotbs01.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/undotbs0-dbaontap.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/users01.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/users0-dbaontap.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/temp01.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/temp0-dbaontap.dbf'' )'; EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE dbaontap OPEN READ WRITE'; END;</pre><p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>View of the same screen and SQL with the¬†<strong>Open Automatically</strong> checkbox unchecked. You will notice here that the available State Option is READ WRITE indicating that the New State will be OPEN and the database will be in READ WRITE mode.</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB6.jpg"><img class="size-large wp-image-1073 alignnone" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB6.jpg?resize=800%2C607" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB6.jpg?resize=1030%2C781 1030w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB6.jpg?resize=300%2C228 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB6.jpg?resize=768%2C582 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB6.jpg?resize=198%2C150 198w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB6.jpg?resize=150%2C114 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB6.jpg?w=1341 1341w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart4.jpg"><img class="alignright wp-image-1093" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart4.jpg?resize=302%2C286" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart4.jpg?w=413 413w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart4.jpg?resize=300%2C284 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart4.jpg?resize=158%2C150 158w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB_AutoStart4.jpg?resize=150%2C142 150w" sizes="(max-width: 302px) 100vw, 302px" data-recalc-dims="1" /></a></p><pre class="crayon-plain-tag">BEGIN EXECUTE IMMEDIATE 'CREATE PLUGGABLE DATABASE "dbaontap" FROM "PDB1" STORAGE UNLIMITED TEMPFILE REUSE FILE_NAME_CONVERT=( ''/u01/app/oracle/oradata/cdb1/pdb1/system01.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/system0-dbaontap.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/sysaux01.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/sysaux0-dbaontap.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/undotbs01.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/undotbs0-dbaontap.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/users01.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/users0-dbaontap.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/temp01.dbf'', ''/u01/app/oracle/oradata/cdb1/pdb1/temp0-dbaontap.dbf'' )'; END;</pre><p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB8.jpg"><img class="size-full wp-image-1075 alignnone" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB8.jpg?resize=800%2C409" alt="" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB8.jpg?w=862 862w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB8.jpg?resize=300%2C153 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB8.jpg?resize=768%2C393 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB8.jpg?resize=250%2C128 250w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB8.jpg?resize=150%2C77 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>Finally what I like to do is, right click on my shiny new PDB and <strong>Create Startup Trigger.</strong><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB9.jpg"><img class="size-full wp-image-1076 alignnone" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB9.jpg?resize=800%2C407" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB9.jpg?w=842 842w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB9.jpg?resize=300%2C152 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB9.jpg?resize=768%2C390 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB9.jpg?resize=250%2C127 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB9.jpg?resize=150%2C76 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB10.jpg"><img class="size-large wp-image-1077 alignnone" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB10.jpg?resize=800%2C438" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB10.jpg?resize=1030%2C564 1030w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB10.jpg?resize=300%2C164 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB10.jpg?resize=768%2C420 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB10.jpg?resize=250%2C137 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB10.jpg?resize=150%2C82 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB10.jpg?w=1054 1054w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB11.jpg"><img class="size-full wp-image-1078 alignnone" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB11.jpg?resize=800%2C367" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB11.jpg?w=874 874w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB11.jpg?resize=300%2C138 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB11.jpg?resize=768%2C352 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB11.jpg?resize=250%2C115 250w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB11.jpg?resize=150%2C69 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>Finally, we will connect to the new PDB</p> <p>SQL Developer</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB12.jpg"><img class="size-full wp-image-1079 alignnone" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB12.jpg?resize=757%2C449" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB12.jpg?w=757 757w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB12.jpg?resize=300%2C178 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB12.jpg?resize=250%2C148 250w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB12.jpg?resize=150%2C89 150w" sizes="(max-width: 757px) 100vw, 757px" data-recalc-dims="1" /></a></p> <p>and SQLcl from my MacBook and the Linux VM.</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-1.jpg"><img class=" wp-image-1080 alignnone" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-1.jpg?resize=481%2C309" alt="" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-1.jpg?w=585 585w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-1.jpg?resize=300%2C193 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-1.jpg?resize=233%2C150 233w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/sqlcl-1.jpg?resize=150%2C96 150w" sizes="(max-width: 481px) 100vw, 481px" data-recalc-dims="1" /></a><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB13.jpg"><img class="alignright wp-image-1085 " src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB13.jpg?resize=428%2C342" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB13.jpg?w=806 806w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB13.jpg?resize=300%2C239 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB13.jpg?resize=768%2C613 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB13.jpg?resize=188%2C150 188w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/PDB13.jpg?resize=150%2C120 150w" sizes="(max-width: 428px) 100vw, 428px" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Enjoy!<a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png"><img class="alignright size-medium wp-image-265" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=300%2C134" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=300%2C134 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=250%2C111 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?resize=150%2C67 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/08/dbaOnTap.png?w=525 525w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/03/02/use-sql-developer-to-create-a-pdb-database-12cr2/">Use SQL Developer to Create a PDB &#8211; Database 12cR2</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">My Experiences with Oracle Technology</a>.</p> DB http://dbaontap.com/?p=1063 Thu Mar 02 2017 15:03:50 GMT-0500 (EST) Oracle Database 12c Release 2 is Now Available‚Ķand so is our New VirtualBox Appliance! http://www.thatjeffsmith.com/archive/2017/03/oracle-database-12c-release-2-is-now-available-and-so-is-our-new-virtualbox-appliance/ <p>Want to get started on learning <a href="https://docs.oracle.com/database/122/NEWFT/new_features.htm#NEWFT-GUID-F24640D6-5151-4D00-9B21-1365D04D5499" target="_blank">everything there is to know</a> about the latest version of our Database?</p> <p>Don&#8217;t want to really have to install or create anything?</p> <p>Well, you&#8217;re in luck.</p> <p><a href="http://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html" target="_blank">Just go download our image</a>.</p> <div id="attachment_6052" style="width: 996px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/122-vm.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/122-vm.png" alt="oracle virtualbox image" width="986" height="680" class="size-full wp-image-6052" /></a><p class="wp-caption-text">The image is up and running, complete with sample data for you to play with.</p></div> <p>In a few minutes, you&#8217;ll be up and running with Database 12c Release 2.<br /> And APEX 5.1.<br /> And ORDS 3.0.9.<br /> And of course SQL Developer.</p> <p>Plus, you&#8217;ll get lots of Hands On Labs! Step by step instructions allow you to teach yourself some database fundamentals.</p> <p>Need help getting started with VirtualBox and this appliance? I have <a href="http://www.thatjeffsmith.com/archive/2014/02/introducing-the-otn-developer-day-database-12c-virtualbox-image/" target="_blank">some advice here</a>.</p> <p>I do suggest for this new image that you:</p> <ul> <li>bump up the memory to 3GB</li> <li>set processors to 2</li> </ul> <p>And then you can go play! (I say &#8216;play&#8217; b/c this image is made available for training and learning purposes only.) </p> <p>Here I am doing some questionable stuff&#8230;please don&#8217;t do as I do, but you can create objects with names longer than 30 characters now.<br /> <div id="attachment_6053" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/more30.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/more30.png" alt="oracle table and column with long names" width="1024" height="530" class="size-full wp-image-6053" /></a><p class="wp-caption-text">Remember, we also let you add comments to your tables and columns <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> <h3>Still too much?</h3> <p>Go try <a href="http://livesql.oracle.com/" target="_blank">LiveSQL</a>! It&#8217;s just a website, with 12.2 running under the covers. You can try out our new features in a SQL worksheet, and see how stuff works.</p> <div id="attachment_5577" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2016/03/livesql1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2016/03/livesql1.png" alt="oracle livesql" width="1024" height="518" class="size-full wp-image-5577" /></a><p class="wp-caption-text">You won&#8217;t see the text balloons and scribbling &#8211; I added those.</p></div> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6051 Thu Mar 02 2017 14:49:56 GMT-0500 (EST) Installing Oracle Database 12cR2 on Linux 7.3 http://dbaontap.com/2017/03/02/installing-oracle-database-12cr2-linux-7-3/ <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/db12cR2.jpg"><img class="wp-image-1040 size-medium alignleft" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/db12cR2.jpg?resize=300%2C183" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/db12cR2.jpg?resize=300%2C183 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/db12cR2.jpg?resize=246%2C150 246w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/db12cR2.jpg?resize=150%2C91 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/db12cR2.jpg?w=603 603w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a>What do you do when Oracle releases the long awaited 12cR2 version of the database? You download it and install it. So let&#8217;s get started.</p> <p>Visit the Oracle <a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html">Download</a> site and download the version 12cR2 of the database. This time it&#8217;s just a single zip file. So grab that and unzip it in a directory on your linux box. Below we will configure your OS and walk through the install screens.</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><strong><em>The Setup:</em></strong></p> <p><strong><em>VM<br /> Oracle Virtual Box 5.1.14<br /> Linux 7.3<br /> Memory: 8GB<br /> Disk Space: 50GB</em></strong></p> <p><strong><em>Host:<br /> <strong><em>MacBook Pro (Retina, 15-inch, Mid 2014)</em></strong><br /> <strong><em>Processor: 2.2 GHz Intel Core i7</em></strong></em></strong></p> <p>OS Setup:</p> <p>The following steps, you&#8217;ll want to perform as root:</p> <p>1.Edit your /etc/hosts file by adding your¬†fully qualified domain name ¬†For my system we have:</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/host.jpg"><img class="size-full wp-image-1042 aligncenter" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/host.jpg?resize=800%2C251" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/host.jpg?w=862 862w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/host.jpg?resize=300%2C94 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/host.jpg?resize=768%2C241 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/host.jpg?resize=250%2C78 250w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/host.jpg?resize=150%2C47 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/host.jpg?resize=800%2C250 800w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>2.For ease of setup, I used &#8220;oracle-rdbms-server-12cR2-preinstall.x86_64&#8221; package to configure all prerequisites.</p> <p><strong>yum install oracle-rdbms-server-12cR2-preinstall.x86_64 -y</strong></p> <p>3. For grins, go ahead and perform a yum update</p> <p><strong>yum update -y</strong></p> <p>4. Create your install directory structure and assign appropriate permissions:</p> <p><strong>mkdir -p /u01/app/oracle/product/12.2.0.2/db_1</strong><br /> <strong>chown -R oracle:oinstall /u01</strong><br /> <strong>chmod -R 775 /u01</strong></p> <p>5. Edit your /home/oracle/.bash_profile to reflect appropriate system variables:</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/bash_profile.jpg"><img class="aligncenter size-full wp-image-1044" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/bash_profile.jpg?resize=800%2C477" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/bash_profile.jpg?w=876 876w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/bash_profile.jpg?resize=300%2C179 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/bash_profile.jpg?resize=768%2C458 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/bash_profile.jpg?resize=250%2C150 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/bash_profile.jpg?resize=150%2C89 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <p>For the rest of this process, you will need to log in as the Oracle user. If you used the preinstall package you&#8217;ll need to set your ORACLE user password:</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/passwd.jpg"><img class="aligncenter size-full wp-image-1045" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/passwd.jpg?resize=656%2C170" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/passwd.jpg?w=656 656w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/passwd.jpg?resize=300%2C78 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/passwd.jpg?resize=250%2C65 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/passwd.jpg?resize=150%2C39 150w" sizes="(max-width: 656px) 100vw, 656px" data-recalc-dims="1" /></a></p> <p>6. Login as the oracle user and¬†unzip the &#8220;linuxx64_12201_database.zip&#8221; you downloaded earlier.</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/installdir.jpg"><img class="wp-image-1041 size-full aligncenter" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/installdir.jpg?resize=679%2C459" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/installdir.jpg?w=679 679w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/installdir.jpg?resize=300%2C203 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/installdir.jpg?resize=222%2C150 222w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/installdir.jpg?resize=150%2C101 150w" sizes="(max-width: 679px) 100vw, 679px" data-recalc-dims="1" /></a></p> <p>7. Execute the ./runInstaller file to kick off the installation</p> <p><a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install1.jpg"><img class="aligncenter size-full wp-image-1046" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install1.jpg?resize=800%2C479" alt="" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install1.jpg?w=909 909w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install1.jpg?resize=300%2C180 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install1.jpg?resize=768%2C460 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install1.jpg?resize=250%2C150 250w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install1.jpg?resize=150%2C90 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>8.¬†<a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install2.jpg"><img class="aligncenter size-full wp-image-1047" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install2.jpg?resize=800%2C608" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install2.jpg?w=803 803w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install2.jpg?resize=300%2C228 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install2.jpg?resize=768%2C583 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install2.jpg?resize=197%2C150 197w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install2.jpg?resize=150%2C114 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>9.<a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install3.jpg"><img class="aligncenter size-full wp-image-1048" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install3.jpg?resize=800%2C609" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install3.jpg?w=802 802w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install3.jpg?resize=300%2C229 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install3.jpg?resize=768%2C585 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install3.jpg?resize=197%2C150 197w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install3.jpg?resize=150%2C114 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>10.<a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install4.jpg"><img class="aligncenter size-full wp-image-1049" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install4.jpg?resize=800%2C607" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install4.jpg?w=805 805w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install4.jpg?resize=300%2C228 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install4.jpg?resize=768%2C583 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install4.jpg?resize=198%2C150 198w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install4.jpg?resize=150%2C114 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>11.<a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install5.jpg"><img class="aligncenter size-full wp-image-1050" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install5.jpg?resize=800%2C611" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install5.jpg?w=800 800w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install5.jpg?resize=300%2C229 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install5.jpg?resize=768%2C587 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install5.jpg?resize=196%2C150 196w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/install5.jpg?resize=150%2C115 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>12.<a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install6.jpg"><img class="aligncenter size-full wp-image-1051" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install6.jpg?resize=799%2C610" alt="" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install6.jpg?w=799 799w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install6.jpg?resize=300%2C229 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install6.jpg?resize=768%2C586 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install6.jpg?resize=196%2C150 196w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install6.jpg?resize=150%2C115 150w" sizes="(max-width: 799px) 100vw, 799px" data-recalc-dims="1" /></a></p> <p>13.¬†<a href="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install7.jpg"><img class="aligncenter size-full wp-image-1052" src="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install7.jpg?resize=799%2C610" alt="" srcset="https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install7.jpg?w=799 799w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install7.jpg?resize=300%2C229 300w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install7.jpg?resize=768%2C586 768w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install7.jpg?resize=196%2C150 196w, https://i1.wp.com/dbaontap.com/wp-content/uploads/2017/03/install7.jpg?resize=150%2C115 150w" sizes="(max-width: 799px) 100vw, 799px" data-recalc-dims="1" /></a></p> <p>14.¬†<a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install8.jpg"><img class="aligncenter size-full wp-image-1053" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install8.jpg?resize=800%2C608" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install8.jpg?w=802 802w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install8.jpg?resize=300%2C228 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install8.jpg?resize=768%2C584 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install8.jpg?resize=197%2C150 197w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/install8.jpg?resize=150%2C114 150w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>15. From here, take all the remaining defaults and and finally click Install.</p> <p>The installer sat at 94% for quite some time, but it finally finished. If everything goes well, you will presented with a success screen and the URL for EM Express. Something like:</p> <p>https://&lt;domain name&gt;:5500/em</p> <p><a href="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress1.jpg"><img class="aligncenter size-large wp-image-1054" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress1.jpg?resize=800%2C478" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress1.jpg?resize=1030%2C616 1030w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress1.jpg?resize=300%2C179 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress1.jpg?resize=768%2C459 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress1.jpg?resize=250%2C150 250w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress1.jpg?resize=150%2C90 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress1.jpg?w=1600 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress2.jpg"><img class="aligncenter size-large wp-image-1055" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress2.jpg?resize=800%2C478" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress2.jpg?resize=1030%2C616 1030w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress2.jpg?resize=300%2C179 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress2.jpg?resize=768%2C459 768w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress2.jpg?resize=250%2C150 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress2.jpg?resize=150%2C90 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2017/03/emexpress2.jpg?w=1600 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <p>Then finally, we have to connect SQL Developer:</p> <p><a href="http://dbaontap.com/2016/01/13/vbox5/"><img class="aligncenter size-large wp-image-1056" src="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev.jpg?resize=800%2C683" alt="" srcset="https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev.jpg?resize=1030%2C880 1030w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev.jpg?resize=300%2C256 300w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev.jpg?resize=768%2C656 768w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev.jpg?resize=176%2C150 176w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev.jpg?resize=150%2C128 150w, https://i2.wp.com/dbaontap.com/wp-content/uploads/2017/03/SQLDev.jpg?w=1085 1085w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></a></p> <p>&nbsp;</p> <p>After this install, I like to point out that the <a href="http://dbaontap.com/2016/01/13/vbox5/">segmentation fault issue</a> and the &#8220;Error Referenced &#8216;irman ioracle&#8217; during binary installation&#8221; issue identified <a href="https://dbasolved.com/2015/07/17/error-referenced-irman-ioracle-during-binary-installation/">here</a> were not present. Hope this help get you started with #12cR2.</p> <p>Enjoy</p> <p><a href="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png"><img class="alignright size-medium wp-image-225" src="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png?resize=300%2C134" alt="" srcset="https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png?resize=300%2C134 300w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png?resize=250%2C111 250w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png?resize=150%2C67 150w, https://i0.wp.com/dbaontap.com/wp-content/uploads/2014/07/dbaOnTap.png?w=525 525w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></p> <p>The post <a rel="nofollow" href="http://dbaontap.com/2017/03/02/installing-oracle-database-12cr2-linux-7-3/">Installing Oracle Database 12cR2 on Linux 7.3</a> appeared first on <a rel="nofollow" href="http://dbaontap.com">My Experiences with Oracle Technology</a>.</p> DB http://dbaontap.com/?p=1039 Thu Mar 02 2017 04:37:48 GMT-0500 (EST) Runtime version of Node on Oracle Application Container Cloud (0.12 vs. 6.9.1) ‚Äď easy single click upgrade https://technology.amis.nl/2017/03/02/runtime-version-of-node-on-oracle-application-container-cloud-0-12-vs-6-9-1-easy-single-click-upgrade/ <p>Yesterday, I create a new application on Oracle Application Container Cloud. The application type is Node (fka Node.js), so the container type I had created was Node &#8211; rather than PHP or Java SE, the other two options currently available to me. I was a little dismayed to learn that the runtime Node version that my container was created with was (still) 0.12.17. I had assumed that by now ACCS would have moved to a more recent version of Node.</p> <p>Today, after a little closer inspection, I realized that upgrading the runtime [version of Node]is actually very simple to do on ACCS. Go to the Administration tab in the application overview.</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image.png?ssl=1"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb.png?resize=674%2C523&#038;ssl=1" data-recalc-dims="1"></a></p> <p>Two later versions for the Node runtime are listed &#8211; 4.6.1 and 6.9.1. Now we are talking! I can simply click on the Update button to have the runtime upgraded. I can then choose between the fast update, with some brief downtime, or the rolling upgrade that will not affect the service of my application &#8211; and take longer to complete.</p> <p><a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-1.png?ssl=1"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-1.png?resize=683%2C247&#038;ssl=1" data-recalc-dims="1"></a></p> <p>I click on Restart. The UI informs me of the current action:</p> <p><a href="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-2.png?ssl=1"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-2.png?resize=702%2C152&#038;ssl=1" data-recalc-dims="1"></a></p> <p>And I can track the in progress activity:</p> <p><a href="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image-3.png?ssl=1"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; border-left: 0px; display: block; padding-right: 0px; margin-right: auto" border="0" alt="image" src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/03/image_thumb-3.png?resize=702%2C562&#038;ssl=1" data-recalc-dims="1"></a></p> <p>The overall upgrade took several minutes to complete &#8211; somewhat longer still than I had expected. However, it took me not more effort than clicking a button. And it did not impact my consumers. All in all, pretty smooth. And now I am on v6.9.1, which is pretty up to date. </p> <p>I am not sure whether during the initial creation of the application I had the option to start out with this recent version of Node, rather than the fairly old v0.12 that was ow provisioned initially. If so, I missed it completely. Then it should be made more obvious. If I did not get the choice, then I believe that a missed opportunity that Oracle may want to add to this cloud service.</p> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/03/02/runtime-version-of-node-on-oracle-application-container-cloud-0-12-vs-6-9-1-easy-single-click-upgrade/">Runtime version of Node on Oracle Application Container Cloud (0.12 vs. 6.9.1) &#8211; easy single click upgrade</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=44162 Thu Mar 02 2017 00:32:23 GMT-0500 (EST) Clone‚Ķerr, Cloud Wars http://dbakevlar.com/2017/03/clone-err-cloud-wars/ <div id="tweetbutton6468" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F03%2Fclone-err-cloud-wars%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%2Fclone-err-cloud-wars%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>No, this isn&#8217;t a title for a future Star Wars movie, but our own future, foreseen by me, (as well as many others)¬†from¬†experience, research and discussions everyday.</p> <p><a href="http://dbakevlar.com/2017/03/clone-err-cloud-wars/tumblr_static_tumblr_static_2tbtn5zip3284sog440kg4gk4_640/" rel="attachment wp-att-6469"><img class="alignnone wp-image-6469" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/tumblr_static_tumblr_static_2tbtn5zip3284sog440kg4gk4_640.gif?resize=441%2C248" alt="" data-recalc-dims="1" /></a></p> <p>No, it&#8217;s not this dark and menacing&#8230;no sith lords.</p> <h3>The Cloud</h3> <p>We know who the main players in the current cloud arena are and how much they hold of the cloud market.</p> <p><a href="http://dbakevlar.com/2017/03/clone-err-cloud-wars/screen-shot-2017-02-22-at-3-59-09-pm/" rel="attachment wp-att-6470"><img class="alignnone wp-image-6470" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-22-at-3.59.09-PM.png?resize=485%2C214" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-22-at-3.59.09-PM.png?resize=1024%2C453 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-22-at-3.59.09-PM.png?resize=300%2C133 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-22-at-3.59.09-PM.png?resize=768%2C340 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-22-at-3.59.09-PM.png?w=1536 1536w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-22-at-3.59.09-PM.png?w=1200 1200w" sizes="(max-width: 485px) 100vw, 485px" data-recalc-dims="1" /></a></p> <p>Many are betting that they can make a dent in that market and as much as it looks like some companies have the cloud all &#8220;wrapped up&#8221;, it may not be as clean a win as you might think.</p> <h3>One to Many</h3> <p>Most companies foresee having one, primary cloud vendor, yet that may be today, but not tomorrow. ¬†As a DBA, I was told over and over again, &#8220;We&#8217;re hiring you just for your Oracle skills. ¬†We won&#8217;t have any need for your SQL Server or other database platform skills.&#8221; ¬†Within six weeks, a mission critical system would be discovered that ran on another database platform and my skills were needed to first recover from whatever cataclysmic situation had occurred and then centralizing the management for it under IT.</p> <p>How many of you want to take bets on this happening with the cloud? ¬†IT is often viewed as a road block by many companies and so the business, when it needs something, will find a way to get what it needs. ¬†Historically, this meant getting a server, putting it under someone&#8217;s desk and having them purchase or develop the product outside of the IT department. ¬†Now, with the ease of the cloud, someone will simply create what they need, have hosted in the cloud what will become critical to a business at a point in the future and then the IT organization will need to be responsible, secure it and manage it.</p> <h3>The How of Clouds</h3> <p>This leaves IT folks with some new challenges. ¬†Instead of having to consolidate to company standards for servers or migrate databases or data centers, they will have to migrate between clouds.</p> <p>This type of need, along with a demand for business migrating into the cloud, will create cloud price wars. ¬†They will be very similar to what we&#8217;re experiencing with our mobile providers, first introduced among the big four providers when T-Mobile did away with contracts and transfer fees. ¬†Verizon, Sprint and AT&amp;T were quick to follow with their own versions to entice customers and make it easier to move from one provider to another.</p> <p>This is another reason of why I&#8217;m at <strong><a href="https://www.delphix.com/">Delphix</a>.</strong> ¬†I see how important its going to be for us to help customers to:</p> <ol> <li>Move easily into the cloud from on-prem.</li> <li>Ability to migrate¬†from one cloud provider to another when they desire.</li> </ol> <p>Although Amazon and Azure are rulers of the roost today, there are other companies that may be trailing in the arena that may rule it tomorrow. ¬†If there&#8217;s one thing we know is constant, it&#8217;s change. ¬†There was a time when we all laughed at the geeks and their smartphones, yet now we all own one. ¬†I wouldn&#8217;t count anybody out of the race yet and it might be pertinent to¬†start betting on those that enable those in the race.</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/cloud-wars/" rel="tag">Cloud wars</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/clone-err-cloud-wars/&title=Clone...err, Cloud Wars"> <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/clone-err-cloud-wars/"><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/clone-err-cloud-wars/&title=Clone...err, Cloud Wars"><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/clone-err-cloud-wars/&title=Clone...err, Cloud Wars"><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/clone-err-cloud-wars/&title=Clone...err, Cloud Wars"><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/clone-err-cloud-wars/#comments">2 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/01/working-with-awr-reports-from-em12c/" >Working With AWR Reports From EM12c</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/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/2013/01/enkitec-e4-2013-abstract-submissions-are-open/" >Enkitec E4 2013 Abstract Submissions are Open!</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/11/oracle-enterprise-manager-12c-command-line-interface-is-available/" >Oracle Enterprise Manager 12c Command Line Interface is Available!</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/04/how-to-find-information-in-the-omr-enterprise-manager-repository/" >How to Find Information in the OMR, (Enterprise Manager Repository)</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/clone-err-cloud-wars/">Clone...err, Cloud Wars</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/03/clone-err-cloud-wars/">Clone&#8230;err, Cloud Wars</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6468 Wed Mar 01 2017 14:50:16 GMT-0500 (EST) Oracle Database 12.2.0.1.0 available for download http://dirknachbar.blogspot.com/2017/03/oracle-database-122010-available-for.html The new Oracle Database 12.2.0.1.0 Software were released earlier than announced, its available since today for download on Oracle Technology Network&nbsp;<a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html" target="_blank">http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html</a><br /><br />Currently the Oracle Database 12.2.0.1.0 are available for following Operating Systems:<br /><br /><br /><ul><li>Linux x86-64</li><li>Oracle Solaris on SPARC</li><li>Oracle Solaris on x86 systems, 64-bit</li></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-LcPLwwEnlcE/WLcL0MEKR9I/AAAAAAAAAl4/LEGMRG8FCasuuE4fZqLrZ4vASQr8miFDgCLcB/s1600/download_db122.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="428" src="https://4.bp.blogspot.com/-LcPLwwEnlcE/WLcL0MEKR9I/AAAAAAAAAl4/LEGMRG8FCasuuE4fZqLrZ4vASQr8miFDgCLcB/s640/download_db122.png" width="640" /></a></div><div><br /></div><div>The following Software is available:</div><div><br /></div><div><ul><li>Oracle Database 12c Release 2 (12.2.0.1.0)</li><li>Oracle Database 12c Release 2 (12.2.0.1.0) Grid Infrastructure</li><li>Oracle Database 12c Release 2 (12.2.0.1.0) Global Service Manager</li><li>Oracle Database Gateways 12c Release 2 (12.2.0.1.0)&nbsp;</li><li>Oracle Database 12c Release 2 (12.2.0.1.0) Examples</li><li>Oracle Database 12c Release 2 Client (12.2.0.1.0)</li></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-3o9LTP5gSpI/WLcM8MlKDZI/AAAAAAAAAl8/-4E6AFXuulsGs1obxmlH4_OO3KOPnOa5ACLcB/s1600/download_db122_components.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://3.bp.blogspot.com/-3o9LTP5gSpI/WLcM8MlKDZI/AAAAAAAAAl8/-4E6AFXuulsGs1obxmlH4_OO3KOPnOa5ACLcB/s640/download_db122_components.png" width="523" /></a></div><div><br /></div></div><div>And on top, to make the day perfect, Oracle released also in the GitHub Repository&nbsp;<a href="https://github.com/oracle/docker-images/tree/master/OracleDatabase" target="_blank">https://github.com/oracle/docker-images/tree/master/OracleDatabase</a> the corresponding Docker Files for Oracle Database 12.2.0.1.0 :-)</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-gghSJhqaUyw/WLcN3gSkMsI/AAAAAAAAAmE/5b850Aw0k00xhEBZIdRApyKm77HdnJ_AgCLcB/s1600/db122_github_docker.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="https://1.bp.blogspot.com/-gghSJhqaUyw/WLcN3gSkMsI/AAAAAAAAAmE/5b850Aw0k00xhEBZIdRApyKm77HdnJ_AgCLcB/s640/db122_github_docker.png" width="640" /></a></div><div><br /></div><div><br /></div><div>Happy download and happy Docker build :-)</div><div><br /></div> Dirk Nachbar tag:blogger.com,1999:blog-4344684978957885806.post-3105848842539185462 Wed Mar 01 2017 13:08:00 GMT-0500 (EST) Are MicroServices the Death of BPM and Case Management? http://kettenisblogs.blogspot.com/2017/03/are-microservices-death-of-bpm-and-case.html <div dir="ltr" style="text-align: left;" trbidi="on"><i>When reading about MicroServices you could get the impression that orchestrated business processes or even case management applications will soon become legacy. I seriously doubt that, considering the challenges you will face with creating a landscape of MicroServices that will be able to support some of the characteristics that gave birth to BPM and Case Management in the first place. Also, Martin Fowler's <a href="https://martinfowler.com/bliki/MicroservicePremium.html">primary guideline</a> concerning MicroServices is "don't even consider MicroServices unless you have a system that's too complex to manage as a monolith". In the following I discuss the issues you might face with Business Process and Case Management in a pure MicroServices architecture. My conclusion being that MicroServices will not be the death of BPMN or Case Management. On the contrary, it probably is going to help delivering on some of their promises we&nbsp;</i><i>so far&nbsp;</i><i>seem not always be able to deliver upon.</i><br /><i><span style="color: #38761d;"><br /></span></i><i><span style="color: #38761d;">Update 23-03-2017: you may also be interested to learn that Netflix (one of the examples you will always find when people point to a successful MicroService implementation) found the need for a <a href="http://techblog.netflix.com/2016/12/netflix-conductor-microservices.html">Netflix Conductor: a microservices orchestrator</a>.</span></i><br /><h3 style="text-align: left;"><span style="color: blue;">Business Processes and Cases Are Not MicroServices</span></h3>Let's face it, BPM is about (stateful) orchestration. MicroServices are supposed to be stateless, and its business capability should not depend on others to complete its work, which makes it like the opposite. In BPMN the order in which activities are executed is prescribed or 'orchestrated' as we say, by 'flows' that go from one point to another. The de facto standard language to express a BPM processes is <a href="https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation">BPMN</a>, which visualizes this explicitly. With each step the state of the complete flow can be persisted. Service calls should be synchronous when successful completion of the process is dependent on the response, and then errors are handled by the process. In contrast the MicroServices '<a href="https://martinfowler.com/articles/microservices.html#DesignForFailure">design for failure</a>' principle makes them more about 'choreography' and as loosely coupled as possible. Rather than making the working of a MicroService dependent on a synchronous call to another service, communication preferably is based on events. By definition there is no such thing as persisting the 'state of a process', and no over-arching process to handle errors.<br /><br />Unlike BPMN, Case Management <i>is</i>&nbsp;about choreography, but - much more than a number of interacting MicroServices - still predictable in that you know up-front which type activities may be involved, and the rules that determine this. Similar to BPMN, with <a href="https://en.wikipedia.org/wiki/CMMN">CMMN</a>&nbsp;you can visualize this to some extent. And similar to BPM also the state of a case is persisted, supporting that you can see what has been done by whom, what the current running activities are, and - based on the model and the rules - you can predict what might happen next. A successful completion of a case depends upon the completion of the individual activities. So in spite of its characteristic of choreography also Case Management contrasts MicroServices in more than one way.<br /><br /><h3 style="text-align: left;"><span style="color: blue;">MicroService Challenges</span></h3>When thinking about the highly flexible, however for the observer often unpredictable flow of events in case of a MicroServices architecture, where the completion of an instance of one MicroService can trigger any number of instances of other MicroServices, you start to realize some of the challenges you will face with business processes that are only supported by MicroServices including - but not limited to - the following.<br /><h4 style="text-align: left;"><span style="color: blue;">Process/Case Introspection</span></h4>As stated before, one thing a business process and case management support is that you can <b>introspect the state of the process or case</b>. Where is it, what has already happened, and what will/might happen next? To achieve the same with MicroServices you will have to realize some central, coordinating MicroService or Aggregator that somehow has to be fed with the state of MicroService executions, can correlate them in some way, and present them in a context that can be understood by the user. For example, in case of a complex order handling business process (that can span hours our days) this implies that it is able to correlate MicroService executions using some common business indicator like an order id. This implies a dependency of this central MicroService on the other ones to publish the states of their execution with a reference to the order id. That introduces some interesting challenges regarding how to define the <a href="https://martinfowler.com/bliki/BoundedContext.html">bounded context</a>&nbsp;of such a central MicroService and how to implement the <a href="http://www.markhneedham.com/blog/2009/07/07/domain-driven-design-anti-corruption-layer/">anti-corruption layer</a>&nbsp;to make the entities of the individual MicroServices non-intrusive to that of the central one.<br /><br />But let's ignore that for now. For this central MicroService to be able to present this state to the user so that he/she understands what happened when, why, by whom or what, and what might happen next, it must have some notion of a 'business process' (or case). It might be my lack of imagination, but I cannot picture how this can work as there is no central coordinator to rule them all. A concrete example from my practice is a Move Natural Person process in a bank. Next to a bank account this person might also have a credit card, a mortgage, and several insurances. Some of these product can be moved by just changing the address, but you cannot do that with a mortgage for example. For a bank moving a person or organization is one of the more complex processes, and whenever a customer calls to inquire what the status is, it is imperative for the bank employee to have this overall view. How to know that all relevant MicroServices have been initiated? Of course, I can picture some solution where all MicroServices have to publish events to some central "hub" and from there support some navigation to dashboards of the individual MicroServices, But I also start to see some sort of a dependency that you would try to avoid in a MicroServices architecture.<br /><h4 style="text-align: left;"><span style="color: blue;">Process/Case Operation</span></h4>Operations will have a similar problem as the business has when they have to <b>operate the process or case</b>. If a process is stuck from a technical perspective, in which MicroService is that? Practically also this type of concern can only be addressed when to some extend there is a sort of common way to log errors, collect those and present them in a consolidated way. Also something that is in conflict with the principle of decentralization, as each MicroService is supposed to be operated independently.<br /><h4 style="text-align: left;"><span style="color: blue;">Process/Case Modeling and Testing</span></h4>And what about <b>modeling and testing a process or case</b>? Capturing how a case may evolve over time in CMMN is already more difficult for the reader to understand than a BPMN process design. But how a process would unfold in a pure MicroServices environment you can only understand if you would model that in some similar way. But in a pure MicroServices architecture that does not seem to make any sense. And if you don't model it you surely will have difficulties testing it.<br /><h4 style="text-align: left;"><span style="color: blue;">Authorization &amp; Authentication</span></h4>Another challenge I would like to point out is <b>authorization and authentication</b>. In BPMN there are swimlanes that correspond to roles that you can assign people to. By using a central repository of these roles you can implement a consistent way of authentication and authorization. In Case Management there are similar concepts (e.g. knowledge workers). How to implement this for a process only consisting of MicroServices when this implies a centralized authentication and authorization model?<br /><br />Granted, MicroServices is relatively new, still in the hype phase, and over time some of these challenges will be addressed. This will result in new patterns, and frameworks and tools to support that. But I seriously doubt this will ever address all the requirements that are naturally addressed by BPM or Case Management. So over time I believe both will survive the MicroServices hype, although I see Case Management gaining ground over BPM.<br /><br /><h3><span style="color: blue;">MicroServices Values for BPM and Case Management</span></h3>However, all this does not mean there is no value in adapting at least some of the principles related to MicroServices to BPM and Case Management applications. I can see how it could address some of the issues I faced with processes that are almost too big to handle, and issues with reuse of services and the impact that had on agility. Since then I much more tend to:<br /><ul style="text-align: left;"><li>Design and implement sub-processes as deployable units of their own.</li><li>Push more of the other logic to a deployable unit of its own than I already did.</li><li>Let data models be less intrusive to integrations (i.e. chose the Anti-Corruption pattern with small Bounded Contexts over the&nbsp;<a href="http://www.markhneedham.com/blog/2009/07/04/domain-driven-design-conformist/">Conformist</a>&nbsp;pattern), and address data mapping challenges in the (anti-corruption layer of the)&nbsp;individual services rather than in some integration layer (<a href="https://martinfowler.com/articles/microservices.html#SmartEndpointsAndDumbPipes">smart endpoints / dumb pipes</a>).</li><li>Apply the&nbsp;<a href="http://martinfowler.com/bliki/TolerantReader.html">Tolerant Reader</a>&nbsp;pattern more that I already did</li><li>Copy and paste code if that prevents unnecessary impact of a change on some shared component.</li></ul>And where useful and possible one can implement the services consumed by the business process or case as MicroServices and make the process and these services more loosely coupled. But that I already did. The mantra of '<a href="https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well">do one thing and do it well</a>' specifically appeals to me. I always try to prevent creating any service (or Java class for that matter) for which I have to use the word "and" to describe what it does.</div> Jan Kettenis tag:blogger.com,1999:blog-33270406.post-3935859225944195951 Wed Mar 01 2017 11:22:00 GMT-0500 (EST) Oracle Database 12cR2 (12.2) On-Prem : It‚Äôs finally here! https://oracle-base.com/blog/2017/03/01/oracle-database-12cr2-12-2-on-prem-its-finally-here/ <p><img class="alignleft wp-image-6737" src="https://oracle-base.com/blog/wp-content/uploads/2017/01/balloons-154949_640.png" width="150" height="133" />Oracle 12cR2 (12.2)¬†has been around for a while on the cloud, but for many people it doesn&#8217;t really exist until they&#8217;ve downloaded it and run it on an &#8220;on-prem&#8221; server or a VM on their PC.</p> <p>If you are of that mind, you will be pleased to know the on-prem release has arrived! You can download it from <a href="https://edelivery.oracle.com">eDelivery</a> or <a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html">OTN</a>.</p> <p><a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html"><img class="alignnone size-full wp-image-6948" src="https://oracle-base.com/blog/wp-content/uploads/2017/03/on-pre-12.2.jpg" alt="" width="428" height="157" /></a></p> <p>I&#8217;ve been writing about it for a while (<a href="/articles/12c/articles-12c#database-12cr2">here</a>), but it&#8217;s nice to have the on-prem release and the knowledge that someone might actually read the stuff I&#8217;m writing now (or in about 5 years when people start to use 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>There will of course be the usual rash of installation articles coming from me for a while, before I get back to more interesting things&#8230;</p> <p>Happy downloading&#8230;</p> <p>Cheers</p> <p>Tim&#8230;</p> <p><strong>Update</strong>: My first installs <a href="/12c/oracle-db-12cr2-installation-on-oracle-linux-6-and-7">here</a>.</p> <hr style="border-top:black solid 1px" /><a href="https://oracle-base.com/blog/2017/03/01/oracle-database-12cr2-12-2-on-prem-its-finally-here/">Oracle Database 12cR2 (12.2) On-Prem : It&#8217;s finally here!</a> was first posted on March 1, 2017 at 5:18 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=6946 Wed Mar 01 2017 11:18:15 GMT-0500 (EST) A Tale of Two Styles of URIs and Parameters w/ORDS http://www.thatjeffsmith.com/archive/2017/03/a-tale-of-two-styles-of-uris-and-parameters-words/ <p>I have a RESTful Service that accepts a bind value to a query that ORDS will run for me.</p> <p>How do I pass that bind to ORDS?</p> <p>You can do it explicitly be defining it as part of the URI.</p> <p>Or, you can use the classic web ?var=value to pass it.</p> <p>ORDS supports both <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 id="attachment_6047" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/ords-uri-bind1.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/ords-uri-bind1.png" alt="" width="1024" height="299" class="size-full wp-image-6047" /></a><p class="wp-caption-text">Both Services run the same SQL</p></div> <p>The only difference is the URI itself.</p> <div id="attachment_6048" style="width: 618px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/ords-uri-bind2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/ords-uri-bind2.png" alt="" width="608" height="637" class="size-full wp-image-6048" /></a><p class="wp-caption-text">So how do I pass the ID on the simpler URI?</p></div> <p>Easy, just include it on the call.</p> <div id="attachment_6049" style="width: 957px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/ords-uri-bind3.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/03/ords-uri-bind3.png" alt="" width="947" height="788" class="size-full wp-image-6049" /></a><p class="wp-caption-text">pass things in as needed/required</p></div> <p>So, which one to use? I imagine it&#8217;s a matter of personal preference. For me the former seems more COLLECTION/RESOURCE-RESTy, and the latter seems more flexible. </p> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6046 Wed Mar 01 2017 10:35:04 GMT-0500 (EST) I don‚Äôt know (yet) https://jonathanlewis.wordpress.com/2017/03/01/i-dont-know/ <p>Here&#8217;s a question that came to mind while reading <a href="https://community.oracle.com/thread/4021481"><em><strong>a recent question</strong></em></a> on the OTN database forum. It&#8217;s a question to which I don&#8217;t know the answer and, at present, I don&#8217;t really want to bother modelling at present &#8211; although if I were on a customer site and this looked like a likely explanation for a performance anomaly it&#8217;s the sort of thing I would create a model for.</p> <p>If I have a query that runs parallel and does a <em><strong>&#8220;hash join buffered&#8221;</strong></em> (see, for example, <a href="https://jonathanlewis.wordpress.com/2014/02/26/parallel-execution-4/"><em><strong>this URL</strong></em></a>), it&#8217;s possible that the processes creating the build table will manage to create the build table in memory without spilling to disc but then find themselves unable to keep the incoming probe table data in memory and spill it to disc before re-reading it to do the join and forward the results to the parent process.</p> <p>Here&#8217;s the plan from the URL above, showing rowsource execution stats:</p> <pre class="brush: plain; title: ; notranslate"> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | Id | Operation | Name | Starts | E-Time | TQ |IN-OUT| PQ Distrib | A-Rows | A-Time | Buffers | Reads | Writes | OMem | 1Mem | O/1/M | Max-Tmp | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 1 | | | | | 70101 |00:00:00.17 | 12 | 0 | 0 | | | | | | 1 | PX COORDINATOR | | 1 | | | | | 70101 |00:00:00.17 | 12 | 0 | 0 | | | | | | 2 | PX SEND QC (RANDOM) | :TQ10002 | 0 | 00:00:01 | Q1,02 | P-&gt;S | QC (RAND) | 0 |00:00:00.01 | 0 | 0 | 0 | | | | | |* 3 | HASH JOIN BUFFERED | | 2 | 00:00:01 | Q1,02 | PCWP | | 70101 |00:00:00.28 | 0 | 310 | 310 | 5952K| 1953K| 2/0/0| 2048 | | 4 | PX RECEIVE | | 2 | 00:00:01 | Q1,02 | PCWP | | 70101 |00:00:00.08 | 0 | 0 | 0 | | | | | | 5 | PX SEND HASH | :TQ10000 | 0 | 00:00:01 | Q1,00 | P-&gt;P | HASH | 0 |00:00:00.01 | 0 | 0 | 0 | | | | | | 6 | PX BLOCK ITERATOR | | 2 | 00:00:01 | Q1,00 | PCWC | | 70101 |00:00:00.05 | 1031 | 1005 | 0 | | | | | |* 7 | TABLE ACCESS FULL| T1 | 26 | 00:00:01 | Q1,00 | PCWP | | 70101 |00:00:00.02 | 1031 | 1005 | 0 | | | | | | 8 | PX RECEIVE | | 2 | 00:00:01 | Q1,02 | PCWP | | 70102 |00:00:00.06 | 0 | 0 | 0 | | | | | | 9 | PX SEND HASH | :TQ10001 | 0 | 00:00:01 | Q1,01 | P-&gt;P | HASH | 0 |00:00:00.01 | 0 | 0 | 0 | | | | | | 10 | PX BLOCK ITERATOR | | 2 | 00:00:01 | Q1,01 | PCWC | | 70102 |00:00:00.04 | 1031 | 1005 | 0 | | | | | |* 11 | TABLE ACCESS FULL| T2 | 26 | 00:00:01 | Q1,01 | PCWP | | 70102 |00:00:00.01 | 1031 | 1005 | 0 | | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ </pre> <p>Note that we have a <em><strong>&#8220;hash join buffered&#8221;</strong></em> at operation 3, which means incoming data from <em><strong>t2</strong></em> (the probe table) was buffered before being joined; but we can see 310 writes and reads to temporary space due to that operation. That&#8217;s actually <em><strong>t2</strong></em> spilling from the buffer to disc and then being read back from disc after the <em><strong>t2</strong></em> scan (at operation 11) completes.</p> <p>If this pattern of activity appears how is it reflected in the statistics?</p> <p>Because the <em><strong>build</strong> </em>table was completely built in memory you could argue for an <em>&#8220;optimal workarea execution&#8221;</em>; but because the <em><strong>probe</strong> </em>table was temporarily spilled to disc you could argue for a <em>&#8220;one-pass workarea operation&#8221;</em>. In this case I was able to say that the writes and reads for operation 3 were the <em><strong>t2</strong></em> table spilling to disc¬† because (a) I understand (mostly) how parallel hash joins work, (b) I had trace files I could check for timing, and (c) the O/1/M column of the output show 2 optimal operations and no one-pass operations.</p> <p>The question to which I don&#8217;t (yet) know the answer is this: is the I/O caused by this spill to disc captured in <em><strong>v$pgastat</strong></em> under the stats:</p> <pre class="brush: plain; title: ; notranslate"> NAME VALUE UNIT -------------------------------------------- ---------- ------------ extra bytes read/written 0 bytes cache hit percentage 100 percent </pre> <p>If so, then you end up with questions like the one on OTN:</p> <p style="padding-left:30px;"><em>How come OEM reports my PGA cache Hit Ratio at 76% when I&#8217;ve got so much more memory than seems necessary ?</em></p> <p>With the follow-up comment:</p> <p style="padding-left:30px;"><em>All my workarea executions were optimal</em></p> <h3>Footnote</h3> <p>Though I haven&#8217;t examined it recently, I remember noting in the past that the buffer allocation for the incoming probe table was typically a small fraction (often 1/8th or 1/16th) of the size of the buffer allocated for the build table. This may help to explain why you could end up doing a lot of I/O without exhausting the available memory.</p> <p>I&#8217;m probably going to resurrect the example from the linked blog note and check the effects before I publish this post.</p> <p>&nbsp;</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16895/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16895/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16895&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16895 Wed Mar 01 2017 07:53:59 GMT-0500 (EST) Oracle Database In-Memory 12c Release 2 New Features http://gavinsoorma.com/2017/03/oracle-database-in-memory-12c-release-2-new-features/ <p>The Oracle Database In-Memory 12c Release 2 New Features¬† webinar conducted last week was well received by a global audience and feedback was positive. For those who missed the session you can download the slide deck from the link below. Feedback and questions are welcomed!</p> <p><a href="http://gavinsoorma.com/wp-content/uploads/2017/02/12.2_InMemory_new_features.pptx" rel="">12.2_InMemory_new_features</a></p> Gavin Soorma http://gavinsoorma.com/?p=7402 Wed Mar 01 2017 07:01:16 GMT-0500 (EST) Cost is Time (again) https://jonathanlewis.wordpress.com/2017/02/28/cost-is-time-again/ <p>The hoary old question about lower cost queries running faster or slower that higher cost queries has appeared <a href="https://community.oracle.com/thread/4020931"><em><strong>once again on the OTN database forum</strong></em></a>. It&#8217;s one I&#8217;ve addressed numerous times in the past &#8211; <a href="https://jonathanlewis.wordpress.com/2011/01/10/cost-again/"><em><strong>including on this blog</strong></em></a> &#8211; but the Internet being what it is the signal keeps getting swamped by the noise. This time around a couple of &#8220;new&#8221; thoughts crossed my mind when reading the question.</p> <p>There is <a href="https://jonathanlewis.wordpress.com/2006/12/11/cost-is-time/"><em><strong>a Time column</strong></em></a> on the standard forms of the execution plan output, and the description of this column is available in the manuals and has been for years (here&#8217;s a definition from v$sql_plan from 10gR2, for example):</p> <p style="padding-left:30px;"><em>Elapsed time (in seconds) of the operation as estimated by the optimizer&#8217;s cost-based approach. For statements that use the rule-based approach, this column is null.</em></p> <p>So the first question is this: why are people looking at the cost when they&#8217;re asking about the time ? The second question arises from the bit in brackets (parentheses): the time is given in seconds &#8211; so how accurate do you think the optimizer&#8217;s estimates of ANYTHING are when the best estimate the optimizer will give you for run-time has a granularity of a second ?</p> <p>Of course there&#8217;s a further observation I could make (which only echoes the first question):¬† I don&#8217;t think I&#8217;ve ever seen anyone come up with the question: <em>&#8220;Will a query with a lower value for Time run faster or slower than a query with a higher value for Time?&#8221;</em></p> <h3>Bottom Line:</h3> <p>Cost is supposed to be a measure of resource usage (per execution of each operation) and should therefore be a measure of time &#8211; but the model fails in many ways so when a plan clearly doesn&#8217;t meet reasonable expectations for performance you can (often) use the Cost column as an indicator of where the model has failed and this may give you some clues of how to address the problem.</p> <p>It is unfortunate that before you can recognise when a particular Cost figure is bad you usually need to know something about the data content, the data distribution¬† pattern, the run-time caching effects, and the way the optimizer does its arithmetic.</p> <p>&nbsp;</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jonathanlewis.wordpress.com/16893/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jonathanlewis.wordpress.com/16893/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=jonathanlewis.wordpress.com&#038;blog=491988&#038;post=16893&#038;subd=jonathanlewis&#038;ref=&#038;feed=1" width="1" height="1" /> Jonathan Lewis http://jonathanlewis.wordpress.com/?p=16893 Tue Feb 28 2017 06:19:38 GMT-0500 (EST) Oracle Service Bus : disable / enable a proxy service via WebLogic Server MBeans with JMX https://technology.amis.nl/2017/02/28/oracle-service-bus-disable-enable-a-proxy-service-via-weblogic-server-mbeans-with-jmx/ <p>At a public sector organization in the Netherlands an OSB proxy service was (via JMS) reading messages from a WebLogic queue. These messages where then send to a back-end system. Every evening during a certain time period the back-end system was down. So therefor and also in case of planned maintenance there was a requirement whereby it was necessary to be able to stop and start sending messages to the back-end system from the queue. Hence, a script was needed to disable/enable the OSB proxy service (deployed on OSB 11.1.1.7).</p> <p>This article will explain how the OSB proxy service can be disabled/enabled via WebLogic Server MBeans with JMX.</p> <p>A managed bean (MBean) is a Java object that represents a Java Management Extensions (JMX) manageable resource in a distributed environment, such as an application, a service, a component, or a device.</p> <p>First an ‚Äúhigh over‚ÄĚ overview of the MBeans is given. For further information see ‚ÄúFusion Middleware Developing Custom Management Utilities With JMX for Oracle WebLogic Server‚ÄĚ, via url: <a href="https://docs.oracle.com/cd/E28280_01/web.1111/e13728/toc.htm" target="_blank">https://docs.oracle.com/cd/E28280_01/web.1111/e13728/toc.htm</a></p> <p>Next the structure and use of the System MBean Browser in the Oracle Enterprise Manager Fusion Middleware Control is discussed.</p> <p>Finally the code to disable/enable the OSB proxy service is shown.</p> <p>To disable/enable an OSB proxy service, also WebLogic Scripting Tool (WLST) can be used, but in this case (also because of my java developer skills) JMX was used. For more information have a look for example at AMIS TECHNOLOGY BLOG: ‚ÄúOracle Service Bus: enable / disable proxy service with WLST‚ÄĚ, via url: <a href="https://technology.amis.nl/2011/01/10/oracle-service-bus-enable-disable-proxy-service-with-wlst/" target="_blank">https://technology.amis.nl/2011/01/10/oracle-service-bus-enable-disable-proxy-service-with-wlst/</a></p> <p>The Java Management Extensions (JMX) technology is a standard part of the Java Platform, Standard Edition (Java SE platform). The JMX technology was added to the platform in the Java 2 Platform, Standard Edition (J2SE) 5.0 release.</p> <p>The JMX technology provides a simple, standard way of managing resources such as applications, devices, and services. Because the JMX technology is dynamic, you can use it to monitor and manage resources as they are created, installed and implemented. You can also use the JMX technology to monitor and manage the Java Virtual Machine (Java VM).</p> <p>For another example of using MBeans with JMX, I kindly point you to another article (written by me) on the AMIS TECHNOLOGY BLOG: ‚ÄúDoing performance measurements of an OSB Proxy Service by programmatically extracting performance metrics via the ServiceDomainMBean and presenting them as an image via a PowerPoint VBA module‚ÄĚ, via url: <a href="https://technology.amis.nl/2016/01/30/performance-measurements-of-an-osb-proxy-service-by-using-the-servicedomainmbean/" target="_blank">https://technology.amis.nl/2016/01/30/performance-measurements-of-an-osb-proxy-service-by-using-the-servicedomainmbean/</a><u></u></p> <p><span id="more-44115"></span></p> <h2><span style="font-weight: bold;">Basic Organization of a WebLogic Server Domain</span></h2> <p>As you probably already know a WebLogic Server administration domain is a collection of one or more servers and the applications and resources that are configured to run on the servers. Each domain must include a special server instance that is designated as the Administration Server. The simplest domain contains a single server instance that acts as both Administration Server and host for applications and resources. This domain configuration is commonly used in development environments. Domains for production environments usually contain multiple server instances (Managed Servers) running independently or in groups called clusters. In such environments, the Administration Server does not host production applications.</p> <h2><span style="font-weight: bold;">Separate MBean Types for Monitoring and Configuring</span></h2> <p>All WebLogic Server MBeans can be organized into one of the following general types based on whether the MBean monitors or configures servers and resources:</p> <ul> <li>Runtime MBeans contain information about the run-time state of a server and its resources. They generally contain only data about the current state of a server or resource, and they do not persist this data. When you shut down a server instance, all run-time statistics and metrics from the run-time MBeans are destroyed.</li> <li>Configuration MBeans contain information about the configuration of servers and resources. They represent the information that is stored in the domain&#8217;s XML configuration documents.</li> <li>Configuration MBeans for system modules contain information about the configuration of services such as JDBC data sources and JMS topics that have been targeted at the system level. Instead of targeting these services at the system level, you can include services as modules within an application. These application-level resources share the life cycle and scope of the parent application. However, WebLogic Server does not provide MBeans for application modules.</li> </ul> <h2><span style="font-weight: bold;">MBean Servers</span></h2> <p>At the core of any JMX agent is the MBean server, which acts as a container for MBeans.</p> <p>The JVM for an Administration Server maintains three MBean servers provided by Oracle and optionally maintains the platform MBean server, which is provided by the JDK itself. The JVM for a Managed Server maintains only one Oracle MBean server and the optional platform MBean server.</p> <p><img src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_1.png?resize=702%2C349&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <table border="1" cellspacing="0" cellpadding="0" style="margin-bottom: 10px"> <tbody> <tr> <td valign="top" width="250"><b>MBean Server</b></td> <td valign="top" width="520"><b>Creates, registers, and provides access to&#8230;</b></td> </tr> <tr> <td valign="top" width="250">Domain Runtime MBean Server</td> <td valign="top" width="520">MBeans for domain-wide services. This MBean server also acts as a single point of access for MBeans that reside on Managed Servers.</p> <p>Only the Administration Server hosts an instance of this MBean server.</td> </tr> <tr> <td valign="top" width="250">Runtime MBean Server</td> <td valign="top" width="520">MBeans that expose monitoring, run-time control, and the active configuration of a specific WebLogic Server instance.</p> <p>In release 11.1.1.7, the WebLogic Server Runtime MBean Server is configured by default to be the platform MBean server.</p> <p>Each server in the domain hosts an instance of this MBean server.</td> </tr> <tr> <td valign="top" width="250">Edit MBean Server</td> <td valign="top" width="520">Pending configuration MBeans and operations that control the configuration of a WebLogic Server domain. It exposes a ConfigurationManagerMBean for locking, saving, and activating changes.</p> <p>Only the Administration Server hosts an instance of this MBean server.</td> </tr> <tr> <td valign="top" width="250">The JVM&#8217;s platform MBean server</td> <td valign="top" width="520">MBeans provided by the JDK that contain monitoring information for the JVM itself. You can register custom MBeans in this MBean server.</p> <p>In release 11.1.1.7, WebLogic Server uses the JVM&#8217;s platform MBean server to contain the WebLogic run-time MBeans by default.</td> </tr> </tbody> </table> <h2><span style="font-weight: bold;">Service MBeans</span></h2> <p>Within each MBean server, WebLogic Server registers a service MBean under a simple object name. The attributes and operations in this MBean serve as your entry point into the WebLogic Server MBean hierarchies and enable JMX clients to navigate to all WebLogic Server MBeans in an MBean server after supplying only a single object name.</p> <table border="1" cellspacing="0" cellpadding="0" width="100%" style="table-layout: fixed; margin-bottom: 10px"> <tbody> <tr> <td valign="top" width="200"><b>MBean Server</b></td> <td valign="top" width="180"><b>Service MBean</b></td> <td valign="top" width="300" style="word-wrap: break-word;"><b>JMX object name</b></td> </tr> <tr> <td valign="top" width="200">The Domain Runtime MBean Server</td> <td valign="top" width="180">DomainRuntimeServiceMBean</p> <p><i>Provides access to MBeans for domain-wide services such as application deployment, JMS servers, and JDBC data sources. It also is a single point for accessing the hierarchies of all run-time MBeans and all active configuration MBeans for all servers in the domain.</i></td> <td valign="top" width="300" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean</a></td> </tr> <tr> <td valign="top" width="200">Runtime MBean Servers</td> <td valign="top" width="180">RuntimeServiceMBean</p> <p><i>Provides access to run-time MBeans and active configuration MBeans for the current server.</i></td> <td valign="top" width="300" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean</a></td> </tr> <tr> <td valign="top" width="200">The Edit MBean Server</td> <td valign="top" width="180">EditServiceMBean</p> <p><i>Provides the entry point for managing the configuration of the current WebLogic Server domain.</i></td> <td valign="top" width="300" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">com.bea:Name=EditService,Type=weblogic.management.mbeanservers.edit.EditServiceMBean</a></td> </tr> </tbody> </table> <h2><span style="font-weight: bold;">Choosing an MBean Server</span></h2> <p>If your client monitors run-time MBeans for multiple servers, or if your client runs in a separate JVM, Oracle recommends that you connect to the Domain Runtime MBean Server on the Administration Server instead of connecting separately to each Runtime MBean Server on each server instance in the domain.</p> <p>The trade off for directing all JMX requests through the Domain Runtime MBean Server is a slight degradation in performance due to network latency and increased memory usage. However, for most network topologies and performance requirements, the simplified code maintenance and enhanced security that the Domain Runtime MBean Server enables is preferable.</p> <p><img src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_2.png?resize=702%2C446&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <h2><span style="font-weight: bold;">System MBean Browser</span></h2> <p>Oracle Enterprise Manager Fusion Middleware Control provides the System MBean Browser for managing MBeans that perform specific monitoring and configuration tasks.</p> <p>Via the Oracle Enterprise Manager Fusion Middleware Control for a certain domain, the System MBean Browser can be opened.</p> <p><img src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_3.png?resize=474%2C501&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <p>Here the previously mentioned types of MBean‚Äôs can be seen: Runtime MBeans and Configuration MBeans:</p> <p><img src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_4.png?resize=205%2C224&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <p>When navigating to ‚ÄúConfiguration MBeans | com.bea‚ÄĚ, the previously mentioned <a style="font-family: Courier New; color: black;">EditServiceMBean</a> can be found:</p> <p><img src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_5.png?resize=702%2C212&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <p>When navigating to ‚ÄúRuntime MBeans | com.bea | Domain: &lt;a domain&gt;‚ÄĚ, the previously mentioned <a style="font-family: Courier New; color: black;">DomainRuntimeServiceMBean</a> can be found:</p> <p><img src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_6.png?resize=702%2C255&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <p>Also the later on in this article mentioned MBeans can be found:</p> <p><img src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_7.png?resize=437%2C132&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <p>For example for the <a style="font-family: Courier New; color: black;">ProxyServiceConfigurationMbean</a>, the available operations can be found:</p> t;p><img src="https://technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_8.png " alt="" width="774" height="403" /></p> <p>When navigating to ‚ÄúRuntime MBeans | com.bea‚ÄĚ, within each Server the previously mentioned <a style="font-family: Courier New; color: black;">RuntimeServiceMBean</a> can be found.</p> <p><img src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_9.png?resize=241%2C226&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <p>&nbsp;</p> <p><img src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_10.png?resize=702%2C248&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <h2><span style="font-weight: bold;">Code to disable/enable the OSB proxy service</span></h2> <p>The requirement to be able to stop and start sending messages to the back-end system from the queue was implemented by disabling/enabling the state of the OSB Proxy service JMSConsumerStuFZKNMessageService_PS.</p> <p>Short before the back-end system goes down, dequeuing of the queue should be disabled.<br /> Right after the back-end system goes up again, dequeuing of the queue should be enabled.</p> <p>The state of the OSB Proxy service can be seen in the Oracle Service Bus Administration 11g Console (for example via the Project Explorer) in the tab ‚ÄúOperational Settings‚ÄĚ of the proxy service.</p> <p><img src="https://i0.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_11.png?resize=702%2C224&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <p>For ease of use, two ms-dos batch files where created, each using MBeans, to change the state of a service (proxy service or business service). As stated before, the WebLogic Server contains a set of MBeans that can be used to configure, monitor and manage WebLogic Server resources.</p> <ul> <li>Disable_JMSConsumerStuFZKNMessageService_PS.bat</li> </ul> <p style="padding-left: 35px;">On the server where the back-end system resides, the ms-dos batch file ‚ÄúDisable_JMSConsumerStuFZKNMessageService_PS.bat‚ÄĚ is called.</p> <p style="padding-left: 35px;">The content of the batch file is:</p> <p style="padding-left: 35px;"><a style="font-family: Courier New; color: black;">java.exe -classpath &#8220;OSBServiceState.jar;com.bea.common.configfwk_1.7.0.0.jar;sb-kernel-api.jar;sb-kernel-impl.jar;wlfullclient.jar&#8221; nl.xyz.osbservice.osbservicestate.OSBServiceState &#8220;xyz&#8221; &#8220;7001&#8221; &#8220;weblogic&#8221; &#8220;xyz&#8221; &#8220;ProxyService&#8221; &#8220;JMSConsumerStuFZKNMessageService-1.0/proxy/JMSConsumerStuFZKNMessageService_PS&#8221; </a><a style="font-family: Courier New; color: red;"><b>&#8220;Disable&#8221;</b></a></p> <ul> <li>Enable_JMSConsumerStuFZKNMessageService_PS.bat</li> </ul> <p style="padding-left: 35px;">On the server where the back-end system resides, the ms-dos batch file ‚ÄúEnable_JMSConsumerStuFZKNMessageService_PS.bat‚ÄĚ is called.</p> <p style="padding-left: 35px;">The content of the batch file is:</p> <p style="padding-left: 35px;"><a style="font-family: Courier New; color: black;">java.exe -classpath &#8220;OSBServiceState.jar;com.bea.common.configfwk_1.7.0.0.jar;sb-kernel-api.jar;sb-kernel-impl.jar;wlfullclient.jar&#8221; nl.xyz.osbservice.osbservicestate.OSBServiceState &#8220;xyz&#8221; &#8220;7001&#8221; &#8220;weblogic&#8221; &#8220;xyz&#8221; &#8220;ProxyService&#8221; &#8220;JMSConsumerStuFZKNMessageService-1.0/proxy/JMSConsumerStuFZKNMessageService_PS&#8221; </a><a style="font-family: Courier New; color: red;"><b>&#8220;Enable&#8221;</b></a></p> <p>In both ms-dos batch files via java.exe a class named OSBServiceState is being called. The main method of this class expects the following parameters:</p> <table border="1" cellspacing="0" cellpadding="0" style="margin-bottom: 10px"> <tbody> <tr> <td valign="top" width="256"><b>Parameter name</b></td> <td valign="top" width="256"><b>Description</b></td> </tr> <tr> <td valign="top" width="256">HOSTNAME</td> <td valign="top" width="256">Host name of the AdminServer</td> </tr> <tr> <td valign="top" width="256">PORT</td> <td valign="top" width="256">Port of the AdminServer</td> </tr> <tr> <td valign="top" width="256">USERNAME</td> <td valign="top" width="256">Username</td> </tr> <tr> <td valign="top" width="256">PASSWORD</td> <td valign="top" width="256">Passsword</td> </tr> <tr> <td valign="top" width="256">SERVICETYPE</td> <td valign="top" width="256">Type of resource. Possible values are:</p> <ul> <li>ProxyService</li> <li>BusinessService</li> </ul> </td> </tr> <tr> <td valign="top" width="256">SERVICEURI</td> <td valign="top" width="256">Identifier of the resource. The name begins with the project name, followed by folder names and ending with the resource name.</td> </tr> <tr> <td valign="top" width="256">ACTION</td> <td valign="top" width="256">The action to be carried out. Possible values are:</p> <ul> <li>Enable</li> <li>Disable</li> </ul> </td> </tr> </tbody> </table> <p>Every change is carried out in it¬īs own session (via the <a style="font-family: Courier New; color: black;">SessionManagementMBean</a>), which is automatically activated with description: <a style="font-family: Courier New; color: black;">OSBServiceState_script_&lt;systemdatetime&gt;</a></p> <p>This can be seen via the Change Center | View Changes of the Oracle Service Bus Administration 11g Console:</p> <p><img src="https://i1.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_12.png?resize=498%2C182&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <p>The response from ‚ÄúDisable_JMSConsumerStuFZKNMessageService_PS.bat‚ÄĚ is:</p> <p><a style="font-family: Courier New; color: black;">Disabling service JMSConsumerStuFZKNMessageService-1.0/proxy/JMSConsumerStuFZKNMessageService_PS has been succesfully completed</a></p> <p>In the Oracle Service Bus Administration 11g Console this change can be found as a Task:</p> <p><img src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_13.png?resize=702%2C75&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <p>The result of changing the state of the OSB Proxy service can be checked in the Oracle Service Bus Administration 11g Console.</p> <p><img src="https://i2.wp.com/technology.amis.nl/wp-content/uploads/2017/12/lameriks_201702_14.png?resize=702%2C223&#038;ssl=1" alt="" data-recalc-dims="1" /></p> <p>The same applies when using ‚ÄúEnable_JMSConsumerStuFZKNMessageService_PS.bat‚ÄĚ.</p> <p>In the sample code below the use of the following MBeans can be seen:</p> <ul> <li><a style="font-family: Courier New; color: black;">DomainRuntimeServiceMBean</a> (weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean.class part of <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/wlserver_10.3/server/lib/<a style="font-family: Courier New; color: blue;">wlfullclient.jar</a></a>)</li> </ul> <p style="padding-left: 35px;"><i>Provides a common access point for navigating to all runtime and configuration MBeans in the domain as well as to MBeans that provide domain-wide services (such as controlling and monitoring the life cycles of servers and message-driven EJBs and coordinating the migration of migratable services). </i><sub>[<a href="https://docs.oracle.com/middleware/1213/wls/WLAPI/weblogic/management/mbeanservers/domainruntime/DomainRuntimeServiceMBean.html" target="_blank">https://docs.oracle.com/middleware/1213/wls/WLAPI/weblogic/management/mbeanservers/domainruntime/DomainRuntimeServiceMBean.html</a>]</sub></p> <p style="padding-left: 35px;">This library is not by default provided in a WebLogic install and must be build. The simple way of how to do this is described in<br /> &#8220;Fusion Middleware Programming Stand-alone Clients for Oracle WebLogic Server, Using the WebLogic JarBuilder Tool&#8221;, which can be reached via url: <a href="https://docs.oracle.com/cd/E28280_01/web.1111/e13717/jarbuilder.htm#SACLT240" target="_blank">https://docs.oracle.com/cd/E28280_01/web.1111/e13717/jarbuilder.htm#SACLT240</a>.</p> <ul> <li><a style="font-family: Courier New; color: black;">SessionManagementMBean</a> (com.bea.wli.sb.management.configuration.SessionManagementMBean.class part of <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/Oracle_OSB1/lib/<a style="font-family: Courier New; color: blue;">sb-kernel-api.jar</a></a>)</li> </ul> <p style="padding-left: 35px;"><i>Provides API to create, activate or discard sessions. </i><sub>[<a href="http://docs.oracle.com/cd/E13171_01/alsb/docs26/javadoc/com/bea/wli/sb/management/configuration/SessionManagementMBean.html" target="_blank">http://docs.oracle.com/cd/E13171_01/alsb/docs26/javadoc/com/bea/wli/sb/management/configuration/SessionManagementMBean.html</a>]</sub></p> <ul> <li><a style="font-family: Courier New; color: black;">ProxyServiceConfigurationMBean</a> (com.bea.wli.sb.management.configuration.ProxyServiceConfigurationMBean.class part of <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/Oracle_OSB1/lib/<a style="font-family: Courier New; color: blue;">sb-kernel-api.jar</a></a>)</li> </ul> <p style="padding-left: 35px;"><i>Provides API to enable/disable services and enable/disable monitoring for a proxy service. </i><sub>[<a href="https://docs.oracle.com/cd/E13171_01/alsb/docs26/javadoc/com/bea/wli/sb/management/configuration/ProxyServiceConfigurationMBean.html" target="_blank">https://docs.oracle.com/cd/E13171_01/alsb/docs26/javadoc/com/bea/wli/sb/management/configuration/ProxyServiceConfigurationMBean.html</a>]</sub></p> <ul> <li><a style="font-family: Courier New; color: black;">BusinessServiceConfigurationMBean</a> (com.bea.wli.sb.management.configuration.BusinessServiceConfigurationMBean.class part of <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/Oracle_OSB1/lib/<a style="font-family: Courier New; color: blue;">sb-kernel-api.jar</a></a>)</li> </ul> <p style="padding-left: 35px;"><i>Provides API for managing business services. </i><sub>[<a href="https://docs.oracle.com/cd/E13171_01/alsb/docs25/javadoc/com/bea/wli/sb/management/configuration/BusinessServiceConfigurationMBean.html" target="_blank">https://docs.oracle.com/cd/E13171_01/alsb/docs25/javadoc/com/bea/wli/sb/management/configuration/BusinessServiceConfigurationMBean.html</a>]</sub></p> <p>Once the connection to the DomainRuntimeServiceMBean is made, other MBeans can be found via the <a style="font-family: Courier New; color: black;">findService</a> method.</p> <pre class="brush: xml; title: ; notranslate"> Service findService(String name, String type, String location) </pre> <p>This method returns the Service on the specified Server or in the primary MBeanServer if the location is not specified.</p> <p>In the code example below certain java fields are used. For reading purposes the field values are shown in the following table:</p> <table border="1" cellspacing="0" cellpadding="0" width="100%" style="table-layout: fixed; margin-bottom: 10px"> <tbody> <tr> <td valign="top" width="330"><b>Field</b></td> <td valign="top" width="350" style="word-wrap: break-word;"><b>Field value</b></td> </tr> <tr> <td valign="top" width="330">DomainRuntimeServiceMBean.MBEANSERVER_JNDI_NAME</td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">weblogic.management.mbeanservers.domainruntime</a></td> </tr> <tr> <td valign="top" width="330">DomainRuntimeServiceMBean.OBJECT_NAME</td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean</a></td> </tr> <tr> <td valign="top" width="330">SessionManagementMBean.NAME</td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">SessionManagement</a></td> </tr> <tr> <td valign="top" width="330">SessionManagementMBean.TYPE</td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">com.bea.wli.sb.management.configuration.SessionManagementMBean</a></td> </tr> <tr> <td valign="top" width="330">ProxyServiceConfigurationMBean.NAME</td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">ProxyServiceConfiguration</a></td> </tr> <tr> <td valign="top" width="330">ProxyServiceConfigurationMBean.TYPE</td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">com.bea.wli.sb.management.configuration.ProxyServiceConfigurationMBean</a></td> </tr> <tr> <td valign="top" width="330">BusinessServiceConfigurationMBean.NAME</td> <td valign="top" width="473" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">BusinessServiceConfiguration</a></td> </tr> <tr> <td valign="top" width="330">BusinessServiceConfigurationMBean.TYPE</td> <td valign="top" width="350" style="word-wrap: break-word;"><a style="font-family: Courier New; color: black;">com.bea.wli.sb.management.configuration.BusinessServiceConfigurationMBean</a></td> </tr> </tbody> </table> <p>Because of the use of <a style="font-family: Courier New; color: black;">com.bea.wli.config.Ref.class</a> , the following library <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/Oracle_OSB1/modules/<a style="font-family: Courier New; color: blue;">com.bea.common.configfwk_1.7.0.0.jar</a></a> was needed.</p> <p>Because of the use of <a style="font-family: Courier New; color: black;">weblogic.management.jmx.MBeanServerInvocationHandler.class</a> , the following library <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/wlserver_10.3/server/lib/<a style="font-family: Courier New; color: blue;">wlfullclient.jar</a></a> was needed.</p> <p>When running the code the following error was thrown:</p> <pre class="brush: xml; title: ; notranslate"> java.lang.RuntimeException: java.lang.ClassNotFoundException: com.bea.wli.sb.management.configuration.DelegatedSessionManagementMBean at weblogic.management.jmx.MBeanServerInvocationHandler.newProxyInstance(MBeanServerInvocationHandler.java:621) at weblogic.management.jmx.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:418) at $Proxy0.findService(Unknown Source) at nl.xyz.osbservice.osbservicestate.OSBServiceState.&lt;init&gt;(OSBServiceState.java:66) at nl.xyz.osbservice.osbservicestate.OSBServiceState.main(OSBServiceState.java:217) Caused by: java.lang.ClassNotFoundException: com.bea.wli.sb.management.configuration.DelegatedSessionManagementMBean at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at weblogic.management.jmx.MBeanServerInvocationHandler.newProxyInstance(MBeanServerInvocationHandler.java:619) ... 4 more Process exited. </pre> <p>So because of the use of <a style="font-family: Courier New; color: black;">com.bea.wli.sb.management.configuration.DelegatedSessionManagementMBean.class</a> the following library <a style="font-family: Courier New; color: black;">&lt;Middleware Home Directory&gt;/Oracle_OSB1/lib/<a style="font-family: Courier New; color: blue;">sb-kernel-impl.jar</a></a> was also needed.</p> <p>The java code:</p> <pre class="brush: xml; title: ; notranslate"> package nl.xyz.osbservice.osbservicestate; import com.bea.wli.config.Ref; import com.bea.wli.sb.management.configuration.BusinessServiceConfigurationMBean; import com.bea.wli.sb.management.configuration.ProxyServiceConfigurationMBean; import com.bea.wli.sb.management.configuration.SessionManagementMBean; import java.io.IOException; import java.net.MalformedURLException; import java.util.HashMap; import java.util.Hashtable; import java.util.Properties; import javax.management.MBeanServerConnection; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; import javax.naming.Context; import weblogic.management.jmx.MBeanServerInvocationHandler; import weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean; public class OSBServiceState { private static MBeanServerConnection connection; private static JMXConnector connector; public OSBServiceState(HashMap props) { super(); SessionManagementMBean sessionManagementMBean = null; String sessionName = &quot;OSBServiceState_script_&quot; + System.currentTimeMillis(); String servicetype; String serviceURI; String action; String description = &quot;&quot;; try { Properties properties = new Properties(); properties.putAll(props); initConnection(properties.getProperty(&quot;HOSTNAME&quot;), properties.getProperty(&quot;PORT&quot;), properties.getProperty(&quot;USERNAME&quot;), properties.getProperty(&quot;PASSWORD&quot;)); servicetype = properties.getProperty(&quot;SERVICETYPE&quot;); serviceURI = properties.getProperty(&quot;SERVICEURI&quot;); action = properties.getProperty(&quot;ACTION&quot;); DomainRuntimeServiceMBean domainRuntimeServiceMBean = (DomainRuntimeServiceMBean)findDomainRuntimeServiceMBean(connection); // Create a session via SessionManagementMBean. sessionManagementMBean = (SessionManagementMBean)domainRuntimeServiceMBean.findService(SessionManagementMBean.NAME, SessionManagementMBean.TYPE, null); sessionManagementMBean.createSession(sessionName); if (servicetype.equalsIgnoreCase(&quot;ProxyService&quot;)) { // A Ref uniquely represents a resource, project or folder that is managed by the Configuration Framework. // A Ref object has two components: A typeId that indicates whether it is a project, folder, or a resource, and an array of names of non-zero length. // For a resource the array of names start with the project name, followed by folder names, and end with the resource name. // For a project, the Ref object simply contains one name component, that is, the project name. // A Ref object for a folder contains the project name followed by the names of the folders which it is nested under. Ref ref = constructRef(&quot;ProxyService&quot;, serviceURI); ProxyServiceConfigurationMBean proxyServiceConfigurationMBean = (ProxyServiceConfigurationMBean)domainRuntimeServiceMBean.findService(ProxyServiceConfigurationMBean.NAME + &quot;.&quot; + sessionName, ProxyServiceConfigurationMBean.TYPE, null); if (action.equalsIgnoreCase(&quot;Enable&quot;)) { proxyServiceConfigurationMBean.enableService(ref); description = &quot;Enabled the service: &quot; + serviceURI; System.out.print(&quot;Enabling service &quot; + serviceURI); } else if (action.equalsIgnoreCase(&quot;Disable&quot;)) { proxyServiceConfigurationMBean.disableService(ref); description = &quot;Disabled the service: &quot; + serviceURI; System.out.print(&quot;Disabling service &quot; + serviceURI); } else { System.out.println(&quot;Unsupported value for ACTION&quot;); } } else if (servicetype.equals(&quot;BusinessService&quot;)) { Ref ref = constructRef(&quot;BusinessService&quot;, serviceURI); BusinessServiceConfigurationMBean businessServiceConfigurationMBean = (BusinessServiceConfigurationMBean)domainRuntimeServiceMBean.findService(BusinessServiceConfigurationMBean.NAME + &quot;.&quot; + sessionName, BusinessServiceConfigurationMBean.TYPE, null); if (action.equalsIgnoreCase(&quot;Enable&quot;)) { businessServiceConfigurationMBean.enableService(ref); description = &quot;Enabled the service: &quot; + serviceURI; System.out.print(&quot;Enabling service &quot; + serviceURI); } else if (action.equalsIgnoreCase(&quot;Disable&quot;)) { businessServiceConfigurationMBean.disableService(ref); description = &quot;Disabled the service: &quot; + serviceURI; System.out.print(&quot;Disabling service &quot; + serviceURI); } else { System.out.println(&quot;Unsupported value for ACTION&quot;); } } sessionManagementMBean.activateSession(sessionName, description); System.out.println(&quot; has been succesfully completed&quot;); } catch (Exception ex) { if (sessionManagementMBean != null) { try { sessionManagementMBean.discardSession(sessionName); System.out.println(&quot; resulted in an error.&quot;); } catch (Exception e) { System.out.println(&quot;Unable to discard session: &quot; + sessionName); } } ex.printStackTrace(); } finally { if (connector != null) try { connector.close(); } catch (Exception e) { e.printStackTrace(); } } } /* * Initialize connection to the Domain Runtime MBean Server. */ public static void initConnection(String hostname, String portString, String username, String password) throws IOException, MalformedURLException { String protocol = &quot;t3&quot;; Integer portInteger = Integer.valueOf(portString); int port = portInteger.intValue(); String jndiroot = &quot;/jndi/&quot;; String mbeanserver = DomainRuntimeServiceMBean.MBEANSERVER_JNDI_NAME; JMXServiceURL serviceURL = new JMXServiceURL(protocol, hostname, port, jndiroot + mbeanserver); Hashtable hashtable = new Hashtable(); hashtable.put(Context.SECURITY_PRINCIPAL, username); hashtable.put(Context.SECURITY_CREDENTIALS, password); hashtable.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, &quot;weblogic.management.remote&quot;); hashtable.put(&quot;jmx.remote.x.request.waiting.timeout&quot;, new Long(10000)); connector = JMXConnectorFactory.connect(serviceURL, hashtable); connection = connector.getMBeanServerConnection(); } private static Ref constructRef(String refType, String serviceURI) { Ref ref = null; String[] uriData = serviceURI.split(&quot;/&quot;); ref = new Ref(refType, uriData); return ref; } /** * Finds the specified MBean object * * @param connection - A connection to the MBeanServer. * @return Object - The MBean or null if the MBean was not found. */ public Object findDomainRuntimeServiceMBean(MBeanServerConnection connection) { try { ObjectName objectName = new ObjectName(DomainRuntimeServiceMBean.OBJECT_NAME); return (DomainRuntimeServiceMBean)MBeanServerInvocationHandler.newProxyInstance(connection, objectName); } catch (MalformedObjectNameException e) { e.printStackTrace(); return null; } } public static void main(String[] args) { try { if (args.length &lt;= 0) { System.out.println(&quot;Provide values for the following parameters: HOSTNAME, PORT, USERNAME, PASSWORD, SERVICETYPE, SERVICEURI, ACTION.); } else { HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;(); map.put(&quot;HOSTNAME&quot;, args[0]); map.put(&quot;PORT&quot;, args[1]); map.put(&quot;USERNAME&quot;, args[2]); map.put(&quot;PASSWORD&quot;, args[3]); map.put(&quot;SERVICETYPE&quot;, args[4]); map.put(&quot;SERVICEURI&quot;, args[5]); map.put(&quot;ACTION&quot;, args[6]); OSBServiceState osbServiceState = new OSBServiceState(map); } } catch (Exception e) { e.printStackTrace(); } } } </pre> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/02/28/oracle-service-bus-disable-enable-a-proxy-service-via-weblogic-server-mbeans-with-jmx/">Oracle Service Bus : disable / enable a proxy service via WebLogic Server MBeans with JMX</a> appeared first on <a rel="nofollow" href="https://technology.amis.nl">AMIS Oracle and Java Blog</a>.</p> Marc Lameriks https://technology.amis.nl/?p=44115 Tue Feb 28 2017 05:22:00 GMT-0500 (EST) Quick Tip: Global Where Clause for Database Exports http://www.thatjeffsmith.com/archive/2017/02/quick-tip-global-where-clause-for-database-exports/ <p>Want to export a ton of tables, but only get SOME of the records?</p> <p>Want to apply a GLOBAL filter across the tables to only get the records you want? </p> <p>Tools > <a href="http://www.thatjeffsmith.com/archive/2016/01/exporting-multiple-tables-to-multiple-excel-spreadsheets/" target="_blank">Database Export</a>.</p> <p>I&#8217;m going to export data, NOT DDL.</p> <p>I&#8217;m going to write it to a single JSON file.</p> <p>I&#8217;m going to grab data from a couple of tables.</p> <p>I ONLY want records from those tables where the CUSTOMER ID is in a specific range.</p> <div id="attachment_6042" style="width: 751px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/02/global_filter2.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/02/global_filter2.png" alt="export tables dialog in sql developer with filters" width="741" height="623" class="size-full wp-image-6042" /></a><p class="wp-caption-text">My tables, and filters.</p></div> <p>Note the bottom box &#8211; that&#8217;s a WHERE clause predicate I can have added to EVERY SELECT * from query we use to get the data to export the tables.</p> <p>I can also see what this data will look like to see if my filters are correct. </p> <div id="attachment_6044" style="width: 1034px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/02/global_filter.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/02/global_filter.png" alt="sql developer oracle data export table filtering" width="1024" height="504" class="size-full wp-image-6044" /></a><p class="wp-caption-text">Here I can see the global filter applied, and add a table specific filter too.</p></div> <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">EXISTS</span> <span class="br0">&#40;</span><span class="kw1">SELECT</span> id <span class="kw1">FROM</span> IDS <span class="kw1">WHERE</span> cust_id <span class="sy0">=</span> id<span class="br0">&#41;</span></pre></div></div></div></div></div></div></div> <p>Note you can do row-counts and sorts to make sure the data is JUST right before you export it.</p> <p>Export, and then you get your data.</p> <div id="attachment_6045" style="width: 939px" class="wp-caption aligncenter"><a href="http://www.thatjeffsmith.com/wp-content/uploads/2017/02/global_filter3.png"><img src="http://www.thatjeffsmith.com/wp-content/uploads/2017/02/global_filter3.png" alt="json data dump" width="929" height="718" class="size-full wp-image-6045" /></a><p class="wp-caption-text">Lots of tables, only the records I want from a single filter.</p></div> <!-- Easy AdSense Unfiltered [count: 3 is not less than 3] --> thatjeffsmith http://www.thatjeffsmith.com/?p=6041 Fri Feb 24 2017 15:25:11 GMT-0500 (EST) Dump Oracle data into a delimited ascii file with PL/SQL https://technology.amis.nl/2017/02/24/dump-oracle-data-delimited-ascii-file-plsql/ <p><strong>This is how I dump data from an Oracle Database (tested on 8i,9i,10g,11g,12c) to a delimited ascii file:</strong></p> <pre class="brush: plain; title: ; notranslate"> SQL*Plus: Release 12.1.0.2.0 Production on Fri Feb 24 13:55:47 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production SQL&gt; set timing on SQL&gt; select Dump_Delimited('select * from all_objects', 'all_objects.csv') nr_rows from dual; NR_ROWS ---------- 97116 Elapsed: 00:00:11.87 SQL&gt; ! cat /u01/etl/report/all_objects_readme.txt ********************************************************************* Record Layout of file /u01/etl/report/all_objects.csv ********************************************************************* Column Sequence MaxLength Datatype ------------------------------ -------- --------- ---------- OWNER 1 128 VARCHAR2 OBJECT_NAME 2 128 VARCHAR2 SUBOBJECT_NAME 3 128 VARCHAR2 OBJECT_ID 4 24 NUMBER DATA_OBJECT_ID 5 24 NUMBER OBJECT_TYPE 6 23 VARCHAR2 CREATED 7 20 DATE LAST_DDL_TIME 8 20 DATE TIMESTAMP 9 19 VARCHAR2 STATUS 10 7 VARCHAR2 TEMPORARY 11 1 VARCHAR2 GENERATED 12 1 VARCHAR2 SECONDARY 13 1 VARCHAR2 NAMESPACE 14 24 NUMBER EDITION_NAME 15 128 VARCHAR2 SHARING 16 13 VARCHAR2 EDITIONABLE 17 1 VARCHAR2 ORACLE_MAINTAINED 18 1 VARCHAR2 ---------------------------------- Generated: 24-02-2017 13:56:50 Generated by: ETL Columns Count: 18 Records Count: 97116 Delimiter: ][ Row Delimiter: ] ---------------------------------- SQL&gt; </pre> <p>Next to the query and the generated filename the Dump_Delimited function takes another 6 parameters, each one with a default value. Check out the PL/SQL, and BTW&#8230; <em>the basics for this code comes from <a href="http://tkyte.blogspot.nl/2009/10/httpasktomoraclecomtkyteflat.html">Tom Kyte</a>.</em></p> <pre class="brush: plain; title: ; notranslate"> SET DEFINE OFF; CREATE OR REPLACE DIRECTORY ETL_UNLOAD_DIR AS '/u01/etl/report'; GRANT READ, WRITE ON DIRECTORY ETL_UNLOAD_DIR TO ETL; CREATE OR REPLACE FUNCTION Dump_Delimited ( P_query IN VARCHAR2 , P_filename IN VARCHAR2 , P_column_delimiter IN VARCHAR2 := '][' , P_row_delimiter IN VARCHAR2 := ']' , P_comment IN VARCHAR2 := NULL , P_write_rec_layout IN PLS_INTEGER := 1 , P_dir IN VARCHAR2 := 'ETL_UNLOAD_DIR' , P_nr_is_pos_integer IN PLS_INTEGER := 0 ) RETURN PLS_INTEGER IS filehandle UTL_FILE.FILE_TYPE; filehandle_rc UTL_FILE.FILE_TYPE; v_user_name VARCHAR2(100); v_file_name_full VARCHAR2(200); v_dir VARCHAR2(200); v_total_length PLS_INTEGER := 0; v_startpos PLS_INTEGER := 0; v_datatype VARCHAR2(30); v_delimiter VARCHAR2(10):= P_column_delimiter; v_rowdelimiter VARCHAR2(10):= P_row_delimiter; v_cursorid PLS_INTEGER := DBMS_SQL.OPEN_CURSOR; v_columnvalue VARCHAR2(4000); v_ignore PLS_INTEGER; v_colcount PLS_INTEGER := 0; v_newline VARCHAR2(32676); v_desc_cols_table DBMS_SQL.DESC_TAB; v_dateformat NLS_SESSION_PARAMETERS.VALUE%TYPE; v_stat VARCHAR2(1000); counter PLS_INTEGER := 0; BEGIN SELECT directory_path INTO v_dir FROM DBA_DIRECTORIES WHERE directory_name = P_dir; v_file_name_full := v_dir||'/'||P_filename; SELECT VALUE INTO v_dateformat FROM NLS_SESSION_PARAMETERS WHERE parameter = 'NLS_DATE_FORMAT'; /* Use a date format that includes the time. */ v_stat := 'alter session set nls_date_format=''dd-mm-yyyy hh24:mi:ss'' '; EXECUTE IMMEDIATE v_stat; filehandle := UTL_FILE.FOPEN( P_dir, P_filename, 'w', 32000 ); /* Parse the input query so we can describe it. */ DBMS_SQL.PARSE( v_cursorid, P_query, dbms_sql.native ); /* Now, describe the outputs of the query. */ DBMS_SQL.DESCRIBE_COLUMNS( v_cursorid, v_colcount, v_desc_cols_table ); /* For each column, we need to define it, to tell the database * what we will fetch into. In this case, all data is going * to be fetched into a single varchar2(4000) variable. * * We will also adjust the max width of each column. */ IF P_write_rec_layout = 1 THEN filehandle_rc := UTL_FILE.FOPEN(P_dir, SUBSTR(P_filename,1, INSTR(P_filename,'.',-1)-1)||'_readme.txt', 'w'); --Start Header v_newline := CHR(10)||CHR(10)||' ********************************************************************* '; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' Record Layout of file '||v_file_name_full; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' ********************************************************************* '||CHR(10)||CHR(10); UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' Column Sequence MaxLength Datatype '; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' ------------------------------ -------- --------- ---------- '||CHR(10); UTL_FILE.PUT_LINE(filehandle_rc, v_newline); --End Header --Start Body FOR i IN 1 .. v_colcount LOOP DBMS_SQL.DEFINE_COLUMN( v_cursorid, i, v_columnvalue, 4000 ); SELECT DECODE( v_desc_cols_table(i).col_type, 2, DECODE(v_desc_cols_table(i).col_precision,0,v_desc_cols_table(i).col_max_len,v_desc_cols_table(i).col_precision)+DECODE(P_nr_is_pos_integer,1,0,2) , 12, 20, v_desc_cols_table(i).col_max_len ) INTO v_desc_cols_table(i).col_max_len FROM dual; SELECT DECODE( TO_CHAR(v_desc_cols_table(i).col_type), '1' , 'VARCHAR2' , '2' , 'NUMBER' , '8' , 'LONG' , '11' , 'ROWID' , '12' , 'DATE' , '96' , 'CHAR' , '108', 'USER_DEFINED_TYPE', TO_CHAR(v_desc_cols_table(i).col_type) ) INTO v_datatype FROM DUAL; v_newline := RPAD(' '||v_desc_cols_table(i).col_name,34)||RPAD(i,10)||RPAD(v_desc_cols_table(i).col_max_len,11)||RPAD(v_datatype,25); UTL_FILE.PUT_LINE(filehandle_rc, v_newline); END LOOP; --End Body ELSE FOR i IN 1 .. v_colcount LOOP DBMS_SQL.DEFINE_COLUMN( v_cursorid, i, v_columnvalue, 4000 ); SELECT DECODE( v_desc_cols_table(i).col_type, 2, DECODE(v_desc_cols_table(i).col_precision,0,v_desc_cols_table(i).col_max_len,v_desc_cols_table(i).col_precision)+DECODE(P_nr_is_pos_integer,1,0,2) , 12, 20, v_desc_cols_table(i).col_max_len ) INTO v_desc_cols_table(i).col_max_len FROM dual; END LOOP; END IF; v_ignore := DBMS_SQL.EXECUTE(v_cursorid); WHILE ( DBMS_SQL.FETCH_ROWS(v_cursorid) &gt; 0 ) LOOP /* Build up a big output line. This is more efficient than * calling UTL_FILE.PUT inside the loop. */ v_newline := NULL; FOR i IN 1 .. v_colcount LOOP DBMS_SQL.COLUMN_VALUE( v_cursorid, i, v_columnvalue ); if i = 1 then v_newline := v_newline||v_columnvalue; else v_newline := v_newline||v_delimiter||v_columnvalue; end if; END LOOP; /* Now print out that line and increment a counter. */ UTL_FILE.PUT_LINE( filehandle, v_newline||v_rowdelimiter ); counter := counter+1; END LOOP; IF P_write_rec_layout = 1 THEN --Start Footer v_newline := CHR(10)||CHR(10)||' ---------------------------------- '; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' Generated: '||SYSDATE; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' Generated by: '||USER; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' Columns Count: '||v_colcount; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' Records Count: '||counter; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' Delimiter: '||v_delimiter; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' Row Delimiter: '||v_rowdelimiter; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); v_newline := ' ---------------------------------- '||CHR(10)||CHR(10); UTL_FILE.PUT_LINE(filehandle_rc, v_newline); --End Footer --Start Commment v_newline := ' '||P_comment; UTL_FILE.PUT_LINE(filehandle_rc, v_newline); --End Commment UTL_FILE.FCLOSE(filehandle_rc); END IF; /* Free up resources. */ DBMS_SQL.CLOSE_CURSOR(v_cursorid); UTL_FILE.FCLOSE( filehandle ); /* Reset the date format ... and return. */ v_stat := 'alter session set nls_date_format=''' || v_dateformat || ''' '; EXECUTE IMMEDIATE v_stat; RETURN counter; EXCEPTION WHEN OTHERS THEN DBMS_SQL.CLOSE_CURSOR( v_cursorid ); EXECUTE IMMEDIATE 'alter session set nls_date_format=''' || v_dateformat || ''' '; RETURN counter; END Dump_Delimited; / SHOW ERRORS; </pre> <p>The post <a rel="nofollow" href="https://technology.amis.nl/2017/02/24/dump-oracle-data-delimited-ascii-file-plsql/">Dump Oracle data into a delimited ascii file with PL/SQL</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=44110 Fri Feb 24 2017 09:30:45 GMT-0500 (EST) Oracle E-Business Suite Mobile and Web Services Security - What You Need To Know https://www.integrigy.com/security-resources/oracle-e-business-suite-mobile-and-web-services-security-what-you-need-know <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>Securing packaged software such as the Oracle E-Business Suite presents different challenges than securing bespoke custom software. Unlike custom software, both the structure of and the security vulnerabilities of the Oracle E-Business Suite are well known and documented, not only to users but also to threat actors.&nbsp; To begin an attack, limited probing and/or reconnaissance is needed because threat actors know exactly what to target and what to expect.&nbsp; This also makes the Oracle E-Business Suite, like other ERP platforms, vulnerable to automated attacks. Threat actors only need to compromise one publically facing URL or web service, which given the size and complexity of the Oracle E-Business Suite, makes securing it a somewhat daunting task.</p> <p>Starting with version 12.1 and continuing with 12.2, the Oracle E-Business Suite delivers a considerable amount of new web services and Mobile functionality as standard core functionality.&nbsp; Much, if not most, of this new Mobile and web services functionality, replicates functionality previously only available through the traditional user interface forms and/or public interfaces and these new web services can be easily deployed on the Internet through a DMZ node.&nbsp; The security implications of 12.2‚Äôs increased web services capabilities is that the Oracle E-Business Suite‚Äôs attack surface has increased and harder to defend.&nbsp;</p> <p>This blog series summarize the new Mobile and web services functionality and review their security features before recommending best practices for using them securely.</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> <p><font color="#cccccc">REFERENCES</font></p> <ul> <li><a data-jsb_prepared="724t9ncw38" href="/security-resources/oracle-e-business-suite-mobile-and-web-services-security-0" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security ‚Äď Integrigy Whitepaper</a></li> <li><a data-jsb_prepared="cq65g4r01y" href="/security-resources/oracle-e-business-suite-mobile-and-web-services-security" rel="noreferrer">Oracle E-Business Suite Mobile and Web Services Security ‚Äď Integrigy Webinar</a></li> <li><a data-jsb_prepared="zwlz6jlbvm" 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> mmiller 544 at https://www.integrigy.com Fri Feb 24 2017 07:00:00 GMT-0500 (EST) Delphix- Cannot Provision from Part of Timeflow http://dbakevlar.com/2017/02/delphix-cannot-provision-part-timeflow/ <div id="tweetbutton6450" class="tw_button" style="float:left;margin-right:10px;"><a href="http://twitter.com/share?url=http%3A%2F%2Fdbakevlar.com%2F2017%2F02%2Fdelphix-cannot-provision-part-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%2F02%2Fdelphix-cannot-provision-part-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>This was received by one of our Delphix AWS Trial customers and he wasn&#8217;t sure how to address it. ¬†If any others experience it, this is the why it occurs and how you can correct it.</p> <p>You&#8217;re logged into your Delphix Administration Console and you note there is a fault displayed in the upper right hand console. ¬†Upon expanding, you see the following warning for the databases from the Linux Target to the Sources they pull updates from:</p> <p>&nbsp;</p> <p><a href="http://dbakevlar.com/2017/02/delphix-cannot-provision-part-timeflow/screen-shot-2017-02-23-at-12-00-18-pm/" rel="attachment wp-att-6451"><img class="alignnone wp-image-6451" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.00.18-PM.png?resize=342%2C310" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.00.18-PM.png?w=644 644w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.00.18-PM.png?resize=300%2C272 300w" sizes="(max-width: 342px) 100vw, 342px" data-recalc-dims="1" /></a></p> <p>Its only a warning and the reason it&#8217;s only a warning is that it doesn&#8217;t stop the user from performing a snapshot and provisioning, but it does impact the timeflow, which could be a consideration if¬†a developer were working and needed to go back in time during this lost time.</p> <p>How do you address the error? ¬†Its one that&#8217;s well documented by Delphix, so simply proceed to the following <a href="https://support.delphix.com/hc/en-us/articles/222072668-KB149-How-to-Resolve-error-Cannot-provision-a-database-from-a-portion-of-a-Timeflow-">link</a>, which will describe the issue, how to investigate and resolve.</p> <p>Straightforward, right? ¬†Not so much in my case. ¬†When the user attempted to ssh into the linux target, he received an IO error:</p> <pre class="p1"><span class="s1">$ ssh delphix@xx.xxx.xxx.x2</span> <span class="s1">$ ssh: connect to host xx.xxx.xxx.x2 port 22: Operation timed out</span></pre> <p class="p1">I asked the user to then log into Amazon EC2 dashboard and click on Instances. ¬†The following displayed:</p> <p class="p1"><a href="http://dbakevlar.com/2017/02/delphix-cannot-provision-part-timeflow/screen-shot-2017-02-23-at-12-26-19-pm/" rel="attachment wp-att-6452"><img class="alignnone size-large wp-image-6452" src="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.26.19-PM.png?resize=600%2C184" alt="" srcset="https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.26.19-PM.png?resize=1024%2C314 1024w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.26.19-PM.png?resize=300%2C92 300w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.26.19-PM.png?resize=768%2C236 768w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.26.19-PM.png?w=1330 1330w, https://i2.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.26.19-PM.png?w=1200 1200w" sizes="(max-width: 600px) 100vw, 600px" data-recalc-dims="1" /></a></p> <p class="p1"><strong>Oh-oh&#8230;.</strong></p> <p class="p1">By highlighting the instance, the following is then displayed at the lower part of the dashboard, displaying that their is an issue with this instance:</p> <p class="p1"><a href="http://dbakevlar.com/2017/02/delphix-cannot-provision-part-timeflow/screen-shot-2017-02-23-at-12-27-33-pm/" rel="attachment wp-att-6453"><img class="alignnone size-large wp-image-6453" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.27.33-PM.png?resize=600%2C79" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.27.33-PM.png?resize=1024%2C134 1024w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.27.33-PM.png?resize=300%2C39 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.27.33-PM.png?resize=768%2C100 768w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-12.27.33-PM.png?w=1200 1200w" sizes="(max-width: 600px) 100vw, 600px" data-recalc-dims="1" /></a></p> <p class="p1">Amazon is quickly on top of this once I refresh the instances and all is running once more. ¬†Once this is corrected and all instances show a green check mark for the status, then I&#8217;m able to SSH into the console with out issue:</p> <pre class="p1"><span class="s1">$ ssh delphix@xx.xxx.xxx.x2</span> <span class="s1">Last login: Tue Feb 21 18:05:28 2017 from landsharkengine.delphix.local</span> <span class="s1">[delphix@linuxtarget ~]$</span></pre> <p class="p1">Does this resolve the issue in the Delphix Admin Console? ¬†Depends&#8230;¬†and the documentation linked states that the problem is commonly due to a problem with network or source system, but in this case, it was the target system that suffered the issue in AWS.</p> <p class="p1">As this is a trial and not a non-production system that is currently being used, we will skip recovering the logs to the target system and proceed with taking a new snapshot. ¬†The document also goes into excellent ways to deter from experiencing this type of outage in the future. ¬†Again, this is just a trial, so we won&#8217;t put these into practice for a trial environment that we can easily drop and recreate in less than an hour.</p> <h3 class="p1">Tips For Real Delphix Environments</h3> <p class="p1">There are a few things to remember when you&#8217;re working with the CLI:</p> <p class="p1">-If you want to inspect any admin information, (such as these logs, as shown in the document) you&#8217;ll need to be logged in as the delphix_admin@DOMAIN@&lt;DE IP Address&gt;.</p> <p class="p1">So if you don&#8217;t see the &#8220;paths&#8221; as you work through the commands, it&#8217;s because you may have logged in as sysadmin instead of the delphix_admin.</p> <p class="p1">-If you&#8217;ve marked the fault as &#8220;Resolved&#8221;, there&#8217;s no way to resolve the timeflow issue, so you&#8217;ll receive the following:</p> <pre class="p1"><span class="s1"><b>ip-10-0-1-10 timeflow oracle log&gt; </b>list timeflow='TimeFlow' missing=true</span> <span class="s1">No such Timeflow ''TimeFlow''.</span></pre> <p class="p1">-If the databases are down, it&#8217;s going to be difficult for Delphix to do anything with the target database. ¬†Consider updating the target to auto restart on an outage. ¬†To do so, click on the database in question, click on Configuration and change it to &#8220;On&#8221; for the <strong>Auto VDB Restart</strong>.</p> <p class="p1"><a href="http://dbakevlar.com/2017/02/delphix-cannot-provision-part-timeflow/screen-shot-2017-02-23-at-1-30-50-pm/" rel="attachment wp-att-6455"><img class="alignnone wp-image-6455" src="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-1.30.50-PM.png?resize=463%2C101" alt="" srcset="https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-1.30.50-PM.png?w=1002 1002w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-1.30.50-PM.png?resize=300%2C65 300w, https://i1.wp.com/dbakevlar.com/wp-content/uploads/2017/02/Screen-Shot-2017-02-23-at-1.30.50-PM.png?resize=768%2C167 768w" sizes="(max-width: 463px) 100vw, 463px" data-recalc-dims="1" /></a></p> <p class="p1">Here&#8217;s a few more tidbits to make you more of an expert with Delphix. ¬†Want to try out the free trail with AWS? ¬†All you need is a free Amazon account and it&#8217;s only about 38 cents an hour to play around with a great copy of our Delphix Engine, including a deployed Source and Target.</p> <p class="p1">Just click on this <a href="https://www.delphix.com/products/free-trial-request">link</a> to get started!</p> <p class="p1"> <p class="p1"> <p class="p1"> <p class="p1"> <p class="p1"> <p class="p1"> <!-- 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/02/delphix-cannot-provision-part-timeflow/&title=Delphix- Cannot Provision from Part of 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/02/delphix-cannot-provision-part-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/02/delphix-cannot-provision-part-timeflow/&title=Delphix- Cannot Provision from Part of 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/02/delphix-cannot-provision-part-timeflow/&title=Delphix- Cannot Provision from Part of 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/02/delphix-cannot-provision-part-timeflow/&title=Delphix- Cannot Provision from Part of 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/02/delphix-cannot-provision-part-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/2013/07/post-redgate-webinar-on-database-12c-pluggable-databases/" >Post Redgate Webinar on Database 12c Pluggable 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/2012/07/kscope-2012-san-antonio-in-june-yippee-ki-yea/" >KSCOPE 2012, San Antonio in June, Yippee-Ki-Yea!</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/11/ora-01427-single-row-subquery-returns-more-than-one-row/" >ORA-01427: single-row subquery returns more than one row</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/03/repeat-performance/" >Repeat 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/2012/11/dba-kevlar-and-new-users-on-site/" >DBA Kevlar and New Users on Site</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/02/delphix-cannot-provision-part-timeflow/">Delphix- Cannot Provision from Part of Timeflow</a>], All Right Reserved. 2017.</small><br><p>The post <a rel="nofollow" href="http://dbakevlar.com/2017/02/delphix-cannot-provision-part-timeflow/">Delphix- Cannot Provision from Part of Timeflow</a> appeared first on <a rel="nofollow" href="http://dbakevlar.com">DBA Kevlar</a>.</p> dbakevlar http://dbakevlar.com/?p=6450 Thu Feb 23 2017 15:45:07 GMT-0500 (EST) DIY Parallelization with Oracle DBMS_DATAPUMP https://technology.amis.nl/2017/02/23/diy-parallelization-oracle-dbms_datapump/ <p>Oracle dbms_datapump provides a parallel option for exports and imports, but some objects cannot be processed in this mode. In a migration project from AIX 11gR2 to ODA X5-2 ( OL 5.9 ) 12c that included an initial load for Golden Gate, I had to deal with one of those objects, a 600G table with LOB fields, stored in the database as Basic Files ( = traditional LOB storage ).</p> <p>By applying some DIY parallelization I was able to bring the export time back from 14 hours to 35 minutes.<br /> Instrumental in this solution is the handy &#8220;detach&#8221; feature in the dbms_datapump package, and the use of dbms_rowid to &#8220;split&#8221; the table data in same sized chunks. The first allowed me to just define and start datapump jobs without having to wait till each one is finished, the second results in all jobs to end within just a short time of each other.</p> <p>The following PL/SQL exports tables in 32 chunks with 32 concurrent datapump jobs. Feel free to adjust this &#8220;dop&#8221; and<br /> schema as well as table names. Just one parameter is provided&#8230; it makes the export procedure as a whole wait<br /> for the end of all exports, so some other action may start automatically ( e.g. a file transfer ).</p> <pre class="brush: plain; title: ; notranslate"> CREATE OR REPLACE PACKAGE Datapump_Parallel_Exp_Pck IS g_parallel CONSTANT NUMBER := 32; g_dmp_dir CONSTANT VARCHAR2(25) := 'DATA_PUMP_DIR'; ------------------------------------------------------------------------------------------------- PROCEDURE Exec_Export ( P_wait IN PLS_INTEGER := 0 ); -------------------------------------------------------------------------------------------------- END Datapump_Parallel_Exp_Pck; / SHOW ERRORS; CREATE OR REPLACE PACKAGE BODY Datapump_Parallel_Exp_Pck IS ------------------------------------------------------------------------------------------------- PROCEDURE Sleep (P_millisesconds IN NUMBER) AS LANGUAGE JAVA NAME 'java.lang.Thread.sleep(int)'; ------------------------------------------------------------------------------------------------- FUNCTION Get_Current_Scn RETURN NUMBER IS v_ret NUMBER := 0; BEGIN SELECT current_scn INTO v_ret FROM v$database; RETURN v_ret; EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR( -20010, SQLERRM||' - '||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE ); END Get_Current_Scn; ------------------------------------------------------------------------------------------------- PROCEDURE Exp_Tables_Parallel ( P_scn IN NUMBER , P_dmp OUT VARCHAR2 ) IS h1 NUMBER(10); v_dop NUMBER := g_parallel; v_curr_scn NUMBER := P_scn; v_job_name_org VARCHAR2(30) := 'PX_'||TO_CHAR(sysdate,'YYYYMMDDHH24MISS'); -- PX: Parallel Execution v_job_name VARCHAR2(30) := v_job_name_org; v_dmp_file_name_org VARCHAR2(100) := lower(v_job_name||'.dmp'); v_dmp_file_name VARCHAR2(100) := v_dmp_file_name_org; v_log_file_name_org VARCHAR2(100) := lower(v_job_name||'.log'); v_log_file_name VARCHAR2(100) := v_log_file_name_org; BEGIN -- drop master table for &quot;orphaned job&quot; if it exists for i in ( select 'DROP TABLE '||owner_name||'.'||job_name||' PURGE' stat from dba_datapump_jobs where owner_name = USER and instr(v_job_name, upper(job_name) ) &gt; 0 and state = 'NOT RUNNING' and attached_sessions = 0 ) loop execute immediate i.stat; end loop; -- set out parameter P_dmp := v_dmp_file_name; -- start jobs in parallel DBMS_OUTPUT.PUT_LINE('**** START SETTING DATAPUMP PARALLEL_TABLE_EXPORT JOBS ****' ); for counter in 0 .. v_dop-1 loop v_job_name := v_job_name_org||'_'||lpad(counter+1,3,0); v_dmp_file_name := v_dmp_file_name_org||'_'||lpad(counter+1,3,0); v_log_file_name := v_log_file_name_org||'_'||lpad(counter+1,3,0); h1 := dbms_datapump.open ( operation =&gt; 'EXPORT' , job_mode =&gt; 'SCHEMA' , job_name =&gt; v_job_name , version =&gt; 'LATEST'); DBMS_OUTPUT.PUT_LINE( 'Successfully opened job: '||v_job_name); dbms_datapump.set_parallel(handle =&gt; h1, degree =&gt; 1); dbms_datapump.set_parameter(handle =&gt; h1, name =&gt; 'KEEP_MASTER', value =&gt; 0); dbms_datapump.set_parameter(handle =&gt; h1, name =&gt; 'ESTIMATE', value =&gt; 'BLOCKS'); dbms_datapump.set_parameter(handle =&gt; h1, name =&gt; 'INCLUDE_METADATA', value =&gt; 0); dbms_datapump.set_parameter(handle =&gt; h1, name =&gt; 'METRICS', value =&gt; 1); dbms_datapump.set_parameter(handle =&gt; h1, name =&gt; 'FLASHBACK_SCN', value =&gt; v_curr_scn); DBMS_OUTPUT.PUT_LINE('Successfully set job parameters for job '||v_job_name); -- export just these schemas dbms_datapump.metadata_filter(handle =&gt; h1, name =&gt; 'SCHEMA_LIST', value =&gt; ' ''&lt;SCHEMA01&gt;'',''&lt;SCHEMA02&gt;'',''&lt;SCHEMA03&gt;'' '); DBMS_OUTPUT.PUT_LINE('Successfully set schemas for job '||v_job_name); -- export tables only dbms_datapump.metadata_filter(handle =&gt; h1, name =&gt; 'INCLUDE_PATH_EXPR', value =&gt; q'[='TABLE']' ); DBMS_OUTPUT.PUT_LINE('Successfully set table export for job '||v_job_name); -- export just these tables dbms_datapump.metadata_filter(handle =&gt; h1, name =&gt; 'NAME_LIST', value =&gt; ' ''&lt;TABLE01&gt;'',''&lt;TABLE02&gt;'',''&lt;TABLE03&gt;'',''&lt;TABLE04&gt;'',''&lt;TABLE05&gt;'' ', object_path =&gt; 'TABLE'); DBMS_OUTPUT.PUT_LINE('Successfully set tables for job '||v_job_name); -- export just a 1/v_dop part of the data dbms_datapump.data_filter(handle =&gt; h1, name =&gt; 'SUBQUERY', value =&gt; 'WHERE MOD(DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID), '||v_dop||')='||counter); DBMS_OUTPUT.PUT_LINE('Successfully set data filter for job '||v_job_name); dbms_datapump.add_file ( handle =&gt; h1 , filename =&gt; v_dmp_file_name , directory =&gt; g_dmp_dir , filetype =&gt; DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE , reusefile =&gt; 1 ); DBMS_OUTPUT.PUT_LINE('Successfully add dmp file: '||v_dmp_file_name); dbms_datapump.add_file ( handle =&gt; h1 , filename =&gt; v_log_file_name , directory =&gt; g_dmp_dir , filetype =&gt; DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE); DBMS_OUTPUT.PUT_LINE('Successfully add log file: '||v_log_file_name ); dbms_datapump.log_entry(handle =&gt; h1, message =&gt; 'Job '||(counter+1)||'/'||v_dop||' starting at '||to_char(sysdate, 'dd-mon-yyyy hh24:mi:ss')||' as of scn: '||v_curr_scn ); dbms_datapump.start_job(handle =&gt; h1, skip_current =&gt; 0, abort_step =&gt; 0); DBMS_OUTPUT.PUT_LINE('Successfully started job '||(counter+1)||'/'||v_dop||' at '||to_char(sysdate,'dd-mon-yyyy hh24:mi:ss') ||' as of scn: '||v_curr_scn ); dbms_datapump.detach(handle =&gt; h1); DBMS_OUTPUT.PUT_LINE('Successfully detached from job' ); end loop;