XML-Schnittstellen zum Import und Export von Daten für eine Oracle DB Ein Erfahrungsbericht DOAG 2006
|
|
- Horst Bergmann
- vor 8 Jahren
- Abrufe
Transkript
1 XML-Schnittstellen zum Import und Export von Daten für eine Oracle DB Ein Erfahrungsbericht DOAG 2006 Dr. Wolfgang Braunisch Opitz Consulting GmbH Seite 1
2 Gliederung Anforderungsszenario Lösungsalternativen Realisierte Lösung Technische Hürden, Lösungen und Workarounds Alternative Lösungen Fazit Fragen und Antworten Seite 2
3 Anforderungsszenario: Übersicht DB-Server SFTP SCP Filesystem xsd xml csv Import-Jobs ORACLE-DB xml csv Export-Jobs Seite 3
4 Anforderungsszenario: Schnittstellenformate Importdateien können sowohl im xml-format als auch im csv-format vorliegen Exportdateien müssen im xml-format und im csv-format erzeugt werden Verschiedene Typen von Import- und Exportdateien Unterscheidung nach Speicherort und Namenskonventionen Für xml-dateitypen sind externe Schemata definiert Bestimmte Dateien können recht groß werden (mehrere 100 MB) Seite 4
5 Anforderungsszenario : Schnittstellen xml-dokumente haben i. A. eine hierarchische Struktur: <dokument_knoten> <masterelement_knoten> <masterattribut>wert</masterattribut> <detailelement_knoten> <detailattribut>wert</detailattribut> </detailelement_knoten> <detailelement_knoten> </detailelement_knoten> </masterelement_knoten> <masterelement_knoten> </masterelement_knoten> <\dokument_knoten> Mastertabelle Detailtabelle Seite 5
6 Anforderungsszenario : Schnittstellen xml-dokumente haben i. A. eine hierarchische Struktur: <dokument_knoten> <masterelement_knoten> <masterattribut>wert</masterattribut> <detailelement_knoten> <detailattribut>wert</detailattribut> </detailelement_knoten> <detailelement_knoten> </detailelement_knoten> </masterelement_knoten> <masterelement_knoten> </masterelement_knoten> <\dokument_knoten> Mastertabelle Detailtabelle Seite 6
7 Anforderungsszenario : Schnittstellen xml-dokumente haben i. A. eine hierarchische Struktur: <dokument_knoten> <masterelement_knoten> <masterattribut>wert</masterattribut> <detailelement_knoten> <detailattribut>wert</detailattribut> </detailelement_knoten> <detailelement_knoten> </detailelement_knoten> </masterelement_knoten> <masterelement_knoten> </masterelement_knoten> <\dokument_knoten> Mastertabelle Detailtabelle Seite 7
8 Anforderungsszenario : Schnittstellen veranschaulicht am bekannten EMP-DEPT Beispiel: <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> DEPT EMP Seite 8
9 csv-dokumente haben eine flache Struktur: Anforderungsszenario : Schnittstellen <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> Deptno,, Empno, 10,, 7782, 10,, 7839, 10,, 7934, 20,, 7369, 20,, 7566, 20,, 7788, 20,, 7876, 20,, 7902, 30,, 7499, 30,, 7521, Seite 9
10 csv-dokumente haben eine flache Struktur: Anforderungsszenario : Schnittstellen <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> Deptno,, Empno, 10,, 7782, 10,, 7839, 10,, 7934, 20,, 7369, 20,, 7566, 20,, 7788, 20,, 7876, 20,, 7902, 30,, 7499, 30,, 7521, Seite 10
11 csv-dokumente haben eine flache Struktur: Anforderungsszenario : Schnittstellen <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> Deptno,, Empno, 10,, 7782, 10,, 7839, 10,, 7934, 20,, 7369, 20,, 7566, 20,, 7788, 20,, 7876, 20,, 7902, 30,, 7499, 30,, 7521, Seite 11
12 csv-dokumente haben eine flache Struktur: Anforderungsszenario : Schnittstellen <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> Deptno,, Empno, 10,, 7782, 10,, 7839, 10,, 7934, 20,, 7369, 20,, 7566, 20,, 7788, 20,, 7876, 20,, 7902, 30,, 7499, 30,, 7521, Seite 12
13 Anforderungsszenario: Technische Daten zu Server - OS, DB, Java Datenbankserver OS: LINUX sles9 ORACLE-Datenbank: 10g R1 ( ) Java: Java 1.4 von SUN Seite 13
14 Gliederung Anforderungsszenario Lösungsalternativen Realisierte Lösung Technische Hürden, Lösungen und Workarounds Alternative Lösungen Fazit Fragen und Antworten Seite 14
15 Lösungsalternativen XDK XML-DB SQL PL/SQL Eigenentw. PL/SQL (utl_file) Java Seite 15
16 Lösungsalternativen: XML-DB XML-DB + Sehr mächtig + Speicherung der xml-dokumente in der DB (als xml-dokumente) + Registrierung externer Schemata in der DB + Umfangreiche Funktionalität - Speicherung von xml-dokumenten in der DB war nicht erforderlich - reine Schnittstellenfunktion neben csv Für unser Projekt eher etwas überdimensioniert Seite 16
17 Lösungsalternativen: XDK XDK + Eher an einfachen Entwicklungsansprüchen orientiert + Utilities für Import und Export von xml-dokumenten dbms_xmlstore für Import dbms_xmlquery für Export Für unser Projekt geeignet Seite 17
18 Eigenentwicklung mit UTL_FILE u. ä. Lösungsalternativen: Eigenentwicklung mit UTL_FILE + Verarbeitung zeilenweise möglich Zumindest für Export Grosse Dokumente sind nicht komplett im Hauptspeicher - Komplette xml-logik muss manuell entwickelt werden Keine Nutzung der xml-logik in entspr. Bibliotheken Gefahr unvorhergesehener Probleme Gefahr eines hohen Wartungsaufwandes Keine echte Alternative Seite 18
19 Lösungsalternativen: Java Java - Prozesssteuerung ist überwiegend PL/SQL + Verwendung von Java-Bibliotheken mit einschlägiger xml- Logik möglich Kann in PL/SQL eingebunden werden Kann direkt auf dem Betriebssystem aufgerufen werden DB-Zugriff aus Java heraus möglich Als Ergänzung zu PL/SQL-Funktionalität hilfreich Seite 19
20 Gliederung Anforderungsszenario Lösungsalternativen Realisierte Lösung Technische Hürden, Lösungen und Workarounds Alternative Lösungen Fazit Fragen und Antworten Seite 20
21 Realisierte Lösung: Import CSV-Dateien werden über External Tables importiert Type sql_loader Keine Zwischentabelle => Select direkt auf die Datei Zeilenweise Verarbeitung über Cursor-Loops in PL/SQL Auch MERGE und Minus-Selects möglich XML-Dateien: Umwandlung in die entsprechenden csv-formate ist relativ einfach Seite 21
22 Realisierte Lösung : Übersicht Importdateien csv csv Stylesheet Transformation xml Validierung Importdateien ORACLE-DB External Tables External Tables Relationales Datenmodell ORACLE Scheduler dbms_xmlquery Exportdateien xml Stylesheet Transformation csv Exportdateien Seite 22
23 Realisierte Lösung : Jobsteuerung Prozesssteuerung Regelmäßiges Einpflegen der Importdateien in die Tabellen der ORACLE-DB Regelmäßige Erzeugung von Exportdateien aus Inhalten der Tabellen der ORACLE-DB Verwaltung der Im- und Export-Dateien von außen (scp, sftp, ssh-webserver) Steuerung aus der DB heraus Verwendung von dbms_scheduler Aufruf von PL/SQL-Programmen Java-API für Filesystemzugriffe und OS-Aufrufe (eingebettet in PL/SQL-Wrapper) Seite 23
24 Realisierte Lösung : Import Validierung gegen externe Schemata Validierung der Datei außerhalb der DB => Java XML-Schemata (*.xsd) liegen auf dem Filesystem Aufruf aus PL/SQL heraus (Wrapper) Stylesheet-Transformationen Umwandlung xml - csv vor Import in die DB => Java Stylesheets (*.xsl) liegen auf dem Filesystem Aufruf aus PL/SQL heraus (Wrapper) Seite 24
25 Schematischer Aufbau der xml-stylesheets: <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> Realisierte Lösung : Import <xsl:stylesheet version="1.0 xmlns:xsl=" <xsl:output method="text"/> <xsl:template match= Departments-Employees"> <xsl:text> DeptNo,,EmpNo,,</xsl:text> <xsl:text> </xsl:text> <xsl:for-each select= Dept/Emp"> <xsl:text>""" </xsl:text> <xsl:value-of select="../deptno"/> <xsl:text>""","""</xsl:text> <xsl:value-of select= EmpNo"/> <xsl:text>""" </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet> DeptNo,, EmpNo, 10,, 7782, 10,, 7839, Seite 25
26 Schematischer Aufbau der xml-stylesheets: <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> Realisierte Lösung : Import <xsl:stylesheet version="1.0 xmlns:xsl=" <xsl:output method="text"/> <xsl:template match= Departments-Employees"> <xsl:text> DeptNo,,EmpNo,,</xsl:text> <xsl:text> </xsl:text> <xsl:for-each select= Dept/Emp"> <xsl:text>""" </xsl:text> <xsl:value-of select="../deptno"/> <xsl:text>""","""</xsl:text> <xsl:value-of select= EmpNo"/> <xsl:text>""" </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet> DeptNo,, EmpNo, 10,, 7782, 10,, 7839, Seite 26
27 Schematischer Aufbau der xml-stylesheets: <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> Realisierte Lösung : Import <xsl:stylesheet version="1.0 xmlns:xsl=" <xsl:output method="text"/> <xsl:template match= Departments-Employees"> <xsl:text> DeptNo,,EmpNo,,</xsl:text> <xsl:text> </xsl:text> <xsl:for-each select= Dept/Emp"> <xsl:text>""" </xsl:text> <xsl:value-of select="../deptno"/> <xsl:text>""","""</xsl:text> <xsl:value-of select= EmpNo"/> <xsl:text>""" </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet> DeptNo,, EmpNo, 10,, 7782, 10,, 7839, Seite 27
28 Schematischer Aufbau der xml-stylesheets: <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> Realisierte Lösung : Import <xsl:stylesheet version="1.0 xmlns:xsl=" <xsl:output method="text"/> <xsl:template match= Departments-Employees"> <xsl:text> DeptNo,,EmpNo,,</xsl:text> <xsl:text> </xsl:text> <xsl:for-each select= Dept/Emp"> <xsl:text>""" </xsl:text> <xsl:value-of select="../deptno"/> <xsl:text>""","""</xsl:text> <xsl:value-of select= EmpNo"/> <xsl:text>""" </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet> DeptNo,, EmpNo, 10,, 7782, 10,, 7839, Seite 28
29 Schematischer Aufbau der xml-stylesheets: <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> Realisierte Lösung : Import <xsl:stylesheet version="1.0 xmlns:xsl=" <xsl:output method="text"/> <xsl:template match= Departments-Employees"> <xsl:text> DeptNo,,EmpNo,,</xsl:text> <xsl:text> </xsl:text> <xsl:for-each select= Dept/Emp"> <xsl:text>""" </xsl:text> <xsl:value-of select="../deptno"/> <xsl:text>""","""</xsl:text> <xsl:value-of select= EmpNo"/> <xsl:text>""" </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet> DeptNo,, EmpNo, 10,, 7782, 10,, 7839, Seite 29
30 Schematischer Aufbau der xml-stylesheets: <Departments-Employees> <Dept> <DeptNo>10</DeptNo> <Emp> <EmpNo>7782</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> Realisierte Lösung : Import <xsl:stylesheet version="1.0 xmlns:xsl=" <xsl:output method="text"/> <xsl:template match= Departments-Employees"> <xsl:text> DeptNo,,EmpNo,,</xsl:text> <xsl:text> </xsl:text> <xsl:for-each select= Dept/Emp"> <xsl:text>""" </xsl:text> <xsl:value-of select="../deptno"/> <xsl:text>""","""</xsl:text> <xsl:value-of select= EmpNo"/> <xsl:text>""" </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet> DeptNo,, EmpNo, 10,, 7782, 10,, 7839, Seite 30
31 Realisierte Lösung : Import Performance-Probleme bei Stylesheet-Transformationen Validierung gegen externe Schemata Validerung und Transformation erfolgen aus PL/SQL heraus Mit Hilfe von Java-Utilities Erster Ansatz Erstellung von Java-Programmen für Validierung und Transformation Laden dieser Programme in die DB und erstellen von PL/SQL- Wrappern In den DB-Jobs Aufruf der PL/SQL-Wrapper Seite 31
32 Performance-Probleme: Realisierte Lösung : Import Validierungen und Transformationen dauern mindestens einen Faktor 10 länger als der direkte Aufruf auf dem OS Änderungen an DB-Parametern wie java_pool_size halfen nicht Workaround: Indirekter Aufruf der Java-Programme DB OS PL/SQL- Programm In PL/SQL eingebundenes Java-Programm OS-Befehl (LINUX) Java- Programm begin pr_os_aufruf ('java_programm name_qellxml name_xsl name_zielxml'); end; Seite 32
33 XML-Dokumente erzeugen mit dbms_xmlquery Realisierte Lösung : Export declare v_query_ctx dbms_xmlquery.ctxtype; v_ergebnis_xml clob; begin -- XML-Dokument als CLOB erstellen v_query_ctx := dbms_xmlquery.newcontext ('select deptno, dname, from dept'); dbms_xmlquery.setrowsettag (v_query_ctx, 'Departments-Employees'); dbms_xmlquery.setencodingtag(v_query_ctx, 'iso '); -- v_ergebnis_xml := dbms_xmlquery.getxml(v_query_ctx); dbms_xmlquery.closecontext (v_query_ctx); -- end; CLOB mit UTL_FILE in eine Datei schreiben Seite 33
34 XML-Dokumente erzeugen mit dbms_xmlquery Realisierte Lösung : Export declare v_query_ctx dbms_xmlquery.ctxtype; v_ergebnis_xml clob; begin -- XML-Dokument als CLOB erstellen v_query_ctx := dbms_xmlquery.newcontext ('select deptno, dname, from dept'); dbms_xmlquery.setrowsettag (v_query_ctx, 'Departments-Employees'); dbms_xmlquery.setencodingtag(v_query_ctx, 'iso '); -- v_ergebnis_xml := dbms_xmlquery.getxml(v_query_ctx); dbms_xmlquery.closecontext (v_query_ctx); -- end; CLOB mit UTL_FILE in eine Datei schreiben Seite 34
35 XML-Dokumente erzeugen mit dbms_xmlquery Realisierte Lösung : Export declare v_query_ctx dbms_xmlquery.ctxtype; v_ergebnis_xml clob; begin -- XML-Dokument als CLOB erstellen v_query_ctx := dbms_xmlquery.newcontext ('select deptno, dname, from dept'); dbms_xmlquery.setrowsettag (v_query_ctx, 'Departments-Employees'); dbms_xmlquery.setencodingtag(v_query_ctx, 'iso '); -- v_ergebnis_xml := dbms_xmlquery.getxml(v_query_ctx); dbms_xmlquery.closecontext (v_query_ctx); -- end; CLOB mit UTL_FILE in eine Datei schreiben Seite 35
36 XML-Dokumente erzeugen mit dbms_xmlquery Realisierte Lösung : Export declare v_query_ctx dbms_xmlquery.ctxtype; v_ergebnis_xml clob; begin -- XML-Dokument als CLOB erstellen v_query_ctx := dbms_xmlquery.newcontext ('select deptno, dname, from dept'); dbms_xmlquery.setrowsettag (v_query_ctx, 'Departments-Employees'); dbms_xmlquery.setencodingtag(v_query_ctx, 'iso '); -- v_ergebnis_xml := dbms_xmlquery.getxml(v_query_ctx); dbms_xmlquery.closecontext (v_query_ctx); -- end; CLOB mit UTL_FILE in eine Datei schreiben Seite 36
37 XML-Dokumente erzeugen mit dbms_xmlquery Realisierte Lösung : Export declare v_query_ctx dbms_xmlquery.ctxtype; v_ergebnis_xml clob; begin -- XML-Dokument als CLOB erstellen v_query_ctx := dbms_xmlquery.newcontext ('select deptno, dname, from dept'); dbms_xmlquery.setrowsettag (v_query_ctx, 'Departments-Employees'); dbms_xmlquery.setencodingtag(v_query_ctx, 'iso '); -- v_ergebnis_xml := dbms_xmlquery.getxml(v_query_ctx); dbms_xmlquery.closecontext (v_query_ctx); -- end; CLOB mit UTL_FILE in eine Datei schreiben Seite 37
38 Realisierte Lösung : Hierarchische XML-Strukturen dbms_xmlquery greift nur auf eine Tabelle/View zu Einfache Join-View führt nicht zum gewünschten Ergebnis create view dept_emp_v as select dept.deptno, emp.empno, from dept, emp where emp.deptno = dept.deptno; / <Departments-Employees> <ROW num="1"> <DEPTNO>10</DEPTNO> <EMPNO>7782</EMPNO> </ROW> <ROW num="2"> <DEPTNO>10</DEPTNO> <EMPNO>7839</EMPNO> </ROW> </Departments-Employees> Seite 38
39 Realisierte Lösung : Hierarchische XML-Strukturen dbms_xmlquery greift nur auf eine Tabelle/View zu Einfache Join-View führt nicht zum gewünschten Ergebnis create view dept_emp_v as select dept.deptno, emp.empno, from dept, emp where emp.deptno = dept.deptno; / <Departments-Employees> <ROW num="1"> <DEPTNO>10</DEPTNO> <EMPNO>7782</EMPNO> </ROW> <ROW num="2"> <DEPTNO>10</DEPTNO> <EMPNO>7839</EMPNO> </ROW> </Departments-Employees> Seite 39
40 Realisierte Lösung : Hierarchische XML-Strukturen Master-Detail-Struktur wird aber abgebildet, wenn die Tabelle eine Spalte mit Objektrelationalem Typ enthält, welcher eine Liste mit (Detail)-Objekten enthält (Collection). create or replace type t_emp_obj as object ( empno number (4), ename varchar2 (10), ); / create or replace type t_emp_liste is table of t_emp_obj ; / Seite 40
41 Realisierte Lösung : Hierarchische XML-Strukturen Alternative: View, die den Objekttyp zur Laufzeit bildet: create view dept_emp_v as select deptno, cast (multiset (select empno, from emp where emp.deptno = dept.deptno order by empno ) as t_emp_liste ) as emp from dept; / Seite 41
42 Realisierte Lösung : Hierarchische XML-Strukturen Alternative: View, die den Objekttyp zur Laufzeit bildet: create view dept_emp_v as select deptno, cast (multiset (select empno, from emp where emp.deptno = dept.deptno order by empno ) as t_emp_liste ) as emp from dept; / Seite 42
43 Realisierte Lösung : Hierarchische XML-Strukturen Alternative: View, die den Objekttyp zur Laufzeit bildet: create view dept_emp_v as select deptno, cast (multiset (select empno, from emp where emp.deptno = dept.deptno order by empno ) as t_emp_liste ) as emp from dept; / Seite 43
44 Realisierte Lösung : Hierarchische XML-Strukturen Knotenstruktur kann nur bedingt konfiguriert werden <Departments-Employees> <Dept> <DeptNo>10</Deptno> <Emp> <EmpNo>7782t</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> <Departments-Employees> <ROW num="1"> <DEPTNO>10</DEPTNO> <EMP> <EMP_ITEM> <EMPNO>7782</EMPNO> </EMP_ITEM> <EMP_ITEM> </EMP_ITEM> </EMP> </ROW> <ROW num="2"> </ROW> </Departments-Employees> Seite 44
45 Realisierte Lösung : Hierarchische XML-Strukturen Knotenstruktur kann nur bedingt konfiguriert werden <Departments-Employees> <Dept> <DeptNo>10</Deptno> <Emp> <EmpNo>7782t</EmpNo> </Emp> <Emp> </Emp> </Dept> <Dept> </Dept> </Departments-Employees> <Departments-Employees> <ROW num="1"> <DEPTNO>10</DEPTNO> <EMP> <EMP_ITEM> <EMPNO>7782</EMPNO> </EMP_ITEM> <EMP_ITEM> </EMP_ITEM> </EMP> </ROW> <ROW num="2"> </ROW> </Departments-Employees> Seite 45
46 Realisierte Lösung : Hierarchische XML-Strukturen Knotenstruktur kann nur bedingt konfiguriert werden Lösung: Stylesheet-Transformation In unserem Fall auf dem Filesystem Anlog zur Umwandlung XML-CSV Alternative: direkt im CLOB Verwendung von XDK-Werkzeugen dbms_xmlgen dbms_xmlparser dbms_xslprocessor dbms_xmldom Seite 46
47 Realisierte Lösung : Große Dateien Erzeugte Dateien können einige 100 MB groß werden Speicherung im Hauptspeicher als ein CLOB ist für die vorhandene Systemkonfiguratíon problematisch Vergrößerung des Hauptspeichers, um solche CLOB-Größen zu verkraften, ist angesichts der Projektanforderungen nicht angemessen. Lösung: Erzeugung des XML-Dokuments in mehreren Schritten: Begrenzung der Datensätze pro Vorgang: dbms_xmlquery.setmaxrows(v_query_ctx, 100); Seite 47
48 Realisierte Lösung : Große Dateien Lösung: Erzeugung des xml-dokuments in mehreren Schritten: Schleife zur Erzeugung kleiner XMLDokumente: dbms_xmlquery.setraisenorowsexception(v_query_ctx, true); begin loop v_ergebnis_xml := dbms_xmlquery.getxml (v_query_ctx); end loop; exception when others then null; end; Achtung: Jedes Ergebnis-Clob ist ein wohlgeformtes XML-Dokument Der Dokumentheader wird jedes Mal eingefügt Auch der Dokumentknoten wird jedes Mal geöffnet und geschlossen Seite 48
49 Realisierte Lösung : Große Dateien Lösung: Erzeugung des xml-dokuments in mehreren Schritten: Schleife zur Erzeugung kleiner XMLDokumente: dbms_xmlquery.setraisenorowsexception(v_query_ctx, true); begin loop v_ergebnis_xml := dbms_xmlquery.getxml (v_query_ctx); end loop; exception when others then null; end; Achtung: Jedes Ergebnis-Clob ist ein wohlgeformtes XML-Dokument Der Dokumentheader wird jedes Mal eingefügt Auch der Dokumentknoten wird jedes Mal geöffnet und geschlossen Seite 49
50 Realisierte Lösung : Große Dateien Lösung: Erzeugung des xml-dokuments in mehreren Schritten: Zusammenführung der Einzeldokumente in einer Datei Entfernen der ersten beiden Zeilen ab dem 2. CLOB Entfernen der letzten Zeile in allen CLOBs bis auf das letzte Zeilen können in CLOB durch chr(10) identifiziert werden Alle Buffer an die XML-Datei anhängen Verwendung von utl_file.put Aufteilen CLOB in n Buffer mit maximal Zeichen Verwendung von dbms_lob.substr => varchar2-variable Buffergröße so wählen, dass die beiden ersten Zeilen komplett im ersten Buffer sind und die letzte Zeile komplett im letzten Buffer ist Seite 50
51 Gliederung Anforderungsszenario Lösungsalternativen Realisierte Lösung Technische Hürden, Lösungen und Workarounds Alternative Lösungen Fazit Fragen und Antworten Seite 51
52 Externe XML-Datei in clob laden: Alternative Lösung: Import mit dbms_xmlstore declaredeclare v_xml clob; v_xml_lobloc clob; v_datei bfile := bfilename ('XMLDIRECTORY', 'dept.xml'); begin dbms_lob.open (v_datei, dbms_lob.lob_readonly); dbms_lob.createtemporary (v_xml_lobloc, true); dbms_lob.loadfromfile(v_xml_lobloc, v_datei, dbms_lob.lobmaxsize); v_xml := v_xml_lobloc; dbms_lob.freetemporary (v_xml_lobloc); dbms_lob.close(v_datei); end; / Seite 52
53 XML-Dokument in Zieltabelle laden: Alternative Lösung: Import mit dbms_xmlstore declare v_xml clob; v_insctx dbms_xmlstore.ctxtype; v_rows number; begin v_insctx := dbms_xmlstore.newcontext('dept'); dbms_xmlstore.clearupdatecolumnlist (v_insctx); dbms_xmlstore.setupdatecolumn (v_insctx, 'DEPTNO'); dbms_xmlstore.setupdatecolumn (v_insctx, 'DNAME'); v_rows := dbms_xmlstore.insertxml (v_insctx, v_xml); dbms_xmlstore.closecontext (v_insctx); -- commit; end; / Seite 53
54 XML-Dokument in Zieltabelle laden: Alternative Lösung: Import mit dbms_xmlstore declare v_xml clob; v_insctx dbms_xmlstore.ctxtype; v_rows number; begin v_insctx := dbms_xmlstore.newcontext('dept'); dbms_xmlstore.clearupdatecolumnlist (v_insctx); dbms_xmlstore.setupdatecolumn (v_insctx, 'DEPTNO'); dbms_xmlstore.setupdatecolumn (v_insctx, 'DNAME'); v_rows := dbms_xmlstore.insertxml (v_insctx, v_xml); dbms_xmlstore.closecontext (v_insctx); -- commit; end; / Seite 54
55 XML-Dokument in Zieltabelle laden: Alternative Lösung: Import mit dbms_xmlstore declare v_xml clob; v_insctx dbms_xmlstore.ctxtype; v_rows number; begin v_insctx := dbms_xmlstore.newcontext('dept'); dbms_xmlstore.clearupdatecolumnlist (v_insctx); dbms_xmlstore.setupdatecolumn (v_insctx, 'DEPTNO'); dbms_xmlstore.setupdatecolumn (v_insctx, 'DNAME'); v_rows := dbms_xmlstore.insertxml (v_insctx, v_xml); dbms_xmlstore.closecontext (v_insctx); -- commit; end; / Seite 55
56 XML-Dokument in Zieltabelle laden: Alternative Lösung: Import mit dbms_xmlstore declare v_xml clob; v_insctx dbms_xmlstore.ctxtype; v_rows number; begin v_insctx := dbms_xmlstore.newcontext('dept'); dbms_xmlstore.clearupdatecolumnlist (v_insctx); dbms_xmlstore.setupdatecolumn (v_insctx, 'DEPTNO'); dbms_xmlstore.setupdatecolumn (v_insctx, 'DNAME'); v_rows := dbms_xmlstore.insertxml (v_insctx, v_xml); dbms_xmlstore.closecontext (v_insctx); -- commit; end; / Seite 56
57 XML-Dokument in Zieltabelle laden: Alternative Lösung: Import mit dbms_xmlstore declare v_xml clob; v_insctx dbms_xmlstore.ctxtype; v_rows number; begin v_insctx := dbms_xmlstore.newcontext('dept'); dbms_xmlstore.clearupdatecolumnlist (v_insctx); dbms_xmlstore.setupdatecolumn (v_insctx, 'DEPTNO'); dbms_xmlstore.setupdatecolumn (v_insctx, 'DNAME'); v_rows := dbms_xmlstore.insertxml (v_insctx, v_xml); dbms_xmlstore.closecontext (v_insctx); -- commit; end; / Seite 57
58 XML-Dokument in Zieltabelle laden: Alternative Lösung: Import mit dbms_xmlstore declare v_xml clob; v_insctx dbms_xmlstore.ctxtype; v_rows number; begin v_insctx := dbms_xmlstore.newcontext('dept'); dbms_xmlstore.clearupdatecolumnlist (v_insctx); dbms_xmlstore.setupdatecolumn (v_insctx, 'DEPTNO'); dbms_xmlstore.setupdatecolumn (v_insctx, 'DNAME'); v_rows := dbms_xmlstore.insertxml (v_insctx, v_xml); dbms_xmlstore.closecontext (v_insctx); -- commit; end; / Seite 58
59 XML-Dokument einfacher Struktur (1 Tabelle): Alternative Lösung: Import mit dbms_xmlstore Kaum Konfigurationsmöglichkeiten im Vergleich mit dbms_xmlquery Konventionen ROW ROW NUM= <ROWSET> <ROW num="1"> <DEPTNO>10</DEPTNO> <DNAME>ACCOUNTING</DNAME> </ROW> <ROW num="2"> <DEPTNO>20</DEPTNO> <DNAME>RESEARCH</DNAME> </ROW> </ROWSET> Ggf. Stylesheettransformation Seite 59
60 Alternative Lösung: Import mit dbms_xmlstore XML-Dokument Hierarchischer Struktur (Master-Detail): Zieltabelle mit objektrelationaler Spalte (collection): create or replace type t_emp_obj as object ( empno number (4), ename varchar2 (10), ); / create or replace type t_emp_liste is table of t_emp_obj; / create table dept_emp (deptno number (2), dname varchar2 (14), emp t_emp_liste) nested table emp store as nt_emp; Seite 60
61 Alternative Lösung: Import mit dbms_xmlstore XML-Dokument Hierarchischer Struktur (Master-Detail): <ROWSET> <ROW num="1"> <DEPTNO>10</DEPTNO> <EMP> <T_EMP_OBJ> <EMPNO>7782</EMPNO> </T_EMP_OBJ> </EMP> </ROW> </ROWSET> Name der Collection-Spalte Name der Object Types Seite 61
62 XML-Dokument in Zieltabelle laden: Alternative Lösung: Import mit dbms_xmlstore declare v_xml clob; v_insctx dbms_xmlstore.ctxtype; v_rows number; begin v_insctx := dbms_xmlstore.newcontext('dept_emp'); dbms_xmlstore.clearupdatecolumnlist (v_insctx); dbms_xmlstore.setupdatecolumn (v_insctx, 'DEPTNO'); dbms_xmlstore.setupdatecolumn (v_insctx, 'DNAME'); dbms_xmlstore.setupdatecolumn (v_insctx, 'EMP'); v_rows := dbms_xmlstore.insertxml (v_insctx, v_xml); dbms_xmlstore.closecontext (v_insctx); -- commit; end; / Name der Collection- Spalte Seite 62
63 Für einfache Import-Export-Aufgaben (1 xml-file <=> 1 Tabelle) sind die XDK-Tools dbms_xmlquery und dbms_xmlstore hinreichend geeignet Fazit Bei hierarchischen Strukturen (Master-Detail) in einem XML-Dokument sind einige Tricks erforderlich Verwendung von Objekttypen bzw. Collections Ggf. Stylesheet-Transformationen Die Validierung und Transformation von XML-Dateien erfolgte über Java-Programme Aufruf aus PL/SQL: Performanceprobleme Indirekter Aufruf über OS-Befehl aus PL/SQL Seite 63
64 Fragen und Antworten F R A G E N A N T W O R T E N Seite 64
Komplexe XML-Dokumente über XSU und Objekt-Typen aus der Datenbank generieren
Komplexe XML-Dokumente über XSU und Objekt-Typen aus der Datenbank generieren Autor: Norbert Bahn, Opitz Consulting DOAGNews Q3_2005 Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten
MehrErzeugung und Veränderung von Tabellen
Datenbanken - Objekte Erzeugung und Veränderung von Tabellen Objekt Tabelle View Sequence Index Synonym Basiseinheit zum Speichern; besteht aus Zeilen und Spalten; Logische Repräsentation; kann Teilmengen
MehrGrundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB
Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB Jörg Liedtke, Oracle Consulting Vortrag zum Praxis-Seminar B bei der KIS-Fachtagung 2007, Ludwigshafen Agenda
MehrXML in der Oracle Datenbank
XML in der Oracle Datenbank Oracle XML DB Eine kurze Einführung Gruppe A Michaela Geierhos Galina Hinova Maximilian Schöfmann AGENDA Warum XML in einer Datenbank? Was bietet die Oracle XML DB? Unterschiedliche
MehrErzeugen von Constraints
Erzeugen von Constraints Was sind Constraints? Durch Constraints werden Regeln auf einem bestimmtem Tabellen-Level erzwungen. Die folgenden Constraint-Typen sind in Oracle integriert: NOT NULL UNIQUE Key
MehrArbeit mit zusammengesetzten Datentypen
Arbeit mit zusammengesetzten Datentypen Zusammengesetzte Datentypen Typen: PL/SQL RECORDS PL/SQL TABELLEN Enthalten interne Komponenten Sind wiederverwendbar Copyright Oracle Corporation, 1998. All rights
MehrXML-Datenaustausch in der Praxis Projekt TOMIS bei der ThyssenKrupp Stahl AG
Mittwoch, 9. November 2005 13h00, Bruno-Schmitz-Saal 18. Deutsche ORACLE-Anwenderkonferenz XML-Datenaustausch in der Praxis Projekt TOMIS bei der ThyssenKrupp Stahl AG Volker Husemann Thyssen Krupp Stahl
MehrPrakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints
Prakt. Datenbankprogrammierung Sommersemester 2005 I,11: Verwendung von Constraints Was sind Constraints? Constraints stellen Regeln auf Tabellenebene sicher. Constraints verhindern das Löschen aus einer
MehrInhalt. Behandlung von Views durch den CBO View Merging Predicate Pushing Complex View Merging Hints in Views Globale Hints. Dr.
Inhalt Behandlung von Views durch den CBO View Merging Predicate Pushing Complex View Merging Hints in Views Globale Hints Dr.Frank Haney 1 Behandlung von Views durch den CBO View Merging bedeutet, daß
MehrZusammengesetzte Datentypen
Zusammengesetzte Datentypen.1 Records... -4.1.1 Implizite Typdeklaration mit %ROWTYPE... -6.1.2 Referenzierung eines Records... -6.2 PL/SQL Tables... -8.2.1 Deklaration einer PL/SQL Table... -8.3 Referenzierung
MehrThemen des Kapitels. 2 Grundlagen von PL/SQL. PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren. 2.1 Übersicht. Grundelemente von PL/SQL.
2 Grundlagen von PL/SQL Grundelemente von PL/SQL. 2.1 Übersicht Themen des Kapitels Grundlagen von PL/SQL Themen des Kapitels PL/SQL Blöcke Kommentare Bezeichner Variablen Operatoren Im Kapitel Grundlagen
MehrDynamische Generierung von XML
Kunde: DOAGNews Ort, Datum: Artikel im Heft Q3 / 2005 Thema / Themen: Projekt: Autor: Artikel von merlin.zwo Dynamische Generierung von XML In Hakon Lugert Oracle & Technologien Systementwicklung Individuelle
MehrFunktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion
Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert
MehrDatenbanken Labor, MI : Übung 1 SQL - Abfragen Patrick Lipinski
Aufgabe 1 Erstellen Sie eine Abfrage, die aus der EMP/DEPT-Tabelle die Felder Empno, Ename, Deptno und dname aller Mitarbeiter mit einem Gehalt von > 2500 ausgibt. select EMPNO, ENAME from EMP where SAL
MehrEntspricht dem kartesischen Produkt von zwei oder mehr selektierten Tabellen ohne Join-Bedingung.
Tipps & Tricks: Neuerungen Joins Bereich: SQL Erstellung: 07/2004 HA Versionsinfo: 10.1, 10.2, 11.1, 11.2 Letzte Überarbeitung: 06/2009 MA Neuerungen zu Joins Ab Version 9i sind alle dem SQL:1999-Standard
MehrSQL and PL/SQL unleashed. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL
. Neuheiten bei Oracle 11g und Oracle 12c im Bereich SQL und PL/SQL Johannes Gritsch Themenübersicht Neue Scheduler Job Typen SQL_SCRIPT und BACKUP_SCRIPT SQL RowLimit: PERCENT und TIES WITH-Klausel mit
MehrDipl. Wirtsch.-Ing. Lars Geldner Nürnberg, 22.11.2007
Dipl. Wirtsch.-Ing. Lars Geldner Nürnberg, 22.11.2007 Projektbericht Entwicklung eines Content Management Systems mit der Oracle 10g XML DB Agenda Projektbezug: EU-Projekt ENN-ICS Anforderungen wiederverwendbare
MehrVergessene (?) SQL- und PL/SQL- Funktionen
Vergessene (?) SQL- und PL/SQL- Funktionen Folge 1 Vortrag DOAG-Regiogruppe Freiburg/Südbaden 29.01.13 bulk collect (1) Aufgabenstellung: ca. 50.000 eingelesene Werte an Hand einer ID auf eine vorhandene
MehrEntwicklungsumgebung für die Laborübung
Entwicklungsumgebung für die Laborübung VL Datenbanksysteme Ingo Feinerer Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Gliederung
MehrPrakt. Datenbankprogrammierung. Sommersemester 2005
Prakt. Datenbankprogrammierung Sommersemester 2005 II,2: Schreiben von ausführbaren Statements Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken Christian Goldberg PL/SQL-Block-Syntax
MehrProzedurale Datenbank- Anwendungsprogrammierung
Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.
MehrNeuerungen in Marco Patzwahl MuniQSoft GmbH Unterhaching
Neuerungen in 12.2 Marco Patzwahl MuniQSoft GmbH Unterhaching Schlüsselworte Neuerungen in 12.2, DBA Einleitung Jede neue Datenbankversion bringt diverse Neuerungen mit. Nur welche sind wichtig und welche
Mehr100% PL/SQL Web Content Management
DOAG 2003 12. bis 13. November 2003, Mannheim 100% PL/SQL Erfahrungsbericht Martin Friemel, Martin Kubitza Enterprise Web AG, Duisburg 1/11 Inhalt Dynamische Webseiten mit PL/SQL entwickeln LDAP-Autorisierung
MehrXML in der Oracle Datenbank "relational and beyond"
XML in der Oracle Datenbank "relational and beyond" Ulrike Schwinn (Ulrike.Schwinn@oracle.com) Oracle Deutschland GmbH Oracle XML DB Ein Überblick 1-1 Agenda Warum XML in der Datenbank? Unterschiedliche
Mehr<Insert Picture Here> Security-Basics. Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update. Carsten Czarski, ORACLE Deutschland B.V. Co.
Security-Basics Privilegien, Rollen, SQL und PL/SQL - inkl. 12c-Update Carsten Czarski, ORACLE Deutschland B.V. Co. KG Themen Rechte, Rollen und PL/SQL: Grundsätzliches Invokers vs.
MehrFortgeschrittene SQL-Techniken für APEX-Formulare und Reports
Fortgeschrittene SQL-Techniken für APEX-Formulare und Reports Andreas Wismann WHEN OTHERS Beratung Projektmanagement Coaching rund um Oracle Application Express rund um Application Express Beratung Projektmanagement
Mehr<Insert Picture Here> XML und die Oracle Datenbank
XML und die Oracle Datenbank Ulrike Schwinn (ulrike.schwinn@oracle.com) ORACLE Deutschland B.V. & Co.KG Realisierung mit der Datenbank Ein einziges zentrales Repository Einheitlicher
MehrAdvanced Queues und XML-DB Integration von Oracle in einer SOA mit Hilfe von asynchroner Kommunikation und XML-Verarbeitung
TAG DER DATENBANKEN 20.06.2013 Udo Pütz Dr. Andreas Kumpf Advanced Queues und XML-DB Integration von Oracle in einer SOA mit Hilfe von asynchroner Kommunikation und XML-Verarbeitung Übersicht Motivation
MehrDBMS_RLS Package Es besteht die Möglichkeit, auf Views oder Tables eine Funktion zu legen, die abhängig von bestimmten Faktoren
Tipps & Tricks: Row Level Security Bereich: DBA Erstellung: 092008 MP Versionsinfo: 10.1, 10.2, 11.1 Letzte Überarbeitung: 072009 MP Row Level Security DBMS_RLS Package Es besteht die Möglichkeit, auf
MehrDie Datenmanipulationssprache SQL
Die Datenmanipulationssprache SQL Daten eingeben Daten ändern Datenbank-Inhalte aus Dateien laden Seite 1 Data Manipulation Language A DML statement is executed when you Add new rows to a table Modify
MehrArt der Info: Technische Background Info Teil 3 (April 2002)
Betrifft: Autor: Oracle9i New Features SQL und PL/SQL Patrick Malcherek (patrick.malcherek@trivadis.com) Art der Info: Technische Background Info Teil (April 00) Quelle: Aus dem NF9i-Kurs und NF9i-Techno-Circle
MehrCodegenerator für APEX Collections und Tabular Forms
Codegenerator für APEX Collections und Tabular Forms Andreas Wismann wismann@when-others.com WHEN OTHERS Beratung Programmierung Coaching Agenda Andreas Wismann wismann@when-others.com Tabular Forms Features
MehrHousekeeping -2
Housekeeping -1 Housekeeping -2 Housekeeping -3 Housekeeping -4 Housekeeping -5 Housekeeping -6 Stichwörter: Aufräumen im Dateisystem Housekeeping -7 Stichwörter: Aufräumen im Dateisystem Housekeeping
MehrÜbung PL/SQL Trigger Lösungen
Übung PL/SQL Trigger Lösungen 1) Gebe das aktuelle Datum aus. Wofür steht dual? Ändere das Datum für Deine aktuelle Session auf das Format Jahr (4 Stellen) Monat (2 Stellen) Tag (2 Stellen)[Leerzeichen]Stunde
MehrHousekeeping -2
Housekeeping -1 Housekeeping -2 Housekeeping -3 Housekeeping -4 Housekeeping -5 Housekeeping -6 Weitere Ordner unter $ORA_CRS_HOME/log/crs: log : Verzeichnis für CRS Resourcen die dazukommen, neu gestartet
MehrT:\Dokumentationen\Asseco_BERIT\Schulung\BERIT_LIDS7_Basiskurs\Impo rt_export\beritde_lt_do_20120918_lids7.basisschulung_import_export.
LIDS 7 Import/Export Mannheim, 11.02.2013 Autor: Anschrift: Version: Status: Modifiziert von: Ablage: Christine Sickenberger - Asseco BERIT GmbH Asseco BERIT GmbH Mundenheimer Straße 55 68219 Mannheim
MehrKapitel 4 Dynamisches SQL
Kapitel 4 Dynamisches SQL Flien zum Datenbankpraktikum Wintersemester 2010/11 LMU München 2008 Thmas Bernecker, Tbias Emrich unter Verwendung der Flien des Datenbankpraktikums aus dem Wintersemester 2007/08
MehrXML in Oracle 12c. Wolfgang Nast
XML in Oracle 12c Wolfgang Nast Agenda Vorstellung der Möglichkeiten Klassisch XDB Beispiel XML Schema Umsetzung klassisch Umsetzung XDB Zusammenfassung 2 XML in Oracle 12c Im Überblick Technologie-orientiert
MehrErfahrungsbericht mit Oracle Spatial
Erfahrungsbericht mit Oracle Spatial DOAG Oracle Spatial & Geodata Day Eva-Maria Kramer Kurzprofil Marktführer für eenvironment: Führendes Softwarehaus für Lösungen zum Umweltmonitoring und raumbezogenen
MehrLogging und Debugging. Gerd Volberg OPITZ CONSULTING Deutschland GmbH
Logging und Debugging Gerd Volberg OPITZ CONSULTING Deutschland GmbH Bochum, 20. Februar 2014 OPITZ CONSULTING GmbH Seite 1 Agenda 1. Logging Datenmodell Tabellen Views 2. Debugging Debug-Package Funktionen
MehrKapitel 4 Dynamisches SQL
Kapitel 4 Dynamisches SQL Flien zum Datenbankpraktikum Wintersemester 2012/13 LMU München 2008 Thmas Bernecker, Tbias Emrich 2010 Tbias Emrich, Erich Schubert unter Verwendung der Flien des Datenbankpraktikums
MehrHochschule Karlsruhe Technik und Wirtschaft Fakultät für Informatik und Wirtschaftsinformatik
1. Aufgabe (Normalisierung, 28 Punkte) Das Maklerbüro Foldur-Estate beschäftigt mehrere Makler, die jeweils unterschiedliche Mietwohnungen im Angebot haben. Jede Wohnung hat einen Vermieter, Vermieter
MehrKomplexe Excel-Berichte mit APEX und jxls erstellen
Komplexe Excel-Berichte mit APEX und jxls erstellen Dietmar Aust Opal-Consulting Köln Schlüsselworte: Oracle APEX, MS Excel, jxls, Bericht, Template, Open Source Einleitung In fast jeder Webapplikation
Mehr4. Objektrelationales Typsystem Kollektionstypen. Nested Table
Nested Table Bei einer Nested Table handelt es sich um eine Tabelle als Attributwert. Im Gegensatz zu Varray gibt es keine Beschränkung bei der Größe. Definition erfolgt auf einem Basistyp, als Basistypen
MehrExplizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen
Explizite Jedes SQL Statement, das der Oracle Server ausführt, hat einen individuellen, der verbunden ist mit: Implizitem : Declariert für alle DML-Statements und PL/SQL SELECT Statements. Explizitem :
MehrOracle 8i und 9i New Features. DOAG November Peter Jensch, Trivadis GmbH
Oracle 8i und 9i New Features DOAG November 200 Peter Jensch, Trivadis GmbH Facts & Figures Über 300 Mitarbeiter (D und CH) Über 200 Oracle Consultant Über 300 Kunden (ohne Schulung) Über 000 Projekte
MehrWarum wird mein Index nicht benutzt?
Warum wird mein Index nicht benutzt? Index Nutzung-1 Tätigkeitsbereiche: Oracle Support Hotline: Mo-Fr 8.00 18.00 Uhr Erweiterung um eine Rufbereitschaft auch am Wochenende möglich Oracle IT-Consulting
MehrDirk Nachbar (dirk.nachbar@trivadis.com)
Betrifft: Autor: Art der Info: Quelle: XSQL Servlet und FOP Dirk Nachbar (dirk.nachbar@trivadis.com) Technische Background Info Aus unserer Projekt- und Schulungserfahrung http://xml.apache.org/fop, http://www.xml.com,
MehrJavaaktuell. Java ist vielseitig. ijug. Praxis. Wissen. Networking. Das Magazin für Entwickler Aus der Community für die Community
04-2016 Winter www. ijug.eu Praxis. Wissen. Networking. Das Magazin für Entwickler Aus der Community für die Community Java ist vielseitig Javaaktuell 4 191978 304903 04 D: 4,90 EUR A: 5,60 EUR CH: 9,80
MehrDOAG 2016 Oracle APEX Security
Für die Restricted Einstellung sind nur folgende Items vorgesehen: Display as Text (escape special characters, does not save state) Display as Text (does not save state) Display as Text (based on LOV,
MehrOracle Database Vault Beispiele zur Benutzung
Oracle Database Vault Beispiele zur Benutzung Grundsätzliches: Beispiel für Trennung der Verantwortlichkeiten in unserer Umgebung: wichtige RollenAufgaben: DB-Benutzer Rolle Aufgabe SYS SYSDBA Verwalter
MehrOracle Forms und APEX
überraschend mehr Möglichkeiten! Oracle Forms und APEX Gerd Volberg + Jan Winkels OPITZ CONSULTING Deutschland GmbH OPITZ CONSULTING 2016 Agenda 1 2 3 4 5 Oracle Forms APEX Live-Demos Known Problems Resümee
Mehr7. XML-Datenbanksysteme und SQL/XML
7. XML-Datenbanksysteme und SQL/XML Native XML-DBS vs. XML-Erweiterungen von ORDBS Speicherung von XML-Dokumenten Speicherung von XML-Dokumenten als Ganzes Generische Dekomposition von XML-Dokumenten Schemabasierte
MehrModerne Datenbankkonzepte
Verteilte Datenbanken Moderne Datenbankkonzepte Wünschenswert, aber extrem aufwändig ( Zweiphasen Commit) Objektrelationale Datenbanken Kompromiss zwischen relational und rein objektorientiert seit 1999
MehrFakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS 2015. XMLType. Christian Senger/Andreas Schmidt XMLType 1/32
XMLType Christian Senger/Andreas Schmidt XMLType 1/32 XMLType von Oracle vordefinierter Typ zur Speicherung von nativen XML-Dokumenten unterstützt verschiedene Speichermodelle für XML structured storage
MehrDynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München
Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester
MehrObjektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern
Thema Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Referent: Frank Sanders Seite 1 Inhalt Der Vortrag hat einen sehr kurzen Einleitungsteil der sich mit Objektorientierung
MehrPowerful PL/SQL: Collections indizieren mit VARCHAR2-Indizes
Powerful PL/SQL: Collections indizieren mit VARCHAR2-Indizes Autor: Klaus Friemelt, MT AG DOAGNews Q1_2005 Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der
MehrNested Tables Types als Ergänzung zu Pivot XML
Nested Tables Types als Ergänzung zu Pivot XML Thomas Strub Logica Deutschland GmbH & Co. KG Frankfurt Schlüsselworte Nested Tables, pivot, pivot xml, unpivot, collect, PL/SQL Einleitung Die Verknüpfung
MehrDesigner Development Kit (DDK)
Designer Development Kit (DDK) Eigene Code-Generatoren im Designer Dr. Gudrun Pabst Trivadis GmbH Dr. Jürgen Menge Oracle GmbH Inhalt > Agenda Für besseren Durchblick. Zum Hintergrund... Installation,
Mehr5.8 Bibliotheken für PostgreSQL
5.8 Bibliotheken für PostgreSQL Haskell/WASH: Modul Dbconnect PHP: pqsql-funktionen Java/JSP: JDBC Perl: DBI database interface modul Vorläufige Version 80 c 2004 Peter Thiemann, Matthias Neubauer 5.9
MehrAufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators
Aufbau eines dynamischen ETL Frameworks auf Basis eines PL/SQL Codegenerators München, 21. Nowember 2007 Nicola Marangoni & Jörg Westermayer Nicola.Marangoni@SHS-VIVEON.com Joerg.Westermayer@SHS-VIVEON.com
MehrPrakt. Datenbankprogrammierung. Sommersemester 2005
Prakt. Datenbankprogrammierung Sommersemester 2005 A,2: Hierarchische Anfragen Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken Christian Goldberg Wann ist eine hierarchische Anfrage
MehrSeminar XML und Datenbanken Andreas Krug. XML -Unterstützung durch IBM DB2
Seminar XML und Datenbanken Andreas Krug XML -Unterstützung durch IBM DB2 Fahrplan 1. XML-enabled Unterstützung vs. native XML Unterstützung 2. Nachteile der relationalen XML- Unterstützung 3. Native XML-Verarbeitung
MehrSQL mit ORACLE. Wolf-Michael Kahler
Wolf-Michael Kahler SQL mit ORACLE Eine aktuelle Einfuhrung in die Arbeit mit relationalen und objektrelationalen Datenbanken unter Einsatzvon ORACLE Express Mit 311 Abbildungen 3., aktualisierte und erweiterte
MehrMengen- oder SET-Operatoren fassen das Ergebnis von zwei oder mehreren Teilabfragen zu einem Ergebnis zusammen.
Tipps & Tricks: Mengenoperatoren Bereich: DBA, SQL Erstellung: 06/2004 MP Versionsinfo: 10.1, 10.2, 11.1, 11.2 Letzte Überarbeitung: 06/2009 MA Mengenoperatoren Mengen- oder SET-Operatoren fassen das Ergebnis
Mehr<Insert Picture Here> z/os Migration und Integration
z/os Migration und Integration Thomas Niewel Leitender Systemberater Agenda Überblick Integration von z/os Daten und Anwendungen Migration von z/os Daten und Anwendungen Erfahrungen
MehrPrakt. Datenbankprogrammierung. Sommersemester 2005
Prakt. Datenbankprogrammierung Sommersemester 2005 II,11: Erstellen von Datenbank- Triggern Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken Christian Goldberg Überblick über Trigger
MehrPrakt. Datenbankprogrammierung. Sommersemester Überblick über Trigger. II,11: Erstellen von Datenbank- Triggern. Datenbank-Trigger: Beispiel
Prakt. Datenbankprogrammierung Sommersemester 2005 II,11: Erstellen von Datenbank- Triggern Überblick über Trigger Ein Trigger ist ein PL/SQL-Block, der bei einem bestimmten festgelegten Ereignis (Event)
MehrOracle PL/SQL und XML. Marco Skulschus Marcus Wiederstein
www.comelio-medien.com Oracle, PL/SQL und XML Marco Skulschus Marcus Wiederstein Oracle PL/SQL und XML Marco Skulschus Marcus Wiederstein Oracle, PL/SQL und XML Marco Skulschus Marcus Wiederstein Webseite
MehrErfahrungsbericht - Oracle ADF 11g im produktiven Einsatz
Erfahrungsbericht - Oracle ADF 11g im produktiven Einsatz Martin Kunze, 17.11.2011 Agenda Robotron Grundkonzepte ADF vs. Forms Verwendeter ADF Technologiestack PL/SQL-Wiederverwendung in ADF Connection-Pooling,
MehrV$ALERT_LOG_ERRORS Erzeugung einer strukturierten Sicht auf die Fehlermeldungen im Alert-Log
V$ALERT_LOG_ERRORS Erzeugung einer strukturierten Sicht auf die Fehlermeldungen im Alert-Log Autor: Dr. Kurt Franke, debitel AG DOAGNews Q4_2005 Dieses Werk ist urheberrechtlich geschützt. Die dadurch
MehrDipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009
Hochschule Darmstadt DATENBANKEN Fachbereich Informatik Praktikum 3 Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 PL/SQL Programmierung Anwendung des Cursor Konzepts und Stored Procedures Und Trigger
MehrSQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement
SQL Datenmanipulation Datenmanipulationssprache Ein DML Statement wird ausgeführt wenn: neue Tupel eingefügt werden existierende Tupel geändert werden existierende Tupel aus der Tabelle gelöscht werden
MehrObjektrelationale, erweiterbare Datenbanken WS 04/05
Eidgenössische Technische Hochschule Zürich Swiss Federal Institute of Technology Zurich Institut für Informationssysteme Dr.C.Türker Objektrelationale, erweiterbare Datenbanken WS 0405 Übung 8 Aufgabe
MehrTriggern. Change Data Capture
Triggern. Change Data Capture Triggers Was sind Triggers? Eine bestimmte Art von gespeicherte Prozedur, die automatisch ausgeführt wird wenn eine DML oder DDL Anweisung ausgeführt wird Eine Menge von Aktionen,
MehrViews erzeugen. Datenbank - Objekte. Wozu braucht man Views? Was ist eine View?
Datenbank - Objekte Views erzeugen Objekt Tabelle View Sequence Index Synonym Objekt Beschreibung Basiseinheit zum Speichern; besteht aus Zeilen und Spalten; Logische Repräsentation; kann Teilmengen von
MehrInside Oracle11g Release 2: Neues für den Anwendungsentwickler
Inside Oracle11g Release 2: Neues für den Anwendungsentwickler Carsten Czarski ORACLE Deutschland GmbH Einleitung Oracle11g bringt für nahezu alle Bereiche der Anwendungsentwicklung, unabhängig von der
MehrOracle und LDAP. Zugriff auf LDAP-Daten aus einer Oracle-DB. Martin Busik busik@wlp-systems.de
Oracle und LDAP Zugriff auf LDAP-Daten aus einer Oracle-DB Martin Busik busik@wlp-systems.de Lightweight Directory LDAP Access Protocol LDAP dc=de dc=wlp Systems dc=drucker cn=lj4100d cn=canon photo ou=mitarbeiter
MehrRoland Tilgner. Solution Architects & Team Coaching DEVELOPMENT. ORACLE TEXT AUS PL/SQL-SICHT Features und Möglichkeiten
Roland Tilgner Solution Architects & Team Coaching DEVELOPMENT ORACLE TEXT AUS PL/SQL-SICHT Features und Möglichkeiten ZURPERSON Roland Tilgner ZURFIRMA Roland Tilgner Solution Architects & Team Coaching
MehrEntwicklungsumgebung für die Laborübung
Entwicklungsumgebung für die Laborübung VU Datenbanksysteme Wolfgang Fischl Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester
MehrXML in Oracle. Workshop. Ing. Markus Gamperl
XML in Oracle Workshop Ing. Markus Gamperl mariahilferstraße 52, 1070 wien, österreich tel.: +43-1-5326852-0 fax: +43-1-5326852-20 w w w. j o y n - i t. a t Inhalt Teil 1 Oracle 9i/10g XML-Datenbank 1)
MehrHochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.
Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.
MehrSQL (Structured Query Language) Schemata Datentypen
2 SQL Sprachelemente Grundlegende Sprachelemente von SQL. 2.1 Übersicht Themen des Kapitels SQL Sprachelemente Themen des Kapitels SQL (Structured Query Language) Schemata Datentypen Im Kapitel SQL Sprachelemente
MehrReporting Lösungen für APEX wähle Deine Waffen weise
Reporting Lösungen für APEX wähle Deine Waffen weise Dietmar Aust Opal-Consulting Köln Schlüsselworte: Oracle APEX, Reporting, JasperReports, PL/PDF, BI Publisher, OPAL:XP, Doxxy, Oracle Rest Data Services
MehrPostgreSQL Ein Überblick
26. August 2007 Agenda Neue Funktionen im Bereich SQL, XML und Volltextsuche Geschwindigkeitsverbesserungen Neue Erweiterungen (contrib) XML (1) Neuer Datentyp xml ( well-formedness ) Viele Funktionen
MehrObjektorientierung unter Oracle richtet sich einerseits nach objekt-orientierten Programmiersprachen wie Java,
Tipps & Tricks: Objektorientierung Bereich: PLSQL Erstellung: 032001 HA Versionsinfo: 9.2, 10.2, 11.1 Letzte Überarbeitung: 062009 HA Objektorientierung unter Oracle Objektorientierung unter Oracle richtet
MehrObjektorientierte PL/SQL-Programmierung für RDBMS
Willkommen Objektorientierte PL/SQL-Programmierung für RDBMS Andriy Terletskyy Berenberg Bank Neuer Jungfernstieg 20 20354 Hamburg Berenberg stellt sich vor MDV/EDV- Erfahrung Zeitraum Hardware Datenbank
MehrEigene Funktionen innerhalb von pgsql
Eigene Funktionen innerhalb von pgsql Michael Dienert 25. November 2015 1 Warum noch eine Programmiersprache? SQL ist ein Standard, der von praktisch allen relationalen Datenbank-Servern als Abfragesprache
MehrHans Buschmann. InnoData GmbH
1 Guten Tag Hans Buschmann InnoData GmbH 79219 Staufen Ballrechterstr. 1 Tel. 07633-2081 Email: unglauben@innodatagmbh.de 2 Thema WEB basierende XML-Anwendung im praktischen Einsatz Wie erreicht man mit
MehrPowerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel
Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel Schlagworte Autor: Klaus Friemelt, MT AG dynamisches BULK SQL, VARCHAR2-indizierte PL/SQL-Tabellen Einleitung Mit den letzten
MehrTrigger schreiben. Überblick über Trigger. Datenbank Trigger: Beispiel. Aufbau eines Triggers
Überblick über Trigger Trigger schreiben Ein Trigger ist ein PL/SQL Block, der implizit aufgerufen wird, wenn ein bestimmtes Ereignis eintritt. Ein Trigger kann ein Datenbanktrigger oder ein Anwendungstrigger
MehrListener: Bei Oracle erfolgt die Steuerung (konventionell) via listener.ora (Listener Konfiguration), tnsnames.ora (Client Konfiguration)
Protokoll 1: Listener: Bei Oracle erfolgt die Steuerung (konventionell) via listener.ora (Listener Konfiguration), tnsnames.ora (Client Konfiguration) Abschnitt 2.1 (Ausführungen zum Shutdown / Startup)
MehrOracle 10g Einführung
Kurs Oracle 10g Einführung Teil 5 Einführung Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 16 Seite 1 von 16 Agenda 1 Tabellen und Views erstellen 2 Indizes
MehrISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de
08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren
Mehrselect DISTINCT Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf - DISTINCT steht dass keine Zeile mehrfach vorkommt
Some SQL Queries % you can use them with the project Buch/Verlag select Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf select DISTINCT Name, ort From Verkauf; selektiert Name und Ort
MehrSQL-Loader. Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner 05.05.2006 1
SQL-Loader Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner 05.05.2006 1 Beschreibung Definition transferiert Daten aus einer oder mehreren externen Dateien in eine oder mehrere Tabellen einer Oracle-Datenbank.
MehrPL/SQL Zeitbomben. Martin Friemel DOAG 2012 Konferenz 21. November 2012, 16:00 Uhr NCC NürnbergConvention Center Ost
DOAG 2012 Konferenz 21. November 2012, 16:00 Uhr NCC NürnbergConvention Center Ost PL/SQL Zeitbomben Seit Jahren läuft alles ohne Probleme - und plötzlich zerstört die Software Ihre Daten. Martin Friemel
MehrDatenschutz: Zugriffsrechte in SQL
12. Datenschutz: Zugriffsrechte in SQL 12-1 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt Datenschutz: Zugriffsrechte in SQL 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten
Mehr