<?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: Private Redo</title>
	<atom:link href="http://jonathanlewis.wordpress.com/2010/12/23/private-redo/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/</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: Wellington Prado</title>
		<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/#comment-54999</link>
		<dc:creator><![CDATA[Wellington Prado]]></dc:creator>
		<pubDate>Thu, 25 Apr 2013 20:23:40 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=5362#comment-54999</guid>
		<description><![CDATA[Hi Jonathan,

 I think I found the problem I mentioned above! My database uses Oracle Golden Gate and because of this I had to enable Database supplemental logging and this setting disable IMU, Am I right ?

 After I read this paper http://www.teamycc.com/rmoug_2008_conference/PDF/Haisley.pdf  I saw some restrictions that disable IMU and I was very sad!. I hope that in the next releases it can improve.

 Thank you!]]></description>
		<content:encoded><![CDATA[<p>Hi Jonathan,</p>
<p> I think I found the problem I mentioned above! My database uses Oracle Golden Gate and because of this I had to enable Database supplemental logging and this setting disable IMU, Am I right ?</p>
<p> After I read this paper <a href="http://www.teamycc.com/rmoug_2008_conference/PDF/Haisley.pdf" rel="nofollow">http://www.teamycc.com/rmoug_2008_conference/PDF/Haisley.pdf</a>  I saw some restrictions that disable IMU and I was very sad!. I hope that in the next releases it can improve.</p>
<p> Thank you!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wellington Prado</title>
		<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/#comment-54899</link>
		<dc:creator><![CDATA[Wellington Prado]]></dc:creator>
		<pubDate>Tue, 23 Apr 2013 00:57:53 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=5362#comment-54899</guid>
		<description><![CDATA[Hi Jonathan, how are you  ?
  I started reading your awesome book &quot;Oracle Core&quot; and now I&#039;m runing the script core_demo_02b.sql in the page 15 of chapter 2 in Oracle Version 11.2.0.1 OEL 6.1 x86_64 .
  The results about redo copy/redo allocation/IN memory undo latch/ redo entries and redo size were not what I expected. There was some modification in Version 11.2.0.1 ? I know that things often change between versions but in this situation the results were more like the version of the Oracle 9i  than Oracle 10g. Did I do something wrong?

&quot;I put the results on the link below to get better understanding. Sorry if this is not useful.&quot;

http://pastebin.com/skFJ4ga8

Thank you]]></description>
		<content:encoded><![CDATA[<p>Hi Jonathan, how are you  ?<br />
  I started reading your awesome book &#8220;Oracle Core&#8221; and now I&#8217;m runing the script core_demo_02b.sql in the page 15 of chapter 2 in Oracle Version 11.2.0.1 OEL 6.1 x86_64 .<br />
  The results about redo copy/redo allocation/IN memory undo latch/ redo entries and redo size were not what I expected. There was some modification in Version 11.2.0.1 ? I know that things often change between versions but in this situation the results were more like the version of the Oracle 9i  than Oracle 10g. Did I do something wrong?</p>
<p>&#8220;I put the results on the link below to get better understanding. Sorry if this is not useful.&#8221;</p>
<p><a href="http://pastebin.com/skFJ4ga8" rel="nofollow">http://pastebin.com/skFJ4ga8</a></p>
<p>Thank you</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: OUGN Spring Seminar Day 3 &#124; Oracle Administrators Blog - by Aman Sood</title>
		<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/#comment-45730</link>
		<dc:creator><![CDATA[OUGN Spring Seminar Day 3 &#124; Oracle Administrators Blog - by Aman Sood]]></dc:creator>
		<pubDate>Mon, 26 Mar 2012 03:45:41 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=5362#comment-45730</guid>
		<description><![CDATA[[...] Oracle Database Architecture, followed by a deeper dive into Redo. Some of the technical details are here, while almost everything about the presentation can be found in the second chapter of his new [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Oracle Database Architecture, followed by a deeper dive into Redo. Some of the technical details are here, while almost everything about the presentation can be found in the second chapter of his new [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: OUGN Spring Seminar Day 3 &#171; The Oracle Instructor</title>
		<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/#comment-45726</link>
		<dc:creator><![CDATA[OUGN Spring Seminar Day 3 &#171; The Oracle Instructor]]></dc:creator>
		<pubDate>Sun, 25 Mar 2012 17:21:29 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=5362#comment-45726</guid>
		<description><![CDATA[[...] Oracle Database Architecture, followed by a deeper dive into Redo. Some of the technical details are here, while almost everything about the presentation can be found in the second chapter of his new [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Oracle Database Architecture, followed by a deeper dive into Redo. Some of the technical details are here, while almost everything about the presentation can be found in the second chapter of his new [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/#comment-41650</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Wed, 07 Sep 2011 15:44:50 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=5362#comment-41650</guid>
		<description><![CDATA[berusadia,
See my reply to your other post: http://jonathanlewis.wordpress.com/oracle-core/oc-2-undo-and-redo/

Remember that in all versions of Oracle the redo vectors are copied into the redo buffer before any blocks are changes. This is true in all versions of Oracle; but the sequence of the redo change vectors, and how they are combined into redo records changes in 10g.]]></description>
		<content:encoded><![CDATA[<p>berusadia,<br />
See my reply to your other post: <a href="http://jonathanlewis.wordpress.com/oracle-core/oc-2-undo-and-redo/" rel="nofollow">http://jonathanlewis.wordpress.com/oracle-core/oc-2-undo-and-redo/</a></p>
<p>Remember that in all versions of Oracle the redo vectors are copied into the redo buffer before any blocks are changes. This is true in all versions of Oracle; but the sequence of the redo change vectors, and how they are combined into redo records changes in 10g.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: berusadla</title>
		<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/#comment-41646</link>
		<dc:creator><![CDATA[berusadla]]></dc:creator>
		<pubDate>Wed, 07 Sep 2011 10:42:31 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=5362#comment-41646</guid>
		<description><![CDATA[Hi Jonathan,

OTN Thread “In Memory Undo”. - in this thread , you explaned very well ..and its really excellent 
One question - the REDO /UNDO are generated  (chaneg vectors are prepared) just before when Oracle is ready to change a block in &quot;current mode&quot;- is it correct ? (in ALL Version of oracle)

I mean 

Oracle will get the block in current mode 
preapre the change vectors for undo/data block
change the undo block in current mode
chnage the data block in current mode
commit 

Thanks for your time ..]]></description>
		<content:encoded><![CDATA[<p>Hi Jonathan,</p>
<p>OTN Thread “In Memory Undo”. &#8211; in this thread , you explaned very well ..and its really excellent<br />
One question &#8211; the REDO /UNDO are generated  (chaneg vectors are prepared) just before when Oracle is ready to change a block in &#8220;current mode&#8221;- is it correct ? (in ALL Version of oracle)</p>
<p>I mean </p>
<p>Oracle will get the block in current mode<br />
preapre the change vectors for undo/data block<br />
change the undo block in current mode<br />
chnage the data block in current mode<br />
commit </p>
<p>Thanks for your time ..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: IMU&#38;PRVS（译） &#124; 数据块的DBA之路</title>
		<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/#comment-40899</link>
		<dc:creator><![CDATA[IMU&#38;PRVS（译） &#124; 数据块的DBA之路]]></dc:creator>
		<pubDate>Thu, 30 Jun 2011 17:10:49 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=5362#comment-40899</guid>
		<description><![CDATA[[...] 1 IMU undo allocation size                             1,000 出处：http://jonathanlewis.wordpress.com/2010/12/23/private-redo/      [...]]]></description>
		<content:encoded><![CDATA[<p>[...] 1 IMU undo allocation size                             1,000 出处：http://jonathanlewis.wordpress.com/2010/12/23/private-redo/      [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Audit Ouch! &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/#comment-40573</link>
		<dc:creator><![CDATA[Audit Ouch! &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Fri, 27 May 2011 17:39:07 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=5362#comment-40573</guid>
		<description><![CDATA[[...] ought to be slightly less than 1,000 because the first 40 or 50 should be accumulated in the private redo and in-memory undo areas. So we have about 950 redo entries too many; where did they come from [...]]]></description>
		<content:encoded><![CDATA[<p>[...] ought to be slightly less than 1,000 because the first 40 or 50 should be accumulated in the private redo and in-memory undo areas. So we have about 950 redo entries too many; where did they come from [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Redo &#171; Oracle Scratchpad</title>
		<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/#comment-39013</link>
		<dc:creator><![CDATA[Redo &#171; Oracle Scratchpad]]></dc:creator>
		<pubDate>Mon, 03 Jan 2011 19:40:34 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=5362#comment-39013</guid>
		<description><![CDATA[[...] couple of days ago I published a link to some comments I had made on OTN about differences in redo generation between 10g and earlier [...]]]></description>
		<content:encoded><![CDATA[<p>[...] couple of days ago I published a link to some comments I had made on OTN about differences in redo generation between 10g and earlier [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Lewis</title>
		<link>http://jonathanlewis.wordpress.com/2010/12/23/private-redo/#comment-38915</link>
		<dc:creator><![CDATA[Jonathan Lewis]]></dc:creator>
		<pubDate>Thu, 30 Dec 2010 13:21:16 +0000</pubDate>
		<guid isPermaLink="false">http://jonathanlewis.wordpress.com/?p=5362#comment-38915</guid>
		<description><![CDATA[Rendy,
If you look at &lt;em&gt;&lt;strong&gt;x$kcrfstrand&lt;/strong&gt;&lt;/em&gt; you can see some information about redo threads (buffers), both public and private. In the example below I have 2 public threads and 10 private threads, but four of the private threads have been dynamically disabled so only 6 of the private threads are showing a buffer address.
[sourcecode gutter=&quot;false&quot;]
select 
	indx, ptr_kcrf_pvt_strand, strand_size_kcrfa 
from 
	x$kcrfstrand
;


      INDX PTR_KCRF STRAND_SIZE_KCRFA
---------- -------- -----------------
         0 00                 3494400	public
         1 00                 3494400
         2 20F27C80             66560	private
         3 20F38080             66560	
         4 20F48480             66560
         5 20F58880             66560
         6 20F68C80             66560
         7 20F79080             66560
         8 00                   66560	dynamically disabled
         9 00                   66560
        10 00                   66560
        11 00                   66560

[/sourcecode]

If you look at &lt;em&gt;&lt;strong&gt;x$ktifp&lt;/strong&gt;&lt;/em&gt; you can see information about the undo buffers, including the address of the buffer and the address (when it&#039;s in use) of the associated private redo buffer. In this example I&#039;ve got one live transaction that has inserted three rows of about 2,000 bytes each into a table, one row at a time. The query shows the start, &quot;current highwater&quot; mark and usage - for the 10 IMU buffers, with one buffer showing the same information for the associated redo buffer.  Notice how the redo buffer usage is about 8K while the undo buffer usage is about 1KB:

[sourcecode gutter=&quot;false&quot;]
select
	ktifpno,
	ktifpxcb				tx_addr,
	ktifpupb				undo_start,
	ktifpupc				undo_cur,
	to_number(ktifpupc,&#039;XXXXXXXX&#039;) -
		to_number(ktifpupb,&#039;XXXXXXXX&#039;)	undo_usage,
	ktifprpb				redo_start,
	ktifprpc				redo_cur,
	to_number(ktifprpc,&#039;XXXXXXXX&#039;) -
		to_number(ktifprpb,&#039;XXXXXXXX&#039;)	redo_usage
from
	x$ktifp
order by
	ktifpno
/

   KTIFPNO TX_ADDR  UNDO_STA UNDO_CUR UNDO_USAGE REDO_STA REDO_CUR REDO_USAGE
---------- -------- -------- -------- ---------- -------- -------- ----------
         0 00       20FCB800 20FCB800          0 00       00                0
         1 20EFB500 20FDC400 20FDC7E8       1000 20F38080 20F3A21C       8604
         2 00       20FED000 20FED000          0 00       00                0
         3 00       20435000 20435000          0 00       00                0
         4 00       20445C00 20445C00          0 00       00                0
         5 00       20456800 20456800          0 00       00                0
         6 00       20467400 20467400          0 00       00                0
         7 00       20478000 20478000          0 00       00                0
         8 00       20488C00 20488C00          0 00       00                0
         9 00       20499800 20499800          0 00       00                0
[/sourcecode]

Just to demonstrate that the undo and redo buffers really are separate, and the &quot;redo for the undo&quot; doesn&#039;t go into the redo buffer. This is what I get after I commmit, and then start a new transaction that deletes those three rows:

[sourcecode gutter=&quot;false&quot;]
   KTIFPNO TX_ADDR  UNDO_STA UNDO_CUR UNDO_USAGE REDO_STA REDO_CUR REDO_USAGE
---------- -------- -------- -------- ---------- -------- -------- ----------
         0 00       20FCB800 20FCB800          0 00       00                0
         1 20EFB500 20FDC400 20FDF218      11800 20F38080 20F38428        936
         2 00       20FED000 20FED000          0 00       00                0
         3 00       20435000 20435000          0 00       00                0
         4 00       20445C00 20445C00          0 00       00                0
         5 00       20456800 20456800          0 00       00                0
         6 00       20467400 20467400          0 00       00                0
         7 00       20478000 20478000          0 00       00                0
         8 00       20488C00 20488C00          0 00       00                0
         9 00       20499800 20499800          0 00       00                0
[/sourcecode]

Notice how the undo buffer has now used 11KB while the redo buffer has used only 1KB.

In passing, you may think that the volumes recorded in these structures are larger than seems necessary. You&#039;d be right (in a way): there are overheads in these buffers that do not get copied into the redo log or undo blocks so, for example, after I committed the insert my session showed the following related stats:

[sourcecode gutter=&quot;false&quot;]
Name                                                 Value
----                                                 -----
redo entries                                             1
redo size                                            6,944      -- not 8,604

undo change vector size                                256    -- not 1,000
IMU commits                                              1
IMU undo allocation size                             1,000

[/sourcecode]]]></description>
		<content:encoded><![CDATA[<p>Rendy,<br />
If you look at <em><strong>x$kcrfstrand</strong></em> you can see some information about redo threads (buffers), both public and private. In the example below I have 2 public threads and 10 private threads, but four of the private threads have been dynamically disabled so only 6 of the private threads are showing a buffer address.</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
select 
	indx, ptr_kcrf_pvt_strand, strand_size_kcrfa 
from 
	x$kcrfstrand
;


      INDX PTR_KCRF STRAND_SIZE_KCRFA
---------- -------- -----------------
         0 00                 3494400	public
         1 00                 3494400
         2 20F27C80             66560	private
         3 20F38080             66560	
         4 20F48480             66560
         5 20F58880             66560
         6 20F68C80             66560
         7 20F79080             66560
         8 00                   66560	dynamically disabled
         9 00                   66560
        10 00                   66560
        11 00                   66560

</pre>
<p>If you look at <em><strong>x$ktifp</strong></em> you can see information about the undo buffers, including the address of the buffer and the address (when it&#8217;s in use) of the associated private redo buffer. In this example I&#8217;ve got one live transaction that has inserted three rows of about 2,000 bytes each into a table, one row at a time. The query shows the start, &#8220;current highwater&#8221; mark and usage &#8211; for the 10 IMU buffers, with one buffer showing the same information for the associated redo buffer.  Notice how the redo buffer usage is about 8K while the undo buffer usage is about 1KB:</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
select
	ktifpno,
	ktifpxcb				tx_addr,
	ktifpupb				undo_start,
	ktifpupc				undo_cur,
	to_number(ktifpupc,'XXXXXXXX') -
		to_number(ktifpupb,'XXXXXXXX')	undo_usage,
	ktifprpb				redo_start,
	ktifprpc				redo_cur,
	to_number(ktifprpc,'XXXXXXXX') -
		to_number(ktifprpb,'XXXXXXXX')	redo_usage
from
	x$ktifp
order by
	ktifpno
/

   KTIFPNO TX_ADDR  UNDO_STA UNDO_CUR UNDO_USAGE REDO_STA REDO_CUR REDO_USAGE
---------- -------- -------- -------- ---------- -------- -------- ----------
         0 00       20FCB800 20FCB800          0 00       00                0
         1 20EFB500 20FDC400 20FDC7E8       1000 20F38080 20F3A21C       8604
         2 00       20FED000 20FED000          0 00       00                0
         3 00       20435000 20435000          0 00       00                0
         4 00       20445C00 20445C00          0 00       00                0
         5 00       20456800 20456800          0 00       00                0
         6 00       20467400 20467400          0 00       00                0
         7 00       20478000 20478000          0 00       00                0
         8 00       20488C00 20488C00          0 00       00                0
         9 00       20499800 20499800          0 00       00                0
</pre>
<p>Just to demonstrate that the undo and redo buffers really are separate, and the &#8220;redo for the undo&#8221; doesn&#8217;t go into the redo buffer. This is what I get after I commmit, and then start a new transaction that deletes those three rows:</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
   KTIFPNO TX_ADDR  UNDO_STA UNDO_CUR UNDO_USAGE REDO_STA REDO_CUR REDO_USAGE
---------- -------- -------- -------- ---------- -------- -------- ----------
         0 00       20FCB800 20FCB800          0 00       00                0
         1 20EFB500 20FDC400 20FDF218      11800 20F38080 20F38428        936
         2 00       20FED000 20FED000          0 00       00                0
         3 00       20435000 20435000          0 00       00                0
         4 00       20445C00 20445C00          0 00       00                0
         5 00       20456800 20456800          0 00       00                0
         6 00       20467400 20467400          0 00       00                0
         7 00       20478000 20478000          0 00       00                0
         8 00       20488C00 20488C00          0 00       00                0
         9 00       20499800 20499800          0 00       00                0
</pre>
<p>Notice how the undo buffer has now used 11KB while the redo buffer has used only 1KB.</p>
<p>In passing, you may think that the volumes recorded in these structures are larger than seems necessary. You&#8217;d be right (in a way): there are overheads in these buffers that do not get copied into the redo log or undo blocks so, for example, after I committed the insert my session showed the following related stats:</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
Name                                                 Value
----                                                 -----
redo entries                                             1
redo size                                            6,944      -- not 8,604

undo change vector size                                256    -- not 1,000
IMU commits                                              1
IMU undo allocation size                             1,000

</pre>
]]></content:encoded>
	</item>
</channel>
</rss>
