Tuesday 30 May 2017

Oracle Xmltype Store As Binary Optionen


Ich verwende XMLType Spalte in einigen meiner Oracle-Datenbanktabelle. Früher (in 11.2.0.2) ist der voreingestellte Lagertyp CLOB. Also, wenn Sie eine Abfrage für die XMLType-Spalten ausgeben, kann ich den Inhalt der Spalte als XML-String sehen. Aber wenn ich alle Tische ablegen und neu erstellen und einige Daten einfügen, konnte ich den Inhalt der XMLType-Spalten nicht abrufen. Es zeigt den XMLType im Cloumn-Wert einfach an. Ich habe Zweifel daran, ob der Speichertyp in BINARY XML eingehängt ist. So lese ich die folgende Änderungserklärung aus: Bitte beachten Sie, dass in der Tabelle bereits einige Daten vorhanden sind. Event, nachdem ich eine Zeile gelöscht und eingefügt habe, wird der Inhalt als XMLType angezeigt. Ich verwende SQL-Entwickler-UI-Tool. Kann jemand einen Weg vorschlagen, um dieses Problem zu beheben Ok, jetzt haben wir beschlossen, dass wir den Inhalt der XMLType-Spalte als SECURE FILE BINARY XML speichern werden. So haben wir eine Tabelle wie folgt: Die XMLType colum wird als SYS. XMLType im SQL-Entwickler angezeigt. So wie bekomme ich den Inhalt der binären XML SELECT x. ID, x. Vid, x. details. getCLOBVal () FROM XMYTYPETESTx wo x. ID100000 Die obige Abfrage funktioniert für mich endlich. Die Oracle Dokumentation behauptet, dass es XMLType mehr speichert Kompakt als BINARY XML als als CLOB. Aber wie finde ich heraus, wie viel Platz von der binären xml genommen wird. Also, vsize scheint die Größe einer Art von Zeiger oder LOB Locator zu sein, und getclobval entpackt das binäre XML in Text. Aber was ist mit der Speichergröße der binären XML selbst Bitte helfen, die Tischgröße ist 340GB, also lohnt es sich, in die Speicheroptionen zu schauen. Fragte am 15. Juli um 17:41 Nun, ein Segment hat nichts mit einer Reihe als solche zu tun. Ein Segment ist entweder eine Tabelle, Tabellenpartition, Index, LOB. Das Wichtigste ist, mehr als 4k in ihm zu speichern, so dass dein lob won39t gespeichert werden quotin linequot, was bedeutet, innerhalb der eigentlichen Datenbank-Block der Zeile selbst, sondern ist in einem Zitat linequot LOB Segment gespeichert. Ndash gvenzl Jul 22 14 um 13:00 Rep-Ausgabe, nicht erlaubt, Kommentare zu schreiben, die Sie zwischen Fragen sagen wollten, wie ich verstand. Die einzige Ähnlichkeit ist Speicherplatz Problem, dachte, es könnte hilfreich sein, für Vermutung Schätzung. Sie haben nicht erwähnt, welche Art von Daten Sie als bXML speichern werden. Entpackt das binäre XML in Text Wenn reines XML dann hängt davon ab, welchen Kompressor du verwenden wirst. Normalerweise wird lzmagzip für die binäre Kompression verwendet. Vielleicht schreibe ich über zu offensichtliche Dinge, aber das ist alles, was ich kenneOptionen für Langsame Performance Parsing Large XML - Teil 3 Das letzte Stück zu diesem Kapitel. In meinem vorherigen Beitrag Optionen für langsame Leistung Parsing Large XML - Teil 2. Ich zeigte, wie die Registrierung eines Schemas und mit diesem Prozess erstellen eine Tabelle könnte verwendet werden, um die Parsing-Geschwindigkeit von XML im Vergleich zu analysieren, dass XML über PLSQL zu erhöhen. Jetzt werde ich sehen, ob mit einem Tisch ohne ein zugehöriges Schema wird jeder Unterschied auf die Parsinginserting Geschwindigkeiten. Ich habe wieder den folgenden Codeblock benutzt, um meine Tests auszuführen. Der einzige Unterschied, den ich geändert habe, war die CREATE TABLE-Anweisung für LOADTEMPRESULT. Die folgende Tabelle fasst die verschiedenen CREATE TABLE-Anweisungen, die ich verwendet habe, und die daraus resultierenden Zeiten, wobei TEMP TIME die Ausgabe für INSERT INTO TEMP TIME in Sek. Und TIME ist die Ausgabe für INSERT INTO TIME in sec: CREATE TABLE loadtempresult von XMLTYPE CREATE TABLE loadtempresult Von XMLTYPE XMLTYPE STORE AS BASICFILE CLOB CREATE TABLE loadtempresult von XMLTYPE XMLTYPE STORE AS SECUREFILE CLOB CREATE TABLE loadtempresult von XMLTYPE XMLTYPE STORE AS BASICFILE BINARY XML CREATE TABLE loadtempresult von XMLTYPE XMLTYPE STORE AS SECUREFILE BINARY XML Wie ich mit 11.1.0.6 das Standardverhalten verwende Für diese Version von Oracle ist es, XMLTypes als CLOB zu speichern. Dies wird durch die Tatsache bestätigt, dass die erste Zeile (Standard-Speicher) am engsten mit der zweiten Zeile (expliziter Speicher) übereinstimmt. Basierend auf den Ergebnissen ist es leicht zu sehen, dass auch die Erstellung einer XMLType-Tabelle (oder einer XMLType-Spalte), in der der XMLType als BINARY XML gespeichert ist, einen Blick wert ist, wenn die Validierung nicht benötigt wird. Ich werde nicht in eine Diskussion über die Unterschiede zwischen BASICFILE und SECUREFILE gehen, aber die Highlights, was SECUREFILE bietet, finden Sie bei LOB Features eingeführt in Oracle Database 11g Release 1. Oracle empfiehlt, dass SECUREFILE verwendet werden, wie ich abgeholt habe von Das XML DB Forum auf OTN. Um die Ergebnisse aus den vorherigen zwei Threads zu diesem Thema wiederzugeben, hat die Verwendung von XMLTable in einer SQL-Anweisung, um eine PLSQL XMLType-Variable zu analysieren, 1032 Sekunden (16 Minuten). Mit PLSQL zu durchlaufen jeden Knoten in der XML und analysieren die Informationen aus und dann INSERT, dass in eine Tabelle dauerte 4 Sekunden. Die Verwendung eines registrierten Schemas und der zugehörigen Tabelle dauerte 0,5 Sekunden. Für den gegebenen Testfall verwendete ich (ca. 2100 Zeilenknoten im XML) auf dem System, das ich verwendete (11.1.0.6 auf einem RedHat OS), eine Schemaregistrierung, die eine zugehörige Tabelle erstellt, die gerade mit einem Binary XML XMLType umrandet ist Basierte Tabelle bei 0,87 Sekunden. Dies sollte auf die zusätzlichen Informationen zurückzuführen sein, die Oracle über das aus dem Schema basierende XML kennt. Da dies auch die erste Version war, die BINARY XML bestand, könnte es teilweise auch auf diese Tatsache zurückzuführen sein. Vielleicht, wenn ich Zugang zu einer neueren Version von Oracle bekomme, könnte ich diese Theorie testen.1 Kommentar: Es ist eine sehr nützliche Information über binäre Optionen, die für die unerfahrenen Händler sehr informativ sein werden. Heutzutage wird der binäre Optionshandel sehr beliebt und bekommt sehr viel Geschwindigkeit in der internationalen Wirtschaft. Lesen Sie mehrBinäre XML-Datenspeicherung in 11g Oracle 11g Neue Funktionen Tipps In früheren Versionen von Oracle waren zwei Optionen für die Erweiterung der XML-Speicheroptionen verfügbar: unstrukturiert oder CLOB und Speicher und strukturiert oder schema-basiert. In Oracle 11g wurde binäres XML als neue Speicheroption hinzugefügt. Unstrukturierte Speicherung behandelt ein XML-Dokument als großes Objekt und speichert die Datei in der Datenbank, ohne sich des Inhalts bewusst zu sein. Diese Option hat die beste Einfüge - und Löschleistung, aber der schlechteste relationale Zugriff und den Verbrauch von Speicherplatz. Der strukturierte Speicher erfordert eine vorherige Registrierung des XML-Schemas und fügt ein XML-Dokument in eine Objekt-relationale Struktur ein. Diese Speicheroption hat die beste Abfrageleistung und Speicherplatzverbrauch, aber die höchsten Kosten bei der ersten Einfügung. Diese hohen Kosten werden verursacht, weil beim Einfügen das Dokument zerrissen und in Datenbankobjekten gespeichert wird, die bei der Registrierung des XML-Schemas erstellt wurden. Binary XML, die neue Speicheroption, die in 11g eingeführt wurde, speichert das Dokument in einem Post-Parse-Binärformat, das speziell für XML entwickelt wurde. Diese Option wird wahrscheinlich die beste Wahl für die meisten XML-Anforderungen sein. Der zusätzliche Binärspeicher bietet eine Einfügungsleistung, die mit einer unstrukturierten Speicherung vergleichbar ist, aber eine Abfrage - und Speicherplatzleistung, die mit einer strukturierten Speicherung vergleichbar ist. Im Gegensatz zur strukturierten Speicherung sind die Vorteile von binärem XML nicht von der Schemaregistrierung abhängig. Dies ist aufgrund der Möglichkeit, ein binäres XML-Schema zu registrieren, um Schema-basierte binäre XML-Tabellen zu haben. Es bleibt jedoch eine Einschränkung, dass ein registriertes XML-Schema nicht zwischen einer binären XML - und einer Objekt-relationalen Tabelle geteilt werden kann. Die beste Strategie bei der Auswahl, wie man XML-Inhalte verwalten kann, ist, zuerst die Binärspeicheroption zu versuchen und zu bewerten, ob die Leistung akzeptabel ist. Wenn die relationale Zugriffsleistung nicht akzeptabel ist, dann versuchen Sie die strukturierte Speicheroption. Der Grund dafür, dass der Binärspeicher bevorzugt ist, ist, dass er einfach zu bedienen ist und die geringste Wartung erfordert, da eine Schema-Registrierung nicht erforderlich ist. Binäre XML-Typ-Spalten sind auch in Nicht-XMLType-Tabellen einfacher zu verwenden, da die Leistung nicht von der Erstellung von Indizes abhängig ist. Um den Binärspeicher zu verwenden, muss die XML-Tabelle mit der folgenden Syntax erstellt werden: SQLgt CREATE TABLE BINARYXMLTABLE XMLType XMLTYPE STORE AS BINARY XML 2 Betrachten Sie das folgende XML-Dokument für Auftragstransaktionen: ltxml versionquot1.0quotgt ltordergt ltcustomergt ltnamegtCustomer ABCltnamegt ltccNumgt1234123412341234ltccNumgt ltcustomergt ltorderLinesgt ltitemgt ltitemidgt108ltitemidgt ltitemnamegtORACLE 11G NEUE FEATURES BOOK ED1.0ltitemnamegt ltquantitygt1ltquantitygt ltunitPricegt38.00ltunitPricegt ltitemgt ltitemgt ltitemidgt109ltitemidgt ltitemnamegtORACLE TUNING GUIDE ED1.0ltitemnamegt ltquantitygt1ltquantitygt ltunitPricegt22.00ltunitPricegt ltitemgt ltorderLinesgt ltreceiptgt ltsubtotalgt60.00ltsubtotalgt ltsalesTaxgt4.80ltsalesTaxgt lttotalgt64.80lttotalgt ltreceiptgt ltordergt einsetzen dieses Dokument in die binäre XML-Tabelle unter Verwendung der folgenden Syntax: SQLgt in BINARYXMLTABLE-Werte einfügen (XMLTYPE (BFILENAME (XMLDIR, testdocument. xml), nlscharsetid (AL32UTF8))) Nach dem Einfügen steht das Dokument sofort für den relationalen Zugriff zur Verfügung. SELECT extractValue (value (b), ordercustomername) customername, extractValue (value (d), itemitemid) itemid, extractValue (Wert (d), itemquantity) Menge, extractValue (Wert (d), itemunitPrice) unitprice, extractValue (Wert (b ), Additiptsubtotal) subtotal, extractValue (Wert (b), orderreceiptsalesTax) salesTax, extractValue (Wert (b), orderreceipttotal) Summe aus BINARYXMLTABLE a, TABLE (XMLSequence (Extract (objectvalue, order))) b, TABELLE (XMLSequence (Auszug (Wert (b), orderorderLines))) c, TABELLE (XMLSequence (Auszug (Wert (c), orderLinesitem))) d KUNDENSPEZIFISCHER ITEMID MENGE UNITPRICE SUBTOTAL SALESTAX TOTAL -------------- - ------ -------- ---------- -------- -------- ------ Kunden ABC 108 1 38.00 60.00 4.80 64.80 Kunde ABC 109 1 22.00 60.00 4.80 64.80 Wie oben gezeigt, ändert sich die Syntax für den relationalen Zugriff auf eine binäre XML-Tabelle nicht von anderen Speicheroptionen. Dies ist ein Auszug aus dem neuen Buch Oracle 11g New Features. Expert Guide to the Wichtige neue Features von John Garmany, Steve Karam, Lutz Hartmann, V. J. Jain, Brian Carr. Sie können es direkt aus dem Verlag für 30 aus kaufen. Burleson ist das amerikanische Team Hinweis: Diese Oracle-Dokumentation wurde als Support - und Oracle-Trainingsreferenz für den Einsatz durch unsere DBA Performance Tuning Beratungsfachleute erstellt. Fühlen Sie sich frei, Fragen zu unserem Oracle-Forum zu stellen. Überprüfen Sie die Erfahrung Jeder, der die Dienste eines Oracle-Support-Experten in Erwägung zieht, sollte selbstständig ihre Anmeldeinformationen und Erfahrungen untersuchen und sich nicht auf Werbung und selbst verkündeten Fachwissen verlassen. Alle legitimen Oracle-Experten veröffentlichen ihre Oracle-Qualifikationen. Errata Oracle-Technologie ändert sich und wir bemühen uns, unsere BC Oracle Support-Informationen zu aktualisieren. Wenn Sie einen Fehler finden oder einen Vorschlag zur Verbesserung unserer Inhalte haben, würden wir uns über Ihr Feedback freuen. Nur E-Mail: und die URL für die Seite einfügen. Das Oracle der Datenbankunterstützung Copyright-Kopie 1996 - 2016 Alle Rechte vorbehalten von Burleson Oracle reg ist das eingetragene Warenzeichen der Oracle Corporation.

No comments:

Post a Comment