|
Ordner und Dateien: Das virtuelle Dateisystem der Datenbank nutzen
Wussten Sie schon, dass die Oracle-Datenbank mit einem vollständigen
virtuellen Dateisystem ausgestattet ist?
Wenn Sie OracleXE nutzen, kennen Sie es bereits. Die statischen Dateien und Bilder
von Application Express werden dort gespeichert; außerdem wird der
HTTP-Zugang zu diesem Dateisystem als Webserver genutzt.
Allerdings können Sie das Dateisystem (nicht nur mit OracleXE, sondern
auch mit allen anderen Datenbankeditionen) auch selbst nutzen. Neben dem
HTTP-Zugang steht auch ein FTP-Server zur Verfügung. In diesem Tipp
erfahren Sie mehr über das virtuelle Dateisystem der Datenbank und wie
Sie es nutzen können.
Hintergrund
Das virtuelle Dateisysten wurde zusammen mit der XML DB, also der XML-Technologie
in der Oracle-Datenbank eingeführt. Daher wird es häufig auch als
XML DB Repository
bezeichnet. Auch hier wird es von nun an so genannt.
Es können jedoch nicht nur XML-Dokumente, sondern alle möglichen
Dateitypen gespeichert werden.
Nützlich ist es überall dort, wo eine Hierarchie von Verzeichnissen und Dateien
(eben wie in einem Dateisystem) benötigt wird, die Inhalte selbst jedoch in der
Datenbank gespeichert werden sollen. Natürlich kann man dies auch mit eigenen
Tabellen selbst erstellen, das XML DB Repository stellt die Funktionalität
jedoch fertig und sofort nutzbar bereit.
Vorbereitungen
Das XML DB Repository selbst ist nach einer Standard-Installation der Datenbank
sofort vorhanden, es sind keine besonderen Schritte erforderlich. Aus Sicherheitsgründen
sind die FTP- und HTTP-Zugänge standardmäßig jedoch abgeschaltet. Zunächst werden
wir diese also aktivieren. Sie benötigen DBA-Rechte auf der Datenbank, um die
folgenden Schritte durchzuführen.
Starten Sie auf dem Datenbankserver
SQL*Plus , melden Sie sich als
SYS an und starten
Sie das Skript
$ORACLE_HOME/rdbms/admin/catxdbdbca.sql.
Daraufhin sollten Sie die folgende
Bildschirmausgabe erhalten. Geben Sie, wie hier dargestellt, einen TCP/IP-Port für
FTP und HTTP ein. Wenn Sie einen der Zugänge oder beide abschalten möchten, geben Sie
Null (0) als Port an.
Wenn das Skript durchgelaufen ist, können Sie mit einem Aufruf von
lsnrctl status prüfen, ob die Ports nun geöffnet sind.
Erste Schritte
Testen Sie das ganze nun mit einem FTP-Client Ihrer Wahl. Melden Sie sich mit
einem Datenbank-User an, wechseln Sie in den Ordner public,
legen Sie dort einen
neuen Ordner APEX-Test an und laden Sie ein paar Dateien hoch.
Natürlich funktionieren auch grafische FTP-Clients. Die folgende Abbildung 1
zeigt die Ansicht auf den gleichen Ordner mit dem Windows Explorer.
Abbildung 1: Zugriff auf das XML DB Repository mit dem Windows Explorer
Und natürlich können die Dateien über den HTTP-Zugriff einfach per
Browser angesprochen werden. Die URL für das eben hochgeladene Bild
Tegernsee01.JPG lautet dann
http://[host]:8080/public/APEX-Test/Tegernsee01.jpg.
Insofern eignet sich das XML DB Repository sehr gut, um bspw. HTML-Hilfetexte
zu speichern. Die Verknüpfung mit Hyperlinks kann in gewohnter Manier
erfolgen, da das XML DB Repository wie ein Dateisystem arbeitet.
Nutzung mit einer APEX-Anwendung
Nun erfahren Sie, wie Sie die Ordnerstruktur und die hochgeladenen
Dateien in einer APEX-Anwendung betrachten können. Erstellen Sie
zunächst eine leere Anwendung mit mindestens einer leeren Seite - in diese werden
Sie nun eine Sicht auf die Verzeichnisse des XML DB Repository platzieren.
Zum Zugriff auf das XML DB Repository mit SQL stehen Ihnen einerseits die
View RESOURCE_VIEW und andererseits
das PL/SQL-Paket DBMS_XDB zur Verfügung
Navigieren Sie in den SQL Workshop und setzen Sie dort folgende Query ab:
Man sieht dann dieser Abfrage sehr gut, dass das XML DB Repository mit der
XML DB eingeführt wurde - Die Metadaten werden mit Hilfe der XML-Funktionen
EXTRACT,
EXTRACTVALUE oder
EXISTSNODE abgefragt.
Die zweite Spalte ermittelt zu jedem Pfad den Elternpfad - das ist wichtig, denn
in die APEX-Anwendung soll die Ordnerhierarchie als Baumstruktur dargestellt werden. Die
WHERE-Klausel sorgt außerdem dafür, dass nur Ordner angezeigt werden.
Das Ergebnis sollte in etwa wie in Abbildung 2 aussehen. Erzeugen Sie diese
Abfrage anschließend als View und geben Sie dieser den Namen
XDB_FOLDERS.
Abbildung 2: Abfrage der Ordnerstruktur des XML DB Repository im SQL Workshop
Erzeugen Sie nun auf einer Application Express-Seite eine neue Baumstruktur. Navigieren
Sie dazu zu den Gemeinsamen Komponenten,
dort zu Baumstrukturen und klicken dort
auf Erstellen. Im folgenden sind nur die
wichtigsten Dialoge aufgeführt, in den
anderen können Sie die Einstellungen auf dem jeweils vorgegebenen Standard belassen.
Abbildung 3: Baum erstellen: Benennung, initiale Anzahl der Ebenen und Startelement
Geben Sie Ihrem Baum einen Namen (hier: T_XDB_FOLDERS), legen
Sie fest, wieviele
Hierarchieebenen initial aufgeklappt werden sollen und dass die "Baum-Wurzel"
hier statisch ist.
Abbildung 4: Baumwurzel festlegen
Die Wurzel des Baums ist das Verzeichnis "/".
Abbildung 5: Datenbasis für den Baum festlegen
Die Daten für den Baum kommen aus vorhin erzeugten der View
XDB_FOLDERS.
Abbildung 6: Hierarchie-Beziehung festlegen
Die Ordner-Hierarchie bestimmt sich durch die Spalten
PATH und PARENT_PATH
in der View XDB_FOLDERS. Im Moment werden
noch keine Links hinzugefügt.
Wählen Sie die restlichen Einstellungen nach Geschmack aus oder belassen Sie sie
bei den vorgegebenen Standards. Nach Erstellung sollte Ihr Baum in etwa wie in
Abbildung 7 aussehen.
Abbildung 7: Das vorläufige Ergebnis ... der Baum
Sie sehen, dass der Baum die Ordnerhierarchie wie im FTP-Client wiedergibt;
als Nächstes erweitern wir die Seite um die Darstellung der Dateien, die sich
im jeweiligen Ordner
befinden und eine Download-Möglichkeit.
Erstellen Sie auf der gleichen Seite ein
ausgeblendetes Element
PX_FOLDER und
einen Bericht mit folgender SQL-Abfrage:
Navigieren Sie nun zu den Eigenschaften des Baums und ändern Sie die SQL-Abfrage
wie in Abbildung 8 dargestellt um - dadurch wird jeder Ordner zu einem Link; ein
Klick darauf verzweigt auf dieselbe Seite, füllt das Element
PX_FOLDER, wodurch
der Bericht die Dateien dieses Folders anzeigt.
Abbildung 8: SQL-Abfrage des Baums ändern: Link hinzufügen
Positionieren Sie den Bericht noch und passen Sie das Template an. Wenn Sie
die Seite starten, sollte das Ergebnis in etwa wie in Abbildung 9 aussehen.
Abbildung 9: Das Ergebnis: Ordner-Baum und Dateien des jeweiligen Ordners
Nun geht es daran, die Inhalte einer Datei anzuzeigen. Navigieren Sie zunächst
zu den Gemeinsamen Komponenten , dort
zu den Anwendungselementen und erstellen Sie ein neues
Anwendungselement FILE_ID.
Navigieren Sie anschließend zu den Anwendungsprozessen
und erstellen Sie einen neuen Anwendungsprozess mit Namen
Zeige Datei. Wählen Sie
einen Bedarfsgesteuerten Prozeß (Abbildung 10) ...
Abbildung 10: Bedarfsgesteuerten Anwendungsprozeß erzeugen
... mit folgendem PL/SQL-Code:
Navigieren Sie anschließend wieder zu den Attributen des vorhin erzeugten Berichts.
Verstecken Sie als erstes die Spalte RESID; diese
wird nur für den nun
folgenden Link benötigt und soll nicht dargestellt werden. Klicken Sie dann auf
das Edit-Symbol der Spalte
FILENAME ...
Abbildung 11: Berichtsspalte FILENAME bearbeiten
... und hinterlegen Sie hier bei Link einen Verweis auf folgende
URL :
Abbildung 12: Link hinterlegen ... Das Verweis-Ziel ist "URL"
Starten Sie die Seite nun neu - navigieren Sie durch den Baum, klicken
Sie auf einen Ordner und dann auf eine der Dateien. Das Ergebnis sollte
wie in Abbildung 13 aussehen.
Abbildung 13: Das Ergebnis: Anzeige der hochgeladenen Datei
Nun haben Sie zusätzlich zu den standardmäßig vorhandenen Zugriffen via
FTP und HTTP auch einen Application Express-Zugang zum XML DB Repository.
Bis hierhin haben Sie eine Möglichkeit kennengelernt, Dateien auch per FTP in
die Datenbank hochzuladen und dann von APEX aus zu nutzen. Natürlich sind
auch weitergehende
Möglichkeiten denkbar: So können die Inhalte selbstverständlich aus dem
Repository in eigene Tabellen kopiert oder Inhalte per APEX-Dialog ins
Repository hochgeladen werden. Mehr dazu in der nächsten Ausgabe.
Zurück zur Community-Seite
|