<?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: Unindexed Foreign Keys &#8211; What is Wrong with this Quote?</title>
	<atom:link href="http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/feed/" rel="self" type="application/rss+xml" />
	<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/</link>
	<description>Miscellaneous Random Oracle Topics: Stop, Think, ... Understand</description>
	<lastBuildDate>Mon, 13 May 2013 14:10:06 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Damir Vadas</title>
		<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/#comment-4956</link>
		<dc:creator><![CDATA[Damir Vadas]]></dc:creator>
		<pubDate>Mon, 01 Oct 2012 16:31:51 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=5377#comment-4956</guid>
		<description><![CDATA[Yes but no locking problem on thousand of connections..
:-)]]></description>
		<content:encoded><![CDATA[<p>Yes but no locking problem on thousand of connections.. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charles Hooper</title>
		<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/#comment-4955</link>
		<dc:creator><![CDATA[Charles Hooper]]></dc:creator>
		<pubDate>Mon, 01 Oct 2012 13:13:51 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=5377#comment-4955</guid>
		<description><![CDATA[Damir,

Interesting that Oracle EBS does not use declared foreign keys.  It would seem that this is not a desirable practice from a data integrity point of view.]]></description>
		<content:encoded><![CDATA[<p>Damir,</p>
<p>Interesting that Oracle EBS does not use declared foreign keys.  It would seem that this is not a desirable practice from a data integrity point of view.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Damir Vadas</title>
		<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/#comment-4952</link>
		<dc:creator><![CDATA[Damir Vadas]]></dc:creator>
		<pubDate>Tue, 25 Sep 2012 06:48:10 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=5377#comment-4952</guid>
		<description><![CDATA[Just once interesting point.

The whole Oracle EBS, has no a single foreign key. All is handled with app logic.

And the best of all ... have seen EBS with 1000 connections with no few locking events-amazing and maybe the best point where to go when you want to build enterprise app for thousand of concurrent connections.]]></description>
		<content:encoded><![CDATA[<p>Just once interesting point.</p>
<p>The whole Oracle EBS, has no a single foreign key. All is handled with app logic.</p>
<p>And the best of all &#8230; have seen EBS with 1000 connections with no few locking events-amazing and maybe the best point where to go when you want to build enterprise app for thousand of concurrent connections.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Virtual column as a foreign key &#171;</title>
		<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/#comment-4836</link>
		<dc:creator><![CDATA[Virtual column as a foreign key &#171;]]></dc:creator>
		<pubDate>Mon, 16 Jul 2012 07:30:43 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=5377#comment-4836</guid>
		<description><![CDATA[[...] a comment of Charles ‘Hooper blog article I wrote (a) first that a function based index cannot cover the deadlock threat induced [...]]]></description>
		<content:encoded><![CDATA[<p>[...] a comment of Charles ‘Hooper blog article I wrote (a) first that a function based index cannot cover the deadlock threat induced [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charles Hooper</title>
		<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/#comment-4319</link>
		<dc:creator><![CDATA[Charles Hooper]]></dc:creator>
		<pubDate>Sat, 21 Jan 2012 22:15:15 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=5377#comment-4319</guid>
		<description><![CDATA[Hi Mohamed,

Thanks for posting the link to your test case.  It has been a couple of months since you posted the comment: &quot;... function based index will not protect us&quot;.  If I remember correctly, I considered testing your statement, but instead decided that your comment was addressing the situation where the foreign key column was enclosed in a function within the index definition.  I did wonder a bit what would happen if the function based index were a composite index.]]></description>
		<content:encoded><![CDATA[<p>Hi Mohamed,</p>
<p>Thanks for posting the link to your test case.  It has been a couple of months since you posted the comment: &#8220;&#8230; function based index will not protect us&#8221;.  If I remember correctly, I considered testing your statement, but instead decided that your comment was addressing the situation where the foreign key column was enclosed in a function within the index definition.  I did wonder a bit what would happen if the function based index were a composite index.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: hourim</title>
		<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/#comment-4310</link>
		<dc:creator><![CDATA[hourim]]></dc:creator>
		<pubDate>Thu, 19 Jan 2012 14:37:43 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=5377#comment-4310</guid>
		<description><![CDATA[Hi Charles,

It is true that a bitmap index will not protect against TM enqueues on the child table. And how would it be the case when we know that bitmap indexes themselves generate deadlocks situation in an OLTP application. However, I was not completely true to say that Function based indexes do not protect against this kind of TM enqueue. They in fact do; they just need to start with the Foreign key column (or columns in case of a composite key). A very simple example can be found here
http://hourim.wordpress.com/2012/01/19/bitmap-indexes-and-foreign-key/
Best Regards]]></description>
		<content:encoded><![CDATA[<p>Hi Charles,</p>
<p>It is true that a bitmap index will not protect against TM enqueues on the child table. And how would it be the case when we know that bitmap indexes themselves generate deadlocks situation in an OLTP application. However, I was not completely true to say that Function based indexes do not protect against this kind of TM enqueue. They in fact do; they just need to start with the Foreign key column (or columns in case of a composite key). A very simple example can be found here<br />
<a href="http://hourim.wordpress.com/2012/01/19/bitmap-indexes-and-foreign-key/" rel="nofollow">http://hourim.wordpress.com/2012/01/19/bitmap-indexes-and-foreign-key/</a><br />
Best Regards</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Log Buffer #237, A Carnival of the Vanities for DBAs &#124; The Pythian Blog</title>
		<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/#comment-3872</link>
		<dc:creator><![CDATA[Log Buffer #237, A Carnival of the Vanities for DBAs &#124; The Pythian Blog]]></dc:creator>
		<pubDate>Fri, 09 Sep 2011 06:46:07 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=5377#comment-3872</guid>
		<description><![CDATA[[...] Foreign Keys – What is Wrong with this Quote? Charles Hooper enlightens [...]]]></description>
		<content:encoded><![CDATA[<p>[...] Foreign Keys – What is Wrong with this Quote? Charles Hooper enlightens [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Timo Raitalaakso</title>
		<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/#comment-3871</link>
		<dc:creator><![CDATA[Timo Raitalaakso]]></dc:creator>
		<pubDate>Thu, 08 Sep 2011 20:54:40 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=5377#comment-3871</guid>
		<description><![CDATA[I have written &lt;a href=&quot;http://rafudb.blogspot.com/2009/02/unindex.html&quot; rel=&quot;nofollow&quot;&gt;a check query&lt;/A&gt; that avoids false negatives in case of constraint (A,B) indexed (B,A). Also &lt;a href=&quot;http://rafudb.blogspot.com/2009/11/unindex-112.html&quot; rel=&quot;nofollow&quot;&gt;a better performing query&lt;/A&gt; available. It uses 11.2 features.]]></description>
		<content:encoded><![CDATA[<p>I have written <a href="http://rafudb.blogspot.com/2009/02/unindex.html" rel="nofollow">a check query</a> that avoids false negatives in case of constraint (A,B) indexed (B,A). Also <a href="http://rafudb.blogspot.com/2009/11/unindex-112.html" rel="nofollow">a better performing query</a> available. It uses 11.2 features.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charles Hooper</title>
		<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/#comment-3865</link>
		<dc:creator><![CDATA[Charles Hooper]]></dc:creator>
		<pubDate>Wed, 07 Sep 2011 13:46:47 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=5377#comment-3865</guid>
		<description><![CDATA[Franck,

Thank you for the extensive comment post.

The AskTom thread you linked to is very interesting, and very long.  The following is a list of some of the items mentioned in that thread:
* The original version of Tom Kyte&#039;s foreign key indexing script
* Problems with multi-column foreign keys and NULL values in one of the columns
* Problems with CURSOR_SHARING = SIMILAR or FORCE: ORA-01467: sort key too long (another one to add to the list in the article http://hoopercharles.wordpress.com/2011/07/03/the-cursor_sharing-parameter-is-a-silver-bullet-what-is-wrong-with-this-quote/ )
* Oracle Forms by default updates all columns, including primary key columns (this is mentioned in a couple of books, as I recall)
* First hint of table locking change due to unindexed foreign key columns in 11g in July 2009 (that was the same month when Randolf Geist and I wrote the section in the OakTable book about the locking change - we tripped over it by accident)
* Tom Kyte&#039;s blog article about unindexed foreign keys and his script: http://tkyte.blogspot.com/2009/10/httpasktomoraclecomtkyteunindex.html
* Mohamed Houri&#039;s script:
http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:292016138754#3002983200346796154

I also found your post &quot;Unindexed foreign key Share lock without delete/update on the parent&quot; which was added &quot;February 10, 2011 - 10am Central time zone&quot; 
I probably misunderstood Tom Kyte&#039;s follow up comment to you considering what he later stated about the bug.  It seemed that he was stating that you need to index the foreign key columns in the grand-child table.  You then mentioned Metalink (MOS) Bug 12313173, which currently has a status of &quot;32 - Not a Bug. To Filer&quot;.  Interesting situation - do you see the same results on 10g and 11g?

---

Setting event 10704 - I had not heard of that before (or I simply forgot).  A web search helped me determine the purpose of that event:
http://www.juliandyke.com/Diagnostics/Events/EventReference.html#10704]]></description>
		<content:encoded><![CDATA[<p>Franck,</p>
<p>Thank you for the extensive comment post.</p>
<p>The AskTom thread you linked to is very interesting, and very long.  The following is a list of some of the items mentioned in that thread:<br />
* The original version of Tom Kyte&#8217;s foreign key indexing script<br />
* Problems with multi-column foreign keys and NULL values in one of the columns<br />
* Problems with CURSOR_SHARING = SIMILAR or FORCE: ORA-01467: sort key too long (another one to add to the list in the article <a href="http://hoopercharles.wordpress.com/2011/07/03/the-cursor_sharing-parameter-is-a-silver-bullet-what-is-wrong-with-this-quote/" rel="nofollow">http://hoopercharles.wordpress.com/2011/07/03/the-cursor_sharing-parameter-is-a-silver-bullet-what-is-wrong-with-this-quote/</a> )<br />
* Oracle Forms by default updates all columns, including primary key columns (this is mentioned in a couple of books, as I recall)<br />
* First hint of table locking change due to unindexed foreign key columns in 11g in July 2009 (that was the same month when Randolf Geist and I wrote the section in the OakTable book about the locking change &#8211; we tripped over it by accident)<br />
* Tom Kyte&#8217;s blog article about unindexed foreign keys and his script: <a href="http://tkyte.blogspot.com/2009/10/httpasktomoraclecomtkyteunindex.html" rel="nofollow">http://tkyte.blogspot.com/2009/10/httpasktomoraclecomtkyteunindex.html</a><br />
* Mohamed Houri&#8217;s script:<br />
<a href="http://asktom.oracle.com/pls/apex/f?p=100:11:0" rel="nofollow">http://asktom.oracle.com/pls/apex/f?p=100:11:0</a>::::P11_QUESTION_ID:292016138754#3002983200346796154</p>
<p>I also found your post &#8220;Unindexed foreign key Share lock without delete/update on the parent&#8221; which was added &#8220;February 10, 2011 &#8211; 10am Central time zone&#8221;<br />
I probably misunderstood Tom Kyte&#8217;s follow up comment to you considering what he later stated about the bug.  It seemed that he was stating that you need to index the foreign key columns in the grand-child table.  You then mentioned Metalink (MOS) Bug 12313173, which currently has a status of &#8220;32 &#8211; Not a Bug. To Filer&#8221;.  Interesting situation &#8211; do you see the same results on 10g and 11g?</p>
<p>&#8212;</p>
<p>Setting event 10704 &#8211; I had not heard of that before (or I simply forgot).  A web search helped me determine the purpose of that event:<br />
<a href="http://www.juliandyke.com/Diagnostics/Events/EventReference.html#10704" rel="nofollow">http://www.juliandyke.com/Diagnostics/Events/EventReference.html#10704</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charles Hooper</title>
		<link>http://hoopercharles.wordpress.com/2011/09/05/unindexed-foreign-keys-what-is-wrong-with-this-quote/#comment-3864</link>
		<dc:creator><![CDATA[Charles Hooper]]></dc:creator>
		<pubDate>Wed, 07 Sep 2011 11:26:18 +0000</pubDate>
		<guid isPermaLink="false">http://hoopercharles.wordpress.com/?p=5377#comment-3864</guid>
		<description><![CDATA[Mohamed,

Thank you for the reminder that bitmap indexes and function based indexes will not protect against TM enqueues on the child table - that suggests that the script should also verify that the index is in fact a b*tree index and not a bitmap index.

If you have your script posted somewhere, please provide a link to the script.  Or, if you would like, please post the script here.  If you post the script here, please use a &lt;pre&gt; tag before the script and a &lt;/pre&gt; tag after the script to retain the spacing in the script (or use one of the other common code tags).]]></description>
		<content:encoded><![CDATA[<p>Mohamed,</p>
<p>Thank you for the reminder that bitmap indexes and function based indexes will not protect against TM enqueues on the child table &#8211; that suggests that the script should also verify that the index is in fact a b*tree index and not a bitmap index.</p>
<p>If you have your script posted somewhere, please provide a link to the script.  Or, if you would like, please post the script here.  If you post the script here, please use a &lt;pre&gt; tag before the script and a &lt;/pre&gt; tag after the script to retain the spacing in the script (or use one of the other common code tags).</p>
]]></content:encoded>
	</item>
</channel>
</rss>
