<?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>Willkommen bei der eL Mediaagentur &#187; Oracle</title>
	<atom:link href="http://www.el-mediaagentur.com/best-practice/datenbanken/oracle/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.el-mediaagentur.com</link>
	<description>die kreative Agentur aus dem Herzen Kölns</description>
	<lastBuildDate>Fri, 02 Apr 2010 19:18:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<meta xmlns="http://www.w3.org/1999/xhtml" name="robots" content="noindex,follow" />
		<item>
		<title>PL/SQL Embedded Gateway</title>
		<link>http://www.el-mediaagentur.com/2010/03/19/plsql-embedded-gateway/</link>
		<comments>http://www.el-mediaagentur.com/2010/03/19/plsql-embedded-gateway/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 18:08:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[APEX]]></category>
		<category><![CDATA[apxconf.sql]]></category>
		<category><![CDATA[CREATE_DAD]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Gateway]]></category>
		<category><![CDATA[GETHTTPPORT]]></category>
		<category><![CDATA[Oracle 11g]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[SETHTTPPORT]]></category>
		<category><![CDATA[SET_DAD_ATTRIBUTE]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/?p=302</guid>
		<description><![CDATA[Seit Oracle 11g und APEX 3.0.1 hat man die Wahl einen Apache (1.3 oder 2.0) Webserer mit mod_plsql oder dem integrierten PL/SQL Gateway für die Bereitstellung  dynamisch erstellter PL/SQL Inhalte zu nutzen. Wer bsp. PL/SQL Prozeduren online ausführbar machen möchte und auf die Verwendung eines eigenständigen Apache Webservers (Proxy-Server, URL-Rewriting, Filesystem etc.) verzichten kann, [...]]]></description>
			<content:encoded><![CDATA[<p><b>Seit Oracle 11g und APEX 3.0.1 hat man die Wahl einen Apache (1.3 oder 2.0) Webserer mit mod_plsql oder dem integrierten PL/SQL Gateway für die Bereitstellung  dynamisch erstellter PL/SQL Inhalte zu nutzen. Wer bsp. PL/SQL Prozeduren online ausführbar machen möchte und auf die Verwendung eines eigenständigen Apache Webservers (Proxy-Server, URL-Rewriting, Filesystem etc.) verzichten kann, der ist mit dem PL/SQL Embedded Gateway gut beraten. Im Folgenden wird die einfache Installation bzw. Aktivierung des PL/SQL Embedded Gateway beschrieben.</b><span id="more-302"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>Um den PL/SQL Embedded Gateway zu verwenden, führt man als SYS zuerst das folgende</p>
<pre class="brush: bash;">
SQL&gt; @$ORACLE_HOME/apex/apxconf.sql;
</pre>
<p>Konfigurations-Skript aus. Dieses SQL-Skript fragt nach dem HTTP-Port, über den später PL/SQL per URL angesprochen werden kann. Mit</p>
<pre class="brush: bash;">
SQL&gt; EXEC DBMS_XDB.SETHTTPPORT(8080);
</pre>
<p>kann dieser Port nachträglich verändert werden. Ein Aufruf mit Port 0 </p>
<pre class="brush: bash;">
SQL&gt; EXEC DBMS_XDB.SETHTTPPORT(0);
</pre>
<p>deaktivert den PL/SQL embedded Gateway und mit</p>
<pre class="brush: bash;">
SQL&gt; SELECT DBMS_XDB.GETHTTPPORT FROM DUAL;
</pre>
<p>wird der zur Zeit verwendete Port ausgegeben.<br />
Nach der Konfiguration durch <i>apxconf.sql</i> kann mit dem Listener Status-Kommando</p>
<pre class="brush: bash;">
$ lsnrctl status
</pre>
<p>geprüft werden ob der Port aktiv ist. Es sollte eine Zeile ähnlich der folgenden </p>
<pre class="brush: bash;">
$ (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=...)(PORT=8080))(Presentation=HTTP)(Session=RAW))
</pre>
<p>mit aufgeführt werden.<br />
Um bsp. PL/SQL Prozeduren über den PL/SQL Embedded Gateway zugänglich zu machen, benötigt man außerdem einen freigeschalteten</p>
<pre class="brush: bash;">
SQL&gt; alter user ANONYMOUS account unlock
</pre>
<p>ANONYMOUS Benutzer.<br />
Des Weiteren wird ein Database Access Descriptor (DAD) benötigt. Ein DAD übernimmt in etwa die Arbeit wie mod_plsql für den Apache.<br />
Sozusagen ein Servlet für den XML DB HTTP Listener. Unter <a href="http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_web.htm" target="_blank">http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_web.htm</a> im Abschnitt <i>Table 10-2 Mapping Between mod_plsql and Embedded PL/SQL Gateway DAD Attributes</i> sieht man zum Vergleich eine Gegenüberstellung der DAD und mod_plsql Attribute.<br />
Ein DAD wird später durch einen Teil in der URL repräsentiert bzw. angesprochen.<br />
Mit </p>
<pre class="brush: bash;">
SQL&gt; EXEC DBMS_EPG.CREATE_DAD('PL_SQL', '/plsql/*');
</pre>
<p>erstellt man ein DAD mit der Bezeichnung <i>PL_SQL</i> und dem URL-Teilpfad <i>/plsql/</i>.<br />
Damit der ANONYMOUS Benutzer für das DAD als eine Art &#8220;Schnittstelle&#8221; zwischen der DB und dem DAD zu fungieren kann, stellt man mit</p>
<pre class="brush: bash;">
SQL&gt; EXEC DBMS_EPG.SET_DAD_ATTRIBUTE('PL_SQL', 'database-username', 'ANONYMOUS');
</pre>
<p>den ANONYMOUS Benutzer für das DAD ein.<br />
Ab hier wäre der PL/SQL Embedded Gateway grundlegend konfiguriert. Um nun eine Prozedur eines Benutzers öffentlich über den<br />
PL/SQL Embedded Gateway zur Verfügung zu stellen, muß die Prozedur für PUBLIC per</p>
<pre class="brush: bash;">
SQL&gt; GRANT execute on PROZEDUR_NAME to public;
</pre>
<p>die Ausführbarkeit dieser Prozedur erlaubt werden. Wird in dieser Prozedur auf andere Objekte zugeriffen, müssen auch für diese die entsprechenden<br />
Rechte (bsp. für Tabellen GRANT select on TABELLEN_NAME to public) vergeben werden. Erst anschließend ist nach folgenden URL-Schema</p>
<pre class="brush: bash;">

http://www.domain.de/plsql/objekt_inhaber.objekt_name
</pre>
<p>das Objekt aufrufbar.</p>
<h3>Fazit</h3>
<p>Der PL/SQL Embedded Gateway ist eine einfache Methode um datenbanknah Objekte oder APEX-Applikationen per Browser ausführbar zu machen. Es entfällt<br />
die umfangreiche Konfiguration eines Apache Webservers. Auch sichere Verbindungen per SSL sind möglich. Benötigt man keine Sonderfunktionen á la<br />
URL-Umschreibung (mod_rewrite) oder einen Auslagerung des Webserver (Perormanz-und Sicherheitsaspekte) und Ähnliches, dann reicht ein PL/SQL<br />
Embedded Gateway für die meisten Fälle aus. </p>
<h3>Hinweis</h3>
<p>Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.</p>
<h3>Weiterführende Literatur</h3>
<p>empfehlenswert sind folgende Bücher:</p>
<ul>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3826655494/elmediaagentu-21/" target="_blank">Oracle APEX und Oracle XE in der Praxis</a> von Dietmar Aust, Jens-Christian Pokolm und Denes Kubicek</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3827326362/elmediaagentu-21/" target="_blank">Oracle 10g für den DBA: Effizient konfigurieren, optimieren und verwalten</a> von Johannes Ahrends, Dierk Lenz, Patrick Schwanke, und Günther Unbescheid</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3772373259/elmediaagentu-21/" target="_blank">Oracle 11g: Das umfassende Handbuch</a> von Lutz Fröhlich</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2010/03/19/plsql-embedded-gateway/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

