<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Aspiring Oracle Nerd</title>
	<atom:link href="http://oraclenerd.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://oraclenerd.wordpress.com</link>
	<description>Sorta</description>
	<lastBuildDate>Fri, 18 Feb 2011 21:31:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='oraclenerd.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Aspiring Oracle Nerd</title>
		<link>http://oraclenerd.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://oraclenerd.wordpress.com/osd.xml" title="Aspiring Oracle Nerd" />
	<atom:link rel='hub' href='http://oraclenerd.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Make the job run faster + compulsive tuning disorder +  down the rabbit hole we go + a few other comments</title>
		<link>http://oraclenerd.wordpress.com/2011/02/18/make-the-job-run-faster-compulsive-tuning-disorder-down-the-rabbit-hole-we-go-a-few-other-comments/</link>
		<comments>http://oraclenerd.wordpress.com/2011/02/18/make-the-job-run-faster-compulsive-tuning-disorder-down-the-rabbit-hole-we-go-a-few-other-comments/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 21:15:02 +0000</pubDate>
		<dc:creator>cstephens16</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://oraclenerd.wordpress.com/?p=56</guid>
		<description><![CDATA[I was cc&#8217;d on an email yesterday morning that was sent out to the development group.  It was a pretty bluntly worded question asking why a monthly job was taking well over an hour to run. Being the DBA here, I felt it was my responsibility to create a 10046 trace file and summarize where [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclenerd.wordpress.com&amp;blog=1745445&amp;post=56&amp;subd=oraclenerd&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was cc&#8217;d on an email yesterday morning that was sent out to the development group.  It was a pretty bluntly worded question asking why a monthly job was taking well over an hour to run.</p>
<p>Being the DBA here, I felt it was my responsibility to create a 10046 trace file and summarize where all the time was going.  Thankfully this was 100% reproducible in our staging environment.  What I found was very interesting.</p>
<p>Generally when there&#8217;s something running in the database that I running slower that expected, the first thing I do is figure out how to best get an accurate trace of the problem.  That involves initiating the trace immediately before the problem actions and terminating the trace immediately after those actions are complete.  That keeps dooda from creeping into your trace file.  There are a whole bunch of ways to that these days and the internet is plastered with info on how to do that.   I then just run tkprof on the resulting file with sys=no and everything else default.  That gives me the sql in order of execution  and I just follow the execution order and make note of SQL with the highest elapsed time.  I know Millsap would be disappointed but that&#8217;s usually enough technical info to figure out what to start trying to make happen faster.  Not rocket science but it usually does the trick.</p>
<p>In this case, what was extremely interesting was the non-recursive and recursive summary output found at the bottom of the tkprof file.  When I think recursive SQL I think of all the stuff Oracle has to do in the background that I can&#8217;t do much about. and user defined functions embedded in SQL somwhere.  If you embed user defined functions in SQL to hide complexity you are usually handicapping the optimizer and vastly increasing the chance that you will get some overly resource intensive activity.  Here&#8217;s what that summary looked like:</p>
<p>OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTScall</p>
<p>count       cpu    elapsed       disk      query    current        rows</p>
<p>&#8212;&#8212;- &#8212;&#8212;  &#8212;&#8212;&#8211; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;-  &#8212;&#8212;&#8212;-</p>
<p>Parse        2      0.01       0.01          0          7          0           0</p>
<p>Execute      2      0.88       5.98          0      12145      74414           2</p>
<p>Fetch        0      0.00       0.00          0          0          0           0</p>
<p>&#8212;&#8212;- &#8212;&#8212;  &#8212;&#8212;&#8211; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;-  &#8212;&#8212;&#8212;-</p>
<p>total        4      0.89       5.99          0      12152      74414           2</p>
<p>OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS</p>
<p>call     count       cpu    elapsed       disk      query    current        rows</p>
<p>&#8212;&#8212;- &#8212;&#8212;  &#8212;&#8212;&#8211; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;-  &#8212;&#8212;&#8212;-</p>
<p>Parse     2141     17.89      17.89          0          0          0           0</p>
<p>Execute 13589173    492.64     489.04          5        180          0           0</p>
<p>Fetch   13589083   4007.37    4035.89     778773  293428221        462    13589118</p>
<p>&#8212;&#8212;- &#8212;&#8212;  &#8212;&#8212;&#8211; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;-  &#8212;&#8212;&#8212;-</p>
<p>total   27180397   4517.91    4542.83     778778  293428401        462    13589118</p>
<p>13.5 million executions of recursive SQL statements.  Returning 13.5 million rows.  After I picked my jaw up off the floor, I gave myself a pep talk and started hunting through the trace file.  Now, if I keep this writing thing up, I&#8217;m will eventually start sounding like a broken record but our homegrown applications seem to be heavy on the views on top of views on top of views methodology for saving the developers some time.  What we end up with are tons of rabbit holes to crawl down when performance problems arise.  Anyways&#8230;</p>
<p>So, I went backup up the trace file and found the following SQL was executed nearly 13.5 million times.</p>
<p style="padding-left:30px;">SELECT PERIODID</p>
<p style="padding-left:30px;">FROM</p>
<p style="padding-left:30px;">PERIOD WHERE TRUNC(STARTDATE) &lt;= :B1 AND TRUNC(ENDDATE) &gt;= :B1</p>
<p>Odd.  I looked through the PL/SQL package that implemented the job, searching for this SQL.  Nope.  Eventually I found the culprit.  It was in a view and sure enough, it was a user defined function used to filter results for the current period.  This will be short on details but I spent a day and a half working this view into submission. I got the LIO&#8217;s down from ~ 17 million down to 18 thousand.  There is no doubt more that could be done (isn&#8217;t there always) but I feel like I plucked the lowest hanging fruit and after re-tracing the original job, the recursive calls fell from 13.5 million down to 4996.  More importantly the job went from lasting &gt; 2.5 hours to completing in &lt; 5 minutes.</p>
<p>My biggest problem now is stepping away from the computer before I start obsessing about all that can be done with the code base here.</p>
<p>I few things that really helped me here:</p>
<ol>
<li>Get rid of the user defined functions unless they <em>really </em>make sense to keep around.</li>
<li>If you use /*+ gather_plan_statistics */ + dbms_xplan + allstats to dig into what is going on and notice that the a-rows is way different from the e-rows from a row source that you see could explicitly have some more filters applied to it because of transitivity, don&#8217;t be scared to do that. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>If you are having trouble reading the SQL don&#8217;t be scared to start breaking it up with the &#8216;WITH&#8217; clause so you can focus on the real work.</li>
<li>If you are still having problems, start breaking out individual pieces of the SQL  and do the /*+ gather_plan_statistics */ + dbms_xplan + allstats thing on that and work your way back.</li>
</ol>
<p>Why didn&#8217;t I catch this with my AWR monitoring?  Well, it only ran once a month and it wasn&#8217;t a single SQL taking a ridiculous amount of time to run.  I do have a report that shows the top 5 mostly frequently executed SQL each day but you&#8217;d be surprised at how much internal stuff shows up on that.  (hmmm&#8230;I should probably filter that out).</p>
<p>Sorry for the lack of details but it&#8217;s beer:30 and I have an abundance of Hopslam waiting for me at home.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oraclenerd.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oraclenerd.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oraclenerd.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oraclenerd.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oraclenerd.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oraclenerd.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oraclenerd.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oraclenerd.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oraclenerd.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oraclenerd.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oraclenerd.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oraclenerd.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oraclenerd.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oraclenerd.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclenerd.wordpress.com&amp;blog=1745445&amp;post=56&amp;subd=oraclenerd&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraclenerd.wordpress.com/2011/02/18/make-the-job-run-faster-compulsive-tuning-disorder-down-the-rabbit-hole-we-go-a-few-other-comments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af368c47b4d55d4f675531ba97aedff6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cstephens16</media:title>
		</media:content>
	</item>
		<item>
		<title>A little more on check constraints (why don&#8217;t I know this stuff already)</title>
		<link>http://oraclenerd.wordpress.com/2011/02/16/a-little-more-on-check-constraints-why-dont-i-know-this-stuff-already/</link>
		<comments>http://oraclenerd.wordpress.com/2011/02/16/a-little-more-on-check-constraints-why-dont-i-know-this-stuff-already/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 21:24:52 +0000</pubDate>
		<dc:creator>cstephens16</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://oraclenerd.wordpress.com/?p=51</guid>
		<description><![CDATA[In the same meeting I spoke of yesterday, the developer whose code we were reviewing had a check constraint on a year_of_birth column defined as &#8216;year_of_birth between 1900 and 9999&#8242;.  I quickly filed it under &#60;keep it professional Chris!&#62; and suggested that the constraint offered no benefits.  I confidently suggested that what he really wanted [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclenerd.wordpress.com&amp;blog=1745445&amp;post=51&amp;subd=oraclenerd&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In the same meeting I spoke of yesterday, the developer whose code we were reviewing had a check constraint on a year_of_birth column defined as &#8216;year_of_birth between 1900 and 9999&#8242;.  I quickly filed it under &lt;keep it professional Chris!&gt; and suggested that the constraint offered no benefits.  I confidently suggested that what he really wanted was &#8216;year_of_birth &lt;= extract(year from sysdate)&#8217;.  Maybe he would want to make sure the person didn&#8217;t claim to be older than 115 years or something but he certainly didn&#8217;t want to allow years from the future.</p>
<p>Later that afternoon I get an email stating that my suggestion resulted in an ORA-02436.  Oops.  It turns out that check constraints cannot contain calls to functions that are not deterministic.  Ugh.  I should have known that. So much for this blog advertising what a knowledgeable Oracle guy I am!</p>
<p>Anyways, I responded with a list of three options.</p>
<ol>
<li>This was a very modestly sized APEX app.  Validating the data through APEX validations and calling it a day seemed perfectly reasonable.  The other two options provide no additional information to the optimizer that check constraints potentially do.  Sure you want data rules as close to the data as possible but this is so trivial that I don&#8217;t see it mattering much.</li>
<li>Define a trigger that raises an exception if the :new value violates the rule.  I generally despise triggers.  I&#8217;ve wasted far too much of my life trying to track down the source of some unexplained event only to eventually discover it has something to do with triggers.  They complicate things far more often than they simplify them.  However, I think it is commonly acknowledged that a valid use for triggers is data validation that cannot be done declaratively.  In fact I think I&#8217;ll be hearing a presentation given by Toons Koppelaars making that very same claim at Hotsos this year.</li>
<li>We just upgraded to 11G so you can play games with virtual columns but its really a kludge and I could imagine a day when the database kernel wises up to the trick in order to prevent the problems the restriction is meant to address.  I discouraged this.</li>
</ol>
<p>In the end, I think the developer is going to go with both 1 and 2.  That way you prevent unecessary submits back to the database and protect yourself against bad data getting in through some route other than the application.</p>
<p>In case anyone wants to implement an non-deterministic function into a constraint here&#8217;s an example that you can tailor to your needs (I lifted this idea from <a href="http://rwijk.blogspot.com/2007/12/check-constraints-with-sysdate.html">here</a> :</p>
<p style="padding-left:30px;">create or replace function year_in_past( in_year in table.year_of_birth%type) return varchar2 deterministic is<br />
begin<br />
return case when in_year &gt;= extract(year from sysdate) then &#8216;N&#8217; else &#8216;Y&#8217; end;<br />
end year_in_past;<br />
/<br />
alter table table1   add (year_in_past_ind as (cast(year_in_past(year_in_past) as varchar2(1))));</p>
<p>alter table table1 add constraint yip_ck1 check (year_in_past_ind = &#8216;Y&#8217;);</p>
<p>This wouldn&#8217;t work if you wanted to ensure a year was set to some future value since, as we all know, time marches on and what once was the future always becomes the past.</p>
<p>Ok, I will endeavor to post something a little farther from DBA 101 next time.</p>
<p>Chris</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oraclenerd.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oraclenerd.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oraclenerd.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oraclenerd.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oraclenerd.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oraclenerd.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oraclenerd.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oraclenerd.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oraclenerd.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oraclenerd.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oraclenerd.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oraclenerd.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oraclenerd.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oraclenerd.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclenerd.wordpress.com&amp;blog=1745445&amp;post=51&amp;subd=oraclenerd&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraclenerd.wordpress.com/2011/02/16/a-little-more-on-check-constraints-why-dont-i-know-this-stuff-already/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af368c47b4d55d4f675531ba97aedff6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cstephens16</media:title>
		</media:content>
	</item>
		<item>
		<title>Check constraints:  Not null implied?</title>
		<link>http://oraclenerd.wordpress.com/2011/02/15/check-constraints-not-null-implied/</link>
		<comments>http://oraclenerd.wordpress.com/2011/02/15/check-constraints-not-null-implied/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 17:14:31 +0000</pubDate>
		<dc:creator>cstephens16</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://oraclenerd.wordpress.com/?p=45</guid>
		<description><![CDATA[The following question was asked in a code review meeting this morning: Do check constraints imply not null? It was prompted by a column defined as not mull that also had a check constraint to ensure the column only allowed a discreet set of values. Was the &#8216;not null&#8217; part redundant? Surprisingly, no one knew [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclenerd.wordpress.com&amp;blog=1745445&amp;post=45&amp;subd=oraclenerd&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The following question was asked in a code review meeting this morning: Do check constraints imply not null? It was prompted by a column defined as not mull that also had a check constraint to ensure the column only allowed a discreet set of values. Was the &#8216;not null&#8217; part redundant?</p>
<p>Surprisingly, no one <em>knew</em> the answer.  My <em>guess</em> was that a check constraint such as &#8220;column_name in (&#8216;val1&#8242;,&#8217;val2&#8242;)&#8221; would imply the column could not contain null values and so the &#8216;not null&#8217; piece of the table ddl was redundant. I was a little embarrassed that I didn&#8217;t <em>know</em> the answer to such a seemingly basic question. Perhaps more surprisingly, the question was dropped and no one showed any further interest. You would think that a group of developers that make their living working with Oracle databases would want to <em>know</em> the answer. Some folks just don&#8217;t give a rip!</p>
<p style="padding-left:30px;">SQL&gt; CREATE TABLE TST_CHK (COL VARCHAR2(1), COL2 VARCHAR2(1));</p>
<p style="padding-left:30px;">SQL&gt; ALTER TABLE TST_CHK ADD CONSTRAINT TST_CHK1 CHECK (COL2 IN (&#8216;A&#8217;, &#8216;B&#8217;)) ENABLE;</p>
<p style="padding-left:30px;">SQL&gt; Insert into tst_chk(col, col2) values (&#8216;T&#8217;,NULL);</p>
<p style="padding-left:30px;">1 row created.</p>
<p style="padding-left:30px;">SQL&gt; Insert into tst_chk(col, col2) values (&#8216;T&#8217;,'C&#8217;);</p>
<p style="padding-left:30px;">Insert into tst_chk(col, col2) values (&#8216;T&#8217;,'C&#8217;);</p>
<p style="padding-left:30px;">ERROR at line 1:</p>
<p style="padding-left:30px;">ORA-02290: check constraint (DB_ADMIN.TST_CHK1) violated</p>
<p style="padding-left:30px;">SQL&gt;</p>
<p>So, check constraints are only enforced when the column is actually populated with a value.</p>
<p>So much for impressing the world with an earth-shattering first post about my job!  More positively, I feel I did my part for the <a href="http://www.battleagainstanyguess.com/">BAAG</a> this morning!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oraclenerd.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oraclenerd.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oraclenerd.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oraclenerd.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oraclenerd.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oraclenerd.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oraclenerd.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oraclenerd.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oraclenerd.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oraclenerd.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oraclenerd.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oraclenerd.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oraclenerd.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oraclenerd.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclenerd.wordpress.com&amp;blog=1745445&amp;post=45&amp;subd=oraclenerd&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraclenerd.wordpress.com/2011/02/15/check-constraints-not-null-implied/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af368c47b4d55d4f675531ba97aedff6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cstephens16</media:title>
		</media:content>
	</item>
		<item>
		<title>Here we go again.</title>
		<link>http://oraclenerd.wordpress.com/2011/02/12/here-we-go-again/</link>
		<comments>http://oraclenerd.wordpress.com/2011/02/12/here-we-go-again/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 16:27:06 +0000</pubDate>
		<dc:creator>cstephens16</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://oraclenerd.wordpress.com/?p=31</guid>
		<description><![CDATA[I realized this morning that I&#8217;ve started to stagnate professionally.  While I don&#8217;t think I fully understand why it started happening, I know that a good chunk of it has to do with not taking advantage of the intrinsic value of learning.  I&#8217;m happiest when I am doing things for their own sake.  Recently, I&#8217;ve [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclenerd.wordpress.com&amp;blog=1745445&amp;post=31&amp;subd=oraclenerd&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I realized this morning that I&#8217;ve started to stagnate professionally.  While I don&#8217;t think I fully understand why it started happening, I know that a good chunk of it has to do with not taking advantage of the intrinsic value of learning.  I&#8217;m happiest when I am doing things for their own sake.  Recently, I&#8217;ve caught myself being bored far too often when there is really no excuse for that.  My career as (mainly) an Oracle database guy has always afforded me the opportunity to continually challenge myself  mentally.  Why am I not constantly taking advantage of that?   The depth and breadth of the piece of software known as the Oracle database is astounding.  Beyond Oracle, I have the opportunity to become proficient at troubleshooting problems in MySQL.  Why haven&#8217;t I seized on that?  Additionally, I know that I need to get a far better handle on a general programming language (PL/SQL only gets you so far).  I keep half-assing an effort to write some Python code to make my job easier.  So much to learn and so many opportunities to grow.  WTF am I doing sitting around waiting for someone else to tell me what to do? (That is an exaggeration.).</p>
<p>Anyways, I&#8217;ve always felt like writing would greatly enhance my ability to recall some fraction of what I &#8216;learn&#8217;.  I&#8217;ve made several attempts to start writing about my experiences with Oracle and the technologies I use to manage the environment I&#8217;m responsible for.  &#8230;.here I am trying to jump start that effort again.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oraclenerd.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oraclenerd.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oraclenerd.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oraclenerd.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/oraclenerd.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/oraclenerd.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/oraclenerd.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/oraclenerd.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oraclenerd.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oraclenerd.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oraclenerd.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oraclenerd.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oraclenerd.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oraclenerd.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oraclenerd.wordpress.com&amp;blog=1745445&amp;post=31&amp;subd=oraclenerd&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://oraclenerd.wordpress.com/2011/02/12/here-we-go-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af368c47b4d55d4f675531ba97aedff6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cstephens16</media:title>
		</media:content>
	</item>
	</channel>
</rss>
