<?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; 10g</title>
	<atom:link href="http://www.michael-schwenk.de/tag/10g/feed" rel="self" type="application/rss+xml" />
	<link>http://www.michael-schwenk.de</link>
	<description></description>
	<lastBuildDate>Fri, 03 Jun 2011 13:09:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<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>
]]></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>
]]></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>
	</channel>
</rss>

