Geschichte

Werbung
<?xml version=“1.0“>
<!doctype Präsentation [
<!element Speaker (Name)>
<!element Name (#pcdata)>
<!element Thema (#pcdata)>
]>
<Präsentation>
<Speaker>
<Name>
Katerina Mpalaska
Systemberatung Stuttgart
Oracle Deutschland GmbH
[email protected]
</Name>
</Speaker>
<Thema>
Oracle XML Database
</Thema>
</Präsentation>
Geschichte
8i
Release 1
Release 2
Page 1
1
Geschichte
y
y
y
y
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
Release 1
Release 2
Geschichte
y
y
y
y
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
y
y
y
y
XML Datentyp
dokumentbasiert
XPath Zugriffe
Indizes
y
y
y
y
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
Release 2
Page 2
2
Geschichte
y
y
y
y
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
y Objektrelational
y XML Schema
y Zugriffe mit
WebDAV, DOM
y
y
y
y
XML Datentyp
dokumentbasiert
XPath Zugriffe
Indizes
y
y
y
y
XML Datentyp
dokumentbasiert
XPath Zugriffe
Indizes
y
y
y
y
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
y
y
y
y
XML Werkzeuge
relational / CLOB
XSQL Servlet
XML SQL Utility
XML Schema
y DTD Unzulänglichkeiten
–
–
y
y
y
y
y
Datentypen
andere Syntax
DDL für XML in XML
Strukturen
Bedingungen (Constraints)
Datentypen
OO-Konzepte
Page 3
3
XML Schema
"annotated" XML Schema
y XML Schema mit "Zusatzinformationen"
y Herstellerspezifische Tags und Attribute zur
Steuerung der Persistenz
y Namespace-Konzept
y bei der Schema-Prüfung ignoriert der Parser gemäß
W3C "alle Namespaces, die er nicht kennt"
–
–
Datenbankunabhängige Parser beachten nur das
allgemeine XML Schema
Bei Registrieren in der Datenbank beachtet diese nur das
allgemeine XML Schema und die eigenen "Annotations"
Page 4
4
annotated XML Schema
http://xmlns.microsoft.com/xml
http://www.w3.org/2001/XMLSchema
Ein XML Schema kann Annotations für
verschiedene Datenbanken enthalten,
da die jeweiligen Datenbanken fremde
Annotations gemäß W3C ignorieren
sollen
http://xmlns.oracle.com/xdb
Mehrbenutzerzugriff
Tabelle
depttable
Deptno
Employees
Deptname
Release 2
Name
Addr
Age
Street
City
Tabelle
Tabelle
Page 5
5
Oracle XML Datenbank
JDBC
NET8
HTTP
WEBDAV
XML Service:
–Schema Validation
–Transformation
–CREATE TABLE in LOB
oder OO
DB Schema
–DML
–Indizierung
–Zugriff über Java/SQL und PL/SQL
XML Repository
FTP
Repository
Service:
–Foldering
–Versionierung
–ACL
– Zugriff über
Java/SQL
und PL/SQL
Die Folder-Hierarchie
Page 6
6
XML Schema registrieren
y XML Schema mit Annotations
–
–
–
–
W3C-Standard
Objektnamen
Objekttabellen
Speicherstrukturen
y PL/SQL Paket
–
–
DBMS_XMLSCHEMA.REGISTERSCHEMA
DBMS_XMLSCHEMA.DELETESCHEMA
XML Dokumente in Tabellen
y dokumentbasierter Speicherung
–
–
Schemabindung
keine Schemabindung
y modellbasierte Speicherung
–
Schemabindung
create table order_tab of xmltype
xmlschema "http//www.fonds.de/order.xsd"
element "order"
Page 7
7
XML Tabellen
TABLE OF XMLTYPE XMLSCHEMA....
XML Tabellen
TABLE OF XMLTYPE XMLSCHEMA....
XMLDATA
order
customer
funds
name
wkn
street
city
name
amount
Page 8
8
SELECT
select extract(value(e), '/order/customer')
from orders_tab
where
existsnode(value(e),'/order[funds/wkn="471100"]')=1
y XPath-Ausdruck in der WHERE-Klausel
selektiert die in Frage kommenden
Dokumente
y XPath-Ausdruck in der SELECT-Liste
selektiert innerhalb des Dokumentes
Update
update orders_tab e
set value(e) = updatexml
(value(e),'/order/funds/wkn/text()','471100')
where
existsnode(value(e),'/orders[funds/wkn="081500"])=1
y updateXML()-Funktion
y XPath Ausdruck
y Update findet auf den gespeicherten
Objekten statt – KEIN DOM-Parsing
Page 9
9
Integration durch relationale Views
Tabelle Kunden
Name
Strasse
Ort
Franz Must
Heike Müller
:
:
Musterstr. 1
Müllerstr. 2
:
:
80981 Muster...
20000 Hamburg
:
:
Integration durch XML Views
Tabelle Kunden
Name
Strasse
Ort
Franz Must
Heike Müller
:
:
Musterstr. 1
Müllerstr. 2
:
:
80981 Muster...
20000 Hamburg
:
:
Page 10
10
Http-Zugriff in Oracle9i
y relationale und XML Tabellen
y Suche mit XPath-Ausdrücken
Http-Zugriffe
y Stylesheet-Transformationen in der
Datenbank
Page 11
11
WebDAV
Page 12
12
Zugriff durch SQL
SQL>
SQL> select
select r.res.getclobval()
r.res.getclobval() from
from path_view
path_view rr where
where
22 path=('/home/SIG_Po01a.xml')
path=('/home/SIG_Po01a.xml')
R.RES.GETCLOBVAL()
R.RES.GETCLOBVAL()
------------------------------------------------------------------------------------------------------------------------<Resource
<Resource xmlns="http://xmlns.oracle.com/xdb/XDBResource.xsd"
xmlns="http://xmlns.oracle.com/xdb/XDBResource.xsd" Hidden="false"
Hidden="false"
Invalid="false"
Invalid="false" Container="false"
Container="false" CustomRslv="false"
CustomRslv="false" VersionHistory="false">
VersionHistory="false">
<CreationDate>2002-04-11T10:31:32.896783000</CreationDate>
<CreationDate>2002-04-11T10:31:32.896783000</CreationDate>
<ModificationDate>2002-04
<ModificationDate>2002-04 11T10:31:32.896783000</ModificationDate>
11T10:31:32.896783000</ModificationDate>
<DisplayName>SIG_Po01a.xml</DisplayName>
<DisplayName>SIG_Po01a.xml</DisplayName>
<Language>en</Language>
<Language>en</Language>
<CharacterSet>utf-8</CharacterSet>
<CharacterSet>utf-8</CharacterSet>
<ContentType>text/xml</ContentType>
<ContentType>text/xml</ContentType>
<RefCount>1</RefCount>
<RefCount>1</RefCount> ....
....
Laden mit FTP
ftp>
ftp> open
open stusunmuc1
stusunmuc1 2222
2222
Connected
Connected to
to stusunmuc1.de.oracle.com.
stusunmuc1.de.oracle.com.
220
220 stusunmuc1
stusunmuc1 FTP
FTP Server
Server (XDB/Oracle9i
(XDB/Oracle9i Enterprise
Enterprise Edition
Edition Release
Release 9.2.0.1.0
9.2.0.1.0 -Production)
Production) ready.
ready. User
User (stusunmuc1.de.oracle.com:(none)):
(stusunmuc1.de.oracle.com:(none)): system
system
331
331 pass
pass required
required for
for SYSTEM
SYSTEM
Password:
Password:
230
230 SYSTEM
SYSTEM logged
logged in
in
ftp>
mput
*.xml
ftp> mput *.xml
mput
mput SIG_PO01.xml?
SIG_PO01.xml? yy
200
200 PORT
PORT Command
Command successful
successful
150
150 ASCII
ASCII Data
Data Connection
Connection
226
226 ASCII
ASCII Transfer
Transfer Complete
Complete
ftp:
ftp: 2367
2367 bytes
bytes sent
sent in
in 0,00Seconds
0,00Seconds 2367000,00Kbytes/sec.
2367000,00Kbytes/sec.
SQL>
SQL> select
select count(*)
count(*) from
from po01;
po01;
COUNT(*)
COUNT(*)
------------------11
Page 13
13
Ordner anlegen
y Webfolder im Explorer oder mit FTP
y PL/SQL: dbms_xdb.createfolder()
declare
declare
result
result boolean;
boolean;
begin
begin
result
result :=
:= dbms_xdb.createFolder('/home/SCOTT');
dbms_xdb.createFolder('/home/SCOTT');
dbms_xdb.setAcl('/home/SCOTT','/sys/acls/all_owner_acl.xml');
dbms_xdb.setAcl('/home/SCOTT','/sys/acls/all_owner_acl.xml');
end;
end;
//
COMMIT;
COMMIT;
SQL: Update Kommando
SQL>update
SQL>update purchaseorder
purchaseorder pp set
set value(p)
value(p) ==
22 updateXml(value(p),'/PurchaseOrder/User/text()','ulrike')
updateXml(value(p),'/PurchaseOrder/User/text()','ulrike')
33 where
where existsNode(value(p),
existsNode(value(p),
4'/PurchaseOrder/Actions/Action[position()=
4'/PurchaseOrder/Actions/Action[position()= 11 and
and User="BLAKE"]')=
User="BLAKE"]')= 11
//
SQL>select
SQL>select ** from
from purchaseorder
purchaseorder pp where
where existsNode(value(p),
existsNode(value(p),
22 '/PurchaseOrder/Actions/Action[position()=
'/PurchaseOrder/Actions/Action[position()= 11 and
and User="BLAKE"]')=1
User="BLAKE"]')=1
SYS_NC_ROWINFO$
SYS_NC_ROWINFO$
--------------------------------------------------------------------------------------------------------------------------------------<PurchaseOrder
<PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://sig.de.oracle.com/PurchaseOrders/xsd/SIG_PO
xsi:noNamespaceSchemaLocation="http://sig.de.oracle.com/PurchaseOrders/xsd/SIG_PO
01.xsd">
01.xsd">
<Reference>ALLEN-2001102110211602PDT</Reference>
<Reference>ALLEN-2001102110211602PDT</Reference>
<Actions>.....
<Actions>.....
<Reject/>
<Reject/>
<Requestor>Michael
<Requestor>Michael L.
L. Allen</Requestor>
Allen</Requestor>
<User>ulrike</User>
<User>ulrike</User>
Page 14
14
FTP Constraint Beispiel
SQL>
SQL> alter
alter table
table po01
po01 add
add constraint
constraint reference_is_unique
reference_is_unique unique
unique
(xmldata."Requestor")
(xmldata."Requestor")
//
<PurchaseOrder01 xmlns:xdb="http://xmlns.oracle.com/xdb"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://sig.de.oracle.com/PurchaseOr
ders/xsd/SIG_po01.xsd">
<PurchaseOrder01 xmlns:xdb="http://xmlns.oracle.com/xdb"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://sig.de.oracle.com/Purchase
Orders/xsd/SIG_po01.xsd">
<Reference>ADAMS-20011127121040988PST</Reference>
<Reference>BLAKE-55511127121040988PST</Reference>
<Actions>
<Actions>
<Action>
<Action>
<User>SIG_USER</User>
<User>SIG_USER</User>
<Date xsi:nil="true"/>
<Date xsi:nil="true"/>
/Action>
/Action>
</Actions>
</Actions>
<Reject>
<Reject>
<User>SIG_USER</User>
<User>SIG_USER</User>
<Date xsi:nil="true"/>
<Date xsi:nil="true"/>
<Comments>Invalid Order</Comments>
<Comments>ok</Comments>
</Rejec t> <Requestor>Ulrike Schwinn</Requestor>...
</Rejec t> <Requestor>Ulrike Schwinn</Requestor>...
FTP Constraint Beispiel
ftp>
ftp> open
open
Connected
Connected
stusunmuc1
stusunmuc1 2100
2100
to
to stusunmuc1.de.oracle.com.
stusunmuc1.de.oracle.com.
220
220 stusunmuc1
stusunmuc1 FTP
FTP Server
Server (XDB/Oracle9i
(XDB/Oracle9i Enterprise
Enterprise Edition
Edition Release
Release
9.2.0.1.0
Production)
ready.
9.2.0.1.0 - Production) ready.
User
User (stusunmuc1.de.oracle.com:(none)):
(stusunmuc1.de.oracle.com:(none)): sig_user
sig_user
331
pass
331 pass required
required for
for SIG_USER
SIG_USER
Password:
Password:
230
230 SIG_USER
SIG_USER logged
logged in
in
ftp>
mput
sig*.xml
ftp> mput sig*.xml
mput
mput SIG_Po01a.xml?
SIG_Po01a.xml? yy
200
PORT
200 PORT Command
Command successful
successful
150
150 ASCII
ASCII Data
Data Connection
Connection
550Error
550- Error Response
Response
ORA-00604:
ORA-00604:
ORA-00001:
ORA-00001:
error
error occurred
occurred at
at
unique
unique constraint
constraint
recursive
recursive SQL
SQL level
level 11
(SIG_USER.REFERENCE_IS_UNIQUE)
(SIG_USER.REFERENCE_IS_UNIQUE) violated
violated
550
550 End
End Error
Error Response
Response
ftp:
1452
ftp: 1452 bytes
bytes sent
sent in
in 0,00Seconds
0,00Seconds 1452000,00Kbytes/sec.
1452000,00Kbytes/sec.
Page 15
15
Inhalt der Objektabelle
SQL>
SQL> select
select count(*)
count(*) from
from po01;
po01;
COUNT(*)
COUNT(*)
------------------11
Protokolle: Installation
y Beim Aufruf des DBCAs wird automatisch
die XDB mitinstalliert und die Protokolle
konfiguriert
y Konfigurationsdatei: /xdbconfig.xml
y Default:
–
–
WEBDAV: Port: 8080
FTP : Port: 2100
y init.ora Eintrag:
dispatchers="(PROTOCOL=TCP)
dispatchers="(PROTOCOL=TCP) (SERVICE=<sid>XDB)"
(SERVICE=<sid>XDB)"
Page 16
16
EM- Unterstützung
XMLType: Native Speicherung
von XML Dokumenten
•
•
•
•
•
•
!"
#
$ %
&
'&
(&
)
&*
+&,-#./0-1%2#
3!
!"24
24
Page 17
17
XMLType: Erweiterungen in
Oracle 9i Release 2
240&*
(
4
5
5
$
673
$
6
5
5
$
(
$
• 8
• 3
&
3
&
((
• -
4
$2-
-
4
$
-
•
•
•
&*
SQL und XML: zwei Welten ...
XML Server
SQL
XML
RDBMS
Page 18
18
... wachsen zusammen!
Oracle9i
SQL
Indizes
XML
Ansichten
Integrität
Weitere Informationen
y Informationen
– http://otn.oracle.com/tech/xml/xmldb/content.html
y Dokumentation
– Oracle XML database Developers Guide
http://otn.oracle.com/docs/products/oracle9i/doc_
library/release2/appdev.920/a96620/toc.htm
– Oracle XML API Reference
http://otn.oracle.com/docs/products/oracle9i/doc_
library/release2/appdev.920/a96616/toc.htm
Page 19
19
Q&
A
Q U E S T I O N S
A N S W E R S
Page 20
20
Herunterladen