<?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>The black box of life &#187; SQL</title>
	<atom:link href="http://www.michael-schwenk.de/tag/sql/feed" rel="self" type="application/rss+xml" />
	<link>http://www.michael-schwenk.de</link>
	<description></description>
	<lastBuildDate>Wed, 08 Sep 2010 19:57:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SQL-Script: Index-Monitoring als SYSDBA</title>
		<link>http://www.michael-schwenk.de/2010/03/11/ubicomp/dba/sql-script-index-monitoring-als-sysdba</link>
		<comments>http://www.michael-schwenk.de/2010/03/11/ubicomp/dba/sql-script-index-monitoring-als-sysdba#comments</comments>
		<pubDate>Thu, 11 Mar 2010 15:57:54 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Check]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SYSDBA]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=474</guid>
		<description><![CDATA[Den Beitrag &#8220;Index-Check&#8221; m&#246;chte ich um ein SQL-Script erg&#228;nzen. Das Monitoring der Objekte kann man zwar als Benutzer mit SYSDBA-Rechten ein- und/oder ausschalten, doch die Abfrage der zugrunde liegenden View v$object_usage funktioniert nur als Eigent&#252;mer der Objekte, die beobachtet werden. Mit der View v$all_object_usage k&#246;nnen Benutzer mit SYSDBA-Rechten schema&#252;bergreifend Objekte abfragen. create or replace view [...]]]></description>
			<content:encoded><![CDATA[<p>Den Beitrag &#8220;<a href="http://www.michael-schwenk.de/2008/01/04/ubicomp/dba/index-check">Index-Check</a>&#8221; m&#246;chte ich um ein SQL-Script erg&#228;nzen. Das Monitoring der Objekte kann man zwar als Benutzer mit SYSDBA-Rechten ein- und/oder ausschalten, doch die Abfrage der zugrunde liegenden View v$object_usage funktioniert nur als Eigent&#252;mer der Objekte, die beobachtet werden.</p>
<p><span id="more-474"></span>Mit der View v$all_object_usage k&#246;nnen Benutzer mit SYSDBA-Rechten schema&#252;bergreifend Objekte abfragen.</p>
<blockquote>
<p style="font-family: Courier New,Courier,mono; text-align: left;">create or replace view v$all_object_usage<br />
(owner, index_name, table_name, monitoring, used, start_monitoring, end_monitoring)<br />
as<br />
select u.name, io.name, t.name, decode(bitand(i.flags, 65536), 0, &#8216;NO&#8217;, &#8216;YES&#8217;), decode(bitand(ou.flags, 1), 0, &#8216;NO&#8217;, &#8216;YES&#8217;), ou.start_monitoring, ou.end_monitoring<br />
from sys.user$ u, sys.obj$ io, sys.obj$ t, sys.ind$ i, sys.object_usage ou<br />
where i.obj# = ou.obj#<br />
and io.obj# = ou.obj#<br />
and t.obj# = i.bo#<br />
and u.user# = io.owner#;</p>
</blockquote>
<p>Download:Note: There is a file embedded within this post, please visit this post to download the file.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2010/03/11/ubicomp/dba/sql-script-index-monitoring-als-sysdba&amp;layout=button_count&amp;show_faces=true&amp;width=640&amp;action=like&amp;font=trebuchet+ms&amp;colorscheme=light&amp;locale=de_DE" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:640px; height:30px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.michael-schwenk.de/2010/03/11/ubicomp/dba/sql-script-index-monitoring-als-sysdba/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tuning der Buffer Cache Hit Ratio</title>
		<link>http://www.michael-schwenk.de/2009/03/27/ubicomp/dba/tuning-der-buffer-cache-hit-ratio</link>
		<comments>http://www.michael-schwenk.de/2009/03/27/ubicomp/dba/tuning-der-buffer-cache-hit-ratio#comments</comments>
		<pubDate>Fri, 27 Mar 2009 15:31:42 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Ausführungsplan]]></category>
		<category><![CDATA[Buffer Cache Hit Ratio]]></category>
		<category><![CDATA[Buffer Gets]]></category>
		<category><![CDATA[Execution Plan]]></category>
		<category><![CDATA[improve]]></category>
		<category><![CDATA[ORACLE Wait Interface]]></category>
		<category><![CDATA[OWI]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[verbessern]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=392</guid>
		<description><![CDATA[Als DBA ist man stets bestrebt, eine mindestens 99%-ige Buffer Cache Hit Ratio zu erreichen. Doch beim &#8220;Tuning&#8221; kommt man schnell zu der Erkenntnis, dass sich das gew&#252;nschte Ziel, n&#228;mlich eine Verbesserung der Performance der Datenbank, nicht einstellt. Mit dem folgenden SQL-Statement kann man die gegenw&#228;rtige Buffer Cache Hit Ratio abfragen: SELECT ROUND((1-(phy.value / (cur.value [...]]]></description>
			<content:encoded><![CDATA[<p>Als DBA ist man stets bestrebt, eine mindestens 99%-ige Buffer Cache Hit Ratio zu erreichen. Doch beim &#8220;Tuning&#8221; kommt man schnell zu der Erkenntnis, dass sich das gew&#252;nschte Ziel, n&#228;mlich eine Verbesserung der Performance der Datenbank, nicht einstellt.</p>
<p><span id="more-392"></span>Mit dem folgenden SQL-Statement kann man die gegenw&#228;rtige Buffer Cache Hit Ratio abfragen:</p>
<blockquote>
<pre>SELECT ROUND((1-(phy.value / (cur.value + con.value)))*100,2) "Cache Hit Ratio"
FROM v$sysstat cur, v$sysstat con, v$sysstat phy
WHERE cur.name = 'db block gets'
AND con.name = 'consistent gets'
AND phy.name = 'physical reads';</pre>
</blockquote>
<p>Ein denkbar schlechtes Ergebnis k&#246;nnte dann so aussehen:</p>
<blockquote>
<pre>Cache Hit Ratio
---------------
          60,99</pre>
</blockquote>
<p>&#220;ber den Sinn dieses Ergebnisses kann man trefflich streiten, denn mit der nun folgenden Abfrage wird diese Zahl k&#252;nstlich erh&#246;ht:</p>
<blockquote>
<pre>DECLARE
  v_dummy dual.dummy%TYPE;
BEGIN
  FOR I IN 1..10000000 LOOP
    SELECT dummy INTO v_dummy FROM dual;
  END LOOP;
END;
/</pre>
</blockquote>
<p>Nach diesem <em>mehrfachen</em> PL/SQL-Looping sieht die Buffer Cache Hit Ratio dann so aus:</p>
<blockquote>
<pre>Cache Hit Ratio
---------------
          75,66</pre>
</blockquote>
<p>F&#252;hrt man das Statement weitere Male aus, erh&#246;ht sich die Zahl weiter.</p>
<p>Dieser Beitrag k&#246;nnte auch unter dem Motto &#8220;Warum ist man immer bestrebt, das zu bekommen, was man nicht kriegen kann?&#8221; stehen. Denn wie man sieht, lohnt der Aufwand nicht, die Buffer Cache Hit Ratio zu tunen.</p>
<p>Da gibt es besseres: Das <a href="http://www.oracle.com/technology/pub/articles/schumacher_10gwait.html" target="_blank">ORACLE Wait Interface (OWI)</a> zum Beispiel. Es liefert genaue Informationen dar&#252;ber, was getunt werden sollte.</p>
<p>Hermant schreibt in seinem <a href="http://hemantoracledba.blogspot.com/2007/02/buffer-cache-hit-ratio-good-or-bad.html" target="_blank">Blog</a>, dass eine zu gute Buffer Cache Hit Ratio auch nicht das Gelbe vom Ei ist. Es kann dann auch sein, dass die Ausf&#252;hrungspl&#228;ne einiger SQL-Statements zu w&#252;nschen &#252;brig lassen. In dem Fall sollte nach Statements mit sehr hohen &#8220;Buffer Gets&#8221; gesucht werden.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2009/03/27/ubicomp/dba/tuning-der-buffer-cache-hit-ratio&amp;layout=button_count&amp;show_faces=true&amp;width=640&amp;action=like&amp;font=trebuchet+ms&amp;colorscheme=light&amp;locale=de_DE" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:640px; height:30px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.michael-schwenk.de/2009/03/27/ubicomp/dba/tuning-der-buffer-cache-hit-ratio/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle SQL Developer 1.5.1 (Build 54.40) runs at 100% CPU</title>
		<link>http://www.michael-schwenk.de/2008/10/23/ubicomp/dba/oracle-sql-developer-151-build-5440-runs-at-100</link>
		<comments>http://www.michael-schwenk.de/2008/10/23/ubicomp/dba/oracle-sql-developer-151-build-5440-runs-at-100#comments</comments>
		<pubDate>Thu, 23 Oct 2008 13:05:08 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Digger SQL Developer Extension]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Developer]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=318</guid>
		<description><![CDATA[Unter der Oracle SQL Developer Version 1.5.1 kann es vorkommen, dass nach dem Start der Rechner mit 100% CPU l&#228;uft. Eine m&#246;gliche Ursache kann sein, dass man ein Upgrade durchgef&#252;hrt hat, z.B. von der Version 1.2.1 auf 1.5.1 und in der Vorg&#228;nger-Version die Extension &#8220;Digger SQL Developer Extension&#8221; installiert und aktiviert war. Mit dieser Extension [...]]]></description>
			<content:encoded><![CDATA[<p>Unter der Oracle SQL Developer Version 1.5.1 kann es vorkommen, dass nach dem Start der Rechner mit 100% CPU l&#228;uft. Eine m&#246;gliche Ursache kann sein, dass man ein Upgrade durchgef&#252;hrt hat, z.B. von der Version 1.2.1 auf 1.5.1 und in der Vorg&#228;nger-Version die Extension &#8220;<strong><em>Digger SQL Developer Extension</em></strong>&#8221; installiert und aktiviert war.</p>
<p><span id="more-318"></span>Mit dieser Extension kann man Trace Files analysieren. Das Deaktivieren der Extension l&#228;sst die CPU wieder aufatmen&#8230; <img src='http://www.michael-schwenk.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  au&#223;erdem ist sie f&#252;r das t&#228;gliche Arbeiten mit dem SQL Developer nicht unbedingt notwendig.</p>
<p>Es gibt noch eine Reihe anderer Ursachen, die im <a href="http://forums.oracle.com/forums/forum.jspa?forumID=260&amp;start=0" target="_blank">Oracle Forum</a> nachgelesen werden k&#246;nnen. Wie es aussieht, scheint die Digger-Extension jedoch bei vielen die Ursache zu sein. Bleibt eigentlich nur noch, abzuwarten, wie mit der n&#228;chsten Oracle SQL Developer Version aussieht.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2008/10/23/ubicomp/dba/oracle-sql-developer-151-build-5440-runs-at-100&amp;layout=button_count&amp;show_faces=true&amp;width=640&amp;action=like&amp;font=trebuchet+ms&amp;colorscheme=light&amp;locale=de_DE" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:640px; height:30px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.michael-schwenk.de/2008/10/23/ubicomp/dba/oracle-sql-developer-151-build-5440-runs-at-100/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doppelte Zeilen finden</title>
		<link>http://www.michael-schwenk.de/2008/05/23/ubicomp/dba/doppelte-zeilen-finden</link>
		<comments>http://www.michael-schwenk.de/2008/05/23/ubicomp/dba/doppelte-zeilen-finden#comments</comments>
		<pubDate>Fri, 23 May 2008 09:15:37 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Doppelte Daten]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=212</guid>
		<description><![CDATA[Das Grauen eines jeden DBA sind inkonsistente und doppelte Daten. Doch ohne sinnvolle Platzierung der referentiellen Integrit&#228;t nimmt dieses Grauen kein Ende. Mit einfachsten ORACLE-Boardmitteln kann man doppelte Daten in einer Tabelle ausfindig machen, indem man sie gegen sich selbst verbindet &#8211; mit einem JOIN. Als Beispielfall nehmen wir an, dass in unserer Geburtstags&#252;bersicht doppelte [...]]]></description>
			<content:encoded><![CDATA[<p>Das Grauen eines jeden DBA sind inkonsistente und doppelte Daten. Doch ohne sinnvolle Platzierung der referentiellen Integrit&#228;t nimmt dieses Grauen kein Ende.</p>
<p><span id="more-212"></span>Mit einfachsten ORACLE-Boardmitteln kann man doppelte Daten in einer Tabelle ausfindig machen, indem man sie gegen sich selbst verbindet &#8211; mit einem JOIN.</p>
<p>Als Beispielfall nehmen wir an, dass in unserer Geburtstags&#252;bersicht doppelte Daten vorkommen. Die Tabelle <em>BIRTHDAY</em> sieht folgenderma&#223;en aus:</p>
<blockquote>
<pre class="out">Name                           Null     Type
------------------------------ -------- --------------
NAME                                    VARCHAR2(20)
VORNAME                                 VARCHAR2(20)
MONAT                                   NUMBER(2)
TAG                                     NUMBER(2)</pre>
</blockquote>
<p>Nun kommt es darauf an, welche Art doppelter Daten man ausfindig machen m&#246;chte. In unserem Beispiel ist es sinnvoll, alle Spalten der Tabelle zu selektieren, da Namensgleichheit durchaus vorkommen kann. Das SQL-Statement sieht demnach so aus:</p>
<blockquote>
<pre class="out">SELECT name, vorname, monat, tag
FROM birthday A
WHERE rowid &gt;
 (
  SELECT min(rowid)
  FROM birthday B
  WHERE B.name = A.name
   AND B.vorname = A.vorname
   AND B.monat = A.monat
   AND B.tag = A.tag
 );</pre>
</blockquote>
<p>Das Ergebnis dieser Abfrage k&#246;nnte so aussehen:</p>
<blockquote>
<pre class="out">NAME        VORNAME  MONAT  TAG
----------- -------- ------ ----
Mustermann  Max      5      23</pre>
</blockquote>
<p>Der Geburtstag des Herrn Max Mustermann wurde also zweimal in die Tabelle eingetragen. Um die Duplikate zu entfernen muss das Statement umgebaut werden:</p>
<blockquote>
<pre class="out">DELETE FROM birthday A
WHERE A.rowid &gt;
 ANY (SELECT B.rowid
  FROM birthday B
  WHERE A.name = B.name
   AND A.vorname = B.vorname
   AND A.monat = B.monat
   AND A.tag = B.tag
 );</pre>
</blockquote>
<p>Noch einfacher ist es, die Duplikate mit ORACLE Analytic Functions zu finden und zu l&#246;schen:</p>
<blockquote>
<pre class="out">DELETE FROM birthday
WHERE rowid IN
 (
  SELECT rowid
  FROM
   (
    SELECT rowid, row_number()
    OVER (PARTITION BY name, vorname, monat, tag ORDER BY name) dup
    FROM birthday
   )
  WHERE dup &gt; 1
 );</pre>
</blockquote>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2008/05/23/ubicomp/dba/doppelte-zeilen-finden&amp;layout=button_count&amp;show_faces=true&amp;width=640&amp;action=like&amp;font=trebuchet+ms&amp;colorscheme=light&amp;locale=de_DE" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:640px; height:30px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.michael-schwenk.de/2008/05/23/ubicomp/dba/doppelte-zeilen-finden/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Index-Check</title>
		<link>http://www.michael-schwenk.de/2008/01/04/ubicomp/dba/index-check</link>
		<comments>http://www.michael-schwenk.de/2008/01/04/ubicomp/dba/index-check#comments</comments>
		<pubDate>Fri, 04 Jan 2008 07:59:18 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Check]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=139</guid>
		<description><![CDATA[Es kommt vor, dass ein erstellter Index von ORACLE &#252;berhaupt nicht genutzt und/oder ben&#246;tigt wird. Derartige Indizes erf&#252;llen dann also keinen Zweck, benutzen aber Speicherplatz. ORACLE bietet die M&#246;glichkeit, Indizes &#252;ber einen beliebigen Zeitraum hinweg zu beobachten, ob sie genutzt werden. Ein Beispiel: Erstellen wir zun&#228;chst eine Tabelle (den Sinn dieser Tabelle betrachten wir nicht [...]]]></description>
			<content:encoded><![CDATA[<p>Es kommt vor, dass ein erstellter Index von ORACLE &#252;berhaupt nicht genutzt und/oder ben&#246;tigt wird. Derartige Indizes erf&#252;llen dann also keinen Zweck, benutzen aber Speicherplatz.<br />
ORACLE bietet die M&#246;glichkeit, Indizes &#252;ber einen beliebigen Zeitraum hinweg zu beobachten, ob sie genutzt werden.</p>
<p><span id="more-139"></span>Ein Beispiel:<br />
Erstellen wir zun&#228;chst eine Tabelle (den Sinn dieser Tabelle betrachten wir nicht an dieser Stelle):</p>
<blockquote><p>CREATE TABLE INDEX_MONITOR<br />
(<br />
COL_1 VARCHAR2(10),<br />
COL_2 VARCHAR2(10),<br />
COL_3 VARCHAR2(10),<br />
COL_4 VARCHAR2(10)<br />
);</p></blockquote>
<p>Als n&#228;chstes bef&#252;llen wir die Tabelle mit Zufallswerten:</p>
<blockquote><p>begin<br />
for i in 1 .. 100 loop<br />
INSERT INTO INDEX_MONITOR VALUES (<br />
dbms_random.string(&#8216;COL_1&#8242;, 10),<br />
dbms_random.string(&#8216;COL_2&#8242;, 10),<br />
dbms_random.string(&#8216;COL_3&#8242;, 10),<br />
dbms_random.string(&#8216;COL_4&#8242;, 10));<br />
end loop;<br />
end;<br />
/</p></blockquote>
<p>Nun erstellen wir f&#252;r jede Spalte einen Index (wie gesagt, an der Sinnhaftigkeit darf gezweifelt werden, es soll ja nur ein Beispiel sein&#8230;):</p>
<blockquote><p>CREATE INDEX IDX_COL_1 ON INDEX_MONITOR (COL_1);<br />
CREATE INDEX IDX_COL_2 ON INDEX_MONITOR (COL_2);<br />
CREATE INDEX IDX_COL_3 ON INDEX_MONITOR (COL_3);<br />
CREATE INDEX IDX_COL_4 ON INDEX_MONITOR (COL_4);</p></blockquote>
<p>Das Monitoring der Indizes wird folgenderma&#223;en gestartet:</p>
<blockquote><p>ALTER INDEX IDX_COL_1 MONITORING USAGE;<br />
ALTER INDEX IDX_COL_2 MONITORING USAGE;<br />
ALTER INDEX IDX_COL_3 MONITORING USAGE;<br />
ALTER INDEX IDX_COL_4 MONITORING USAGE;</p></blockquote>
<p>Mit Hilfe der V$-View v$object_usage kann ORACLE abgefragt werden, ob Indizes genutzt werden oder nicht:</p>
<blockquote><p>SELECT index_name, used FROM v$object_usage;</p></blockquote>
<p>Momentan sieht das Ergebnis der Abfrage noch so aus:</p>
<blockquote>
<pre class="out">INDEX_NAME                     USE
------------------------------ ---
IDX_COL_1                       NO
IDX_COL_2                       NO
IDX_COL_3                       NO
IDX_COL_4                       NO</pre>
</blockquote>
<p>Im n&#228;chsten Schritt werden drei Abfragen ausgef&#252;hrt, von denen jede einen einzelnen Index nutzen wird:</p>
<blockquote><p>SELECT COUNT(*) FROM INDEX_MONITOR WHERE COL_1=&#8217;1234567890&#8242;;<br />
SELECT COUNT(*) FROM INDEX_MONITOR WHERE COL_3=&#8217;1234567890&#8242;;<br />
SELECT COUNT(*) FROM INDEX_MONITOR WHERE COL_4=&#8217;1234567890&#8242;;</p></blockquote>
<p>Wird die V$-View v$object_usage nun erneut abgefragt&#8230;:</p>
<blockquote><p>SELECT index_name, used FROM v$object_usage;</p></blockquote>
<p>&#8230; liefert sie das Ergebnis zur&#252;ck, dass IDX_COL_2 nicht genutzt wurde:</p>
<blockquote>
<pre class="out">INDEX_NAME                     USE
------------------------------ ---
IDX_COL_1                       YES
IDX_COL_2                       <strong>NO</strong>
IDX_COL_3                       YES
IDX_COL_4                       YES</pre>
</blockquote>
<p>Das Monitoring der Indizes wird mit den folgenden Befehlen ausgeschaltet:</p>
<blockquote><p>ALTER INDEX IDX_COL_1 NOMONITORING USAGE;<br />
ALTER INDEX IDX_COL_2 NOMONITORING USAGE;<br />
ALTER INDEX IDX_COL_3 NOMONITORING USAGE;<br />
ALTER INDEX IDX_COL_4 NOMONITORING USAGE;</p></blockquote>
<p>Zugegeben, der Zeitraum, in dem das Monitoring eingeschaltet ist, wird in der Regel wesentlich l&#228;nger sein, typischerweise ein Tag &#8211; vielleicht auch eine Woche. Es handelt sich hier auch nur um ein Beispiel.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2008/01/04/ubicomp/dba/index-check&amp;layout=button_count&amp;show_faces=true&amp;width=640&amp;action=like&amp;font=trebuchet+ms&amp;colorscheme=light&amp;locale=de_DE" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:640px; height:30px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.michael-schwenk.de/2008/01/04/ubicomp/dba/index-check/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Package DBMS_JOB</title>
		<link>http://www.michael-schwenk.de/2007/12/18/ubicomp/dba/package-dbms_job</link>
		<comments>http://www.michael-schwenk.de/2007/12/18/ubicomp/dba/package-dbms_job#comments</comments>
		<pubDate>Tue, 18 Dec 2007 07:38:25 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[10g]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Prozedur]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=131</guid>
		<description><![CDATA[Allgemeines: Zur Automatisierung von Jobs in ORACLE Datenbanken wird das Package dbms_job verwendet. Die Funktionalit&#228;ten und Erweiterungen dieses Packages werden in der ORACLE Datenbase Version 10g in dem Package dbms_scheduler zusammengefasst. Voraussetzung: In der Datenbank m&#252;ssen Job-Warteschlangen aktiviert sein, d.h. der Initialisierungsparameter job_queue_processes muss mindestens den Wert 1 haben, damit ein Job automatisch startet. Dieser [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Allgemeines:</strong><br />
Zur Automatisierung von Jobs in ORACLE Datenbanken wird das Package <span style="text-transform: uppercase">dbms_job </span>verwendet. Die Funktionalit&#228;ten und Erweiterungen dieses Packages werden in der ORACLE Datenbase Version 10g in dem Package <span style="text-transform: uppercase">dbms_scheduler</span> zusammengefasst.</p>
<p><span id="more-131"></span><strong>Voraussetzung:</strong><br />
In der Datenbank m&#252;ssen Job-Warteschlangen aktiviert sein, d.h. der Initialisierungsparameter <em>job_queue_processes</em> muss mindestens den Wert 1 haben, damit ein Job automatisch startet. Dieser Parameter ist dynamisch, er kann somit im laufenden Betrieb ge&#228;ndert werden (<em>ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 1;</em>). Der Hintergrundprozess CJQ0 startet die Job-Queue-Prozesse.</p>
<p><strong>Vorgehensweise:</strong><br />
Zur Verwaltung der internen Job-Warteschlagen stehen innerhalb des DBMS_JOB-Packages verschiedene Prozeduren zur Verf&#252;gung. Mit der Prozedur DBMS_JOB.SUBMIT k&#246;nnen Jobs eingerichtet werden. An diese Prozedur muss neben einer OUT-Variable f&#252;r die Jobnummer &#252;bergeben werden, was, wann es erstmals und in welchem Intervall es ausgef&#252;hrt werden soll. Optional kann man noch angeben, wann die Angaben geparst werden sollen, der Default ist somit:</p>
<blockquote><p>DBMS_JOB.SUBMIT(<br />
job OUT BINARY_INTEGER,<br />
what IN VARCHAR2,<br />
next_date IN DATE,<br />
interval IN VARCHAR2 DEFAUL &#8216;null&#8217;,<br />
no_parse IN BOOLEAN DEFAULT FALSE);</p></blockquote>
<p>Man sollte darauf achten, dass die Angabe der erstmaligen Ausf&#252;hrung vom Datentyp DATE, die Angabe des Intervalls hingegen vom Datentyp VARCHAR2 ist! <em>&#8220;what&#8221;</em> muss mit einem Semikolon abgeschlossen werden.<br />
Wird kein Intervall angegeben, so wird der Job einmalig ausgef&#252;hrt und danach aus der Datenbank entfernt. Damit der Job vollst&#228;ndig eingerichtet wird, muss mit COMMIT best&#228;tigt werden.</p>
<p><em><span style="text-decoration: underline;">Beispiel 1:</span></em><br />
Die Prozedur dbms_stats.gather_schema_stats (analysiert Schemata &#8211; ab ORACLE Database Version 10g erfolgt das im &#220;brigen vollautomatisch) soll am 18.12.07 um 18:00 Uhr und danach alle 7 Tage ausgef&#252;hrt werden:</p>
<blockquote><p>DECLARE<br />
v_jobno BINARY_INTEGER;<br />
BEGIN<br />
DBMS_JOB.SUBMIT(v_jobno,<br />
&#8216;dbms_stats.gather_schema_stats (ownname =&gt;&#8221;<em>Schemaname</em>&#8221;, cascade =&gt; true);&#8217;,<br />
to_date(&#8217;18.12.2007 6:00 PM&#8217;, &#8216;DD.MM.YYYY HH:MI PM&#8217;), &#8216;sysdate+7&#8242;);<br />
commit;<br />
End;</p></blockquote>
<p><em><span style="text-decoration: underline;">Beispiel 2:</span></em><br />
Job f&#252;r die E-Mail-Benachrichtigung (alle 10 Minuten):</p>
<blockquote><p>DECLARE<br />
v_jobno BINARY_INTEGER;<br />
BEGIN<br />
DBMS_JOB.SUBMIT(v_jobno,<br />
&#8216;begin PA_MailWork. p_emailBearbeiten; end;&#8217;,<br />
to_date(&#8217;18.12.2007 10:00 AM&#8217;, &#8216;DD.MM.YYYY HH:MI PM&#8217;),<br />
&#8216;sysdate+10/(24*60)&#8217;);<br />
commit;<br />
End;</p></blockquote>
<p><strong>Job-Verwaltung:</strong><br />
Der Besitzer eines Jobs kann diesen sp&#228;ter &#228;ndern (mit den Prozeduren BROKEN, CHANGE, INTERVAL, NEXT_DATE und WHAT), l&#246;schen (durch die Prozedur REMOVE) oder dessen Ausf&#252;hrung erzwingen (mit Hilfe der Prozedur RUN). F&#252;r jede dieser Prozeduren muss die Job-Nummer bekannt sein. ORACLE generiert diese &#252;ber die Sequenz SYS.JOBSEQ. Weitere Angaben zu den Jobs der Datenbank befinden sich in der View DBA_JOBS. Zus&#228;tzliche Informationen zu den Jobs, die momentan ausgef&#252;hrt werden, findet man in der View DBA_JOBS_RUNNING.</p>
<p><span style="text-decoration: underline;">Prozedur BROKEN:<br />
</span>Mit Hilfe dieser Prozedur &#252;berf&#252;hrt man einen Job in den broken-Status, d.h. er wird nicht zum geplanten Zeitpunkt ausgef&#252;hrt. ORACLE setzt den Job automatisch in den broken-Status, wenn er nach 16 Versuchen nicht erfolgreich ausgef&#252;hrt werden kann.</p>
<blockquote><p>DBMS_JOB.BROKEN(<br />
job IN BINARY_INTEGER,<br />
broken in BOOLEAN<br />
next_date IN DATE DEFAULT SYSDATE);</p></blockquote>
<p><em>Beispiel:</em></p>
<blockquote><p>exec dbms_job.broken(7, TRUE);<br />
commit;</p></blockquote>
<p>Wurde ein Job auf broken gesetzt (TRUE), l&#228;sst sich dieser Vorgang wieder umkehren und die broken-Variable auf FALSE setzen.</p>
<p><span style="text-decoration: underline;">Prozedur CHANGE:<br />
</span>Hiermit k&#246;nnen die Eigenschaften des Jobs (what-Parameter, Datum, n&#228;chster Lauf, Zeitintervall) ge&#228;ndert werden.</p>
<blockquote><p>DBMS_JOB.CHANGE(<br />
job IN BINARY_INTEGER,<br />
what IN VARCHAR2 DEFAULT NULL,<br />
next_date IN DATE DEFAULT NULL,<br />
interval IN VARCHAR2 DEFAULT NULL,<br />
instance IN BINARY_INTEGER DEFAULT NULL,<br />
force IN BOOLEAN DEFAULT FALSE);</p></blockquote>
<p>Werden keine Werte vorgegeben oder wurden sie auf NULL gesetzt, bleiben die alten Einstellungen erhalten.</p>
<p><em>Beispiele:</em></p>
<blockquote><p>exec dbms_job.change(1, NULL, NULL, &#8216;SYSDATE + 3&#8242;);<br />
commit;</p></blockquote>
<blockquote><p>exec dbms_job.change(7, NULL, to_date(&#8217;28.07.2007 11:30 PM&#8217;, &#8216;DD.MM.YYYY HH:MI PM&#8217;) , NULL);<br />
commit;</p></blockquote>
<p><span style="text-decoration: underline;">INTERVAL-, NEXT_DATE- und WHAT-Prozedur:<br />
</span>Diese Prozeduren stellen Leistungsmerkmale zur Verf&#252;gung, die bereits von der CHANGE-Prozedur angeboten werden, bei der nicht ben&#246;tigte Parameter auf NULL gesetzt werden.</p>
<blockquote><p>DBMS_JOB.NEXT_DATE(<br />
job IN BINARY_INTEGER,<br />
next_date IN DATE);</p></blockquote>
<p><em>Beispiel:</em></p>
<blockquote><p>exec dbms_job.next_date (1, SYSDATE + 1/24);<br />
commit;</p></blockquote>
<p><span style="text-decoration: underline;">Prozedur REMOVE:<br />
</span>Mit der REMOVE-Prozedur entfernt man einen Job aus der Warteschlange. Der einzige Parameter ist die Job-Nummer.</p>
<blockquote><p>DBMS_JOB.REMOVE(<br />
job_number IN BINARY_INTEGER);</p></blockquote>
<p><em>Beispiel:</em></p>
<blockquote><p>exec dbms_job.remove (7);<br />
commit;</p></blockquote>
<p><span style="text-decoration: underline;">Prozedur RUN:<br />
</span>RUN wird zum sofortigen Starten eines Jobs genutzt und zur Ausf&#252;hrung eines &#8220;broken&#8221;-Jobs.</p>
<blockquote><p>DBMS_JOB.RUN(<br />
job IN BINARY_INTEGER,<br />
force IN BOOLEAN DEFAULT FALSE);</p></blockquote>
<p><em>Beispiel:</em></p>
<blockquote><p>exec dbms_job.run (12);<br />
commit;</p></blockquote>
<p>Weitere Informationen zum Thema Jobs befinden sich in der ORACLE Dokumentation:<br />
<a href="http://www.oracle.com/technology/documentation/index.html" target="_blank">http://www.oracle.com/technology/documentation/index.html</a></p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2007/12/18/ubicomp/dba/package-dbms_job&amp;layout=button_count&amp;show_faces=true&amp;width=640&amp;action=like&amp;font=trebuchet+ms&amp;colorscheme=light&amp;locale=de_DE" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:640px; height:30px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.michael-schwenk.de/2007/12/18/ubicomp/dba/package-dbms_job/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle DBA Toolbar</title>
		<link>http://www.michael-schwenk.de/2007/12/12/ubicomp/dba/oracle-dba-toolbar</link>
		<comments>http://www.michael-schwenk.de/2007/12/12/ubicomp/dba/oracle-dba-toolbar#comments</comments>
		<pubDate>Wed, 12 Dec 2007 11:52:29 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Toolbar]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=123</guid>
		<description><![CDATA[Mit der Oracle DBA Toolbar hat man Zugriff auf Schl&#252;sselfunktionen im Oracle Technology Network. Ein Must-Have f&#252;r jeden DBA! Download Oracle DBA Toolbar f&#252;r Internet Explorer Download Oracle DBA Toolbar f&#252;r Mozilla Firefox]]></description>
			<content:encoded><![CDATA[<p>Mit der Oracle DBA Toolbar hat man Zugriff auf Schl&#252;sselfunktionen im Oracle Technology Network. Ein Must-Have f&#252;r jeden DBA!</p>
<ul>
<li>Download <a href="http://www.oracle.com/technology/toolbar/OracleDBAToolbarSetup.exe" target="_blank">Oracle DBA Toolbar f&#252;r Internet Explorer</a></li>
<li>Download <a href="http://www.oracle.com/technology/toolbar/oracle_135.xpi" target="_blank">Oracle DBA Toolbar f&#252;r Mozilla Firefox</a></li>
</ul>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2007/12/12/ubicomp/dba/oracle-dba-toolbar&amp;layout=button_count&amp;show_faces=true&amp;width=640&amp;action=like&amp;font=trebuchet+ms&amp;colorscheme=light&amp;locale=de_DE" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:640px; height:30px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.michael-schwenk.de/2007/12/12/ubicomp/dba/oracle-dba-toolbar/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQL-Script: Kompilieren invalider Objekte</title>
		<link>http://www.michael-schwenk.de/2007/11/30/ubicomp/dba/sql-script-kompilieren-invalider-objekte</link>
		<comments>http://www.michael-schwenk.de/2007/11/30/ubicomp/dba/sql-script-kompilieren-invalider-objekte#comments</comments>
		<pubDate>Fri, 30 Nov 2007 15:28:05 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Objekte]]></category>
		<category><![CDATA[recompile]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[validieren]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=110</guid>
		<description><![CDATA[Um invalide Objekte in einer Datenbank zu kompilieren, als SYS einfach dieses Script ausf&#252;hren; Mehrfachausf&#252;hrung ist m&#246;glich. set pagesize 0 set feedback off set trimspool on spool compile.sql SELECT &#8216;ALTER &#8216;&#124;&#124;object_type&#124;&#124;&#8217; &#8216;&#124;&#124;owner&#124;&#124;&#8217;.&#8221;&#8216;&#124;&#124;object_name&#124;&#124;&#8217;&#8221; COMPILE;&#8217; FROM dba_objects WHERE status &#60;&#62; &#8216;VALID&#8217; AND object_type NOT IN (&#8216;PACKAGE BODY&#8217;,'TYPE BODY&#8217;,'UNDEFINED&#8217;,'JAVA CLASS&#8217;,'SYNONYM&#8217;) UNION SELECT &#8216;ALTER PACKAGE &#8216;&#124;&#124;owner&#124;&#124;&#8217;.'&#124;&#124;object_name&#124;&#124;&#8217; COMPILE BODY;&#8217; FROM [...]]]></description>
			<content:encoded><![CDATA[<p>Um invalide Objekte in einer Datenbank zu kompilieren, als SYS einfach dieses Script ausf&#252;hren; Mehrfachausf&#252;hrung ist m&#246;glich.</p>
<p><span id="more-110"></span></p>
<blockquote><p>set pagesize 0<br />
set feedback off<br />
set trimspool on<br />
spool compile.sql<br />
SELECT &#8216;ALTER &#8216;||object_type||&#8217; &#8216;||owner||&#8217;.&#8221;&#8216;||object_name||&#8217;&#8221; COMPILE;&#8217;<br />
FROM dba_objects<br />
WHERE status &lt;&gt; &#8216;VALID&#8217;<br />
AND object_type NOT IN (&#8216;PACKAGE BODY&#8217;,'TYPE BODY&#8217;,'UNDEFINED&#8217;,'JAVA CLASS&#8217;,'SYNONYM&#8217;)<br />
UNION<br />
SELECT &#8216;ALTER PACKAGE &#8216;||owner||&#8217;.'||object_name||&#8217; COMPILE BODY;&#8217;<br />
FROM dba_objects<br />
WHERE status &lt;&gt; &#8216;VALID&#8217;<br />
AND object_type = &#8216;PACKAGE BODY&#8217;<br />
UNION<br />
SELECT &#8216;ALTER TYPE &#8216;||owner||&#8217;.'||object_name||&#8217; COMPILE BODY;&#8217;<br />
FROM dba_objects<br />
WHERE status &lt;&gt; &#8216;VALID&#8217;<br />
AND object_type = &#8216;TYPE BODY&#8217;<br />
UNION<br />
SELECT &#8216;ALTER MATERIALIZED VIEW &#8216;||owner||&#8217;.'||object_name||&#8217; COMPILE;&#8217;<br />
FROM dba_objects<br />
WHERE status &lt;&gt; &#8216;VALID&#8217;<br />
AND object_type = &#8216;UNDEFINED&#8217;<br />
UNION<br />
SELECT &#8216;ALTER JAVA CLASS &#8216;||owner||&#8217;.&#8221;&#8216;||object_name||&#8217;&#8221; RESOLVE;&#8217;<br />
FROM dba_objects<br />
WHERE status &lt;&gt; &#8216;VALID&#8217;<br />
AND object_type = &#8216;JAVA CLASS&#8217;<br />
UNION<br />
SELECT &#8216;ALTER SYNONYM &#8216;||owner||&#8217;.'||object_name||&#8217; COMPILE;&#8217;<br />
FROM dba_objects<br />
WHERE status &lt;&gt; &#8216;VALID&#8217;<br />
AND object_type = &#8216;SYNONYM&#8217;<br />
AND owner &lt;&gt; &#8216;PUBLIC&#8217;<br />
UNION<br />
SELECT &#8216;ALTER PUBLIC SYNONYM &#8216;||object_name||&#8217; COMPILE;&#8217;<br />
FROM dba_objects<br />
WHERE status &lt;&gt; &#8216;VALID&#8217;<br />
AND object_type = &#8216;SYNONYM&#8217;<br />
AND owner = &#8216;PUBLIC&#8217;;<br />
spool off<br />
set feedback on<br />
@compile.sql</p></blockquote>
<p>Download:Note: There is a file embedded within this post, please visit this post to download the file.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2007/11/30/ubicomp/dba/sql-script-kompilieren-invalider-objekte&amp;layout=button_count&amp;show_faces=true&amp;width=640&amp;action=like&amp;font=trebuchet+ms&amp;colorscheme=light&amp;locale=de_DE" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:640px; height:30px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.michael-schwenk.de/2007/11/30/ubicomp/dba/sql-script-kompilieren-invalider-objekte/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problem beim Oracle SQL Developer-Upgrade</title>
		<link>http://www.michael-schwenk.de/2007/11/27/ubicomp/dba/problem-beim-upgrade-des-oracle-sql-developers</link>
		<comments>http://www.michael-schwenk.de/2007/11/27/ubicomp/dba/problem-beim-upgrade-des-oracle-sql-developers#comments</comments>
		<pubDate>Tue, 27 Nov 2007 14:21:46 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Developer]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=102</guid>
		<description><![CDATA[Beim Upgrade des Oracle SQL Developers von 1.2.1.32.00 auf 1.2.1.32.12 oder h&#246;her kommt es beim Editieren der Preferences zu einer java.lang.NullPointerException. Oracle empfiehlt eine komplette Neuinstallation. Das hei&#223;t: Den Ordner l&#246;schen, in dem sich die bisherige Version befand, und danach die neue Version hierhin kopieren. Das w&#228;re eine M&#246;glichkeit. Es geht aber auch einfacher: Den [...]]]></description>
			<content:encoded><![CDATA[<p>Beim Upgrade des Oracle SQL Developers von 1.2.1.32.00 auf 1.2.1.32.12 oder h&#246;her kommt es beim Editieren der <em>Preferences</em> zu einer <strong>java.lang.NullPointerException</strong>. Oracle empfiehlt eine komplette Neuinstallation.</p>
<p><span id="more-102"></span>Das hei&#223;t: Den Ordner l&#246;schen, in dem sich die bisherige Version befand, und danach die neue Version hierhin kopieren. Das w&#228;re eine M&#246;glichkeit. Es geht aber auch einfacher: Den Inhalt des Ordners <strong>&lt;SQLDeveloper&gt;/sqldeveloper/system/</strong> komplett leeren. Beim n&#228;chsten Start des Oracle SQL Developers werden die Inhalte neu angelegt und die NullPointerException geh&#246;rt in dieser Version der Vergangenheit an.</p>
<p><span style="text-decoration: underline;">Vorsicht:</span> In dem oben genannten Ordner befinden sich zwei relativ wichtige Dateien; diese sollten zuvor gesichert werden. Hierbei handelt es sich zum einen um die Datei <strong><em>IDEConnections.xml</em></strong>. Hier werden s&#228;mtliche Informationen hinterlegt, die f&#252;r den Connect zur Datenbank notwendig sind. Zum anderen ist da noch die Datei <strong><em>preferences.xml</em></strong>. In ihr sind die Einstellungen des Oracle SQL Developers gespeichert.<br />
Wenn im Laufe der Zeit mehrere Upgrades gemacht wurden, kann es sein, dass die Dateien in verschiedenen Unterordnern von &lt;SQLDeveloper&gt;/sqldeveloper/system/ vorhanden sind. Man sollte sich hier f&#252;r die aktuellste Version der Dateien entscheiden.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2007/11/27/ubicomp/dba/problem-beim-upgrade-des-oracle-sql-developers&amp;layout=button_count&amp;show_faces=true&amp;width=640&amp;action=like&amp;font=trebuchet+ms&amp;colorscheme=light&amp;locale=de_DE" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:640px; height:30px"></iframe></div>]]></content:encoded>
			<wfw:commentRss>http://www.michael-schwenk.de/2007/11/27/ubicomp/dba/problem-beim-upgrade-des-oracle-sql-developers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
