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
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 status
geprü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 unlock
ANONYMOUS 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_name

das 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:

Druckansicht


Autor: admin
Datum: Freitag, 19. März 2010 19:08
Trackback: Trackback-URL Themengebiet: Oracle

Feed zum Beitrag: RSS 2.0 Diesen Artikel kommentieren

2 Kommentare

  1. 1

    Kurz aber gut. Greetz Moppro

  2. 2

    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

Kommentar abgeben