<?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/"
		>
<channel>
	<title>Comments on: Detect chained and migrated rows in Oracle &#8211; Part 1</title>
	<atom:link href="http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/</link>
	<description>Oracle troubleshooting, internals and performance tuning</description>
	<lastBuildDate>Mon, 15 Mar 2010 01:50:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Donatello Settembrino</title>
		<link>http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/comment-page-1/#comment-3928</link>
		<dc:creator>Donatello Settembrino</dc:creator>
		<pubDate>Thu, 25 Feb 2010 17:02:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=479#comment-3928</guid>
		<description>Hi Tanel,
Your interesting post has confirmed me a consideration that I did some time ago, or rather  to consider effectively costs and benefits.For the migrated rows it could think to do an ALTER TABEL T MOVE to allow at a migrate row to fit it in a single block. But, I think it&#039;s not very easy, because after an ALTER TABLE..MOVE I should do REBUILD of the index, because if I don&#039;t do it, the query it will not be able to use the index that remains in a unusable status. And if the indexes are more than one? The operation could start to become costly...


If I use ALTER TABLE..SHRINK SPACE I can bypass the indexes problem and reuse the space. But if my table, is a partitioned table with storical data and with several hundreds of millions of lines and I realize that there are migrated rows (and I have a performance problem) maybe I should isolate the problem at partition level and execute SHRINK on the single partition, provided that&#039;s worth it.


Surely, this conversation it&#039;s not valid for the Chained, inasmuch if a row bigger than the dimension block is chained, it will remain chained also after an ALTER TABLE MOVE or SHRINK.


Is it correct my interpretation?

Thank you a lot.
Best Regards

Donatello Settembrino</description>
		<content:encoded><![CDATA[<p>Hi Tanel,<br />
Your interesting post has confirmed me a consideration that I did some time ago, or rather  to consider effectively costs and benefits.For the migrated rows it could think to do an ALTER TABEL T MOVE to allow at a migrate row to fit it in a single block. But, I think it&#8217;s not very easy, because after an ALTER TABLE..MOVE I should do REBUILD of the index, because if I don&#8217;t do it, the query it will not be able to use the index that remains in a unusable status. And if the indexes are more than one? The operation could start to become costly&#8230;</p>
<p>If I use ALTER TABLE..SHRINK SPACE I can bypass the indexes problem and reuse the space. But if my table, is a partitioned table with storical data and with several hundreds of millions of lines and I realize that there are migrated rows (and I have a performance problem) maybe I should isolate the problem at partition level and execute SHRINK on the single partition, provided that&#8217;s worth it.</p>
<p>Surely, this conversation it&#8217;s not valid for the Chained, inasmuch if a row bigger than the dimension block is chained, it will remain chained also after an ALTER TABLE MOVE or SHRINK.</p>
<p>Is it correct my interpretation?</p>
<p>Thank you a lot.<br />
Best Regards</p>
<p>Donatello Settembrino</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tanel Poder</title>
		<link>http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/comment-page-1/#comment-3699</link>
		<dc:creator>Tanel Poder</dc:creator>
		<pubDate>Wed, 27 Jan 2010 18:23:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=479#comment-3699</guid>
		<description>&lt;a href=&quot;#comment-3599&quot; rel=&quot;nofollow&quot;&gt;@Petr&lt;/a&gt; 
Yep, its possible to do correlation analysis - IF you have correlated fluctuation in LIOs per segment and system wide stats. I&#039;ve done something similar in past with other stats, but found it to be not reliable enough in systems with lots of diverse workloads, batch jobs running etc...</description>
		<content:encoded><![CDATA[<p><a href="#comment-3599" rel="nofollow">@Petr</a><br />
Yep, its possible to do correlation analysis &#8211; IF you have correlated fluctuation in LIOs per segment and system wide stats. I&#8217;ve done something similar in past with other stats, but found it to be not reliable enough in systems with lots of diverse workloads, batch jobs running etc&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Petr</title>
		<link>http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/comment-page-1/#comment-3599</link>
		<dc:creator>Petr</dc:creator>
		<pubDate>Wed, 13 Jan 2010 10:29:25 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=479#comment-3599</guid>
		<description>Hallo Tanel,

I suppose AWR/Statspack is good starting point to find out which read intensive segments have many chained rows (and are candidates for rebuild). I wrote AWR script which shows read intensive segments with high correlation between logical reads and  some system statistics (here it would be &#039;table fetch continued row&#039;) on some day(s). 

Best Regards,
Petr</description>
		<content:encoded><![CDATA[<p>Hallo Tanel,</p>
<p>I suppose AWR/Statspack is good starting point to find out which read intensive segments have many chained rows (and are candidates for rebuild). I wrote AWR script which shows read intensive segments with high correlation between logical reads and  some system statistics (here it would be &#8216;table fetch continued row&#8217;) on some day(s). </p>
<p>Best Regards,<br />
Petr</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tanel Poder</title>
		<link>http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/comment-page-1/#comment-3292</link>
		<dc:creator>Tanel Poder</dc:creator>
		<pubDate>Sun, 06 Dec 2009 16:52:40 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=479#comment-3292</guid>
		<description>Yes, that&#039;s exactly what ENABLE ROW MOVEMENT does - it allows also row headers move around. Normally row headers don&#039;t move around even if they migrate to other blocks, that way no index updates are needed when row migrates.</description>
		<content:encoded><![CDATA[<p>Yes, that&#8217;s exactly what ENABLE ROW MOVEMENT does &#8211; it allows also row headers move around. Normally row headers don&#8217;t move around even if they migrate to other blocks, that way no index updates are needed when row migrates.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ron van Zijl</title>
		<link>http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/comment-page-1/#comment-3235</link>
		<dc:creator>Ron van Zijl</dc:creator>
		<pubDate>Thu, 03 Dec 2009 11:02:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=479#comment-3235</guid>
		<description>Hey Tanel,

Very interesting article. Have you looked into the effects of having ROW MOVEMENT enabled on the table. Especially the 11g option to combine that with an ALTER TABLE SHRINK SPACE COMPACT may relocate the header to where the block actually is.</description>
		<content:encoded><![CDATA[<p>Hey Tanel,</p>
<p>Very interesting article. Have you looked into the effects of having ROW MOVEMENT enabled on the table. Especially the 11g option to combine that with an ALTER TABLE SHRINK SPACE COMPACT may relocate the header to where the block actually is.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Blogroll Report 30/10/2009-06/11/2009 &#171; Coskan&#8217;s Approach to Oracle</title>
		<link>http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/comment-page-1/#comment-2952</link>
		<dc:creator>Blogroll Report 30/10/2009-06/11/2009 &#171; Coskan&#8217;s Approach to Oracle</dc:creator>
		<pubDate>Tue, 10 Nov 2009 18:14:47 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=479#comment-2952</guid>
		<description>[...] Tanel Poder-Detect chained and migrated rows in Oracle Part 1 [...]</description>
		<content:encoded><![CDATA[<p>[...] Tanel Poder-Detect chained and migrated rows in Oracle Part 1 [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tanel Poder</title>
		<link>http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/comment-page-1/#comment-2926</link>
		<dc:creator>Tanel Poder</dc:creator>
		<pubDate>Sat, 07 Nov 2009 23:13:08 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=479#comment-2926</guid>
		<description>Thanks Uwe and Raj!</description>
		<content:encoded><![CDATA[<p>Thanks Uwe and Raj!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Raj</title>
		<link>http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/comment-page-1/#comment-2919</link>
		<dc:creator>Raj</dc:creator>
		<pubDate>Sat, 07 Nov 2009 11:15:25 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=479#comment-2919</guid>
		<description>Tanel

Thank you very much for this piece , especially method 2 and the ratio evaluation.

When I got this  issue for the first time a couple of days back , &quot;table fetch row continued&quot; stats in v$sesstat and &quot;db file sequential read&quot; in v$session_wait are the things
I got when the table was merging about 2 million rows by comparing on the PK.  Later on , I was able to confirm this by &#039;analyze table ...partition...list chained rows into
chained_rows&#039; and then I rebuilt the table.

So, it very much complies with your first method. Though I would admit the second method is very elegant and gives us better metrics.
However, when the issue is till on , it would be very nice to do a block dump on the blocks appearing in P2 parameter of &#039;db file sequential read&#039; waits and get the confirmation.
I just found a link to detect row-chaining via block dump [by Steve Adams]. Just wanted to share.
http://www.ixora.com.au/q+a/0107/27152941.htm

---Raj</description>
		<content:encoded><![CDATA[<p>Tanel</p>
<p>Thank you very much for this piece , especially method 2 and the ratio evaluation.</p>
<p>When I got this  issue for the first time a couple of days back , &#8220;table fetch row continued&#8221; stats in v$sesstat and &#8220;db file sequential read&#8221; in v$session_wait are the things<br />
I got when the table was merging about 2 million rows by comparing on the PK.  Later on , I was able to confirm this by &#8216;analyze table &#8230;partition&#8230;list chained rows into<br />
chained_rows&#8217; and then I rebuilt the table.</p>
<p>So, it very much complies with your first method. Though I would admit the second method is very elegant and gives us better metrics.<br />
However, when the issue is till on , it would be very nice to do a block dump on the blocks appearing in P2 parameter of &#8216;db file sequential read&#8217; waits and get the confirmation.<br />
I just found a link to detect row-chaining via block dump [by Steve Adams]. Just wanted to share.<br />
<a href="http://www.ixora.com.au/q+a/0107/27152941.htm" rel="nofollow">http://www.ixora.com.au/q+a/0107/27152941.htm</a></p>
<p>&#8212;Raj</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Uwe Hesse</title>
		<link>http://blog.tanelpoder.com/2009/11/04/detect-chained-and-migrated-rows-in-oracle/comment-page-1/#comment-2905</link>
		<dc:creator>Uwe Hesse</dc:creator>
		<pubDate>Thu, 05 Nov 2009 08:17:47 +0000</pubDate>
		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=479#comment-2905</guid>
		<description>Tanel, thank you for this excellent posting about chained resp. migrated rows! 
Especially the part why migrated rows don&#039;t matter much in case of full table scans and the part about how to determine, whether row migration is a problem at all was very interesting to me. 
Keep up your good work!
Kind regards
Uwe</description>
		<content:encoded><![CDATA[<p>Tanel, thank you for this excellent posting about chained resp. migrated rows!<br />
Especially the part why migrated rows don&#8217;t matter much in case of full table scans and the part about how to determine, whether row migration is a problem at all was very interesting to me.<br />
Keep up your good work!<br />
Kind regards<br />
Uwe</p>
]]></content:encoded>
	</item>
</channel>
</rss>
