<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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: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>Comments on: Nothing Changed</title>
	<atom:link href="http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/</link>
	<description>Just another Oracle weblog</description>
	<lastBuildDate>Wed, 22 May 2013 01:50:53 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Something Changed &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/#comment-35803</link>
		<dc:creator><![CDATA[Something Changed &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Fri, 19 Mar 2010 21:50:06 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=369#comment-35803</guid>
		<description><![CDATA[[...] moments to let you know about a client I visited a few weeks ago who didn&#8217;t give me the usual &#8220;nothing&#8217;s changed&#8221; [...]]]></description>
		<content:encoded><![CDATA[<p>[...] moments to let you know about a client I visited a few weeks ago who didn&#8217;t give me the usual &#8220;nothing&#8217;s changed&#8221; [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/#comment-31534</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Sun, 20 Jul 2008 08:56:10 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=369#comment-31534</guid>
		<description><![CDATA[Hans,

A valid point.  A larger number of users would result in a global reduction of the PGA memory available for workarea operations.  

This wouldn&#039;t change the plan but, as you point out, could mean that at run-time a query might change from in-memory to one-pass, or from one-pass to multipass because of a global limit imposed by the target.]]></description>
		<content:encoded><![CDATA[<p>Hans,</p>
<p>A valid point.  A larger number of users would result in a global reduction of the PGA memory available for workarea operations.  </p>
<p>This wouldn&#8217;t change the plan but, as you point out, could mean that at run-time a query might change from in-memory to one-pass, or from one-pass to multipass because of a global limit imposed by the target.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hans</title>
		<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/#comment-31533</link>
		<dc:creator><![CDATA[Hans]]></dc:creator>
		<pubDate>Sun, 20 Jul 2008 03:49:26 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=369#comment-31533</guid>
		<description><![CDATA[Wondering whether another thing that could have changed is the &#039;number of users&#039;.  Since this involves a significant sort, is it not possible that an increase in user count could affect the PGA size, thereby potentially moving from in-memory to n-pass sorts?]]></description>
		<content:encoded><![CDATA[<p>Wondering whether another thing that could have changed is the &#8216;number of users&#8217;.  Since this involves a significant sort, is it not possible that an increase in user count could affect the PGA size, thereby potentially moving from in-memory to n-pass sorts?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Karteek</title>
		<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/#comment-31253</link>
		<dc:creator><![CDATA[Karteek]]></dc:creator>
		<pubDate>Fri, 13 Jun 2008 02:17:03 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=369#comment-31253</guid>
		<description><![CDATA[Thanks Jonathan...it helped me! Choosing date as statid was a good idea.]]></description>
		<content:encoded><![CDATA[<p>Thanks Jonathan&#8230;it helped me! Choosing date as statid was a good idea.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/#comment-31180</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Tue, 10 Jun 2008 09:59:42 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=369#comment-31180</guid>
		<description><![CDATA[Karteek,

Certainly one of the pre-emptive measures is to ensure that any time you collect statistics, backup the old statistics.  See http://jonathanlewis.wordpress.com/2006/12/03/saving-statistics/ for starters.  Another &#039;pre-emptive&#039; strategy is to accumulate a library of execution plans for every query - but since this is very labour intensive you may have to start with the more resource-intensive queries and work downwards.  One low cost, but limited, strategy is to collect the sql_id (or hash_vlaue) and plan_hash_value for statements in the library cache on a fairly regular basis - and check on statements that show intermittent changes in plans.


lascoltodelvenerdi,
The &quot;short table&quot; that became a &quot;long table&quot; is a nice example - it only takes one row for the high water mark to move, although you would still have to update the statistics if they had been previously collected.  See this as an example: http://jonathanlewis.wordpress.com/2007/07/29/nls/


Gary,
Obviously I&#039;m not going to disagree with the &quot;fix the problem that&#039;s here now&quot; - but what we&#039;re talking about is really a minor change in emphasis. You may want to work out an efficient execution plan from scratch - if I find the documentation that describes what the execution path should be, or the listing of the last known good execution plan, then I have the chance of fixing the immediate problem much faster then someone working out a good plan from first principles.

Either way - I think we would both compare the resulting good plan with the bad plan to work out why the good plan didn&#039;t appear automatically since the change may indicate an inherent instability that needs to be addressed more carefully.

lascoltodelvenerdi,
I remember working for at a company where one person wheeled a trolley loaded with computer print-out into the trading room at the start of each day, and another person wheeled it out to the shredder at the end of each day - and no-one looked at a single sheet of it during the entire day. There was a very easy option to improve the performance of the overnight batch run.]]></description>
		<content:encoded><![CDATA[<p>Karteek,</p>
<p>Certainly one of the pre-emptive measures is to ensure that any time you collect statistics, backup the old statistics.  See <a href="http://jonathanlewis.wordpress.com/2006/12/03/saving-statistics/" rel="nofollow">http://jonathanlewis.wordpress.com/2006/12/03/saving-statistics/</a> for starters.  Another &#8216;pre-emptive&#8217; strategy is to accumulate a library of execution plans for every query &#8211; but since this is very labour intensive you may have to start with the more resource-intensive queries and work downwards.  One low cost, but limited, strategy is to collect the sql_id (or hash_vlaue) and plan_hash_value for statements in the library cache on a fairly regular basis &#8211; and check on statements that show intermittent changes in plans.</p>
<p>lascoltodelvenerdi,<br />
The &#8220;short table&#8221; that became a &#8220;long table&#8221; is a nice example &#8211; it only takes one row for the high water mark to move, although you would still have to update the statistics if they had been previously collected.  See this as an example: <a href="http://jonathanlewis.wordpress.com/2007/07/29/nls/" rel="nofollow">http://jonathanlewis.wordpress.com/2007/07/29/nls/</a></p>
<p>Gary,<br />
Obviously I&#8217;m not going to disagree with the &#8220;fix the problem that&#8217;s here now&#8221; &#8211; but what we&#8217;re talking about is really a minor change in emphasis. You may want to work out an efficient execution plan from scratch &#8211; if I find the documentation that describes what the execution path should be, or the listing of the last known good execution plan, then I have the chance of fixing the immediate problem much faster then someone working out a good plan from first principles.</p>
<p>Either way &#8211; I think we would both compare the resulting good plan with the bad plan to work out why the good plan didn&#8217;t appear automatically since the change may indicate an inherent instability that needs to be addressed more carefully.</p>
<p>lascoltodelvenerdi,<br />
I remember working for at a company where one person wheeled a trolley loaded with computer print-out into the trading room at the start of each day, and another person wheeled it out to the shredder at the end of each day &#8211; and no-one looked at a single sheet of it during the entire day. There was a very easy option to improve the performance of the overnight batch run.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Slater</title>
		<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/#comment-31141</link>
		<dc:creator><![CDATA[Slater]]></dc:creator>
		<pubDate>Wed, 04 Jun 2008 11:09:07 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=369#comment-31141</guid>
		<description><![CDATA[&quot;No change in database and other components&quot; 
Rule No 1 - The only consistent is change.]]></description>
		<content:encoded><![CDATA[<p>&#8220;No change in database and other components&#8221;<br />
Rule No 1 &#8211; The only consistent is change.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lascoltodelvenerdi</title>
		<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/#comment-31140</link>
		<dc:creator><![CDATA[lascoltodelvenerdi]]></dc:creator>
		<pubDate>Wed, 04 Jun 2008 06:48:36 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=369#comment-31140</guid>
		<description><![CDATA[@Gary

&quot;where the 4.5 million rows of result set were going&quot;

You pointed out a good one!

Many times we work in a multi-tier environment and stuck with the DB while the problem is elsewhere.]]></description>
		<content:encoded><![CDATA[<p>@Gary</p>
<p>&#8220;where the 4.5 million rows of result set were going&#8221;</p>
<p>You pointed out a good one!</p>
<p>Many times we work in a multi-tier environment and stuck with the DB while the problem is elsewhere.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gary</title>
		<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/#comment-31139</link>
		<dc:creator><![CDATA[Gary]]></dc:creator>
		<pubDate>Wed, 04 Jun 2008 05:40:27 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=369#comment-31139</guid>
		<description><![CDATA[&quot;So how you do find out what was happening when things went well ?&quot;
But even if this is possible, is it actually the best approach to resolving the problem ? 
By saying &quot;nothing changed&quot;, it is more that &quot;I didn&#039;t change anything&quot;, so there&#039;s a good chance you can&#039;t undo what did change (eg which blocks Oracle chose to sample in DBMS_STATS, the order or nature of fresh incoming data...).
Or you find out the plan changed, but it leaves you none the wiser about why a different plan is being chosed. Or that the plan changed because the clustering factor changed but you don&#039;t know what caused that.
And even if you know a root cause change (eg implemented a patchset), you may still not be able to go back.

On the other hand, you can take a &#039;here and now&#039; tuning approach and look at what the SQL is doing now, consider what alternatives are available and how they might be better. You don&#039;t have different approaches for brand-new SQL (where you don&#039;t have a history), SQL that has changed (where there was a history for the old SQL but you may not be able to find it), SQL that hasn&#039;t changed where the plan has, or the plan is the same but there&#039;s more IO waits, or the plan and IO is the same but there&#039;s more idle waits... 

PS. For the OP, I wonder where the 4.5 million rows of result set were going. Maybe the holdup was in the network, writing to a destination file....]]></description>
		<content:encoded><![CDATA[<p>&#8220;So how you do find out what was happening when things went well ?&#8221;<br />
But even if this is possible, is it actually the best approach to resolving the problem ?<br />
By saying &#8220;nothing changed&#8221;, it is more that &#8220;I didn&#8217;t change anything&#8221;, so there&#8217;s a good chance you can&#8217;t undo what did change (eg which blocks Oracle chose to sample in DBMS_STATS, the order or nature of fresh incoming data&#8230;).<br />
Or you find out the plan changed, but it leaves you none the wiser about why a different plan is being chosed. Or that the plan changed because the clustering factor changed but you don&#8217;t know what caused that.<br />
And even if you know a root cause change (eg implemented a patchset), you may still not be able to go back.</p>
<p>On the other hand, you can take a &#8216;here and now&#8217; tuning approach and look at what the SQL is doing now, consider what alternatives are available and how they might be better. You don&#8217;t have different approaches for brand-new SQL (where you don&#8217;t have a history), SQL that has changed (where there was a history for the old SQL but you may not be able to find it), SQL that hasn&#8217;t changed where the plan has, or the plan is the same but there&#8217;s more IO waits, or the plan and IO is the same but there&#8217;s more idle waits&#8230; </p>
<p>PS. For the OP, I wonder where the 4.5 million rows of result set were going. Maybe the holdup was in the network, writing to a destination file&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Karen Morton</title>
		<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/#comment-31138</link>
		<dc:creator><![CDATA[Karen Morton]]></dc:creator>
		<pubDate>Wed, 04 Jun 2008 03:58:48 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=369#comment-31138</guid>
		<description><![CDATA[I think the words &quot;nothing has changed&quot; in a &quot;why did performance tank?&quot; question, should be added to a list of famous last words (if there is such a thing).  It always makes me think of the last words attributed to composer Ludwig van Beethoven:  &quot;Friends applaud, the comedy is finished.&quot;  So, now every time someone says &quot;nothing changed&quot;, I simply want to applaud and laugh.  But, given that you can&#039;t really do that in a client or colleague&#039;s face without some pretty serious possible consequences, I&#039;d say Jonathan is spot on about just having to work your way through the possibilities where change could have occurred until you find the answer.]]></description>
		<content:encoded><![CDATA[<p>I think the words &#8220;nothing has changed&#8221; in a &#8220;why did performance tank?&#8221; question, should be added to a list of famous last words (if there is such a thing).  It always makes me think of the last words attributed to composer Ludwig van Beethoven:  &#8220;Friends applaud, the comedy is finished.&#8221;  So, now every time someone says &#8220;nothing changed&#8221;, I simply want to applaud and laugh.  But, given that you can&#8217;t really do that in a client or colleague&#8217;s face without some pretty serious possible consequences, I&#8217;d say Jonathan is spot on about just having to work your way through the possibilities where change could have occurred until you find the answer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lascoltodelvenerdi</title>
		<link>http://jonathanlewis.wordpress.com/2008/05/30/nothing-changed/#comment-31136</link>
		<dc:creator><![CDATA[lascoltodelvenerdi]]></dc:creator>
		<pubDate>Tue, 03 Jun 2008 10:28:27 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=369#comment-31136</guid>
		<description><![CDATA[The phrase &quot;This query has been running for the last year with out any issues, but from last week onwards this query is taking more than 15 min to complete&quot; looks interesting!

And if you read &quot;No change in database and other components&quot; as &quot;no news tables, index or any modification to the server&quot;, you can cut-out some possibilities.

It looks like some data problems, i.e. the table was a &quot;little table&quot; but from last week it becomes a &quot;big table&quot;, so no more cache...

Another cause could be the indexes: perhaps they need rebuild, but in this case the table as grown and there was some huge update activity.

Bye.]]></description>
		<content:encoded><![CDATA[<p>The phrase &#8220;This query has been running for the last year with out any issues, but from last week onwards this query is taking more than 15 min to complete&#8221; looks interesting!</p>
<p>And if you read &#8220;No change in database and other components&#8221; as &#8220;no news tables, index or any modification to the server&#8221;, you can cut-out some possibilities.</p>
<p>It looks like some data problems, i.e. the table was a &#8220;little table&#8221; but from last week it becomes a &#8220;big table&#8221;, so no more cache&#8230;</p>
<p>Another cause could be the indexes: perhaps they need rebuild, but in this case the table as grown and there was some huge update activity.</p>
<p>Bye.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
