PL/SQL Embedded Gateway
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.
Um den PL/SQL Embedded Gateway zu verwenden, führt man als SYS zuerst das folgende
Nach der Konfiguration durch apxconf.sql kann mit dem Listener Status-Kommando
Um bsp. PL/SQL Prozeduren über den PL/SQL Embedded Gateway zugänglich zu machen, benötigt man außerdem einen freigeschalteten
Des Weiteren wird ein Database Access Descriptor (DAD) benötigt. Ein DAD übernimmt in etwa die Arbeit wie mod_plsql für den Apache. Sozusagen ein Servlet für den XML DB HTTP Listener. Unter http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_web.htm im Abschnitt Table 10-2 Mapping Between mod_plsql and Embedded PL/SQL Gateway DAD Attributes sieht man zum Vergleich eine Gegenüberstellung der DAD und mod_plsql Attribute. Ein DAD wird später durch einen Teil in der URL repräsentiert bzw. angesprochen. Mit
Ab hier wäre der PL/SQL Embedded Gateway grundlegend konfiguriert. Um nun eine Prozedur eines Benutzers öffentlich über den PL/SQL Embedded Gateway zur Verfügung zu stellen, muß die Prozedur für PUBLIC per
SQL> @$ORACLE_HOME/apex/apxconf.sql;Konfigurations-Skript aus. Dieses SQL-Skript fragt nach dem HTTP-Port, über den später PL/SQL per URL angesprochen werden kann. Mit
SQL> EXEC DBMS_XDB.SETHTTPPORT(8080);kann dieser Port nachträglich verändert werden. Ein Aufruf mit Port 0
SQL> EXEC DBMS_XDB.SETHTTPPORT(0);deaktivert den PL/SQL embedded Gateway und mit
SQL> SELECT DBMS_XDB.GETHTTPPORT FROM DUAL;wird der zur Zeit verwendete Port ausgegeben.
Nach der Konfiguration durch apxconf.sql kann mit dem Listener Status-Kommando
$ lsnrctl statusgeprüft werden ob der Port aktiv ist. Es sollte eine Zeile ähnlich der folgenden
$ (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=...)(PORT=8080))(Presentation=HTTP)(Session=RAW))mit aufgeführt werden.
Um bsp. PL/SQL Prozeduren über den PL/SQL Embedded Gateway zugänglich zu machen, benötigt man außerdem einen freigeschalteten
SQL> alter user ANONYMOUS account unlockANONYMOUS Benutzer.
Des Weiteren wird ein Database Access Descriptor (DAD) benötigt. Ein DAD übernimmt in etwa die Arbeit wie mod_plsql für den Apache. Sozusagen ein Servlet für den XML DB HTTP Listener. Unter http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_web.htm im Abschnitt Table 10-2 Mapping Between mod_plsql and Embedded PL/SQL Gateway DAD Attributes sieht man zum Vergleich eine Gegenüberstellung der DAD und mod_plsql Attribute. Ein DAD wird später durch einen Teil in der URL repräsentiert bzw. angesprochen. Mit
SQL> EXEC DBMS_EPG.CREATE_DAD('PL_SQL', '/plsql/*');
erstellt man ein DAD mit der Bezeichnung PL_SQL und dem URL-Teilpfad /plsql/.
Damit der ANONYMOUS Benutzer für das DAD als eine Art “Schnittstelle” zwischen der DB und dem DAD zu fungieren kann, stellt man mit
SQL> EXEC DBMS_EPG.SET_DAD_ATTRIBUTE('PL_SQL', 'database-username', 'ANONYMOUS');
den ANONYMOUS Benutzer für das DAD ein.Ab hier wäre der PL/SQL Embedded Gateway grundlegend konfiguriert. Um nun eine Prozedur eines Benutzers öffentlich über den PL/SQL Embedded Gateway zur Verfügung zu stellen, muß die Prozedur für PUBLIC per
SQL> GRANT execute on PROZEDUR_NAME to public;die Ausführbarkeit dieser Prozedur erlaubt werden. Wird in dieser Prozedur auf andere Objekte zugeriffen, müssen auch für diese die entsprechenden Rechte (bsp. für Tabellen GRANT select on TABELLEN_NAME to public) vergeben werden. Erst anschließend ist nach folgenden URL-Schema
http://www.domain.de/plsql/objekt_inhaber.objekt_namedas Objekt aufrufbar.
Fazit
Der PL/SQL Embedded Gateway ist eine einfache Methode um datenbanknah Objekte oder APEX-Applikationen per Browser ausführbar zu machen. Es entfällt die umfangreiche Konfiguration eines Apache Webservers. Auch sichere Verbindungen per SSL sind möglich. Benötigt man keine Sonderfunktionen á la URL-Umschreibung (mod_rewrite) oder einen Auslagerung des Webserver (Perormanz-und Sicherheitsaspekte) und Ähnliches, dann reicht ein PL/SQL Embedded Gateway für die meisten Fälle aus.Hinweis
Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.Weiterführende Literatur
empfehlenswert sind folgende Bücher:- Oracle APEX und Oracle XE in der Praxis von Dietmar Aust, Jens-Christian Pokolm und Denes Kubicek
- Oracle 10g für den DBA: Effizient konfigurieren, optimieren und verwalten von Johannes Ahrends, Dierk Lenz, Patrick Schwanke, und Günther Unbescheid
- Oracle 11g: Das umfassende Handbuch von Lutz Fröhlich

Sonntag, 21. März 2010 22:53
Kurz aber gut. Greetz Moppro
Sonntag, 21. März 2010 22:55
Hallo, wäre klasse, wenn noch ein Beitrag zur Installation von APEX 3.0.1 ergänzt würde. Danke und Grüße nach Köln