<?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: Undone</title>
	<atom:link href="http://jonathanlewis.wordpress.com/2009/10/07/undone/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonathanlewis.wordpress.com/2009/10/07/undone/</link>
	<description>Just another Oracle weblog</description>
	<lastBuildDate>Mon, 20 May 2013 01:44:54 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Blogroll Report 02/10/2009-09/10/2009 &#171; Coskan&#8217;s Approach to Oracle</title>
		<link>http://jonathanlewis.wordpress.com/2009/10/07/undone/#comment-34693</link>
		<dc:creator><![CDATA[Blogroll Report 02/10/2009-09/10/2009 &#171; Coskan&#8217;s Approach to Oracle]]></dc:creator>
		<pubDate>Wed, 21 Oct 2009 23:29:56 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=2293#comment-34693</guid>
		<description><![CDATA[[...] Jonathan Lewis- Undone [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Jonathan Lewis- Undone [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2009/10/07/undone/#comment-34601</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Sat, 10 Oct 2009 12:27:20 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=2293#comment-34601</guid>
		<description><![CDATA[Amit,

I think I&#039;d make a couple of changes to that sequence - but the important assumption I am making is that you can&#039;t steal extents out of order.

Any short text description is going to be a little flawed, but imagine the current segment having six extents, and the small transaction started in segment three. So we have:

1, 2, 3x, 4, 5, 6

As time passes, and assuming the transactions in extents 1 and 2 have committed, new transactions can keep on going around the ring of extents - at some point we could imagine the segment looking like this:

3x, 4, 5, 6, 1, 2

The segment hasn&#039;t extended, and extents 1 and 2 haven&#039;t really moved, but we can imagine that the segment starts at extent 3.

My working hypothesis is that even if every transaction that started in extent 4 committed a long time ago, if Oracle needs to add a new extent to the end of the segment it cannot &quot;steal&quot; an extent out of order - so it cannot rearrange the extents in the order:

3x, 5, 6, 1, 2, 4

So every extent from 3 onwards is untouchable until the transaction in extent 3 commits.]]></description>
		<content:encoded><![CDATA[<p>Amit,</p>
<p>I think I&#8217;d make a couple of changes to that sequence &#8211; but the important assumption I am making is that you can&#8217;t steal extents out of order.</p>
<p>Any short text description is going to be a little flawed, but imagine the current segment having six extents, and the small transaction started in segment three. So we have:</p>
<p>1, 2, 3x, 4, 5, 6</p>
<p>As time passes, and assuming the transactions in extents 1 and 2 have committed, new transactions can keep on going around the ring of extents &#8211; at some point we could imagine the segment looking like this:</p>
<p>3x, 4, 5, 6, 1, 2</p>
<p>The segment hasn&#8217;t extended, and extents 1 and 2 haven&#8217;t really moved, but we can imagine that the segment starts at extent 3.</p>
<p>My working hypothesis is that even if every transaction that started in extent 4 committed a long time ago, if Oracle needs to add a new extent to the end of the segment it cannot &#8220;steal&#8221; an extent out of order &#8211; so it cannot rearrange the extents in the order:</p>
<p>3x, 5, 6, 1, 2, 4</p>
<p>So every extent from 3 onwards is untouchable until the transaction in extent 3 commits.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Amit Poddar</title>
		<link>http://jonathanlewis.wordpress.com/2009/10/07/undone/#comment-34600</link>
		<dc:creator><![CDATA[Amit Poddar]]></dc:creator>
		<pubDate>Fri, 09 Oct 2009 23:57:10 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=2293#comment-34600</guid>
		<description><![CDATA[Hi jonathan,

I thought 

1. Oracle will try to steal expired extents from the same segment
2. Oracle will then try to steal expired extents from other undo segments
3. Oracle will try to steal unexpired inactive extents from the same segment
4. Oracle will try to steal unexpired inactive extents from the other undo segments.
5. Oracle will try to extend the undo segment
6. Oracle will try to extend the tablespace (if autoextend)
7. Throw an error.

So it this case shouldn&#039;t oracle try to steal expired/unexpired extents from the _SYSSMU4$

Or my understanding in incorrect ?

thanks]]></description>
		<content:encoded><![CDATA[<p>Hi jonathan,</p>
<p>I thought </p>
<p>1. Oracle will try to steal expired extents from the same segment<br />
2. Oracle will then try to steal expired extents from other undo segments<br />
3. Oracle will try to steal unexpired inactive extents from the same segment<br />
4. Oracle will try to steal unexpired inactive extents from the other undo segments.<br />
5. Oracle will try to extend the undo segment<br />
6. Oracle will try to extend the tablespace (if autoextend)<br />
7. Throw an error.</p>
<p>So it this case shouldn&#8217;t oracle try to steal expired/unexpired extents from the _SYSSMU4$</p>
<p>Or my understanding in incorrect ?</p>
<p>thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2009/10/07/undone/#comment-34598</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Fri, 09 Oct 2009 15:22:16 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=2293#comment-34598</guid>
		<description><![CDATA[Oracler,
I think Stew Ashton has answered your questions. 

Stew,
Just one little detail for clarification - the transaction acquires a block at a time, not an extent; but the consequence, of course, is that the extent is effectively locked.

srivenu,

Unless that parameter has changed its purpose recently, it has nothing to do with the problem. It used to relate to RAC (or OPS) systems and public (manual) rollback segments, and told each instance the minimum number of segments they had to acquire on startup.]]></description>
		<content:encoded><![CDATA[<p>Oracler,<br />
I think Stew Ashton has answered your questions. </p>
<p>Stew,<br />
Just one little detail for clarification &#8211; the transaction acquires a block at a time, not an extent; but the consequence, of course, is that the extent is effectively locked.</p>
<p>srivenu,</p>
<p>Unless that parameter has changed its purpose recently, it has nothing to do with the problem. It used to relate to RAC (or OPS) systems and public (manual) rollback segments, and told each instance the minimum number of segments they had to acquire on startup.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: srivenu</title>
		<link>http://jonathanlewis.wordpress.com/2009/10/07/undone/#comment-34595</link>
		<dc:creator><![CDATA[srivenu]]></dc:creator>
		<pubDate>Thu, 08 Oct 2009 17:58:46 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=2293#comment-34595</guid>
		<description><![CDATA[Jonathan,
to avoid recurrence of the issue did you suggest changing transactions_per_rollback_segment to 1 on the dev instance ?
regards
srivenu]]></description>
		<content:encoded><![CDATA[<p>Jonathan,<br />
to avoid recurrence of the issue did you suggest changing transactions_per_rollback_segment to 1 on the dev instance ?<br />
regards<br />
srivenu</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stew Ashton</title>
		<link>http://jonathanlewis.wordpress.com/2009/10/07/undone/#comment-34592</link>
		<dc:creator><![CDATA[Stew Ashton]]></dc:creator>
		<pubDate>Thu, 08 Oct 2009 14:10:12 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=2293#comment-34592</guid>
		<description><![CDATA[Sorry, I should have mentioned that the code in 1) is based on an answer in asktom.oracle.com.]]></description>
		<content:encoded><![CDATA[<p>Sorry, I should have mentioned that the code in 1) is based on an answer in asktom.oracle.com.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stew Ashton</title>
		<link>http://jonathanlewis.wordpress.com/2009/10/07/undone/#comment-34591</link>
		<dc:creator><![CDATA[Stew Ashton]]></dc:creator>
		<pubDate>Thu, 08 Oct 2009 14:06:17 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=2293#comment-34591</guid>
		<description><![CDATA[Oracler,
1) All the sessions listed were holding locks.  The missing piece is: which session was using which undo segment?
[sourcecode]
select  s.sid, s.serial#, r.segment_name
from    v$session s
join    v$transaction t on s.taddr = t.addr
join    DBA_ROLLBACK_SEGS r on r.segment_id = t.xidusn;
[/sourcecode]
2) If I read Jonathan correctly, an EXTENT is allocated, not a SEGMENT.  Extents can be reused or added freely at the end of the segment, but the starting point remains the same as long as the first extent is still being used.]]></description>
		<content:encoded><![CDATA[<p>Oracler,<br />
1) All the sessions listed were holding locks.  The missing piece is: which session was using which undo segment?</p>
<pre class="brush: plain; title: ; notranslate">
select  s.sid, s.serial#, r.segment_name
from    v$session s
join    v$transaction t on s.taddr = t.addr
join    DBA_ROLLBACK_SEGS r on r.segment_id = t.xidusn;
</pre>
<p>2) If I read Jonathan correctly, an EXTENT is allocated, not a SEGMENT.  Extents can be reused or added freely at the end of the segment, but the starting point remains the same as long as the first extent is still being used.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Oracler</title>
		<link>http://jonathanlewis.wordpress.com/2009/10/07/undone/#comment-34590</link>
		<dc:creator><![CDATA[Oracler]]></dc:creator>
		<pubDate>Thu, 08 Oct 2009 12:10:24 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=2293#comment-34590</guid>
		<description><![CDATA[I have few questions:

1) How did you come to know that it was session 662 which was holding a lock?
2) When a segment is already allocated to a particular session and is not being used then why/how does Oracle allocate more and more segments into it and make it fatter and fatter until it gets obese.]]></description>
		<content:encoded><![CDATA[<p>I have few questions:</p>
<p>1) How did you come to know that it was session 662 which was holding a lock?<br />
2) When a segment is already allocated to a particular session and is not being used then why/how does Oracle allocate more and more segments into it and make it fatter and fatter until it gets obese.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
