<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AMIS Technology Blog &#187; Gerwin Hendriksen</title>
	<atom:link href="http://technology.amis.nl/blog/author/gerwin-hendriksen/feed/" rel="self" type="application/rss+xml" />
	<link>http://technology.amis.nl</link>
	<description></description>
	<lastBuildDate>Wed, 22 May 2013 10:48:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Enhancing fast queries using &quot;Tapio-Indexes&quot;</title>
		<link>http://technology.amis.nl/2009/06/04/enhancing-fast-queries-using-tapio-indexes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=enhancing-fast-queries-using-tapio-indexes</link>
		<comments>http://technology.amis.nl/2009/06/04/enhancing-fast-queries-using-tapio-indexes/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 12:35:14 +0000</pubDate>
		<dc:creator>Gerwin Hendriksen</dc:creator>
				<category><![CDATA[AMIS]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[Devel. + PL/SQL tools]]></category>
		<category><![CDATA[IT Architecture]]></category>
		<category><![CDATA[Oracle Development Tools]]></category>
		<category><![CDATA[Technical Architecture]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[dba]]></category>
		<category><![CDATA[Fat Index]]></category>
		<category><![CDATA[index]]></category>
		<category><![CDATA[Lahdenmaki]]></category>
		<category><![CDATA[Tapio]]></category>

		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=5552</guid>
		<description><![CDATA[During the years I have a lot of times encountered performance problems that ended up to be fast queries (less than 10ms) which are executed very much. In these situations the execution plans, from such queries can look like:
&#160;
OPERATION&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; OPTIONS&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; OBJECT#  [...]]]></description>
				<content:encoded><![CDATA[<p>During the years I have a lot of times encountered performance problems that ended up to be fast queries (less than 10ms) which are executed very much. In these situations the execution plans, from such queries can look like:</p>
<p>&nbsp;</p>
<p><code>OPERATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OPTIONS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJECT# NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
-------------------- -------------------- ---------- -----------------------------------<br />
SELECT STATEMENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
TABLE ACCESS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BY INDEX ROWID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 120713 XXX.TABLE_WITH_MANY_COLUMNS <br />
INDEX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RANGE SCAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 121558 XXX.INDEX_WITH_FEW_COLUMNS&nbsp; <br />
</code></p>
<p>&nbsp;</p>
<p>In a lot of cases we deal with a query for example which is returning fewer columns than exists in the involved table like four, from an involved table having twenty columns. Although the execution plan looks already pretty &ldquo;OK&rdquo;, it still results in a query which is in top three most resource taking queries.</p>
<p>&nbsp;</p>
<p>To enhance the query we can use &ldquo;Fat Indexes&rdquo; or nowadays better known &ldquo;Tapio Indexes&rdquo; (I call them like that nowadays). What are these kind of indexes&hellip;. In principle nothing really new, but for me a couple of years ago an (re)eye opener by Tapio Lahdenmaki. This Finish independent database performance consultant and instructor gave a presentation at Miracle Open World 2007 in Denmark, I attended. Tapio can present this topic in a very special way, and in my opinion &ldquo;his message&rdquo; should be known by all developers and dba&rsquo;s.</p>
<p><span id="more-5552"></span>&nbsp;</p>
<p>The most important thing of &ldquo;his message&rdquo; is the fact that we should create an index which is highly selective and contains all the columns asked in the query. So in principle we create an index with for example two selective columns, with the most selective one in front and behind these two columns the other selected columns. When creating such an index an execution plan would look like:</p>
<p>
&nbsp;</p>
<p><code>OPERATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OPTIONS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJECT# NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
-------------------- -------------------- ---------- -----------------------------------<br />
SELECT STATEMENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
SORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
INDEX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RANGE SCAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 128140 XXX.INDEX_WITH_ALL_SELECTED_COLUMNS</code></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The big advantage is that only the index is accessed and not the table anymore, what can result in a decrease of elapsed time for the query with a factor 4 or even more. Why this is much better? Let we go back how indexes and tables are stored on the physical storage.</p>
<p>&nbsp;</p>
<p>An index is stored in an ordered way on the storage, so an index range scan will mean that data is retrieved from the storage in a sequential read from a storage point of view and so a read-head from a spindle can stay on almost the same place. This eliminates seek times and latency on the physical storage spindles.</p>
<p>&nbsp;</p>
<p>A Table is stored in a non ordered way on the storage, so accessing table rows will almost always result in accessing the data in a scattered read from a storage point of view. This implies that a lot of seek and read times are wasted.</p>
<p>&nbsp;</p>
<p>Of course the existence of caches makes it a bit different but still the basic principles are valid, this means also for striping.&nbsp;</p>
<p>&nbsp;</p>
<p>So when only an index is accessed instead of index and table, we don&rsquo;t waste read times for columns we don&rsquo;t need (table rows), and we eliminate a lot of seek times for retrieving the different table rows.</p>
<p>&nbsp;</p>
<p>If you want to know more about this kind of index design, you can read the book <a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0471719994.html">&ldquo;Relational Database Index Design and the Optimizers&rdquo;</a> from Tapio Lahdenmaki.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://technology.amis.nl/2009/06/04/enhancing-fast-queries-using-tapio-indexes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle Data Mining meets performance method &quot;GAPP&quot;</title>
		<link>http://technology.amis.nl/2008/09/29/oracle-data-mining-meets-performance-method-gapp/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle-data-mining-meets-performance-method-gapp</link>
		<comments>http://technology.amis.nl/2008/09/29/oracle-data-mining-meets-performance-method-gapp/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 12:52:51 +0000</pubDate>
		<dc:creator>Gerwin Hendriksen</dc:creator>
				<category><![CDATA[AMIS]]></category>
		<category><![CDATA[Data Warehousing & BI]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle E-Business Suite]]></category>
		<category><![CDATA[SOA & Oracle Fusion Middleware]]></category>
		<category><![CDATA[Technical Architecture]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[GAPP]]></category>
		<category><![CDATA[Oracle Data Mining]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=3526</guid>
		<description><![CDATA[Sunday 21 September 2008 at Oracle Open World, I had the opportunity to present my method &#34;GAPP&#34; once more (HOTSOS 2008 and Planboard may 2008). This time I also mentioned how the method can be used with Service Oriented Architectures (SOA). For people not knowing what &#34;GAPP&#34; is all about I give a  [...]]]></description>
				<content:encoded><![CDATA[<p>Sunday 21 September 2008 at <a title="ODTUG Oracle Open World Presentation" href="http://www.teamycc.com/presentations2008.HTML">Oracle Open World</a>, I had the opportunity to present my method &quot;<a title="Blog Post Jumping The GAPP" href="http://technology.amis.nl/blog/?p=2938">GAPP</a>&quot; once more (<a title="HOTSOS 2008 Presentation abstract" href="http://www.hotsos.com/sym_speakers_hendriksen.html">HOTSOS 2008</a> and <a title="Planboard may 2008 (dutch)" href="http://www.planboard.com/?q=node/85">Planboard may 2008</a>). This time I also mentioned how the method can be used with Service Oriented Architectures (SOA). For people not knowing what &quot;GAPP&quot; is all about I give a small introduction to the method. I also like to tell you why I started with â€œGAPPâ€ in the first place and what the added value is of the method above other methods.</p>
<p>&quot;GAPP&quot; means General Approach Performance Profiling and can be used to find out where in your architecture the most wait time variance can be explained from your business process. &quot;GAPP&quot; makes it possible with very little data, in higly complex technical infrastructures, still be able to find the performance bottlenecks for a specific business process. The nice thing about the method is that it is not only able to pinpoint a bottleneck which is already there, it is also able to pinpoint a future bottleneck in a normal running system. This is something what only &quot;GAPP&quot; can do.</p>
<blockquote><p><strong>What makes â€œGAPPâ€ special:</strong></p>
<ul>
<li>The method can analyse the full infrastructure, so from front-end to back-end </li>
<li>The method is not focussing on one piece of the infrastructure, like only the database </li>
<li>The method is able to predict how the response time of a business process will react on changes in involved factors </li>
<li>The method is able to predict when a certain bottleneck will evolve to a real problem</li>
</ul>
<p></p>
</blockquote>
<p><img alt="...." src="wp-content/plugins/xinha4wp/xinha_core/plugins/InsertMore/img/ed_more.png" /><span id="more-3526"></span></p>
<blockquote>
<p><strong>Further big advantages of the method are the gaps which can be jumped of:</strong></p>
<ul>
<li>not allowed to trace </li>
<li>not allowed to change anything in the application (eg. to get log data) </li>
<li>not having a representable test environment </li>
<li>a too complex technical infrastructure (eg. SOA environment, environments with more than 2 involved servers)</li>
</ul>
<p></p>
</blockquote>
<p>&nbsp;</p>
<p>In the past a lot of times I saw in organization that at the end of the week the<br />
system administrators sent an email to their management with a response time<br />
graph from a business process (eg. load runner) and some graphs from the cpu,<br />
memory and I/O from the database servers. When I looked at such emails I was not<br />
sure what to think about it. The only thing I could say was that most of the<br />
time spikes in the response time graph were not explained by the other graphs in<br />
the email. This made me wonder if it would be possible to explain the spikes in<br />
the response time based on data from the background architecture. This brought<br />
me to the idea of creating a method, which could do this job. After a lot of<br />
customer cases and investigation, the method is worth having the name â€œGAPPâ€.<br />
The method is now so powerful that it works even if you have very little<br />
information, as mentioned in the bullets above. In a lot of situations<br />
architectures are getting just too complicated or organizations have not ways to<br />
reproduce problems in their test environments. The method makes it possible with<br />
available data to pinpoint where in the architecture a certain performance<br />
bottleneck resides.</p>
<p>The method can further be said to be really general, because of the fact that any architecture can be analyzed by the method. Within the method four important steps can be determined:</p>
<blockquote><p><strong>1) Data Collection</strong></p>
<ul>
<li>Which parts of the technical infrastructure are involved in the business process </li>
<li>What data is available and in which time granularity</li>
</ul>
<p><strong>2) Data Synchronization</strong></p>
<ul>
<li>Aggregation on lowest granularity of all used data </li>
<li>Decision should be made on if data granularity for a factor is high enough</li>
</ul>
<p><strong>3) Data Mining</strong></p>
<ul>
<li>Factorial Analysis </li>
<li>Model Creation </li>
<li>Prediction</li>
</ul>
<p><strong>4) Data Interpretation</strong></p>
<ul>
<li>Mapping results with architecture knowledge </li>
<li>Compare of result with measured data </li>
<li>Conclusions </li>
</ul>
</blockquote>
<p>The used data in the analysis can be from any source. It is important to have data from the response times of the involved business process through time. Further is data of each involved server in the chain important, this can be sar, vmstat, nmon, etc. For the involved database(s) for example AWR, statspack, etc can be used. All this data will be brought to one place and at that time able to be data mined. Here it gets really interesting. On the moment the method is using Oracle Data Mining (ODM), although there are open source data minings engines, the ODM engine is really easy to be used and is really very powerful.</p>
<p>When I presented at Sunday I invited Charlie Berger, the Senior Product Manager from Oracle Data Mining. After the presentation he was nicely surprised by the usage of Oracle Data Mining for my performance profiling method. We had a very nice chat and we later on that week met again on the Oracle Demo Grounds here at Oracle Open World in San Francisco.&nbsp;</p>
<p align="center">Charlie Berger and me on the Oracle Demo Ground for Oracle Data Mining</p>
<div align="center"><img width="677" height="507" src="http://technology.amis.nl/wp-content/uploads/images/dsc04886_enhanced1.jpg" /></div>
<p><a title="Oracle Data Mining" href="http://www.oracle.com/technology/products/bi/odm/index.html">Oracle Data Mining</a> is very powerful and &quot;GAPP&quot; is more and more using the great algorithms which are in ODM. Within the market it is still not very clear how powerful this software actually is. To give you an idea why ODM is so powerful you have to keep in mind the following:</p>
<blockquote>
<ul>
<li><a title="Oracle Data Mining" href="http://www.oracle.com/technology/products/bi/odm/index.html">ODM</a> is as powerful as products like SAS and SPSS. </li>
</ul>
<ul>
<li>ODM has the big advantage to be part of the database, so it is not necessary to reallocate the to be analyzed data to another place. </li>
<li>So no security issues, the data stays where it is. </li>
<li>The GUI from ODM is getting better and better, it can easily be obtained at <a title="Oracle Data Miner (The GUI tool of ODM)" href="http://www.oracle.com/technology/products/bi/odm/odminer.html">OTN</a>. </li>
<li>ODM is also very powerful from SQL, eg. DBMS_PREDICTIVE_ANALYTICS which I personal used much for â€œGAPPâ€ </li>
<li>Models are stored in the database and can be used right away in the queries </li>
<li>50 of the statistical functions are free of charge to use </li>
<li>ODM itself has a license fee which is pretty cheap compared with SAS or SPSS. </li>
</ul>
</blockquote>
<p>&nbsp;</p>
<p align="center">Just look at the picture below, to give an impression how the GUI tool Oracle Data Miner looks like:</p>
<p>&nbsp;</p>
<div align="center"><img width="686" height="587" src="http://technology.amis.nl/wp-content/uploads/images/data_miner_collage_10gr2.jpg" /></div>
</p>
<p>I personally have used &quot;GAPP&quot; for a pretty long time now (more than two years), although first in experimental state, I now mention the method by name, when I use it for a customer. Just to give you an impression how powerful the method can be, I use an example of a very recent case (September 2008) I investigated with â€œGAPPâ€.</p>
<p align="baseline">At the customer the screen for â€œEmployee informationâ€ in their application was working with a very high variance in response time. Sometimes the response times were so bad that it was really unacceptable to work with. Based on this issue it was not acceptable to add more users to the system. First of all there had to be done an investigation due to what the big variance in response time was caused. Due to the high amount of components in the technical infrastructure and the fact that the infrastructure was shared by many other applications, made it for the customer very hard to pinpoint how to go further. Also normal tracing was very difficult to do. The technical infrastructure at the customer site looked (simplified) like the following:</p>
<p align="center"><img width="696" height="399" src="http://technology.amis.nl/wp-content/uploads/images/customer_example_architecture.jpg" /></p>
<p>&nbsp;</p>
<p align="baseline">The process involved went through a lot of steps like:</p>
<blockquote><p>&nbsp;</p>
<ul>
<li>Request from client</li>
<li>Going through a firewall</li>
<li>Going through a webserver</li>
<li>Going through a portal server (including a portal database call)</li>
<li>Going through single sign on via Oracle Internet Directory (including repository database call)</li>
<li>Going through ADF application</li>
<li>Retrieving information from database</li>
<li>Etc, etc.</li>
</ul>
</blockquote>
<p>&nbsp;</p>
<p align="baseline">Although I will not put the complete report for the customer in this blog, I like to show the following factorial analysis I did based on the data gathered from all the involved systems and the response time of the business process gathered from the ADF application.</p>
<p>&nbsp;</p>
<div align="center"><img width="734" height="378" src="http://technology.amis.nl/wp-content/uploads/images/customer_example_factorial.jpg" /></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>In the graph are just the important factors on the x-axe, the other factors, which are in total approximate 180 are not really important. Based on the factorial analysis the following response time graph and its prediction can be created:</p>
<p>&nbsp;</p>
<p align="center"><img width="726" vspace="0" hspace="0" height="392" border="0" align="bottom" src="http://technology.amis.nl/wp-content/uploads/images/customer_example_model.jpg" alt="Model created for the customer case" />&nbsp;</p>
<p>&nbsp;</p>
<p>The model shows that some of the spikes cannot be explained by the analyzed factors. This was due the fact that some factors which have had influence, were not part of the analysis. Although this is the case, in most of the time the prediction is pretty good. What makes it possible to have matrices measured to be used to predict the end user performance experience. So basically â€œGAPPâ€ has given you an instrument to see how the end user experience is by only looking at the matrices.</p>
<p>In the customer case I was able to give them advise, what to do in their environment&nbsp; to be able to cope with the extra users they wanted to serve. In this case the model showed that problems with memory on GH200 and GH300 would lead to unexpected performance drops of their application. The model can also predict how much these impacts are.</p>
<p>If you even want to go a step further with â€œGAPPâ€, you could also start to change factors to other values, to predict how the response time from the business process will react on this. This makes the use of â€œGAPPâ€ really powerful and puts it above a level of other methods. <br />&nbsp;</p>
<p>Currently I am very busy to finish my white paper on &quot;GAPP&quot; and to make the approach easier to be used in short performance tune assignments. Recently I have been using &quot;GAPP&#8217; very successful at a customer in the Nehterlands. The whole analysis took three days, including a stress test. I really hope that people start to see the big advantage of the method and understand that with the increasing complexity &quot;GAPP&quot; will be the right method to go.</p>
<p>If you have any request regarding the method, please sent me an email on: gerwin.hendriksen@amis.nl</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://technology.amis.nl/2008/09/29/oracle-data-mining-meets-performance-method-gapp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extreme performance introduced by patchset 11.1.0.7 smart scan</title>
		<link>http://technology.amis.nl/2008/09/25/extreme-performance-introduced-by-patchset-11107-smart-scan/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extreme-performance-introduced-by-patchset-11107-smart-scan</link>
		<comments>http://technology.amis.nl/2008/09/25/extreme-performance-introduced-by-patchset-11107-smart-scan/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 19:48:53 +0000</pubDate>
		<dc:creator>Gerwin Hendriksen</dc:creator>
				<category><![CDATA[AMIS]]></category>
		<category><![CDATA[Data Warehousing & BI]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[IT Architecture]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle Development Tools]]></category>
		<category><![CDATA[Technical Architecture]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[Database server]]></category>
		<category><![CDATA[Extreme performance]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Smart Scan]]></category>

		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=3515</guid>
		<description><![CDATA[Larry yesterday did his keynote here at Oracle Open World introducing the &#34;Oracle(R) Exadata Storage Server&#34;. This morning I attended a session about the technical details behind the server. In principal the server works with 8 nodes running RAC on Oracle Enterprise Linux 5. For the storage  [...]]]></description>
				<content:encoded><![CDATA[<p>Larry yesterday did his keynote here at Oracle Open World introducing the &quot;Oracle(R) Exadata Storage Server&quot;. This morning I attended a session about the technical details behind the server. In principal the server works with 8 nodes running RAC on Oracle Enterprise Linux 5. For the storage management ASM is used and since 11.1.0.7 smart scan has been introduced. Smart scan has been designed for very big data sources used in queries, like in Data Warehouses, where tables from tera bytes are common. In principle the following is accomplished using smart scan:<img src="wp-content/plugins/xinha4wp/xinha_core/plugins/InsertMore/img/ed_more.png" alt="...." /><span id="more-3515"></span></p>
<p>&nbsp;</p>
<blockquote><p><strong>With the traditional way of query, the following sequence of events can be identified:</strong></p>
<ul>
<li>Client sends query to database server </li>
<li>Database server will execute the query, to accomplish that the following has to be done: </li>
<li>create execution plan </li>
<li>ask for the different datasources to be retrieved from the storage </li>
<li>apply the query criteria to reduce the datasources retrieved from the storage </li>
<li>Database server sends the query result to the client</li>
<p>&nbsp;</p>
</ul>
<p><strong>With Smart Scan in place, the following sequence of events can be identified:</strong></p>
<ul>
<li>Client sends query to database server </li>
<li>Database server will execute the query, to accomplish that the following has to be done: </li>
<li>create execution plan </li>
<li>apply the query criteria and sent Smart Scan constructed request </li>
<li>Smart Scan identifies rows and columns direct on the storage </li>
<li>process the much smaller datasources</li>
<li>Database server sents the query results to the client</li>
</ul>
<p>&nbsp;</p>
</blockquote>
<p>&nbsp;<br />The big advantage of the Smart Scan principle is that there is less data transfer between physical disks and the database server. Currently the &quot;Oracle(R) Exadata Storage Server&quot; makes use of the infiniband protocol to talk to the underlaying disks, this gives together with a lot of hardware tuning an extreme performance with high end, big amounts of data transfer. Currently the machine is only usable for the Oracle database, so other things like software storage has to be done on a separate storage device.</p>
<p>To read further about the machine you can use the following link:<br /><a href="http://www.oracle.com/solutions/business_intelligence/database-machine.html" title="Oracle's Database Machine">http://www.oracle.com/solutions/business_intelligence/database-machine.html</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://technology.amis.nl/2008/09/25/extreme-performance-introduced-by-patchset-11107-smart-scan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Astonishing way of performance bottleneck analyzing method &quot;GAPP&quot; for complex enterprise technical architectures presented tomorrow at Oracle Open World</title>
		<link>http://technology.amis.nl/2008/09/20/astonishing-way-of-performance-bottleneck-analyzing-method-gapp-for-complex-enterprise-technical-architectures-presented-tomorrow-at-oracle-open-world/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=astonishing-way-of-performance-bottleneck-analyzing-method-gapp-for-complex-enterprise-technical-architectures-presented-tomorrow-at-oracle-open-world</link>
		<comments>http://technology.amis.nl/2008/09/20/astonishing-way-of-performance-bottleneck-analyzing-method-gapp-for-complex-enterprise-technical-architectures-presented-tomorrow-at-oracle-open-world/#comments</comments>
		<pubDate>Sat, 20 Sep 2008 07:22:37 +0000</pubDate>
		<dc:creator>Gerwin Hendriksen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=3407</guid>
		<description><![CDATA[
Currently waiting on the airport to go to San Francisco. Luckely had the time to write this blog. Last time I checked the number of pre-enrolled people for my presentation &#34;Jumping The GAPP&#34; (Session ID: S300193 at Sunday, September 21 11:45-12:45), I found still a disappointing number. I think  [...]]]></description>
				<content:encoded><![CDATA[<p><font size="2"></p>
<p>Currently waiting on the airport to go to San Francisco. Luckely had the time to write this blog. Last time I checked the number of pre-enrolled people for my presentation &quot;Jumping The GAPP&quot; (Session <font face="Calibri" size="3">ID: S300193 at Sunday, September 21 11:45-12:45), I found still a disappointing number. I think the title of the presentation makes it difficult to recognize what kind of really nice performance method is behind the presentation.</font></p>
<p>To give a small idea, what is &quot;GAPP&quot; all about i can say that more and more enterprise applications have very complicated technical architectures. The problem is that it gets harder and harder to find performance bottlenecks in such architectures, without probing and tracing on all parts of the architecture. This made me come up with a new method using on the moment Oracle Data Mining to identify performance bottlenecks. When I presented this the first time at <a title="HOTSOS ROCKS !!!" href="http://technology.amis.nl/blog/?p=2938">HOTSOS 2008 in Dallas</a>, I had a very big audience of more than 300 persons. After the presentation I was complimented on the idea and the easyness to use it.</p>
<p>So please be fair for yourself and don&#8217;t miss this presentation tomorrow. For myself, I try to keep jumping GAPP&#8217;s&#8230;</p>
<p>Regards, Gerwin</p>
<p></font></p>
]]></content:encoded>
			<wfw:commentRss>http://technology.amis.nl/2008/09/20/astonishing-way-of-performance-bottleneck-analyzing-method-gapp-for-complex-enterprise-technical-architectures-presented-tomorrow-at-oracle-open-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle DBA Symposium organized by Planboard</title>
		<link>http://technology.amis.nl/2008/06/02/oracle-dba-symposium-organized-by-planboard/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle-dba-symposium-organized-by-planboard</link>
		<comments>http://technology.amis.nl/2008/06/02/oracle-dba-symposium-organized-by-planboard/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 14:08:50 +0000</pubDate>
		<dc:creator>Gerwin Hendriksen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=3198</guid>
		<description><![CDATA[Last Tuesday (27th of May) I was present at the Oracle DBA Symposium as a presenter and attendee. The DBA Symposium was organized by Planboard. After all attendees and presenters had coffee together, Nienke Gijsen (Planboard) opened the Oracle DBA Symposium with some key remarks of what was  [...]]]></description>
				<content:encoded><![CDATA[<p>Last Tuesday (27th of May) I was present at the <a href="http://www.planboard.com/index.php?q=node/71"><font color="#800080">Oracle DBA Symposium</font></a> as a presenter and attendee. The DBA Symposium was organized by <a href="http://www.planboard.com/"><font color="#800080">Planboard</font></a>. After all attendees and presenters had coffee together, Nienke Gijsen (Planboard) opened the Oracle DBA Symposium with some key remarks of what was expected from the symposium. The biggest key of the symposium should be the networking between all the attendees and speakers. Further to build up a nice community of technical people to share knowledge and experience. The way Planboard wants to accomplish this is by having pretty long pauses (30 minutes) between the different presentations. <img alt="...." src="wp-content/plugins/xinha4wp/xinha_core/plugins/InsertMore/img/ed_more.png" /><span id="more-3198"></span></p>
<p>&nbsp;</p>
<p>At 10:00 in the morning I attended the first presentation. From the two to be chosen tracks, I followed the presentation from Bernhard de Cock Buning, which was titled â€œInside Oracle Clusterwareâ€. This presentation showed a lot of background information regarding Oracle Clusterware, and the places to check when something goes wrong inside this product. Bernhard showed with confidence his knowledge of all the background processes which are part of Oracle Clusterware. His presentation and live examples in his vmware environment on his laptop showed that there are a lot of differences between Oracle versions in the way Oracle Clusterware is logging in the log files for the different background processes.</p>
<p>&nbsp;</p>
<p>At 11:30 I attended the presentation of <a title="Toon Koppelaars" href="http://www.rulegen.com/pls/apex/f?p=14265:1:989493661231105">Toon Koppelaars</a>, titled â€œData Integrity: How it could beâ€. As usual I was really impressed by the way Toon is able to change â€œbusinessâ€ rules into plain SQL. Toon presented different integrity issues, and how they could be translated into reliable and performing pieces of code. In the presentation Toon showed also some complex synchronization issues and how they could be solved. For example a department should always have one manager and at least two admins. When in this example a department has a manager and two admins, and the two admins are deleted by two different sessions, the business rules could be violated. I personal think that it would be very well for everybody maintaining and developing in high end systems to have knowledge about this. Toon referred in his presentation to his book, which he wrote together with Lex de Haan called â€œApplied Mathematics for Database Professionalsâ€.</p>
<p>&nbsp;</p>
<p>After the midday break (13:30) I gave my presentation called â€œJumping The GAPPâ€. In this presentation I showed the new method â€œGAPPâ€ (introduced at <a title="HOTSOS 2008" href="http://www.hotsos.com/sym08.html">HOTSOS 2008</a>), and how it can be used to find performance bottlenecks in complex architectures without code change or tracing. In practice a lot of customers donâ€™t allow you to start tracing in production system to find bottlenecks in a system. Under normal circumstances you would use a test environment, but in a lot of cases this test environment is not representing the production situation. With GAPP you can jump this problem. The basic principle what is used with GAPP is data mining which is already used for a long time in business. The input for GAPP can be any available data (System metrics, ASH, Statspack, Network data, SAN data, etc), which can compared with each other via the same time stamp. The method can show where in a complex architecture certain wait time has gone and where tunings effort should be focused. Also can GAPP do predictions of how certain changes will impact the performance. Currently I am busy to create a whitepaper, for now you can read more in a <a title="previous post" href="http://technology.amis.nl/blog/?p=2938">previous blog post</a>.</p>
<p>&nbsp;</p>
<p>&nbsp;<img height="208" alt="Jumping the GAPP" src="http://technology.amis.nl/wp-content/uploads/images/gapp_jump.bmp" width="380" /></p>
<p>&nbsp;</p>
<p>At 15:00 I attended the presentation from Lonneke Dikmans, titled â€œOAS and SOA Suite: Work for DBAâ€™s ?â€. Lonneke presented how the Service Oriented Architecture would influence the work of a DBA. In her presentation it became very obvious that the SOA architecture will make the work of a dba more broad and different than it is from a traditional point of view. For the DBA it will be more and more important to know how the different components are connected and how they work together as one application. Although Lonneke was referring to Toon Koppelaars, with his vision of putting business rules into the database, it was from the SOA perspective, that the database is just storage of data. Lonneke successful showed that SOA can be used in such a way that this picture can be combined. I personal think that this is a real future challenge for all of us.</p>
<p>&nbsp;</p>
<p>At 16:30 I attended the last presentation of the DBA Symposium, from Jacco Landlust, titled â€œOracle Application Server; No Magic, but structured analysisâ€. In this presentation Jacco showed how a lot of trouble at Application Server level can be solved by a very flowchart a like error trapping method. He showed where log files can be found and how they should be read. It was impressive to see how easy Jacco was navigating in the different log files and what could be found by his drilldown method.</p>
<p>&nbsp;</p>
<p>Overall I have to say that the DBA Symposium was a big success, and I think starting this new symposium was a very good idea.</p>
<p>&nbsp;</p>
<p>Thanks and keeps jumping GAPPâ€™s, </p>
<p>&nbsp;</p>
<p>Gerwin Hendriksen</p>
]]></content:encoded>
			<wfw:commentRss>http://technology.amis.nl/2008/06/02/oracle-dba-symposium-organized-by-planboard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jumping the GAPPâ€¦</title>
		<link>http://technology.amis.nl/2008/03/04/jumping-the-gapp/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jumping-the-gapp</link>
		<comments>http://technology.amis.nl/2008/03/04/jumping-the-gapp/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 20:08:54 +0000</pubDate>
		<dc:creator>Gerwin Hendriksen</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=2938</guid>
		<description><![CDATA[Yesterday I had the opportunity to present my developed performance profiling approach called â€œGAPPâ€ at the HOTSOS Symposium 2008 here in Dallas. â€œGAPPâ€ is an abbreviation of â€œGeneral Approach Performance Profilingâ€ and is based on data mining of all kind of gathered system statistics  [...]]]></description>
				<content:encoded><![CDATA[<p>Yesterday I had the opportunity to present my developed performance profiling approach called â€œGAPPâ€ at the <a href="http://www.hotsos.com/sym08.html">HOTSOS Symposium 2008</a> here in Dallas. â€œGAPPâ€ is an abbreviation of â€œGeneral Approach Performance Profilingâ€ and is based on data mining of all kind of gathered system statistics (but also other data is possible). </p>
<p><img height="662" hspace="0" src="http://technology.amis.nl/wp-content/uploads/images/dsc_0007_red.JPG" width="890" align="bottom" border="0" /></p>
<p>The presentation went well and a lot of people attended my presentation. I got a lot of nice criticism and was questioned a lot by <a title="Dr. Neil Gunther" href="http://en.wikipedia.org/wiki/Neil_J._Gunther">Dr. Neil Gunther</a>. Before and after the presentation I had a lot of nice <a title="discussion" href="http://perfdynamics.blogspot.com/2008/03/hotsos-symposium-day-2.html">discussion</a> with him and he even offered to help me make this approach even bigger. For me this was a real honor and I really was very happy with his input.</p>
<p>Also a lot of other â€œimportantâ€ people attended the presentation, like <a title="Anjo Kolk" href="http://miraclebenelux.nl/">Anjo Kolk</a>, <a title="James Morle" href="http://www.scaleabilities.co.uk/">James Morle</a>, <a title="Cary Millsap" href="http://carymillsap.blogspot.com/">Cary Millsap</a>, <a title="Jeroen Evers" href="http://www.fameus.nl/">Jeroen Evers</a>, <a href="http://www.rulegen.com/">Toon Koppelaars</a> and many others. I personally was very happy to have the chance to present for such an audience, and was very happy with their reactions and criticism. I personal think that the HOTSOS Symposium is â€œ<a title="The Place" href="http://www.hotsos.com/">The Place</a>â€ for performance in the world.<img alt="...." src="wp-content/plugins/xinha4wp/xinha_core/plugins/InsertMore/img/ed_more.png" /><span id="more-2938"></span></p>
<p><a href="http://www.perfdynamics.com/">Dr. Neil Gunther</a> sitting with me:</p>
<p><img height="729" hspace="0" src="http://technology.amis.nl/wp-content/uploads/images/dsc03873_red.JPG" width="888" align="baseline" border="0" /></p>
<p>To develop â€œGAPPâ€, it took a long time to come up with a way to be able to have all kind of metrics (CPU, I/O, etc.) able to say something about a business process response time. I already started to think about this when I was still working for Oracle, and later on when I was working for IBM. After a lot of hours, from which my wife said: â€œWhat you are doing again behind your laptop?â€ I have now the feeling that the approach is worth having a name.</p>
<p>To give an impression of where â€œGAPPâ€ is all about, I will give a small introduction to the approach I created. First of all the approach can be used to performance profile business processes on high level, but depending on the metrics you put in, even on detailed level. If you look at the below slide from the presentation it will become clearer:<img height="561" hspace="0" src="http://technology.amis.nl/wp-content/uploads/images/gapp_increasingresptime.JPG" width="884" align="bottom" border="0" /></p>
<p>In this slide it becomes obvious that â€œGAPPâ€ for now (maybe in future I can go further), can say something about the fluctuation of â€œWait Timeâ€ for each resource in a chain for a business process. The â€œRâ€ and the â€œRslowâ€ in the slide are only different due to the â€œWait Timeâ€ for the different resources (CPU, I/O, Memory, etc.). Further I use the fact that utilization of a resource is related to â€œWait Timeâ€. </p>
<p>By having system metrics from all machines in a chain of an architecture, and having the response time of the business process on the same timestamps as the system metrics, the approach makes it possible to clarify which system metric is influencing the business process response time the most (Factorial Analyses). To accomplish this job on the moment I used a package called â€œ<a title="DBMS_PREDICTIVE_ANALYTICS" href="http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_predan.htm#sthref5484">DBMS_PREDICTIVE_ANALYTICS</a>â€, which is part of Oracle Data Mining (ODM), but also another data mining tool could be used (open source maybe?).</p>
<p>After knowing which system metric is influencing the business process the most, you could start to focus on that part of the architecture and do your optimization on the best spot to start with. To give an impression the following graph gives an impression of the â€œFactorial Analysesâ€. In the presentation I used an architecture with two machines (â€œEâ€ and â€œQâ€):<img height="640" hspace="0" src="http://technology.amis.nl/wp-content/uploads/images/gapp_factorialstatanalyses.JPG" width="885" align="bottom" border="0" /></p>
<p>&nbsp;In this graph it becomes clear that â€œWait%â€ and â€œDisk Busy%â€ of logical hard disk 2 and 3 from machine â€œQâ€ explains the most response time fluctuation of the business process in the months mentioned in the slide. Further investigation should be done on machine â€œQâ€. Later in the presentation I have showed that in other periods the â€œEâ€ machine should be investigated. </p>
<p>An important remark is that the approach â€œGAPPâ€ can work completely independent from Oracle, it can also use completely different metrics like â€œSQL statementâ€ elapsed times. This makes it even possible to find out if a certain SQL statement is highly involved in the response time of a business process. </p>
<p>Also future response time prediction can be made by â€œGAPPâ€. The effect can be predicted, how much changes in certain metrics will impact the response time of the business process.</p>
<p>I would love to clarify more, but I think I will need to create an article to show how powerful this approach â€œGAPPâ€ actually is. &nbsp;In the end I want to say that for me I really â€œJumped over the GAPPâ€ I had in my data to analyze the performance problem I was facing at the customer. The longer I look at the approach, the more I find out that this approach is really very powerful, although still a lot of research should be done.</p>
<p>I thank everybody who attended my presentation at the HOTSOS Symposium 2008 and of course at the AMIS Query in the Netherlands. If you have any questions about the approach I would be glad to answer any question about it (gerwin.hendriksen@amis.nl). Further I would like to thank Cary Millsap for giving me the chance to present at the HOTSOS Symposium 2008.</p>
<p>Of course I will keep you posted about the progress of the approachâ€¦ â€œGAPPâ€</p>
<p>With kind regards, Gerwin</p>
]]></content:encoded>
			<wfw:commentRss>http://technology.amis.nl/2008/03/04/jumping-the-gapp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What have a Merchant, some strawberries and a performance problem in common&#8230;&#8230;.</title>
		<link>http://technology.amis.nl/2008/02/26/what-have-a-merchant-some-strawberries-and-a-performance-problem-in-common/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-have-a-merchant-some-strawberries-and-a-performance-problem-in-common</link>
		<comments>http://technology.amis.nl/2008/02/26/what-have-a-merchant-some-strawberries-and-a-performance-problem-in-common/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 13:16:34 +0000</pubDate>
		<dc:creator>Gerwin Hendriksen</dc:creator>
				<category><![CDATA[AMIS]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=2890</guid>
		<description><![CDATA[
If you want to know what a Merchant, some strawberries and a performance problem have in common, you should come to the AMIS Query at thursday (28-02-2008). In this Query I will explain what these relations are, and how you could use this different way of thinking in your performance problems in  [...]]]></description>
				<content:encoded><![CDATA[<p><font size="2"></p>
<p><font face="verdana,arial,helvetica,sans-serif">If you want to know what a Merchant, some strawberries and a performance problem have in common, you should come to the AMIS Query at thursday (28-02-2008). In this Query I will explain what these relations are, and how you could use this different way of thinking in your performance problems in practice. The Query may be an eyeopener for everybody interested in performance.</font></p>
<p><font face="verdana,arial,helvetica,sans-serif"><img height="419" hspace="0" src="http://technology.amis.nl/wp-content/uploads/images/d93-352987.jpg" width="492" align="baseline" border="0" /></font></p>
<p><font face="verdana,arial,helvetica,sans-serif">I really would like to see you, please sign in for free to join us at thursday evening.</font></p>
<p><a href="http://www.amis.nl/activiteiten">http://www.amis.nl/</a></p>
<p>Regards, Gerwin</p>
<p></font></p>
]]></content:encoded>
			<wfw:commentRss>http://technology.amis.nl/2008/02/26/what-have-a-merchant-some-strawberries-and-a-performance-problem-in-common/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Are Index Scans always good&#8230;&#8230;</title>
		<link>http://technology.amis.nl/2007/05/31/are-index-scans-always-good/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=are-index-scans-always-good</link>
		<comments>http://technology.amis.nl/2007/05/31/are-index-scans-always-good/#comments</comments>
		<pubDate>Thu, 31 May 2007 16:13:51 +0000</pubDate>
		<dc:creator>Gerwin Hendriksen</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Oracle Development Tools]]></category>

		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=2057</guid>
		<description><![CDATA[During my work a lot of times I have heard the same rumour. Lots of people are stating that when a system is doing index scans the system is doing well. But is this actual true, that is the question. In my work I experienced a lot of times that I was called to look at a system and specific queries  [...]]]></description>
				<content:encoded><![CDATA[<p>During my work a lot of times I have heard the same rumour. Lots of people are stating that when a system is doing index scans the system is doing well. But is this actual true, that is the question. In my work I experienced a lot of times that I was called to look at a system and specific queries (BI) where not performing well. In lots of these cases I saw that the system was doing lots of &quot;db file sequential reads&quot; and not &quot;db file scattered reads&quot;. The &quot;db file sequential reads&quot; are used when index scans are done, the &quot;db file scattered reads&quot; are used when full table scans are done.<img alt="...." src="wp-content/plugins/xinha4wp/xinha_core/plugins/InsertMore/img/ed_more.png" /><span id="more-2057"></span></p>
<p>When you encounter such a situation you should start to look into a 10046 level 8 or higher trace from the statement involved. In this trace you should first check which object is read in the &quot;db file sequential read&quot; very often, for example:</p>
<p>WAIT #1: nam=&#8217;db file sequential read&#8217; ela= 159 p1=14 p2=137858 p3=1</p>
<p>In this line &quot;ela&quot; is telling the time it took to do the read in millionst of a second, &quot;p1&quot; tells the file_id, &quot;p2&quot; the block number in the file and &quot;p3&quot; the number of blocks read by the read. The block number together with the file_id and a query on dba_extents can bring up the object read.</p>
<p>The object you find here is what is causing the long wait. Another way can be by online checking the session running the query and check via v$session_wait and v$session what the object is the session is waiting for.</p>
<p>After finding which object is involved in the &quot;db file sequential read&quot;, you can start to checkout the execution plan rowsource data of the query, and see where the table is in the execution plan. Most of the time the involved object is a table read via sequential reads after an index was accessed. You can find something like:</p>
<p>&nbsp;148243&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TABLE ACCESS BY INDEX ROWID &lt;FOUND TABLE&gt; <br />&nbsp;998934&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INDEX RANGE SCAN INDEX1 (object id 29469)</p>
<p>The above two lines have been extracted from a tkprof output or can be obtained in the STATS lines in a raw trace. The two lines above say that via the index &quot;INDEX1&quot; 998934 rows are retrieved from the table, but in real for the outcome of the query and the existing criteria on the query this number of retrieved rows should not be more than 148243 rows. So in this case we actually are jugling around in the temp file with almost 7 times more rows than actually needed for the outcome, so this means 7 times more sequential I/O as needed, much more used processing power of the CPU, etc, etc&#8230;.. </p>
<p>So as we can see in the above example, we have indeed used an index to retrieve rows from the table, but the used index is not specific enough to prevent reading a lot of rows unneccesary. So it is highly important to checkout if such situations are around in a system. The thing to look for is a high number of rows in front of a index and a low number of rows (in compare) in front of a table.</p>
<p>So now the big question rises, how we can get around such an issue. The first thing we should checkout is how many indexes are on the table and on which columns. The second thing is that we should know what selection criteria are not part of the index. After this analyses we have some options to choose from and not all are very simple to do, it is very depending on the situation you are in:<br />- Change the optimizer behaviour: Regather schema statistics, use histograms, use hints, etc.<br />- Add extra index<br />- Change the selection criteria in such a way that the functional result stays the same<br />- Etc.</p>
<p>In the example above the solution was to change a selection criteria in the query (Business Objects Query change). This resulted in the below situation:</p>
<p>&nbsp;148243&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TABLE ACCESS BY INDEX ROWID &lt;FOUND TABLE&gt; <br />&nbsp;152241&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INDEX RANGE SCAN INDEX2 (object id 29478)</p>
<p>So the end result is now that the table is accessed via another index (INDEX2) and that around 4000 rows too much are read from the table. This is much better and the total performance of the query went up with a factor 8-9. This because everything was much less stressed.</p>
<p>What we can see in the above example is that not always high &quot;db file sequential read&quot; is a good thing, it also does not mean that much full table scans are well&#8230;&#8230; The most important thing is that the amount of I/O and the real needed amount of I/O is very close. How to find this out is sometimes a challenge, a 10046 level 8 can help with this.</p>
<p>As a last note use one important principe, never do I/O if it is not needed, and do it only it there is no other option.</p>
<p>Regards, Gerwin</p>
]]></content:encoded>
			<wfw:commentRss>http://technology.amis.nl/2007/05/31/are-index-scans-always-good/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Tracing in Self Service Applications (CRM) within Oracle Applications 11i</title>
		<link>http://technology.amis.nl/2007/01/02/sql-tracing-in-self-service-applications-crm-within-oracle-applications-11i/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sql-tracing-in-self-service-applications-crm-within-oracle-applications-11i</link>
		<comments>http://technology.amis.nl/2007/01/02/sql-tracing-in-self-service-applications-crm-within-oracle-applications-11i/#comments</comments>
		<pubDate>Tue, 02 Jan 2007 12:35:11 +0000</pubDate>
		<dc:creator>Gerwin Hendriksen</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle E-Business Suite]]></category>

		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1463</guid>
		<description><![CDATA[In a lot of cases it is very interesting to be able to trace Self Service Applications (CRM) in Oracle Applications 11i. Most of the time it is very hard to understand what is going on in such a session and in that case it might be very handy to get the SQL behind it. To do this there is a very  [...]]]></description>
				<content:encoded><![CDATA[<p>In a lot of cases it is very interesting to be able to trace Self Service Applications (CRM) in Oracle Applications 11i. Most of the time it is very hard to understand what is going on in such a session and in that case it might be very handy to get the SQL behind it. To do this there is a very nice not really known feature of the profile option &quot;Initialization SQL Statement &#8211; Custom&quot;. With this profile option it is possible to trace any session of a given Apps user on any level. To ensure you don&#8217;t end up with a hanging apps login (quote&#8217;s should be placed the right place) you can use the following scripts just on the SQL plus prompt to activate and stop the tracing.<img src="wp-content/plugins/xinha4wp/xinha_core/plugins/InsertMore/img/ed_more.png" alt="...." title="The remainder of this blog post is shown after " /><span id="more-1463"></span></p>
<p>Start:</p>
<p>whenever sqlerror exit failure rollback;</p>
<p>set heading off<br />REM define un = &amp;username<br />define deftrace=&#8217;begin fnd_ctl.fnd_sess_ctl(&#8221;&#8221;&#8221;&#8221;,&#8221;&#8221;&#8221;&#8221;,&#8221;&#8221;TRUE&#8221;&#8221;,&#8221;&#8221;TRUE&#8221;&#8221;,&#8221;&#8221;LOG&#8221;&#8221;, &#8221;&#8221;ALTER SESSION SET EVENTS=&#8221;&#8221;||&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;||&#8221;&#8221;10046 TRACE NAME CONTEXT FOREVER, LEVEL 12&#8221;&#8221;||&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;&#8221;);end;&#8217;</p>
<p>select &#8216;Inserting profile option value&#8217;<br />from dual;</p>
<p>insert into fnd_profile_option_values<br />select 0,profile_option_id, 10004, user_id,sysdate,0,sysdate,0,0, &#8216;&amp;deftrace&#8217;, null<br />from fnd_profile_options, fnd_user<br />where profile_option_name = &#8216;FND_INIT_SQL&#8217;<br />and user_name = &#8216;&amp;APPS_USER&#8217;<br />/</p>
<p>commit;</p>
<p>&nbsp;</p>
<p>Stop:</p>
<p>select &#8216;Press ENTER to disable trace for&#8217;, &#8216;&amp;un&#8217;<br />from dual;</p>
<p>select &#8216;&amp;ENTER&#8217;<br />from dual;</p>
<p>delete fnd_profile_option_values<br />where application_id=0 and level_id=10004<br />and level_value = (select user_id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from fnd_user<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where user_name = &#8216;&amp;APPS_USER&#8217;)<br />and profile_option_id = (select profile_option_id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from fnd_profile_options<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where profile_option_name = &#8216;FND_INIT_SQL&#8217;)<br />/</p>
<p>commit:</p>
<p>Just to use the scripts the following steps and instructions should be used:</p>
<ul>
<li>run the start script in sqlplus and provide the application username to be traced in Self Service and give an Enter (this session stays open now) </li>
<li>Login with the application user, and reproduce the to be traced functions. </li>
<li>Logout with your application user. </li>
<li>run the stop script in the sqlplus session for the traced Oracle Applications user. </li>
</ul>
<p>* Important for the script:</p>
<ul>
<li>Check if define deftrace is one line &#8216;&#8230;..&#8217; </li>
<li>Level 12 (waits&amp;binds) can be changed to 8(waits), 4(binds) and 1(SQL_TRACE) </li>
</ul>
<p>If you might have any questions, don&#8217;t hesitate to contact me.</p>
]]></content:encoded>
			<wfw:commentRss>http://technology.amis.nl/2007/01/02/sql-tracing-in-self-service-applications-crm-within-oracle-applications-11i/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>RAC vs. Data Guard or &quot;Political High Availability&quot;</title>
		<link>http://technology.amis.nl/2006/12/21/rac-vs-data-guard-or-political-high-availability/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rac-vs-data-guard-or-political-high-availability</link>
		<comments>http://technology.amis.nl/2006/12/21/rac-vs-data-guard-or-political-high-availability/#comments</comments>
		<pubDate>Thu, 21 Dec 2006 18:31:55 +0000</pubDate>
		<dc:creator>Gerwin Hendriksen</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=1446</guid>
		<description><![CDATA[Thursday 14 december 2006, we had here at AMIS a Query called &#34;High Availability: RAC vs. Data Guard&#34; the Query was lead by Oak Table Network members Carel Jan Engel &#38; Jeroen Evers. The session had a very informative character and made a compare between Data Guard (Carel Jan Engel) and RAC (Jeroen  [...]]]></description>
				<content:encoded><![CDATA[<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Thursday 14 december 2006, we had here at AMIS a Query called &quot;High Availability: RAC vs. Data Guard&quot; the Query was lead by Oak Table Network members Carel Jan Engel &amp; Jeroen Evers. The session had a very informative character and made a compare between Data Guard (Carel Jan Engel) and RAC (Jeroen Evers), based on high availability on outage time and the data safety for user errors.</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Looking at the above comparison Data Guard has some very nice advantages above RAC, because of the fact that in Data Guard not one database is involved, but more. The Data Guard solution is using a standby database principle, what makes it possible to have a delay between the databases and in that way data safety for user errors. For example a truncate of a table in the production database can be stopped being applied on the standby. Further more, the Data Guard solution works with an â€œactiveâ€, â€œpassiveâ€ principle and switching the database function is easy and very fast to be accomplished (a few minutes is possible on database level). So in principle production can be running on site A and in case of failure of site A, the passive (standby) database is brought up as production on site B. After Site A has been brought up, site A can just be working as passive (standby) database. So in the end it is not important on which side the production is running. <img title="The remainder of this blog post is shown after " alt="...." src="wp-content/plugins/xinha4wp/xinha_core/plugins/InsertMore/img/ed_more.png" /><span id="more-1446"></span><br /></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none">&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">In practice the above is overshadowed with the fact that most of the time the passive side has not the same amount of resources available, like CPU and memory. So in that case the standby site is much slower as the normal production, or resources have to be increased before able to run production on the standby site. The other thing is that if the active site and the passive site are equally sized the amount of license fee for Oracle software and OS is the double of the production system capacity. In that case there is a possibility to have the standby database opened for reporting purposes (management reporting), in that way the standby hardware capacity can be used. Another option is to run development and test systems on the standby hardware and in case of failover only the production is running. </span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none">&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">When looking at RAC, the most important difference is that it is in the end just one database. This has as advantage that just one dataset is involved and different memory structures (instances), running on different machines are using the same database (same dataset/storage), so also able to use the capacity of all involved servers for production. The big disadvantage is that protection against user errors like a truncate is not there (with Data Guard it is depending on the configuration and set delay).</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">In the end it is really important to define â€œHigh Availabilityâ€. In the Query from 14 december 2006 it was positioned to be the time of unplanned down time. I personal would like to add the statement and definition of â€œPolitical High Availabilityâ€. Although Data Guard needs very little time to failover between the â€œactiveâ€ and the â€œpassiveâ€ site, it still needs a few minutes of real down time (nobody can work). In case of RAC and one server dies we have still end users able to use the system. In general the need to reconnect, as a result of a node/instance failure when RAC is in place, is not considered to be downtime.</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">For performance reasons it is good in RAC to separate the functions of the different nodes running an instance (database servers), this to prevent I/O contention on the interconnect between the nodes. So the overhead of RAC will be decreased. This principle is simple to understand by knowing that using the same datasets on different RAC nodes will mean that database blocks will be transferred (block pinging) via the interconnect, because different rows, used on different nodes are physically in the same database block. The bigger the database block size the bigger the impact will be.</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Based on this performance principle a function separation is very attractive in RAC, but has a coin side. We could think of a situation of a company operating in two countries, like the <country w:st="on" />Netherlands and the <country w:st="on" />
<place w:st="on" />UK, based on the performance principle we could choose to have both countries using their own server (two way RAC). In case of a failure of one of the two nodes, a complete country will have an outage. This is from an
<place w:st="on" />SLA (Service Level Agreement) not a very nice situation. For this I introduce the term â€œPolitical High Availabilityâ€, so it is better to have the two countries mixed and in that way just loose half of both countries, and not one whole country. From management point of view in the second situation we will not loose a country and in that case it will not be called an outage, but a disruption.</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Another important thing is the fact that with increasing number of nodes in RAC we will have a lower percentage of users having an issue when one of the servers dies. On the other hand the more nodes in RAC we will have, the more RAC overhead we will get. This will be more severe in cases the datasets used on the different servers are more similar. In Oracle Applications for example a table like FND_CONCURRENT_REQUESTS can give a lot of overhead.</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Also the complexity between solutions is important. The more complex the configuration the bigger the chance that something goes wrong due to user maintenance error. This means also that a more complex solution needs more skilled personnel, more expensive resources and due to that a more expensive solution.</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">For high availability over big distances it is recommended to use Data Guard, but for smaller distances like several kilometers it is possible to create an extended RAC cluster. When considering such a solution it is important to think of a triple site solution and not going for a twin data center solution, because of data consistency.</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">From a definition point of view I think the following reasons should be to use RAC instead of Data Guard or in combination with Data Guard (Oracle Maximum Availability Architecture): </span></p>
<ul>
<li><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">The â€œPolitical High Availabilityâ€ is really important for the business.</span> </li>
<li><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">There is not enough capacity in one server to handle the load.</span> </li>
<li><span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">Scalability is a requirement.</span>&nbsp; </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://technology.amis.nl/2006/12/21/rac-vs-data-guard-or-political-high-availability/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
