Oracle XML DB für DBAs
von Ulrike Schwinn, Oracle Deutschland B.V. & Co. KG
Seit Oracle 9i Release 2 gibt es spezielle XML Features in der Datenbank, die unter dem Namen Oracle XML DB zusammengefasst sind. Oracle XML DB (kurz XDB) steht dabei in jeder Edition (auch Standard und Express Edition) ohne zusätzliche Installation zur Verfügung. Beispiele für Features in der XML DB sind:
- Bereitstellung von relationalen Daten im XML Format
- Effizientes Abfragen und Weiterverarbeiten von XML
- Suche innerhalb eines XML Dokuments oder einer Anzahl von XML Dokumenten
- Native Oracle XML DB Web Services
- Zugriffe nicht nur über SQL sondern auch über FTP, WEBDAV und HTTP
- Standardkonformität (W3C, SQL:2003, SQL/XML 2006)
Mit jedem neuen Oracle Datenbank Release werden zusätzlich wichtige XML DB Erweiterungen im Datenbankumfeld implementiert, die die XML DB für den Datenbankeinsatz mittlerweile in Oracle Database 12c obligatorisch macht.
Bei den XML DB Features handelt es sich übrigens nicht nur um Entwickler Features, sondern auch um Funkionen, die für DBAs interessant sind. So können beispielsweise der Zugriff auf Dateien im ASM über die XML DB Protokolle ermöglicht werden, das Embedded PL/SQL Gateway für APEX eingesetzt oder Packages wie UTL_HTTP, UTL_MAIL usw. mit speziellen XML Access Control Lists (kurz ACL) abgesichert werden.
Was ist zu tun, um die XML DB zu aktivieren? Wie sieht die Konfiguration aus? Wie kann man Objekte in der XML DB monitoren? Kann man die Standard Werkzeuge wie Enterprise Manager zur Administration einsetzen? Gibt es spezielle Rollen bzw. Privilegien, die ein Entwickler zur Nutzung der XML DB benötigt? Der Tipp beantwortet diese Fragen und illustriert einige interessante Features an Beispielen. Die Beispiele wurden dabei in einer 11.2.0.3 Umgebung bzw. in einer 12.1.0.2 Umgebung durchgeführt.
Zur leichteren Lesbarkeit ist dieser Tipp in folgende Abschnitte unterteilt:
Installation
Die erste Frage, die sich stellt, ist nach dem Stand der Installation. Ein einfache Abfrage auf DBA_REGISTRY gibt die Antwort darauf.
Liefert das Ergebnis NO ROWS, ist die XML DB nicht installiert und kann nachträglich mit dem Database Configuration Assistant oder dem Katalog Skript catqm.sql aus dem Verzeichnis $ORACLE_HOME/rdbms/admin installiert werden. Wie der folgende Ausschnitt zeigt, werden bei der Verwendung von catqm.sql Tablespace Einstellungen und das Passwort für den User XDB abgefragt. Ausserdem wird über die Nutzung von SecureFiles entschieden.
Die Installation dauert nur einige Minuten und besteht hauptsächlich aus der Erzeugung des XDB Schemas mit allen notwendigen Packages und Views. Möchte man hingegen eine De-Installation durchführen, kann das Skript catnoqm.sql verwendet werden.
Gibt es Probleme bei der Installation der XDB kann man die MOS Note 1292089.1 zurate ziehen, die ausführlich die Installation und De-Installation für alle Datenbank Releases beschreibt.
Hinweis: Oracle XML DB gehört seit der Version 12c zu den Standardkomponenten der Oracle Datenbank. Falls während des Upgrades keine XDB Installation gefunden wird, wird automatisch eine Installation durchgeführt.
Konfiguration der Standard Protokolle
Möchte man die Standard Protokolle FTP, HTTP(S) (und die Erweiterung WEBDAV) nutzen, beispielsweise im ASM Kontext (siehe auch Tipp Zugriff auf Dateien in ASM) oder weil die Entwickler diesen Zugriff benötigen, kann ein zusätzlicher einfacher Konfigurationsschritt zur Festlegung der Ports erforderlich sein.
Möchte man die Ports ändern oder initial festlegen, eignet sich die Nutzung des Package DBMS_XDB bzw. ab Oracle Database 12c der Einsatz von DBMS_XDB_CONFIG.
Monitoren lässt sich die Konfiguration mit folgendem Aufruf.
Erhält man den Wert 0, bedeutet dies, dass das Protokoll nicht konfiguriert ist.
Alternativ kann das Skript catxdbdbca.sql aus dem Verzeichnis $ORACLE_HOME/rdbms/admin verwendet werden, das die Konfiguration beider Protokolle vornimmt.
Bitte beachten Sie den Hinweis aus dem PL/SQL Types and References Handbuch: All subprograms in the DBMS_XDB package are deprecated with Oracle Database 12c and substituted by the alternative subprograms with the same names in either the DBMS_XDB_CONFIG package or the DBMS_XDB_REPOS package as listed ...
Die XML DB registriert die FTP und HTTP(S) Services dynamisch mit dem lokalen Listener, der im LOCAL_LISTENER Parameter spezifiziert wurde. Die Überprüfung kann somit mit lsnrctl status erfolgen. Die dynamische Registrierung stoppt nach der Änderung oder Festlegung der Ports automatisch den FTP/HTTP(S) Service der alten Port Nummern und startet erneut mit den neuen Port Einstellungen, ohne den Datenbank Betrieb zu beeinflussen.
Das Ergebnis lässt sich im Enterprise Manager nachprüfen oder wie folgt mit lsnrctl status.
Im Enterprise Manager findet man diese Information im Bereich "XML Database" unter dem Link "XDB Configuration".
Privilegien und Rollen
Die Standardprivilegien für Entwickler sind normalerweise zur Nutzung der XML DB völlig ausreichend. Um zum Beispiel eine Tabelle vom Typ XMLTYPE anzulegen, wird das CREATE TABLE Privileg benötigt. Allerdings gibt es einige vordefinierte Rollen, die unter Umständen zusätzlich vergeben werden müssen. Es handelt sich hauptsächlich um 4 Rollen, die hinzugefügt wurden: XDBADMIN, XDB_WEBSERVICES, XDB_WEBSERVICES_OVER_HTTP und XDB_WEBSERVICES_WITH_PUBLIC. Im Wesentlichen handelt es sich um die beiden Funktionen Generierung von XML Schemas und die Verwendung von nativen XML DB Web Services.
Wird eine Schema basierte Speicherung genutzt, müssen XML Schemas registriert werden. Der Entwickler kann standardmässig mit einem speziellen Aufruf XML Schemas registrieren, die lokal - also nur von ihm selbst genutzt werden - können. Die Rolle XDBADMIN hingegen gibt dem Anwender das Recht, ein XML Schema global zu registrieren, damit können auch andere Entwickler von der Registrierung profitieren.
Seit Oracle 11g können native XML DB Web Services verwendet werden, die eine einfache Umsetzung von PL/SQL in Web Services erlauben. Mit den Database Native Web Services kann eine SQL-Abfrage oder PL/SQL-Funktion ohne weiteren Aufwand als SOAP-Style Webservice bereitgestellt werden. Um einen Webservice per SOAP aufrufen zu können, benötigt man nur ein WSDL-Dokument - die "Schnittstellenbeschreibung" für den Web Service - das automatisch von den nativen XML DB Web Services generiert wird. Nötig dazu ist das Einrichten der HTTP Schnittstelle (siehe Kapitel Konfiguration der Standard Protokolle) und das Hinzufügen eines ORAWSV Servlets über ein einfaches Skript (siehe Kapitel 33 Oracle XML DB Developer's Guide). Zur Verwendung ist allerdings die Zuteilung gewisser Privilegien erforderlich:
- XDB_WEBSERVICES erlaubt den Zugriff auf XML DB Web Services über HTTPS
- XDB_WEBSERVICES_OVER_HTTP erlaubt den Zugriff auf XML DB Web Services über HTTP. es wird dann also kein HTTPS benötigt.
- XDB_WEBSERVICES_WITH_PUBLIC erlaubt auch auf Objekte zugreifen, die "nur" über einen "Public" Grant bereitstehen. Ohne diese Rolle muss der Datenbankuser Eigentümer der Objekte sein oder explizite Privilegien haben.
Um eine feingranulare Nutzung von Web Services zu implementieren und dem Prinzip des Least Privilege zu genügen, lohnt es sich einen eigenen Web Service User einzurichten. Dieser erhält dann die Privilegien und Rollen CREATE SESSION, XDB_WEBSERVICES und XDB_WEBSERVICES_OVER_HTTP und zusätzlich die EXECUTE Rechte auf die entsprechenden PL/SQL Objekte. Fertig!
Monitoring und Performance
Wie oben schon erwähnt, besitzt Oracle Enterprise Manager Cloud Control einen Bereich XML Database (siehe Reiter "Schema"), der die Administration und das Monitoring unterstützen kann. Man erhält schnell einen Überblick über die Konfiguration und über spezielle XML Objekte wie XML Schemas und XMLTYPE Objekte. Es ist sogar möglich XML DB typische Aufgaben wie das Generieren von XML Schemas über den Enterprise Manager zu bewerkstelligen. Der folgende Ausschnitt zeigt die Implementierung in Enterprise Manager Cloud Control 12c.
Mit der Einführung der XML DB sind neue Datenbankobjekte und neue Datentypen zur Datenbank hinzugefügt worden. Die Datenbankobjekte werden zusätzlich oder auch ausschliesslich (siehe DBA_XML_TABLES) in diesen speziellen Views gespeichert. So ist zum Beispiel eine Tabelle vom XMLTYPE Typ nicht in DBA_TABLES sondern in DBA_XML_TABLES gelistet. Folgender Code-Ausschnitt zeigt ein kleines Beispiel.
Zusätzlich werden spezielle XML Indizes zur Steigerung der Performance bei XML typischen Abfragen in DBA_XML_INDEXES gespeichert. Möchte man einen Überblick über die speziellen XML DB Objekte erhalten, können folgende Views hilfreich sein.
- DBA_XML_TABLES: alle XMLTYPE Tabellen
- DBA_XML_VIEWS: alle XMLTYPE Views
- DBA_XML_TAB_COLS: Tabellen mit XMLTYPE Spalten
- DBA_XML_INDEXES: alle XML Indizes
- DBA_XML_SCHEMAS: alle XML Schemas
Im Enterprise Manager werden diese Informationen im Bereich "XML Database" gelistet (siehe Screenshot oben). Auch der SQL Developer liefert eine Schnittstelle zur XML DB. Menüpunkte wie "XML Schemas" und "XML DB Repository" geben Einblick in einige XML DB Bereiche.
Die Nutzung von XML DB Features in DBA_FEATURE_USAGE_STATISTICS wird im Gegensatz zu anderen Features und Optionen der Datenbank nur unter einem Eintrag - nämlich XDB - gelistet und kann keinen realistischen Eindruck über die aktuelle Nutzung vermitteln.
Abfragen im XML DB Kontext, d.h. auf XMLTYPE Tabellen und Views oder mit SQL/XML Ausdrücken, werden wie alle Abfragen über eine Analyse des Ausführungsplan ge-tuned. Wichtig zu wissen ist, dass die Wahl der Speicherart und der richtige Einsatz von Indizes entscheidend für die Performance ist. Der XMLTYPE Datentyp lässt nämlich bei der Nutzung drei Arten der Speicherung zu. Ein sorgfältiges Prüfen der Speichermöglichkeiten vorab und der richtige Einsatz kann die Performance späterer Abfragen stark beeinflussen. Das White Paper Oracle XML DB: Choosing the Best XML Type Storage Option for Your Use Case auf OTN gibt einen guten Überblick über den richtigen Einsatz der verschiedenen Speicherarten.
Das häufig genannte XML DB Performance Feature XML Query Rewrite (auch Query Rewrite) stellt eine Optimierung bei Nutzung von XPATH und XQUERY Ausdrücken wie XMLQUERY, XMLTABLE, XMLEXISTS etc. dar. Optimierung bedeutet hier, dass bei der Ausführung keine Rekonstruierung des gesamten XML Dokuments im Memory erforderlich ist - dies würde die Performance nachteilig beeinflussen. Bei der optimierten Nutzung werden dann die entsprechenden Indizes soweit vorhanden genutzt. Ausführungspläne oder spezielle XML Events bzw. Hints können dieses Vorgehen/Verhalten nachweisen oder beeinflussen. Detaillierte Informationen zur Verwendung von XML Indizes und dem XPATH bzw. XML Query Rewrite finden sich im XML Developer's Guide .
Verschiedenes: ACLs, ASM etc.
Wie in der Einleitung schon erwähnt, werden bestimmte Standard Funktionen (unabhängig von den XML Funktionen) der Datenbank auch über die XML DB Features implementiert. Dazu gehören beispielsweise die erweiterten Sicherheits-Einstellungen über die ACLs (kurz für Access Control Lists). Vor Oracle 11g konnten die Packages UTL_SMTP, UTL_TCP, DBMS_LDAP uneingeschränkt verwendet werden. Sie erlaubten einen einfachen Zugriff auf andere Server direkt aus der Datenbank. Ab 11g muss ein expliziter Zugriff über ACLs (Access Control Lists) implementiert werden um den Zugriff zu gewährleisten. Das Package DBMS_NETWORK_ACL_ADMIN dient dazu feingranulare Zugriffe auf bestimmte Hosts und Ports für bestimmte Datenbank Bnutzer einzurichten. Ein gutes Beispiel finden Sie im Tipp Access Control Lists: Schutz vor Missbrauch mächtiger Datenbank-Packages .
Eine weitere Funktion stellt das Kopieren von Dateien via FTP in ASM dar. Die Voraussetzung dazu bildet das XML DB Repository - das nach der Installation zur Verfügung steht. Das XML DB Repository ist eine Art virtuelles Dateisystem, das XML Repository Objekte wie Dateien und Verzeichnisse auf Pfade in einer Hierarchie abbildet. Der Zugriff ist dabei über HTTP oder FTP möglich. Parallel dazu zeigen die Views RESOURCE_VIEW oder PATH_VIEW die Ressourcen in der Datenbankansicht.
In HTTP wird diese Information folgendermassen dargestellt.
Beachten Sie dabei, dass die URL den vorher konfigurierte HTTP Port 2222, den Server Namen sccloud003.de.oracle.com und den Pfad /home/OE enthält. In ASM erscheinen die ASM Dateien standardmässig unter dem virtuellen Verzeichnis /sys/asm. Ein Beispiel dazu findet sich im Tipp Zugriff auf Dateien im ASM .
Hinweis: PATH_VIEW und RESOURCE_VIEW zeigen allerdings keine ASM Objekte an.
Neu mit Oracle Database 12c
Wie in der Einleitung schon angedeutet ist die Installation der XDB in 12c nun obligatorisch. Die Note MOS Note (Doc ID 1516818.1)" New Features in XML Database (XDB) 12.1.0.1.0" beschreibt detailliert die neuen Features. Dort heisst es auch:
Oracle XML DB is now a mandatory component of Oracle Database. You cannot uninstall it, and if Oracle XML DB is not already installed in your database prior to an upgrade to Oracle Database 12c Release 1 (12.1.0.1.0) or later, then it is automatically installed in tablespace SYSAUX during the upgrade. If Oracle XML DB has thus been automatically installed, and if you want to use Oracle XML DB, then, after the upgrade operation, you must set the database compatibility to at least 12.1.0.0.0. If the compatibility is less than 12.1.0.0.0 then an error is raised when you try to use Oracle XML DB.
Verwenden Sie nicht mehr das Package DBMS_XDB, sondern ab Oracle Database 12c nur noch das Package DBMS_XDB_CONFIG. Die Nutzung erfolgt analog zu der ob demonstrierten Verwendung in 11g.
Eine wichtige Anwendung in Oracle Database 12c ist die Verwendung der XMLDB Protokolle im Oracle Enterprise Manager 12c Database Express, die jede Installation einer Oracle Database 12c automatisch beinhaltet.
Darüberhinaus bietet DBMS_XDB_CONFIG noch weitere interessante Funktionen. Da es separate URLs für die CDB (kurz für Container Database) und PDBs (kurz für Pluggable Database) gibt, kann man mit DBMS_XDB_CONFIG.USEDPORT den jeweiligen Port der PDB auflisten. Die Ausgabe erfolgt in XML Format, lässt sich aber einfach umformatieren.
Weitere Funktionen und Informationen zu Oracle Enterprise Manager 12c Database Express erfahren, kann man im Tipp Alles Wichtige rund um Oracle Enterprise Manager 12c Database Express nachlesen.
Folgende Liste zeigt noch einige interessante Erweiterungen in Oracle Database 12c auf:
- Oracle GoldenGate und Oracle Data Guard SQL Apply Support für XMLType
- Parallel DML Support für XMLType
- WebDAV, HTTP und FTP Protokoll Unterstützung für DBFS zu finden unter dem Repository Pfad /dbfs
- XMLIndex Support für Hash Partitioning
Weitere Informationen zur XML DB finden Sie in
Mehr zu diesem Thema bzw. zu weiteren Themen rund um die Datenbank lesen Sie in den nächsten Ausgaben ...
Zurück zur Community-Seite
|