<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-13265058</id><updated>2013-05-17T23:59:06.949+10:00</updated><category term="interval" /><category term="non-oracle" /><category term="teradata" /><category term="apex" /><category term="beer" /><category term="proxy" /><category term="postgres" /><category term="meetup" /><category term="SQL" /><category term="autonomous transaction" /><category term="debugging" /><category term="characters" /><category term="books" /><category term="concat" /><category term="Amazon" /><category term="passwords" /><category term="UI" /><category term="sql developer" /><category term="analytics" /><category term="gdal" /><category term="Spatial" /><category term="oracle-xe" /><category term="oralce" /><category term="insert" /><category term="XE" /><category term="presentation" /><category term="OpenStreetMap" /><category term="exceptions" /><category term="troubleshooting" /><category term="Personal Edition" /><category term="job" /><category term="excel" /><category term="exception handling" /><category term="direct-path" /><category term="11gR2" /><category term="Log Buffer" /><category term="11g" /><category term="ORM" /><category term="virtual" /><category term="developer" /><category term="subtype" /><category term="football" /><category term="raid" /><category term="odtug" /><category term="htmldb" /><category term="rant" /><category term="laptop" /><category term="backup" /><category term="humor" /><category term="plsql" /><category term="append" /><category term="technology summit" /><category term="plsql challenge" /><category term="emacs" /><category term="shapefile" /><category term="ogr2ogr" /><category term="servererror" /><category term="sydney" /><category term="to" /><category term="soccer" /><category term="mysql" /><category term="google maps" /><category term="oradbpedia" /><category term="security" /><category term="politics" /><category term="broadband" /><category term="dba" /><category term="optimizer" /><category term="humour" /><category term="XML" /><category term="timesten" /><category term="CSV" /><category term="proxy authentication" /><category term="cloud" /><category term="constructors" /><category term="sylk" /><category term="sql server" /><category term="multimedia" /><category term="oracle" /><category term="rownum" /><category term="AWS" /><category term="databases" /><category term="copyright" /><category term="named notation" /><category term="OTN" /><category term="data structures" /><category term="failsafe" /><category term="testing" /><category term="blogging" /><category term="OSM" /><category term="google" /><category term="SaxLoader" /><title type="text">Sydney Oracle Lab</title><subtitle type="html">I am a proud Oracle developer and this is my blog. &lt;br&gt;
My website is  
&lt;a href="http://www.sydoracle.com/"&gt; here&lt;/a&gt; 
&lt;br&gt;

This blog is OPINION, SUGGESTION and DEBATE. 
Please correct anything I write that is misleading.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default?start-index=26&amp;max-results=25" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>238</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/SydneyOracleLab" /><feedburner:info uri="sydneyoraclelab" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/3.0/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/SydneyOracleLab" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FSydneyOracleLab" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><entry><id>tag:blogger.com,1999:blog-13265058.post-7245436093938827313</id><published>2013-05-16T21:05:00.000+10:00</published><updated>2013-05-16T21:05:00.148+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">SCNs and Timestamps</title><content type="html">The function ORA_ROWSCN returns an SCN from a row (or more commonly the block, unless ROWDEPENDENCIES has been used).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;select distinct ora_rowscn from PLAN_TABLE;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But unless you're a database, that SCN doesn't mean much. You can put things in some sort of order, but not much more.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Much better is&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;select sys.scn_to_timestamp(ora_rowscn) from PLAN_TABLE;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;unless it gives you&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace;"&gt;ORA-08181: specified number is not a valid system change number&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;which is database-speak for "I can't remember exactly".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's when you might be able to fall back on this, plugging the SCN in place of the &lt;u&gt;****&lt;/u&gt; :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;select * from&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; (select first_time, first_change# curr_change,&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lag(first_change#) over (order by first_change#) prev_change,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lead(first_change#) over (order by first_change#) next_change&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; FROM v$log_history)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;where &lt;b&gt;&lt;u&gt;****&lt;/u&gt;&lt;/b&gt;&amp;nbsp;between curr_change and next_change&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It won't be exact, and it doesn't stretch back forever. But it is better than nothing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PS. This isn't a perfect way to find when a row was really inserted/updated. It is probably at the block level, and there's 'stuff' that can happen which doesn't actually change the row but might still reset the SCN. If you're looking for perfection, you at the wrong blog :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=AY4qgBADv1I:qupJr96quxw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=AY4qgBADv1I:qupJr96quxw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=AY4qgBADv1I:qupJr96quxw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=AY4qgBADv1I:qupJr96quxw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/AY4qgBADv1I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/7245436093938827313/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=7245436093938827313" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/7245436093938827313" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/7245436093938827313" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2013/05/scns-and-timestamps.html" title="SCNs and Timestamps" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-7444858478082549632</id><published>2013-03-29T09:00:00.000+11:00</published><updated>2013-03-29T09:00:03.658+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">An Oracle April Fools trick</title><content type="html">&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If anyone is looking for a trick for April Fools' Day, try&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #cc0000; font-family: Courier New, Courier, monospace;"&gt;alter session set nls_date_format = 'fm';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;The result will be an simple TO_CHAR on a date, or implicit conversion of a date to a string, will return NULL. You could try that with an ALTER SYSTEM too.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;If no-one notices then, "Congratulations", no-one is relying on the default date format.&lt;/span&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=ggyd1dtIp1M:MQcyRu40uRU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=ggyd1dtIp1M:MQcyRu40uRU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=ggyd1dtIp1M:MQcyRu40uRU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=ggyd1dtIp1M:MQcyRu40uRU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/ggyd1dtIp1M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/7444858478082549632/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=7444858478082549632" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/7444858478082549632" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/7444858478082549632" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2013/03/an-oracle-april-fools-trick.html" title="An Oracle April Fools trick" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-7935196890926624635</id><published>2013-02-05T17:50:00.000+11:00</published><updated>2013-02-05T17:50:00.497+11:00</updated><title type="text">Out with the old, in with the new</title><content type="html">&lt;div class="separator" style="clear: both; text-align: left;"&gt;The good news is that I've successfully got my picture being flagged up with my blog&amp;nbsp;articles&amp;nbsp;in Google Search.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The bad news is that sometimes (mostly ?) it has the picture from my deprecated 'domain' GPlus account rather than my primary one. I suspect I need to take more drastic steps to eliminate the old profile.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-j6inINzFbE4/UQ4FiGgm4zI/AAAAAAAAF7U/_DTaVdJr26M/s1600/xe.blog.sydoracle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://1.bp.blogspot.com/-j6inINzFbE4/UQ4FiGgm4zI/AAAAAAAAF7U/_DTaVdJr26M/s400/xe.blog.sydoracle.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=12JWSWz3T-M:CP7k5LXeaZ8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=12JWSWz3T-M:CP7k5LXeaZ8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=12JWSWz3T-M:CP7k5LXeaZ8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=12JWSWz3T-M:CP7k5LXeaZ8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/12JWSWz3T-M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/7935196890926624635/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=7935196890926624635" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/7935196890926624635" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/7935196890926624635" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2013/02/out-with-old-in-with-new.html" title="Out with the old, in with the new" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-j6inINzFbE4/UQ4FiGgm4zI/AAAAAAAAF7U/_DTaVdJr26M/s72-c/xe.blog.sydoracle.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-6518986013840128948</id><published>2013-02-02T15:39:00.001+11:00</published><updated>2013-02-02T15:41:59.426+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">Folks, we have an Image Problem</title><content type="html">&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Firstly the &lt;/span&gt;&lt;a href="https://plus.google.com/u/0/109093485030374661399/posts/ak1XNRSRiHj" style="font-family: Arial, Helvetica, sans-serif;"&gt;Daily WTF&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;"&lt;span style="background-color: white; line-height: 18px;"&gt;&lt;i&gt;The forums have strong feelings about Oracle. Not a single one of those feelings is positive.&lt;/i&gt;"&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;This was actually a post in their &lt;a href="http://forums.thedailywtf.com/forums/17.aspx"&gt;"I hate Oracle" forum&lt;/a&gt;&amp;nbsp;so it may be a bit biased. But the fact that the Dailt WTF have opened a forum just for Oracle with that name, well I get the hint.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;It doesn't help that the only time Oracle hits the big news is when there's &lt;b&gt;another&lt;/b&gt;&amp;nbsp;major hole in Java. It's the only installer that comes with a revolving door as standard. Oh, and the &lt;a href="http://www.zdnet.com/a-close-look-at-how-oracle-installs-deceptive-software-with-java-updates-7000010038/"&gt;Ask.com toolbar being foisted on people&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Then I saw the video linked on the &lt;a href="http://highscalability.com/blog/2013/1/24/nosql-parody-say-no-no-and-no.html"&gt;highscalability blog&lt;/a&gt;&amp;nbsp;. The whole relational / SQL database market has all the cool of, well, a Blackberry phone. It doesn't help that no-one can decide whether to pronounce it S-Q-L or see-quel.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;While the video suggest a few fresh naming options, I think we need to be radical. &lt;b&gt;ACIDbase&lt;/b&gt; recalls the core requirements of the relational model, suggests danger with a hint of rebellious substance abuse and coolly trips off the tongue. The only disadvantage is that the chemists seem to have wrapped up the best domain names.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now all we need is a fresh mascot. I suggest...&lt;a href="http://muppet.wikia.com/wiki/Beaker"&gt;Beaker&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://images4.wikia.nocookie.net/__cb20101015151248/muppet/images/0/05/Beaker.jpg" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;I'll have my people call his people....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=dIkLsFRT8ro:nixZn7_aL1k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=dIkLsFRT8ro:nixZn7_aL1k:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=dIkLsFRT8ro:nixZn7_aL1k:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=dIkLsFRT8ro:nixZn7_aL1k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/dIkLsFRT8ro" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/6518986013840128948/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=6518986013840128948" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/6518986013840128948" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/6518986013840128948" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2013/02/folks-we-have-image-problem.html" title="Folks, we have an Image Problem" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-7928961568919070216</id><published>2013-01-28T04:00:00.000+11:00</published><updated>2013-01-28T04:00:02.842+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">Big BLOBs being greedy in TEMP tablespace</title><content type="html">&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;I work in a small team. There are just five of us at the 'coalface' for the application, responsible for both development and production. One of the five acts as the 'DBA/Sysadmin' (as well as doing programming and acting team as leader when the actual team leader is on leave and filling in a couple of other roles). And he was on leave on Friday when we got the plaintive email with the subject "The application is broken".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;We could log in and out, so it wasn't 'catastrophic'. The application is mostly APEX, so my next step was to check the Apex activity log where I saw "ORA-01652: unable to extend temp segment by 128 in tablespace TEMP". The error was at least 'extreme'.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;Yes, a DBA probably would have gone to the alert.log first. I am not a DBA :)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Prompted by that message, I ran a query across V$TEMPSEG_USAGE to find several inactive sessions under APEX_PUBLIC_USER holding hundreds of MBs of temporary LOB segments. With a temp tablespace around 2GB, this level of usage isn't sustainable. The quick solution was just to shoot the sessions.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;APEX lies on top of HTTP, a stateless protocol and the session state is actually preserved in tables (check out&lt;a href="http://www.grassroots-oracle.com/2013/01/using-sql-to-view-apex-session-state.html"&gt; Scott Wesley's post on viewing Apex session state&lt;/a&gt;). It generally isn't a problem if you kill one of the database sessions forming the connection pool and it isn't active.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;On further investigation, we have identified one trouble spot, which is an application component that&lt;/span&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;allows users to upload and download files. It seems that recently they have been doing large files (hundreds of MB). When the files are uploaded or download it allocates a temporary LOG segment and it holds onto the segment even after a commit or a DBMS_LOB.FREETEMPORARY or a reset package state.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Those end users aren't getting the same database session each time oo if they do several file transfers, multiple sessions can be hanging onto these hundreds of MB of temporary segments. With around 20 sessions at peak, that was locking up our 2GB temp file.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;As a stop-gap, we've introduced a scheduled job every three hours to kill off greedy sessions. It is an ugly solution though, and we'll be discussing options when we're all back at work after the long weekend. These include&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;A support note that points to&lt;span id="goog_1467878313"&gt;&lt;/span&gt;&lt;a href="http://www.freelists.org/post/oracle-l/Temporary-segments-in-temporary-tablespaces,7"&gt; event 60025&lt;span id="goog_1467878314"&gt;&lt;/span&gt; to free up the stray LOB segments&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Tying the file upload/download component to one or two database sessions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;File size limits on uploads and downloads&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Is Apex the appropriate security gate-keeper to those fils&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Can we avoid dealing with the 'entire' file, and just have a few MBs at a time&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;If you have any other suggestions, feel free to add a comment.&lt;/span&gt;&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=J266Pd0iXUA:wK5hqUzZWiI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=J266Pd0iXUA:wK5hqUzZWiI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=J266Pd0iXUA:wK5hqUzZWiI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=J266Pd0iXUA:wK5hqUzZWiI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/J266Pd0iXUA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/7928961568919070216/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=7928961568919070216" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/7928961568919070216" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/7928961568919070216" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2013/01/big-blobs-being-greedy-in-temp.html" title="Big BLOBs being greedy in TEMP tablespace" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-5015807315707728981</id><published>2013-01-27T11:48:00.000+11:00</published><updated>2013-01-27T11:48:02.353+11:00</updated><title type="text">Engaging with Google+</title><content type="html">In the pub after the Sydney Oracle Meetup ('SQL Developer for DBAs, featuring a guest recorded appearance by the one and only&amp;nbsp;&lt;a class="g-profile" href="http://plus.google.com/110720806303839838602" target="_blank"&gt;+Jeff Smith&lt;/a&gt;&amp;nbsp;), Google+ got a mention. Okay, it was me who mentioned it, and it was closely followed by a remark by another attendee that he didn't know anyone else who used it.&lt;br /&gt;&lt;br /&gt;It is getting some traction, apparently overtaking &lt;a href="http://globalwebindex.net/thinking/social-platforms-gwi-8-update-decline-of-local-social-media-platforms/"&gt;Twitter&lt;/a&gt;&amp;nbsp;in active members ( I don't know how the figures are calculated. Twitter is more high profile still, possibly because practically every tweet is public).&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: #f9f9f9; color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 18px;"&gt;Google+... grew in terms of active usage by 27% to 343m users to become the number 2 social platform. Interestingly for Google, YouTube (not previously tracked by us as a social platform) comes in at number 3....&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: #f9f9f9; color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 12px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;But it is still a geeky place. The most &lt;a href="http://www.circlecount.com/communities/"&gt;popular communities&lt;/a&gt; are Space, Android and Photography. Photography is big in G+. Sport less so, with the Minecraft community being bigger than the 'F1 Racing' group (which is the biggest of any sport).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Google+ Tips and Suggestions&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you do want to get active in G+, finding appropriate communities is a good start.&lt;br /&gt;&lt;br /&gt;Try &lt;a href="https://plus.google.com/u/0/communities/116305285459693021894"&gt;Science Sunday&lt;/a&gt;&amp;nbsp;or &lt;a href="https://plus.google.com/u/0/communities/110729656096374290306"&gt;IT Professionals&lt;/a&gt;&amp;nbsp;for active groups, or find something aligned to your non-work interests. There's no busy Oracle community yet.&amp;nbsp;If you are an Oracle person, feel free to join the &lt;a href="https://plus.google.com/u/0/communities/106349058628775943918"&gt;Sydney Oracle community&lt;/a&gt;&amp;nbsp;(even if you don't live around here).&lt;br /&gt;&lt;br /&gt;If you want a selected set of individuals to start with, I've &lt;a href="https://plus.google.com/u/0/116132019768637593422/posts/CmC3m67LbBP"&gt;shared a circle here&lt;/a&gt;. Some of them (Laurence Pegard and Artsaholic) are 'visual' posters with lots of imagery.&amp;nbsp;Wired, The Economist and the Daily WTF will be known to anyone reading this. &lt;i&gt;Frankly the comments on the Economist posts often fall into the drivel category.&lt;/i&gt;Tim Hall and Jeff Smith are included because they are the bigger Oracle 'identities'. David Brin is the sci-fi author, and the others represent good originators or curators of content.&lt;br /&gt;&lt;br /&gt;I have one circle that is empty. I share articles to that if I want to read them later.&lt;br /&gt;&lt;br /&gt;I have a circle for 'local' content (where it will be active during the daytime in Australia) and another for 'Following' a group of people who post stuff that I don't want to miss. I catch up on that group in the mornings (mostly) simply reading back to the last post I remember.&lt;br /&gt;&lt;br /&gt;I have a 'Background' circle of stuff that I can read if I have time, but I can skip when bust. And I sometimes have 'potential' circles where I've imported a bunch of people and want to filter them into a better circle, or remove them altogether,&lt;br /&gt;&lt;br /&gt;I generally remove (uncircle) people for posting lots of cat pictures or memes, or if they have a very high noise to signal ratio. I block people who irritate me. It makes life more pleasant.&lt;br /&gt;&lt;br /&gt;If you comment on an article, you get notifications for subsequent comments (unless you mute the post). If you follow interesting people, you can often find other interesting people when they comment on interesting posts.&lt;br /&gt;&lt;br /&gt;I don't expect people I follow to follow me back. I don't expect to find people I know in real-life.&lt;br /&gt;Lots of people don't post publically. Mostly women, and mostly because of creeps. Because of this, you might need to wait until you are circled by them before you actually see any content from them.&lt;br /&gt;&lt;br /&gt;Also, stick enough information in your profile so that people know 'what you are about'.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=0WL2qTdVNXM:HIJ075_qlNw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=0WL2qTdVNXM:HIJ075_qlNw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=0WL2qTdVNXM:HIJ075_qlNw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=0WL2qTdVNXM:HIJ075_qlNw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/0WL2qTdVNXM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/5015807315707728981/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=5015807315707728981" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5015807315707728981" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5015807315707728981" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2013/01/engaging-with-google.html" title="Engaging with Google+" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-2939737499856104543</id><published>2013-01-10T22:20:00.001+11:00</published><updated>2013-01-10T22:20:21.042+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">Greatest, Least and NULLs</title><content type="html">&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;The functions &lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;greatest &lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;and &lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;least &lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;are amongst the special ones which can take &lt;b&gt;lots&lt;/b&gt;&amp;nbsp;of arguments. They are a bit similar to &lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;min&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;and &lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;max&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;for columns rather than rows. But they have one difference to the aggregate functions that meant I avoided them for a long time.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Unlike aggregate functions, which ignore null values,&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;greatest&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;and&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;least&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;will return a null if any of the supplied columns (or expressions) are null. If that isn't what you want (and it often isn't) it means putting NVLs around everything and with&amp;nbsp;substitution&amp;nbsp;values that don't break the logic.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;For example,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;create table state_sum&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; (style varchar2(10),&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; nsw number, vic number, wa number, qld number,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; sa number, tas number, nt number, act number);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; insert into state_sum values&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; ('Red',5,3,9,null,1,7,8,null);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; insert into state_sum values&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; ('Blue',null,null,null,null,null,null,null,null);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; insert into state_sum values&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; ('Green',10,9,8,7,6,5,4,3);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; commit;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;If I try a&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SELECT least(nsw,vic,wa,qld)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;FROM state_sum&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;WHERE style &amp;nbsp;= 'Red';&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;It will return a null (because there's a null value for the QLD column);&lt;/div&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;I could try&lt;/div&gt;&lt;div&gt;&lt;div style="font-family: 'Times New Roman';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;SELECT least(nvl(nsw,0),&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;nvl(&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;vic,&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;0),&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;nvl(&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;wa,&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;0),&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;nvl(&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;qld,&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;0)&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman';"&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;FROM state_sum&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman';"&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;WHERE style &amp;nbsp;= 'Red';&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;But that returns a 0 because that has been substituted for the QLD null. To get the lowest 'real' value, I'd need to NVL with a value so high that it could never be the lowest. A similar problem occurs for &lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;greatest&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt; except you can probably get away with a zero....up until you get a set of negative numbers. And don't even get me started on character and date values.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;In short, I never found these functions to be as useful as intended.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;But once in a while this apparent drawback in their management of null values does make them useful.&lt;/div&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;&lt;u&gt;Coalesce, greatest/least and null tests&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;I have become a fan of &lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;coalesce&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt; as &lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace;"&gt;NVL&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt; on steroids.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;I never liked NVL2. It might be useful, but if you can't actually give it a decent name, then you shouldn't have bothered. Or maybe just wait till you invent the concept of overloading and simply have the existing two-parameter NVL and an additional three-parameter NVL instead of NVL2.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;If you haven't used it, it returns the first no-null value in the list. And, like &lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;greatest/least&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;, it can take lots of arguments.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; select style from state_sum&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp;where coalesce(nsw,vic,wa,qld,sa,tas,nt,act) is null;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;STYLE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;----------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;Blue&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; select style from state_sum&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp;where coalesce(nsw,vic,wa,qld,sa,tas,nt,act) is not null;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;STYLE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;----------&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;Red&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;Green&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;But what if you want to know if &lt;u&gt;any&lt;/u&gt; of the values are null. That is, you want Red and Blue, but not Green (or vice versa).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;Yep, you guessed it. That's where you can use&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;greatest/least.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;div&gt;SQL&amp;gt; select style from state_sum&lt;/div&gt;&lt;div&gt;&amp;nbsp; 2 &amp;nbsp;where least(nsw,vic,wa,qld,sa,tas,nt,act) is null;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;STYLE&lt;/div&gt;&lt;div&gt;----------&lt;/div&gt;&lt;div&gt;Red&lt;/div&gt;&lt;div&gt;Blue&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;SQL&amp;gt; select style from state_sum&lt;/div&gt;&lt;div&gt;&amp;nbsp; 2 &amp;nbsp;where least(nsw,vic,wa,qld,sa,tas,nt,act) is not null;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;STYLE&lt;/div&gt;&lt;div&gt;----------&lt;/div&gt;&lt;div&gt;Green&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: small;"&gt;And it is easy enough to combine them&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;SQL&amp;gt; select style,&lt;/div&gt;&lt;div&gt;&amp;nbsp; 2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case&amp;nbsp;when least(nsw,vic,wa,qld,sa,tas,nt,act) is null&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;then 'Y' else 'N' end nulls_present,&lt;/div&gt;&lt;div&gt;&amp;nbsp; 3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case when coalesce(nsw,vic,wa,qld,sa,tas,nt,act) is null&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;then 'Y' else 'N' end all_null&lt;/div&gt;&lt;div&gt;&amp;nbsp; 4 &amp;nbsp;from state_sum;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;STYLE &amp;nbsp; &amp;nbsp; &amp;nbsp;N A&lt;/div&gt;&lt;div&gt;---------- - -&lt;/div&gt;&lt;div&gt;Red &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y N&lt;/div&gt;&lt;div&gt;Blue &amp;nbsp; &amp;nbsp; &amp;nbsp; Y Y&lt;/div&gt;&lt;div&gt;Green &amp;nbsp; &amp;nbsp; &amp;nbsp;N N&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=RqirRlOeLqM:yGWOZ7CLW40:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=RqirRlOeLqM:yGWOZ7CLW40:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=RqirRlOeLqM:yGWOZ7CLW40:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=RqirRlOeLqM:yGWOZ7CLW40:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/RqirRlOeLqM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/2939737499856104543/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=2939737499856104543" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/2939737499856104543" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/2939737499856104543" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2013/01/greatest-least-and-nulls.html" title="Greatest, Least and NULLs" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-5229677530527197024</id><published>2013-01-05T13:26:00.000+11:00</published><updated>2013-01-05T13:26:49.300+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">Inskipp the uncatchable exception</title><content type="html">The world is full of exceptions. And exception handlers.&lt;br /&gt;&lt;br /&gt;And sometimes, just &lt;b&gt;sometimes&lt;/b&gt;, it actually makes sense to have a WHEN OTHERS. For example, if a program fails, under any circumstances, maybe you want it to log the exception or send an email to a support account.&lt;br /&gt;&lt;br /&gt;But then, just sometimes, you want a program to &lt;b&gt;&lt;u&gt;FAIL&lt;/u&gt;&lt;/b&gt;, and to fail in such a way that even the most resilient of exception handlers won't catch it. Maybe you're working on a function that gets called way down the bottom of a deep call stack, and right there at the top is a WHEN OTHERS exception handler you can't afford to trigger.&lt;br /&gt;&lt;br /&gt;PL/SQL doesn't support classes or sets or exception handlers. But there's one exception that is superspecial. Okay, NO_DATA_FOUND is special, as I've discussed &lt;a href="http://blog.sydoracle.com/2005/09/functions-as-datasources-and.html"&gt;before&lt;/a&gt;, but this one is special in a different way.&lt;br /&gt;&lt;br /&gt;This is exception -0028, licenced to die. (Actually, the double-zero prefix is unnecessary, but it is still Christmas holidays for me, so I'm sneaking in a Bond reference).&lt;br /&gt;&lt;br /&gt;This is a regular exception.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp; &amp;nbsp;e_suicide exception;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3 &amp;nbsp; &amp;nbsp;pragma exception_init(e_suicide,-27);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 4 &amp;nbsp;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 5 &amp;nbsp; &amp;nbsp;raise e_suicide;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 6 &amp;nbsp;exception&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 7 &amp;nbsp; &amp;nbsp;when others then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 8 &amp;nbsp; &amp;nbsp; &amp;nbsp;dbms_output.put_line('Caught:'||sqlcode);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 9 &amp;nbsp;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;10 &amp;nbsp;/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;Caught:-27&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And this is the uncatchable exception (oh, and Inskipp the uncatchable was a character from the Stainless Steel Rat)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; declare&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp; &amp;nbsp;e_suicide exception;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3 &amp;nbsp; &amp;nbsp;pragma exception_init(e_suicide,-28);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 4 &amp;nbsp;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 5 &amp;nbsp; &amp;nbsp;raise e_suicide;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 6 &amp;nbsp;exception&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 7 &amp;nbsp; &amp;nbsp;when others then&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 8 &amp;nbsp; &amp;nbsp; &amp;nbsp;dbms_output.put_line('Caught:'||sqlcode);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 9 &amp;nbsp;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;10 &amp;nbsp;/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;declare&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;*&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;ERROR at line 1:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;ORA-00028: your session has been killed&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;ORA-06512: at line 5&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;When it says the session has been killed, it means it. It is dead. An ex-session. Not pining for a PGA, but deceased and bereft of state.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; select 1 from dual;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;select 1 from dual&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;*&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;ERROR at line 1:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;ORA-01012: not logged on&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This one will return control to the calling program and a new connection will need to be established to the database if desired.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=8Gy2eW2njJk:bnhwTqB25CA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=8Gy2eW2njJk:bnhwTqB25CA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=8Gy2eW2njJk:bnhwTqB25CA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=8Gy2eW2njJk:bnhwTqB25CA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/8Gy2eW2njJk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/5229677530527197024/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=5229677530527197024" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5229677530527197024" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5229677530527197024" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2013/01/inskipp-uncatchable-exception.html" title="Inskipp the uncatchable exception" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-5827184965394735407</id><published>2012-12-10T23:16:00.000+11:00</published><updated>2012-12-10T23:16:39.753+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="plsql" /><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">COLLECT and DISTINCT</title><content type="html">&lt;br /&gt;&lt;br /&gt;In regular SQL, you can use the DISTINCT qualifier with the COLLECT function.&lt;br /&gt;Here it removes the duplicates for PETER and DAVID.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; select cast(collect(first_name) as &amp;nbsp;sys.dbms_debug_vc2coll)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp;from HR.employees&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3 &amp;nbsp;where job_id = 'SA_REP'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 4 &amp;nbsp;and manager_id in (147,145);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;CAST(COLLECT(FIRST_NAME)ASSYS.DBMS_DEBUG_VC2COLL)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;span style="color: red;"&gt;DBMS_DEBUG_VC2COLL(&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;'Peter'&lt;/b&gt;, &lt;b&gt;'David'&lt;/b&gt;, &lt;b&gt;'Peter'&lt;/b&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;, 'Christopher', 'Nanette', 'Oliver'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;span style="color: red;"&gt;, 'Clara', 'Danielle', 'Mattea', &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;'David'&lt;/span&gt;&lt;/b&gt;&lt;span style="color: red;"&gt;, 'Sundar', 'Amit')&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; select cast(collect(distinct first_name) as sys.dbms_debug_vc2coll)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp;from HR.employees&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3 &amp;nbsp;where job_id = 'SA_REP'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 4 &amp;nbsp;and manager_id in (147,145);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;CAST(COLLECT(DISTINCTFIRST_NAME)ASSYS.DBMS_DEBUG_VC2COLL)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;DBMS_DEBUG_VC2COLL('Amit', 'Christopher', 'Clara', 'Danielle', &lt;/span&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;'David',&lt;/span&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt; 'Mattea'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;, 'Nanette', 'Oliver', &lt;/span&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;'Peter'&lt;/span&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;, 'Sundar')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, if you get into PL/SQL, things are different. Without the DISTINCT, it works fine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp; &amp;nbsp;v_tab sys.dbms_debug_vc2coll;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3 &amp;nbsp;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 4 &amp;nbsp; &amp;nbsp;select cast(collect(first_name) as &amp;nbsp;sys.dbms_debug_vc2coll)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 5 &amp;nbsp; &amp;nbsp;into v_tab&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 6 &amp;nbsp; &amp;nbsp;from HR.employees&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 7 &amp;nbsp; &amp;nbsp;where job_id = 'SA_REP'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 8 &amp;nbsp; &amp;nbsp;and manager_id in (147,145);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 9 &amp;nbsp; &amp;nbsp;dbms_output.put_line(v_tab.count);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;10 &amp;nbsp;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;11 &amp;nbsp;/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;12&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;With the DISTINCT an error is reported.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp; &amp;nbsp;v_tab sys.dbms_debug_vc2coll;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3 &amp;nbsp;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 4 &amp;nbsp; &amp;nbsp;select cast(collect(distinct first_name) as sys.dbms_debug_vc2coll)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 5 &amp;nbsp; &amp;nbsp;into v_tab&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 6 &amp;nbsp; &amp;nbsp;from HR.employees&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 7 &amp;nbsp; &amp;nbsp;where job_id = 'SA_REP'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 8 &amp;nbsp; &amp;nbsp;and manager_id in (147,145);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 9 &amp;nbsp;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;10 &amp;nbsp;/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; select cast(collect(distinct first_name) as sys.dbms_debug_vc2coll)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;ERROR at line 4:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;ORA-06550: line 4, column 15:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;PL/SQL: ORA-30482: DISTINCT option not allowed for this function&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;ORA-06550: line 4, column 3:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;PL/SQL: SQL Statement ignored&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's the case in 11.2.0.2. I'm not sure if there's a patch for it, or whether it will be fixed in 12c. [And if they want to get that out in the&amp;nbsp;twelfth&amp;nbsp;month of 2012, they don't have long left.]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=dsA-ydwPCTA:nDShBrhhiCU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=dsA-ydwPCTA:nDShBrhhiCU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=dsA-ydwPCTA:nDShBrhhiCU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=dsA-ydwPCTA:nDShBrhhiCU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/dsA-ydwPCTA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/5827184965394735407/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=5827184965394735407" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5827184965394735407" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5827184965394735407" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/12/collect-and-distinct.html" title="COLLECT and DISTINCT" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-5282219636684310046</id><published>2012-12-09T23:01:00.001+11:00</published><updated>2012-12-09T23:01:29.926+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="sql developer" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">SQL Developer, COLLECT and CAST</title><content type="html">This one is a quick hint for SQL Developer and the COLLECT function.&lt;br /&gt;&lt;br /&gt;In case you're not familiar with it, &lt;a href="http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions024.htm"&gt;COLLECT&lt;/a&gt; is an aggregate function that was introduced in 10gR2 and simply gathers all the items up into a VARRAY/TABLE style collection type. If you use it in PL/SQL programs, you can handle the collection programmatically.&lt;br /&gt;&lt;br /&gt;But sometimes it can be handy to see the elements in a quick ad-hoc query.&lt;br /&gt;&lt;br /&gt;In SQL*Plus, you'll get an output that is ugly, but usable:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; l&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 1 &amp;nbsp;select country_id, collect(city)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp;from hr.locations&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3* group by country_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; /&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;CO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;COLLECT(CITY)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;AU&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SYSTPv4AgebXuT9qJVHqM2Gc/MQ==('Sydney')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;BR&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SYSTPv4AgebXuT9qJVHqM2Gc/MQ==('Sao Paulo')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;CA&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;SYSTPv4AgebXuT9qJVHqM2Gc/MQ==('Toronto', 'Whitehorse')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In SQL Developer, the same query will return you an error:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;ORA-00932: inconsistent datatypes: expected NUMBER got -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;00932. 00000 - &amp;nbsp;"inconsistent datatypes: expected %s got %s"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;*Cause: &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;*Action:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As described in the documentation for COLLECT, you should apply a CAST. If you don't already have a convenient TYPE that is a TABLE OF VARCHAR2, and can't create one, there's a built-in one you can use, SYS.DBMS_DEBUG_VC2COLL. Unusually for a SYS object, you do need to specify the schema name as there's no public synonym.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;select country_id, cast(collect(city) as sys.dbms_debug_vc2coll) cities&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;from hr.locations&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: Courier New, Courier, monospace; font-size: x-small;"&gt;group by country_id&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BhEkwLbCAVo/UMR6vAQqvpI/AAAAAAAAEWk/6ePG-lhS__k/s1600/Oracle+SQL+Developer+_+gary+on+XE.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" src="http://3.bp.blogspot.com/-BhEkwLbCAVo/UMR6vAQqvpI/AAAAAAAAEWk/6ePG-lhS__k/s640/Oracle+SQL+Developer+_+gary+on+XE.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I'm mostly using 11gR2 now, which has the more powerful&amp;nbsp;&lt;a href="http://docs.oracle.com/cd/E14072_01/server.112/e10592/functions087.htm"&gt;LISTAGG&lt;/a&gt;, but if you still haven't upgraded all your databases, ad-hoc COLLECTs can be useful. And in programs, a collection is easier to parse than a string.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=8pklmIuyOFs:RdNEgR1GelI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=8pklmIuyOFs:RdNEgR1GelI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=8pklmIuyOFs:RdNEgR1GelI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=8pklmIuyOFs:RdNEgR1GelI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/8pklmIuyOFs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/5282219636684310046/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=5282219636684310046" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5282219636684310046" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5282219636684310046" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/12/sql-developer-collect-and-cast.html" title="SQL Developer, COLLECT and CAST" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-BhEkwLbCAVo/UMR6vAQqvpI/AAAAAAAAEWk/6ePG-lhS__k/s72-c/Oracle+SQL+Developer+_+gary+on+XE.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-4437746586783847756</id><published>2012-12-01T16:18:00.000+11:00</published><updated>2012-12-01T16:18:09.933+11:00</updated><title type="text">Toastmasters - Testing public speaking away from 'production'</title><content type="html">Every Wednesday lunch (pretty much) there's a Toastmasters meeting at the company where I'm working. After having been there a year, I finally got around to turning up a couple of weeks ago. &lt;i&gt;Hey, they also have live music on Wednesday lunch. It's a busy place.&lt;/i&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.pythian.com/news/author/velikanov/"&gt;Yury&lt;/a&gt;, from &lt;a href="http://www.pythian.com/"&gt;Pythian&lt;/a&gt; and the &lt;a href="http://www.sydneyoracle.com.au/"&gt;Sydney Oracle Meetup&lt;/a&gt;, has mentioned &lt;a href="http://www.pythian.com/news/33345/my-failure-success-and-how-to-never-give-up/"&gt;Toastmasters.&lt;/a&gt;&amp;nbsp;Given my audience is mostly developers, let me sum it up my way: Toastmasters is a test environment for public speaking.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As with a test environment, you're expected to have a few "does not meet requirements" incidents. That's why it is there. You can experience those, and learn from them, and repeat with improvements. And none of that damages "production". It is a dedicated, safe environment for rehearsals.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I can't speak for all groups, but in the couple of meetings I have attended, as a guest, I've seen positive and constructive criticism. As well as learning to speak, others are evaluating...which means listening. The talks are only a few minutes, so I don't bore people with techy details. There's no sign of Powerpoint either, so it isn't quite a conference rehearsal.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Again, like testing, this means you are using 'test' data, rather than volume testing. You can focus on the fundamentals of communicating rather than on content.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I plan to sign up fully in the near future, so there might be more coming in this blog, or it might come through in my Google Plus posts (apparently I am in the circles of over a thousand people, but I'm none the wiser on how many actually &lt;i&gt;read&lt;/i&gt;&amp;nbsp;anything I post).&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=XSh58FxU8Yw:U8c8H0gMJwc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=XSh58FxU8Yw:U8c8H0gMJwc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=XSh58FxU8Yw:U8c8H0gMJwc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=XSh58FxU8Yw:U8c8H0gMJwc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/XSh58FxU8Yw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/4437746586783847756/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=4437746586783847756" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/4437746586783847756" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/4437746586783847756" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/12/toastmasters-testing-public-speaking.html" title="Toastmasters - Testing public speaking away from 'production'" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-547114411719871877</id><published>2012-11-11T14:28:00.003+11:00</published><updated>2012-11-11T14:28:55.672+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle-xe" /><title type="text">Windows 8 running Oracle 11g XE </title><content type="html">It's been several months since my last blog post, mostly because free time is a scare resource.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But after a few false starts, I've removed the last vestige of "Windows XP" from my home, and upgraded my &lt;a href="http://blog.sydoracle.com/2010/02/new-addition-to-my-computer-family.html"&gt;netbook&lt;/a&gt;&amp;nbsp;to Windows 8. Windows 7 was never an option for this machine and Windows 8 has an afforable XP upgrade option and a simpler set of variants. The "Pro" version which has replaced my "XP Home" adds such goodies as acting as a Remote Desktop server, which was always skipped for 'home' users. I feel all grown up :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;The Jumps&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The first false start was the Windows 8 upgrade assistant which fell over several times. Since it won't let you go to the 'Buy' component without going through this step, it was a significant obstacle. I uninstalled a bunch of stuff and then created a fresh administrator account. One of those fixed the problem and it informed me of several minor issues but no showstopper.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The analysis did suggest that the Oracle 11gR2 XE would not necessarily need re-installing, but I can't be sure if that was true.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The 'Buy' was the second barrier, with repeated failures when trying to produce an invoice. None of the unsuccessful attempts reached my credit card, and it eventually succeeded. I think I needed to wait until the US and/or Europe was asleep before the server could cope.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The final blocker was a failed attempt to upgrade and keep 'Personal documents'. In my position, computers tend to get a lot of stuff installed and uninstalled on them. After a couple of years, I think the XP environment was just too stuffed to manage an upgrade.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;Success&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I decided to backup a bunch of stuff and did a 'kill all' install which went all the way through,&amp;nbsp;and didn't actually wipe out the 'D:' partition of my disk anyway.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The 1024x600 resolution of the built-in screen means the "Don't call it metro" apps / Windows Store is unavailable. I might look into solutions to that, but it isn't a big deal.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;Reinstall&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Now I needed to regather all my favorite applications, and see if the VPN option to work will still run.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Google Chrome was the first application installed. I will try IE10, but I think the clutter of the default home screen for Australian users (ninemsn.com) made me flinch.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.oracle.com/technetwork/products/express-edition/overview/index.html"&gt;Oracle XE 11g&lt;/a&gt; has been re-installed and I'm downloading the latest version of &lt;a href="http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html"&gt;SQL Developer&lt;/a&gt;&amp;nbsp;which Jeff has had updated &lt;a href="http://www.thatjeffsmith.com/archive/2012/11/oracle-sql-developer-version-3-2-2-released/"&gt;again&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://mobaxterm.mobatek.net/download-home-edition.html"&gt;MobaXTerm&lt;/a&gt; has apparently jumped to version 6 while I blinked.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.pspad.com/en/"&gt;PSPad&lt;/a&gt; has been at version 4.5.6 for a year.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;a href="http://getgreenshot.org/downloads/"&gt;Greenshot&lt;/a&gt; is my favoured screen capture utility&lt;/div&gt;&lt;div&gt;VLC Media player has been added too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Haven't decided whether to aim for OpenOffice or LibreOffice, and I suspect there'll be a few more applications I remember over the coming weeks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=qWUUnj9emDo:m6Ftvav2n_s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=qWUUnj9emDo:m6Ftvav2n_s:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=qWUUnj9emDo:m6Ftvav2n_s:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=qWUUnj9emDo:m6Ftvav2n_s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/qWUUnj9emDo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/547114411719871877/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=547114411719871877" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/547114411719871877" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/547114411719871877" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/11/windows-8-running-oracle-11g-xe.html" title="Windows 8 running Oracle 11g XE " /><author><name>Gary Myers</name><uri>https://plus.google.com/102181347552792364408</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-JOFVsyx3ZJg/AAAAAAAAAAI/AAAAAAAAFiA/50zwmhzrLro/s512-c/photo.jpg" /></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-2695700084925138222</id><published>2012-07-17T21:12:00.000+10:00</published><updated>2012-07-17T21:12:00.499+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">Being just a little bit unique</title><content type="html">A few weeks back, I saw a mention of an old Tanel Poder post about the &lt;a href="http://blog.tanelpoder.com/2008/10/21/transportable-tablespaces-and-rowid-uniqueness/"&gt;uniqueness of ROWIDs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is an interesting subject as a lot of people expect ROWIDs to be unique, but don't think about how unique that is. While you can't be a little bit pregnant, you can be a little bit unique. Or at least unique only within a specific subgroup.&lt;br /&gt;&lt;br /&gt;The only complaint I have about the piece is that it is very DBAish. Lots of moving files around the OS and all those other things that DBAs like to do.&lt;br /&gt;&lt;br /&gt;I'm a developer, and like to stick with SQL. And it is pretty easy to demonstrate the non-uniqueness of a ROWID without leaving SQL*PLUS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; CREATE CLUSTER emp_dept&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp; &amp;nbsp; (dept_id NUMBER(4));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; CREATE TABLE dept_c&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp; &amp;nbsp; (dept_id number(4) primary key, dept_name varchar2(20))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3 &amp;nbsp; &amp;nbsp; CLUSTER emp_dept (dept_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 4 &amp;nbsp; &amp;nbsp; ;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; CREATE TABLE emp_c&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp; &amp;nbsp; (emp_id number primary key, &amp;nbsp;name varchar(20), dept_id number(4))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3 &amp;nbsp; &amp;nbsp; CLUSTER emp_dept (dept_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 4 &amp;nbsp; &amp;nbsp; ;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; CREATE INDEX idx_emp_dept ON CLUSTER emp_dept;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; insert into dept_c values (10,'Accounts');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; insert into emp_c values (1,'Scott',10);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; select rowid from dept_c&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp;union&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3 &amp;nbsp;select rowid from emp_c;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;ROWID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;AAAF/4AAEAAACX9AAA&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; select rid, count(*), min(type), max(type)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 2 &amp;nbsp;from&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 3 &amp;nbsp; &amp;nbsp;(select 'D' type, &amp;nbsp;rowidtochar(rowid) rid from dept_c&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 4 &amp;nbsp; &amp;nbsp;union all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 5 &amp;nbsp; &amp;nbsp;select 'C' type, rowidtochar(rowid) rid from emp_c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; 6 &amp;nbsp;group by rid;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;RID &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;COUNT(*) M M&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;------------------ ---------- - -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;AAAF/4AAEAAACX9AAA &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2 C D&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course a DBA will still argue that the ROWID is unique and this one simply doesn't belong to a table.&lt;br /&gt;&lt;br /&gt;But the takeaway is that a ROWID is not tied to a single row in a single table in a database.&lt;br /&gt;&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=6j7ODFa7GR8:LoTcINQXF-k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=6j7ODFa7GR8:LoTcINQXF-k:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=6j7ODFa7GR8:LoTcINQXF-k:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=6j7ODFa7GR8:LoTcINQXF-k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/6j7ODFa7GR8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/2695700084925138222/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=2695700084925138222" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/2695700084925138222" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/2695700084925138222" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/07/being-just-little-bit-unique.html" title="Being just a little bit unique" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-3795816933039193815</id><published>2012-07-07T20:17:00.000+10:00</published><updated>2012-07-07T20:18:16.482+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apex" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">Whatever happened to...Packaged Apex Applications</title><content type="html">Many moons ago, there existed a bunch of packaged applications for Apex on the Oracle website.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Alas and alack, they were removed and all that exists in their &lt;a href="http://www.oracle.com/technetwork/developer-tools/apex/application-express/packaged-apps-090453.html"&gt;place&lt;/a&gt; is a collection of sample code. They'll be making a comeback in Apex 4.2 where they will be 'prepacked' in the installation and ready to install. You can keep them vanilla, and perhaps get some support from Oracle for them (or maybe just an upgrade path), or you can unlock them and make your own customisations and enhancements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These packaged productivity apps also got mentioned as part of the &lt;a href="https://cloud.oracle.com/mycloud/f?p=service:database_features:0:::::"&gt;cloud.oracle.com&lt;/a&gt;&amp;nbsp;offering. Assuming that does eventually materialize. Maybe its been waiting for Apex 4.2. (By the way, the EA is running on 11gR2 so there's no 12c hiding there.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The only drawback is that the new packaged applications won't be available for anything earlier than 4.2. I guess it is possible for someone to unlock them and somehow achieve a backport to an earlier version, but I wouldn't count on it. Certainly don't expect that from Oracle.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, for a bit of nostalgia, I dug out one of those old packaged apps from my hard drive. The original Issue Tracker was developed for Apex 2.2 and is old enough to be attending school. The new one looks a lot more attractive. Since it caters for features such as uploading attachments, it looks much more like a usable application than a sample or demo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-uYRt4TdMXVE/T_gIQjX8J9I/AAAAAAAAC80/JIuTDhgkmcI/s1600/Issue_Tracker_old.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="128" src="http://3.bp.blogspot.com/-uYRt4TdMXVE/T_gIQjX8J9I/AAAAAAAAC80/JIuTDhgkmcI/s320/Issue_Tracker_old.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-mPrwB_3Xb24/T_gIPygTjwI/AAAAAAAAC8w/YEC2k8w-oS0/s1600/Issue+Tracker_new.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="210" src="http://3.bp.blogspot.com/-mPrwB_3Xb24/T_gIPygTjwI/AAAAAAAAC8w/YEC2k8w-oS0/s320/Issue+Tracker_new.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-haf9xzi_oZk/T_gJ7iMYxzI/AAAAAAAAC9A/Msxj2_h080I/s1600/IssueNew.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://4.bp.blogspot.com/-haf9xzi_oZk/T_gJ7iMYxzI/AAAAAAAAC9A/Msxj2_h080I/s320/IssueNew.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=H6pnAv1F4VM:RmlaEDApZ1U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=H6pnAv1F4VM:RmlaEDApZ1U:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=H6pnAv1F4VM:RmlaEDApZ1U:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=H6pnAv1F4VM:RmlaEDApZ1U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/H6pnAv1F4VM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/3795816933039193815/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=3795816933039193815" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/3795816933039193815" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/3795816933039193815" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/07/whatever-happened-topackaged-apex.html" title="Whatever happened to...Packaged Apex Applications" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-uYRt4TdMXVE/T_gIQjX8J9I/AAAAAAAAC80/JIuTDhgkmcI/s72-c/Issue_Tracker_old.png" height="72" width="72" /><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-5897358308582312574</id><published>2012-07-02T21:09:00.002+10:00</published><updated>2012-07-02T21:09:46.558+10:00</updated><title type="text">Chrome, Firefox and chunky padlocks</title><content type="html">&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;For sometime now I have been using Chrome as my preferred browser. Once upon a time it was Firefox. But there's a few things about Firefox I dislike and this is one of them.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Some site, such as the New York Times, have a half-hearted implementation of HTTPS. I generally see this when someone who uses a tool like "HTTPS Everywhere" posts a link. The problem is that Firefox doesn't make it REALLY obvious that the https is a bit broken.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;You see the regular icon, and if you bother to click on it, you get a little warning.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-0XCLcYsUui8/T_F-prC4a8I/AAAAAAAAC8A/EEXAngSMdoo/s1600/fx_ny.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="97" src="http://4.bp.blogspot.com/-0XCLcYsUui8/T_F-prC4a8I/AAAAAAAAC8A/EEXAngSMdoo/s320/fx_ny.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Now, compare that to Chrome, which gives you a big chunky warning you have to accept.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dwHTWFeTcpc/T_F-vZcX5XI/AAAAAAAAC8M/9xiTIe9AGfo/s1600/c_ny1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="68" src="http://2.bp.blogspot.com/-dwHTWFeTcpc/T_F-vZcX5XI/AAAAAAAAC8M/9xiTIe9AGfo/s320/c_ny1.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: -webkit-auto;"&gt;And if you do accept it, you get a padlock with an 'x' on it, and a line drawn through the https text. This makes it obvious that it is broken.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-V9GgWTZSP_E/T_F-v0T-tWI/AAAAAAAAC8Y/hHdq8m90NfY/s1600/c_ny2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="67" src="http://2.bp.blogspot.com/-V9GgWTZSP_E/T_F-v0T-tWI/AAAAAAAAC8Y/hHdq8m90NfY/s320/c_ny2.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;When the https is okay, Firefox does give you the hostname but it isn't that great. Again, clicking gives you a bit more info.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-gzsqJF-nELM/T_F-xOyzmDI/AAAAAAAAC8c/28t7gtxwXBo/s1600/fx_gm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/-gzsqJF-nELM/T_F-xOyzmDI/AAAAAAAAC8c/28t7gtxwXBo/s320/fx_gm.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Chrome gives you the padlock icon and a whole bunch of techie details are just a click away..&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-iIyFIXdsAsU/T_F-ulledYI/AAAAAAAAC8I/ojW3UqhyjuE/s1600/c_gm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="264" src="http://4.bp.blogspot.com/-iIyFIXdsAsU/T_F-ulledYI/AAAAAAAAC8I/ojW3UqhyjuE/s320/c_gm.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=fQGGGlKYUsU:t81b3WcqCm4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=fQGGGlKYUsU:t81b3WcqCm4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=fQGGGlKYUsU:t81b3WcqCm4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=fQGGGlKYUsU:t81b3WcqCm4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/fQGGGlKYUsU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/5897358308582312574/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=5897358308582312574" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5897358308582312574" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5897358308582312574" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/07/chrome-firefox-and-chunky-padlocks.html" title="Chrome, Firefox and chunky padlocks" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-0XCLcYsUui8/T_F-prC4a8I/AAAAAAAAC8A/EEXAngSMdoo/s72-c/fx_ny.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-8462934453005675278</id><published>2012-04-29T10:29:00.000+10:00</published><updated>2012-04-29T10:29:31.249+10:00</updated><title type="text">Ever increasing priorities</title><content type="html">&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Inspired by a recent Martin Widlake &lt;a href="http://mwidlake.wordpress.com/2012/04/20/friday-philosophy-identifying-and-nullifying-fake-urgency/"&gt;post&lt;/a&gt;, I also have something to say about urgency.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;In most problem/incident management systems there is some 'priority' level. And all the ones I've met, count it the wrong way, by starting with "1" as the highest priority.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;The reason this is wrong is that, as anyone who has worked on the receiving end of such a system, there is always something that will trump the current highest priority.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;"1" should refer to the lowest priority item. A&amp;nbsp;typo&amp;nbsp;in the help text (or the use of the phrase '&lt;a href="http://mwidlake.wordpress.com/2012/04/22/rant-unique-means-unique-argh/"&gt;most unique&lt;/a&gt;'). The items that will never actually get fixed, but you record in the system just to let everyone know you are aware of the issue.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Then you work your way up to level 2 where the work might one day get done by some new guy as part of a learning exercise, but where it isn't something that is affecting the business in any material way. Actually a lot of issues at this level are trivial to fix, so if someone needs to 'get the numbers down' this is the place to target.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Level 3 should be the 'regular' work. In theory. In practice, you'll find most stuff at this level is actually level 2 items that have been pushed up because someone wants to see some progress. But also the hard stuff tends to sit here a long time as people argue over solutions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;My level 4 would correspond to what most systems class as urgent. The business expects all issues at this level to be actively being worked on by someone. If you have 20 issues at this level and 5 team members, this won't actually be the case though.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;This is where corporate politics gets involved, and who has the biggest influence. And this is why I recommend counting from the bottom up. Because as people start pushing their issues up, there is unlimited room for the priority levels to be increased. Levels 5 and 6 will quickly come into play. After a few months, someone will find a need for level 7. When people find out there is a level 7, the issues at levels 5 and 6 will be pushed up the rankings.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Don't settle for single digits though. You'll hit 9 within a year and then you'll need a high priority issue to make enough room for a level 10.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=vz8tSmc9ews:Ih1nzuK6h5Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=vz8tSmc9ews:Ih1nzuK6h5Y:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=vz8tSmc9ews:Ih1nzuK6h5Y:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=vz8tSmc9ews:Ih1nzuK6h5Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/vz8tSmc9ews" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/8462934453005675278/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=8462934453005675278" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/8462934453005675278" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/8462934453005675278" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/04/ever-increasing-priorities.html" title="Ever increasing priorities" /><author><name>Gary Myers</name><uri>https://plus.google.com/102181347552792364408</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-JOFVsyx3ZJg/AAAAAAAAAAI/AAAAAAAAFiA/50zwmhzrLro/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-4536789951171040335</id><published>2012-02-26T11:41:00.001+11:00</published><updated>2012-02-26T11:46:09.541+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">What are these dollar signs doing in my code ?</title><content type="html">I've had the good fortune, in my current role, to be doing a fair amount of PL/SQL development in 11gR2. Boy, it feels good to be actually using up-to-date versions. &lt;i&gt;Being picky, we are on Apex 4.0, rather than 4.1 but that's not a biggie.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;One item I've found myself using more and more are the $$PLSQL_UNIT and $$PLSQL_LINE &lt;a href="http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/fundamentals.htm#CHDIDJFE"&gt;inquiry directives&lt;/a&gt;. I think they are great for logging.&lt;br /&gt;&lt;br /&gt;Here's a handy example&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;create or replace procedure fizz_buzz as&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; for i in 1..15 loop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; if i/2 = trunc(i/2) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if i/3 = trunc(i/3) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dbms_output.put_line($$plsql_unit||'('||$$plsql_line||') - Fizz Buzz');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dbms_output.put_line($$plsql_unit||'('||$$plsql_line||') - Fizz');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; end if;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; elsif i/3 = trunc(i/3) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; dbms_output.put_line($$plsql_unit||'('||$$plsql_line||') - Buzz');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; dbms_output.put_line($$plsql_unit||'('||$$plsql_line||') - '||i);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; end if;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;end fizz_buzz;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When executed, you get a "poor man's trace" of the path the process takes through the logic.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;SQL&amp;gt; exec fizz_buzz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(13) - 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(8) - Fizz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(11) - Buzz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(8) - Fizz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(13) - 5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(6) - Fizz Buzz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(13) - 7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(8) - Fizz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(11) - Buzz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(8) - Fizz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(13) - 11&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(6) - Fizz Buzz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(13) - 13&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(8) - Fizz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;FIZZ_BUZZ(11) - Buzz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By automatically substituting in the actual program name (eg the package name) and the line, you don't have to worry that refactoring the code is going to mess up any debug or logging logic. &lt;i&gt;Refactoring is a fancy name for taking chunks of code and moving them into specialised procedures and functions so you can reuse them. Most developers do refactoring but may not know the name of it, or even that it has a name. Mostly you only need to know the buzzwords at interviews.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;So that is what those $$ directives are doing in my code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=cN0fi1_-31U:YYYoWjOmoGE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=cN0fi1_-31U:YYYoWjOmoGE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=cN0fi1_-31U:YYYoWjOmoGE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=cN0fi1_-31U:YYYoWjOmoGE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/cN0fi1_-31U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/4536789951171040335/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=4536789951171040335" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/4536789951171040335" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/4536789951171040335" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/02/what-are-these-dollar-signs-doing-in-my.html" title="What are these dollar signs doing in my code ?" /><author><name>Gary Myers</name><uri>https://plus.google.com/102181347552792364408</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-JOFVsyx3ZJg/AAAAAAAAAAI/AAAAAAAAFiA/50zwmhzrLro/s512-c/photo.jpg" /></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-2883449157149311423</id><published>2012-02-10T23:30:00.000+11:00</published><updated>2012-02-10T23:30:02.323+11:00</updated><title type="text">Why I don't (always) care if you follow me....</title><content type="html">This one is inspired by Jeff Smith's (yes, That Jeff Smith) post "&lt;a href="http://www.thatjeffsmith.com/archive/2012/02/why-i-dont-follow-you/"&gt;Why I don't follow you&lt;/a&gt;" post.&lt;br /&gt;&lt;br /&gt;I don't care if you follow me.&lt;br /&gt;&lt;br /&gt;Okay, that's not completely true. I hope you didn't stop reading then. What I really meant was that I don't expect all the people that I follow to follow me back.&lt;br /&gt;&lt;br /&gt;Here's why.&lt;br /&gt;&lt;br /&gt;I read a lot of blogs and articles to learn stuff I don't know about. I'll subscribe to RSS feeds and add people to my Google Plus circles if they write or link to 'quality' material. By quality, I mean stuff that I find interesting or useful.&lt;br /&gt;&lt;br /&gt;I write stuff here (occasionally, and will do an Oracle based one in the next day or too) and link to articles through Google plus. These are things that I think / hope other people may find interesting or useful.&lt;br /&gt;&lt;br /&gt;So I follow some people and some people follow me. Inevitably there will be some overlap when people are interested in the same topics. But there are some people who know far more about a topic than I do and won't learn anything new from my posts. Or they post on a topic which I 'consume but don't publish'.&lt;br /&gt;&lt;br /&gt;So I'm not offended if you don't follow me. Please don't be offended if I don't follow you.&lt;br /&gt;&lt;br /&gt;PS.&lt;br /&gt;Ongoing frustrations with Twitter mean that I've mostly replaced it by Google Plus.&lt;br /&gt;Contrary to what I've said here, if you circle me there and have something like 'DBA' in your profile, I will circle you back because I have a special circle for DBAs. As did Dante, I believe.&lt;br /&gt;&lt;br /&gt;I'm very flattered to be followed on Twitter, but I grew fed up of trying to twist sentences into something that is accurate and useful but still brief.&lt;br /&gt;&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=yX88AVjzgLM:blonDSbDLqE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=yX88AVjzgLM:blonDSbDLqE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=yX88AVjzgLM:blonDSbDLqE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=yX88AVjzgLM:blonDSbDLqE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/yX88AVjzgLM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/2883449157149311423/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=2883449157149311423" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/2883449157149311423" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/2883449157149311423" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/02/why-i-dont-always-care-if-you-follow-me.html" title="Why I don't (always) care if you follow me...." /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-2229769488326211644</id><published>2012-01-08T16:55:00.000+11:00</published><updated>2012-01-08T16:56:23.332+11:00</updated><title type="text">Crazy Crossovers</title><content type="html">&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="background-color: white; line-height: 18px;"&gt;Some months back, when it was in a 99c special offer, I added "&lt;a href="http://www.amazon.com/Pride-Prejudice-Zombies-Classic-Ultraviolent/dp/1594743347"&gt;Pride and Prejudice and Zombies&lt;/a&gt;" to my book collection. If you haven't heard of it,&amp;nbsp;Seth Grahame-Smith took most of Jane Austen's work (by now in the public domain) and added a zombie subplot.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br style="background-color: white; line-height: 18px;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="background-color: white; line-height: 18px;"&gt;Then about a month back, one of Google Plus's more popular contributors,&lt;/span&gt;&lt;span style="background-color: white; line-height: 18px;"&gt;&lt;a href="https://plus.google.com/u/0/109139639454066616071/about"&gt;Tessie L'Amour&lt;/a&gt;,&amp;nbsp;offered up the option of personalizing her (NSFW) books so that the purchaser could pick the names of the protagonists. That idea isn't new as I recall my parent getting me a personalised book when I was young. It involved a wizard who enjoyed peanut butter and had a magic sunflower. See, these things can stick with you !&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br style="background-color: white; line-height: 18px;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: 'Trebuchet MS', sans-serif; line-height: 18px;"&gt;Wanting to experiment with some &lt;a href="http://googleappsdeveloper.blogspot.com/2011/10/4-ways-to-do-mail-merge-using-google.html"&gt;Google Apps Mail Merging&lt;/a&gt;, I borrowed both concepts. Following the guide, what came out was a &lt;a href="http://www.sydoracle.com/sherlock-gets-personal"&gt;web-form&lt;/a&gt;&amp;nbsp;where you can enter the desired first and last names, plus an email address, and you get a personalised PDF of the first of the Sherlock Holmes short stories, "A Scandal in Bohemia". &lt;i&gt;A google search quickly found &lt;a href="http://www.firebox.com/product/2693/Personalised-Classic-Novels?aff=512&amp;amp;awc=550_1326001855_2e099b61a226fe387b8fac7bce9f7239"&gt;similar personalisation of other classic works&lt;/a&gt;.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: 'Trebuchet MS', sans-serif; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif; line-height: 18px;"&gt;This is the story where Sherlock meets the only woman he truly respects. The personalisation relates to the name of the woman (Irene Adler in the original), rather than Sherlock or Watson. I'd prefer an actual ebook format, but that looks a lot trickier. I've settled for sizing the PDF as A5 which makes it readable on my Kindle.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif; line-height: 18px;"&gt;I haven't (yet) included the original Sidney Paget pictures, though I suspect they will also be in the public domain by now. That may happen in future, but work beckons for tomorrow.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, sans-serif; font-size: x-small;"&gt;&lt;span style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=gRAfMcL5su4:LXu_ts766ms:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=gRAfMcL5su4:LXu_ts766ms:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=gRAfMcL5su4:LXu_ts766ms:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=gRAfMcL5su4:LXu_ts766ms:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/gRAfMcL5su4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/2229769488326211644/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=2229769488326211644" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/2229769488326211644" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/2229769488326211644" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/01/crazy-crossovers.html" title="Crazy Crossovers" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-4185462055515547832</id><published>2012-01-04T20:29:00.000+11:00</published><updated>2012-01-04T20:29:17.655+11:00</updated><title type="text">Playing with Google Plus</title><content type="html">&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;It's a Christmas break for me and I've been reviewing my social networking&amp;nbsp;commitments.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;I started by thinning RSS Feeds and Twitter load.&amp;nbsp;My main problem with Twitter was a lot of my subscriptions were US based and the timezone meant a poor fit for me. The feed often overflowed overnight, and relatively little would come up during the day.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;I'm shifting more to Google Plus. My initial experience echoes the "Quiet here, isn't it" which I saw mentioned a lot in the media. Luckily after persisting for a few days, I found some shared circles to import, and later someone else shared a circle with me of 500 Aussies.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;This is the first failing of Google Plus - unless you are following someone when they share a circle, you will miss it. That makes it hard to find a decent starting point.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;I have found Google Plus much more like Twitter than Facebook. If Facebook friends are people I'd invite over for dinner, Twitter and Google Plus contacts are a wider group of people I'd chat with in a&amp;nbsp;restaurant&amp;nbsp;or a pub.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Circles are a useful way to group people to read, similar to Twitter lists. For example, I have circles of writers, of Australians, of techies etc. They &lt;i&gt;can&lt;/i&gt; be useful in distributing some material to a limited audience, but I'd recommend posting most things to Public. There are items I'll only post to my Australian or Techie circles if I think it would 'pollute' my public flow with information that most people would find irrelevant.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;If there are some people I want to hear everything from, I put them in a specific circle and I can read everything in that circle. 'Noisy' individuals will go into a circle where I don't mind missing posts.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br class="Apple-interchange-newline" /&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;b&gt;Google Plus has a couple advantages over Twitter.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Firstly, comments are attached to a post which allows for a conversation to develop. I don't find Twitter conversations as usable (but maybe that's my client). In Twitter, I get a few disjointed messages if I don't follow everyone who is chatting, but I can see everyone who comments on a Plus post.&amp;nbsp;&lt;i&gt;Another failing of Google Plus is that when you re-share another person's post, it is hard for the recipient to get back to the original. As such, they'll tend to comment on the shared post not the original.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;By the way, when you comment on a post, you can't see who the post was shared with. That means you don't know who can see your comment. When in doubt, assume it is visible to everyone, including your boss, wife and mother.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Secondly, there's no 140 character limit. The posts can be fuller and include images and video. With Twitter, sometimes I get redirected through half a dozen URL shorteners to see a cartoon I read through someone else the day before.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;My gut feel is that Twitter has more to worry about from Google Plus than Facebook.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Migration from Twitter has few barriers. It wouldn't be hard for a client to integrate tweets into a Google Plus stream. It will be easy to pull out a list of who an individual follows for that integration. It will also be pretty easy to find accounts on Google Plus corresponding to those twitter accounts.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Tweets are ephemeral so no-one expects to maintain history.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Twitter doesn't have features likes games that contribute to the stickiness of Facebook.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;The content will be that bit richer on Google Plus than the forced brevity of Twitter.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Pay a few of the high-profile Tweeters to shift over, and you'll get some major traction. The biggest barrier is probably the 18 age limit on Google Plus, so Twitter might still maintain a place as a 'kiddie channel'.&lt;/span&gt;&lt;div&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Personally, I expect to abandon Twitter in the next 12 months.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;b&gt;The Minus about Plus&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;There's still a lot that is broken in Google Plus.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;I had a couple of fireworks photos on my phone from New Year's Eve and Android's "Instant Upload" took at least a day and a half.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Sometimes retrieving posts suffers from irritating lags. My guess would be that, even for Google, they still need to work on scaling.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Saying the API is half done would be generous. It doesn't allow posting so that means there are no practical third-party clients, and there's no way of automating posts (eg from an RSS feed). They shouldn't fix that until after they can guarantee the scaling.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;I'm still managing a &lt;a href="https://plus.google.com/u/0/116132019768637593422/about"&gt;primary&lt;/a&gt;&amp;nbsp;and '&lt;a href="https://plus.google.com/u/0/102181347552792364408/about"&gt;Google Apps&lt;/a&gt;' account because the merging is yet to materialize. I've also got a separate page for &lt;a href="https://plus.google.com/u/0/b/117671444215575295808/"&gt;SydOracle&lt;/a&gt; which I will have to think about.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Managing circle membership is cumbersome. It would be nice to have the ability to make some circles as public/shared and for them to show up on a profile.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;To a degree, it is still 'empty'. If your interest if photography or Android, you will be spoilt for choice. Other interests or hobbies may be less well represented.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Suggestions&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;If you are going to join Google Plus (or get deeper into it) I recommend the following :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Share or post a bunch of stuff over a week or so, and make it all Public. That way anyone looking at your posts will get some idea of who you are, what you are interested in etc. Sharing stuff through Google Reader works well for me. Sharing from the browser on my Android phone is less pretty.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Then build up a LONG profile. You can search profiles for key words (or twitter handles etc) so make sure that anyone looking for you can find you.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;When you put someone in your circles, they may put you in theirs. If they push some material only to particular circles, you want them to easily work out which of those might be appropriate for you.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Do some searches on things that interest you. If you find posts that interest you, add the author into an appropriate READ circle. See who they follow, and you may find some more people to add.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Read up on &lt;a href="http://sociologyplus.com/2011/09/24/section-6-finding-people/"&gt;this&lt;/a&gt; for finding people.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;If someone you have circled seems well-integrated, and your profile has been sufficiently engaging that they have added you, then you can send them the equivalent of a direct-message. Ask them if they have a circle of similar people they can share with you.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br class="Apple-interchange-newline" /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=OqviqDFXhDM:RzxwomNJwb8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=OqviqDFXhDM:RzxwomNJwb8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=OqviqDFXhDM:RzxwomNJwb8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=OqviqDFXhDM:RzxwomNJwb8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/OqviqDFXhDM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/4185462055515547832/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=4185462055515547832" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/4185462055515547832" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/4185462055515547832" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2012/01/playing-with-google-plus.html" title="Playing with Google Plus" /><author><name>Gary Myers</name><uri>https://plus.google.com/116132019768637593422</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-AcOvwFaIPPo/AAAAAAAAAAI/AAAAAAAAGLw/ZZQ9-kizUJE/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-1262180843261882218</id><published>2011-12-29T20:14:00.003+11:00</published><updated>2011-12-29T20:16:23.481+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">Newsflash - the replacement for the Oracle Support HTML interface will be....HTML</title><content type="html">Like many other Oracle peeps, I got an email telling me that the current Flash and HTML interfaces for My Oracle Support were to be replaced by a new snazzy ADF based UI.&lt;br /&gt;&lt;br /&gt;What has irked me is the way that some people have implied that the new interface won't be HTML.One example is the &lt;a href="http://oracleinfogram.blogspot.com/2011/12/oracle-priority-service-infogram-for-28.html"&gt;Oracle Infogram ("There's a new version of MOS in the works, not Flash and not HTML")&lt;/a&gt;, though I've seen similar (especially on Twitter which is admittedly constrained by the 140-character limit).&lt;br /&gt;&lt;br /&gt;Let's clarify this. Browsers mostly render HTML (though they deal with straight text, images, maybe video and some other stuff). Through plugins, they can do Flash or Java.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;But the new Oracle UI will be HTML&lt;/b&gt;. HTML spewed by a bunch of App Servers running Java and ADF, true, but still HTML. Going further, if you actually do a 'View Source' in the current HTML support application, right at the top it has&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;meta name="generator" content="Oracle ADF Faces"&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I don't know how much, if any, of the ADF layer of the current HTML application is being re-used for the new UI. They may well have done a complete throw-away and rewrite. But it isn't a novel technology stack being used here.&lt;br /&gt;&lt;br /&gt;Maybe this is nit-picky. I just had a horrible feeling that there might be some people out there in Oracle land (and, if I'm being blunt, I don't mean developers) who don't realise that Oracle Forms stuff is an exception and that the main web development paradigm consists of mid-tier code generating HTML (probably with lots of javascript too, but that's a separate issue).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=t9TN_NRIxgw:dINNyCSHLLA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=t9TN_NRIxgw:dINNyCSHLLA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=t9TN_NRIxgw:dINNyCSHLLA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=t9TN_NRIxgw:dINNyCSHLLA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/t9TN_NRIxgw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/1262180843261882218/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=1262180843261882218" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/1262180843261882218" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/1262180843261882218" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2011/12/newsflash-replacement-for-oracle.html" title="Newsflash - the replacement for the Oracle Support HTML interface will be....HTML" /><author><name>Gary Myers</name><uri>https://plus.google.com/102181347552792364408</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-JOFVsyx3ZJg/AAAAAAAAAAI/AAAAAAAAFiA/50zwmhzrLro/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-2463138303163616990</id><published>2011-11-26T10:38:00.001+11:00</published><updated>2011-11-26T10:54:38.549+11:00</updated><title type="text">DBMS_METADATA and hashed passwords</title><content type="html">In the wonderfully named "&lt;a href="http://oraganism.wordpress.com/"&gt;ORAganism&lt;/a&gt;" blog (don't try oragasm - it is used for something QUITE different)&amp;nbsp;Neil Johnson remarks on the &lt;a href="http://oraganism.wordpress.com/2011/11/23/dbms_metadata-get_ddl-and-select_catalog_role/"&gt;privilege requirements for DBMS_METADATA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I like DBMS_METADATA. In the old days, you had scripts that tried to re-engineer CREATE scripts from DBA_TABLES and so on. They were complicated and worked in &lt;i&gt;most&lt;/i&gt;&amp;nbsp;situations. DBMS_METADATA is much more powerful.&lt;br /&gt;&lt;br /&gt;One feature worth noting about DBMS_METADATA is that it can also extract details about users which can be handy in the post 11g world of Oracle.&lt;br /&gt;&lt;br /&gt;In 11g the PASSWORD column in the DBA_USERS returns null, rather than hashed version of the user's password as it did in 10g and earlier. That made it a lot harder to extract those password hashes from the database. There is some underlying SYS object that shows the hashes, but SYS objects are really tricky to access.&lt;br /&gt;&lt;br /&gt;DBMS_METADATA gives a backdoor to that information. Not to everyone, but it should be usable by 'regular' DBAs without jumping through hoops.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;select dbms_metadata.get_ddl('USER','GARY') a from dual;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;CREATE USER "GARY" IDENTIFIED BY VALUES 'S:8A9EA7B75F8899D7163336AD9D29F9019C0361518594E6984E1EF1C4EDB8;34BCEDBA9E0AB83F'&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;DEFAULT TABLESPACE "APEX_4875120311438442"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;TEMPORARY TABLESPACE "TEMP"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before you try to crack my password, don't bother. In my little home environment, it is the same as the username.&lt;br /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=YcV3_N7JgoI:q-i3_tAogNQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=YcV3_N7JgoI:q-i3_tAogNQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=YcV3_N7JgoI:q-i3_tAogNQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=YcV3_N7JgoI:q-i3_tAogNQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/YcV3_N7JgoI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/2463138303163616990/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=2463138303163616990" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/2463138303163616990" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/2463138303163616990" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2011/11/dbmsmetadata-and-hashed-passwords.html" title="DBMS_METADATA and hashed passwords" /><author><name>Gary Myers</name><uri>https://plus.google.com/102181347552792364408</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-JOFVsyx3ZJg/AAAAAAAAAAI/AAAAAAAAFiA/50zwmhzrLro/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-5206498418893995444</id><published>2011-11-18T19:00:00.000+11:00</published><updated>2011-11-18T19:00:09.193+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">Wish List IV - Read only and mean it</title><content type="html">Did you know that the SELECT privilege actually allows you to do a SELECT ... FOR UPDATE ? Yes, that means a user with just that privilege could lock an entire table.&lt;br /&gt;&lt;br /&gt;I want a SELECT_NOLOCK privilege. The user can still do a SELECT, but they cannot have a lock on the table. Okay, while an SQL is executing, I guess that get the shared table lock. But that's it.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=3h5h_2XRhjo:kXxVvcpHQeI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=3h5h_2XRhjo:kXxVvcpHQeI:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=3h5h_2XRhjo:kXxVvcpHQeI:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=3h5h_2XRhjo:kXxVvcpHQeI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/3h5h_2XRhjo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/5206498418893995444/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=5206498418893995444" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5206498418893995444" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/5206498418893995444" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2011/11/wish-list-iv-read-only-and-mean-it.html" title="Wish List IV - Read only and mean it" /><author><name>Gary Myers</name><uri>https://plus.google.com/102181347552792364408</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-JOFVsyx3ZJg/AAAAAAAAAAI/AAAAAAAAFiA/50zwmhzrLro/s512-c/photo.jpg" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-4027160406071674605</id><published>2011-11-17T19:00:00.000+11:00</published><updated>2011-11-17T19:00:09.067+11:00</updated><title type="text">Wish List IV - The Whole Truth</title><content type="html">This is another little annoyance that, I hope, would be a simple change.&lt;br /&gt;&lt;br /&gt;I want a column in USER_TAB_COLUMNS that tells me whether the object is a table or a view. Surely linking off to USER_TABLES to exclude views is an unnecessary burden.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=w0kRfVWswfg:Q_RkGaVWl94:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=w0kRfVWswfg:Q_RkGaVWl94:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=w0kRfVWswfg:Q_RkGaVWl94:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=w0kRfVWswfg:Q_RkGaVWl94:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/w0kRfVWswfg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/4027160406071674605/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=4027160406071674605" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/4027160406071674605" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/4027160406071674605" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2011/11/wish-list-iv-whole-truth.html" title="Wish List IV - The Whole Truth" /><author><name>Gary Myers</name><uri>https://plus.google.com/102181347552792364408</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-JOFVsyx3ZJg/AAAAAAAAAAI/AAAAAAAAFiA/50zwmhzrLro/s512-c/photo.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13265058.post-3242162832752340792</id><published>2011-11-16T19:00:00.000+11:00</published><updated>2011-11-16T19:00:09.282+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oradbpedia" /><category scheme="http://www.blogger.com/atom/ns#" term="oracle" /><title type="text">Wish List III - The Sequence Cometh</title><content type="html">This is another of those 'chores' for which every DBA and his dog has a script.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Copy a new version of a table from Test to Dev and then you have to recreate or adjust the associated sequence. My proposed syntax would be&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ALTER SEQUENCE blah_seq SYNCHRONIZE WITH blah_table (blah_column);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That would lock the table, get the highest value of 'blah_column' and reset the 'last_number' of the sequence to that value. Even better, retain the fact that the sequence has been synchronized with that table/column so there is some metadata about the relationship.&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=_1MGgXIciFg:D4Qj3vUO2ho:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=_1MGgXIciFg:D4Qj3vUO2ho:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?i=_1MGgXIciFg:D4Qj3vUO2ho:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SydneyOracleLab?a=_1MGgXIciFg:D4Qj3vUO2ho:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SydneyOracleLab?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SydneyOracleLab/~4/_1MGgXIciFg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sydoracle.com/feeds/3242162832752340792/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=13265058&amp;postID=3242162832752340792" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/3242162832752340792" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/13265058/posts/default/3242162832752340792" /><link rel="alternate" type="text/html" href="http://blog.sydoracle.com/2011/11/wish-list-iii-sequence-cometh.html" title="Wish List III - The Sequence Cometh" /><author><name>Gary Myers</name><uri>https://plus.google.com/102181347552792364408</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-JOFVsyx3ZJg/AAAAAAAAAAI/AAAAAAAAFiA/50zwmhzrLro/s512-c/photo.jpg" /></author><thr:total>2</thr:total></entry></feed>
