1
! "# " "$ %&' ($$$ )%&' *+),%&' -.*&*/ 2
010232 %&'24& 0506260 021 3
4
&*7+8 9!"#$%#&: 5
Probably You Do Not Need to Actually Design Anything 6
4*+/+.; "#&%$' 7
"#&%$' 4*+/+.; () OBJECT *object_id name owner created LINKS *object_id1 *object_id2 OBJ_ATTR_VALUES *object_id *attribute_id attribute_name attribute_type ATTRIBUTES *attribute_id attribute_name attribute_type 8
"#&%$' 4*+/+.;.<.!* +..+= Create table Object ( object_id number primary key, data +,&- ); 9
Brilliant Stuff, This XMLDB Database Thingy! (You only need ONE TABLE!) 10
./,& 0$/#12 ') ); 1+ ); 11
/3 )$4 $5 Create table Object ( data +,&- ); 0&# 1$ 12
3055$4 1$(# CREATE TABLE "MARCO". OBJECT" OF "SYS"."XMLTYPE" XMLSCHEMA "http://www.myserver.com/myapp/1.0/xsd/object.xsd" ELEMENT ROOT" ID 4733 PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 6,'&#$$7 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST $5 GROUPS 1 BUFFER_POOL 1$ DEFAULT) TABLESPACE "USERS VARRAY "XMLEXTRA"."NAMESPACES" STORE AS BASICFILE LOB "NAMESPACES660_L" (ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 CACHE STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) VARRAY "XMLEXTRA"."EXTRADATA" STORE AS BASICFILE LOB "EXTRADATA659_L" (ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 CACHE STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 1$ PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) 13
&)$ $5 18!,#, /98!:/; 3)+>&)>2 +*68! -1; 23 8*+>2+>3>./+ )-2? (0. <)90 /: /*@ -.)+ 3*!<<1."A.+').) $$<&>7,$><& 578$$$ 5$56$55 14
$&#,# -) %&' /, *$<5 &! 2*! '- 2!<%B0 &!!!"# $%& 15
6, 16
#5&# $#$= 1 1$ %&'3".* %&'*%$$$>%&',.>C & 1$ /") )/ %&'') ) +)+!>2*!>C>,.; 8$5+>3>%&'3 >-. > 8&# 5!"#$# "!%$# 5$= /$$'%> /-,? > 7,$ 17
@$A# 1$ $$5,)-& )>,.>.+ )/ +.* 2' +%&'''24&!,-.,;= 5.!) %$$$,<. 8 )>,.>* 18
%$$$!5/< 19
+$11 $5& 1$ 20
$ $# @$ $ 6B 6@0* % %&'* % B,!%&'!+ $# @$ &D& 5D ' C) E,FG$#* <,GH E "")"/*" */"%&' " 6 ))!!+$)0(3IJ0 21
@$1616##9); SQL> BEGIN DBMS_XMLSCHEMA.registerSchema (SCHEMAURL => 'http://www.myserver.com/root.xsd', SCHEMADOC => xdburitype('/public/root.xsd').getclob(), LOCAL => TRUE, -- local GENTYPES => TRUE, -- generate object types GENBEAN => FALSE, -- no java beans GENTABLES => TRUE, -- generate object tables OWNER => USER); END; / 22
SQL> select * from tab; TNAME TABTYPE ------------------------------ ------- INFO_TABLE TABLE ROOT_TABLE TABLE )#<C)$ 61 SQL> select dbms_metadata.get_ddl('table','root_table') from dual; DBMS_METADATA.GET_DDL('TABLE','ROOT_TABLE') ------------------------------------------------------ CREATE TABLE "MARCO"."ROOT_TABLE" OF "SYS"."XMLTYPE" XMLSCHEMA "http://www.myserver.com/root.xsd" ELEMENT "ROOT" PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" VARRAY "XMLEXTRA"."NAMESPACES" STORE AS BASICFILE LOB "NAMESPACES780_L"... VARRAY "XMLDATA"."INFO"."SYS_XDBPD$" STORE AS BASICFILE LOB "SYS_XDBP..." DISALLOW NONSCHEMA... 23
@$1616##9$&; SQL> BEGIN DBMS_XMLSCHEMA.registerSchema (SCHEMAURL => 'http://www.myserver.com/root.xsd', SCHEMADOC => xdburitype('/public/root.xsd').getclob(), LOCAL => TRUE, -- local GENTYPES => FALSE, -- generate object types GENBEAN => FALSE, -- no java beans GENTABLES => TRUE, -- generate object tables OPTIONS => DBMS_XMLSCHEMA.REGISTER_BINARYXML, OWNER => USER); END; / 24
SQL> select * from tab; TNAME TABTYPE ------------------------------ ------- ROOT_TABLE TABLE )#$& 61 SQL> select dbms_metadata.get_ddl('table','root_table') from dual; DBMS_METADATA.GET_DDL('TABLE','ROOT_TABLE') ------------------------------------------------ CREATE TABLE "MARCO"."ROOT_TABLE" OF "SYS"."XMLTYPE" XMLTYPE STORE AS BASICFILE BINARY XML ( TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 NOCACHE LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) XMLSCHEMA "http://www.myserver.com/root.xsd" ELEMENT "ROOT" DISALLOW NONSCHEMA... TABLESPACE "USERS" 25
D5$ (#$$ %&'C *C *C 5# *C *C )0 $& 61-$ K%&'24& K''L24& 3''24& ##& *+# 26
6&$+*+,- E>; SQL> create table "XML_XSD01" of XMLTYPE 2 XMLTYPE STORE AS BASICFILE BINARY XML 3 XMLSCHEMA "http://www.myserver.com/root.xsd" 4 ELEMENT "ROOT" 5 ALLOW NONSCHEMA; Table created. SQL> create table "XML_XSD02_BUG" of XMLTYPE 2 XMLTYPE STORE AS BASICFILE BINARY XML 3 XMLSCHEMA "http://www.myserver.com/root.xsd" 4 ELEMENT "ROOT" 5 ALLOW ANYSCHEMA 6 DISALLOW NONSCHEMA; Table created. Oops... B.6396229 27
616## 28
@<C)$$& %&' ) %&' 0 %&'+! / %&'+! C 6.. +%&'.. 4+/.* 2' % NO %&'3 & *! N+O 30L % N+"O %&'3 2 *! NO 0 % N+O >3 2 *! NO & % N+O >3 /M 0 /M 0 / 29
6, 618#.). @ $& * Q P Q! P Q P &' QQ P Q %11<* QQ P Q.)!. P Q QQ &*+&)* QQ P Q %&'3 P F Q -." Q Q Q "3 Q P P 30
8!*$5+ &#$( &' $ 143 >03 0!3 03 T+,. ")$)#$( 03 >0 0D7L 0 03 0 0,( $$$ 0 * %$#$( 60RC'6R>>S -623 8!%&'<)* 31
8$5+, )# ') 3 ) < %&' * 90,,: <2') 6 6#<$1 -.%&'3 / 35 T /% %U A.+0 T -.@@+>"" 2/*&.+?.!!%1! %&'3<* %&'3 1/ 32
8$5+*+,- SQL> CREATE INDEX XMLIX_INFO on INFO_TABLE (object_value) 2 INDEXTYPE IS XDB.XMLIndex; SQL> CREATE INDEX XMLIX_ROOT on ROOT_TABLE (object_value) 2 INDEXTYPE IS XDB.XMLIndex 3 PARAMETERS ('PATHS (INCLUDE (/ROOT/ID 4 /ROOT/INFO/INFO_ID 5 ) 6 NAMESPACE MAPPING (xmlns="http://www.myserver.com/root.xsd")) 7 PATH TABLE XMLBIN_PATH_TABLE 8 PATH ID INDEX XMLBIN_PATHID_IX 9 ORDER KEY INDEX XMLBIN_ORDERKEY_IX'); 33
$&-$ SQL> CREATE TABLE "ROOT_TABLE" OF "SYS"."XMLTYPE" 2 XMLTYPE STORE AS SECUREFILE BINARY XML 3 XMLSCHEMA "http://www.myserver.com/root.xsd" ELEMENT "ROOT" 4 DISALLOW NONSCHEMA 5 COMPRESS 6 ; SQL> alter table "ROOT_TABLE" 2 modify lob (XMLDATA) 3 (COMPRESS HIGH); -- ALTER TABLE "ROOT" MODIFY LOG (XMLDATA) -- COMPRESS NOCOMPRESS COMPRESS MEDIUM COMPRESS HIGH B.6364855 34
)-2 <) *TV * +.. <V ) <.. * * =.,. <%&'>+V.,+.V V+.,)9-.&+:H 35
)7$ %&',!5. %&' -.*!8""<.**"<.*"<.*M!;<.*3 F %&' -A!8""<.**"<.*"M!;3 F$ )!8"")+*"/)!8""/))T* T*!8""T**9-: C+)<.<&T T? < 36
"#$= *)TW*!8""* 37