<?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; DBA</title>
	<atom:link href="http://www.michael-schwenk.de/category/ubicomp/dba/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>Patchset 10.2.0.5 f&#252;r ORACLE Database Server</title>
		<link>http://www.michael-schwenk.de/2010/05/03/ubicomp/dba/patchset-10-2-0-5-fuer-oracle-database-server</link>
		<comments>http://www.michael-schwenk.de/2010/05/03/ubicomp/dba/patchset-10-2-0-5-fuer-oracle-database-server#comments</comments>
		<pubDate>Mon, 03 May 2010 07:31:13 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[10.2.0.5]]></category>
		<category><![CDATA[8202632]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Patchset]]></category>
		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=483</guid>
		<description><![CDATA[Dieser Beitrag wird sehr kurz, aber ich m&#246;chte es nicht unerw&#228;hnt lassen: Viele DBAs gingen davon aus, dass das Patchset 10.2.0.4 f&#252;r ORACLE Database Server das finale Patchset sein wird, doch ORACLE hat mal wieder alle &#252;berrascht. In den letzten Tagen wurde das Patchset 10.2.0.5 f&#252;r Linux x86 &#38; x86-64 unter der Patchnummer 8202632 ver&#246;ffentlicht.]]></description>
			<content:encoded><![CDATA[<p>Dieser Beitrag wird sehr kurz, aber ich m&#246;chte es nicht unerw&#228;hnt lassen: Viele DBAs gingen davon aus, dass das Patchset 10.2.0.4 f&#252;r ORACLE Database Server das finale Patchset sein wird, doch ORACLE hat mal wieder alle &#252;berrascht.</p>
<p><span id="more-483"></span>In den letzten Tagen wurde das <strong>Patchset 10.2.0.5</strong> f&#252;r Linux x86 &amp; x86-64 unter der Patchnummer <a onclick="javascript:pageTracker._trackPageview('/outbound/article/updates.oracle.com');" href="https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8202632">8202632</a> ver&#246;ffentlicht.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2010/05/03/ubicomp/dba/patchset-10-2-0-5-fuer-oracle-database-server&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/05/03/ubicomp/dba/patchset-10-2-0-5-fuer-oracle-database-server/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<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>APEX &#8211; Upgrade von 3.0.1 auf 3.2.1</title>
		<link>http://www.michael-schwenk.de/2010/01/05/ubicomp/dba/apex-upgrade-von-3-0-1-auf-3-2-1</link>
		<comments>http://www.michael-schwenk.de/2010/01/05/ubicomp/dba/apex-upgrade-von-3-0-1-auf-3-2-1#comments</comments>
		<pubDate>Tue, 05 Jan 2010 15:38:43 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[3.0.1]]></category>
		<category><![CDATA[3.2.1]]></category>
		<category><![CDATA[@apexins SYSAUX SYSAUX TEMP /i/]]></category>
		<category><![CDATA[@load_trans de]]></category>
		<category><![CDATA[APEX]]></category>
		<category><![CDATA[Application Express]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[NLS_LANG=GERMAN_GERMANY.AL32UTF8]]></category>
		<category><![CDATA[SYSAUX]]></category>
		<category><![CDATA[Upgrade]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=445</guid>
		<description><![CDATA[Nach unz&#228;hligen Fehlschl&#228;gen beim Upgrade von APEX 3.0.1 auf 3.2.1 kann ich nun endlich den Erfolg vermelden. Mein Szenario sah folgenderma&#223;en aus: Ich wollte die integrierte APEX-Version 3.0.1 unter ORACLE 11gR1 (Patchset 11.1.0.7; OS: Win) auf die aktuelle APEX-Version 3.2.1 bringen. Das Installationsscript und das Laden der deutschen Ausgabe waren nie das Problem. Das, was [...]]]></description>
			<content:encoded><![CDATA[<p>Nach unz&#228;hligen Fehlschl&#228;gen beim Upgrade von APEX 3.0.1 auf 3.2.1 kann ich nun endlich den Erfolg vermelden. Mein Szenario sah folgenderma&#223;en aus: Ich wollte die integrierte APEX-Version 3.0.1 unter ORACLE 11gR1 (Patchset 11.1.0.7; OS: Win) auf die aktuelle APEX-Version 3.2.1 bringen. Das Installationsscript und das Laden der deutschen Ausgabe waren nie das Problem. Das, was nie funktioniert hat, war das Kopieren der Bilder&#8230; und das, obwohl ich mich strikt an die Dokumentation gehalten habe. Jedesmal hat es mir die Seite anschlie&#223;end zerhauen.</p>
<p><span id="more-445"></span>Gerettet hat mich der Beitrag &#8220;<strong><a href="http://www.apex-blog.com/oracle-apex/installing-apex-3-2-1-169.html" target="_blank">Installing APEX 3.2.1</a></strong>&#8221; von Sara Blair im APEX-Blog. Er baut zwar auf die Dokumentation von ORACLE auf, geht aber auch explizit auf die Bilder-Problematik ein. Neben diesem Beitrag, in dem das ZIP-File der Version 3.2.1 in das Verzeichnis APEX3.2 direkt im Hauptverzeichnis entpackt wird, habe ich auch Blogbei- und Foreneintr&#228;ge entdeckt, in denen man nach C:\TEMP entpacken soll. Selbst das ging in meinem Fall nicht&#8230;</p>
<p>Gut, ich habe mich nicht hundertprozentig an die vorgeschlagene Vorgehensweise von Sara gehalten. Sie schl&#228;gt vor, die neue Version in einen neuen Tablespace zu packen. Bei der Datenbank-Installation von 11gR1 wird APEX im Tablespace SYSAUX installiert. Da die Installation selbst bei meinen Versuchen stets funktioniert hat, habe ich also wieder SYSAUX gew&#228;hlt. Mit anderen Worten: Der Installationbefehl</p>
<blockquote><p><code style="font-family: Courier New,Courier,mono;">@apexins SYSAUX SYSAUX TEMP /i/</code></p></blockquote>
<p>und das Laden der deutschen Sprache</p>
<blockquote><p>(Achtung: vorher NLS_LANG auf GERMAN_GERMANY.AL32UTF8 setzen!)</p>
<p><code style="font-family: Courier New,Courier,mono;">@load_trans de</code></p></blockquote>
<p>liefen fehlerfrei durch. Der alles entscheidende Befehl war dann:</p>
<blockquote><p><code style="font-family: Courier New,Courier,mono;">@apxldimg.sql C:\APEX3.2\</code></p></blockquote>
<p>und die Seite sah 1a aus, und Bilder waren auch zu sehen&#8230;</p>
<p><em>An dieser Stelle also: THX to Sara!</em></p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2010/01/05/ubicomp/dba/apex-upgrade-von-3-0-1-auf-3-2-1&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/01/05/ubicomp/dba/apex-upgrade-von-3-0-1-auf-3-2-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation VMware vCenter und Oracle 11gR1 unter Windows 2008</title>
		<link>http://www.michael-schwenk.de/2009/08/29/ubicomp/dba/erfahrungsbericht-installation-vmware-vcenter-und-oracle-11g-unter-windows-2008</link>
		<comments>http://www.michael-schwenk.de/2009/08/29/ubicomp/dba/erfahrungsbericht-installation-vmware-vcenter-und-oracle-11g-unter-windows-2008#comments</comments>
		<pubDate>Sat, 29 Aug 2009 19:46:49 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[%windir%\SysWOW64\odbcad32.exe]]></category>
		<category><![CDATA[11gR1]]></category>
		<category><![CDATA[64-Bit]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[listener.ora]]></category>
		<category><![CDATA[ODBC]]></category>
		<category><![CDATA[ORACLE_HOME]]></category>
		<category><![CDATA[tnsnames.ora]]></category>
		<category><![CDATA[vCenter Server]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[Windows 2008]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=423</guid>
		<description><![CDATA[Die Installation von ORACLE 11gR1 und VMware vCenter Server auf einem Windows Server 2008 64-Bit-System ist eine ziemliche Herausforderung. Zumal man dabei auf Dinge st&#246;&#223;t, die wir bisher nirgends im Netz dokumentiert fanden. Das Einrichten einer ORACLE 11gR1 Datenbank unter Windows Server 2oo8 64-Bit ist an und f&#252;r sich kein Problem, es sei denn, die [...]]]></description>
			<content:encoded><![CDATA[<p>Die Installation von ORACLE 11gR1 und VMware vCenter Server auf einem Windows Server 2008 64-Bit-System ist eine ziemliche Herausforderung. Zumal man dabei auf Dinge st&#246;&#223;t, die wir bisher nirgends im Netz dokumentiert fanden.</p>
<p><span id="more-423"></span>Das Einrichten einer ORACLE 11gR1 Datenbank unter Windows Server 2oo8 64-Bit ist an und f&#252;r sich kein Problem, es sei denn, die Sicherheitseinstellungen auf dem System sind extrem hoch eingestellt (z.B. wegen <a href="http://www.bsi.de" target="_blank">BSI</a>-Vorgaben). Da kann es schonmal vorkommen, dass man unter dem Account, unter dem man installiert hat, selbst den Listener nicht mal mehr stoppen kann. Das Starten und die Statusabfrage funktioniert.</p>
<p>Damit man als &#8211; angeblicher &#8211; Eigent&#252;mer des Listeners diesen auch wieder stoppen kann, ist folgende Zeile in der <em>listener.or</em>a einzutragen:</p>
<blockquote>
<p style="font-family: Courier New,Courier,mono;"><em>SQLNET</em>.<em>AUTHENTICATION_SERVICES</em> = <em>NONE</em></p>
</blockquote>
<p>Sollte diese Zeile in der <em>listener.ora</em> bereits vorhanden sein, muss lediglich der Wert in <em>NONE</em> ge&#228;ndert werden.</p>
<p>Normalerweise sollten Benutzerrechte auf Unterordner vererbt werden. Das dachte ich auch, bis ich die Datenbank auf dem System mit sehr hohen Sicherheitseinstellungen eingerichtet hatte. Danach geh&#246;rte &#8220;mir&#8221; nicht mal der Ordner mit den .dbf-Files. Da ich Adminrechte hatte, lie&#223; sich das &#228;ndern&#8230;</p>
<p>Die erste H&#252;rde ist genommen, die Datenbank ist installiert und man kann sich connecten. Zur n&#228;chsten Baustelle &#8211; der Installation von VMware vCenter Server:  Der Installationanleitung ist zu entnehmen, dass VMware vCenter Server den 32-Bit-ODBC-Treiber von ORACLE nutzt; wir befinden uns aber auf einem 64-Bit-System. Unter Windows 2008 sind alle systemnahen 32-Bit-Dienste in dem Verzeichnis</p>
<blockquote>
<p style="font-family: Courier New,Courier,mono;">%windir%\SysWOW64</p>
</blockquote>
<p>zu finden, so auch die Datei <em>odbcad32.exe</em>. Da jedoch die 64-Bit-Version von ORACLE 11g installiert ist, ist der Treiber nicht an dieser Stelle zu finden, sondern in der Systemverwaltung, also in der Standardumgebung. Erstellt man eine ODBC-Verbindung regul&#228;r &#252;ber die Systemverwaltung, wird diese sp&#228;ter von der VMware-Setup-Routine nicht erkannt, stattdessen erscheint folgendes:</p>

<a href="http://www.michael-schwenk.de/wp-content/gallery/ubicomp/vcenter_srv.png" title="Setup VMware vCenter Server, Einrichtung ODBC-Connection" class="thickbox" rel="singlepic297" >
	<img class="ngg-singlepic ngg-center" src="http://www.michael-schwenk.de/index.php?callback=image&amp;pid=297&amp;width=126&amp;height=97&amp;mode=" alt="Setup VMware vCenter Server" title="Setup VMware vCenter Server" />
</a>

<p>In einem Thread des Oracle-Forums steht, dass man die ORACLE Database Gateways installieren soll, damit der Treiber auch in der 32-Bit-Umgebung steht. Das kann ich leider nicht best&#228;tigen. Erst die Installation des 32-Bit-Clients &#8211; bzw. davon nur die ODBC-Verbindung &#8211; brachte den gew&#252;nschten Erfolg.<br />
Man musste nach der Client-Installation lediglich die Datenbank in die <em>tnsnames.ora</em> des Client-ORACLE_HOME eintragen und die ODBC-Verbindung unter <em>%windir%\SysWOW64\odbcad32.exe</em> einrichten, und das Setup von VMware vCenter Server konnte ohne weiteres fortgesetzt werden.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2009/08/29/ubicomp/dba/erfahrungsbericht-installation-vmware-vcenter-und-oracle-11g-unter-windows-2008&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/08/29/ubicomp/dba/erfahrungsbericht-installation-vmware-vcenter-und-oracle-11g-unter-windows-2008/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL: Gr&#246;&#223;e von Tabellen ermitteln</title>
		<link>http://www.michael-schwenk.de/2009/06/09/ubicomp/dba/sql-groesse-von-tabellen-ermitteln</link>
		<comments>http://www.michael-schwenk.de/2009/06/09/ubicomp/dba/sql-groesse-von-tabellen-ermitteln#comments</comments>
		<pubDate>Tue, 09 Jun 2009 13:34:18 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Größe]]></category>
		<category><![CDATA[Size]]></category>
		<category><![CDATA[Tabelle]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=410</guid>
		<description><![CDATA[Nach dem Artikel SQL-Script: Gr&#246;&#223;e einer Datenbank ermitteln m&#246;chte ich daran ankn&#252;pfen und auf die Artikel zweier ORACLE DBAs verweisen, die sich mit dem Thema auseinandergesetzt haben, wie viel Platz einzelne Objekte &#8211; insbesondere Tabellen &#8211; in einem Tablespace belegen. Da ist zum einen das SQL-Script in dem Beitrag von H&#246;lschi bei killer-tomate.de. Er fragt [...]]]></description>
			<content:encoded><![CDATA[<p>Nach dem Artikel <a href="http://www.michael-schwenk.de/2008/12/30/ubicomp/dba/sql-script-groesse-einer-datenbank-ermitteln">SQL-Script: Gr&#246;&#223;e einer Datenbank ermitteln</a> m&#246;chte ich daran ankn&#252;pfen und auf die Artikel zweier ORACLE DBAs verweisen, die sich mit dem Thema auseinandergesetzt haben, wie viel Platz einzelne Objekte &#8211; insbesondere Tabellen &#8211; in einem Tablespace belegen.</p>
<p><span id="more-410"></span>Da ist zum einen das SQL-Script in dem Beitrag von <a href="http://www.killer-tomate.de/index.php/2006/11/17/ermitteln_der_grosse_von_tabellen_in_dem" target="_blank">H&#246;lschi bei killer-tomate.de</a>. Er fragt damit die Index- und Tabellengr&#246;&#223;en im eigenen User-Schema ab und stellt die Gr&#246;&#223;en in MByte dar.</p>
<p>Etwas detaillierter ist das SQL-Script von <a href="http://www.held-informatik.de/tipps-tricks/monitoring/tabellengroessen-ermitteln/" target="_blank">Held Informatik</a> (meine pers&#246;nliche Meinung&#8230;). Es beschr&#228;nkt sich auf explizit Tabellen und der DBA hat die M&#246;glichkeit, die Tabellengr&#246;&#223;en einzelner Schemata oder der Datenbank insgesamt abzufragen. Auch die Darstellung der Gr&#246;&#223;e ist etwas benutzerfreundlicher.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2009/06/09/ubicomp/dba/sql-groesse-von-tabellen-ermitteln&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/06/09/ubicomp/dba/sql-groesse-von-tabellen-ermitteln/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>SQL-Script: Gr&#246;&#223;e einer Datenbank ermitteln</title>
		<link>http://www.michael-schwenk.de/2008/12/30/ubicomp/dba/sql-script-groesse-einer-datenbank-ermitteln</link>
		<comments>http://www.michael-schwenk.de/2008/12/30/ubicomp/dba/sql-script-groesse-einer-datenbank-ermitteln#comments</comments>
		<pubDate>Tue, 30 Dec 2008 14:31:52 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Controlfiles]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Datafiles]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Größe]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[Prozedur]]></category>
		<category><![CDATA[Redologfiles]]></category>
		<category><![CDATA[Size]]></category>
		<category><![CDATA[Tempfiles]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=356</guid>
		<description><![CDATA[Ich glaube, jedem DBA wurde schon einmal die Frage gestellt, wie gro&#223; denn nun diese oder jene Datenbank ist. Und ich glaube auch, dass jedem DBA daraufhin folgendes durch den Kopf geht: &#8220;Was genau will er/sie jetzt wissen und was soll ich darauf antworten?&#8221; Ja, was tun? Nennt man jetzt die allokierte Tablespace-Gr&#246;&#223;e des Users, [...]]]></description>
			<content:encoded><![CDATA[<p>Ich glaube, jedem DBA wurde schon einmal die Frage gestellt, wie gro&#223; denn nun diese oder jene Datenbank ist. Und ich glaube auch, dass jedem DBA daraufhin folgendes durch den Kopf geht: &#8220;Was genau will er/sie jetzt wissen und was soll ich darauf antworten?&#8221;</p>
<p><span id="more-356"></span>Ja, was tun? Nennt man jetzt die allokierte Tablespace-Gr&#246;&#223;e des Users, der ihm/ihr bekannt ist, oder nennt man nur den gegenw&#228;rtigen Daten-F&#252;llgrad des Tablespaces? Oder geht man einen Schritt weiter und beziffert die Gr&#246;&#223;e der Datenbank mit der Summe aller Datafiles? Mancher DBA f&#252;gt dieser Summe sogar die Gr&#246;&#223;e der Tempfiles hinzu.</p>
<p>Was ist aber mit den Redologs und Controlfiles? Die geh&#246;ren schlie&#223;lich auch zur Datenbank! Die Gr&#246;&#223;e der Datenbank in Bezug auf s&#228;mtliche Dateien, aus denen sie besteht &#8211; Datafiles, Tempfiles, Redologs und Controlfiles, l&#228;sst sich mit Hilfe einer kleinen PL/SQL Prozedur ermitteln.</p>
<blockquote>
<p style="font-family: Courier New,Courier,mono;">set serveroutput on<br />
set feedback off<br />
declare<br />
db_name varchar2(25);<br />
alloc_database_size number;<br />
used_database_size number;<br />
alloc_datafile_size number;<br />
used_datafile_size number;<br />
alloc_tempfile_size number;<br />
used_tempfile_size number;<br />
redologfile_size number;<br />
controlfile_size number;<br />
begin<br />
select db_unique_name into db_name from v$database;<br />
select sum(bytes) data_file_size into alloc_datafile_size from dba_data_files;<br />
select sum(bytes) temp_file_size into alloc_tempfile_size from dba_temp_files;<br />
select sum(bytes_used) used_temp_file_size into used_tempfile_size from v$temp_space_header;<br />
select sum(bytes) redo_log_size into redologfile_size from v$log;<br />
select (a.bytes-b.bytes) bytes_used into used_datafile_size from (select sum(bytes) bytes from dba_data_files) a, (select sum(bytes) bytes from dba_free_space) b;<br />
select (block_size * (1 + file_size_blks)) control_file_size into controlfile_size from v$controlfile where rownum = 1;<br />
alloc_database_size := round((alloc_datafile_size + alloc_tempfile_size + redologfile_size + controlfile_size)/1024/1024/1024,3);<br />
used_database_size := round((used_datafile_size + used_tempfile_size + redologfile_size + controlfile_size)/1024/1024/1024,3);<br />
alloc_datafile_size := round(alloc_datafile_size/1024/1024/1024,3);<br />
used_datafile_size := round(used_datafile_size/1024/1024/1024,3);<br />
alloc_tempfile_size := round(alloc_tempfile_size/1024/1024/1024,3);<br />
used_tempfile_size  := round(used_tempfile_size /1024/1024/1024,3);<br />
redologfile_size := round(redologfile_size/1024/1024/1024,3);<br />
controlfile_size := round(controlfile_size/1024/1024/1024,3);<br />
dbms_output.put_line(&#8216;Groesse der Datenbank &#8216;|| db_name);<br />
dbms_output.put_line(&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8217;);<br />
dbms_output.put_line(&#8216;allokiert: &#8216; || alloc_database_size || &#8216; GB&#8217;);<br />
dbms_output.put_line(&#8216;genutzt:   &#8216; || used_database_size || &#8216; GB&#8217;);<br />
dbms_output.put_line(&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8217;);<br />
dbms_output.put_line(&#8216;Details:&#8217;);<br />
dbms_output.put_line(&#8216;Groesse der Datafiles   : &#8216; || alloc_datafile_size || &#8216; GB&#8217;);<br />
dbms_output.put_line(&#8216;-&gt; davon genutzt        : &#8216; || used_datafile_size || &#8216; GB&#8217;);<br />
dbms_output.put_line(&#8216;Groesse der Tempfiles   : &#8216; || alloc_tempfile_size || &#8216; GB&#8217;);<br />
dbms_output.put_line(&#8216;-&gt; davon genutzt        : &#8216; || used_tempfile_size || &#8216; GB&#8217;);<br />
dbms_output.put_line(&#8216;Groesse der Redologfiles: &#8216; || redologfile_size || &#8216; GB&#8217;);<br />
dbms_output.put_line(&#8216;Groesse der Controlfiles: &#8216; || controlfile_size || &#8216; GB&#8217;);<br />
end;<br />
/</p>
</blockquote>
<p>In der Prozedur wird sowohl die Gr&#246;&#223;e der einzelnen Dateien als auch deren F&#252;llgrad (bei Datafiles und Tempfiles) ber&#252;cksichtigt. Selbstverst&#228;ndlich kann das Script dahin gehend erweitert werden, dass z.B. die Tablespaces einzeln aufgelistet werden. Sollte die Datenbank im Archivelog Mode gefahren werden (was f&#252;r produktive Umgebungen zu empfehlen ist), k&#246;nnen in der Prozedur auch die Archivelogs ber&#252;cksichtigt werden.</p>
<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/2008/12/30/ubicomp/dba/sql-script-groesse-einer-datenbank-ermitteln&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/12/30/ubicomp/dba/sql-script-groesse-einer-datenbank-ermitteln/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ausfallsicherheit bei ORACLE Datenbanken</title>
		<link>http://www.michael-schwenk.de/2008/11/24/ubicomp/dba/ausfallsicherheit-bei-oracle-datenbanken</link>
		<comments>http://www.michael-schwenk.de/2008/11/24/ubicomp/dba/ausfallsicherheit-bei-oracle-datenbanken#comments</comments>
		<pubDate>Mon, 24 Nov 2008 08:42:35 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[High availability]]></category>
		<category><![CDATA[Hochverfügbarkeit]]></category>
		<category><![CDATA[Oracle Data Guard]]></category>
		<category><![CDATA[Oracle Database]]></category>
		<category><![CDATA[Oracle RAC]]></category>
		<category><![CDATA[Real Application Cluster]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=325</guid>
		<description><![CDATA[Hin und wieder st&#246;&#223;t man auf das Problem, das richtige Konzept f&#252;r Ausfallsicherheit bei ORACLE Datenbanken zu finden. Der ORACLE Real Application Cluster scheint f&#252;r einige Anwendungen &#252;bers Ziel hinauszuschie&#223;en, diese Anwendungen m&#252;ssen unter Umst&#228;nden auch erst RAC-tauglich geproggt werden; da ist der ORACLE Data Guard die sinnigere L&#246;sung. Der administrative Aufwand ist wesentlich geringer, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Hin und wieder st&#246;&#223;t man auf das Problem, das richtige Konzept f&#252;r Ausfallsicherheit bei ORACLE Datenbanken zu finden.</p>
<p><span id="more-325"></span></p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="481" height="402" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.authorstream.com/player.swf?p=rbacher-75396-ausfallsicherheit-mit-der-oracle-datenbank-20071122-businessbreakfast-mhatz-product-training-manuals-ppt-powerpoint" /><embed type="application/x-shockwave-flash" width="481" height="402" src="http://www.authorstream.com/player.swf?p=rbacher-75396-ausfallsicherheit-mit-der-oracle-datenbank-20071122-businessbreakfast-mhatz-product-training-manuals-ppt-powerpoint"></embed></object></p>
<p>Der ORACLE Real Application Cluster scheint f&#252;r einige Anwendungen &#252;bers Ziel hinauszuschie&#223;en, diese Anwendungen m&#252;ssen unter Umst&#228;nden auch erst RAC-tauglich geproggt werden; da ist der ORACLE Data Guard die sinnigere L&#246;sung. Der administrative Aufwand ist wesentlich geringer, auch die Kosten f&#252;r Software halten sich im Rahmen.</p>
<p>Im <a href="http://www.linux-magazin.de/heft_abo/ausgaben/2006/08/banken_doppel?special=High-Availability" target="_blank">Linux-Magazin</a> befindet sich zu diesem Thema ein sehr informativer Beitrag.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2008/11/24/ubicomp/dba/ausfallsicherheit-bei-oracle-datenbanken&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/11/24/ubicomp/dba/ausfallsicherheit-bei-oracle-datenbanken/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>ORACLE DataPump &#8211; Error while importing sequences</title>
		<link>http://www.michael-schwenk.de/2008/08/22/ubicomp/dba/oracle-datapump-error-while-importing-sequences</link>
		<comments>http://www.michael-schwenk.de/2008/08/22/ubicomp/dba/oracle-datapump-error-while-importing-sequences#comments</comments>
		<pubDate>Fri, 22 Aug 2008 14:06:30 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Datapump]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[Import]]></category>
		<category><![CDATA[NLS_LANG]]></category>
		<category><![CDATA[NLS_LANG=GERMAN_GERMANY.WE8ISO8859P15]]></category>
		<category><![CDATA[ORA-00933]]></category>
		<category><![CDATA[ORA-39083]]></category>
		<category><![CDATA[Sequences]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=243</guid>
		<description><![CDATA[Nach einem erfolgreichen, d.h. fehlerfreien, Export von Daten via ORACLE DataPump kann es unter Umst&#228;nden vorkommen, dass es beim DataPump Import zu Fehlermeldungen kommt, sobald die Sequences erstellt werden sollen. Beispiel: Objekttyp SCHEMA_EXPORT/SEQUENCE/SEQUENCE wird verarbeitet ORA-39083: Objekttyp SEQUENCE konnte nicht erstellt werden, Fehler: ORA-00933: SQL-Befehl wurde nicht korrekt beendet Fehlerhafte SQL ist: CREATE SEQUENCE USER.TEST_SEQ [...]]]></description>
			<content:encoded><![CDATA[<p>Nach einem erfolgreichen, d.h. fehlerfreien, Export von Daten via ORACLE DataPump kann es unter Umst&#228;nden vorkommen, dass es beim DataPump Import zu Fehlermeldungen kommt, sobald die Sequences erstellt werden sollen.</p>
<p><span id="more-243"></span>Beispiel:</p>
<blockquote><p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;;"><br />
Objekttyp SCHEMA_EXPORT/SEQUENCE/SEQUENCE wird verarbeitet<br />
ORA-39083: Objekttyp SEQUENCE konnte nicht erstellt werden, Fehler:<br />
ORA-00933: SQL-Befehl wurde nicht korrekt beendet<br />
Fehlerhafte SQL ist:<br />
CREATE SEQUENCE USER.TEST_SEQ MINVALUE 1 MAXVALUE 1,00000000000000E+27 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE</span></p></blockquote>
<p>oder die englische Version:</p>
<blockquote><p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;;"><br />
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE<br />
ORA-39083: Object type SEQUENCE failed to create with error:<br />
ORA-00933: SQL command not properly ended<br />
Failing sql is:<br />
CREATE SEQUENCE USER.TEST_SEQ MINVALUE 1 MAXVALUE 1,00000000000000E+27 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE</span></p></blockquote>
<p>ORACLE DataPump hat f&#252;r den MAXVALUE der Sequence den falschen Wert im CREATE SEQUENCE-Statement generiert. Im ORACLE DataPump Export Dump File steht der Wert <em>1,00000000000000E+27</em> (siehe Beispiele oben). Der korrekte Wert m&#252;sste jedoch <em>9999999999999999999999999 </em>sein. Der Fehler tritt auf, wenn das ORACLE DataPump Export Dump File mit NLS Parametern (= NLS Territory settings) erstellt wurde, die das Komma (&#8220;<em>,</em>&#8220;) als numerisches Dezimaltrennzeichen nutzen (beispielsweise NLS_LANG=GERMAN_GERMANY.WE8ISO8859P15) und nicht den Punkt (&#8220;<em>.</em>&#8220;).</p>
<p>Um zu pr&#252;fen, welche Werte der NLS_NUMERIC_CHARACTERS in der ORACLE Datenbank Instance gesetzt sind, f&#252;hrt man in SQL*Plus die folgende Abfrage aus:</p>
<blockquote><p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;;">SQL&gt; SELECT * FROM nls_session_parameters WHERE parameter IN (&#8216;NLS_LANGUAGE&#8217;, &#8216;NLS_TERRITORY&#8217;, &#8216;NLS_NUMERIC_CHARACTERS&#8217;);</span></p></blockquote>
<p>Das Ergebnis kann dann zum Beispiel so aussehen:</p>
<blockquote><p><span style="font-family: &quot;Courier New&quot;;">NLS_LANGUAGE                   GERMAN<br />
NLS_TERRITORY                  GERMANY<br />
NLS_NUMERIC_CHARACTERS         ,.<br />
</span></p></blockquote>
<p><span style="text-decoration: underline;"><strong>Die L&#246;sungen</strong></span></p>
<p>Das Problem tritt in ORACLE Database 10g Release 1 bis zum Patchset 10.1.0.3.0 auf. Mit Auslieferung des Patchsets 10.1.0.4.0 bzw. mit ORACLE Database Release 2 (10.2.0.1.<em>x</em>) wurde es gefixt.</p>
<p><em>L&#246;sungsansatz 1:</em><br />
Einspielen des Patchsets 10.1.0.4 im ORACLE_HOME der Quell-Datenbank, danach den ORACLE Datapump Export/Import erneut ausf&#252;hren.</p>
<p><em>L&#246;sungsansatz 2:</em><br />
Setzen der Umgebungsvariable NLS_LANG mit dem Wert AMERICAN_AMERICA.[characterset] (z.B.: WE8ISO8859P15) auf dem Quell-System (im &#220;brigen ist der Fehler plattformunabh&#228;ngig&#8230; <img src='http://www.michael-schwenk.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ):</p>
<blockquote>
<ul>
<li>Windows<br />
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15</li>
</ul>
<ul>
<li> Unix C-Shell<br />
setenv NLS_LANG &#8216;AMERICAN_AMERICA.WE8ISO8859P15&#8242;</li>
</ul>
<ul>
<li> Unix KORN-shell<br />
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15</li>
</ul>
<ul>
<li> VMS<br />
DEFINE/NOLOG NLS_LANG &#8220;AMERICAN_AMERICA.WE8ISO8859P15&#8243;</li>
</ul>
</blockquote>
<p>Danach ORACLE DataPump Export/Import erneut ausf&#252;hren.</p>
<p><em>L&#246;sungsansatz</em><em> 3:<br />
</em>Die Fehler ignorieren und die Sequences nach dem ORACLE Datapump Import manuell in SQL*Plus erstellen, zum Beispiel so (vgl. den oben genannten Fehler):</p>
<blockquote><p><span style="font-size: 11pt; font-family: &quot;Courier New&quot;;">SQL&gt; CREATE SEQUENCE USER.TEST_SEQ MINVALUE 1 MAXVALUE 9999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE;</span></p></blockquote>
<p>Weitere Informationen gibt es im ORACLE Metalink:<br />
<a href="https://metalink.oracle.com/metalink/plsql/showdoc?db=Bug&amp;id=3601775" target="_blank">Bug 3601775</a> &#8211; Impdp  Generates Invalid Sql For Sequences With Large Maxvalue Ora-39083 Ora-933<br />
<a href="https://metalink.oracle.com/metalink/plsql/showdoc?db=NOT&amp;id=340300.1" target="_blank">Note 340300.1</a> &#8211; Import DataPump: ORA-39083 and ORA-933 when Importing Sequences With Non &#8220;.&#8221; NLS Decimal Character<br />
<a href="https://metalink.oracle.com/metalink/plsql/showdoc?db=NOT&amp;id=278937.1" target="_blank">Note 278937.1</a> &#8211; Import DataPump: ORA-39083 and PLS-103 when Importing Statistics Created with Non &#8220;.&#8221; NLS Decimal Character<br />
<a href="https://metalink.oracle.com/metalink/plsql/showdoc?db=NOT&amp;id=30778.1" target="_blank">Note 30778.1</a> &#8211; Init.ora Parameter &#8220;NLS_NUMERIC_CHARACTERS&#8221; Reference Note</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2008/08/22/ubicomp/dba/oracle-datapump-error-while-importing-sequences&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/08/22/ubicomp/dba/oracle-datapump-error-while-importing-sequences/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IAS_ADMIN Passwort vergessen?</title>
		<link>http://www.michael-schwenk.de/2008/07/03/ubicomp/dba/ias_admin-passwort-vergessen</link>
		<comments>http://www.michael-schwenk.de/2008/07/03/ubicomp/dba/ias_admin-passwort-vergessen#comments</comments>
		<pubDate>Thu, 03 Jul 2008 06:41:25 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Application Server]]></category>
		<category><![CDATA[IAS]]></category>
		<category><![CDATA[IAS_ADMIN]]></category>
		<category><![CDATA[Passwort]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=223</guid>
		<description><![CDATA[Die Enterprise Manager Website des ORACLE Internet Application Servers erzwingt den Gebrauch des Passworts des Administrator-Accounts IAS_ADMIN&#8230; beim Login beim Stoppen des Enterprise Manager Services beim &#196;ndern des IAS_ADMIN Passworts Wenn man das Passwort dieses Accounts vergessen hat, ist die nachfolgende Prozedur hilfreich, um es zur&#252;ckzusetzen. Ich erl&#228;utere den Vorgang am Beispiel einer IAS-Installation unter [...]]]></description>
			<content:encoded><![CDATA[<p>Die Enterprise Manager Website des ORACLE Internet Application Servers erzwingt den Gebrauch des Passworts des Administrator-Accounts <em>IAS_ADMIN</em>&#8230;</p>
<p><span id="more-223"></span></p>
<ol>
<li>beim Login</li>
<li>beim Stoppen des Enterprise Manager Services</li>
<li>beim &#196;ndern des <em>IAS_ADMIN</em> Passworts</li>
</ol>
<p>Wenn man das Passwort dieses Accounts vergessen hat, ist die nachfolgende Prozedur hilfreich, um es zur&#252;ckzusetzen. Ich erl&#228;utere den Vorgang am Beispiel einer IAS-Installation unter Microsoft Windows; unter UNIX/Linux ist die Vorgehensweise jedoch &#228;hnlich. Um das Passwort zur&#252;cksetzen zu k&#246;nnen, muss man als der User angemeldet sein, unter dem der ORACLE IAS installiert wurde.</p>
<ol>
<li>Die folgende Datei in einem Editor &#246;ffnen und diejenige Zeile finden, in der die Berechtigungen (credentials) des Users <em>IAS_ADMIN</em> definiert sind.<br />
<blockquote><p><strong>%ORACLE_HOME%/sysman/j2ee/config/jazn-data.xml</strong></p></blockquote>
<p>Das folgende Beispiel zeigt die Sektion der Datei jazn-data.xml mit dem Credentials-Tag des Users <em>IAS_ADMIN</em></p>
<blockquote><p>&lt;jazn-realm&gt;<br />
&lt;realm&gt;<br />
&lt;name&gt;enterprise-manager&lt;/name&gt;<br />
&lt;users&gt;<br />
&#8230;<br />
&lt;user&gt;<br />
&lt;name&gt;ias_admin&lt;/name&gt;<br />
<strong>&lt;credentials&gt;{903}2Qt9qc/6zSZilslDB1/7NgtgMnA2Wnnlyd+xnHb+7WQ=&lt;/credentials&gt;</strong><br />
&lt;/user&gt;<br />
&#8230;<br />
&lt;/users&gt;<br />
&lt;/realm&gt;<br />
&lt;/jazn-realm&gt;</p></blockquote>
</li>
<li>Die gesamte Zeile mit dem Credentials-Tag l&#246;schen.</li>
<li>Im Kommandozeilenfenster den folgenden Befehl eintragen und ausf&#252;hren.<br />
<blockquote><p><strong>%ORACLE_HOME%\bin\emctl set password reset <em>&lt;neues_passwort&gt;</em></strong></p></blockquote>
</li>
<li>Neustart des Rechners; danach wird die Enterprise Manager Website das neue Passwor nutzen.</li>
</ol>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2008/07/03/ubicomp/dba/ias_admin-passwort-vergessen&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/07/03/ubicomp/dba/ias_admin-passwort-vergessen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sa-Passwort &#228;ndern</title>
		<link>http://www.michael-schwenk.de/2008/06/05/ubicomp/dba/sa-passwort-aendern</link>
		<comments>http://www.michael-schwenk.de/2008/06/05/ubicomp/dba/sa-passwort-aendern#comments</comments>
		<pubDate>Thu, 05 Jun 2008 13:08:03 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft SQL Server 2005]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[Passwort]]></category>
		<category><![CDATA[sa]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=219</guid>
		<description><![CDATA[Zur Passwort&#228;nderung des &#8220;sa&#8221; unter Microsoft SQL Server 2005, sind folgende Schritte auszuf&#252;hren: Am Server mit einem Administrator-Account anmelden SQL Server Management Studio &#246;ffnen und mit Windows-Authentifizierung einloggen Neues Abfragefenster &#246;ffnen und folgenden Befehl eintragen/ausf&#252;hren: exec sp_password @new = 'neues_Passwort', @loginame = 'sa' Im Objekt-Explorer den Punkt &#8220;Sicherheit&#8221; aufklappen und im Men&#252; &#8220;Anmeldungen&#8221; auf &#8220;sa&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Zur Passwort&#228;nderung des &#8220;sa&#8221; unter Microsoft SQL Server 2005, sind folgende Schritte auszuf&#252;hren:</p>
<p><span id="more-219"></span></p>
<ol>
<li>Am Server mit einem Administrator-Account anmelden</li>
<li>SQL Server Management Studio &#246;ffnen und mit Windows-Authentifizierung einloggen</li>
<li>Neues Abfragefenster &#246;ffnen und folgenden Befehl eintragen/ausf&#252;hren:<br />
<blockquote><p><code><span style="color: #0000ff;">exec</span><span style="color: #0000ff;"> <span style="color: #af0000;">sp</span></span></code><code><span style="color: #af0000;">_password</span> @new = <span style="color: #ff0000;">'neues_Passwort'</span>, @loginame = <span style="color: #ff0000;">'sa'</span></code></p></blockquote>
</li>
<li>Im Objekt-Explorer den Punkt &#8220;Sicherheit&#8221; aufklappen und im Men&#252; &#8220;Anmeldungen&#8221; auf &#8220;sa&#8221; doppelklicken.</li>
<li>Seite &#8220;Status&#8221; ausw&#228;hlen und pr&#252;fen, ob &#8220;Login:&#8221; zugelassen ist.</li>
</ol>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2008/06/05/ubicomp/dba/sa-passwort-aendern&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/06/05/ubicomp/dba/sa-passwort-aendern/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>Cloning Oracle Homes</title>
		<link>http://www.michael-schwenk.de/2008/04/03/ubicomp/dba/cloning-oracle-homes</link>
		<comments>http://www.michael-schwenk.de/2008/04/03/ubicomp/dba/cloning-oracle-homes#comments</comments>
		<pubDate>Thu, 03 Apr 2008 12:23:29 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Cloning]]></category>
		<category><![CDATA[Oracle Home]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=193</guid>
		<description><![CDATA[Im Blog von Frank Berger (IT-Dienstleister; siehe auch Links) befindet sich ein sehr interessanter Beitrag zum Thema Clonen von Oracle Homes auf ein und derselben Maschine. Wer als DBA schon einmal &#252;ber diese Problematik gestolpert ist, dem lege ich diesen Beitrag ans Herz.]]></description>
			<content:encoded><![CDATA[<p>Im Blog von Frank Berger (IT-Dienstleister; siehe auch Links) befindet sich ein sehr interessanter Beitrag zum Thema <a href="http://www.fm-berger.de/blog/index.php/2008/02/26/cloning-oracle-homes/" target="_blank">Clonen von Oracle Homes</a> auf ein und derselben Maschine. Wer als DBA schon einmal &#252;ber diese Problematik gestolpert ist, dem lege ich diesen Beitrag ans Herz.</p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2008/04/03/ubicomp/dba/cloning-oracle-homes&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/04/03/ubicomp/dba/cloning-oracle-homes/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>ORACLE Database 10gR2 und SLES 10</title>
		<link>http://www.michael-schwenk.de/2007/12/18/ubicomp/dba/oracle-database-10gr2-auf-sles-10-installieren</link>
		<comments>http://www.michael-schwenk.de/2007/12/18/ubicomp/dba/oracle-database-10gr2-auf-sles-10-installieren#comments</comments>
		<pubDate>Tue, 18 Dec 2007 12:50:09 +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[Linux]]></category>
		<category><![CDATA[SLES 10]]></category>
		<category><![CDATA[SUSE]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=132</guid>
		<description><![CDATA[Um ORACLE Database 10g Release 2 auf dem SUSE Linux Enterprise Server 10 zu installieren, m&#252;ssen im Vorfeld diverse Ma&#223;nahmen getroffen werden. So muss unter anderem dem ORACLE Universal Installer vorgegaukelt werden, man wolle ORACLE auf einem SLES9-System installieren. Beim Rollout von 10gR2 wurde SLES10 noch nicht supportet. Da dies mittlerweile aber der Fall ist, [...]]]></description>
			<content:encoded><![CDATA[<p>Um ORACLE Database 10g Release 2 auf dem SUSE Linux Enterprise Server 10 zu installieren, m&#252;ssen im Vorfeld diverse Ma&#223;nahmen getroffen werden. So muss unter anderem dem ORACLE Universal Installer vorgegaukelt werden, man wolle ORACLE auf einem SLES9-System installieren.</p>
<p><span id="more-132"></span>Beim Rollout von 10gR2 wurde SLES10 noch nicht supportet. Da dies mittlerweile aber der Fall ist, gibt es eine sehr detaillierte &#8211; wenn auch leider nur englischsprachige &#8211; Step by Step Anleitung CoolSolutionsWiki von Novell.<br />
<a href="http://www.novell.com/products/server/oracle/oracle10g_install.html" target="_blank">http://www.novell.com/products/server/oracle/oracle10g_install.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/oracle-database-10gr2-auf-sles-10-installieren&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/oracle-database-10gr2-auf-sles-10-installieren/feed</wfw:commentRss>
		<slash:comments>2</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>TUSC</title>
		<link>http://www.michael-schwenk.de/2007/12/14/ubicomp/dba/tusc</link>
		<comments>http://www.michael-schwenk.de/2007/12/14/ubicomp/dba/tusc#comments</comments>
		<pubDate>Fri, 14 Dec 2007 14:23:48 +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[Poster]]></category>
		<category><![CDATA[TUSC]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=130</guid>
		<description><![CDATA[Als einer der &#8211; wie ich finde &#8211; f&#252;hrenden ORACLE Certified Advantage Partner stellt TUSC f&#252;r jede aktuelle Version der ORACLE Database ein Poster mit s&#228;mtlichen V$-Views zur Verf&#252;gung. Das Poster, das zur Zeit zum Download zur Verf&#252;gung steht, basiert auf der ORACLE Database 10g Enterprise Edition 10.2.0.2.0. Es zeigt die Views sortiert nach wichtigen [...]]]></description>
			<content:encoded><![CDATA[<p>Als einer der &#8211; wie ich finde &#8211; f&#252;hrenden ORACLE Certified Advantage Partner stellt <a href="http://www.tusc.com" target="_blank">TUSC</a> f&#252;r jede aktuelle Version der ORACLE Database ein Poster mit s&#228;mtlichen V$-Views zur Verf&#252;gung.</p>
<p>Das Poster, das zur Zeit zum <a href="http://www.tusc.com/oracle/download/tusc_posters.html" target="_blank">Download</a> zur Verf&#252;gung steht, basiert auf der ORACLE Database 10g Enterprise Edition 10.2.0.2.0. Es zeigt die Views sortiert nach wichtigen Funktionen.</p>
<p><span id="more-130"></span><img src="http://www.tusc.com/oracle/images/tws-downloads-10gr2_poster.jpg" border="0" alt="" width="200" height="128" align="right" />Es sollte Grundwissen eines jeden ORACLE DBAs sein, aber noch mal zur Erinnerung: V$-Views sind eine Erg&#228;nzung zum Data Dictionary und enthalten wertvolle Informationen aus der SGA. Die Views, die ab ORACLE Database 10g neu sind, sind auf dem Poster nach dem Name mit &#8220;(10g)&#8221; gekennzeichnet. Views, die sich ge&#228;ndert haben (z.B. durch Hinzuf&#252;gen, Umbenennen oder L&#246;schen von Spalten), sind mit dem Zeichen &#8220;(*)&#8221; nach dem Name gekennzeichnet.<br />
Dar&#252;ber hinaus gibt es eine Reihe von GV$-Views, die identisch sind mit den V$-Views, mit dem Zusatz einer Instance ID Spalte (inst_id). Somit k&#246;nnen multiple Instancen in einer Umgebung mit mehreren Servern abgefragt werden.</p>
<p>TUSC bietet auch Pr&#228;sentationen, sortiert nach <a href="http://www.tusc.com/oracle/download/authors.html" target="_blank">Autor</a>, <a href="http://www.tusc.com/oracle/download/categories.html" target="_blank">Kategorie</a>, <a href="http://www.tusc.com/oracle/download/events.html" target="_blank">Veranstaltung</a> oder <a href="http://www.tusc.com/oracle/download/dates.html" target="_blank">Jahr</a>, zu diversen Themen in Bezug auf ORACLE zum Download an. Und unter <span class="TextHeading01"><a href="http://www.tusc.com/oracle/download/misc.html" target="_blank">Miscellaneous Downloads</a> findet man ein paar nette Goodies.</span></p>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2007/12/14/ubicomp/dba/tusc&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/14/ubicomp/dba/tusc/feed</wfw:commentRss>
		<slash:comments>0</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>
		<item>
		<title>L&#246;schen des Listener Log-Files</title>
		<link>http://www.michael-schwenk.de/2007/11/26/ubicomp/dba/loschen-des-listener-log-files</link>
		<comments>http://www.michael-schwenk.de/2007/11/26/ubicomp/dba/loschen-des-listener-log-files#comments</comments>
		<pubDate>Mon, 26 Nov 2007 13:27:37 +0000</pubDate>
		<dc:creator>Michel</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Ubicomp]]></category>
		<category><![CDATA[Listener]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.michael-schwenk.de/?p=99</guid>
		<description><![CDATA[Die Datei listener.log wird bei jedem Zugriff auf die Datenbank beschrieben. Dadurch kann die Datei sehr schnell sehr gro&#223; werden. Sie sollte deshalb in regelm&#228;&#223;igen Abst&#228;nden kontrolliert und ggf. gesichert, gel&#246;scht und neu erstellt werden. Wenn Sie unter Windows schon einmal versucht haben, die Datei listener.log zu l&#246;schen oder umzubenennen, w&#228;hrend der TNS Listener Prozess [...]]]></description>
			<content:encoded><![CDATA[<p>Die Datei <em>listener.log</em> wird bei jedem Zugriff auf die Datenbank beschrieben. Dadurch kann die Datei sehr schnell sehr gro&#223; werden. Sie sollte deshalb in regelm&#228;&#223;igen Abst&#228;nden kontrolliert und ggf. gesichert, gel&#246;scht und neu erstellt werden. Wenn Sie unter Windows schon einmal versucht haben, die Datei listener.log zu l&#246;schen oder umzubenennen, w&#228;hrend der TNS Listener Prozess aktiv war, werden Sie festgestellt haben, dass Windows den File-Handler blockiert und einen Fehler ausgibt:</p>
<p class="MsoNormal"><span id="more-99"></span><span style="font-size: 10pt; font-family: 'Courier New';">C:\&gt;<strong>del C:\oracle\ora92\network\log\listener.log</strong></span><br />
<span style="font-size: 10pt; font-family: 'Courier New';">C:\oracle\ora92\network\log\listener.log<br />
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.</span></p>
<p class="MsoNormal">Viele DBAs stoppen an dieser Stelle einfach den TNS Listener Prozess, benennen die Datei um oder entfernen sie; danach starten sie den TNS Listener Prozess wieder. Das f&#252;hrt aber zu Verbindungsfehlern bei Benutzern, die in dieser Zeit versuchen, auf die Datenbank zuzugreifen.<br />
Selbst unter Unix kann es zu Problemen kommen, wenn versucht wird, die Datei listener.log umzubenennen, w&#228;hrend der TNS Listener Prozess aktiv ist. Wie Windows so blockiert auch Unix den File-Handler. Unter Unix <em>kann</em> allerdings die Datei gel&#246;scht werden, aber ORACLE wird beim n&#228;chsten Versuch, die Datei zu beschreiben, diese nicht neu anlegen. Der TNS Listener muss gestoppt und neu gestartet werden, damit die Datei listener.log neu angelegt werden kann.
</p>
<p class="MsoNormal">Hier ist f&#252;r Windows und Unix nun eine L&#246;sung, wie die Datei listener.log umbenannt oder gel&#246;scht werden kann, ohne den TNS Listener zu stoppen und neu zu starten:</p>
<table border="0" width="500">
<tbody>
<tr>
<td align="center"><span><strong>Windows</strong></span></td>
</tr>
<tr>
<td>C:\&gt; <strong>cd \oracle\ora92\network\log</strong></td>
</tr>
<tr>
<td>C:\oracle\ora92\network\log&gt; <strong>lsnrctl set log_status off</strong></td>
</tr>
<tr>
<td>C:\oracle\ora92\network\log&gt; <strong>rename listener.log listener.old</strong></td>
</tr>
<tr>
<td>C:\oracle\ora92\network\log&gt; <strong>lsnrctl set log_status on</strong></td>
</tr>
</tbody>
</table>
<table border="0" width="500">
<tbody>
<tr>
<td align="center"><span><strong>Unix</strong></span></td>
</tr>
<tr>
<td>% <strong>cd /u01/app/oracle/product/9.2.0/network/log</strong></td>
</tr>
<tr>
<td>% <strong>lsnrctl set log_status off</strong></td>
</tr>
<tr>
<td>% <strong>mv listener.log listener.old</strong></td>
</tr>
<tr>
<td>% <strong>lsnrctl set log_status on</strong></td>
</tr>
</tbody>
</table>
<div id="fb-like" style=""><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.michael-schwenk.de/2007/11/26/ubicomp/dba/loschen-des-listener-log-files&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/26/ubicomp/dba/loschen-des-listener-log-files/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
