<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Oracle DBA's Weblog</title>
	<atom:link href="http://oracleadmin.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://oracleadmin.wordpress.com</link>
	<description>Der Weblog für Oracle-DBAs</description>
	<lastBuildDate>Thu, 05 Nov 2009 13:42:20 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='oracleadmin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/fa746bb6bdfa32949221e8bb9fbca3b1?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Oracle DBA's Weblog</title>
		<link>http://oracleadmin.wordpress.com</link>
	</image>
			<item>
		<title>Datenbank auf anderen Server migrieren</title>
		<link>http://oracleadmin.wordpress.com/2009/11/05/datenbank-auf-anderen-server-migrieren/</link>
		<comments>http://oracleadmin.wordpress.com/2009/11/05/datenbank-auf-anderen-server-migrieren/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 13:24:27 +0000</pubDate>
		<dc:creator>Kay Liesenfeld</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Migration]]></category>

		<guid isPermaLink="false">http://oracleadmin.wordpress.com/?p=142</guid>
		<description><![CDATA[Gelegentlich kann es vorkommen, dass eine Datenbank &#8222;so wie sie ist&#8220; auf einen anderen Server verschoben werden soll. Kann man dabei eine Downtime in Kauf nehmen, stellt sich die Sache als relativ simpel dar:
Auf dem Zielsystem muss exakt dieselbe Verzeichnisstruktur wie auf dem Quellsystem geschaffen werden; insbesondere die Dump-Verzeichnisse (bdump, udump, etc.), die Control-Files, die [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=142&subd=oracleadmin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Gelegentlich kann es vorkommen, dass eine Datenbank &#8222;so wie sie ist&#8220; auf einen anderen Server verschoben werden soll. Kann man dabei eine Downtime in Kauf nehmen, stellt sich die Sache als relativ simpel dar:</p>
<p>Auf dem Zielsystem muss exakt dieselbe Verzeichnisstruktur wie auf dem Quellsystem geschaffen werden; insbesondere die Dump-Verzeichnisse (bdump, udump, etc.), die Control-Files, die Redo-Logs und natürlich die Datenfiles müssen an dieselbe Stelle verschoben werden. Nicht zu vergessen das SPFILE (sofern vorhanden), die INIT.ORA und das Password-File; alle drei Dateien befinden sich überlicherweise unter $ORACLE_HOME/dbs bzw. /database.</p>
<p>Auf Windows-Systemen ist ein weiterer Schritt erforderlich: hier muss der Dienst neu angelegt werden, der die Instanz erzeugt. Dies geschieht mit dem Oracle-Tool ORADIM.</p>
<pre style="padding-left:30px;">oradim -new -sid orcl</pre>
<p>&#8222;ORCL&#8220; ist hierbei die zu vergebende SID. Im Dienstemanager von Windows taucht dann sofort der Dienst &#8222;OracleServiceORCL&#8220; auf. Nun stellt man diesen ggf. noch auf &#8222;Automatisch starten&#8220; und schon kann man die verschobene Datenbank hochfahren.</p>
<p>Im Netzwerk bzw. auf den Clients muss dann noch die Net8-Konfiguration geändert werden, damit die Clients auch wissen, wo sich die neue Datenbank befindet.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oracleadmin.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oracleadmin.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oracleadmin.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oracleadmin.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oracleadmin.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oracleadmin.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oracleadmin.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oracleadmin.wordpress.com/142/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oracleadmin.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oracleadmin.wordpress.com/142/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=142&subd=oracleadmin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://oracleadmin.wordpress.com/2009/11/05/datenbank-auf-anderen-server-migrieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">kliesenfeld</media:title>
		</media:content>
	</item>
		<item>
		<title>Stolperfalle GridControl-Installation</title>
		<link>http://oracleadmin.wordpress.com/2009/11/04/stolperfalle-gridcontrol-installation/</link>
		<comments>http://oracleadmin.wordpress.com/2009/11/04/stolperfalle-gridcontrol-installation/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 14:15:58 +0000</pubDate>
		<dc:creator>Kay Liesenfeld</dc:creator>
				<category><![CDATA[Bugs]]></category>
		<category><![CDATA[Das kann doch wohl nicht wahr sein...]]></category>

		<guid isPermaLink="false">http://oracleadmin.wordpress.com/?p=134</guid>
		<description><![CDATA[Heute hat mich ein Fehler bei der Installation des GridControl 10.2.0.1 aufgehalten (komplette Installation mit neuer Datenbank): Nachdem die Dateien für das RDBMS installiert und verlinkt wurden, bricht der Installer beim Kopieren der Dateien für die &#8222;Oracle Enterprise Manager Grid Control Console&#8220; mit einem Laufzeitfehler ab:

 
 
 
&#160;
&#160;
&#160;
&#160;
&#160;
Im Logfile steht so etwas wie
INFO: Exception occured during spawning :java.io.IOException: /u01/app/oracle/product/10.2.0/oms10g/bin/OracleAS_Relink_Patch.sh: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=134&subd=oracleadmin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Heute hat mich ein Fehler bei der Installation des GridControl 10.2.0.1 aufgehalten (komplette Installation mit neuer Datenbank): Nachdem die Dateien für das RDBMS installiert und verlinkt wurden, bricht der Installer beim Kopieren der Dateien für die &#8222;Oracle Enterprise Manager Grid Control Console&#8220; mit einem Laufzeitfehler ab:</p>
<p><img class="alignleft size-medium wp-image-137" title="runtime error" src="http://oracleadmin.files.wordpress.com/2009/11/fehlerzurlaufzeit1.jpg?w=300&#038;h=235" alt="runtime error" width="300" height="235" /></p>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"> </p>
<p style="padding-left:30px;"> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Im Logfile steht so etwas wie</p>
<pre style="padding-left:30px;">INFO: Exception occured during spawning :java.io.IOException: /u01/app/oracle/product/10.2.0/oms10g/bin/OracleAS_Relink_Patch.sh: cannot execute
INFO: Spawning the modified command :/u01/app/oracle/product/10.2.0/oms10g/bin/OracleAS_Relink_Patch.sh
INFO: Ausnahme von Aktion: Spawn
Name der Ausnahme: RuntimeException
Zeichenfolge der Ausnahme: Fehler während der Laufzeit.
Ausnahmegrad: 0</pre>
<p>Des Rätsels Lösung: die aktuelle Installation nicht (!) beenden und in einem weiteren Terminalfenster</p>
<pre style="padding-left:30px;">chmod +x /u01/app/oracle/product/10.2.0/oms10g/bin/OracleAS_Relink_Patch.sh</pre>
<p>ausführen. Dann mit &#8222;Wiederholen&#8220; die Installation fortsetzen.</p>
<p>Anschließend ereilt uns folgende Meldung:</p>
<p><img class="alignleft size-full wp-image-140" title="error making" src="http://oracleadmin.files.wordpress.com/2009/11/fehlerlinking.jpg?w=480&#038;h=247" alt="error making" width="480" height="247" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Hier muss man die Installation aller Komponenten stoppen und den Installer erneut starten. Dann wählt man &#8222;Nicht abgeschlossene Installation wiederaufnehmen&#8220;. Dann klappt&#8217;s.</p>
<p>Weitere Infos <a href="http://forums.oracle.com/forums/thread.jspa?messageID=3557550" target="_blank">hier</a>.</p>
<p>&nbsp;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oracleadmin.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oracleadmin.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oracleadmin.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oracleadmin.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oracleadmin.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oracleadmin.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oracleadmin.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oracleadmin.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oracleadmin.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oracleadmin.wordpress.com/134/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=134&subd=oracleadmin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://oracleadmin.wordpress.com/2009/11/04/stolperfalle-gridcontrol-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">kliesenfeld</media:title>
		</media:content>

		<media:content url="http://oracleadmin.files.wordpress.com/2009/11/fehlerzurlaufzeit1.jpg?w=300" medium="image">
			<media:title type="html">runtime error</media:title>
		</media:content>

		<media:content url="http://oracleadmin.files.wordpress.com/2009/11/fehlerlinking.jpg" medium="image">
			<media:title type="html">error making</media:title>
		</media:content>
	</item>
		<item>
		<title>User-DDL extrahieren</title>
		<link>http://oracleadmin.wordpress.com/2009/11/03/user-dll-extrahieren/</link>
		<comments>http://oracleadmin.wordpress.com/2009/11/03/user-dll-extrahieren/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 14:47:26 +0000</pubDate>
		<dc:creator>Kay Liesenfeld</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Vermischtes]]></category>

		<guid isPermaLink="false">http://oracleadmin.wordpress.com/?p=129</guid>
		<description><![CDATA[Mit den folgenden Abfragen kann man ganz elegant DDL-Scripte eines oder mehrerer User aus der Datenbank extrahieren:
SQL&#62; select dbms_metadata.get_ddl('USER','TEST') from dual;
DBMS_METADATA.GET_DDL('USER','TEST')
--------------------------------------------------------------------------------
   CREATE USER "TEST" IDENTIFIED BY VALUES 'S:BB9F382BFDA8AF92EE4AFC033609CAB510
1E5ED198D7CB942F4E9ABDD038;8CF86D821FB0249F'
      DEFAULT TABLESPACE "USERS"
      TEMPORARY TABLESPACE "TEMP"

SQL&#62; select dbms_metadata.get_granted_ddl('ROLE_GRANT','TEST') from dual;
DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT','TEST')
--------------------------------------------------------------------------------
   GRANT "CONNECT" TO "TEST"
   GRANT "RESOURCE" TO "TEST"

SQL&#62; select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','TEST') from dual;
DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','TEST')
--------------------------------------------------------------------------------
  GRANT UNLIMITED TABLESPACE TO "TEST"
SQL&#62; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=129&subd=oracleadmin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Mit den folgenden Abfragen kann man ganz elegant DDL-Scripte eines oder mehrerer User aus der Datenbank extrahieren:</p>
<pre style="padding-left:30px;">SQL&gt; select dbms_metadata.get_ddl('USER','TEST') from dual;
DBMS_METADATA.GET_DDL('USER','TEST')
--------------------------------------------------------------------------------
   CREATE USER "TEST" IDENTIFIED BY VALUES 'S:BB9F382BFDA8AF92EE4AFC033609CAB510
1E5ED198D7CB942F4E9ABDD038;8CF86D821FB0249F'
      DEFAULT TABLESPACE "USERS"
      TEMPORARY TABLESPACE "TEMP"

SQL&gt; select dbms_metadata.get_granted_ddl('ROLE_GRANT','TEST') from dual;
DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT','TEST')
--------------------------------------------------------------------------------
   GRANT "CONNECT" TO "TEST"
   GRANT "RESOURCE" TO "TEST"

SQL&gt; select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','TEST') from dual;
DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','TEST')
--------------------------------------------------------------------------------
  GRANT UNLIMITED TABLESPACE TO "TEST"</pre>
<pre style="padding-left:30px;">SQL&gt; select dbms_metadata.get_granted_ddl( 'OBJECT_GRANT', 'TEST') from dual;
DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT','TEST')
--------------------------------------------------------------------------------
  GRANT SELECT ON "SYS"."SYS_DUMMY" TO "TEST"</pre>
<p>Setzt man alle vier Abfragen untereinander, hat man ein funktionsfähiges Script, um einen bestehenden User zu &#8222;klonen&#8220;:</p>
<pre style="padding-left:30px;">select dbms_metadata.get_ddl('USER','TEST') from dual
union
select dbms_metadata.get_granted_ddl('ROLE_GRANT','TEST') from dual
union
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','TEST') from dual
union
select dbms_metadata.get_granted_ddl( 'OBJECT_GRANT', 'TEST') from dual;</pre>
<p>Der Nachteil dieser Vorgehensweise ist die hässliche Eigenart von Oracle, dass, wenn ein Aufruf von GET_GRANTED_DDL keinen Wert zurückliefert (wenn z.B. keine Rechte vergeben sind), folgende Fehlermeldung erscheint:</p>
<pre style="padding-left:30px;">SQL&gt;  select dbms_metadata.get_granted_ddl( 'OBJECT_GRANT', 'SCOTT' ) from dual;
ERROR:
ORA-31608: Angegebenes Objekt vom Typ OBJECT_GRANT nicht gefunden
ORA-06512: in "SYS.DBMS_SYS_ERROR", Zeile 86
ORA-06512: in "SYS.DBMS_METADATA", Zeile 3915
ORA-06512: in "SYS.DBMS_METADATA", Zeile 5826
ORA-06512: in Zeile 1</pre>
<pre style="padding-left:30px;">Es wurden keine Zeilen ausgewahlt</pre>
<p>Wie man das o.g. Script so ergänzen kann, dass diese Meldung vorher abgefangen werden, erfährt man bspw. <a href="http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:494205100346718343" target="_blank">hier</a> und <a href="http://www.oraclealchemist.com/news/trick-1-copying-users-the-right-way/" target="_blank">hier</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oracleadmin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oracleadmin.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oracleadmin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oracleadmin.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oracleadmin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oracleadmin.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oracleadmin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oracleadmin.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oracleadmin.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oracleadmin.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=129&subd=oracleadmin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://oracleadmin.wordpress.com/2009/11/03/user-dll-extrahieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">kliesenfeld</media:title>
		</media:content>
	</item>
		<item>
		<title>Oracle Password-Cracker</title>
		<link>http://oracleadmin.wordpress.com/2009/11/02/oracle-password-cracker/</link>
		<comments>http://oracleadmin.wordpress.com/2009/11/02/oracle-password-cracker/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 13:15:28 +0000</pubDate>
		<dc:creator>Kay Liesenfeld</dc:creator>
				<category><![CDATA[Vermischtes]]></category>

		<guid isPermaLink="false">http://oracleadmin.wordpress.com/?p=125</guid>
		<description><![CDATA[Ein interessantes Projekt, das zeigt, wie schnell Kennwörter unter Oracle geknackt werden können:
http://ops.conus.info/
Der Algorithmus schafft ~60 Millionen potenzielle Passwörter pro Sekunde.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=125&subd=oracleadmin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ein interessantes Projekt, das zeigt, wie schnell Kennwörter unter Oracle geknackt werden können:</p>
<p><a title="http://ops.conus.info/" href="http://ops.conus.info/" target="_blank">http://ops.conus.info/</a></p>
<p>Der Algorithmus schafft ~60 Millionen potenzielle Passwörter pro Sekunde.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oracleadmin.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oracleadmin.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oracleadmin.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oracleadmin.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oracleadmin.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oracleadmin.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oracleadmin.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oracleadmin.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oracleadmin.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oracleadmin.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=125&subd=oracleadmin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://oracleadmin.wordpress.com/2009/11/02/oracle-password-cracker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">kliesenfeld</media:title>
		</media:content>
	</item>
		<item>
		<title>Wo ist der CONSISTENT-Parameter bei Data Pump?</title>
		<link>http://oracleadmin.wordpress.com/2009/10/26/wo-ist-der-consistent-parameter-bei-data-pump/</link>
		<comments>http://oracleadmin.wordpress.com/2009/10/26/wo-ist-der-consistent-parameter-bei-data-pump/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 12:16:45 +0000</pubDate>
		<dc:creator>Kay Liesenfeld</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://oracleadmin.wordpress.com/?p=119</guid>
		<description><![CDATA[Beim Einsatz von Data Pump ab 10g mag sich mancher wundern, wo der CONSISTENT-Parameter geblieben ist. Dieser Parameter stellte beim EXP-Tool die Konsistenz der Daten während des gesamten Exports sicher &#8212; kein völlig unwichtiges Feature also.
Bei Data Pump (EXPDP / IMPDP) übernehmen diese Funktion die Parameter FLASHBACK_SCN und FLASHBACK_TIME. Diese Parameter schließen sich bei Benutzung [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=119&subd=oracleadmin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Beim Einsatz von Data Pump ab 10g mag sich mancher wundern, wo der CONSISTENT-Parameter geblieben ist. Dieser Parameter stellte beim EXP-Tool die Konsistenz der Daten während des gesamten Exports sicher &#8212; kein völlig unwichtiges Feature also.</p>
<p>Bei Data Pump (EXPDP / IMPDP) übernehmen diese Funktion die Parameter FLASHBACK_SCN und FLASHBACK_TIME. Diese Parameter schließen sich bei Benutzung gegenseitig aus. Der Einsatz von FLASHBACK_SCN sichert die Konsistenz eines Exports zu einer bestimmten SCN, und FLASHBACK_TIME zu einem bestimmten Zeitpunkt. Üblicherweise würde man hier SYSDATE bevorzugen.</p>
<p>Das Ganze liest sich dann wie folgt:</p>
<pre style="padding-left:30px;">#&gt; expdp system/passwd directory=flsh dumpfile=user001_2.dmp
  logfile=user001_2.log schemas=usr001
  flashback_time="TO_TIMESTAMP (TO_CHAR (SYSDATE, 'YYYY-MM-DD HH24:MI:SS'),
    'YYYY-MM-DD HH24:MI:SS')"</pre>
<p>Hierzu wird übrigens das Feature &#8222;Flashback Query&#8220; herangezogen, die FLASHBACK AREA muss hierfür nicht definiert sein. &#8222;Flashback Query&#8220; bedient sich aus dem UNDO-Tablespace.</p>
<p>Interessant hierzu ist der Metalink Artikel <em>377218.1: Expdp Message &#8222;FLASHBACK automatically enabled&#8220; Does Not Guarantee Export Consistency</em>. Demnach wirft EXPDP die Meldung &#8222;FLASHBACK automatically enabled&#8220; aus, was aber nicht automatisch heißt, dass der gerade gestartete Export konsistent ist. Um dies zu erreichen, muß immer mit den Parametern FLASHBACK_SCN oder FLASHBACK_TIME gearbeitet werden.</p>
<p>Bei EXP/IMP kannte nur EXP den CONSISTENT-Parameter, bei Datapump sind es sowohl EXPDP wie auch IMPDP &#8212; schließlich kann IMPDP via Network-Link auch &#8222;exportieren&#8220;.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oracleadmin.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oracleadmin.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oracleadmin.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oracleadmin.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oracleadmin.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oracleadmin.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oracleadmin.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oracleadmin.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oracleadmin.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oracleadmin.wordpress.com/119/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=119&subd=oracleadmin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://oracleadmin.wordpress.com/2009/10/26/wo-ist-der-consistent-parameter-bei-data-pump/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">kliesenfeld</media:title>
		</media:content>
	</item>
		<item>
		<title>Datapump-Export mit NETWORK_LINK dauert lange</title>
		<link>http://oracleadmin.wordpress.com/2009/10/23/datapump-export-mit-network_link-dauert-lange/</link>
		<comments>http://oracleadmin.wordpress.com/2009/10/23/datapump-export-mit-network_link-dauert-lange/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 07:27:43 +0000</pubDate>
		<dc:creator>Kay Liesenfeld</dc:creator>
				<category><![CDATA[Bugs]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://oracleadmin.wordpress.com/?p=114</guid>
		<description><![CDATA[Im Rahmen einer Migration bin ich heute über den Bug 4513695 gestolpert: der Datapump-Export braucht unter Umständen sehr lange für das Bestimmen der Tabellen-Größen, noch bevor der eigentliche Export angefangen hat.
Genau genommen handelt es sich hier ja um den Datapump-Import, da der NETWORK_LINK-Parameter nur beim IMPDP möglich ist.
Jedenfalls scheint der IMPDP hier ewig lange festzuhängen, ohne [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=114&subd=oracleadmin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Im Rahmen einer Migration bin ich heute über den Bug 4513695 gestolpert: der Datapump-Export braucht unter Umständen sehr lange für das Bestimmen der Tabellen-Größen, noch bevor der eigentliche Export angefangen hat.</p>
<p>Genau genommen handelt es sich hier ja um den Datapump-Import, da der NETWORK_LINK-Parameter nur beim IMPDP möglich ist.</p>
<p>Jedenfalls scheint der IMPDP hier ewig lange festzuhängen, ohne dass sich etwas bewegen würde:</p>
<pre style="padding-left:30px;">Starting "SYSTEM"."SYS_IMPORT_SCHEMA_04":  system/******** LOGFILE=imdp.log PARALLEL=4
  REMAP_SCHEMA=scott:scott_clone SCHEMAS=scott network_link=orcl</pre>
<pre style="padding-left:30px;">Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA</pre>
<p>Und dann war&#8217;s das für lange, lange Zeit.</p>
<p>Die Lösung des Problems steht u.a. in Metalink Note 416238.1: Impdp With NETWORK_LINK Runs Very Slowly at Estimate Stage.<br />
Die Lösung des Problems ist einfach:</p>
<pre style="padding-left:30px;">ALTER SYSTEM SET CURSOR_SHARING='EXACT';</pre>
<p>in der Zieltabelle ausführen und dann geht&#8217;s. Eine Übersicht, welche Datenbank welchen Parameter &#8222;verträgt&#8220;, findet man in Metalink-Note 421441.1.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oracleadmin.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oracleadmin.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oracleadmin.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oracleadmin.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oracleadmin.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oracleadmin.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oracleadmin.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oracleadmin.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oracleadmin.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oracleadmin.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=114&subd=oracleadmin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://oracleadmin.wordpress.com/2009/10/23/datapump-export-mit-network_link-dauert-lange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">kliesenfeld</media:title>
		</media:content>
	</item>
		<item>
		<title>Schema klonen mit Datapump</title>
		<link>http://oracleadmin.wordpress.com/2009/10/22/schema-klonen-mit-datapump/</link>
		<comments>http://oracleadmin.wordpress.com/2009/10/22/schema-klonen-mit-datapump/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 11:41:22 +0000</pubDate>
		<dc:creator>Kay Liesenfeld</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://oracleadmin.wordpress.com/?p=104</guid>
		<description><![CDATA[Oracle hat mit Datapump ab 10g ein neues Tool eingeführt, das die alteingesessenen, aber bewährten Tools EXP und IMP ablösen soll. Dabei ist es deutlich mächtiger, bringt aber auch einige Einschränkungen im Vergleich zur bisherigen Vorgehensweise mit sich. Doch dazu in einem späteren Artikel mehr.
Datapump kann hervorragend zum Klonen ganzer Schemata (neudeutsch auch Schemas) benutzt werden, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=104&subd=oracleadmin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Oracle hat mit <a href="http://download.oracle.com/docs/cd/B13789_01/server.101/b10825/part_dp.htm#i436481" target="_blank">Datapump</a> ab 10g ein neues Tool eingeführt, das die alteingesessenen, aber bewährten Tools EXP und IMP ablösen soll. Dabei ist es deutlich mächtiger, bringt aber auch einige Einschränkungen im Vergleich zur bisherigen Vorgehensweise mit sich. Doch dazu in einem späteren Artikel mehr.</p>
<p>Datapump kann hervorragend zum Klonen ganzer Schemata (neudeutsch auch <a href="http://de.wiktionary.org/wiki/Schema" target="_blank">Schemas</a>) benutzt werden, und das sogar ohne eine Export-Datei anzulegen.</p>
<p>Hierzu bedient man sich der NETWORK_LINK-Funktionalität von Datapump, in dem es unter Umgehung des Filesystems die zu importierenden Daten direkt aus der Quelldatenbank saugt. Notwendig hierzu ist ein <a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/ds_concepts002.htm" target="_blank">DATABASE LINK</a> auf die Quelldatenbank. Will man ein Schema in der gleichen Datenbank klonen, legt man einfach einen Link auf die eigene Datenbank an (loopback).</p>
<p>Beispiel: wir möchten die Schemas SCOTT und EMILY in die Schemas SCOTT_CLONE und EMILY_CLONE klonen. Quell- und Zieldatenbank sind identisch: ORCL.</p>
<p>Zunächst wird der Database Link angelegt, z.B. mit</p>
<pre style="padding-left:30px;">CREATE PUBLIC DATABASE LINK "TO_ORCL" CONNECT TO "SYSTEM" IDENTIFIED by "manager" USING 'orcl'</pre>
<p>Wie der Dokumentation zu entnehmen ist, sollte für das Logfile ein Directory-Objekt vorhanden sein:</p>
<pre style="padding-left:30px;">CREATE DIRECTORY "DATA_PUMP_DIR" AS '/u01/oracle/admin/ORCL/dpdump'</pre>
<p>Dann startet man den IMport, denn der EXport wird bei Verwendung des Network-Modus impliziert:</p>
<pre style="padding-left:30px;">impdp system network_link=to_orcl logfile=cloning.log
remap_schema='SCOTT':'SCOTT_CLONE','EMILY':'ELIMY_CLONE' schemas=SCOTT,EMILY</pre>
<p>Dies ist ein Beispiel mit zwei zu klonenden Schemas, das funktioniert natürlich auch mit einem oder auch drei equivalent.</p>
<p>Wichtig ist, dass man SCHEMAS=&#8230; angibt, sonst kopiert Datapump die gesamte Datenbank (was nicht funktionieren würde), und remappt dabei die angegebenen Schemas.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oracleadmin.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oracleadmin.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oracleadmin.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oracleadmin.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oracleadmin.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oracleadmin.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oracleadmin.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oracleadmin.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oracleadmin.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oracleadmin.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=104&subd=oracleadmin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://oracleadmin.wordpress.com/2009/10/22/schema-klonen-mit-datapump/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">kliesenfeld</media:title>
		</media:content>
	</item>
		<item>
		<title>Typisches RMAN-Backup-Script</title>
		<link>http://oracleadmin.wordpress.com/2008/09/03/typisches-rman-backup-script/</link>
		<comments>http://oracleadmin.wordpress.com/2008/09/03/typisches-rman-backup-script/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 09:13:39 +0000</pubDate>
		<dc:creator>Kay Liesenfeld</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[rman]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://oracleadmin.wordpress.com/?p=88</guid>
		<description><![CDATA[Heute stellen wir ein typisches RMAN-Backup-Script vor, dass man in einer 10g-Umgebung zur vollständigen Datenbanksicherung benutzen kann. Zunächst meldet man sich beim RMAN an (ORACLE_SID ist gesetzt):
rman target /
Hier wird das Controlfile als Katalog benutzt, kein Katalog-Repository. Die aktuellen Einstellungen lässt man sich mit
RMAN&#62; show all;
ausgeben.
Wir ändern die grundlegenden Einstellungen:
RMAN&#62; configure channel device type disk [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=88&subd=oracleadmin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Heute stellen wir ein typisches RMAN-Backup-Script vor, dass man in einer 10g-Umgebung zur vollständigen Datenbanksicherung benutzen kann. Zunächst meldet man sich beim RMAN an (ORACLE_SID ist gesetzt):</p>
<p>rman target /</p>
<p>Hier wird das Controlfile als Katalog benutzt, kein Katalog-Repository. Die aktuellen Einstellungen lässt man sich mit</p>
<p>RMAN&gt; show all;</p>
<p>ausgeben.</p>
<p>Wir ändern die grundlegenden Einstellungen:</p>
<p>RMAN&gt; configure channel device type disk format &#8216;z:\backup\rman_%d_t%t_s%s_p%p&#8217;;<br />
=&gt; Bestimmt das Zielverzeichnis für die Sicherung und den Aufbau der Dateinamen.</p>
<p>RMAN&gt; configure controlfile autobackup format for device type disk to &#8216;z:\backup\%F&#8217;;<br />
=&gt; Bestimmt das Zielverzeichnis für das Controlfile-Autobackup. %F ist die DBID und sollte im Namen vorkommen.</p>
<p>RMAN&gt; configure controlfile autobackup on;<br />
=&gt; Das automatische Backup des Controlfiles wird eingeschaltet.</p>
<p>RMAN&gt; configure retention policy to redundancy 2;<br />
=&gt; Es werden 2 Backup-Sätze aufbewahrt.</p>
<p>RMAN&gt; configure backup optimization on;<br />
=&gt; Es werden nur neue Archivelogs gesichert, nicht immer alle.</p>
<p>Mit diesem Script starten wir das Backup:</p>
<p>RMAN&gt; run {<br />
backup database plus archivelog delete all input;<br />
backup current controlfile;<br />
backup spfile;<br />
}</p>
<p>Zunächst werden alle Datendateien gesichert. Dann wird das aktuelle Logfile archiviert, die Archivelogs gesichert, das dann aktuelle Logfile ebenfalls archiviert und auch gesichert. (Diesen ganzen Vorgang steuert ab 10g das &#8216;plus archivelog&#8217;-Statement.) Zu guter Letzt werden die gesicherten Archivelogs aus dem Quellverzeichnis (z.B. der Flash Recovery Area) gelöscht.</p>
<p>Das &#8222;backup current controlfile&#8220; benötigt man eigentlich nicht, wenn &#8222;autobackup controlfile&#8220; aktiviert ist, aber doppelt genäht hält einfach besser. Außerdem ist man als DBA grundsätzlich mißtrauisch.</p>
<p>Am Ende wird das SPFILE gesichert, was natürlich nur Sinn macht, wenn die Datenbank auch mit einem SPFILE gestartet wurde.</p>
<p>Überprüfen kann man das Backup z.B. mit</p>
<p>RMAN&gt; report need backup;</p>
<p>Hier darf es kein Ergebnis geben, sofern das Kommando zeitnah nach dem Backup ausgeführt wird.</p>
<p>RMAN&gt; list backup summary;</p>
<p>&#8230;listet alle Backups auf.</p>
<p>RMAN&gt; restore database validate;</p>
<p>&#8230;prüft, ob die Datenbank im Fehlerfall wieder vollständig zurückgeholt werden könnte.</p>
<p>Achtung: RMAN sichert unter Windows nicht auf Netzlaufwerken und/oder in UNC-Pfaden. Ein Backup muss auf eine lokale Platte stattfinden, anschließend kann z.B. mit ROBOCOPY das lokale Backup-Verzeichnis mit einem Pfad im Netzwerk abgeglichen werden.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oracleadmin.wordpress.com/88/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oracleadmin.wordpress.com/88/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oracleadmin.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oracleadmin.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oracleadmin.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oracleadmin.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oracleadmin.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oracleadmin.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oracleadmin.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oracleadmin.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oracleadmin.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oracleadmin.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=88&subd=oracleadmin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://oracleadmin.wordpress.com/2008/09/03/typisches-rman-backup-script/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">kliesenfeld</media:title>
		</media:content>
	</item>
		<item>
		<title>Tablespace-Belegungshistorie</title>
		<link>http://oracleadmin.wordpress.com/2008/07/14/tablespace-belegungshistorie/</link>
		<comments>http://oracleadmin.wordpress.com/2008/07/14/tablespace-belegungshistorie/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 18:54:08 +0000</pubDate>
		<dc:creator>Kay Liesenfeld</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[addm]]></category>
		<category><![CDATA[awr]]></category>
		<category><![CDATA[belegung]]></category>
		<category><![CDATA[tablespace]]></category>

		<guid isPermaLink="false">http://oracleadmin.wordpress.com/?p=42</guid>
		<description><![CDATA[Wer wissen möchte, wie sich seine Tablespaces in den letzten Wochen speicherplatzmäßig entwickelt haben, kann dies ganz einfach durch ein einfaches Query herausfinden, ohne dazu teure Zusatztools bemühen zu müssen:
select ts.name &#8222;Tablespace&#8220;,
vor_4_wochen.full &#8222;FULL%_4_WEEKS_AGO&#8220;,
letzte_woche.full &#8222;FULL%_LAST_WEEK&#8220;,
heute.full &#8222;FULL%_TODAY&#8220;
from   (select tsu.tablespace_id,
round(
tsu.tablespace_usedsize/tsu.tablespace_maxsize*100,0) as
full
from   wrh$_tablespace_space_usage tsu
where  to_date(substr(tsu.rtime,1,13),&#8217;MM/DD/YYYY
HH24&#8242;)=to_date(to_char(trunc(sysdate),&#8217;MM/DD/YYYY
HH24&#8242;),&#8217;MM/DD/YYYY HH24&#8242;)
) heute,
(select tsu.tablespace_id,
round(
tsu.tablespace_usedsize/tsu.tablespace_maxsize*100,0) as
full
from   wrh$_tablespace_space_usage tsu
where  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=42&subd=oracleadmin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Wer wissen möchte, wie sich seine Tablespaces in den letzten Wochen speicherplatzmäßig entwickelt haben, kann dies ganz einfach durch ein einfaches Query herausfinden, ohne dazu teure Zusatztools bemühen zu müssen:</p>
<p>select ts.name &#8222;Tablespace&#8220;,<br />
vor_4_wochen.full &#8222;FULL%_4_WEEKS_AGO&#8220;,<br />
letzte_woche.full &#8222;FULL%_LAST_WEEK&#8220;,<br />
heute.full &#8222;FULL%_TODAY&#8220;<br />
from   (select tsu.tablespace_id,<br />
round(<br />
tsu.tablespace_usedsize/tsu.tablespace_maxsize*100,0) as<br />
full<br />
from   wrh$_tablespace_space_usage tsu<br />
where  to_date(substr(tsu.rtime,1,13),&#8217;MM/DD/YYYY<br />
HH24&#8242;)=to_date(to_char(trunc(sysdate),&#8217;MM/DD/YYYY<br />
HH24&#8242;),&#8217;MM/DD/YYYY HH24&#8242;)<br />
) heute,<br />
(select tsu.tablespace_id,<br />
round(<br />
tsu.tablespace_usedsize/tsu.tablespace_maxsize*100,0) as<br />
full<br />
from   wrh$_tablespace_space_usage tsu<br />
where  to_date(substr(tsu.rtime,1,13),&#8217;MM/DD/YYYY<br />
HH24&#8242;)=to_date(to_char(trunc(sysdate-7),&#8217;MM/DD/YYYY<br />
HH24&#8242;),&#8217;MM/DD/YYYY HH24&#8242;)<br />
) letzte_woche,<br />
(select tsu.tablespace_id,<br />
round(<br />
tsu.tablespace_usedsize/tsu.tablespace_maxsize*100,0) as<br />
full<br />
from   wrh$_tablespace_space_usage tsu<br />
where  to_date(substr(tsu.rtime,1,13),&#8217;MM/DD/YYYY<br />
HH24&#8242;)=to_date(to_char(trunc(sysdate-28),&#8217;MM/DD/YYYY<br />
HH24&#8242;),&#8217;MM/DD/YYYY HH24&#8242;)<br />
) vor_4_wochen,<br />
v$tablespace ts<br />
where ts.ts# = heute.tablespace_id<br />
and   ts.ts# = letzte_woche.tablespace_id<br />
and  ts.ts# = vor_4_wochen.tablespace_id<br />
order by 4 desc;</p>
<p><strong>Wichtig ist, dass die Datenhaltungszeit der ADDM-Statistiken &gt; 28 Tage eingestellt ist und dass die Statistiken stündlich (alle 60 Minuten) gesammelt werden. Ansonsten liefert das Script eine leere Menge zurück.</strong></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oracleadmin.wordpress.com/42/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oracleadmin.wordpress.com/42/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oracleadmin.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oracleadmin.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oracleadmin.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oracleadmin.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oracleadmin.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oracleadmin.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oracleadmin.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oracleadmin.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oracleadmin.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oracleadmin.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=42&subd=oracleadmin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://oracleadmin.wordpress.com/2008/07/14/tablespace-belegungshistorie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">kliesenfeld</media:title>
		</media:content>
	</item>
		<item>
		<title>E-Mail-Versand in Triggern</title>
		<link>http://oracleadmin.wordpress.com/2008/07/02/e-mail-versand-in-triggern/</link>
		<comments>http://oracleadmin.wordpress.com/2008/07/02/e-mail-versand-in-triggern/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 08:53:08 +0000</pubDate>
		<dc:creator>Kay Liesenfeld</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[trigger]]></category>
		<category><![CDATA[utl_mail]]></category>

		<guid isPermaLink="false">http://oracleadmin.wordpress.com/?p=39</guid>
		<description><![CDATA[Aus dem Sekretariat kam folgende Anforderung: ändert sich die Spalte einer bestimmten Tabelle auf einen bestimmten Wert, soll eine E-Mail mit Informationen dieser Transaktion versendet werden.
Die Herangehensweise ist klar: ein On-Update-Trigger ruft UTL_MAIL (oder UTL_SMTP vor 10g) auf und versendet die E-Mail. Dieser Lösungsweg ist aber nur dann akzeptabel, wenn sichergestellt ist, dass der Benutzer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=39&subd=oracleadmin&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Aus dem Sekretariat kam folgende Anforderung: ändert sich die Spalte einer bestimmten Tabelle auf einen bestimmten Wert, soll eine E-Mail mit Informationen dieser Transaktion versendet werden.</p>
<p>Die Herangehensweise ist klar: ein On-Update-Trigger ruft UTL_MAIL (oder UTL_SMTP vor 10g) auf und versendet die E-Mail. Dieser Lösungsweg ist aber nur dann akzeptabel, wenn sichergestellt ist, dass der Benutzer diese Transaktion nicht mehr rückgängig machen kann, z.B. wenn die Applikation kein Rollback zulässt.</p>
<p>Wenn nämlich ein Rollback erfolgt, hat die Spalte wieder ihren ursprünglichen Wert, der Versand der E-Mail ist allerdings bereits erfolgt und kann nicht mehr rückgängig gemacht werden.</p>
<p>Tom &#8222;AskTom&#8220; Kyte beschreibt im Oracle Magazine und in seinem <a href="http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:698152300346710865" target="_blank">Blog</a> eine Vorgehensweise, die dieses Verhalten verhindert:</p>
<p>Die Idee ist, dass man statt des E-Mail-Versandes einen Eintrag in die Queue von DMBS_JOBS vornimmt, die sich um den Versand der Post kümmert. Der Insert in die Job-Queue ist ja auch eine Transaktion, wird also nur vorgenommen, wenn die ursprüngliche Transaktion (die, die den Trigger auslöst) commited wird. Im Detail funktioniert das so:</p>
<pre>SQL&gt; create table do_ddl (job number primary key, stmt varchar2(4000));
Table created.</pre>
<p>Diese Tabelle beinhaltet die Jobnummern und die Statements, die im jeweiligen Job ausgeführt werden sollen. In unserem Fall z.B. UTL_MAIL.SEND (&#8230;).</p>
<p>Anschließend liegen wir eine Stored Procedure an, die die Jobtabelle ausliest und die dort hinterlegten Statements ausführt:</p>
<pre>SQL&gt; create or replace procedure do_ddl_safely (p_job in number) is
2   l_rec do_ddl%rowtype;
3   begin
4     select * into l_rec from do_ddl where job = p_job;
5     execute immediate l_rec.stmt;
6   end;
7   /
Procedure created.</pre>
<p>Im Trigger schließlich wird der Job in der Queue angelegt:</p>
<pre>SQL&gt; declare
2   l_job number;
3   begin
4     dbms_job.submit (l_job, 'do_ddl_safely (JOB);' );
5     insert into do_ddl (job, stmt) values (l_job, 'begin utl_mail.send (...) end;');
6   end;
7   /</pre>
<p>Was passiert also?</p>
<ol>
<li>Der Trigger legt einen Job an und schreibt das  Statement mit der Jobnummer in die Tabelle DO_DDL.</li>
<li>Da für die ursprüngliche Transaktion noch kein Commit vorliegt, wird weder das DBMS_JOB.SUBMIT noch der Insert in die Tabelle wirklich ausgeführt.</li>
<li>Beim Rollback wird die ursprüngliche Transaktion (das Ändern des Spaltenwertes) sowie Schritt 1 rückgängig gemacht<br />
<em>oder</em><br />
beim Commit wird die Änderung in der Spalte festgeschrieben, der Job wird erstellt und die Tabelle DO_DDL befüllt.</li>
<li>Der Job wird kurzzeitig nach dem Commit ausgeführt und die E-Mail wird versendet.</li>
</ol>
<p>Diese Vorgehensweise ist natürlich nicht nur auf den Versand von E-Mails beschränkt, sondern eignet sich hervorragend, um ganz allgemein DDL in Triggern auszuführen.</p>
<p>Denn wie schreibt Mr. Kyte so schön:</p>
<p><em>Whenever you are tempted to do something nontransactional in a trigger, think 500 times more about it and then always decide againt it. It can lead only to really bad things.</em></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/oracleadmin.wordpress.com/39/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/oracleadmin.wordpress.com/39/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/oracleadmin.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/oracleadmin.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/oracleadmin.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/oracleadmin.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/oracleadmin.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/oracleadmin.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/oracleadmin.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/oracleadmin.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/oracleadmin.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/oracleadmin.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=oracleadmin.wordpress.com&blog=3914207&post=39&subd=oracleadmin&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://oracleadmin.wordpress.com/2008/07/02/e-mail-versand-in-triggern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">kliesenfeld</media:title>
		</media:content>
	</item>
	</channel>
</rss>