<?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: SQL*Net break/reset to client</title>
	<atom:link href="http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/</link>
	<description>Oracle troubleshooting, internals and performance tuning</description>
	<lastBuildDate>Thu, 11 Mar 2010 20:28:36 +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/04/10/sqlnet-breakreset-to-client/comment-page-1/#comment-2371</link>
		<dc:creator>Tanel Poder</dc:creator>
		<pubDate>Wed, 26 Aug 2009 06:07:02 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/04/10/sqlnet-breakreset-to-client/#comment-2371</guid>
		<description>Tere Kaido,

Yes, these waits are not idle as these cause extra work to be done inside the database. If wait interface says its significant, then something should be done about it.

Instead of polling queues in a loop - you should poll in waiting mode, so instead of the error you just wait until something appears in the queue. Not sure how well this goes together with your application architecture though.

Another option is, in case you are willing to (and can) change code you could wrap this dequeue operation into a pl/sql block or function which catches the exception if its raised and just returns a different return code (via return or bind variable) when there was nothing in the queue. 

This makes the break/reset wait event go away - but it may just shift the bottleneck elsewhere that instead of braking 100 times per second you will have just the PL/SQL call overhead instead.</description>
		<content:encoded><![CDATA[<p>Tere Kaido,</p>
<p>Yes, these waits are not idle as these cause extra work to be done inside the database. If wait interface says its significant, then something should be done about it.</p>
<p>Instead of polling queues in a loop &#8211; you should poll in waiting mode, so instead of the error you just wait until something appears in the queue. Not sure how well this goes together with your application architecture though.</p>
<p>Another option is, in case you are willing to (and can) change code you could wrap this dequeue operation into a pl/sql block or function which catches the exception if its raised and just returns a different return code (via return or bind variable) when there was nothing in the queue. </p>
<p>This makes the break/reset wait event go away &#8211; but it may just shift the bottleneck elsewhere that instead of braking 100 times per second you will have just the PL/SQL call overhead instead.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kaido</title>
		<link>http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/comment-page-1/#comment-2364</link>
		<dc:creator>Kaido</dc:creator>
		<pubDate>Tue, 25 Aug 2009 06:27:00 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/04/10/sqlnet-breakreset-to-client/#comment-2364</guid>
		<description>So, I believe this is not an idle wait? Oracle SOAsuit produces very high amouont of this wait event on my production system. I created the servererror trigger -- and within minutes, there was more than 5000 rows in log table. The reason is, that AQ dequeue method, returned an error message, that queue was empty. This means, that SOAsuit (compiled java pcode) does not handle this error. ADDM tells me: &quot;Wait event &quot;SQL*Net break/reset to client&quot; in wait class &quot;Application&quot; was consuming significant database time.&quot; Impact% 30-60. Should I be really worried about this event?</description>
		<content:encoded><![CDATA[<p>So, I believe this is not an idle wait? Oracle SOAsuit produces very high amouont of this wait event on my production system. I created the servererror trigger &#8212; and within minutes, there was more than 5000 rows in log table. The reason is, that AQ dequeue method, returned an error message, that queue was empty. This means, that SOAsuit (compiled java pcode) does not handle this error. ADDM tells me: &#8220;Wait event &#8220;SQL*Net break/reset to client&#8221; in wait class &#8220;Application&#8221; was consuming significant database time.&#8221; Impact% 30-60. Should I be really worried about this event?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve</title>
		<link>http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/comment-page-1/#comment-332</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Mon, 14 Apr 2008 16:07:03 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/04/10/sqlnet-breakreset-to-client/#comment-332</guid>
		<description>Thanks Tanel for the suggestion.

Steve.</description>
		<content:encoded><![CDATA[<p>Thanks Tanel for the suggestion.</p>
<p>Steve.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tanelp</title>
		<link>http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/comment-page-1/#comment-331</link>
		<dc:creator>tanelp</dc:creator>
		<pubDate>Mon, 14 Apr 2008 14:57:27 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/04/10/sqlnet-breakreset-to-client/#comment-331</guid>
		<description>Thanks Jeremy, you&#039;re right.. I think I&#039;ll write a disclaimer to my blog that I only provide bits and pieces of information - but using it still requires the reader&#039;s brain! :)</description>
		<content:encoded><![CDATA[<p>Thanks Jeremy, you&#8217;re right.. I think I&#8217;ll write a disclaimer to my blog that I only provide bits and pieces of information &#8211; but using it still requires the reader&#8217;s brain! :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tanelp</title>
		<link>http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/comment-page-1/#comment-330</link>
		<dc:creator>tanelp</dc:creator>
		<pubDate>Mon, 14 Apr 2008 14:54:49 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/04/10/sqlnet-breakreset-to-client/#comment-330</guid>
		<description>Steve, if the table has only one row and everybody is trying to update that row (some kind of locking, right?) then you can&#039;t really split it up to multiple blocks.

Depending on what operations you serialize using that single-row lock, you may be able to break it down to multiple locks (each protecting a different operation or part of the structure) and have higher throughput like that.

I recommend you to check DBMS_LOCK user defined locks, you may be able to do your serialization better using that... or if you need better flexibility, then Advanced Queueing is for you.</description>
		<content:encoded><![CDATA[<p>Steve, if the table has only one row and everybody is trying to update that row (some kind of locking, right?) then you can&#8217;t really split it up to multiple blocks.</p>
<p>Depending on what operations you serialize using that single-row lock, you may be able to break it down to multiple locks (each protecting a different operation or part of the structure) and have higher throughput like that.</p>
<p>I recommend you to check DBMS_LOCK user defined locks, you may be able to do your serialization better using that&#8230; or if you need better flexibility, then Advanced Queueing is for you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeremy Schneider</title>
		<link>http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/comment-page-1/#comment-329</link>
		<dc:creator>Jeremy Schneider</dc:creator>
		<pubDate>Sat, 12 Apr 2008 16:20:08 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/04/10/sqlnet-breakreset-to-client/#comment-329</guid>
		<description>Great post!  (Although I hope that nobody reads this and thinks they should start adding &quot;exception when others then null&quot; to their code...)</description>
		<content:encoded><![CDATA[<p>Great post!  (Although I hope that nobody reads this and thinks they should start adding &#8220;exception when others then null&#8221; to their code&#8230;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve</title>
		<link>http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/comment-page-1/#comment-328</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Thu, 10 Apr 2008 20:05:37 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/04/10/sqlnet-breakreset-to-client/#comment-328</guid>
		<description>We have a similar problem with top 2 wait events being bb waits and sqlnet break/reset to client event. We figured the cause being the sql something like this &quot;select * form table where... for update nowait;&quot; This table has one row in it. sessions not able to get locks returned &quot;resource busy&quot; message back to client triggering sqlnet break/reset event. Handling the exception at stored procedure worked out really well. however, wondering how to reduce the bbw waits on nowait sql. p3 value being 1 and table is in ASSM auto mode, 10gr2. Any ideas would be appreciated.

Steve</description>
		<content:encoded><![CDATA[<p>We have a similar problem with top 2 wait events being bb waits and sqlnet break/reset to client event. We figured the cause being the sql something like this &#8220;select * form table where&#8230; for update nowait;&#8221; This table has one row in it. sessions not able to get locks returned &#8220;resource busy&#8221; message back to client triggering sqlnet break/reset event. Handling the exception at stored procedure worked out really well. however, wondering how to reduce the bbw waits on nowait sql. p3 value being 1 and table is in ASSM auto mode, 10gr2. Any ideas would be appreciated.</p>
<p>Steve</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Hallas</title>
		<link>http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/comment-page-1/#comment-336</link>
		<dc:creator>John Hallas</dc:creator>
		<pubDate>Thu, 10 Apr 2008 14:56:24 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/04/10/sqlnet-breakreset-to-client/#comment-336</guid>
		<description>Very good blog entry, put together quickly as well.</description>
		<content:encoded><![CDATA[<p>Very good blog entry, put together quickly as well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tanelp</title>
		<link>http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/comment-page-1/#comment-335</link>
		<dc:creator>tanelp</dc:creator>
		<pubDate>Thu, 10 Apr 2008 13:54:08 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/04/10/sqlnet-breakreset-to-client/#comment-335</guid>
		<description>Nice! I guessed right :)

Thanks for the info, Anjo</description>
		<content:encoded><![CDATA[<p>Nice! I guessed right :)</p>
<p>Thanks for the info, Anjo</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anjo Kolk</title>
		<link>http://blog.tanelpoder.com/2008/04/10/sqlnet-breakreset-to-client/comment-page-1/#comment-334</link>
		<dc:creator>Anjo Kolk</dc:creator>
		<pubDate>Thu, 10 Apr 2008 13:42:40 +0000</pubDate>
		<guid isPermaLink="false">http://tanelpoder.wordpress.com/2008/04/10/sqlnet-breakreset-to-client/#comment-334</guid>
		<description>Yep, first the break is done to notify the client side to stop sending data, then the reset is done on both sides to cleanup the state and to resume from there. The next message to client is I think an &quot;Successful completion of the &quot; of the call. So the client thinks that we are still talking.</description>
		<content:encoded><![CDATA[<p>Yep, first the break is done to notify the client side to stop sending data, then the reset is done on both sides to cleanup the state and to resume from there. The next message to client is I think an &#8220;Successful completion of the &#8221; of the call. So the client thinks that we are still talking.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
