MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/catxdbs.sql

Rem
Rem $Header: rdbms/admin/catxdbs.sql /main/37 2016/03/10 11:06:59 raeburns Exp $
Rem
Rem catxdbs.sql
Rem
Rem Copyright (c) 2001, 2016, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      catxdbs.sql - XDB Schema related types and tables
Rem
Rem    DESCRIPTION
Rem      This script creates the types, tables, etc required for 
Rem      XDB Schema i.e. the schema for schemas.
Rem
Rem    NOTES
Rem      This script should be run as the user "XDB".
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/catxdbs.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/catxdbs.sql
Rem SQL_PHASE: CATXDBS
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catqm_int.sql
Rem END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    raeburns    02/26/16 - Bug 22682005: Add alter type for xdb$annotation_t
Rem    rafsanto    02/09/16 - rti22445438: select back to seq
Rem    rafsanto    01/18/16 - Bug 22445438 - grant read instead of select to
Rem                           public views
Rem    hxzhang     11/17/15 - bug#21525058, bitmap index cause deadlock for
Rem                           concurrent DML
Rem    surman      01/23/14 - 13922626: Update SQL metadata
Rem    qyu         03/18/13 - Common start and end scripts
Rem    qyu         08/01/11 - long identifier project for xdb
Rem    ckavoor     11/02/09 - 2123504: Adding 'show errors'
Rem    mkandarp    06/11/09 - 8571751 : increase maxval for xdb$namesuff_seq
Rem    bhammers    02/01/09 - add indexes to xdb.xdb$element
Rem    mrafiq      01/23/07 - fix for bug 4870624: increase size of
Rem                           XDB$RAW_LIST_T
Rem    sichandr    05/29/07 - initialize typeID sequence from 100
Rem    nkandalu    02/08/07 - 3010822: Increase length of version
Rem    smalde      02/16/06 - Translations
Rem    abagrawa    10/05/05 - Add sqltype to simpletype 
Rem    abagrawa    09/29/05 - Add typeID 
Rem    njalali     02/13/03 - moved final_info to end of simpleType
Rem    abagrawa    01/15/03 - Fix simpletype - remove abstract, add final
Rem    abagrawa    12/11/02 - increase size of facet_list_t
Rem    sidicula    09/25/02 - Public synonym for xdb$string_list_t
Rem    sichandr    07/31/02 - rename simplecontent to simplecont
Rem    sichandr    07/19/02 - add simpleContent types
Rem    abagrawa    05/28/02 - Add ID attribute to facets
Rem    nmontoya    06/27/02 - GRANT SELECT ON xdb.xdb$namesuff_seq TO PUBLIC 
Rem    rmurthy     03/15/02 - add notation, unique, key, keyref
Rem    sichandr    02/01/02 - increase varray size
Rem    bkhaladk    01/24/02 - enable grant selects for client side issues.
Rem    spannala    01/08/02 - incorporating fge_caxdb_priv_indx_fix
Rem    spannala    01/11/02 - making all systems types have standard TOIDs
Rem    rmurthy     12/27/01 - remove userPrivilege and add defaultXSL
Rem    spannala    12/27/01 - not switching users in xdb install
Rem    njalali     12/04/01 - transient properties
Rem    rmurthy     12/07/01 - add PD columns to all types
Rem    mkrishna    11/01/01 - change xmldata to xmldata
Rem    sichandr    11/28/01 - create indexes
Rem    sichandr    10/31/01 - add ID attribute
Rem    rmurthy     09/13/01 - change documentation/appinfo to mixed types
Rem    sichandr    09/18/01 - support storeVarrayAsTable
Rem    rmurthy     08/26/01 - add support for substitutionGroup, named group
Rem    rmurthy     08/03/01 - support for inheritance
Rem    njalali     07/13/01 - removed resources from this file
Rem    tsingh      06/30/01 - XDB: XML Database merge
Rem    rmurthy     06/01/01 - add include/import support
Rem    spannala    05/18/01 - xmltype_p -> xmltype
Rem    rmurthy     05/09/01 - remove conn stmt
Rem    rmurthy     05/04/01 - annotation, appinfo, documentation
Rem    rmurthy     04/20/01 - support for any, anyAttribute
Rem    njalali     04/06/01 - made RAW pos. desc. into a VARRAY of RAW
Rem    rmurthy     03/27/01 - support for list and union simpletypes
Rem    rmurthy     03/27/01 - add use,value attrs for attribute
Rem    rmurthy     03/09/01 - major changes for new xml schemas
Rem    rmurthy     02/14/01 - Created
Rem

@@?/rdbms/admin/sqlsessstart.sql

/* ------------------------------------------------------------------- */
/*                   MISC TYPES                                        */   
/* ------------------------------------------------------------------- */

create or replace type xdb.xdb$xmltype_ref_list_t 
 OID '00000000000000000000000000020120'as varray(2147483647) of ref sys.xmltype;
/
show errors;

/* Qualified Name (QName) */
create or replace type xdb.xdb$qname OID '00000000000000000000000000020121' 
as object
(
    prefix_code     raw(4), /* Index into schema extras */
    name            varchar2(2000)
);
/
show errors;

create type xdb.xdb$string_list_t OID '00000000000000000000000000020122' 
as VARRAY(2147483647) of varchar2(4000);
/

create or replace public synonym xdb$string_list_t for xdb.xdb$string_list_t;

create or replace type xdb.xdb$raw_list_t OID '00000000000000000000000000020123'
as varray(2147483647) of raw(2000);
/
show errors;

/* ------------------------------------------------------------------- */
/*                   ENUM TYPES                                        */   
/* ------------------------------------------------------------------- */

/* generic ENUM type if number of values <= UB1MAXVAL */

create or replace type xdb.xdb$enum_t OID '00000000000000000000000000020124'
as object
(
    value       raw(1),

member function lookupValue RETURN VARCHAR2,
       pragma restrict_references (lookupValue, wnds, wnps, rnps, rnds),
member procedure setValue(val IN VARCHAR2),
       pragma restrict_references (setValue, wnds, wnps, rnps, rnds)
);
/
show errors;

/* generic ENUM type if number of values > UB1MAXVAL */

create or replace type xdb.xdb$enum2_t OID '00000000000000000000000000020125'
as object
(
    value       raw(2),

member function lookupValue RETURN VARCHAR2,
       pragma restrict_references (lookupValue, wnds, wnps, rnps, rnds),
member procedure setValue(val IN VARCHAR2),
       pragma restrict_references (setValue, wnds, wnps, rnps, rnds)
);
/
show errors;

/* Note that more enum possibilities will overflow max contiguous 
   allocation size in shared memory */
create type xdb.xdb$enum_values_t OID '00000000000000000000000000020126'
as VARRAY(1000) of varchar2(1024);
/

/*
* Later will inherit from xdb.xdb$enum
*/
create or replace type xdb.xdb$derivationChoice 
OID '00000000000000000000000000020127' as object
(
    value       raw(2),

member function lookupValue RETURN VARCHAR2,
       pragma restrict_references (lookupValue, wnds, wnps, rnps, rnds),
member procedure setValue(val IN VARCHAR2),
       pragma restrict_references (setValue, wnds, wnps, rnps, rnds)
);
/
show errors;

create or replace type xdb.xdb$formChoice OID '00000000000000000000000000020128'
as object
(
    value       raw(1),

member function lookupValue RETURN VARCHAR2,
       pragma restrict_references (lookupValue, wnds, wnps, rnps, rnds),
member procedure setValue(val IN VARCHAR2),
       pragma restrict_references (setValue, wnds, wnps, rnps, rnds)
);
/
show errors;

create or replace type xdb.xdb$whitespaceChoice OID
'00000000000000000000000000020129' as object
(
    value       raw(1),

member function lookupValue RETURN VARCHAR2,
       pragma restrict_references (lookupValue, wnds, wnps, rnps, rnds),
member procedure setValue(val IN VARCHAR2),
       pragma restrict_references (setValue, wnds, wnps, rnps, rnds)
);
/
show errors;

create or replace type xdb.xdb$javatype OID '0000000000000000000000000002012A'
as object
(
    value       raw(2),

member function lookupValue RETURN VARCHAR2,
       pragma restrict_references (lookupValue, wnds, wnps, rnps, rnds),
member procedure setValue(val IN VARCHAR2),
       pragma restrict_references (setValue, wnds, wnps, rnps, rnds)
);
/
show errors;

/* USE CHOICE - used within attributes */
create or replace type xdb.xdb$useChoice OID '0000000000000000000000000002012B'
as object
(
    value       raw(1),

member function lookupValue RETURN VARCHAR2,
       pragma restrict_references (lookupValue, wnds, wnps, rnps, rnds),
member procedure setValue(val IN VARCHAR2),
       pragma restrict_references (setValue, wnds, wnps, rnps, rnds)
);
/
show errors;

/* PROCESS CHOICE - used within any and anyAttribute */
create or replace type xdb.xdb$processChoice OID
'0000000000000000000000000002012C' as object
(
    value       raw(1),

member function lookupValue RETURN VARCHAR2,
       pragma restrict_references (lookupValue, wnds, wnps, rnps, rnds),
member procedure setValue(val IN VARCHAR2),
       pragma restrict_references (setValue, wnds, wnps, rnps, rnds)
);
/
show errors;

/* Transient CHOICE - used within attribute/element */
create or replace type xdb.xdb$transientChoice OID
'0000000000000000000000000002012D' as object
(
    value       raw(1),

member function lookupValue RETURN VARCHAR2,
       pragma restrict_references (lookupValue, wnds, wnps, rnps, rnds),
member procedure setValue(val IN VARCHAR2),
       pragma restrict_references (setValue, wnds, wnps, rnps, rnds)
);
/
show errors;

/* ------------------------------------------------------------------- */
/*                  ANNOTATION RELATED TYPES                           */   
/* ------------------------------------------------------------------- */

create or replace type xdb.xdb$appinfo_t OID '00000000000000000000000000020133'
as object
(
  sys_xdbpd$      xdb.xdb$raw_list_t,
  anypart         varchar2(4000),
  source          varchar2(4000)
)  
/
show errors;

create or replace type xdb.xdb$appinfo_list_t OID
'00000000000000000000000000020134' as varray(1000) of xdb.xdb$appinfo_t;
/
show errors;

create or replace type xdb.xdb$documentation_t OID
'00000000000000000000000000020135' as object
(
  sys_xdbpd$      xdb.xdb$raw_list_t,
  anypart         varchar2(4000),
  source          varchar2(4000),
  lang            varchar2(4000)
)
/
show errors;

create or replace type xdb.xdb$documentation_list_t OID
'00000000000000000000000000020136'
  as varray(1000) of xdb.xdb$documentation_t;
/
show errors;

create or replace type xdb.xdb$annotation_t OID
'00000000000000000000000000020137' as object
(
  sys_xdbpd$      xdb.xdb$raw_list_t,
  appinfo         xdb.xdb$appinfo_list_t,
  documentation   xdb.xdb$documentation_list_t
)
/  
show errors;

create or replace type xdb.xdb$annotation_list_t OID
'00000000000000000000000000020138' as 
   varray(65535) of xdb.xdb$annotation_t;
/
show errors;

/* ------------------------------------------------------------------- */
/*                   FACET TYPES                                       */   
/* ------------------------------------------------------------------- */

/* String facet type */
create or replace type xdb.xdb$facet_t OID '0000000000000000000000000002012E' 
as object                 /* String Facet */
(
   sys_xdbpd$       xdb.xdb$raw_list_t,
   annotation       xdb.xdb$annotation_t,
   value            varchar2(2000),
   fixed            raw(1),
   id               varchar2(256)
)
/
show errors;

create type xdb.xdb$facet_list_t OID '0000000000000000000000000002012F' as
VARRAY(65535) of xdb.xdb$facet_t;
/

create or replace type xdb.xdb$numfacet_t OID '00000000000000000000000000020130'
as object              /* Number Facet */
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    annotation      xdb.xdb$annotation_t,
    value           integer,
    fixed           raw(1),
    id              varchar2(256)
)
/
show errors;

create or replace type xdb.xdb$timefacet_t OID
'00000000000000000000000000020131' as object               /* Time Facet */
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    annotation      xdb.xdb$annotation_t,
    value           date,
    fixed           raw(1),
    id              varchar2(256)
)
/
show errors;

create or replace type xdb.xdb$whitespace_t OID
'00000000000000000000000000020132' as object        /* Whitespace facet */
(
    sys_xdbpd$  xdb.xdb$raw_list_t,
    annotation  xdb.xdb$annotation_t,
    value       xdb.xdb$whitespaceChoice,
    fixed       raw(1),
    id          varchar2(256)
);
/
show errors;

/* Forward reference */
create or replace type xdb.xdb$element_t OID '00000000000000000000000000020146';
/
show errors;

/* Forward reference */
create or replace type xdb.xdb$schema_t OID '0000000000000000000000000002014D';
/
show errors;

/* ------------------------------------------------------------------- */
/*                  NOTATION RELATED TYPES                             */   
/* ------------------------------------------------------------------- */

create or replace type xdb.xdb$notation_t
OID '00000000000000000000000000020155'
as object
(
  sys_xdbpd$      xdb.xdb$raw_list_t,
  annotation      xdb.xdb$annotation_t,
  name            varchar2(2000),                    /* name of the notation */
  publicval       varchar2(4000),
  system          varchar2(4000)
)
/
show errors;

create or replace type xdb.xdb$notation_list_t
OID '00000000000000000000000000020156'
as varray(1000) of xdb.xdb$notation_t
/
show errors;

/* ------------------------------------------------------------------- */
/*              UNIQUE/KEY/KEYREF RELATED TYPES                        */   
/* ------------------------------------------------------------------- */

create or replace type xdb.xdb$xpathspec_t
OID '00000000000000000000000000020157'
as object
(
  sys_xdbpd$      xdb.xdb$raw_list_t,
  annotation      xdb.xdb$annotation_t,
  xpath           varchar2(4000)
)
/
show errors;

create or replace type xdb.xdb$xpathspec_list_t
OID '00000000000000000000000000020158'
as varray(1000) of xdb.xdb$xpathspec_t
/
show errors;

create or replace type xdb.xdb$keybase_t
OID '00000000000000000000000000020159'
as object
(
  sys_xdbpd$      xdb.xdb$raw_list_t,
  annotation      xdb.xdb$annotation_t,
  name            varchar2(1000),               /* name of unique/key/keyref */
  refer           xdb.xdb$qname,             /* applicable ONLY for "keyref" */
  selector        xdb.xdb$xpathspec_t,
  fields          xdb.xdb$xpathspec_list_t
)
/
show errors;

create or replace type xdb.xdb$keybase_list_t
OID '0000000000000000000000000002015A'
as varray(1000) of xdb.xdb$keybase_t
/
show errors;

/* ------------------------------------------------------------------- */
/*                   SIMPLETYPE RELATED TYPES                          */   
/* ------------------------------------------------------------------- */

/* LIST type */
create or replace type xdb.xdb$list_t OID '00000000000000000000000000020139' as
object
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    annotation      xdb.xdb$annotation_t,
    item_type       xdb.xdb$qname,                               /* item of list */
    type_ref        ref sys.xmltype,          /* LATER - ref to list item type */
    simple_type     ref sys.xmltype            /* locally declared simple type */
)
/
show errors;

/* UNION type */
create or replace type xdb.xdb$union_t OID '0000000000000000000000000002013A' as
object
(
    sys_xdbpd$         xdb.xdb$raw_list_t,
    annotation      xdb.xdb$annotation_t,
    member_types       varchar2(4000),                 /* members of union */
    simple_types       xdb.xdb$xmltype_ref_list_t,       /* local simple types */

    /* LATER - refs to all constituents of the union type */
    type_refs          xdb.xdb$xmltype_ref_list_t
)
/
show errors;

/* SIMPLE DERIVATION type */
create or replace type xdb.xdb$simple_derivation_t OID
'0000000000000000000000000002013B' AS OBJECT
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    base_type       ref sys.xmltype,
    base            xdb.xdb$qname,
    lcl_smpl_decl   ref sys.xmltype,        /* locally declared simple type */   

    /* Facets */
    fractiondigits  xdb.xdb$numfacet_t,
    totaldigits     xdb.xdb$numfacet_t,
    minlength       xdb.xdb$numfacet_t,
    maxlength       xdb.xdb$numfacet_t,
    length          xdb.xdb$numfacet_t,
    whitespace      xdb.xdb$whitespace_t,
    period          xdb.xdb$timefacet_t,
    duration        xdb.xdb$timefacet_t,
    min_inclusive   xdb.xdb$facet_t,
    max_inclusive   xdb.xdb$facet_t,
    min_exclusive   xdb.xdb$facet_t,
    max_exclusive   xdb.xdb$facet_t,
    pattern         xdb.xdb$facet_list_t,
    enumeration     xdb.xdb$facet_list_t,
    annotation      xdb.xdb$annotation_t,
    id              varchar2(256)
);
/ 
show errors;

create or replace type xdb.xdb$simple_t
OID '0000000000000000000000000002013C' 
AS OBJECT
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    parent_schema   ref sys.xmltype,
    /* Note that name does not need to be a QName since its namespace
    must always equal the target namespace for the schema */
    name            varchar2(256),
    abstract        raw(1),   /* boolean, obsoleted */
    /* Only one of the foll. fields is non-null */
    restriction     xdb.xdb$simple_derivation_t,
    list_type       xdb.xdb$list_t,
    union_type      xdb.xdb$union_t,

    annotation      xdb.xdb$annotation_t,
    id              varchar2(256),
    final_info      xdb.xdb$derivationChoice,
    typeid          integer,
    sqltype         varchar2(30)
);
/ 
show errors;

alter type xdb.xdb$simple_t modify attribute sqltype varchar2(128) cascade;

show errors;

/* ------------------------------------------------------------------- */
/*                  GROUP RELATED TYPES                                */   
/* ------------------------------------------------------------------- */

/* Group (of elements) definition type */
create or replace type xdb.xdb$group_def_t OID
'0000000000000000000000000002013D' as object
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    parent_schema   ref sys.xmltype,
    name            varchar2(2000),                /* name of the group */
    /* 
     * only one of the foll. can be non-null
     */
    all_kid         ref sys.xmltype,
    choice_kid      ref sys.xmltype,
    sequence_kid    ref sys.xmltype,

    annotation      xdb.xdb$annotation_t, 
    id              varchar2(256)
)
/
show errors;

/* Group reference type */
create or replace type xdb.xdb$group_ref_t OID
'0000000000000000000000000002013E' as object
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    parent_schema   ref sys.xmltype,
    min_occurs      integer,
    max_occurs      varchar2(20), /* in string format incl. "unbounded" */

    groupref_name   xdb.xdb$qname,       /* name of the group being referenced */
    groupref_ref    ref sys.xmltype,   /* REF of the group being referenced */

    annotation      xdb.xdb$annotation_t, 
    id              varchar2(256)
)
/
show errors;

/* Attribute Group definition type */
create or replace type xdb.xdb$attrgroup_def_t OID
'0000000000000000000000000002013F' as object
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    parent_schema   ref sys.xmltype,
    name            varchar2(2000),               /* name of the attr group */

    attributes      xdb.xdb$xmltype_ref_list_t,  /* list of attrs within group */
    any_attrs       xdb.xdb$xmltype_ref_list_t,  /* list of anyAttribute decls. */
    attr_groups     xdb.xdb$xmltype_ref_list_t,          /* list of attr groups */

    annotation      xdb.xdb$annotation_t,
    id              varchar2(256)
)
/
show errors;

/* Attribute Group reference type */
create or replace type xdb.xdb$attrgroup_ref_t OID
'00000000000000000000000000020140' as object 
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    parent_schema   ref sys.xmltype,

    attrgroup_name  xdb.xdb$qname,   /* name of the attribute group being ref-ed */
    attrgroup_ref   ref sys.xmltype,   /* ref of the attr group being ref-ed */

    annotation      xdb.xdb$annotation_t,
    id              varchar2(256)
)
/
show errors;

/* ------------------------------------------------------------------- */
/*                   COMPLEXTYPE RELATED TYPES                         */   
/* ------------------------------------------------------------------- */

/* MODEL TYPE 
 *  This type is used as the common type for the following elements : 
 *   - all
 *   - choice 
 *   - sequence
*/
create type xdb.xdb$model_t OID '00000000000000000000000000020141';
/
create or replace type xdb.xdb$model_t OID '00000000000000000000000000020141' as
object
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    parent_schema   ref sys.xmltype,
    min_occurs      integer,
    max_occurs      varchar2(20), /* in string format incl. "unbounded" */

    elements        xdb.xdb$xmltype_ref_list_t,
    choice_kids     xdb.xdb$xmltype_ref_list_t,
    sequence_kids   xdb.xdb$xmltype_ref_list_t,
    anys            xdb.xdb$xmltype_ref_list_t,
    groups          xdb.xdb$xmltype_ref_list_t,

    annotation      xdb.xdb$annotation_t,
    id              varchar2(256)
)
/
show errors;

/* COMPLEX DERIVATION TYPE */
create or replace type xdb.xdb$complex_derivation_t OID
'00000000000000000000000000020142' as object
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    base            xdb.xdb$qname,
    
    attributes      xdb.xdb$xmltype_ref_list_t,
    any_attrs       xdb.xdb$xmltype_ref_list_t,
    attr_groups     xdb.xdb$xmltype_ref_list_t,

    /* 
     * only one of the foll. can be non-null
     */
    all_kid         ref sys.xmltype,
    choice_kid      ref sys.xmltype,
    sequence_kid    ref sys.xmltype,
    group_kid       ref sys.xmltype,

    annotation      xdb.xdb$annotation_t,
    id              varchar2(256)
)
/
show errors;

/* CONTENT TYPE */
create or replace type xdb.xdb$content_t OID '00000000000000000000000000020143'
as object
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    mixed           raw(1),

    /* only one of the foll. can be non-null */    
    restriction     xdb.xdb$complex_derivation_t,
    extension       xdb.xdb$complex_derivation_t,

    annotation      xdb.xdb$annotation_t,
    id              varchar2(256)
)
/  
show errors;

/* SIMPLECONT_RES type */
create or replace type xdb.xdb$simplecont_res_t OID
'0000000000000000000000000002015B' AS OBJECT
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    base            xdb.xdb$qname,
    id              varchar2(256),
    lcl_smpl_decl   ref sys.xmltype,        /* locally declared simple type */   
    attributes      xdb.xdb$xmltype_ref_list_t,
    any_attrs       xdb.xdb$xmltype_ref_list_t,
    attr_groups     xdb.xdb$xmltype_ref_list_t,
    annotation      xdb.xdb$annotation_t,

    /* Facets */
    fractiondigits  xdb.xdb$numfacet_t,
    totaldigits     xdb.xdb$numfacet_t,
    minlength       xdb.xdb$numfacet_t,
    maxlength       xdb.xdb$numfacet_t,
    whitespace      xdb.xdb$whitespace_t,
    period          xdb.xdb$timefacet_t,
    duration        xdb.xdb$timefacet_t,
    min_inclusive   xdb.xdb$facet_t,
    max_inclusive   xdb.xdb$facet_t,
    pattern         xdb.xdb$facet_list_t,
    enumeration     xdb.xdb$facet_list_t,
    min_exclusive   xdb.xdb$facet_t,
    max_exclusive   xdb.xdb$facet_t,
    length          xdb.xdb$numfacet_t
);
/ 
show errors;

/* SIMPLECONT_EXT TYPE */
create or replace type xdb.xdb$simplecont_ext_t OID
'0000000000000000000000000002015C' as object
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    base            xdb.xdb$qname,
    id              varchar2(256),
    
    attributes      xdb.xdb$xmltype_ref_list_t,
    any_attrs       xdb.xdb$xmltype_ref_list_t,
    attr_groups     xdb.xdb$xmltype_ref_list_t,
    annotation      xdb.xdb$annotation_t
)
/
show errors;

/* SIMPLECONTENT TYPE */
create or replace type xdb.xdb$simplecontent_t OID '0000000000000000000000000002015D'
as object
(
    sys_xdbpd$      xdb.xdb$raw_list_t,

    /* only one of the foll. can be non-null */    
    restriction     xdb.xdb$simplecont_res_t,
    extension       xdb.xdb$simplecont_ext_t,

    annotation      xdb.xdb$annotation_t,
    id              varchar2(256)
)
/  
show errors;

/* COMPLEX TYPE */
create or replace type xdb.xdb$complex_t
OID '00000000000000000000000000020144'
AS OBJECT
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    parent_schema   ref sys.xmltype,
    base_type       ref sys.xmltype,      /* applicable for derived types */
    name            varchar2(256),
    abstract        raw(1), 
    mixed           raw(1),
    final_info      xdb.xdb$derivationChoice,
    block           xdb.xdb$derivationChoice,

    attributes      xdb.xdb$xmltype_ref_list_t,
    any_attrs       xdb.xdb$xmltype_ref_list_t,
    attr_groups     xdb.xdb$xmltype_ref_list_t, 

    /* 
     * only one of the foll. can be non-null, else all have to be null.
     */
    all_kid         ref sys.xmltype,
    choice_kid      ref sys.xmltype,
    sequence_kid    ref sys.xmltype,
    group_kid       ref sys.xmltype,

    complexcontent  xdb.xdb$content_t,

    annotation      xdb.xdb$annotation_t,

    sqltype         varchar2(30),                 /* Name of corr. SQL type */
    sqlschema       varchar2(30),     /* Name of schema containing SQL type */
    maintain_dom    raw(1), 
    subtype_refs    xdb.xdb$xmltype_ref_list_t,     /* List of refs to subtypes */
    id              varchar2(256),
    simplecont      xdb.xdb$simplecontent_t,
    typeid          integer
);
/
show errors;

alter type xdb.xdb$complex_t modify attribute 
(sqltype varchar2(128), sqlschema varchar2(128)) cascade;

show errors;

/* ------------------------------------------------------------------- */
/*                   ATTRIBUTE RELATED TYPES                           */   
/* ------------------------------------------------------------------- */

create or replace type xdb.xdb$property_t
OID '00000000000000000000000000020145'
AS OBJECT
(
    sys_xdbpd$      xdb.xdb$raw_list_t,
    parent_schema   ref sys.xmltype,
    prop_number     integer,
    /* Note that name does not need to be a QName since its namespace
    must always equal the target namespace for the schema */
    name            varchar2(256),
    typename        xdb.xdb$qname,
    mem_byte_length raw(2),       /* buffer size--NULL for variable size*/
    mem_type_code   raw(2),
    system          raw(1),
    mutable         raw(1),
    form            xdb.xdb$formChoice,          /* form choice - qualified/not */
    sqlname         varchar2(30),
    sqltype         varchar2(30), 
    sqlschema       varchar2(30),                                    
    java_type       xdb.xdb$javatype,
    default_value   varchar2(4000),
    smpl_type_decl  ref sys.xmltype,          /* Locally declared type */
    type_ref        ref sys.xmltype,          /* Globally declared type */
    /* The following two fields are relevant if the attr/element is defined 
     * by a ref to a global attr/element
     */
    propref_name    xdb.xdb$qname,               /* name of global attr/element */
    propref_ref     ref sys.xmltype,           /* REF of global attr/element */
    attr_use        xdb.xdb$useChoice,             /* only applicable for attrs */
    fixed_value     varchar2(2000),
    global          raw(1),     /* TRUE for global attr/element declarations */
    annotation      xdb.xdb$annotation_t,
    sqlcolltype     varchar2(30),                   /* collection type name */
    sqlcollschema   varchar2(30),
    hidden          raw(1),
    transient       xdb.xdb$transientChoice,    /* = none/generated/manifested ? */
    id              varchar2(256),
    baseprop        raw(1) /* are there generated props based on this prop ? */
);
/
show errors;

alter type xdb.xdb$property_t modify attribute 
(sqlname         varchar2(128), 
 sqltype         varchar2(128),
 sqlschema       varchar2(128),
 sqlcolltype     varchar2(128),
 sqlcollschema   varchar2(128)
) cascade;

show errors;

/* ------------------------------------------------------------------- */
/*                   ELEMENT RELATED TYPES                             */   
/* ------------------------------------------------------------------- */

create or replace type xdb.xdb$element_t OID '00000000000000000000000000020146'
as object
(
    property        xdb.xdb$property_t,
    subs_group      xdb.xdb$qname,
    num_cols        integer,
    nillable        raw(1),
    final_info      xdb.xdb$derivationChoice,
    block           xdb.xdb$derivationChoice,
    abstract        raw(1),
/* XDB extensions */
    mem_inline      raw(1),
    sql_inline      raw(1),
    java_inline     raw(1),
    maintain_dom    raw(1),
    default_table   varchar2(30),
    default_table_schema   varchar2(30), 
    table_props     varchar2(2000),              /* table properties string */
    java_classname  varchar2(2000),
    bean_classname  varchar2(2000),
    base_sqlname    varchar2(61),
    cplx_type_decl  ref sys.xmltype,
    subs_group_refs xdb.xdb$xmltype_ref_list_t, /* REFs to all elements for which 
                                             * this is the head element 
                                             */
    default_xsl     varchar2(2000),     /* URL of default XSL to be applied */
    min_occurs      integer,
    max_occurs      varchar2(20),     /* in string format incl. "unbounded" */
    is_folder       raw(1),
    maintain_order  raw(1),
    col_props       varchar2(2000),             /* column properties string */
    default_acl     varchar2(2000),                   /* URL of default ACL */
    head_elem_ref  ref sys.xmltype,    /* REF to head element of subs. group */
    uniques        xdb.xdb$keybase_list_t,
    keys           xdb.xdb$keybase_list_t,
    keyrefs        xdb.xdb$keybase_list_t,
    is_translatable raw(1),                  /* Is this element translatable */
    xdb_max_occurs  varchar2(20)                            /* xdb:maxOccurs */
);
/
show errors;

alter type xdb.xdb$element_t modify attribute
(default_table          varchar2(128),
 default_table_schema   varchar2(128)
) cascade;

show errors;

/* ------------------------------------------------------------------- */
/*                  ANY RELATED TYPES                                  */   
/* ------------------------------------------------------------------- */

/* type used for both any and anyAttribute elements */
create type xdb.xdb$any_t OID '00000000000000000000000000020147' as object
(
  property         xdb.xdb$property_t,
  namespace        varchar2(2000),
  process_contents xdb.xdb$processChoice,
  min_occurs       integer,
  max_occurs       varchar2(20)   /* in string format incl. "unbounded" */
)
/

/* ------------------------------------------------------------------- */
/*                 INCLUDE/IMPORT RELATED TYPES                        */   
/* ------------------------------------------------------------------- */

create or replace type xdb.xdb$include_t OID '00000000000000000000000000020148'
as object
(
    sys_xdbpd$          xdb.xdb$raw_list_t,
    schema_location     varchar2(700),
    annotation          xdb.xdb$annotation_t,
    id                  varchar2(256)
);
/
show errors;

create or replace type xdb.xdb$include_list_t OID
'00000000000000000000000000020149' as varray(65535) of xdb.xdb$include_t;
/
show errors;

create or replace type xdb.xdb$import_t OID '0000000000000000000000000002014A'
as object
(
    sys_xdbpd$          xdb.xdb$raw_list_t,
    namespace           varchar2(700),
    schema_location     varchar2(700),
    annotation          xdb.xdb$annotation_t,
    id                  varchar2(256)
);
/
show errors;

create or replace type xdb.xdb$import_list_t OID
'0000000000000000000000000002014B' as varray(65535) of xdb.xdb$import_t;
/
show errors;

/* ------------------------------------------------------------------- */
/*                   SCHEMA RELATED TYPES                              */   
/* ------------------------------------------------------------------- */

create or replace type xdb.xdb$extra_list_t OID
'0000000000000000000000000002014C' as varray(65535) of varchar2(2000);
/
show errors;

create or replace type xdb.xdb$schema_t OID '0000000000000000000000000002014D'
as object
(
    schema_url          varchar2(700), /* Maximum key length for an index*/
    target_namespace    varchar2(2000),
    version             varchar2(4000),
    num_props           integer, /* Total # of properties */
    final_default       xdb.xdb$derivationChoice,
    block_default       xdb.xdb$derivationChoice,
    element_form_dflt   xdb.xdb$formChoice,
    attribute_form_dflt xdb.xdb$formChoice,
    elements            xdb.xdb$xmltype_ref_list_t,
    simple_type         xdb.xdb$xmltype_ref_list_t,
    complex_types       xdb.xdb$xmltype_ref_list_t,
    attributes          xdb.xdb$xmltype_ref_list_t,
    imports             xdb.xdb$import_list_t,
    includes            xdb.xdb$include_list_t,
    flags               raw(4),
    sys_xdbpd$          xdb.xdb$raw_list_t,
    annotations         xdb.xdb$annotation_list_t,
    map_to_nchar        raw(1),   /* map strings to NCHAR/NVARCHAR2/NCLOB ? */
    map_to_lob          raw(1),           /* map unbounded strings to LOB ? */
    groups              xdb.xdb$xmltype_ref_list_t,
    attrgroups          xdb.xdb$xmltype_ref_list_t,
    id                  varchar2(256),
    varray_as_tab       raw(1),     /* should varrays be stored as tables ? */
    schema_owner        varchar2(30),
    notations           xdb.xdb$notation_list_t,
    lang                varchar2(4000)
);
/
show errors;

alter type xdb.xdb$schema_t modify attribute
(schema_owner varchar2(128)) cascade;

-- Type evolution for 12.2
alter type xdb.xdb$annotation_t add attribute (id varchar2(128)) cascade;

show errors;

/* ------------------------------------------------------------------- */
/*                      TABLES                                         */   
/* ------------------------------------------------------------------- */


/*
 * Each column has an array of ub2s (in bytecomparable order) specifying
 * property numbers at each level for the XML property associated with 
 * a particular column.
 */
create table xdb.xdb$column_info
(
    schema_ref          ref sys.xmltype,
    elnum               integer,
    colnum              integer,
    propinfo            raw(2000)
);

/* Well known ID for XDB schema for schema */
/* '6C3FCF2D9D354DC1E03408002087A0B7' */

create table xdb.xdb$simple_type of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "simpleType" id 22
        type xdb.xdb$simple_t;                      

create table xdb.xdb$complex_type of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "complexType" id 29
        type xdb.xdb$complex_t;                     

create table xdb.xdb$all_model of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "all" id 111
        type xdb.xdb$model_t;                     

create table xdb.xdb$choice_model of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "choice" id 112
        type xdb.xdb$model_t;                     

create table xdb.xdb$sequence_model of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "sequence" id 113
        type xdb.xdb$model_t;                     

create table xdb.xdb$element of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "element" id 67
        type xdb.xdb$element_t;                     

create table xdb.xdb$attribute of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "attribute" id 48
        type xdb.xdb$property_t;                    

create table xdb.xdb$anyattr of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "anyAttribute" id 129
        type xdb.xdb$any_t;                      

create table xdb.xdb$any of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "any" id 127
        type xdb.xdb$any_t;                      

create table xdb.xdb$group_def of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "group" id 192
        type xdb.xdb$group_def_t;

create table xdb.xdb$group_ref of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "group" id 165
        type xdb.xdb$group_ref_t;

create table xdb.xdb$attrgroup_def of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "attributeGroup" id 193
        type xdb.xdb$attrgroup_def_t;

create table xdb.xdb$attrgroup_ref of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "attributeGroup" id 169
        type xdb.xdb$attrgroup_ref_t;

create table xdb.xdb$schema of sys.xmltype
        xmlschema "http://xmlns.oracle.com/xdb/XDBSchema.xsd" 
                id '6C3FCF2D9D354DC1E03408002087A0B7'
        element "schema" id 81
        type xdb.xdb$schema_t;                      

/* ------------------------------------------------------------------- */
/*                          PRIVS                                      */   
/* ------------------------------------------------------------------- */

/* grant execute privs on all types */

grant execute on xdb.xdb$annotation_list_t to public with grant option;
grant execute on xdb.xdb$annotation_t to public with grant option;
grant execute on xdb.xdb$any_t to public with grant option;
grant execute on xdb.xdb$appinfo_t to public with grant option;
grant execute on xdb.xdb$appinfo_list_t to public with grant option;
grant execute on xdb.xdb$complex_derivation_t to public with grant option;
grant execute on xdb.xdb$complex_t to public with grant option;
grant execute on xdb.xdb$content_t to public with grant option;
grant execute on xdb.xdb$simplecont_res_t to public with grant option;
grant execute on xdb.xdb$simplecont_ext_t to public with grant option;
grant execute on xdb.xdb$simplecontent_t to public with grant option;
grant execute on xdb.xdb$derivationchoice to public with grant option;
grant execute on xdb.xdb$documentation_t to public with grant option;
grant execute on xdb.xdb$documentation_list_t to public with grant option;
grant execute on xdb.xdb$element_t to public with grant option;
grant execute on xdb.xdb$whitespacechoice to public with grant option;
grant execute on xdb.xdb$whitespace_t to public with grant option;
grant execute on xdb.xdb$enum_t to public with grant option;
grant execute on xdb.xdb$enum2_t to public with grant option;
grant execute on xdb.xdb$enum_values_t to public with grant option;
grant execute on xdb.xdb$extra_list_t to public with grant option;
grant execute on xdb.xdb$facet_t to public with grant option;
grant execute on xdb.xdb$facet_list_t to public with grant option;
grant execute on xdb.xdb$formchoice to public with grant option;
grant execute on xdb.xdb$transientchoice to public with grant option;
grant execute on xdb.xdb$group_def_t to public with grant option;
grant execute on xdb.xdb$group_ref_t to public with grant option;
grant execute on xdb.xdb$attrgroup_def_t to public with grant option;
grant execute on xdb.xdb$attrgroup_ref_t to public with grant option;
grant execute on xdb.xdb$import_t to public with grant option;
grant execute on xdb.xdb$include_t to public with grant option;
grant execute on xdb.xdb$import_list_t to public with grant option;
grant execute on xdb.xdb$include_list_t to public with grant option;
grant execute on xdb.xdb$javatype to public with grant option;
grant execute on xdb.xdb$link_t to public with grant option;
grant execute on xdb.xdb$list_t to public with grant option;
grant execute on xdb.xdb$model_t to public with grant option;
grant execute on xdb.xdb$numfacet_t to public with grant option;
grant execute on xdb.xdb$processchoice to public with grant option;
grant execute on xdb.xdb$property_t to public with grant option;
grant execute on xdb.xdb$qname to public with grant option;
grant execute on xdb.xdb$raw_list_t to public with grant option;
Rem (catxdbrs) grant execute on xdb.xdb$resource_t to public with grant option;
grant execute on xdb.xdb$schema_t to public with grant option;
grant execute on xdb.xdb$simple_derivation_t to public with grant option;
grant execute on xdb.xdb$simple_t to public with grant option;
grant execute on xdb.xdb$string_list_t to public with grant option;
grant execute on xdb.xdb$timefacet_t to public with grant option;
grant execute on xdb.xdb$union_t to public with grant option;
grant execute on xdb.xdb$usechoice to public with grant option;
grant execute on xdb.xdb$notation_t to public with grant option;
grant execute on xdb.xdb$notation_list_t to public with grant option;
grant execute on xdb.xdb$xpathspec_t to public with grant option;
grant execute on xdb.xdb$xpathspec_list_t to public with grant option;
grant execute on xdb.xdb$keybase_t to public with grant option;
grant execute on xdb.xdb$keybase_list_t to public with grant option;
grant execute on xdb.xdb$xmltype_ref_list_t to public with grant option;
grant execute on sys.xmltype to public with grant option;

/* grant read privs on all tables
 *  TODO : enable ACL enforcement during selects
 */
grant read on xdb.xdb$schema to public with grant option;

grant read on xdb.xdb$any to public with grant option;
grant read on xdb.xdb$anyattr to public with grant option;
grant read on xdb.xdb$attribute to public with grant option;
grant read on xdb.xdb$complex_type to public with grant option;
grant read on xdb.xdb$element to public with grant option;
grant read on xdb.xdb$simple_type to public with grant option;
grant read on xdb.xdb$all_model to public with grant option;
grant read on xdb.xdb$choice_model to public with grant option;
grant read on xdb.xdb$sequence_model to public with grant option;
grant read on xdb.xdb$group_def to public with grant option;
grant read on xdb.xdb$group_ref to public with grant option;
grant read on xdb.xdb$attrgroup_def to public with grant option;
grant read on xdb.xdb$attrgroup_ref to public with grant option;


/* ------------------------------------------------------------------- */
/*                          INDEXES                                    */   
/* ------------------------------------------------------------------- */

/*
create unique index xdb.xdb$propnum_a on 
xdb.xdb$attribute e (reftohex(e.xmldata.parent_schema), 
                 e.xmldata.prop_number);

create unique index xdb.xdb$propnum_e on 
xdb.xdb$element e(reftohex(e.xmldata.property.parent_schema), 
              e.xmldata.property.prop_number);

create unique index xdb.xdb$schema_pk_url on xdb.xdb$schema e
   (e.xmldata.schema_url);
*/


/* if you add/alter an here please make sure to also update xdbu111.sql */

/* prop_number index */
create index xdb.xdb$element_propnumber on
xdb.xdb$element e (e.xmldata.property.prop_number);

/* prop_name index */
create index xdb.xdb$element_propname on
xdb.xdb$element e (e.xmldata.property.name);

/* schema_url */
create index xdb.xdb$schema_url on
xdb.xdb$schema s (s.xmldata.schema_url);

/* parent_schema */
create index xdb.xdb$element_ps on 
xdb.xdb$element e (sys_op_r2o(e.xmldata.property.parent_schema));   

/* propref_ref */
create  index xdb.xdb$element_pr on 
xdb.xdb$element e (sys_op_r2o(e.xmldata.property.propref_ref)); 

/* type_ref */
create  index xdb.xdb$element_tr on 
xdb.xdb$element e (sys_op_r2o(e.xmldata.property.type_ref)); 

/* sequence_kid */
create  index xdb.xdb$complex_type_sk on 
xdb.xdb$complex_type ct (sys_op_r2o(ct.xmldata.sequence_kid)); 

/* choice_kid */
create  index xdb.xdb$complex_type_ck on 
xdb.xdb$complex_type ct (sys_op_r2o(ct.xmldata.choice_kid)); 

/* all_kid */
create  index xdb.xdb$complex_type_ak on 
xdb.xdb$complex_type ct (sys_op_r2o(ct.xmldata.all_kid));

/* head_elem_ref */
create  index xdb.xdb$element_her on 
xdb.xdb$element ct (sys_op_r2o(ct.xmldata.head_elem_ref));

commit;

/* analyze xdb.xdb$element to force cbo on DBA_XML_TABLES */
analyze table xdb.xdb$element compute statistics;

/* ------------------------------------------------------------------- */
/*                      SEQUENCES                                      */   
/* ------------------------------------------------------------------- */

/* Sequence number generator for Property Numbers 
 *   The initial set of numbers are reserved for XDB internal use.
 */
create sequence xdb.xdb$propnum_seq 
  start with 2000
  cache 20;

/* Sequence number generator for name suffixes (schema compiler)
 */
create sequence xdb.xdb$namesuff_seq 
  maxvalue 99999 cycle cache 20;
grant select ON xdb.xdb$namesuff_seq TO PUBLIC;

/* Type id generator for global simple and complex types
 * The initial numbers are reserved for built-in types.
 */
create sequence xdb.xdb$typeid_seq
  start with 100
  cache 20;



@?/rdbms/admin/sqlsessend.sql

OHA YOOOO