<?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: Oracle hidden costs revealed, Part2 &#8211; Using DTrace to find why writes in SYSTEM tablespace are slower than in others</title>
	<atom:link href="http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/</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: Tanel Poder</title>
		<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/comment-page-1/#comment-1544</link>
		<dc:creator>Tanel Poder</dc:creator>
		<pubDate>Tue, 12 May 2009 21:39:56 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/#comment-1544</guid>
		<description>Hi Paresh,

As far as I know it should affect only SYSTEM tablespace, mainly because critical stuff - data dictionary is in there. In SYSAUX you don&#039;t have such critical stuff but rather just some supporting things..</description>
		<content:encoded><![CDATA[<p>Hi Paresh,</p>
<p>As far as I know it should affect only SYSTEM tablespace, mainly because critical stuff &#8211; data dictionary is in there. In SYSAUX you don&#8217;t have such critical stuff but rather just some supporting things..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paresh</title>
		<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/comment-page-1/#comment-1543</link>
		<dc:creator>Paresh</dc:creator>
		<pubDate>Tue, 12 May 2009 21:35:40 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/#comment-1543</guid>
		<description>This article is awesome, interesting finding. Thank you very much for sharing with Oracle community. Do you have any idea, is this true for sysaux tablespace as well?</description>
		<content:encoded><![CDATA[<p>This article is awesome, interesting finding. Thank you very much for sharing with Oracle community. Do you have any idea, is this true for sysaux tablespace as well?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shiv</title>
		<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/comment-page-1/#comment-575</link>
		<dc:creator>Shiv</dc:creator>
		<pubDate>Fri, 07 Nov 2008 23:20:21 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/#comment-575</guid>
		<description>Awesome. I am not a oracle/DB person, but the analysis itself makes me interested in looking into it !</description>
		<content:encoded><![CDATA[<p>Awesome. I am not a oracle/DB person, but the analysis itself makes me interested in looking into it !</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: 老熊的三分地-Oracle、UNIX &#187; Blog Archive &#187; db_block_checking和db_block_checksum III</title>
		<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/comment-page-1/#comment-576</link>
		<dc:creator>老熊的三分地-Oracle、UNIX &#187; Blog Archive &#187; db_block_checking和db_block_checksum III</dc:creator>
		<pubDate>Thu, 06 Nov 2008 06:27:11 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/#comment-576</guid>
		<description>[...] 对这两个参数引起的性能差异，有兴趣的可参考Oracle hidden costs revealed, Part2 - Using DTrace to find why writes in SYSTEM tablespace are slowe... &#171; db_block_checking和db_block_checksum II [...]</description>
		<content:encoded><![CDATA[<p>[...] 对这两个参数引起的性能差异，有兴趣的可参考Oracle hidden costs revealed, Part2 &#8211; Using DTrace to find why writes in SYSTEM tablespace are slowe&#8230; &laquo; db_block_checking和db_block_checksum II [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tanelp</title>
		<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/comment-page-1/#comment-596</link>
		<dc:creator>tanelp</dc:creator>
		<pubDate>Mon, 15 Sep 2008 11:59:40 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/#comment-596</guid>
		<description>Hi Ricardo,

The top of the stack says these 711 samples (of 2920) were spent allocating memory (and not doing block checking)

The reason is that connect by queries are recursive and if you run a query with connect by level &lt;100000, Oracle needs to keep allocating memory for cursor work heap.

I&#039;ve blogged about it previously:

http://blog.tanelpoder.com/2008/06/08/generating-lots-of-rows-using-connect-by-safely/

You could run your test with the query I proposed there to elimiate the memory allocation issue.

Another reason why the block checking code may be less visible in your test case is that with bulk inserts the block checking can probably be done in a block at a time &quot;bulk fashion&quot; as well but for a tight PL/SQL loop it has to be done after each row insert separately.

The second stack with 211 samples is Solaris kernel pagefault code, which initializes zero-filled pages for your process when they&#039;re touched the first time.</description>
		<content:encoded><![CDATA[<p>Hi Ricardo,</p>
<p>The top of the stack says these 711 samples (of 2920) were spent allocating memory (and not doing block checking)</p>
<p>The reason is that connect by queries are recursive and if you run a query with connect by level &lt;100000, Oracle needs to keep allocating memory for cursor work heap.</p>
<p>I&#8217;ve blogged about it previously:</p>
<p><a href="http://blog.tanelpoder.com/2008/06/08/generating-lots-of-rows-using-connect-by-safely/" rel="nofollow">http://blog.tanelpoder.com/2008/06/08/generating-lots-of-rows-using-connect-by-safely/</a></p>
<p>You could run your test with the query I proposed there to elimiate the memory allocation issue.</p>
<p>Another reason why the block checking code may be less visible in your test case is that with bulk inserts the block checking can probably be done in a block at a time &#8220;bulk fashion&#8221; as well but for a tight PL/SQL loop it has to be done after each row insert separately.</p>
<p>The second stack with 211 samples is Solaris kernel pagefault code, which initializes zero-filled pages for your process when they&#8217;re touched the first time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ricardo</title>
		<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/comment-page-1/#comment-595</link>
		<dc:creator>Ricardo</dc:creator>
		<pubDate>Mon, 15 Sep 2008 10:35:01 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/#comment-595</guid>
		<description>Hi Tanel,

 I have tested the example and works as you say with the associated problem. However, when the insert is done like this:

 insert into t2 select rownum from dual connect by level &lt;= 100000;

The output generated is (the two last samples):

221 samples with stack below
__________________
unix`hwblkclr
unix`pagezero
genunix`anon_zero
genunix`segvn_faultpage
genunix`segvn_fault
genunix`as_fault
unix`pagefault
unix`trap
unix`_cmntrap

711 samples with stack below
__________________
kghbshrt
kghalo
kghgex
kghfnd
kghprmalo
kghalp
kxsWorkHeapAllocPerm
qercbiPushState
qercbiFetch
qercoFetch
rwsfcd
insfch
insdrv
inscovexe
insExecStmtExecIniEngine
insexe
opiexe
kpoal8
opiodr
ttcpip
opitsk
opiino
opiodr
opidrv
sou2o
opimai_real
main
0xd7de4c

2920 Total samples captured

Obviously the way of the insert done makes sense, but why? Isn´t there block checking in direct-path-insert as the checking is done in the buffer cache?

 Thank you for this wonderful blog Tanel!</description>
		<content:encoded><![CDATA[<p>Hi Tanel,</p>
<p> I have tested the example and works as you say with the associated problem. However, when the insert is done like this:</p>
<p> insert into t2 select rownum from dual connect by level &lt;= 100000;</p>
<p>The output generated is (the two last samples):</p>
<p>221 samples with stack below<br />
__________________<br />
unix`hwblkclr<br />
unix`pagezero<br />
genunix`anon_zero<br />
genunix`segvn_faultpage<br />
genunix`segvn_fault<br />
genunix`as_fault<br />
unix`pagefault<br />
unix`trap<br />
unix`_cmntrap</p>
<p>711 samples with stack below<br />
__________________<br />
kghbshrt<br />
kghalo<br />
kghgex<br />
kghfnd<br />
kghprmalo<br />
kghalp<br />
kxsWorkHeapAllocPerm<br />
qercbiPushState<br />
qercbiFetch<br />
qercoFetch<br />
rwsfcd<br />
insfch<br />
insdrv<br />
inscovexe<br />
insExecStmtExecIniEngine<br />
insexe<br />
opiexe<br />
kpoal8<br />
opiodr<br />
ttcpip<br />
opitsk<br />
opiino<br />
opiodr<br />
opidrv<br />
sou2o<br />
opimai_real<br />
main<br />
0xd7de4c</p>
<p>2920 Total samples captured</p>
<p>Obviously the way of the insert done makes sense, but why? Isn´t there block checking in direct-path-insert as the checking is done in the buffer cache?</p>
<p> Thank you for this wonderful blog Tanel!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Senthil Murugan</title>
		<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/comment-page-1/#comment-594</link>
		<dc:creator>Senthil Murugan</dc:creator>
		<pubDate>Mon, 15 Sep 2008 06:44:55 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/#comment-594</guid>
		<description>Thanks a lot tanel :) .. i really enjoy reading your blog..

Thanks again.

K.Senthil Murugan</description>
		<content:encoded><![CDATA[<p>Thanks a lot tanel :) .. i really enjoy reading your blog..</p>
<p>Thanks again.</p>
<p>K.Senthil Murugan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tanelp</title>
		<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/comment-page-1/#comment-593</link>
		<dc:creator>tanelp</dc:creator>
		<pubDate>Sun, 14 Sep 2008 12:13:06 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/#comment-593</guid>
		<description>@Senthil

I recommend reading this to understand Oracle and Unix touchpoint well:

http://www.scaleabilities.co.uk/book/scalingOracle8i.pdf (it&#039;s free - and ignore that the name says 8i in title, the core concepts have remained the same)

And then get this book: http://antognini.ch/top/</description>
		<content:encoded><![CDATA[<p>@Senthil</p>
<p>I recommend reading this to understand Oracle and Unix touchpoint well:</p>
<p><a href="http://www.scaleabilities.co.uk/book/scalingOracle8i.pdf" rel="nofollow">http://www.scaleabilities.co.uk/book/scalingOracle8i.pdf</a> (it&#8217;s free &#8211; and ignore that the name says 8i in title, the core concepts have remained the same)</p>
<p>And then get this book: <a href="http://antognini.ch/top/" rel="nofollow">http://antognini.ch/top/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tanelp</title>
		<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/comment-page-1/#comment-592</link>
		<dc:creator>tanelp</dc:creator>
		<pubDate>Sat, 13 Sep 2008 02:32:23 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/#comment-592</guid>
		<description>Hi Steve,

Did you notice any significant differences in Oracle Wait Interface times or v$sesstat counters between the versions?

I would always start from these before looking into stack sampling. Also, dstacktrace samples only the processes currently on CPU, so if your process waits/sleeps on something, dstackprof doesn&#039;t show any samples for those sleeps.

If you have already validated with Oracle Wait Interface data that your process is not waiting/sleeping majority of time, then can you post few of the bottom dstacktrace stack samples from both 11g and 10gR2?</description>
		<content:encoded><![CDATA[<p>Hi Steve,</p>
<p>Did you notice any significant differences in Oracle Wait Interface times or v$sesstat counters between the versions?</p>
<p>I would always start from these before looking into stack sampling. Also, dstacktrace samples only the processes currently on CPU, so if your process waits/sleeps on something, dstackprof doesn&#8217;t show any samples for those sleeps.</p>
<p>If you have already validated with Oracle Wait Interface data that your process is not waiting/sleeping majority of time, then can you post few of the bottom dstacktrace stack samples from both 11g and 10gR2?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve</title>
		<link>http://blog.tanelpoder.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/comment-page-1/#comment-591</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Sat, 13 Sep 2008 00:09:19 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/09/02/oracle-hidden-costs-revealed-part2-using-dtrace-to-find-why-writes-in-system-tablespace-are-slower-than-in-others/#comment-591</guid>
		<description>Hi Tanel,

Good that you did this post. i had similar issue with 10gr2 and 11g, where the inserts taking 3x times more cpu than 10gr2. Didn&#039;t see any waits and DB time was equivalent to DB cpu. Ran the dtraceprof on 11g and noticed the following which didn&#039;t occur in 10gr2. Any idea what these functions are? Wondering if this has anything to do with the 3x cpu usage.

`qesltcLoadIndexList
`qesltcLoadIndexes
`qerltcNoKdtBufferedInsRowCBK
`qerltcLoadStateMachine
`qerltcInsertValuesRop
&#039;qerltcFetch

Thanks.</description>
		<content:encoded><![CDATA[<p>Hi Tanel,</p>
<p>Good that you did this post. i had similar issue with 10gr2 and 11g, where the inserts taking 3x times more cpu than 10gr2. Didn&#8217;t see any waits and DB time was equivalent to DB cpu. Ran the dtraceprof on 11g and noticed the following which didn&#8217;t occur in 10gr2. Any idea what these functions are? Wondering if this has anything to do with the 3x cpu usage.</p>
<p>`qesltcLoadIndexList<br />
`qesltcLoadIndexes<br />
`qerltcNoKdtBufferedInsRowCBK<br />
`qerltcLoadStateMachine<br />
`qerltcInsertValuesRop<br />
&#8216;qerltcFetch</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
