<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2170637149389736039</id><updated>2011-12-19T10:54:26.856-08:00</updated><category term='benefit'/><category term='indexes'/><category term='yacc'/><category term='single table hash cluster'/><category term='recovery'/><category term='system'/><category term='simpleoracledba'/><category term='frits'/><category term='cbo'/><category term='IOT'/><category term='connections'/><category term='demo edinburgh'/><category term='books'/><category term='security'/><category term='soa'/><category term='rac'/><category term='dba'/><category term='load'/><category term='simple'/><category term='sqldeveloper'/><category term='cloud'/><category term='conference'/><category term='v$ views'/><category term='links'/><category term='silo'/><category term='layer'/><category term='null'/><category term='oracle'/><category term='grid'/><category term='databases'/><category term='deadlocks'/><category term='ukoug'/><category term='clustered tables'/><category term='sql'/><category term='systems'/><category term='tips'/><category term='raptor'/><category term='continuity'/><category term='physical datamodel'/><category term='performance'/><category term='bitmap indexes'/><category term='blocksize'/><category term='backup'/><category term='sitemap'/><category term='presentations'/><title type='text'>Simple Oracle Dba</title><subtitle type='html'>In case of doubt: Simplify!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-8960660009534862956</id><published>2010-03-06T04:06:00.001-08:00</published><updated>2010-03-15T08:30:58.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='blocksize'/><category scheme='http://www.blogger.com/atom/ns#' term='dba'/><category scheme='http://www.blogger.com/atom/ns#' term='physical datamodel'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>multible blocksizes in an Oracle Database</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.interiordestiny.com/store/images/category/Block-Group.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 350px; height: 350px;" src="http://www.interiordestiny.com/store/images/category/Block-Group.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;In short: Not useful.&lt;br /&gt;&lt;br /&gt;More elaborated: Messy, waste of memory-space and admin-effort.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let me explain:&lt;br /&gt;&lt;br /&gt;I've come across this discussion again and I considered myself lucky that &lt;a href="http://hoopercharles.wordpress.com/about/" target="_blank" title="Quite a useful blog on Oracle DBA matters..."&gt;Charles Hooper&lt;/a&gt; has done all the research already.&lt;br /&gt;&lt;br /&gt;I'm summarizing his findings here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hoopercharles.wordpress.com/2010/01/31/faulty-quotes-5-block-sizes/" target="_blank" title="Multiple Blocksizes do NOT offer an Advantage"&gt;Multiple Blocksizes do NOT offer Any Proven Advantage.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The theory about more efficient indexes and better managed cache is good, and I dont deny there is good reasoning behind it. But in practice, having multiple blocksizes and multiple db-nK-caches doesnt make a difference.&lt;br /&gt;&lt;br /&gt;It is a waste of the extra (little bit of) work.&lt;br /&gt;&lt;br /&gt;And most likely, you end up wasteing cache-space because you hard-divide the cache space into chunks and you prevent the Oracle LRU-mechanism from utilizing all available cache as it sees fit.&lt;br /&gt;&lt;br /&gt;Of course, you may be the exception that proves the rule, and I would like to hear from you in that case, but until further notice, I'll stick with my motto:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Simple = Better.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-8960660009534862956?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/8960660009534862956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=8960660009534862956' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/8960660009534862956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/8960660009534862956'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2010/03/multible-blocksizes-in-oracle-database.html' title='multible blocksizes in an Oracle Database'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-2290519267638044309</id><published>2010-02-06T12:00:00.000-08:00</published><updated>2010-02-07T22:22:39.967-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='sqldeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='raptor'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>sqldeveloper - the swiss knife for Oracle.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.packtpub.com/oracle-sql-developer-2-1/book" title="SQLDeveloper, the book"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 310px; height: 310px;" src="http://images.ifguk.co.uk/products/1795/1795-large1.jpg " border="0" alt="SQL Developer is the Swiss Army Knife for Oracle Developers (and DBAs and other interested parties, for that matter)" /&gt;&lt;/a&gt;This post is about &lt;a href="http://www.oracle.com/technology/products/database/sql_developer/index.html" target="_blank" title="SQL Developer by Oracle, The main page right here..."&gt;SQLDeveloper&lt;/a&gt; and about &lt;a href="http://www.packtpub.com/oracle-sql-developer-2-1/book" target="_blank" title="Oracle SQL Developer, by Sue Harper, the obligatory link is right here..."&gt;"The Book"&lt;/a&gt; that introduces it.&lt;br /&gt;&lt;br /&gt;In short: Recommended. The book and the tool. &lt;br /&gt;&lt;br /&gt;Recommended for Newbies and experienced folk alike. &lt;br /&gt;&lt;br /&gt;Recommended for Developers, DBA's and other users of the database. &lt;br /&gt;&lt;br /&gt;Let me explain why.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Manuals are sooo last century.&lt;br /&gt;Remember the boxes that came with Oracle7 and Oracle8/i? &lt;br /&gt;(looks for picture of pallet)&lt;br /&gt;&lt;br /&gt;Then in Oracle 9, there was a CD with .pdfs. I've seen people consume a tree or two on that, and I'm guilty myself of selectively printing chapters to study on long-distance trains and put yellow-stickies on. Laptop batteries were brief in those days.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;I would be interested to know how many ppl dont carry books at all anymore, just .pdfs on laptops, e-readers or ipads [jokelink]. I have switched to laptop-reading for most manuals, but not for leasure-books. And the person who used to say: "From their bookshelf, I recognize the type of DBA/Developer" will have to flip through his customer's laptop or ipad to do an assesment"&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;Normally, I hestitate to recommend books to developers (or anyone) because there is a lot of rambling rubbish out there. Books tend to follow the hobby-horse of the author (at best), books may contains outdated information (a lot, given the pace of Oracle 7-8-9-10-11, the opt_cost_adj=120 and the go_faster=true|false come to mind). At worst, the information in books can be rampantly wrong. Notably Jonathan Lewis points out that you should be critical of &lt;a href="http://jonathanlewis.wordpress.com/2006/11/13/trust/" target="_blank" title="Jonathans warning about trust and information on the internet"&gt;information on the internet&lt;/a&gt;, the same caveat applies to the bookshop: Dont believe everything that is printed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.packtpub.com/oracle-sql-developer-2-1/book" title="Oracle SQL Developer by Sue Harper"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 246px;" src="https://www.packtpub.com/images/100x123/1847196268.png" border="0" alt="Oracle SQL Developer by Sue Harper, another link to the publisher ..."/&gt;&lt;/a&gt;But the SQLDeveloper book by &lt;a href="http://sueharper.blogspot.com/" target="_blank"  title="The blog of Sue Harper, for those of you who dont know: She is also the Product Manager of SQL Developer, she heads the team that built the tool."&gt;Sue Harper&lt;/a&gt; is one of the Good Exceptions.&lt;br /&gt;&lt;br /&gt;This is how a good introductory book should be. &lt;br /&gt;It simply presents the tool and all its possibilities.&lt;br /&gt;It doesnt impose a methodology. &lt;br /&gt;It doesnt try to convince you of anything.&lt;br /&gt;&lt;br /&gt;Like any truly good book, it allows you to do your own thinking.&lt;br /&gt;&lt;br /&gt;And it does a very good job of introducing the tool and its many possible uses. &lt;br /&gt;Check it out, and decide for yourself. You might be surprised.&lt;br /&gt;&lt;br /&gt;To get an impression: you can read the first chapter &lt;a href="http://www.packtpub.com/files/6262-oracle-sql-developer-1-5-sample-chapter-1-getting-started-with-sql-developer.pdf" target="_blank" title="SQLDeveloper, for Oacle and other databases. the chapter on how to get started."&gt;Here&lt;/a&gt; at the publishers website.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To the Newbie developer it is a good introduction, to the more seasoned SQL-Plus user (or users of other tools, for that matter) it is a good reference. &lt;br /&gt;&lt;br /&gt;As a die-hard command-liner, I will of course stick to my #$% prompts, but for those of you who have to be more productive, or who are forced off other tools for &lt;a href="http://pdvfirstblog.blogspot.com/2009/03/herding-toad.html" target="_blank" title="My Rant when the employer cut down on Toad usage...."&gt;cost-cutting reasons&lt;/a&gt; this book can help you on your road to &lt;a href="http://www.youtube.com/watch?v=FqR_p_KFNsw&amp;feature=related" target="_blank" title="Indians Jones and the Temple of Doom, I could not resist a link..."&gt;fortune and glory&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'd also like to mention that there is a trend: Sue is not the first oracle Product Manager to write a book, and I had already enjoyed the writing of &lt;a href="http://www.linkedin.com/pub/larry-carpenter/0/a27/34a" target="_blank" title="Product Manager of Oracle Dataguard"&gt;Larry Carpenter&lt;/a&gt; who runs the team that nurtured DataGuard into bloom. I can heartily recommend his &lt;a href="http://www.mcgraw-hill.com.au/html/9780071621113.html" target="_blank" title="Oracle DataGuard 11g Handbook"&gt;book&lt;/a&gt; as well. I have recently used that too, to convince  Customers/managers/leaders/victims/architects of the benefits of Dataguard (and soon to come: GoldenGate, running on a system near you). Larrys book was reviewd by &lt;a href="http://prutser.wordpress.com/2009/11/27/book-review-oracle-data-guard-11g-handbook/" title="Oracle Data Guard Handbook reviewd by Harold" target="_blank"&gt;Harold "Prutser" van Brederode&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A tip of the hat and a big "Thank You" to both authors for going through the process of writing those books!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-2290519267638044309?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/2290519267638044309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=2290519267638044309' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/2290519267638044309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/2290519267638044309'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2010/02/sqldeveloper-swiss-knife-for-oracle.html' title='sqldeveloper - the swiss knife for Oracle.'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-1367707194283596174</id><published>2009-11-30T03:19:00.000-08:00</published><updated>2009-11-30T03:57:09.255-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='simple'/><category scheme='http://www.blogger.com/atom/ns#' term='ukoug'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Tom Kyte at UKOUG on Complexity</title><content type='html'>&lt;a href="http://www.comptropolis.com/article/images_1/flintstones-car.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://www.comptropolis.com/article/images_1/flintstones-car.jpg" border="0" alt="That car may not have been as reliable tho..." /&gt;&lt;/a&gt;You all guessed it: I love &lt;strong&gt;simple&lt;/strong&gt; stuff.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;Must date back to the days I watched the Flintstones and Yogi Bear. Great Fun! Even my own kids, highscool-teenagers, already blogged about how their nostalgic primary-school days were refreshingly simple (and they have tons of jpgs to illustrate their memories).&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;Today, at UKOUG TEBS, Tom Kyte gave us loads of "Simple" and very good advice.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"We still underestimate complexity."&lt;/strong&gt;&lt;br /&gt;So why are some vendor-supplied products so complex?&lt;br /&gt;so why do we bespoke our own work to un-explainable levels of &lt;strike&gt;complexity &lt;/strike&gt; sophistication?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Less code is less bugs"&lt;/strong&gt;&lt;br /&gt;So why do we all increase footprints everywhere?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Errors will happen, prepare to handle them!"&lt;/strong&gt;&lt;br /&gt;So why do we still hide, ignore, or report errors erratically ?&lt;br /&gt;&lt;br /&gt;His security-message related to the Starship Enterprise is Brilliant!&lt;br /&gt;&lt;br /&gt;And his main message remains this very sensible:&lt;br /&gt;&lt;strong&gt;"Always Question Everything"&lt;/strong&gt; &lt;br /&gt;(including this anti-complexity rant)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I know, I know,&lt;br /&gt;we are not wearing bearskins anymore.&lt;br /&gt;we have even moved on from Cobol.&lt;br /&gt;&lt;br /&gt;Real world business isnt simple.&lt;br /&gt;And &lt;strike&gt;Real Appl.... oops &lt;/strike&gt; Real World Requirements are driving this unavoidable(?) complexity. &lt;small&gt;Not to mention that increasing complexity is part of my own job-seurity&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;But still, some of Toms messages were of Refreshing Simplicity.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://asktom.oracle.com/"&gt;Thanks Tom.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-1367707194283596174?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/1367707194283596174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=1367707194283596174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/1367707194283596174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/1367707194283596174'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/11/tom-kyte-at-ukoug-on-complexity.html' title='Tom Kyte at UKOUG on Complexity'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-7509389208747021665</id><published>2009-11-21T08:39:00.000-08:00</published><updated>2009-11-21T08:46:57.599-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='dba'/><title type='text'>simple oracle puzzle</title><content type='html'>&lt;a href="http://rafudb.blogspot.com/2009/11/invalid-procedure.html"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://lapelpinplanet.com/media2/img/catalog/CC372-Puzzle_Piece.jpg" border="0" alt="" /&gt;&lt;/a&gt;Invalid Objects ? &lt;br /&gt;Dependencies ?&lt;br /&gt;&lt;br /&gt;Couldnt resist pointing out this Oracle &lt;a href="http://rafudb.blogspot.com/2009/11/invalid-procedure.html" target="_blank" title="There is at least one solution... But mine wasnt very elegant or simple. It took me a minimum of 3 stmnts. Curious to see how it Should be done."&gt;puzzle by Rafu.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-7509389208747021665?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/7509389208747021665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=7509389208747021665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/7509389208747021665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/7509389208747021665'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/11/simple-oracle-puzzle.html' title='simple oracle puzzle'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-4832784346601359508</id><published>2009-10-30T07:44:00.000-07:00</published><updated>2009-10-30T11:16:33.531-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='v$ views'/><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='dba'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Performance Tuning with hit ratios - Risky.</title><content type='html'>&lt;a href="http://shanghaiscrap.com/wp-content/uploads/2008/02/leonardo21.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 156px; height: 175px;" src="http://shanghaiscrap.com/wp-content/uploads/2008/02/leonardo21.jpg" border="0" alt="The Ratio, as drawn by Leonardo da Vinci." /&gt;&lt;/a&gt;While he was sitting in front of a fireplace somewhere in New England, &lt;a href="http://mwidlake.wordpress.com/2009/10/30/friday-philosophy-how-many-consistent-gets-are-too-much/" target="_blank" title="After a discussion on Ratios. 380 is waaaay to much."&gt;Martin Widlake&lt;/a&gt; prompted this quicky-post. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;First my Confession: I still use "Ratios" in assessing and fixing performance.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I know current wisdom is that ratios and aggregated numbers are not good enough and should not be used in tuning. I agree that ratios can be abused, and can be hugely decepive. &lt;br /&gt;&lt;br /&gt;But when guestimating the &lt;b&gt;scalability&lt;/b&gt; or &lt;b&gt;performance&lt;/b&gt; of an OLTP database-application, I use these three numbers:&lt;br /&gt;&lt;br /&gt;Buffer-gets per row, 10 or less.&lt;br /&gt;Buffer-gets per execute, 100 or less.&lt;br /&gt;Buffer-gets per transaction, 1000 or less.&lt;br /&gt;&lt;br /&gt;&lt;small&gt;Martin will immediatly see why, IMHO, his result of 380 for the 1st or 2nd ratio was too  high.&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;I picked those numbers for several, &lt;a href="http://simpleoracledba.blogspot.com/2007/05/simple-oracle-dba.html" target="_blank" Title="Simplicity is the Ultimate Sophistication, if only more Architects understood..."&gt;Simple,&lt;/a&gt;, reasons. &lt;br /&gt;&lt;br /&gt;Firstly, these numbers are simple to remember.&lt;br /&gt;&lt;br /&gt;Secondly, these numbers can simply be determined. You can get them from v$-views, from traces, from AWR (Licensed), or from statspack (free!).&lt;br /&gt;&lt;br /&gt;Finally, these numbers (10, 100, 1000) have generally served me well in places where I looked into heavily loaded OLTP systems. I dont recall a single problem with any statement or transaction that managed to stay within those limits.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now be careful. Your situation will be different. And you should not strive for these numbers per-se, but rather for happy customers. And whether these numbers really are appropriate for you depends on the number of calls you do, the type of work your users/systems do, on the capacity of your hardware, and the demands placed on your system. Some systems operate comfortable with one zero added to each number.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;But if you need millisecond response times, or need to serve thousands of requests per minute, then my advice is: Strive for those numbers for every statement and transaction on critical the path.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Any query or transaction that consistently breaks one of those ratios, should be looked into. &lt;br /&gt;&lt;br /&gt;And if your system doesnt meet the numbers, there are &lt;b&gt;three fixes:&lt;/b&gt; &lt;br /&gt;You either &lt;b&gt;Eliminate&lt;/b&gt; the statements (just dont do it), &lt;br /&gt;&lt;b&gt;Optimize&lt;/b&gt; the offending statements (improve where-clause or indexes), or&lt;br /&gt;&lt;b&gt;Contain&lt;/b&gt; those statements (do it less frequent, and dont do it at peak-load periods).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;A further word of warning on the general danger of "Ratios" is appropriate.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Golden_ratio"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 126px; height: 200px;" src="http://upload.wikimedia.org/wikipedia/commons/a/a2/Greek_lc_phi.png" border="0" alt="Phi, or the Golden ratio of 1.6180... Maybe we should look for some relevant way to use that, just for fun." /&gt;&lt;/a&gt;We have had a clear demonstration, by Connor McDonald I think it was, that Hit-Ratios are not a good indicator for "performance". Connor was able to "set" the hit-ratio to whatever his manager wanted, with very little impact on performance [link?].&lt;br /&gt;&lt;br /&gt;Subsequent other performance specialists, notably &lt;a href="http://carymillsap.blogspot.com/" target="_blank" title="Famous for OFA and Method-R"&gt;Cary Millsap&lt;/a&gt;, have indeed proven beyond doubt that ratios and other "aggregate" metrics are not good indicators of performance.&lt;br /&gt;&lt;br /&gt;Back in the nineties, my colleagues and myself have used scripts based on numerous book (from the nineties...) to determine all sort of (hit)ratios for cache_size, shared-pool, redo en other settings. The ratios were derived by high-tech scripts we crafted, based on the books we bought. And from the nicely, SQL*Plus formatted, output we determined that we needed more memory, larger shared-pool, more redo-buffers or larger redo-files. &lt;br /&gt;&lt;br /&gt;In very few cases did those ratios point us to the real problem and in even fewer cases did the advice make any difference.&lt;br /&gt;&lt;br /&gt;In almost every case, the real solution came from B/Estat, tkprof, Statspack, AWR or ASH. And most of the time, we were brought straight to the heaviest query in v$sql. &lt;br /&gt;&lt;br /&gt;That query was then either made more efficient (less buffer gets per execute) or was eliminated (just dont do it). In 90% of cases, that solved the problem (and sometimes improved a few ratios as a by-product).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;My Conclusions:&lt;/b&gt;&lt;br /&gt;Most Ratios are indeed of little use - they do not address the real problem.&lt;br /&gt;But Some ratios can help you, if you know what you are doing (and if you know what your customer is trying to do).&lt;br /&gt;&lt;br /&gt;With or without Ratios, you still need to find out what your system does, and use common sense to fix it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'll save a few other examples of Ratios for later, notably one I use to find locking problems. I think Martin can already guess which one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-4832784346601359508?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/4832784346601359508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=4832784346601359508' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/4832784346601359508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/4832784346601359508'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/10/oracle-performance-tuning-with-hit.html' title='Oracle Performance Tuning with hit ratios - Risky.'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-5748214627499922588</id><published>2009-09-25T04:08:00.000-07:00</published><updated>2009-09-25T04:26:50.965-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='simple'/><category scheme='http://www.blogger.com/atom/ns#' term='system'/><category scheme='http://www.blogger.com/atom/ns#' term='dba'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Happy Birthday OFA</title><content type='html'>Cary Millsap from Method-R just reminded us that the OFA standard is now 14 years old.&lt;br /&gt;&lt;br /&gt;Check out his original post here:&lt;br /&gt;&lt;a href="http://carymillsap.blogspot.com/2009/09/happy-birthday-ofa-standard.html"&gt;http://carymillsap.blogspot.com/2009/09/happy-birthday-ofa-standard.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Good Thing about &lt;b&gt;Optimal Flexible Architecture&lt;/b&gt; was that it created a standardized way to install and maintain the Oracle (database) software stack.&lt;br /&gt;&lt;br /&gt;And in writing down OFA Cary used his meticulous, thorough approach. Every aspect of OFA was derived from a real "Requirement". And he paid special attention to Robustness and Maintainability. The configuration of Oracle software, and the life of the DBA became a lot simpler.&lt;br /&gt;&lt;br /&gt;Many DBAs owe Cary for writing up OFA!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-5748214627499922588?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/5748214627499922588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=5748214627499922588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/5748214627499922588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/5748214627499922588'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/09/happy-birthday-ofa.html' title='Happy Birthday OFA'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-3086669687693130615</id><published>2009-06-26T09:47:00.000-07:00</published><updated>2009-06-26T10:00:00.666-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frits'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Security done Right - Simple</title><content type='html'>In the middle of a bit of a roller coaster week, I attended the workshop from Frits Hoogland about &lt;a href="http://frits.homelinux.com/wordpress/" target="_blank" title="have a look at his blog.. I havnt found a good _working_ link to the presentation yet."&gt;"Oracle Security done Right".&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;There is of course a lot to be said (and written) about security and every situation will demand a tailored approach.&lt;br /&gt;&lt;br /&gt;But Frits laid down a relatively &lt;strong&gt;"Simple"&lt;/strong&gt; approach. &lt;br /&gt;He shows how to cover both accountability and auditability. &lt;br /&gt;&lt;br /&gt;A true "Trust but Verify" approacht. And &lt;strong&gt;Simple.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The approach merits a good look and during the workshop already there was some good discussion. &lt;br /&gt;&lt;br /&gt;It will not be the be-all-end-all of security, but it is a good start.&lt;br /&gt;A bit of criticism wont hurt. A discussion will probably make the approach better. &lt;br /&gt;&lt;br /&gt;Just remember: keep it simple. Please.&lt;br /&gt;&lt;br /&gt;And that is why I think his approach is worth some attention.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-3086669687693130615?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/3086669687693130615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=3086669687693130615' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/3086669687693130615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/3086669687693130615'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/06/oracle-security-done-right-simple.html' title='Oracle Security done Right - Simple'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-125163591326314894</id><published>2009-05-23T08:10:00.000-07:00</published><updated>2009-05-23T13:22:15.572-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IOT'/><category scheme='http://www.blogger.com/atom/ns#' term='clustered tables'/><category scheme='http://www.blogger.com/atom/ns#' term='single table hash cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Single Table Hash Clusters: Size Matters.</title><content type='html'>OK, so we know that in certain situations, with the right design, the right size-assumption, and the correct usage, a Single Table Hash Cluster seens to be the &lt;a href="http://simpleoracledba.blogspot.com/2009/05/oracle-single-table-hash-clusters-are.html" target="_blank" title="Single Table Hash Cluster is the Fastest way to a record... see earlier post"&gt;most efficient way&lt;/a&gt; to get to a row, using a single block get.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;I'll have to ask &lt;a href="http://richardfoote.wordpress.com/" title="the reference where oracle and indexes are concerned, and he takes the time and effort to explain it clearly"&gt;Richard Foote&lt;/a&gt; for confirmation on "the fastest way" as I still think that Index Organized Tables are very efficient indeed, and have less downsides. But since IOTs are B-tree indexes, they will result in 2 or more block-gets when the blevel increases. &lt;br /&gt;&lt;a href="http://simpleoracledba.blogspot.com/2007/05/index-organized-tables-iots-forgotten.html" target="_blank" title="Index Orgainzed Tables have Many Benefits and are greatly under-used. How are we ever going to find the bugs if nobody uses it... ?"&gt;IOTs&lt;/a&gt; are an old hobby of me, but they also nearly ended my career once. Complicated story. Some of you know it. Better not divulge.&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;I now want to know what happens if we get outside the "comfort zone" of an STHC. What if the well-intended design-assumptions about the number and the size of the records grow wrong. &lt;br /&gt;In both cases, I expect the hash-mechanism to become less efficient.&lt;br /&gt;&lt;br /&gt;Caveat: I can only test a limited number of cases, and will focus on the overflow-case. The case where too-many records end up in one block is harder to prove, as it will probably involve hash-collisions and extra CPU effort to retrieve a record. I'm lazy, and will focus on stuff I can prove with just &lt;strong&gt;simple&lt;/strong&gt; queries and the odd autotrace.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Recap&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Our initial STHC was created as a table with 64K records and an average recordsize of aporox 75 bytes. The original script to create it is still &lt;a href="http://www.hotlinkfiles.com/files/2531452_b8v0g/demo_sthc.sql" target="_blank" title="first demo of Single Table Hash Cluster, please use this to initiate any demo if you want to play along on our own sql prompt."&gt;here (demo_sthc.sql).&lt;/a&gt; It was developed on 10.2.0.3 (winXP) with an 8k blocksize.&lt;br /&gt;&lt;br /&gt;To play with sizing, and get a feeling for the storage-efficiency, I'll first do some sizing-reports to compare STHC to other options. I'm not worried about disk-storage (disk is cheap, innit?). But blocks in memory still take up valuable cache, and the reading, getting and scanning of blocks is still "work". Effort that can be avoided. Hence I always assume small (and Simple) is beautiful.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;To view sizes of objects, I use an auxiliary script &lt;a href="http://www." target="_blank" title="The size of segments is something I often want to see..."&gt;segsize&lt;/a&gt;&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;In the original &lt;a href="http://www.hotlinkfiles.com/files/2531452_b8v0g/demo_sthc.sql" target="_blank" title="top part of the script will re-create the objects, if you want to verify for yourself. And you will need the HEAP table to run the rest of the demo in this post."&gt;demo,&lt;/a&gt; the segements for heap, iot and cluster had the following sizes:&lt;br /&gt;&lt;hr/&gt;&lt;pre&gt;&lt;small&gt;TABLE_NAME    NUM_ROWS   BLOCKS empblck avgspc chncnt AVG_ROW_LEN COMPRES&lt;br /&gt;---------- ----------- -------- ------- ------ ------ ----------- -------&lt;br /&gt;HEAP            65,535      720      47    855      0          77 DISABLED&lt;br /&gt;IOTB            65,535                              0          79 DISABLED&lt;br /&gt;CLUT            65,535    1,014       9  2,886      0          78 DISABLED&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;SEGMENT_NAME            KBYTES   BLOCKS EXTENTS&lt;br /&gt;-------------------- --------- -------- -------&lt;br /&gt;HEAP                      6144      768      21&lt;br /&gt;HEAP_PK                   4096      512      19&lt;br /&gt;-------              --------- -------- -------&lt;br /&gt;Total for HEAP           10240    1,280      40&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IOTB_PK                  11264    1,408      26&lt;br /&gt;--------             --------- -------- -------&lt;br /&gt;Total for IOT            11264    1,408      26&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CLU                       8192    1,024      23&lt;br /&gt;CLUT_PK                   6144      768      21&lt;br /&gt;--------             --------- -------- -------&lt;br /&gt;Total for Cluster        14336    1,792      44&lt;br /&gt;&lt;br /&gt;&lt;/small&gt;&lt;/pre&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;The cluster I created for my first demo seems relatively large and inefficient compared to the heap-table with the same data, as it takes up roughly 30% more space. That was probably because I didnt care for the size- and hashkey parameters yet.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;All indexes are relatively large compared to their tables, due to the long and rather funny VC2 field that is the PK.&lt;br /&gt;&lt;br /&gt;If we replace the key-values with, say, &lt;code&gt;'abcd'||to_char(rownum)&lt;/code&gt; or a sequenced number(n) field instead of the spelled-out numbers, all segments and notably the indexes turn out much smaller. But my original "Business Case" has long-ish strings of format &lt;code&gt;AAAAnnnnnnnnn&lt;/code&gt; in a VC2 field as the PK (and search-criteria). GUID-strings of 64 hex-chars stored in a VC2 would be a comparable case.&lt;br /&gt;And now I'm stuck with this demo... &lt;br /&gt;&lt;br /&gt;btw: bad practice to store numbers in VC2 if you already _know_ they will be numbers, please dont. &lt;br /&gt;&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Setting the SIZE&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;My initial errors were to not specify SIZE and to specify the wrong nr of HASHKEYS, supposedly also leading to hash-collisions. &lt;small&gt;I'm a bit surprised nobody spotted it. But I guess there are not that many readers eh ?&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;I had already created the cluster with HASHKEYS 100, 200, 500, 1200 and 2000 and I still did not specify size (it is not mandatory, and I'm lazeeee). &lt;br /&gt;&lt;br /&gt;Go on, run the script &lt;a href="http://www.hotlinkfiles.com/files/2562031_70t6l/demo_sthc_hashkeys.sql" target="_blank" title="the experiment with various values of hashkeys... check the sizes at the end"&gt;(demo_sthc_hashkeys.sql)&lt;/a&gt; for yourself&lt;br /&gt;(At your own risk! Please dont sue me if it &lt;strike&gt;F***s&lt;/strike&gt; Cleans up your data...)&lt;br /&gt;&lt;hr/&gt;&lt;pre&gt;&lt;small&gt;SQL &amp;gt @http://www.hotlinkfiles.com/files/2562031_70t6l/demo_sthc_hashkeys&lt;/pre&gt;&lt;/small&gt;&lt;hr/&gt;(you did not have a table called &lt;code&gt;CLU01&lt;/code&gt; out there did you ?)&lt;br /&gt;&lt;br /&gt;From this, I found that Oracle allocated the storage (in extents of 64KB) such that the nr of blocks in the cluster was just higher then the nr of specified hashkeys. It seems to assume that one hashkey per blocks will be required &lt;br /&gt;(Question: Is this default behaviour when you omit the SIZE parameter? Consistent over all versions? Does this hold for all blocksizes? I dont know yet...).&lt;br /&gt;&lt;br /&gt;I now decided to do it by-the-book and specified SIZE and HASHKEYS. And my next script &lt;a href="http://www.hotlinkfiles.com/files/2562028_kvses/demo_sthc_75x64k.sql" target="_blank" title="SIZE and HASHKEYS for Single Table Hash Cluster now specified at supposedly right values..."&gt;(demo_sthc_75x64k.sql)&lt;/a&gt; would, I hoped, create a proper cluster ready to hold 64K records of 75 bytes each:&lt;br /&gt;&lt;br /&gt;Oh come on, run it! (at your own risk etc...)&lt;br /&gt;&lt;hr/&gt;&lt;pre&gt;&lt;small&gt;SQL &amp;gt @http://www.hotlinkfiles.com/files/2562028_kvses/demo_sthc_75x64k &lt;/pre&gt;&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;For those of you too lazy or too scared, part of it looks like this: &lt;hr/&gt;&lt;pre&gt;&lt;small&gt;CREATE CLUSTER clu ( key varchar2(78 byte) ) &lt;br /&gt;  SINGLE TABLE &lt;br /&gt;    SIZE 75&lt;br /&gt;HASHKEYS 65536;&lt;br /&gt;&lt;br /&gt;CREATE TABLE clut (&lt;br /&gt;  key            VARCHAR2(78 BYTE),&lt;br /&gt;  num_key        NUMBER,&lt;br /&gt;  date_modified  DATE,&lt;br /&gt;  padding        VARCHAR2(300 BYTE)&lt;br /&gt;, constraint clut_pk primary key ( key)&lt;br /&gt;)&lt;br /&gt;    CLUSTER clu ( key );&lt;br /&gt;&lt;/small&gt;&lt;/pre&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;And the allocated storage for the resulting (still-empty) cluster is ....:&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;pre&gt;&lt;small&gt;&lt;br /&gt;SEGMENT_NAME            KBYTES   BLOCKS EXTENTS&lt;br /&gt;-------------------- --------- -------- -------&lt;br /&gt;CLU                       5120      640      20&lt;br /&gt;CLUT_PK                     64        8       1&lt;br /&gt;---------            --------- -------- -------&lt;br /&gt;Total                     5184      648      21&lt;br /&gt;&lt;/small&gt;&lt;/pre&gt;&lt;hr/&gt; &lt;br /&gt;&lt;br /&gt;That 5 MB (in my case) is surprisingly close to that of the original heap-table (6 MB in my case). &lt;br /&gt;But also surprisingly close to 65535 x 75 = 4.8 MB. &lt;br /&gt;&lt;br /&gt;Will this pre-created cluster-segment contain sufficient free-space? &lt;br /&gt;And will it be able to cater for contingencies ?&lt;br /&gt;&lt;br /&gt;Let me insert the data... &lt;br /&gt;&lt;br /&gt;(if you had run the script at your own SQL-prompt, you would know all the answers by now...)&lt;hr/&gt;&lt;pre&gt;&lt;small&gt;SYSTEM @ DB10  &gt; insert into clut select * from heap ;&lt;br /&gt;&lt;br /&gt;65535 rows created.&lt;br /&gt;&lt;br /&gt;SYSTEM @ DB10  &gt; commit ;&lt;br /&gt;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SYSTEM @ DB10  &gt; &lt;br /&gt;SYSTEM @ DB10  &gt; analyze table clut compute statistics ;&lt;br /&gt;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SYSTEM @ DB10  &gt; set echo off&lt;br /&gt;&lt;br /&gt;SEGMENT_NAME                 KB   BLOCKS&lt;br /&gt;-------------------- ---------- --------&lt;br /&gt;CLU                        8192    1,024&lt;br /&gt;CLUT_PK                    6144      768&lt;br /&gt;&lt;br /&gt;&lt;/small&gt;&lt;/pre&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;Heeeey. &lt;br /&gt;After I inserted the same 64K rows, the cluster has increased in size to the same 8M size of my previously created cluster. &lt;br /&gt;&lt;br /&gt;Next time, I might as well create my STHC with a bit of contingency. And for further experimenting I will aim to create this particular cluster with SIZE 100 and HASHKEYS 80000 to end up with the correct size straight away &lt;a href="http://www.hotlinkfiles.com/files/2562061_v4rto/demo_sthc_100x80k.sql" target="_blank" title="The final create of my cluster..."&gt;(demo_sthc_100x80k.sql)&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;small&gt;One more time I will try to tempt you to run one of my scritps...&lt;br /&gt;(at your own risk, of course...)&lt;/small&gt;&lt;hr/&gt;&lt;pre&gt;&lt;small&gt;SQL &amp;gt @http://www.hotlinkfiles.com/files/2562061_v4rto/demo_sthc_100x80k&lt;/pre&gt;&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;This cluster is now finally created at the right size (space allocated) and if you ran the script (did you? on 8k blocks?) you can verify that it absorbed all the rows without growing. &lt;br /&gt;Supposedly, every row now really IS accessible by a single block get, and hash-collisions should be avoided. &lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;I did verify a few selects, similar to the ones in the previous episode and I did find the 1(one) consistent get again - At least that still worked ...&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Lessons from this so far:&lt;/strong&gt;&lt;br /&gt; - Pay attention to SIZE and HASHKEYS, and dont run with defaults here.&lt;br /&gt; - Even properly(?) specified parameters dont seem to suffice. Always Verify!&lt;br /&gt; - And (minor issue but...) my STHC still takes up more space then my heap-table.&lt;br /&gt;&lt;br /&gt;PS: I will not be surprised or offended if someone comes out and says: &lt;br /&gt;&lt;i&gt;That is all wrong, and it is very much different on this other system...&lt;/i&gt; Please do! &lt;br /&gt;Such is life with Oracle. &lt;br /&gt;And we may be able to learn something still.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the next experiment, I will try to overfill the STCH with data to see if any problems arise from that.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;It takes some bloody long train-journeys, and a significant follow-up to investigate all this obscure stuff. And all the searching leaves you with a feeling you know even less. &lt;br /&gt;Arcane stuff that nobody uses anyway.&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;hr/&gt;&lt;hr/&gt;&lt;br /&gt;Oh, btw, For those of you who want to set up a so-called mission-critical system where my demo-scripts would "accidentally" delete the data owned by your boss: &lt;br /&gt;You Do Run this stuff AT YOUR OWN RISK. Period.&lt;br /&gt;&lt;/strong&gt;&lt;hr/&gt;&lt;hr/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-125163591326314894?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/125163591326314894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=125163591326314894' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/125163591326314894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/125163591326314894'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/05/single-table-hash-clusters-size-matters.html' title='Single Table Hash Clusters: Size Matters.'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-5031037777470226838</id><published>2009-05-10T02:22:00.000-07:00</published><updated>2009-05-23T13:20:22.334-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='IOT'/><category scheme='http://www.blogger.com/atom/ns#' term='clustered tables'/><category scheme='http://www.blogger.com/atom/ns#' term='cbo'/><title type='text'>Oracle Single Table Hash Clusters are Faster.</title><content type='html'>&lt;div&gt;This post is about &lt;strong&gt;&lt;a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/hash.htm" target="_blank" title="Check the relevant manual here, although this feature is a bit under-documented and uder used"&gt;Single Table Hash Clusters.&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It is also about &lt;strong&gt;The Fastest way to get to 1 single Record of data.&lt;/strong&gt;&lt;br /&gt;I will try to prove that with a demo.&lt;br /&gt;&lt;br /&gt;This post (a bit of a rant, as usual) is prompted by several things:&lt;br /&gt;Prompted by &lt;a href="http://richardfoote.wordpress.com/" target="_blank" title="Mr Index"&gt;Richard Foote&lt;/a&gt; (Recommended reading), who justly argues that Every Block Get counts and who is on a mission to Educate us on the correct use of Indexes.&lt;br /&gt;Prompted by a few reactions to my &lt;a href="http://www.ukoug.org/calendar/show_presentation.jsp?id=9788"&gt;Endinburgh Presentation&lt;/a&gt; about (cost based-) optimized access to data. It all starts with good access-paths to your data.&lt;br /&gt;Prompted by a client with 24 CPUs in a database-server, trying to squeeze the last milliseconds out of 25 million (business-)transactions per hour. &lt;small&gt;(how many app-servers, JVMs and CPU's does it take to process 25 Million items per hour....?? - I don't want to divulge, but the numbers on the "estate" are multiples of 24...).&lt;/small&gt;&lt;br /&gt;Prompted by a good lunch-discussion with same client on IOTs and other nerdy but sometimes crucial optimizations (more material for posts and demos, thx J)&lt;br /&gt;&lt;br /&gt;In this particular case, the client had a requirement to (repeatedly??) check existence and/or content of a record based on PK-access. This particular data was relatively static (lookup-type data) and apparently only modified overnight.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;small&gt;There is also the need to check on certain values for de-duplication, and that is a different and more challenging matter. Such de-dup-data is modified (inserted) constantly, and needs to be purged based on time, hence "needs" another index. I might eleborate on that some other time.&lt;br /&gt;&lt;br /&gt;For the moment, I will also deliberately discard the possibilities of using &lt;a href="http://www.oracle.com/technology/oramag/oracle/08-jul/o48odpnet.html" target="_blank" title="A very Promising Feature, and I know at least one customer who Should look at this - Pete, Phill !!"&gt;SQL-resultset-caching&lt;/a&gt; by Oracle, or the option of Hash-map tables or other (indexed-)arrays cached by some Java component, or &lt;a href="http://www.oracle.com/technology/products/coherence/index.html" target="_blank" title="As recently appointed ACE, I must proclaim my loyalty to Larry...(bless him)"&gt;Oracle Coherence&lt;/a&gt;. All of those I consider usable, but much more complex and intrusive then a &lt;strong&gt;Simple,&lt;/strong&gt; well-designed database-solution.&lt;br /&gt;I am a data-beast after all.&lt;/small&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why (not) clusters...&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Single Table Hash Clusters can fetch a row with a Single Block Get. That beats any other method of access.&lt;br /&gt;&lt;br /&gt;&lt;small&gt;Of course, those who have read and understood the manuals, metalink, and various books on the subject already know all of this, and dont need to waste their time on here. But I see surprisingly few implementations of Clusters and IOTs ... &lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Normally, I shy away from using clusters because you need to know up front:&lt;br /&gt;1) How many records go into your tables (parents and children for multi-table clusters), and&lt;br /&gt;2) How big those records will be and&lt;br /&gt;3) For Hash-clusters, Critical access is on the clusterkey.&lt;br /&gt;Those three conditions are rarely met, and even more difficult to enforce over the lifetime of a system. But sometimes you get lucky.&lt;br /&gt;And if any of the Oracle Cluster-constructions is useful, my vote goes to Single Table Hash Clusters. Simple, Elegant and ... Fast!&lt;br /&gt;&lt;br /&gt;If you already know your theory about Single-Table-Hash-clusters, you dont need to read on. You know we will end up showing 1 single consistent get... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The DIY Demo&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The rest of the post will allow you yourself to demonstrate on your database how Fast Single Table Hash Clusters can be.&lt;br /&gt;&lt;br /&gt;Copy this into your SQL*Plus:&lt;br /&gt;&lt;br /&gt;SQL&gt; @http://www.hotlinkfiles.com/files/2531452_b8v0g/demo_sthc.sql&lt;br /&gt;&lt;br /&gt;Press enter a few times, and you can re-read the output in your own spool file...&lt;br /&gt;&lt;br /&gt;The script creates 3 tables; a heaptable, an IOT and a Single-Table-Hash-Clustered one. All tables are filled with the same 64K records. The Key is deliberately chosen to be a Varchar2 with funny distribution to resemble client case. And as it uses the Julian date 'JSP' format to generate spelled-out-numbers, your results may vary depending on your NLS settings. Any quirks or issues: send me a comment or a postcard.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;If anyone spots flaws in the demo: let us know in a comment or an email. My knowledge is only skindeep and errors are easily made. Nor am I as skilled in education as &lt;a href="http://jonathanlewis.wordpress.com/2008/07/13/sorted-hash-clusters/" target="_blank" title="He did touch the subject a few times."&gt;Jonathan Lewis&lt;/a&gt; or Tom Kyte. My original demo was only whipped up to show to an Architect. Getting stuff out ready for the dba-community-at-large is more work then I anticipated, and my knowlege on the subject of Clusters is not as deep as I wished.&lt;br /&gt;&lt;br /&gt;And if my demo-script fails you, check out the only other mention of STHC-with-demo that I recall seeing, by &lt;a href="http://www.rmoug.org/TD2007_Pres_Sum.htm#Senegacnik1" target="_blank" title="The rare occurences Single Table Hash Clusters on the internet also show it to be rather under-used"&gt;Joze Senegacnik here.&lt;/a&gt;&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;The demo uses on only 64k records as that was an amount I could test and re-test on my laptop in reasonable timeframes (10 seconds, I'm an impatient person). But it will work on Any size table, as long as the same conditions are met: knowing your data (numbers and size of records), and accessing on (PK-)equal condtion. Single Table Hash Clusters scale nicely.&lt;br /&gt;&lt;br /&gt;The demo script can be found Here: &lt;a href="http://www.hotlinkfiles.com/files/2531452_b8v0g/demo_sthc.sql" target="_blank" title="Save-as or run straight from SQL*plus..."&gt;demo_sthc.sql&lt;/a&gt;. It can be run with no modification in just about any schema able to create tables, indexes and clusters &lt;small&gt;(of course, I always log on as system, but I have tested on 9.2.0.8, 10.2.0.3 and 11.1.0.6...).&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Single table Has cluster is created like this:&lt;br /&gt;&lt;pre&gt;&lt;small&gt;&lt;br /&gt;create cluster clu &lt;br /&gt;( key         varchar2(78 byte) &lt;br /&gt;)&lt;br /&gt;single table&lt;br /&gt;hashkeys 1000;&lt;br /&gt;&lt;br /&gt;CREATE TABLE clut&lt;br /&gt;( key           VARCHAR2(78 BYTE),&lt;br /&gt;  num_key       NUMBER,&lt;br /&gt;  date_modified DATE,&lt;br /&gt;  padding       VARCHAR2(300 BYTE), &lt;br /&gt;  constraint clut_pk primary key ( key)&lt;br /&gt;)&lt;br /&gt;CLUSTER clu ( key );&lt;br /&gt;&lt;/small&gt;&lt;/pre&gt;&lt;br /&gt;&lt;small&gt;Note that the 1000 hashkeys I use is based on the fact that I cold fit approx 64 records in my 8K blocks, your results will vary if you use different blocksize or different size records. All those nitty-gritty details are part of why this is a rather nerdy and underused concept. Material for a follow-up here...&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;When the table is filled, I then fire some selects with a Key=value condition at the tables, and I use Autotrace to examine the 2nd execute of each query, like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;small&gt;&lt;br /&gt;select * from heap&lt;br /&gt;where key = 'FIVE HUNDRED'&lt;br /&gt;/&lt;br /&gt;set autotrace on&lt;br /&gt;/&lt;br /&gt;set autotrace off&lt;br /&gt;&lt;/small&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;So, How Fast is this thing ... ?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;(Did you run the demo in your own database yet... ?)&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;For a Single Table Hash Cluster, the result is 1 (one) Consistent get.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The result for a conventional heap table is 4 consistent gets. For an IOT it is 3 consistent gets (same index, but no table-access). And these numbers risk to increase by 1 if the blevel of the indexes goes from 2 to 3.&lt;br /&gt;&lt;br /&gt;That may not seem like a big improvement, but it happens to be 3 or 4 times less Logical IO then the alternatives. And if executed at 25-million/hr, that is still a significant saving in LIO.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;Of course, there is more to it. Such as the additional CPU-usage, chooseing the hash-key and guesstimating the size-value. And how does it perform when your data-volume unexpectedly explodes and it all goes horribly wrong.... &lt;br /&gt;I might re-run the demo a bit and experiment. I see a &lt;a href="http://simpleoracledba.blogspot.com/2009/05/single-table-hash-clusters-size-matters.html" target="_blank" title="Single Table Hash Clusters are a BIG, albeit somewhat arcane topic. There will be more then one sequel.."&gt;follow-up&lt;/a&gt; coming on the next long train journey.&lt;/small&gt;&lt;hr/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-5031037777470226838?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/5031037777470226838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=5031037777470226838' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/5031037777470226838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/5031037777470226838'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/05/oracle-single-table-hash-clusters-are.html' title='Oracle Single Table Hash Clusters are Faster.'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-9105145809513018588</id><published>2009-04-29T11:28:00.000-07:00</published><updated>2009-04-29T11:34:17.114-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='demo edinburgh'/><category scheme='http://www.blogger.com/atom/ns#' term='cbo'/><title type='text'>Edinburg and CBO Demos</title><content type='html'>I'm having some problems uploading my files to a server.&lt;br /&gt;bear with me.&lt;br /&gt;&lt;br /&gt;demo-scripts should be here soon:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.geocities.com/devisser_piet/presentations/embro.zip"&gt;HERE!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-9105145809513018588?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/9105145809513018588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=9105145809513018588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/9105145809513018588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/9105145809513018588'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/04/edinburg-and-cbo-demos.html' title='Edinburg and CBO Demos'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-309715444806335741</id><published>2009-04-23T11:38:00.000-07:00</published><updated>2009-04-23T12:12:28.066-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='null'/><category scheme='http://www.blogger.com/atom/ns#' term='simple'/><title type='text'>select count x with nulls</title><content type='html'>I came across this when trying to find why a query didnt work. And I was repeatedly assured it had always worked correctly. Of course it had always worked correctly, or rather, it had been made to work in a "satisfactory" way to the masters and callers that examined the output. &lt;br /&gt;&lt;br /&gt;So how come it suddenly refused to return the expected results? &lt;br /&gt;Surely this was a database bug ?&lt;br /&gt;&lt;br /&gt;Well, it wasnt the database at fault, nor was it the code at fault. The code in question was a roundabout way to check for existence or presence of a number of children for a set of parents. Not elegant either, mais soit.&lt;br /&gt;&lt;br /&gt;You can imagine that "the problem" did not occur immediately when the query was run in SQL*Plus, but we persisted, looking for the oddities and edge-conditions.&lt;br /&gt;&lt;br /&gt;When we findally found it, I whipped up a demo in SQL*plus to show the developers. I had to disguise (rewrite) the query to remove references to original table, and I simplified it. The original was a tad more complex (30+ lines..), with more bind-vars and the issue hidden in the middle of it. But the concept was the same.&lt;br /&gt;&lt;br /&gt;You can copy-paste the whole thing into SQL*Plus, provided you have scott/tiger with empt/depth.&lt;br /&gt;&lt;br /&gt;Go see for yourself.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;&lt;br /&gt;select_null.sql: &lt;br /&gt;  how you can acidentially not select a thing..&lt;br /&gt;&lt;br /&gt;You get the Idea: &lt;br /&gt;If you count empty strings, or NULLs, &lt;br /&gt;the result will be ... &lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;-- First we show accepted behaviour,&lt;br /&gt;-- you count records by selecting count('x'):&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;select count ('x') from dept ;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;-- And the following is an accepted (Oracle) quirk,&lt;br /&gt;-- and a known pitfall...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;select count ('') from dept ;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- But if the count is hidden in a subqry, &lt;br /&gt;-- and if the count is disquised with a bind-var,&lt;br /&gt;-- Suddenly; a lot depends on the bind-var ....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;variable x varchar2(10) ;&lt;br /&gt;&lt;br /&gt;exec :x := 'a' ;&lt;br /&gt;&lt;br /&gt;select :x as bindvar, d.* &lt;br /&gt;from dept d &lt;br /&gt;where ( select count (:x) &lt;br /&gt;        from emp e &lt;br /&gt;        where e.deptno = d.deptno &lt;br /&gt;      ) &gt; 0 &lt;br /&gt;/&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;-- and if the variable is empty...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;exec :x := '' ;&lt;br /&gt;&lt;br /&gt;select :x as bindvar, d.* &lt;br /&gt;from dept d &lt;br /&gt;where ( select count (:x) &lt;br /&gt;        from emp e &lt;br /&gt;        where e.deptno = d.deptno &lt;br /&gt;      ) &gt; 0 &lt;br /&gt;/&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;-- Be careful what you count for, &lt;br /&gt;-- you might get it...&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Remarks on a postcard in the comment dept.&lt;br /&gt;&lt;br /&gt;&lt;small&gt;NB: Does anyone have an established, and format-perserving way to present SQL-code in blogger? My stmnts seem to left-align whatever I do...&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-309715444806335741?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/309715444806335741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=309715444806335741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/309715444806335741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/309715444806335741'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/04/select-count-x-with-nulls.html' title='select count x with nulls'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-8809056932809289153</id><published>2009-03-18T11:48:00.001-07:00</published><updated>2009-03-23T10:03:19.460-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='simple'/><category scheme='http://www.blogger.com/atom/ns#' term='dba'/><category scheme='http://www.blogger.com/atom/ns#' term='physical datamodel'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='benefit'/><title type='text'>Simple lessons from the DBMS SIG</title><content type='html'>Crisis or not, there was a reasonably good turnout on the last DBMS Special Interest group this &lt;a href="http://www.ukoug.org/calendar/show_event.jsp?id=3949" target="_blank" title="UKOUG DBMS SIG.."&gt;Tuesday (17th March).&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;If you need to justify membership cost and time to attend SIGs like this, the one single item is probably Phil Davies from Oracle Support who talks you through the latest scary bugs. Some of those, I can almost recite by now, but I know full well how useful this horror-stories can be for project who are preparing to upgrade or migrate.&lt;br /&gt;&lt;br /&gt;The XPLAN presetation by &lt;a href="http://www.go-faster.co.uk/"&gt;David Kurtz&lt;/a&gt; was instructive, as there are still a few options in dbms_xplan that I plan to explore when time or necessity arise.&lt;br /&gt;&lt;br /&gt;For monitoring, the rapidly delivered presentation from &lt;a href="http://www.dsp-msp.co.uk/" title="this man talks like an F1 car, but still makes sense..." target="_blank"&gt;Jason Lester&lt;/a&gt; was refreshing. We all know what Grid Control can do by now, but there is always need for more, for different and for more customizable tools. I do not need to be convinced of the advantages of Open Source Software (I did a similar topic myself &lt;a href="http://www.nluug.nl/events/vj04/pictgall.html" target="_blank" title="now that is a loooong time ago, and in dutch.."&gt;in ... eeeh... 2004&lt;/a&gt;, for a different forum and I stil stand by that message). &lt;br /&gt;&lt;br /&gt;Although I have seen Zabbix (http://www.zabbix.org/) used more often then Nagios (www.nagios.org), I would like to add my own endorsement for any OSS or otherwise "independent"  monitoring tool.  You need some independent tool, next to GridControl and other vendor supplied solutions (openview still sprouts up everywhere - sure we use it if someone has paid for it, or enforced it onto us.)&lt;br /&gt;&lt;br /&gt;But quite often, for the actual, Real Application Monitoring we will also implement our own home-grown or OSS solution next to the GridControl. You generally need a tool where you can add/tweak your own monitoring, and that you can rely on to do (or build) the stuff that the commecial tools dont do, or dont want to do. And despite what the book, the courses, and the management say, any DBA or sysadmin worth his salt will DIY in this area. I am also still guilty of jotting up my own unix and sqlplus scripts in various situations. They will do Exactly what I need when I need it. Some of my unix/linux scripts have dates in them going back to 1994 (sad eh?).&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;Mental note: do a topic on "simple monitoring" sometime.&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;Pete Finnigan had his moment with explaining the uses and pitfalls of VPD (or is that RLS or FGAC? ... ). Always nice to hear &lt;a href="http://www.petefinnigan.com/bio/pete_finnigan.htm" target="_blank" title="I told him to clean up that office...."&gt;PXF himself&lt;/a&gt; explain (the lack of) security in his down to earth way. He keeps going on about security being a "layered" thing, and how adding more security can also itself against you if you dont do it properly and exactly Right. Well done, Cheers Pete!&lt;br /&gt;&lt;br /&gt;The cherry on the cake was &lt;a href="http://jonathanlewis.wordpress.com/" target="_blank" title="He seems to know absolutely everything about the CBO, and then some... And he can explain it!"&gt;Jonathan -scratchpad- Lewis&lt;/a&gt; explaining how Simple (and yet Complicated) the analysis of Statspack (aka AWR, if you have the budget) really is. &lt;br /&gt;Jonathan did a Great job of letting statspack-reports explain themselves, and with constant "challenging" and checking of his own assumptions.&lt;br /&gt;&lt;br /&gt;Key messages that I retained, somewhat biased by my own experience, were:&lt;br /&gt;&lt;br /&gt;1. Read from the top, get a feeling for overall functionality and the load of the system in hand. How much time, how many CPUs, how much memory and IO was used. Quite basic.&lt;br /&gt;2. Relate the work done, as shown in statspack, to the capacity of the underlying &lt;br /&gt;system: was the database challenging the hardware or not ? Is it a capacity problem or a single-user, single-application problem.&lt;br /&gt;3. Dont be afraid to ask questions. always.&lt;br /&gt;&lt;br /&gt;Jonathan refuses to "write the book" on statspack, with the excuse that there will be too much material to cover, and he is afraid to leave out items that are deemed critically important. My reply to him is along the lines of: &lt;strong&gt;Real Application Statspackreading is about common sense.&lt;/strong&gt;&lt;br /&gt;And if Jonahtan can convey some good messages in a 1 hour presentation, surely &lt;br /&gt;it must be possible to write a not-too-complex book to help the average &lt;br /&gt;reader out there in 90% of the cases? For the other 10% you can always hire a specialist.&lt;br /&gt;&lt;br /&gt;I become more and more tempted to write a few "simple" things about Statspack, the Real Fantastic CBO, and the blessings of proper physical design for Real Appliations. The book by Tom Kyte is all you really need (need link).&lt;br /&gt;Hm, will I too then get sucked into the wonderful CBO? (Real Application CBO; it gets it right most of the time... ) &lt;br /&gt;My next presentation maybe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-8809056932809289153?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/8809056932809289153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=8809056932809289153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/8809056932809289153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/8809056932809289153'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/03/simple-lessons-from-dbms-sig.html' title='Simple lessons from the DBMS SIG'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-271778922271712460</id><published>2009-03-06T03:46:00.000-08:00</published><updated>2009-03-07T10:23:53.750-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='v$ views'/><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='bitmap indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='deadlocks'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>deadlocks: get rid of the bitmap indexes</title><content type='html'>This one is for a certain Peter, he is a DBA at one of my customers.&lt;br /&gt;&lt;br /&gt;We had a problem: Deadlocks happening. Bitmap index.&lt;br /&gt;&lt;br /&gt;Users: Complaining, deadlock errors ... ??? &lt;br /&gt;we: That bitmap index is causing the deadlocks.&lt;br /&gt;Duhvelopers: But we NEED that index for job xyz, and others Might use it too.&lt;br /&gt;we: Sure, but that index is causing your deadlocks &lt;br /&gt;Users: still complaining!&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;Yes, we know &lt;a href="http://oracledoug.com/serendipity/index.php?/archives/1014-Being-Open-minded.html" target="_blank" title="Mostly code-logic, sometimes ITL-entries, and a bunch of nice bugs too complex to mentions. Doug was correct to say: Be Open Minded about deadlocks"&gt;there is more to Deadlocks&lt;/a&gt;, but this was the Bitmap!&lt;br /&gt;Peter is the DBA who &lt;em&gt;found&lt;/em&gt; Bug 6175584.&lt;br /&gt;And in the lenghty process of convincing metalink to &lt;u&gt;see&lt;/u&gt; that bug, he learned more about Ora-00060 then you will ever need - until version 11.2 comes along at least.&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;Anyway, this bitmap index...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQL&gt; Alter index monitor usage ;&lt;/strong&gt;&lt;br /&gt;Showed the index was indeed being used. But by whom ?&lt;br /&gt;Only by the one intended job or also by other more user-relevant queries?&lt;br /&gt;&lt;br /&gt;Peter, who is the local onsite-DBA where I am only a passing consultant, finally managed to convince the "architecs" and other title-bearers that the index should go.&lt;br /&gt;&lt;br /&gt;It went, and with it went the deadlock-error.&lt;br /&gt;General Performance also felt better.&lt;br /&gt;&lt;br /&gt;Apparently nobody but the batch job was using that index. &lt;br /&gt;Or if they did, it was not helping them.&lt;br /&gt;Problem Solved.&lt;br /&gt;&lt;br /&gt;Then &lt;a href="http://www.miraclebv.nl/index.php?option=com_content&amp;view=article&amp;id=54&amp;Itemid=15" target="_blank" title="Anjo, of YAPP fame, and now a Miracle-Director"&gt;Anjo Kolk&lt;/a&gt;, over a nice meal, mentioned he had seen something similar, and had it fixed while on his hand-free carphone.&lt;br /&gt;And I should have realized how simple it is to "prove" this case to the Architects.&lt;br /&gt;&lt;br /&gt;A Query like this:&lt;br /&gt;&lt;strong&gt;SQL&gt; select sql_id, object_name&lt;br /&gt;from v$sql_plan&lt;br /&gt;where object_name like '%STATUS_BMP';&lt;/strong&gt;&lt;br /&gt;Or a similar qry against the WRH$ table will show you immediately which statements have used a particular index ! &lt;br /&gt;&lt;br /&gt;Peter is off to check a few other indexes straight away.&lt;br /&gt;Kuddos to Anjo for pointing it out. Sometimes a &lt;u&gt;Simple solution&lt;/u&gt; is right under your nose. But it takes a nice "incident" to learn even simple lessons.&lt;br /&gt;&lt;br /&gt;As for the developers and architects who concoct it all: No hard feelings. After all, the Funtastic manual says bitmpas are for low-cardinality colums. And at least their tests had been really fast using "this bitmap thing". &lt;br /&gt;They had no bad intentions, and where would we be without their complex solutions and indexes eh ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-271778922271712460?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/271778922271712460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=271778922271712460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/271778922271712460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/271778922271712460'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2009/03/deadlocks-get-rid-of-bitmap-indexes.html' title='deadlocks: get rid of the bitmap indexes'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-1091484080174190602</id><published>2008-10-06T03:30:00.000-07:00</published><updated>2009-03-09T17:26:05.569-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yacc'/><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='layer'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='recovery'/><category scheme='http://www.blogger.com/atom/ns#' term='grid'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Backup and Recovery, at what level</title><content type='html'>Yes, this is &lt;em&gt;Yet Another Replication Discussion (YARD).&lt;/em&gt; &lt;br /&gt;&lt;br /&gt;Indeed, this beast seems to pop up all the time. Today’s trigger was a discussion with some architects on Disaster Recovery in a SOA environment. I’ll try to give it a nice twist, and I will  also keep my lunch-budget in mind.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;To the serious reader, this article is actually a DataGuard plug. &lt;br /&gt;But with all the buzzwords that spin around these days, this article can be seen as  Art: It makes you laugh, it makes you cry, it makes you THINK. &lt;br /&gt;And maybe those SOA/BEPL types do have some good ideas sometimes.&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;Marketing Tagline: &lt;br /&gt;With SOA and ESB, the DR-replication can move upwards in the technology stack. (and whatever the flavor of the month is:  Grid, anyone ? Cloud computing ? The sky is the limit!). &lt;br /&gt;&lt;br /&gt;&lt;em&gt;On an even lighter note: &lt;br /&gt;You should know the difference between an architect and a terrorist. It is at the bottom of this page. &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;(Health Warning: many buzzword-abbreviations ahead)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In most cases, I will advise anyone with HA (high availability) or DR (Disaster Recovery) plans to first consider a DG (DataGuard) construction. Replication of your data to a remote site offers many (documented and repeated) advantages:&lt;br /&gt;&lt;br /&gt;DG offers you an off-site backup (but you should still consider tape or disk backups!) &lt;br /&gt;&lt;br /&gt;DG gives you reporting on read-only-opened database (even better in 11g real time...)&lt;br /&gt;&lt;br /&gt;DG allows you to use the 2nd or 3rd site/system to do maintenance or upgrades (but be careful, you may want 3 or even 4 system in that case, but you can tick some very fancy uptimes in your SLA box).  &lt;br /&gt;&lt;br /&gt;As an alternative to DG, most organizations will consider using SAN technology for replication. A surprising number of organizations seem to mix the two to complicate life. &lt;br /&gt;&lt;br /&gt;Sideline: Some are even dreaming over sales-brochures (and some are entertained at seminars) on “stretched” clusters. When it comes to Oracle databases and RAC, these stretched-beasts are worth a separate story and a very carefully worded one indeed: I can’t kick powerful vendors/partners/colleagues, but I can’t put customers at risk either (?). Maybe Later. I have learned the hard way to Never criticize powerful vendors; it limits your lunch-invites. See bottom of page for lunch-items. &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;First on DataGuard&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Despite my own confidence in Physical Standby (and current limitations of LogicalStandby), Oracle seems to be moving towards Logical (SQL-apply) rather then Physical (Redo-apply). Because of the lesser ties between primary and replicas, “Logical” will offer more possibilities for maintenance and management. The logical replicas do not need to be physically compatible and can span different versions. A trend we can see with open-source databases as well: logical replication is conceptually more powerful then the redo-apply mechanism originally used in Oracle Standby.Dataguard would merit a whole blog all by itself, but I have a different point to make today. I’ll repeat what I said before: DG is a very good start to improve availability of your system. &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Now on SAN replication&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The other route chosen by many organizations is to “outsource” the replication to the SAN. The SAN system will take care of block level replication of all storage. Attractive, often simple to set up (just shout at the SAN engineers, they will click and drag until it works), and heavily advertised (and paid for). SAN replication is especially attractive if you have to replicate more then just your Oracle data, as is often the case. The main downside of SAN replication is the complete dependency on the SAN technology, the license cost, and the higher volume of data to be transferred (when comparing to Logical or Physical DataGuard). SAN replication works if you have sufficient bandwidth, low latency and capable storage engineers (not to mention the friendly smiling vendor). &lt;br /&gt;&lt;br /&gt;SAN replication and DG replication, if applied properly, can both be very powerful mechanisms. I recommend choosing the one you are familiar with (or get the best license-deal on) and stick with it. I would not recommend using both SAN and DG in an inter-dependent mix (a surprising nr of databases are indeed replicated by both concepts, and that tends to add to the confusion in case of recovery).&lt;br /&gt;&lt;br /&gt;For Oracle/RAC on stretched clusters: suffice say that you shouldn’t pay for this yet, but if the (hardware) vendors wants to demonstrate this at fancy locations/parties: do encourage them to invite you. The prices of this technology warrant a Business class ticket (with spouse, and partner-program organized). &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Coming to the point: The next alternative.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We now have a 3rd alternative: SOA-layer replication. To most of you this may be old news, or indeed an old concept re-worded: you are correct. Read on. And tell me how I got it all wrong when I became entangled in the latest hype without really understanding the concepts (or even knowing the jargon).  &lt;br /&gt;&lt;br /&gt;Stack-wise, I would situate SAN replication at the bottom of the technology stack (deep down in the infra-structure layer). And I would place DataGuard somewhat higher up in the stack (closer to the app-layer). Hold this layer-idea for a moment. &lt;br /&gt;&lt;br /&gt;Enter stage: the &lt;u&gt;Service Oriented Architecture (SOA)&lt;/u&gt; with the concept of an Enterprise Service Bus (ESB). Apart from the number of new abbreviations, what really struck me on SOA were the concepts of “above” and “below” the Layer (anyone read Tom Clancy in the nineties?). For some architects, the database is just a “service” that takes care of persistent storage. They are right (they are, after all architects). Google: “Database + ACID”, possibly add “Codd + rules + 13” for some very basic stuff on databases. They are correct; ACID-ity is the essence of a database. &lt;br /&gt;&lt;br /&gt;&lt;em&gt;Now think of replication for DR purposes as a means to store things in multiple locations, and possibly as a means to become technology-independent. And imagine a SOA request to store data to be sent not to a single service, but to two or more services. Borrowing from the DG concept: as long as more then 2 services have acknowledged storage we can consider that the data is safe.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The next level of "Replication", and one that the SOA crowd will understand!&lt;br /&gt;&lt;br /&gt;Following this line of thought, the storage layer becomes Yet Another form of the Grid Concept (YAGC?) or Yet Another Computing Cloud (YACC!). And the calling process doesn’t care anymore where the data is stored. Just as your GmailFS file system doesn’t know or care where the data is stored. It knows data is stored, and that is sufficient. (nerds and architects alike: take note of GmailFS, I’m really curious: is Gmail the ultimate ESB?). &lt;br /&gt;&lt;br /&gt;Like many architects that refuse to look “below the layer”, we can now state that we have a concept (eeh, a resource?) for replication and that this DR pattern is “Pure SOA” and “fully ESB compliant”. It even relates to “GRID” and will thus gain us brownie points in the Grid-Indexes of various partners (more links below).&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Myself, I will of course stick with Physical Standby for the moment. But it doesn’t hurt to explore the possibilities. A manager with some spare budget might even turn it into a seminar (with lunch, I would presume).  &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;The Relevant Links are&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(SQL&gt; select url from relvant_stuff order by credibility desc;): &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Dataguard and Oracle high availability (valuable stuff here):&lt;br /&gt;&lt;br /&gt;http://www.oracle.com/technology/deploy/availability/htdocs/DataGuardOverview.html&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Gmail fs (think about this one):&lt;br /&gt;&lt;br /&gt;http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SOA and ESB (…):&lt;br /&gt;&lt;br /&gt;http://www-128.ibm.com/developerworks/webservices/library/ws-soa-design1 &lt;br /&gt;&lt;br /&gt;http://www.managementsoftware.hp.com/products/soa/ds/soa_ds.pdf &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;More on Grid hype (…):&lt;br /&gt;&lt;br /&gt;www.hp.com/techservers/grid/index.html&lt;br /&gt;&lt;br /&gt;http://www.oracle.com/corporate/press/2005_apr/emeagridindex2.html &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Note for all Alliance Managers: take note of my cross-links to our “powerful partners”, and please keep me on the invite-lists, I do appreciate quality food, I’ll even tolerate the mail and spam for it.  &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;In the pipe-cleaning department or “mopping up loose ends”, I owe you these: &lt;br /&gt;&lt;br /&gt;Lunch: There is no such thing as a free lunch (unless you are the lunch). &lt;br /&gt;&lt;br /&gt;&lt;em&gt;Architects: The difference is that you can (sometimes) negotiate with the terrorists. &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Now shoot me (over lunch?).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-1091484080174190602?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/1091484080174190602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=1091484080174190602' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/1091484080174190602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/1091484080174190602'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2008/10/backup-and-recovery-at-what-level.html' title='Backup and Recovery, at what level'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-5043880623535817739</id><published>2008-08-08T03:33:00.000-07:00</published><updated>2009-03-07T08:25:20.277-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='connections'/><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='systems'/><category scheme='http://www.blogger.com/atom/ns#' term='load'/><category scheme='http://www.blogger.com/atom/ns#' term='continuity'/><title type='text'>throttling and Triage, where do I make my difficult decisions</title><content type='html'>Every now and then the discussion about the "processes" parameter flares up.Setting this parameter too low results in ORA-00020 "maximum number of processes 1024 exceeded", but too high a setting will strangle the database-server with processes. &lt;br /&gt;&lt;br /&gt;My favorite application manager always wants me to increase the number of processes. For an app-server and for its end users it is bad publicity if ORA-00020 appears in a java-logfiles or even in front of a (web-based) customer (now who is to blame for that type of error handling ??). Hence the knee-jerk reaction to increase the "processes" parameter in the spfile. This demand is often accompanied by the assurance that the application will never (actively) use the high number of connections, but needs the high number to make very sure the error never will (re)appear. &lt;br /&gt;&lt;br /&gt;App-jockeys and managers generally refuse to take responsibility for setting or decreasing the upper-limit on the nr of connections in their JDBC connection pool. Some of the more exotic app-servers don’t even respect their own settings, and happily explode the nr of connections to something in the 4-digit range per app-server-instance.&lt;br /&gt;&lt;br /&gt;Luckily, these app-servers will generally melt down by themselves, and that saves us from a database-brownout with more disastrous consequences. DCD or active killing then has to take care of the remaining connections, and preferably before the clusterware (automatically, unstoppable) or the operators (eager to stay within SLA) fire up the next application server who will also need to initiate his JDBC pool, hence needs the connections. &lt;br /&gt;&lt;br /&gt;However, if we are unlucky, the app-server doesn’t melt down, and the database hits the max-processes, whereby other app-servers with genuine need increase connections will also suffer. Not Good.And one reason why pools should be conservative in changing their number of connections.  &lt;br /&gt;&lt;br /&gt;For the DBA, it makes sense to set the parameter to a value whereby the database can still operate "normally". Allowing too much processes, even inactive or near-dead ones, makes no sense and consumes unnecessary server-memory, sockets and cpu-cycles.Database and Unix zealots should now pop in and say that the processes-parameter controls many more derived values (transactions, sessions, enqueue_resources) and therefore requires careful consideration than just the shouting of the deployment team. I will stop there by saying: too high a setting is simply not beneficial. Vision the number of CPU’s in your system, and imagine the overhead of keeping a high number of processes alive, whether you use PGA and Workload parameters or not. (I can se a whole set of nerdy comments coming: Fine! As long as we agree on this: processes should be set lower, rather then higher, small is beautiful).  &lt;br /&gt;&lt;br /&gt;In a legacy Client-server environment, it often makes sense to use shared-server or its predecessor MTS (Multi Threaded Server). The shared-server construct is ideal to handle a large load of relatively quiet connections. As the "clients" in C/S are often unaware of each others workload and existence, it is the database that needs to take on the job of sharing (pooling, queuing) the connections. Note that MTS or Shared-Server is equal to pooling connections on the database-server. Do we want the database-server to be busy juggling connections? (IMHO: only if we have no choice, but in C/S, the Shared server can make sense). &lt;br /&gt;&lt;br /&gt;In a J2EE environment, it makes more sense to use dedicated connections. Each call to the database should be handled Fast and the connection should be made available for the next thread that needs it.The database should ideally focus on doing its ACID task, and not be bothered with load- or connection-sharing. The Connection-pool can handle that. The JDBC pool mechanism is the component that should limit the number of connections and take care of the throttling. A JDBC pool should ideally open its maximum (=optimal) number of connections and keep those open, as the creation of a new connection takes time (when in a hurry, you can’t afford to wait for a new connection to be opened up). Provided the nr of processes (connections) is not allowed to go over a workable limit, there is no reason why each connection-pools should not be allowed to pre-create a fair number of connections. But the upper limit should be firmly set to a value where both the app- and the database server can still operate efficiently. &lt;br /&gt;&lt;br /&gt;Allowing too many connections under increasing load will result in degraded performance, and worse, in a meltdown of the instance. If that happens, everybody suffers, and not just the last-clicked-user. &lt;br /&gt;&lt;br /&gt;Two common causes for high numbers of connections are generally: &lt;br /&gt;&lt;br /&gt;Transactions take too long (performance or locking problems, improper use of XA), or &lt;br /&gt;Connections not released back to the pool (sloppy coding or just plain bugs) &lt;br /&gt;Therefore, it makes good sense to include connection-count and connection monitoring in the test-plans, and to monitor (count, plot) connections during live operations. My strategy is to always set processes to a conservative value. I use it protect my database against brownout and meltdown.It is up to the Java (or other app-level components) to use the number of available connections to the best extend, and to provide an error-handling or throttle-mechanism to handle overload.  &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The approach in short: &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Determine how many connections the DB can server while maintaining reasonable response-times.  &lt;br /&gt;Set that as max-processes.  &lt;br /&gt;Tell your app-servers to stay within the limit (and use max-pool-size).  &lt;br /&gt;Monitor the session-high-water limit (does it ever approach the max?)  &lt;br /&gt;Do spot-counts of connections (and plot them over time)  &lt;br /&gt;Audit-session to know where they come from (find the origin of high numbers).  &lt;br /&gt;Bottom line: a surge in traffic should not be allowed to cause melt-down of the database. High volumes should be throttled higher up in the stack (load balancers, web-servers, app-containers). &lt;br /&gt;&lt;br /&gt;If the throttling mechanisms are absent, or are not working then I think the database has a legitimate need to keep processes to a reasonable value. Potentially a difficult decision, but someone has to take it. Triage can be painfull, but there is a good reason to do it. The survival of the system can depend on it. &lt;br /&gt;&lt;br /&gt;Admittedly, this is a very db-centered  approach. Waiting for some debate from the app-guys now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-5043880623535817739?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/5043880623535817739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=5043880623535817739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/5043880623535817739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/5043880623535817739'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2008/08/throttling-and-triage-where-do-i-make.html' title='throttling and Triage, where do I make my difficult decisions'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-167644625061286696</id><published>2007-12-11T06:10:00.000-08:00</published><updated>2009-04-08T06:12:30.300-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='simple'/><category scheme='http://www.blogger.com/atom/ns#' term='ukoug'/><category scheme='http://www.blogger.com/atom/ns#' term='dba'/><title type='text'>UKOUG 2007 Conference - the Lessons.</title><content type='html'>&lt;p&gt;Finally, I can offload some of  my UKOUG  stuff.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.ukoug.org"&gt;&lt;img style="float:left; margin:0px auto 10px;cursor:pointer; cursor:hand;" src="http://www.ukoug.org/assets/img/mast_logo.gif" border="0" alt="The UK Oracle User Group... go say hi to them..." /&gt;&lt;/a&gt;First the Budget-justification (management is reading - sometimes). Like every year, I can justify visiting UKOUG as a training cost. I have learned more in four days UKOUG then I would have on just about any (Oracle) course and have saved my employer some money at that.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;By taking the time to see other &amp;#8220;users&amp;#8221;, I have picked up some interesting new notions and ideas. Not to mention how a particular colleague has found a way to save a large, high-profile project some significant money. Money that a Large vendOR or some partner-reseller would gladly have pocketed.&lt;br /&gt;&lt;br /&gt;In other words: information that would probably not have been spelled out clearly in a &amp;#8220;commercial&amp;#8221; course.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The hint is in &lt;strong&gt;Lesson 1:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sometimes the best way of doing something is to &amp;#8230; Not do it at all.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;(going back, I think to Dave Ensor, possibly further).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Enough messages to management now, on with the real stuff.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;CERN: Testing the limits.&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.cern.ch"&gt;&lt;img style="float:right; margin:0px auto 10px;cursor:pointer; cursor:hand;" src="http://public.web.cern.ch/Public/Objects/Common/CERNLogo.gif" border="0" alt="" /&gt;&lt;/a&gt;The CERN guys were impressive. As with the CERN-physics, They are going places with the software were some of us may follow in a few years time. Others may never have to go that far, but we can all benefit from their experience.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;What sets them apart is not only their pioneering and their IT-skills. They also have the urge, the liberty (and the duty?) to share their knowledge freely.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;They had some interesting experiences with RAC, Clustering, Scaling, en software distribution. They notably had some gentle criticism on the deployment-process of the software. See the presentation on &lt;a href="http://conference.ukoug.org/default.asp?p=685&amp;#038;dlgact=shwprs&amp;#038;prs_prsid=1618" title="Philippe Defert on Installing Oracle on hundreds of servers..." target="_blank"&gt;RPM-ing Oracle&lt;/a&gt; that was particularly in my line of reasoning.&lt;br /&gt;&lt;br /&gt;An RPM or similar distribution, paired with a re-vamped OFA would make our favORite software much more manageable (Those who saw my &lt;strike&gt;rant&lt;/strike&gt; presentation this year know why).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The input from CERN can be very valuable to many organizations (commercial and others) out there. They fact that they can present this at the conference is another demonstration of the useful role that UKOUG has in knowledge transfer.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;CERN employees can be quite open and can share their experience more easily then commercial users with competitors listening. They can also more easily and openly criticize the vendor then commercial consultants are able to. Most &amp;#8220;independent partners&amp;#8221; both large and small, will always remain&lt;br /&gt;&lt;br /&gt;&amp;#8220;diplomatic&amp;#8221; towards the dominant party, as they need the business and revenue that is benignly handed down to them (and can be taken away on bad-behavior).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Meanwhile, CERN is a highly visible, and hopefully &amp;#8220;independent&amp;#8221; user of the product. It is possibly one of the very few large customers to which oracle might sometimes listen.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Lesson 2: Criticism is Good.&lt;br /&gt;&lt;br /&gt;Events like this, allow for some constructive criticism towards the vendor.&lt;/strong&gt; Criticism that would otherwise mostly get lost in the &amp;#8220;commercial&amp;#8221; &lt;strike&gt;spin&lt;/strike&gt; processes. It is my own belief that this criticism can make the product more competitive. And ultimately, both the vendor and the user-community will benefit.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Other presentations: Many Good ones&amp;#8230;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I cannot resist mentioning how Michael Doherty confirmed my opinion:&lt;br /&gt;&lt;br /&gt;Keeping a system &amp;#8220;Up&amp;#8221; is &lt;a href="http://conference.ukoug.org/default.asp?p=685&amp;#038;dlgact=shwprs&amp;#038;prs_prsid=1770" target="_blank" title="Upgrading RAC, by Simplyhealth"&gt;never Simple&lt;/a&gt; (as we would like it to be simple&amp;#8230;)&lt;br /&gt;&lt;br /&gt;We can keep trying though.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Lesson 3: Simplicity is Always better!&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;There are many more memorable presentations I want to mention, but they will have to wait until the next installment. The good topics range from &amp;#8220;disater recovery&amp;#8221;, use of streams (aka logical standby), all the way to various RAC-internals and ASM. And of course the inevitable topics on optimization and CBO (which I keep attending, because of course we have been bitten by CBO, again).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Hm, tempted to insert a semi-funny &lt;strong&gt;CBO lessons&lt;/strong&gt; here:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4a) CBO is never wrong, but your design/code/sys-statistics/seg-statistics/data/hints/outlines can be very Very VERY wrong&amp;#8230;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;But there is hope:  According to &lt;a class="url" href="http://jonathanlewis.wordpress.com/" title="Oracle Scratchpad. Recommeded for CBO and other useful information.  But pay Close Attention. Fundamental is not the same as Simple." target="_blank"&gt;Jonathan Lewis&lt;/a&gt;, commenting on the unpredictable behavior of CBO, notably on upgrades, and on the feeble attempts by mere mortals to use hints or otherwise control the beast:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4b) &amp;#8220;Sometimes, you Can get lucky.&amp;#8221;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Before pressing the publish-button, I specifically wanted to insert two &amp;#8220;Thank You&amp;#8221; items.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;First a &amp;#8220;Thank You&amp;#8221; to &lt;a href="http://oracledoug.com/serendipity/index.php?/archives/1367-UKOUG-Days-Three-and-Four.html" title="scroll down to see Dough on Stage..." target="_blank"&gt;Dough Burns&lt;/a&gt; for &lt;a href="http://conference.ukoug.org/default.asp?p=685&amp;#038;dlgact=shwprs&amp;#038;prs_prsid=1314" target="_blank" title="here is the abstract of Doughs presentation..."&gt;reviving OFA.&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The old, rather boring workhorse of OFA was conceived by Cary Millsap and put to Good use in Oracle versions 6, 7 and 8. It even became part of the official oracle distribution.  Dough has now made it his mission to re-educate the world about how sensible &lt;a href="http://www.hotsos.com/e-library/abstract.php?id=19" target="_blank" title="And here is The OFA paper from Hotsos"&gt;good OFA practices are.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It doesn&amp;#8217;t seem to matter that Oracle still has OFA in as part of their manuals, and even as part of their default installations. This standards still seems to get both ignored and abused by many. Visit Dough for more.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;And have a read of the presentation by &lt;a href="http://conference.ukoug.org/default.asp?p=685&amp;#038;dlgact=shwprs&amp;#038;prs_prsid=1433" target="_blank" title="The perspective of an Industrian Engineer: Efficiency!"&gt;Robyn Sands.&lt;/a&gt; Same problem, different angle. Interesting. As I have hinted in my own presentation, OFA can also do with a bit of good attention. Maybe we should make some suggestions to Oracle.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Finally, a humble &amp;#8220;Thank You&amp;#8221; to those who sat out my own disastrous presentation. I&amp;#8217;m sure they had fun seeing me sweat when the equipment didnt work as expected. Plan A failed. Plan B failed.. Improvise!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;As a final lesson, &lt;a class="url" href="http://pdvfirstblog.blogspot.com/2007/12/laptop-again.html" target="_blank" title="Disaster recovery, by any other name..."&gt;here&lt;/a&gt; is a more detailed account of what (nearly) went wrong. But I basically had to do the first 10 minutes without slides.&lt;br /&gt;&lt;br /&gt;The ICC technician saved the day. He deserves a medal.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I think everybody picked up the last lessons there:&lt;br /&gt;&lt;br /&gt;Do not go head-first with the latest + greatest versions. Or if you do: Test Properly, Test again, and be very, very prepared.&lt;br /&gt;&lt;br /&gt;And to survive disasters:  Prepare (have backups and standbys), prepare (have more copies), prepare (document), and prepare further (test)&amp;#8230;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-167644625061286696?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/167644625061286696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=167644625061286696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/167644625061286696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/167644625061286696'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2007/12/ukoug-2007-conference-lessons.html' title='UKOUG 2007 Conference - the Lessons.'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-3861728304669373034</id><published>2007-11-16T03:27:00.000-08:00</published><updated>2009-03-07T08:22:00.048-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rac'/><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='silo'/><category scheme='http://www.blogger.com/atom/ns#' term='system'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Databases and Systems, what kind of Relation.</title><content type='html'>Over the years, I’ve had several interesting discussion on the relationship between “databases” and “systems”. It comes down to this: Should there be many databases on a single system (m:1, the traditional approach), or should there be many systems underneath one database (1:m, grid)? And when is 1:1 appropriate?&lt;br /&gt;&lt;br /&gt;Current hardware is powerful enough to allow “supernodes” that can run hundreds of databases. We are also confronted with Virtualization or “carve-up” of hardware by way of XEN, VMware, or vendor specific product that create domains or partitions.&lt;br /&gt;With the current push towards “virtualization” of systems and the (in)capabilities of Oracle, it may just be worth to re-start some of the n:m discussion (did it ever go away?).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;It is time to take a position on the many-to-many relationship between databases and systems.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This very story can also be found is actually the text version of my presentation "Databases Everywhere", and can be found from various UKOUG and other sites. (include a link...)&lt;br /&gt;&lt;br /&gt;To summarize it for those architects and (account-)managers who are in a hurry:&lt;br /&gt;I am in favor of 1:1 wherever possible, I support 1:m (RAC, grid) if really, really needed (but just please think about it one more time). RAC is a wonderful piece of technology that can serve many other vendors as a good example. It can be made to work. I will try to indicate under which conditions I think RAC can or cannot be applied.&lt;br /&gt;&lt;br /&gt;Finally, I will only tolerate the old-fashioned m:1 for non-critical situations or on systems where there is some sort of risk-mitigation against interference between the (instances of) multiple databases.&lt;br /&gt;&lt;br /&gt;After explaining these positions, I also have a list of recommendations for customers, providers and even for the Big-Oracle itself.&lt;br /&gt;&lt;br /&gt;Those of you interested: read on. Possibly prove me wrong.&lt;br /&gt;Others, keep browsing, the truth is out there, whichever version or vendor you want to see.&lt;br /&gt;&lt;br /&gt;For the record: the bottom of the text contains links to all our major “partners”. Please keep the invites coming.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Intro, and some definitions.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;On conventional systems, we generally find 1 or more databases running on a single system (*nix or even windows). For example, for concept-testing of a DG setup with cascaded standby, my laptop has run 5 databases simultaneously. Slow, but running. It just takes loads of memory and careful (memory-) parameter setting. It illustrates the capabilities of the Oracle database that the concept, once proven on a laptop could then be used to clone a 3TB production system (this time not on Windows). But the laptop Proof-of-Concept also illustrated an important issue when running multiple databases on a single system: Contention. The databases were visibly (and audibly from disk and fan) competing for IO and CPU resource.&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;small&gt;NB: Can’t resist to put one in for Deb and Nigel: Let the world know that Deb got more memory into her laptop than Nigel, but then both David and I still have more memory in our laptops then the two of you together, so there ;-). Size matters.&lt;br /&gt;Techies rule.&lt;br /&gt;Back to serious business.&lt;br /&gt;&lt;/small&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;With the current possibilities for virtualization, you can take hardware and split it into many “systems” using VMware, OracleVM, any other Xen or vendor-specific tools for domains, lpars, etc.. &lt;br /&gt;&lt;br /&gt;Each resulting system can then be used to run instance(s) of 1 or more databases. When is this useful and how far should we take this?&lt;br /&gt;With Oracle RAC (GRID, anyone?) you can take a database and distribute its instances over many system. When does this add benefits?&lt;br /&gt;&lt;br /&gt;First a few quick definitions to delimit the playing field. Please not that the definitions are for the purpose of this argument only. They don’t pretend to be scientific or final. Or even to be correct.&lt;br /&gt;&lt;br /&gt;&lt;U&gt;System&lt;/u&gt;: a running *nix (or win*) instance containing a process list and an amount of addressable memory. On short: a running instance of an “operating system”.&lt;br /&gt;A system can be Virtual if the hardware seen by the operating system is not identical to the actual underlying kit. This is the case when a larger system is split into “virtual” units by use of Xen, VMware or some vendor-specific layer of software or firmware. Some of those can also be modified dynamically (e.g.: Rolling). Some definitions and a good description can be found here:&lt;br /&gt;http://encyclopedia.thefreedictionary.com/virtualization.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Database&lt;/u&gt;: an (Oracle) database, containing one system tablespace, and one user called SYS (I’m still trying to find the “essence” of an Oracle database, how about the sys.obj$ entries?). Note that the use of DataGuard can mystify the definition of a “database”, because each DG-clone can represent “the database”. The actual Single Point of Truth (SPoT) is where the current “primary instantiation” of the database resides.&lt;br /&gt;&lt;br /&gt;Also note that my definitions do not include the binaries, or the ORACLE_HOME, as part of the database or the system. Indeed, systems and databases can be used in situations where the software needed to run them is “shared”. Most system only need a few “system specific” files in /var and /etc. I will always point out VMS as the ultimate mother of all clustered systems whereby files are shared between multiple nodes. But that requires a Clustered File System (CFS), and that opens a different discussion altogether. Suffice to say that a CFS is very suitable to ensure that all machines can be connected to the same, identical software and are guaranteed to run the same version of the binaries.&lt;br /&gt;&lt;br /&gt;Now let me briefly elaborate on the different options.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conventional deployment -  many:1.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;On conventional systems, we often see many databases running on a single (unix) instace.&lt;br /&gt;&lt;br /&gt;The DBA can look after the databases, and the unix administrators have only one entity to watch. Any collision between databases will have to be handled by the DBA. Note that in most of these conventional cases all databases share the same software-tree (multi databases running from the same oracle_home).&lt;br /&gt;These systems tend to have a relaxed SLA. The utilization varies and sometimes we see high percentages of CPU or IO bandwidth being consumed by a single database.&lt;br /&gt;&lt;br /&gt;The main disadvantage of conventional systems is the fact that there is only one system, and all databases meet there. A problem with either a single database or with the system itself can quickly contaminate all databases on the system. And upgrades of system- or oracle-software lead to simultaneous outages of all databases on the system.&lt;br /&gt;&lt;br /&gt;In case of system- or hardware failures many databases must be recovered simultaneously or re-started on one or more (other) systems (requiring some prioritization). The simultaneous recovery of many databases may lead to a brief period of overload and/or chaos an possibly a domino effect on other systems or components.&lt;br /&gt;&lt;br /&gt;The advantages of an m:1 configuration are the simplicity of a “single system”, which is easy on the system-admin, and the often cheaper license structure when using per-system license.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Simple and Robust 1:1&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;On system with a high load or a stringent SLA, we tend to see 1:1 relationships: a single database, whereby the sole and single instance of the database runs in a single unix system. This is sometimes referred to as the monogamous configuration.&lt;br /&gt;By having the whole system to itself, the database can benefit from all the resources available. There is no interaction (disturbance) from adjacent instances or other processes. Determining parameters is relatively simple.&lt;br /&gt;&lt;br /&gt;However, as Oracle (-sales) will point out, this 1:1 configuration generally means the system is grossly under-utilized. It also means the database can still suffer from unix- or hardware failures.&lt;br /&gt;But I like the simplicity of this configuration, I think this is the most “robust” solution and is applicable to the majority of databases. Whenever a problem occurs on one of the systems, only one database is affected, and recovery-efforts can be concentrated on a single database and application, reducing the risk of a domino-effect.&lt;br /&gt;&lt;br /&gt;The 1:1 situation also lends itself very well to hardware-clustering or “cold failover” whereby a database is re-started on another system (node) in case the underlying system or hardware fails. Only one database needs to be re-started or recovered.&lt;br /&gt;&lt;br /&gt;Since a 1:1 configuration requires many “systems”, it is attractive to use server virtualization. By running multiple “virtual” systems on a single piece of hardware, you can quickly create the required number of “separate” or isolated systems. When doing this, keep in mind that the underlying hardware remains the single point of failure. When one or more virtual system are meant to replace one-another in case of failure, they should preferably run on separated hardware.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Real Application Clusters, RAC -  1 : many&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As a techie, I like the technology behind RAC. It is a wonderful thing to play with and I like the challenge to master this thoroughbred in real-life system. But I have to be careful not to be running a “solution looking for a problem”.&lt;br /&gt;&lt;br /&gt;We tend to see RAC databases in organizations with formal and very stringent SLA’s and with the budget and the resources to try and meet these requirements.&lt;br /&gt;&lt;br /&gt;OPS and RAC eliminate the SPoF of the “system” and deploy the database over multiple systems. Theoretically this works nicely and even provides dynamic provisioning of system resources (you can utilize all available kit, and you can add more kit as needed). In practice, many have pointed out the relative complex setup, the high price, and the other shortcomings of RAC (link to Miraculous, Famous Danish company).&lt;br /&gt;&lt;br /&gt;We have indeed seen successful deployments of multi-instance database on some very large kit. In some cases, the impressive amount of hardware was able to hide badly designed application-code for quite some time. And by constantly distributing the (mainly CPU-) workload over the available unix systems, the coders got away with some appallingly inefficient constructions. Some of these cases have demonstrated the viability (and sometimes vulnerability) of RAC quite nicely, although a better design or implementation might have been cheaper (I prefer brains over iron, always!, in case of doubt: reduce the size of the hardware and tell the IT crowd to JFDI).&lt;br /&gt;Note however, that it is important to let the hardware boys and vendors it their way a bit too. Riding in some extra hardware makes them happy, and is good for our relationship with these vendors. They might invite us on future projects.&lt;br /&gt;&lt;br /&gt;And to pour further praise on the Oracle techies, TAF has saved our systems several times when a node got in trouble and died. Database-nodes die mostly through software errors, core dumps or memory leaks, and sometimes through human errors. The underlying hardware is rarely a problem, as these high-end-hardware systems are built to keep running run even if a salty ocean wave runs through the lower floors of the building : unintentionally (Kathryn, are you reading this?).&lt;br /&gt;Please remark that even when you have RAC and TAF-capabilities, you still need to code your application to correctly trap and handle the failover-events. Otherwise, it only works on “idle” connections.&lt;br /&gt;&lt;br /&gt;Note that most databases can (be made to) run on RAC, provided there are no obvious bottlenecks such as an ordered-no-cache sequence or some very hot blocks with running-totals. And those bottlenecks can generally be un-designed.&lt;br /&gt;NB: Oracle currently seems to have the following position on RAC: if it doesn’t run (or scale) on RAC, your design is wrong.&lt;br /&gt;&lt;br /&gt;Suffice to say that where Very Fast Failover (TAF or FCF/FAN) are needed, RAC has no equal. And for systems that have extreme hardware (CPU) requirements, the RAC scale-out model is also beneficial.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Question : Now what to choose ?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The classic answer: It Depends.&lt;br /&gt;However, I will try to provide some guidance and some opinions.&lt;br /&gt;&lt;br /&gt;The only factor that really matters is “The Business” (duh).&lt;br /&gt;What does your business need and what can it afford. For simple or undemanding SLAs the traditional m:1 configuration is often sufficient and cost-effective. For businesses that have more stringent demands or for providers that risk being sued by their (business-)customers over a broken SLA, a 1:1 is advised, possibly with some cold-failover mechanism. And finally, if you really need the additional 10 minutes, or if you need the scale-out features, AND if you can afford the resources for testing, training and ongoing maintenance, a 1:m configuration (aka RAC or grid) can be your choice.&lt;br /&gt;&lt;br /&gt;To figure out what your business needs (and can afford), you can either think for yourself, or you can give yourself and your department more credibility by engaging (principle-, business-) consultants to do cost-benefit analysis, risk-assessments or FEMA (that is: Failure Escalation Mode Analysis, not the other FEMA). They will especially stress the business-cost of downtime and any related loss of data/productivity/customers/orders/MegaWatts/ That is enough FUD for the moment. Back to more practical matters.&lt;br /&gt;&lt;br /&gt;On the practical level, there are some factors that come into play. There is a) the preference (eeh: dictate) of your system administrators, your SAN engineers, your ASP, or your hosting provider. Then there is b) your commercial relationship with Oracle which will determine how high your licensing cost will turn out. But there may be others, such as c) the capabilities and preferences of your DBA. We will not even go into items like d) the availability of test-systems to prove and maintain your architecture, or e) the available rack-space.&lt;br /&gt;&lt;br /&gt;The first important factor that often comes into play is the preference (or the pricing-policy) of the system-admin team or the Hosting-Organization (the ASP). Are they capable of handling many systems or do they prefer a low number of unixes ? Can they quickly build and clone systems for provisioning? What price do your ASP’s charge for additional systems ? This may determine your capability to run “multiple” systems.&lt;br /&gt;Some organizations, by choice or by force, still get away with running just 1 large unix box with everything on it: HR, CRM, Logistics, and sometimes they even have their dev/test/uat environments on the very same box. Feasible, but with most of the drawback of a m:1 configuration.&lt;br /&gt;&lt;br /&gt;The next factor is often License cost. How is your relation with Oracle, commercially? If you have to pay list-price, you will want to stick with “conventional”. Here, Oracle shoots itself in the foot: a lower price on RAC would speed up acceptance of the RAC and GRID model.&lt;br /&gt;Machiavelli did suspect this was done to buy sufficient Beta-time to find all quirks, possibly to find a solution for instance-affinity and to give customers the time to come up with a solution for the friendly delivered “Your Design is Wrong” consultancy-audit outcomes.&lt;br /&gt;&lt;br /&gt;And last but not least, what do your DBA’s prefer, and how trained and comfortable are they with RAC/grid? The traditional choice, m:1, despite its disadvantages (contention, domino-effects) is still the easiest to maintain for a DBA. Choosing a 1:1 configuration brings on a slightly higher workload, but has the advantage of more robustness and easier, isolated, troubleshooting since databases and systems do not affect one-another when trouble or maintenance occurs (yes, yes, someone must shout “utilization” now, thank you).&lt;br /&gt;&lt;br /&gt;The choice for a RAC or grid configuration tends to create a significant overhead. We politely disagree with Oracle at this point that the new grid-control alleviates all problems.&lt;br /&gt;And even if GC and its agents do try to take away a lot of the routine-tasks, Knowledge and Experience can never be completely replaced by a GUI. This aspect, the Human- or Operator dimension, tends to be the most under-estimated factor when (prematurely) implementing RAC/Grid.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Recommendations:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;For customers and end-user businesses:&lt;br /&gt;Move carefully from m:1 to 1:1. The 1:1 configuraion is at this moment arguably the most robust way to run a database. Consider using virtual systems to support a 1:1 deployment, but beware of the possible contention and SPoF on the underlying physical layers. Move on to 1:m (RAC) for cases with specific needs (failover or scale-out). Only use RAC in cases where you must, but then don’t hesitate to use it. It can (be made to) work, and it will work (eventually), and you may have to learn these tricks eventually. Start on the first valid occasion.&lt;br /&gt;&lt;br /&gt;For ASP and hosting organizations:&lt;br /&gt;Learn how to handle clusters, clones and virtual systems. These tools will give you an edge in flexibility. Then offer your customers the possibility to host many _identical_ systems at a rebate. Your customers will buy more as 1:1 and 1:m systems proliferate, and in the long run you will benefit. Hosting Companies and some vendor pricing-policies are the largest obstacle when moving from m:1 to 1:1 or even on to 1:m. Innovative customers will try to move to cheaper and more flexible platforms, and even lagging customers will eventually follow. If the hosting provider can quickly “provision” at acceptable cost, he can be seen as a partner in commoditization, rather then as an obstacle to flexibility.&lt;br /&gt;&lt;br /&gt;For System-admins:&lt;br /&gt;Learn how to handle a multitude of systems, learn how to keep them in sync, and how to clone or (re-)build systems quickly.&lt;br /&gt;NB: for the addicts: investigate the use of Clustered File Systems (CFS).&lt;br /&gt;&lt;br /&gt;For DBA’s and system-admins:&lt;br /&gt;Aim to deploy databases and systems in a 1:1 fashion. The “isolation” of each database and system greatly facilitates admin- and troubleshooting activities.&lt;br /&gt;Also get used to replicating or sharing software through OUI or other mechanisms.&lt;br /&gt;And if possible, start to work with a CFS.&lt;br /&gt;Sharing storage at the “filesystem” level can facilitate the juggling of multiple systems very much. Even NFS (supported, but not recommended  is a usable alternative.&lt;br /&gt;A CFS can offer great advantages by sharing files across nodes and this can simplify software-deployment and distribution. You will always need two copies of software for redundancy-purposes, but please think before making he 3rd, 4th or 42nd copy. Sharing is better the copying, especially at high numbers. It is easier to manage a small number of shared oracle_home trees then to have 42 or more copies that need to be rsynced or otherwise kept identical.&lt;br /&gt;&lt;br /&gt;For Oracle:&lt;br /&gt;It is appalling to find that a grid (aka an OPS database) was easier to build and maintain under VMS or Tru64 with Oracle 8174 then it is with the current 10g versions.&lt;br /&gt;Please pursue the development of OCFS and facilitate shared-binary installs on OCFS and other CFS platforms. This will help proliferation of your GRID strategy, and will get you more market-share and revenue in the long run. The oracle-inventory mechanism and the configuration of agents tend to make life difficult for deployment of shared-binaries. Any viable grid should IMHO include the shared use of a software tree and not depend on endless replication of executables.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Shutdown (normal)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;By adopting a grid-strategy, Oracle has greatly increased the options for its customers. And for those of you who don’t know it yet: find the Oracle Sponsored GRID-INDEX. Various hard- and software vendors have added to the palette of choices by implementing their own versions of Grid, clusters, or virtualization. All this new (eh, apologies: innovative but proven) technology can be put to good use, but only when making the correct choices.&lt;br /&gt;&lt;br /&gt;We hope the preceding information can offer some help, and we would like to close down by adding one more item of advice: try to base you choices on simplicity&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Relevant links&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The usual brownie-point partner-links and marketing buzzwords on grid etc :&lt;br /&gt;&lt;br /&gt;http://www.oracle.com/global/nl/corporate/press/200634.html&lt;br /&gt;http://www.oracle.com/global/eu/pressroom/emeagridreport4.pdf&lt;br /&gt;http://www.hp.com/techservers/grid/index.html&lt;br /&gt;http://www.ibm.com&lt;br /&gt;http://www.sun.com&lt;br /&gt;&lt;br /&gt;More on server-virtualisation (start here!):&lt;br /&gt;http://encyclopedia.thefreedictionary.com/virtualization&lt;br /&gt;&lt;br /&gt;An introduction to Clustered File Systems:&lt;br /&gt;http://www.beedub.com/clusterfs.html&lt;br /&gt;http://www.oracle.com/technology/pub/articles/calish_filesys2.html&lt;br /&gt;&lt;br /&gt;Some good, albeit biassed arguments for CFS can also be found here:&lt;br /&gt;http://www.polyserver.com (look for articles by Kevin Closson).&lt;br /&gt;&lt;br /&gt;A classic on RAC:&lt;br /&gt;http://www.miracleas.dk/WritingsFromMogens/YouProbablyDontNeedRACUSVersion.pdf&lt;br /&gt;&lt;br /&gt;Just for fun:&lt;br /&gt;http://www.userfriendly.org&lt;br /&gt;http://www.dilbert.com&lt;br /&gt;&lt;br /&gt;Last bootnote for all Alliance Managers and other people in control of party-invites: take note of my cross-links to our “powerful partners”. And don’t worry, since you didn’t bother to read all of the text, neither did the real decision-makers, hence no damage is done. Oh, and please keep me on the invite-lists, I still appreciate good food and quality entertainment.&lt;br /&gt;&lt;br /&gt;Now shoot me (over lunch?).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-3861728304669373034?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/3861728304669373034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=3861728304669373034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/3861728304669373034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/3861728304669373034'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2007/11/databases-and-systems-what-kind-of.html' title='Databases and Systems, what kind of Relation.'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-1937212763699677628</id><published>2007-10-24T08:49:00.000-07:00</published><updated>2009-03-06T04:30:53.473-08:00</updated><title type='text'>ILM is TNT. The Next TLA</title><content type='html'>First the positive words:&lt;br /&gt;&lt;br /&gt;Information Lifecycle Management (ILM) is a great way to dig into data-management, partitioning, and serious considerations about your datamodel.&lt;br /&gt;You should always do ILM, in one form or another.&lt;br /&gt;&lt;br /&gt;However .... , &lt;br /&gt;&lt;br /&gt;The term is now being hijacked by the Marketing Departments of Storage- System-, Database-, application-, ETL-, and just about any other FUD-touting vendor.&lt;br /&gt;&lt;br /&gt;Oracle is also promoting ILM. They even provide an ILM (gui-)tool for free.&lt;br /&gt;&lt;br /&gt;Why?&lt;br /&gt;Well, ILM relies on Partitioning, and Partitioning is ... licensed. Ka-Tching.&lt;br /&gt;&lt;br /&gt;If you go down the ILM route, the usual disclaimers apply:&lt;br /&gt;- use at own risk.&lt;br /&gt;- RTFM (...) please.&lt;br /&gt;- proceed with extreme caution.&lt;br /&gt;&lt;br /&gt;But it will be a good learning experience and as a buzzword, ILM looks good on your CV.&lt;br /&gt;&lt;br /&gt;Hence vendors in various layers of the stack (disk/storage, database, ETL, business-intelligence, compliance, architects, consultancy etc...) all try to sell ILM "solutions" (e.g. ILM-slower/older-disks, ILM-partitioning, ILM-extract-tools,  ILM-methodologies, ILM-audits, ILM-patterns, ILM-best-practices, ...)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://angie.datavibe.net/gifs/bling.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 210px;" src="http://angie.datavibe.net/gifs/bling.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;If you like &lt;em&gt;bling&lt;/em&gt; and &lt;em&gt;flash&lt;/em&gt;, and good entertainment, this is where you should be in the next months : Ai, El, and Em - ILM. &lt;br /&gt; &lt;br /&gt;Quite fun to see:  &lt;br /&gt;The trainees, the D-division, and all other abitious employees are sent out to promote this TLA. Expect lots of seminars, catered-food and drinkies... &lt;br /&gt;&lt;br /&gt;And some of it looks ok, credible even. Like I said: Every good datamodel should have some ILM in it. Its just that we used to call it "archiving" (=boring) or "cleansing" (sounds like washroom sanitation maintenance dunnit ?).&lt;br /&gt;&lt;br /&gt;ILM is definitely the way to go. Unless you can spot TNT coming (The Next TLA) ...&lt;br /&gt;I'm waiting for the bang.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-1937212763699677628?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/1937212763699677628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=1937212763699677628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/1937212763699677628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/1937212763699677628'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2007/05/ilm-is-tnt-next-tla.html' title='ILM is TNT. The Next TLA'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-3646688310105971443</id><published>2007-05-07T08:29:00.000-07:00</published><updated>2009-03-12T08:41:25.711-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='v$ views'/><category scheme='http://www.blogger.com/atom/ns#' term='bitmap indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='simpleoracledba'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='load'/><category scheme='http://www.blogger.com/atom/ns#' term='benefit'/><category scheme='http://www.blogger.com/atom/ns#' term='continuity'/><category scheme='http://www.blogger.com/atom/ns#' term='rac'/><category scheme='http://www.blogger.com/atom/ns#' term='databases'/><category scheme='http://www.blogger.com/atom/ns#' term='systems'/><category scheme='http://www.blogger.com/atom/ns#' term='sitemap'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='recovery'/><category scheme='http://www.blogger.com/atom/ns#' term='dba'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>sitemap of SimpleoOracleDBA</title><content type='html'>Here are the introductions to &lt;b&gt;PdvFirstBlog&lt;/b&gt; and &lt;b&gt;SimpleOracleDBA&lt;/b&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://pdvfirstblog.blogspot.com/" title="Intro to the blog, work in progress.."&gt;Intro - if available &lt;/a&gt; - This is where I started my my blogging era&lt;/li&gt; &lt;br /&gt;&lt;li&gt;&lt;a href="http://simpleoracledba.blogspot.com/2007/05/simple-oracle-dba.html" title="Simplicity is the ultimate sophistication!"&gt;Simple oracle DBA&lt;/a&gt; - The main topic.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;Various Oracle Tips and Rants and Opinions, all to do with practicalities.&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://simpleoracledba.blogspot.com/2007/05/simple-oracle-dba.html" title="Keep life of the DBA simple."&gt;Simple Oracle DBA&lt;/a&gt; - Availability, Scalability, Manageability... It has to be Simple&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://simpleoracledba.blogspot.com/2009/03/deadlocks-get-rid-of-bitmap-indexes.html" title="Users getting deadlock errors"&gt;Bitmap Indexes on an OLTP system&lt;/a&gt; - ORA-00060... Classic Deadlock&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://simpleoracledba.blogspot.com/2008/10/backup-and-recovery-at-what-level.html" title="Backup in a non-convenional way"&gt;Backup on a different Level&lt;/a&gt; - in the SOA layer.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://simpleoracledba.blogspot.com/2008/08/throttling-and-triage-where-do-i-make.html" title="Where to throttle your connections. In the pool, prevent overload on your database"&gt;How To Pool Connections&lt;/a&gt; - One of the challenges&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://simpleoracledba.blogspot.com/2007/11/databases-and-systems-what-kind-of.html" title="Systems and Databases, RAC, Silos and classic systems, the world turned upside down"&gt;Databases Everywhwere&lt;/a&gt; -  Systems and Databases, how many databases.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://simpleoracledba.blogspot.com/2007/05/ilm-is-tnt-next-tla.html" title="So many abbreviations, all to make money"&gt;ILM, Information LifeCycle Management&lt;/a&gt; - another Three Letter Acronym.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://simpleoracledba.blogspot.com/2007/05/index-organized-tables-iots-forgotten.html" title="Index Organized Tables can be Very Efficient"&gt;Index Organized Tables&lt;/a&gt; - Many Benefits&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://simpleoracledba.blogspot.com/2008/08/throttling-and-triage-where-do-i-make.html" title="title"&gt;txt&lt;/a&gt; - txt.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://simpleoracledba.blogspot.com/2008/08/throttling-and-triage-where-do-i-make.html" title="title"&gt;txt&lt;/a&gt; - txt.&lt;/li&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;Various Rants, all to do with practicalities.&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://pdvfirstblog.blogspot.com/2009/03/in-crisis-you-call-dba.html" title="DBAs are your point of call in a crisis"&gt;In times of Crisis you call the DBA&lt;/a&gt; - Who you gonna call...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://pdvfirstblog.blogspot.com/2009/03/herding-toad.html" title="You need Tools, and TOAD is the tool of choice for DBAs"&gt;Rationalize TOAD&lt;/a&gt; - Toad will find a way...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://pdvfirstblog.blogspot.com/2008/10/ukoug-usergroup-conference.html" title="A surprise invite to the Miracle Database Forum"&gt;M O O W&lt;/a&gt; - Miracle Oracle Open World...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://pdvfirstblog.blogspot.com/2008/10/birmingham-u.html" title="UK Oracle Usergroup Annual Conference, a Massive Event."&gt;My blog-plug for the Conference&lt;/a&gt; - UK Oracle USergroup...&lt;/li&gt;&lt;br /&gt;&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;Travel related stuff.&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://pdvfirstblog.blogspot.com/2007/04/angel-of-north.html" title="I had my picture taken at the Angel of the North..."&gt;Angel of the North&lt;/a&gt; - My most visited leasure page...&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;The usual links to groups etc..&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;My own linked in profile (shameless plug)&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;my agenda (normally at the right hand side of the blog)&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;UKOUG main url&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;Miracle BV&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;the home of Oracle-L : Best Mailing list &lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;link to Oracle Forum.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-3646688310105971443?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/3646688310105971443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=3646688310105971443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/3646688310105971443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/3646688310105971443'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2007/05/sitemap-of-simpleooracledba.html' title='sitemap of SimpleoOracleDBA'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-5157906294582099393</id><published>2007-05-06T04:19:00.000-07:00</published><updated>2009-10-20T10:59:25.756-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='IOT'/><category scheme='http://www.blogger.com/atom/ns#' term='physical datamodel'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='benefit'/><title type='text'>Index Organized Tables IOTs, the forgotten benefits</title><content type='html'>Check if your database can benefit from IOTs. You could be surprised.&lt;br /&gt;&lt;br /&gt;Index Organized tables are possibly the most under used feature after the clustered table (now there is another underused item …). IOT’s also have some additional benefits that the manual seems to forget.&lt;br /&gt;&lt;br /&gt;In brief: If you have tables with parent-child relations, or dependent tables where you often retrieve all related records at once, then you should read up on Index Organized Tables. Notice that this includes nearly every database out there.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Wake up call and Warning&lt;/strong&gt;&lt;br /&gt;This feature is available since 8i, and only now, recently, does it get a number of Bugs reported against itself (not in the last place because one of our major projects boldly went out using IOTs). Have those bugs been “dormant” all the time ? Check out the list of Expected fixes for 9.2.0.8 and see for yourself (Note:358776.1, when I checked it 28-Mar-06). 3 out of the 7 fixes mentioned under IOT are bugs found by us, and a bug-search for IOT turns up even more issues. The information and the dates on the bugs and fixes suggest that most of them have also been around in 10.x. Be Careful.&lt;br /&gt;Despite all these issues, IOT remains a highly recommended feature.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;First a recap.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Briefly described, the IOT stores all data of a table in the leaf-blocks of the PK-index. This means there is no table-segment anymore, only an index segment. You can verify this from user_segments.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;On a well defined IOT, all records with the same parent key are grouped together in one single block or in a low number of adjacent blocks.&lt;/i&gt; This is an advantage on retrieval. All related data is generally retrieved in just one IO action. This speeds up retrieval (less IO is needed), but also makes more efficient use of the buffer-cache because the related records do not get dispersed over many blocks. The overhead of unused cache space is reduced. So far the known advantages.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Now the bonus features.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Bonus Feature #1: &lt;i&gt;More data in the secondary index.&lt;/i&gt; As with normal tables, You can define other indexes on the IOT table. But those indexes now have an additional feature: The secondary index doesn’t contain a physical rowid, instead it contains the actual values of the PK fields. This means the 2ndary index is often ideal for index-only-lookup or just to join additional tables after retrieving only the index-blocks. There is no need to visit the table to fetch the PK fields. For those who used to inflate the 2ndary indexes to obtain&lt;br /&gt;Index-Only-Lookups: Use of IOTs can automatically lead to more IOL.&lt;br /&gt;&lt;br /&gt;A good example is an m:n relation where the linking table contains just two id’s. A conventional design would call for a heap table with two indexes. A total of 3 segments. An IOT would result in two segments: the PK and one index. Again, there is no table-segment. The PK-segment contains both columns in the leaf-blocks. And the 2ndary index contains the PK-values as an alternative to the ROWID. Any query always needs to search only one (index-) segment, and in each case, the required data will be grouped together in a single or low number of blocks, resulting in minimal IO and efficient use of buffer cache.&lt;br /&gt;&lt;br /&gt;Bonus Feature #2: &lt;i&gt;Reduced density, avoiding of hot-blocks.&lt;/i&gt; Because there is no separate PK-segment, and because data and index are together in one segment, the nr of records per block is lower. Lower Density.&lt;br /&gt;Normally, the PKs are the most dense segments in a system, and therefore most likely to cause contention on DML transactions most likely to show up in gv$cache_transfer on a RAC system. On an IOT, the PK automatically contains fewer records per block because of the extra space required to store the “data” columns. If paired with a higher then default value of pctfree, an IOT can be used to reduce the impact of a “hot” index. This is especially useful in a RAC environment where hot blocks need to be transferred between instances.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Some of the downsides.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Inserts and updates are slower. This is partly a myth. In like for like comparisons, you may find the difference is not that big. When people complain about the slow loading of data into IOTs they often compare loading an IOT against a table with no indexes at all. If you can do without indexes, you can also do without IOTs. A more honest comparison would be to include the additional time required to create the indexes after loading, or to compare against a table with a PK already defined.&lt;br /&gt;Another way to speed up loading is to use the “ordered” option.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;A quirk: the physical guess.&lt;/strong&gt;&lt;br /&gt;The 2ndary index on a IOT contains a so called row-guess to allow fast access to the leaf block of the PK were the row was originally stored. These row-guesses can grow stale, and the index statistics reflect this in the pct_direct_access value. I have never been able to demonstrate the effect, let alone the benefit of this “row guess”.&lt;br /&gt;A Challenge to investigative minds out there: Can someone prove me the usage and benefit of the row-guess. Ideally, a 10049 trace should be able to show the impact of the row-guess, and of “migrated” rows and stale row-guesses. (Update in 2009, With thanks to Barry Jones, who actually demonstrated 2ndary index deteriorated over time. Impressive).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Some Best Practices for IOT:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1) bad news first: check the bugs, even on 10.2.&lt;br /&gt;Although we have reaped good benefits from IOTs on a multi-Terabyte database, we did stumble across a number of Nasty bugs. We had notable problems on the gathering of statistics (dbms_stats) and with the use of Function Based Indexes (FBIs). On IOTs you can use both dbms_stats and FBIs, but beware of the bugs. Metalink is your friend.&lt;br /&gt;&lt;br /&gt;2) Determine a good pctfree.&lt;br /&gt;Set this value higher then default. We tend to use 30 instead of the default 10. This will at least partly avoid the general problem of slower DML on IOTs. Your optimal value will vary, depending in the amount of updates and inserts you do.&lt;br /&gt;&lt;br /&gt;3) create your own overflow segments.&lt;br /&gt;If your table contains many columns or large records, consider defining an Overflow segment and use it to store the columns that you will need less-frequently. If you avoid creating overflow segments, you may find that oracle does this for you. You probably want control over this yourself to avoid surprises.&lt;br /&gt;&lt;br /&gt;4) Keep blevel down, use partitioning.&lt;br /&gt;As access to the table-data will always go via the PK, the table-access as shown in an explain-plan is actually another PK lookup (note that I’m very skeptical about the row-guess). Therefore, the blevel of the PK has an impact on the number of blocks that need visiting before a data-record is retrieved. By partitioning the IOT you can make sure that the blevel stays sufficiently low. IMHO, a blevel of 2 is generally achievable, 3 is acceptable, and 4 is too high.&lt;br /&gt;Nb: monitoring blevel seems an often overlooked item, and it still applies to conventional indexes as well. But the impact of a high blevel on the PK of an IOT can be especially devastating.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Final words:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Start by reading up on the IOT feature, but then.Test, Verify, Tweak, and re-Test for your specific situation. IOTs are useful in a specific set of circumstances: Retrieval of related sets, avoidance of hot-spots, RAC scalability.&lt;br /&gt;As always, Your Mileage May Vary.&lt;br /&gt;&lt;br /&gt;Further reading:&lt;br /&gt;- RTFM (a bit of a duh, but yep, those pdfs are very useful)&lt;br /&gt;- metalink (same duh, but there is some really good info out there too, bugs and all)&lt;br /&gt;- OTN : http://www.oracle.com/technology/products/oracle9i/daily/sept04.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-5157906294582099393?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/5157906294582099393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=5157906294582099393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/5157906294582099393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/5157906294582099393'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2007/05/index-organized-tables-iots-forgotten.html' title='Index Organized Tables IOTs, the forgotten benefits'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2170637149389736039.post-629907756605552802</id><published>2007-05-04T00:33:00.000-07:00</published><updated>2009-10-17T09:14:55.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='simple'/><category scheme='http://www.blogger.com/atom/ns#' term='dba'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Simple Oracle DBA</title><content type='html'>&lt;strong&gt;Introduction ?    Simple ! &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This blog will try to keep life simple for Oracle DBA's.&lt;br /&gt;&lt;br /&gt;Because &lt;u&gt;&lt;a href="http://thinkexist.com/quotation/simplicity_is_the_ultimate_sophistication/213576.html" target="_blank" title="Leonardo, a true classic, and my favorite quote!"&gt;Simplicity is the Ultimate Sophistication&lt;/a&gt;&lt;/u&gt; (L. da Vinci)&lt;br /&gt;&lt;br /&gt;Because &lt;u&gt;&lt;a href="http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD898.html" target="_blank" title="Professer Dijkstra, TUE and UT Austin, the trailblazer for Best Practices in IT, a Must for all serious students and practicioners in this ever complex business"&gt;Complexity sells better&lt;/a&gt;&lt;/u&gt; (E.W. Dijkstra)&lt;br /&gt;&lt;br /&gt;Because life is complicated enough.&lt;br /&gt;&lt;br /&gt;Simple Oracle : &lt;a href="http://www.thefreedictionary.com/oxymoron=" target="_blank" title="I am an eternal optimist, and lazy. And I will keep trying to simplify life"&gt;Oxymoron ?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.presentationhelper.co.uk/graphics/Boring%20Presentation.gif" target="_blank"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 180px;" src="http://www.jmorganmarketing.com/wp-content/uploads/2008/03/man-with-megaphone.gif" border="0" alt="This presenter had a Very Drastic way to keep the audience awake! have a look..." /&gt;&lt;/a&gt;&lt;strong&gt;Presentations&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Been there and done that, and got the presentations and papers to show for it. &lt;br /&gt;&lt;! -- http://www.jmorganmarketing.com/wp-content/uploads/2008/03/man-with-megaphone.gif or http://school.discoveryeducation.com/clipart/images/presentation-boy.gif --&gt;&lt;br /&gt;&lt;br /&gt;Below are the links to my most Favored &lt;strike&gt;Rants&lt;/strike&gt; material. Most of my public presentations have grown from either client-pitches, project-blunders or "architectural" frustrations. Hence most of them are slightly missionary: I want to convince the audience of something. Something Simple.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;High Availability: How to keep it simple (ppt)&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/141082951/7e7bcd0b/DBF2006_availability_v35.html" target="_blank" title="Start Simple, and be surprised somtimes. Minimize the cost, both in money and in human-effort."&gt;Talk customers through the options for high-availability.&lt;/a&gt; &lt;br /&gt;Start with "What do you really need", going through "what can you afford", and then match that with the possibilities. Ever more Complex...&lt;br /&gt;&lt;em&gt;When in doubt: Simplify!&lt;/em&gt;&lt;br /&gt;The link is to my presentation from the Miracle DBF in 2006, but the message still stands.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Databases Everywhere (ppt)&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/141083031/9f4c3667/miracle_scotland_db_relations.html" target="_blank" title="Part serious, part humoristic: we used to run many databases on a single server. Now we have turned the world upside down an we run 1 (RAC) database on many systems."&gt;Everywhere indeed.&lt;/a&gt; &lt;br /&gt;What can we do to keep the systems running, and keep life simple for the DBA? &lt;em&gt;DBA Two-dot-Oh even.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Upgrade Nightmares (pdf)&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/141085529/ab2c1223/upgrade_nighmares_embro_apr2009_v6.html" target="_blank" title="Peppered with anecdotes, described by Doug Burns as good War Stories. But some sober advice too."&gt;My down-to-earth vision on upgrades.&lt;/a&gt;&lt;br /&gt;And what you can do to keep life simple.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Is my Backup Covered (pdf)&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/141085740/872ed96f/200810_bck_coverd_PietdeVisser.html" target="_blank" title="Do other usages of your backup or your system in general compromise your recovery? And are you using the capabilities of your backup system to the full extend?"&gt;It is about Recovery!&lt;/a&gt; &lt;br /&gt;Can you Recover? Can someone else do your recovery for you?&lt;br /&gt;&lt;em&gt;The most boring subject, but surprisingly turned into my most asked-for ppt&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Backup, at a different level&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://simpleoracledba.blogspot.com/2008/10/backup-and-recovery-at-what-level.html" target="_blank" title="This started off as a casual remark, but turned into something that was picked up by a few SOA nuts. They took it serious, and I may have given them an idea to build something rather complex that even works."&gt;A paper/blogpost, aimed a SOA "architects".&lt;/a&gt;&lt;br /&gt;Rather then cover "backup" at the disk- or database level, you can use messaging systems (SOA, ESB, BEPL) to distribute your data over two or more systems. &lt;br /&gt;&lt;em&gt;Redundancy at a higher level in the stack. Use at own Risk!&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Index Organized Tables, and all the benefits.&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://simpleoracledba.blogspot.com/2007/05/index-organized-tables-iots-forgotten.html" target="_blank" title="Here is my declaration on the benefits of IOTs."&gt;Blogpost/paper, aimed at developers/implementors and ... DBAs.&lt;/a&gt;&lt;br /&gt;I have driven many to despair with a strong belief in the efficiency of IOTs and other seemingly excotic table- and index definitions to store data physically.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And if you feel like presenting at a usergroup, but dont know what about: &lt;br /&gt;Remember your last big frustration or problem ?&lt;br /&gt;Try turning that into a presentation. Surprisingly, that worked for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2170637149389736039-629907756605552802?l=simpleoracledba.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://simpleoracledba.blogspot.com/feeds/629907756605552802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2170637149389736039&amp;postID=629907756605552802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/629907756605552802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2170637149389736039/posts/default/629907756605552802'/><link rel='alternate' type='text/html' href='http://simpleoracledba.blogspot.com/2007/05/simple-oracle-dba.html' title='Simple Oracle DBA'/><author><name>PdV</name><uri>http://www.blogger.com/profile/11518325134965208858</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_mwcHzu17DBM/Svqnu1rrcxI/AAAAAAAAABg/30jsAjMbIlU/S220/pdv_picture.JPG'/></author><thr:total>0</thr:total></entry></feed>
