<?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"
	>

<channel>
	<title>Sven's Technik-Blog &#187; Tuning</title>
	<atom:link href="http://sven.svenvetter.com/sven/category/oracle/tuning/feed/" rel="self" type="application/rss+xml" />
	<link>http://sven.svenvetter.com/sven</link>
	<description>Einiges über Oracle, Security, Linux, ... und auch über mich</description>
	<pubDate>Wed, 15 Oct 2008 19:31:15 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Oracle 10.2.0.4 f&#252;r Linux x86 ist verf&#252;gbar - Update 2 - Weitere neue Features</title>
		<link>http://sven.svenvetter.com/sven/2008/02/28/oracle-10204-fuer-linux-x86-ist-verfuegbar-update-2-weitere-neue-features/</link>
		<comments>http://sven.svenvetter.com/sven/2008/02/28/oracle-10204-fuer-linux-x86-ist-verfuegbar-update-2-weitere-neue-features/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 07:05:05 +0000</pubDate>
		<dc:creator>Sven Vetter</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[TrivadisContent]]></category>

		<category><![CDATA[Tuning]]></category>

		<category><![CDATA[10g]]></category>

		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://sven.svenvetter.com/sven/2008/02/28/oracle-10204-fuer-linux-x86-ist-verfuegbar-update-2-weitere-neue-features/</guid>
		<description><![CDATA[Folgende Oracle-Aussage stimmt definitiv nicht mehr:
Patch sets provide bug fixes only; they do not include new functionality and they do not require certification on the target system.
Wie in diesem Blogeintrag zu sehen ist, gibt es weitere neue Funktionen, wor&#252;ber sich die "Performance Junkies" freuen werden  ]]></description>
			<content:encoded><![CDATA[<p>Folgende Oracle-Aussage stimmt definitiv nicht mehr:</p>
<blockquote><p>Patch sets provide bug fixes only; they do not include new functionality and they do not require certification on the target system.</p></blockquote>
<p>Wie in diesem <a href="http://www.liberidu.com/blog/?p=379" onclick="javascript:urchinTracker ('/outbound/article/www.liberidu.com');">Blogeintrag</a> zu sehen ist, gibt es weitere neue Funktionen, wor&#252;ber sich die "Performance Junkies" freuen werden <img src='http://sven.svenvetter.com/sven/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://sven.svenvetter.com/sven/2008/02/28/oracle-10204-fuer-linux-x86-ist-verfuegbar-update-2-weitere-neue-features/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Features Oracle 11g: Real Application Testing</title>
		<link>http://sven.svenvetter.com/sven/2007/12/17/new-features-oracle-11g-real-application-testing/</link>
		<comments>http://sven.svenvetter.com/sven/2007/12/17/new-features-oracle-11g-real-application-testing/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 10:17:35 +0000</pubDate>
		<dc:creator>Sven Vetter</dc:creator>
		
		<category><![CDATA[11g]]></category>

		<category><![CDATA[OEM]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[TrivadisContent]]></category>

		<category><![CDATA[Tuning]]></category>

		<category><![CDATA[Performance]]></category>

		<category><![CDATA[RAT]]></category>

		<guid isPermaLink="false">http://sven.svenvetter.com/sven/2007/12/17/new-features-oracle-11g-real-application-testing/</guid>
		<description><![CDATA[Neben der Vorstellung der zwei Komponenten "Database Replay" und "SQL Performance Analyzer" in meinem Blog habe ich dazu auch noch einen etwas ausf&#252;hrlicheren Artikel geschrieben.
Download: www.trivadis.com -> Know-how-Center -> Publikationen
Oder direkt hier.]]></description>
			<content:encoded><![CDATA[<p>Neben der Vorstellung der zwei Komponenten "<a href="http://sven.svenvetter.com/sven/2007/09/17/11g_dbreplay/" >Database Replay</a>" und "<a href="http://sven.svenvetter.com/sven/2007/09/20/11g_spa/" ><acronym title="Structured Query Language">SQL</acronym> Performance Analyzer</a>" in meinem Blog habe ich dazu auch noch einen etwas ausf&#252;hrlicheren Artikel geschrieben.</p>
<p>Download: <a href="http://www.trivadis.com" onclick="javascript:urchinTracker ('/outbound/article/www.trivadis.com');">www.trivadis.com</a> -> Know-how-Center -> Publikationen<br />
Oder direkt <a href="http://www.trivadis.com/Images/Trivadis_SvV_Real_Application_Testing_tcm16-16974.pdf" onclick="javascript:urchinTracker ('/outbound/article/www.trivadis.com');">hier</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://sven.svenvetter.com/sven/2007/12/17/new-features-oracle-11g-real-application-testing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8220;Multi-column partition pruning&#8221; in Oracle 9 und 10</title>
		<link>http://sven.svenvetter.com/sven/2007/10/22/multi-column-partition-pruning-in-oracle-9-und-10/</link>
		<comments>http://sven.svenvetter.com/sven/2007/10/22/multi-column-partition-pruning-in-oracle-9-und-10/#comments</comments>
		<pubDate>Mon, 22 Oct 2007 12:45:08 +0000</pubDate>
		<dc:creator>Sven Vetter</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[TrivadisContent]]></category>

		<category><![CDATA[Tuning]]></category>

		<category><![CDATA[10g]]></category>

		<category><![CDATA[9i]]></category>

		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://sven.svenvetter.com/sven/2007/10/22/multi-column-partition-pruning-in-oracle-9-und-10/</guid>
		<description><![CDATA[Eins der f&#252;r mich interessantesten Features von Oracle 10.2 ist das "Multi-column partition pruning". Sind Tabellen nach mehreren Spalten Range-Partitioniert, kann Partition Pruning voll benutzt werden, auch wenn der/die f&#252;hrenden Partition-Keys nicht in der Abfrage verwendet werden. In alten Versionen geht das nicht, Partition-Pruning wird dann nicht benutzt bzw. es werden viel gr&#246;ssere Bereiche gelesen.
Diese [...]]]></description>
			<content:encoded><![CDATA[<p>Eins der f&#252;r mich interessantesten Features von Oracle 10.2 ist das "Multi-column partition pruning". Sind Tabellen nach mehreren Spalten Range-Partitioniert, kann Partition Pruning voll benutzt werden, auch wenn der/die f&#252;hrenden Partition-Keys nicht in der Abfrage verwendet werden. In alten Versionen geht das nicht, Partition-Pruning wird dann nicht benutzt bzw. es werden viel gr&#246;ssere Bereiche gelesen.</p>
<p>Diese Aussage stimmt so inzwischen nicht mehr.<br />
<span id="more-87"></span><br />
Mein Kollege Chris war gestern ganz erstaunt, dass Oracle 9.2.0.8 im Execution-Plan folgendes ausgab:
<pre class="oracle8"><span style="color: #808080; font-style: italic;">------------------------------------------------------------</span>
| Id | Operation                | Name | Pstart  | Pstop   |
<span style="color: #808080; font-style: italic;">------------------------------------------------------------</span>
|  <span style="color: #cc66cc;">0</span> | <span style="color: #993333; font-weight: bold; text-transform: uppercase;">SELECT</span> STATEMENT         |      |         |         |
|  <span style="color: #cc66cc;">1</span> | <span style="color: #993333; font-weight: bold; text-transform: uppercase;">PARTITION</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">RANGE</span> ITERATOR |      | <span style="color: #993333; font-weight: bold; text-transform: uppercase;">KEY</span><span style="color: #66cc66;">&#40;</span>MC<span style="color: #66cc66;">&#41;</span> | <span style="color: #993333; font-weight: bold; text-transform: uppercase;">KEY</span><span style="color: #66cc66;">&#40;</span>MC<span style="color: #66cc66;">&#41;</span> |
|* <span style="color: #cc66cc;">2</span> | <span style="color: #993333; font-weight: bold; text-transform: uppercase;">TABLE</span> <span style="color: #993333; font-weight: bold; text-transform: uppercase;">ACCESS</span> FULL        | T    | <span style="color: #993333; font-weight: bold; text-transform: uppercase;">KEY</span><span style="color: #66cc66;">&#40;</span>MC<span style="color: #66cc66;">&#41;</span> | <span style="color: #993333; font-weight: bold; text-transform: uppercase;">KEY</span><span style="color: #66cc66;">&#40;</span>MC<span style="color: #66cc66;">&#41;</span> |
<span style="color: #808080; font-style: italic;">------------------------------------------------------------</span>
&nbsp;</pre>
<p>KEY(MC) heisst aber "Multi-column partition pruning"!</p>
<p>Ich habe dies dann in einer 9.2.0.7 Datenbank ausgetestet - dort funktioniert es nicht...<br />
Nach diversen Tests in unterschiedlichen Oracle-Versionen hat Chris dann folgendes festgestellt:<br />
Oracle hat einen Backport dieses Features auf 9.2.0.8 und 10.1.0.5 vorgenommen. In allen &#228;lteren 10.1 und 9.2-Versionen funktioniert es nicht.</p>
<p>Was heisst das nun - <img src='http://sven.svenvetter.com/sven/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> oder <img src='http://sven.svenvetter.com/sven/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> ?<br />
 <img src='http://sven.svenvetter.com/sven/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> - Ein wichtiges Feature wurde in noch h&#228;ufig benutzte Versionen eingebaut.<br />
 <img src='http://sven.svenvetter.com/sven/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> - Hoffentlich wurde das in den doch sehr komplexen Optimizer auch richtig implementiert...</p>]]></content:encoded>
			<wfw:commentRss>http://sven.svenvetter.com/sven/2007/10/22/multi-column-partition-pruning-in-oracle-9-und-10/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Features Oracle 11g: SQL Performance Analyzer</title>
		<link>http://sven.svenvetter.com/sven/2007/09/20/11g_spa/</link>
		<comments>http://sven.svenvetter.com/sven/2007/09/20/11g_spa/#comments</comments>
		<pubDate>Thu, 20 Sep 2007 13:03:04 +0000</pubDate>
		<dc:creator>Sven Vetter</dc:creator>
		
		<category><![CDATA[11g]]></category>

		<category><![CDATA[OEM]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[TrivadisContent]]></category>

		<category><![CDATA[Tuning]]></category>

		<category><![CDATA[Performance]]></category>

		<category><![CDATA[RAT]]></category>

		<guid isPermaLink="false">http://sven.svenvetter.com/sven/2007/09/20/11g_spa/</guid>
		<description><![CDATA[Auch hier wieder ein Verweis auf den Artikel von Arup Nanda, der das "Doing" sehr gut beschreibt.
Das in meinem letzten Blog-Eintrag beschriebene Database Replay kann einiges nicht:

Nur einzelne Statements analysieren
Statements, die auf eine bestimmte Tabelle zugreifen, analysieren
Zus&#228;tzliche (nicht aufgezeichnete) Statements analysieren
Auf Detailebene Statistiken und Ausf&#252;hrungspl&#228;ne analysieren

Genau diese Punkte sind die St&#228;rken des SQL Performance Analyzer [...]]]></description>
			<content:encoded><![CDATA[<p>Auch hier wieder ein Verweis auf den <a href="http://www.oracle.com/technology/pub/articles/oracle-database-11g-top-features/11g-spa.html" onclick="javascript:urchinTracker ('/outbound/article/www.oracle.com');">Artikel</a> von Arup Nanda, der das "Doing" sehr gut beschreibt.</p>
<p>Das in meinem letzten <a href="http://sven.svenvetter.com/sven/2007/09/17/11g_dbreplay/" >Blog</a>-Eintrag beschriebene Database Replay kann einiges nicht:</p>
<ul>
<li>Nur einzelne Statements analysieren</li>
<li>Statements, die auf eine bestimmte Tabelle zugreifen, analysieren</li>
<li>Zus&#228;tzliche (nicht aufgezeichnete) Statements analysieren</li>
<li>Auf Detailebene Statistiken und Ausf&#252;hrungspl&#228;ne analysieren</li>
</ul>
<p>Genau diese Punkte sind die St&#228;rken des <acronym title="Structured Query Language">SQL</acronym> Performance Analyzer (SPA).<br />
<span id="more-73"></span><br />
Ein kleines Beispiel: Ich habe den TPC-H-Benchmark von <a href="http://hammerora.sourceforge.net" onclick="javascript:urchinTracker ('/outbound/article/hammerora.sourceforge.net');">Hammerora</a> laufen lassen, danach optimizer_index_cost_adj von 100 auf 10 gesetzt, die gleichen Statements nochmals laufen lassen und die Resultate verglichen:<br />
<a href='/sven/wp-content/uploads/2007/09/spa1.jpg' title='SPA: Performance&#252;bersicht - Elapsed Time ist 75% schlechter gewurden' rel=thumbnail><img src='/sven/wp-content/uploads/2007/09/spa1.thumbnail.jpg' alt='SPA: Performance&#252;bersicht - Elapsed Time ist 75% schlechter gewurden' /></a><a href='/sven/wp-content/uploads/2007/09/spa2.jpg' title='SPA: Performanceauswirkungen in der Statement&#252;bersicht' rel=thumbnail><img src='/sven/wp-content/uploads/2007/09/spa2.thumbnail.jpg' alt='SPA: Performanceauswirkungen in der Statement&#252;bersicht' /></a><a href='/sven/wp-content/uploads/2007/09/spa3.jpg' title='SPA: Performanceauswirkungen auf Einzelstatement-Ebene' rel=thumbnail><img src='/sven/wp-content/uploads/2007/09/spa3.thumbnail.jpg' alt='SPA: Performanceauswirkungen auf Einzelstatement-Ebene' /></a></p>
<p>Cool <img src='http://sven.svenvetter.com/sven/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Aber wie immer - Es ist noch nicht 100% perfekt:<br />
Ich w&#252;rde mir w&#252;nschen, dass die Performanceauswirkungen einer Migration vorhergesehen werden k&#246;nnen. Nun kann ich zwar mit Oracle 10g ein <acronym title="Structured Query Language">SQL</acronym> Tuningset erzeugen, dies in 11g importieren und dort analysieren. Leider werden nur die Statements, nicht aber die Statistiken und Ausf&#252;hrungspl&#228;ne &#252;bernommen. D.h., die Statements werden mit 11g <strong>neu</strong> ausgef&#252;hrt - und k&#246;nnen auch nur mit 11g verglichen werden.<br />
Zwar kann ich z.B. den Optimizer von 10g (und auch fr&#252;her) simulieren - aber es ist doch nicht das gleiche.<br />
Also - das w&#228;re noch mein Wunsch: Die Statistikdaten von 10g mit &#252;bernehmen und auch mit vergleichen. Dies w&#252;rde das sehr gute Tool nochmals aufwerten.</p>]]></content:encoded>
			<wfw:commentRss>http://sven.svenvetter.com/sven/2007/09/20/11g_spa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Features Oracle 11g: Database Replay</title>
		<link>http://sven.svenvetter.com/sven/2007/09/17/11g_dbreplay/</link>
		<comments>http://sven.svenvetter.com/sven/2007/09/17/11g_dbreplay/#comments</comments>
		<pubDate>Mon, 17 Sep 2007 20:59:31 +0000</pubDate>
		<dc:creator>Sven Vetter</dc:creator>
		
		<category><![CDATA[11g]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[TrivadisContent]]></category>

		<category><![CDATA[Tuning]]></category>

		<category><![CDATA[Performance]]></category>

		<category><![CDATA[RAT]]></category>

		<guid isPermaLink="false">http://sven.svenvetter.com/sven/2007/09/17/11g_dbreplay/</guid>
		<description><![CDATA[Auch ich m&#246;chte mit einer Reihe &#252;ber Features von 11g starten. Ich will dabei nicht berichten, wie einfach es ist, eine bestimmte Funktionalit&#228;t einzusetzen (daf&#252;r gibt es viele andere Blogs, auf die ich gern verweisen werde). Mein Ziel ist es, das Feature zu bewerten und &#252;ber m&#246;gliche Probleme zu informieren.
OK - starten wir mit Database [...]]]></description>
			<content:encoded><![CDATA[<p>Auch ich m&#246;chte mit einer Reihe &#252;ber Features von 11g starten. Ich will dabei nicht berichten, wie einfach es ist, eine bestimmte Funktionalit&#228;t einzusetzen (daf&#252;r gibt es viele andere Blogs, auf die ich gern verweisen werde). Mein Ziel ist es, das Feature zu bewerten und &#252;ber m&#246;gliche Probleme zu informieren.</p>
<p>OK - starten wir mit Database Replay. Ein guter Einstieg dazu ist der <a href="http://www.oracle.com/technology/pub/articles/oracle-database-11g-top-features/11g-replay.html" onclick="javascript:urchinTracker ('/outbound/article/www.oracle.com');">Artikel</a> von Arup Nanda. Empfehlen w&#252;rde ich aber, nicht alles per Enterprise Manager zu "klicken", sondern sich etwas mit dem PL/<acronym title="Structured Query Language">SQL</acronym>-<acronym title="Application Programming Interface">API</acronym> zu besch&#228;ftigen. Dies ist nicht so komplex - und wenn erst mal die Scripts existieren, ist alles viel leichter nachvollziehbar.</p>
<p>Ich habe nun viel Zeit investiert, um zu testen, ob die Ergebnisse wirklich aussagekr&#228;ftig sind.</p>
<p>Management Summery:</p>
<ul>
<li>Reine Abfragen: perfekt</li>
<li>Abfragen und DML-Operationen ohne Locking-Probleme: perfekt</li>
<li>DML-Operationen mit vielen Locking-Problemen: in den ersten Versuchen nicht gut...</li>
</ul>
<p><span id="more-70"></span></p>
<p>Zuerst ein kleines Beispiel des Ergebnisses (in <acronym title="HyperText Markup Language">HTML</acronym> - erzeugt aber auch per <acronym title="Structured Query Language">SQL</acronym>-Script):<br />
<a href='/sven/wp-content/uploads/2007/09/report1.jpg' title='Database Replay - Report Compare Periods' rel=thumbnail><img src='/sven/wp-content/uploads/2007/09/report1.thumbnail.jpg' alt='Database Replay - Report Compare Periods' /></a><br />
Hier sieht man sch&#246;n, dass die Statements im ersten Lauf (capture) und im zweiten Lauf (replay) wieder auftreten und (bis auf ein paar interne Aufrufe) auch gleich oft ausgef&#252;hrt werden.</p>
<p>Gestartet habe ich hier in 5 parallelen Session (zeitverschoben um jeweils 1 Sekunde aufgerufen) zuerst jeweils 100'000 Selects. Danach in jeder Session ein Update des gleichen Datensatzes, gefolgt von einer Pause von 20 sek. - und danach erst das Commit. Dadurch sind nat&#252;rlich Lockingprobleme entstanden.<br />
Diese waren aber nur beim Capture sichtbar, nicht beim Replay, d.h. die Update-Statements waren im zweiten Lauf nicht im Report, da sie zu schnell ausgef&#252;hrt wurden und nicht unter die "Top 10" gelandet sind.</p>
<p>Das "Problem" ist, dass Oracle standardm&#228;ssig die Transaktionen synchronisiert, um die gleiche Commit-Reihenfolge (logische Abfolge) sicherzustellen. Anders gesagt, Oracle startet beim Replay erst die n&#228;chste Transaktion, wenn die vorherige beendet ist - und damit werden nat&#252;rlich Lockingprobleme im Multiuser-Betrieb ausgeschlossen...</p>
<p>L&#246;sung:<br />
W&#228;hrend des Replay den Parameter "synchronization" auf FALSE setzen: </p>
<pre class="oracle8">&nbsp;
<span style="color: #993333; font-weight: bold; text-transform: uppercase;">BEGIN</span>
   DBMS_WORKLOAD_REPLAY.PREPARE_REPLAY<span style="color: #66cc66;">&#40;</span>synchronization =&gt; <span style="color: #993333; font-weight: bold; text-transform: uppercase;">FALSE</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #993333; font-weight: bold; text-transform: uppercase;">END</span>;
/
&nbsp;</pre>
<p>Und damit waren f&#252;r mich auch die DML-Operationen mit Locking-Problemen perfekt.<br />
Aber aufpassen - dies muss nicht immer richtig sein. Hier <em>kann</em> die Transaktionsreihenfolge durcheinander kommen - und dies kann zu falschen Resultaten f&#252;hren.</p>
<p>Deswegen: Bevor mit Database Replay &#196;nderungen getestet werden, sollte erst einmal untersucht werden, ob Capture und Replay ohne &#196;nderungen identisch sind - oder aber ob hier schon total unterschiedliche Ergebnisse auftreten!</p>
<p>Ansonsten: F&#252;r mich bis jetzt das heisseste Feature von 11g!</p>]]></content:encoded>
			<wfw:commentRss>http://sven.svenvetter.com/sven/2007/09/17/11g_dbreplay/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Code formatieren (SQL, PL/SQL)</title>
		<link>http://sven.svenvetter.com/sven/2007/08/31/code-formatieren-sql-plsql/</link>
		<comments>http://sven.svenvetter.com/sven/2007/08/31/code-formatieren-sql-plsql/#comments</comments>
		<pubDate>Fri, 31 Aug 2007 13:36:38 +0000</pubDate>
		<dc:creator>Sven Vetter</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[TrivadisContent]]></category>

		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://sven.svenvetter.com/sven/2007/08/31/code-formatieren-sql-plsql/</guid>
		<description><![CDATA[Ich formatiere seit langer Zeit meinen Code mit den Formater Tools von Quest Software - und bin da eigentlich sehr zufrieden. F&#252;r mich gibt es aber zwei Nachteile:

Lizenzpflichtig
Nur f&#252;r Windows (ok, l&#228;uft auch mit Wine unter Linux)

In Laurent Schneider's Blog habe ich nun eine Alternative gefunden: Den Online SQL Formater SQLinForm.
Schnell mal getestet - cooles [...]]]></description>
			<content:encoded><![CDATA[<p>Ich formatiere seit langer Zeit meinen Code mit den Formater Tools von Quest Software - und bin da eigentlich sehr zufrieden. F&#252;r mich gibt es aber zwei Nachteile:</p>
<ul>
<li>Lizenzpflichtig</li>
<li>Nur f&#252;r Windows (ok, l&#228;uft auch mit Wine unter Linux)</li>
</ul>
<p>In Laurent Schneider's <a href="http://laurentschneider.com/wordpress/2007/08/selectfromempwherescottenameanddeptno20.html" onclick="javascript:urchinTracker ('/outbound/article/laurentschneider.com');">Blog</a> habe ich nun eine Alternative gefunden: Den Online <acronym title="Structured Query Language">SQL</acronym> Formater <a href="http://www.sqlinform.com/" onclick="javascript:urchinTracker ('/outbound/article/www.sqlinform.com');">SQLinForm</a>.</p>
<p>Schnell mal getestet - cooles Tool <img src='http://sven.svenvetter.com/sven/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Auf jeden Fall geeignet, um Code lesbarer zu machen. Sicherlich auch, um Cursorsharing (etwas) zu verbessern.</p>
<p>Kleines Beispiel:<span id="more-66"></span><br />
Folgende 4 Statements sind f&#252;r Oracle unterschiedlich und sind nicht "sharable":<br />
<code><br />
select * from emp;<br />
SELECT * FROM emp;<br />
Select * From emp;<br />
select * froM emp;<br />
</code></p>
<p>SQLinForm formatiert dies richtigerweise auf:<br />
<code>SELECT * FROM emp;</code></p>
<p>Und dies kann beliebig komplexer werden - probieren Sie es aus <img src='http://sven.svenvetter.com/sven/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://sven.svenvetter.com/sven/2007/08/31/code-formatieren-sql-plsql/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Functions</title>
		<link>http://sven.svenvetter.com/sven/2007/07/08/functions/</link>
		<comments>http://sven.svenvetter.com/sven/2007/07/08/functions/#comments</comments>
		<pubDate>Sun, 08 Jul 2007 13:58:23 +0000</pubDate>
		<dc:creator>Sven Vetter</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[TrivadisContent]]></category>

		<category><![CDATA[Tuning]]></category>

		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://sven.svenvetter.com/sven/2007/07/08/functions/</guid>
		<description><![CDATA[Jonathan Lewis schreibt in seinem Artikel Functions &#252;ber eine oft gestellte Frage:
The use of functions - a function with other selects (eg. calculate availability of a part) - is slowing down our system when we do a select over our product file.
Is there some kind of rule when functions should be used or when we [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jonathanlewis.wordpress.com" onclick="javascript:urchinTracker ('/outbound/article/jonathanlewis.wordpress.com');">Jonathan Lewis</a> schreibt in seinem Artikel <a href="http://jonathanlewis.wordpress.com/2007/07/07/functions/" onclick="javascript:urchinTracker ('/outbound/article/jonathanlewis.wordpress.com');">Functions</a> &#252;ber eine oft gestellte Frage:</p>
<blockquote><p>The use of functions - a function with other selects (eg. calculate availability of a part) - is slowing down our system when we do a select over our product file.<br />
Is there some kind of rule when functions should be used or when we should try to create a more complex - combined - <acronym title="Structured Query Language">SQL</acronym> that does not use the function.<br />
Can functions be used in the where clause without loosing a lot of speed?
</p></blockquote>
<p>Ein guter, empfehlenswerte Artikel.</p>
<p>Was ich aber noch erw&#228;hnen w&#252;rde:<br />
Wenn ich aus <acronym title="Structured Query Language">SQL</acronym> eine PL/<acronym title="Structured Query Language">SQL</acronym>-Function aufrufe, die wiederum ein <acronym title="Structured Query Language">SQL</acronym> ausf&#252;hrt, wird jeweils ein Kontext-Switch zwischen <acronym title="Structured Query Language">SQL</acronym>-Engine und PL/<acronym title="Structured Query Language">SQL</acronym>-Engine und nochmals <acronym title="Structured Query Language">SQL</acronym>-Engine durchgef&#252;hrt. Dieser dauert nicht sehr lang, sagen wir mal eine Millisekunde. Aber wenn ich dies 1'000'000 mal mache, sind das schon 2'000'000 ms - als mehr als eine halbe Stunde...</p>]]></content:encoded>
			<wfw:commentRss>http://sven.svenvetter.com/sven/2007/07/08/functions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DOAG Regionaltreffen Stuttgart</title>
		<link>http://sven.svenvetter.com/sven/2007/06/25/doag-regionaltreffen-stuttgart/</link>
		<comments>http://sven.svenvetter.com/sven/2007/06/25/doag-regionaltreffen-stuttgart/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 08:58:31 +0000</pubDate>
		<dc:creator>Sven Vetter</dc:creator>
		
		<category><![CDATA[CPU]]></category>

		<category><![CDATA[OEM]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[Security]]></category>

		<category><![CDATA[Tuning]]></category>

		<category><![CDATA[DOAG]]></category>

		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://sven.svenvetter.com/sven/2007/06/25/doag-regionaltreffen-stuttgart/</guid>
		<description><![CDATA[Am 19.07. halte ich wieder einmal 2 Vortr&#228;ge am DOAG Regionaltreffen Stuttgart:

Critical Patch Update - und Ihre Applikation funktioniert noch?
Ein Critical Patch ist wichtig f&#252;r die Security. Aber l&#228;uft dann die Datenbank noch?
Macht die Applikation noch, was von ihr erwartet wird?
In diesem Vortrag wird eine Methode des automatischen Testens vorgestellt.
Ausserdem werden die Erfahrungen mit den [...]]]></description>
			<content:encoded><![CDATA[<p>Am 19.07. halte ich wieder einmal 2 Vortr&#228;ge am <acronym title="Deutsche Oracle Anwender Group">DOAG</acronym> Regionaltreffen Stuttgart:</p>
<ul>
<li><strong>Critical Patch Update - und Ihre Applikation funktioniert noch?</strong><br />
Ein Critical Patch ist wichtig f&#252;r die Security. Aber l&#228;uft dann die Datenbank noch?<br />
Macht die Applikation noch, was von ihr erwartet wird?<br />
In diesem Vortrag wird eine Methode des automatischen Testens vorgestellt.<br />
Ausserdem werden die Erfahrungen mit den CPUs pr&#228;sentiert.</li>
<li><strong>End-to-End-Tracing live gezeigt</strong><br />
Grid Control 10.2 verspricht echtes End-to-End-Tracing. Und es funktioniert wirklich.<br />
Nach der Definition von Applikationen kann man ein Drill-Down vom WebServer<br />
&#252;ber Middletier bis zum einzelnen Statement in der Datenbank durchf&#252;hren.<br />
Also das, was sich jeder schon gew&#252;nscht hat.<br />
In einer einst&#252;ndigen Demo werden die M&#246;glichkeiten und Grenzen live gezeigt. </li>
</ul>
<p>Mehr Informationen - und den Anmeldelink findet ihr auf der <a href="http://www.doag.de/pub/calendar.show?id=142022" onclick="javascript:urchinTracker ('/outbound/article/www.doag.de');"><acronym title="Deutsche Oracle Anwender Group">DOAG</acronym></a>-Seite.</p>
<p>Die Teilnahme ist wie immer kostenlos - aber nicht umsonst <img src='http://sven.svenvetter.com/sven/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://sven.svenvetter.com/sven/2007/06/25/doag-regionaltreffen-stuttgart/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
