Which has the higher priority in your organization: Deploying a new database or securing the ones you already have?
Looking for a website, and resources, dedicated solely to securing Oracle databases? Check out DBSecWorx.
Purpose
Used to register XML schemas with XDBf
AUTHID
CURRENT_USER
Constants
Name
Data Type
Value
DELETE_RESTRICT
NUMBER
1
DELETE_INVALIDATE
NUMBER
2
DELETE_CASCADE
NUMBER
3
DELETE_CASCADE_FORCE
NUMBER
4
DELETE_MIGRATE
NUMBER
8
ENABLE_HIERARCHY_NONE
PLS_INTEGER
1
ENABLE_HIERARCHY_CONTENTS
PLS_INTEGER
2
ENABLE_HIERARCHY_RESMETADATA
PLS_INTEGER
3
ENABLE_HIERARCHY_VERSION
PLS_INTEGER
4
ENABLE_HIERARCHY_LINKS
PLS_INTEGER
8
REGISTER_NODOCID
NUMBER
1
REGISTER_BINARYXML
NUMBER
2
REGISTER_NT_AS_IOT
NUMBER
4
REGISTER_CSID_NULL
NUMBER
-1
COPYEVOLVE_BINARY_XML
NUMBER
1
INPLACE_EVOLVE
NUMBER
1
INPLACE_TRACE
NUMBER
2
Data Types
TYPE URLARR IS VARRAY(1000) OF VARCHAR2(1000);
/
TYPE XMLARR IS VARRAY(1000) OF XMLType;
/
TYPE UNAME_ARR IS VARRAY(1000) OF VARCHAR2(100);
/
Converts the string representation of the following specified XML Schema types into the Oracle DATE representation using a default reference date and format mask.
dbms_xmlschema.convertToDate(
strval IN VARCHAR2,
xmltypename IN VARCHAR2)
RETURN DATE DETERMINISTIC PARALLEL_ENABLE;
Converts the string representation of the following specified XML Schema types into the Oracle TIMESTAMP representation using a default reference date and format mask.
dbms_xmlschema.convertToTS(
strval IN VARCHAR2,
xmltypename IN VARCHAR2)
RETURN TIMESTAMP DETERMINISTIC PARALLEL_ENABLE;
Converts the string representation of the following specified XML Schema types into the Oracle TIMESTAMP WITH TIMEZONE representation using a default reference date and format mask.
dbms_xmlschema.convertToTSWithTZ(
strval IN VARCHAR2,
xmltypename IN VARCHAR2)
RETURN TIMESTAMP WITH TIME ZONE DETERMINISTIC PARALLEL_ENABLE;
dbms_xmlschema.copyEvolve(
schemaURLs IN XDB$STRING_LIST_T,
newSchemas IN XMLSequenceType,
transforms IN XMLSequenceType := NULL,
preserveOldDocs IN BOOLEAN := FALSE,
mapTabName IN VARCHAR2 := NULL,
generateTables IN BOOLEAN := TRUE,
force IN BOOLEAN := FALSE,
schemaOwners IN XDB$STRING_LIST_T := NULL,
parallelDegree IN PLS_INTEGER := 0,
options IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(CopyEvolve, UNSUPPORTED_WITH_COMMIT);
dbms_xmlschema.deleteSchema(
schemaURL IN VARCHAR2,
delete_option IN PLS_INTEGER := DELETE_RESTRICT);
PRAGMA SUPPLEMENTAL_LOG_DATA(deleteSchema, UNSUPPORTED_WITH_COMMIT);
-- from $ORACLE_HOME/rdbms/admin/catnorul.sql
exec dbms_xmlschema.deleteschema('http://xmlns.oracle.com/rlmgr/rulecond.xsd');
-- from $ORACLE_HOME/ord/im/admin/imu019.sql
BEGIN
xdb.dbms_xmlschema.deleteSchema(schema_url, xdb.dbms_xmlschema.delete_cascade);
EXCEPTION
--ignore ORA-31000: Resource '..' not an XDB schema document
WHEN ex THEN
NULL;
END;
/
Generates an XML schema from an Oracle type name. generateSchemas returns a collection of XMLTypes. generateSchema inlines them all in one schema (XMLType).
dbms_xmlschema.generateSchema(
schemaName IN VARCHAR2,
typeName IN VARCHAR2,
elementName IN VARCHAR2 := NULL,
recurse IN BOOLEAN := TRUE,
annotate IN BOOLEAN := TRUE,
embedColl IN BOOLEAN := TRUE)
RETURN sys.XMLType;
conn uwclass/uwclass@pdbdev
CREATE TYPE server_t AUTHID DEFINER AS OBJECT (
srvr_id NUMBER(10),
network_id NUMBER(10),
status VARCHAR2(1),
latitude FLOAT(20),
longitude FLOAT(20),
netaddress VARCHAR2(15));
/
Generates XML schemas from an Oracle type name. One XMLSchema document for each database schema.
dbms_xmlschema.generateSchemas(
schemaName IN VARCHAR2,
typeName IN VARCHAR2,
elementName IN VARCHAR2 := NULL,
schemaURL IN VARCHAR2 := NULL,
annotate IN BOOLEAN := TRUE,
embedColl IN BOOLEAN := TRUE)
RETURN sys.XMLSequenceType;
dbms_xmlschema.inplaceEvolve(
schemaURL IN VARCHAR2,
diffXML IN sys.xmltype,
flags IN NUMBER := 1);
PRAGMA SUPPLEMENTAL_LOG_DATA(InPlaceEvolve, UNSUPPORTED_WITH_COMMIT);
dbms_xmlschema.registerSchema(
schemaURL IN VARCHAR2,
schemaDoc IN VARCHAR2,
local IN BOOLEAN := TRUE,
genTypes IN BOOLEAN := TRUE,
genbean IN BOOLEAN := FALSE,
genTables IN BOOLEAN := TRUE,
force IN BOOLEAN := FALSE,
owner IN VARCHAR2 := '',
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
-- from $ORACLE_HOME/rdbms/admin/catxdav.sql
IF IsDowngrade THEN
xdb.dbms_xmlschema.registerSchema(DAVURL, DAVXSD, FALSE, TRUE, FALSE, TRUE, FALSE, 'XDB');
ELSE
xdb.dbms_xmlschema.registerSchema(DAVURL, DAVXSD, FALSE, FALSE, FALSE, TRUE, FALSE, 'XDB', options => DBMS_XMLSCHEMA.REGISTER_BINARYXML);
END IF;
Another Demo From Oracle (unedited)
************************************************************************
* Registering the account.xsd Schema using Oracle XML DB
************************************************************************
DECLARE
doc varchar2(2000) := '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb">
<xs:element name="ACCOUNT">
<xs:complexType xdb:SQLType="XML_ACCOUNT">
<xs:sequence>
<xs:element name="ACC_NO" type="xs:float" nillable="false"/>
<xs:element name="CST_ID" type="xs:float"/>
<xs:element name="ACC_BALANCE" type="xs:float" default="0" nillable="false"/>
<xs:element name="ACC_CREDITLIMIT" type="xs:float"/>
<xs:element name="ACC_CREATEDATE" type="xs:date"/>
<xs:element name="ACC_CARDTYPE" type="xs:string"/>
<xs:element name="ACC_ENABLED" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>';
BEGIN
-- use the pl/sql package to register the schema
dbms_xmlschema.registerSchema('http://otn.oracle.com/account.xsd', doc);
END;
*************************************************************************
* Registering the customer.xsd Schema using Oracle XML DB
*************************************************************************
DECLARE
doc varchar2(2000) := '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb">
<xs:complexType name="CADDRType" xdb:SQLType="XML_CADDR" >
<xs:sequence>
<xs:element name="CST_ADDR_STREET" type="xs:string"/>
<xs:element name="CST_ADDR_CITY" type="xs:string"/>
<xs:element name="CST_ADDR_STATE" type="xs:string"/>
<xs:element name="CST_ADDR_ZIP" type="xs:string"/>
<xs:element name="CST_ADDR_COUNTRY" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="CUSTOMER">
<xs:complexType xdb:SQLType="XML_CUSTOMER">
<xs:sequence>
<xs:element name="CST_ID" type="xs:float" nillable="false"/>
<xs:element name="CST_NAME" type="xs:string"/>
<xs:element name="CST_TYPE" type="xs:string"/>
<xs:element name="CST_EMAIL" type="xs:string"/>
<xs:element name="CST_ADDR" type="CADDRType"/>
<xs:element name="CST_PHONE" type="xs:string"/>
<xs:element name="CST_JOINDATE" type="xs:date"/>
<xs:element name="CST_DESCRIPTION" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>';
BEGIN
-- use the pl/sql package to register the schema
dbms_xmlschema.registerSchema('http://otn.oracle.com/customer.xsd', doc);
END;
***************************************************************************
* Registering the transaction.xsd Schema using Oracle XML DB
***************************************************************************
DECLARE
doc varchar2(2000) := '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb">
<xs:element name="TRANSACTION">
<xs:complexType xdb:SQLType="XML_TRANSACTION">
<xs:sequence>
<xs:element name="TR_ID" type="xs:float" nillable="false"/>
<xs:element name="ACC_NO_DEBIT" type="xs:float"/>
<xs:element name="ACC_NO_CREDIT" type="xs:float"/>
<xs:element name="TR_AMOUNT" type="xs:float" default="0" nillable="false"/>
<xs:element name="TR_DATE" type="xs:dateTime"/>
<xs:element name="TR_DESCRIPTION" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>';
BEGIN
-- use the pl/sql package to register the schema
dbms_xmlschema.registerSchema('http://otn.oracle.com/transaction.xsd', doc);
END;
Overload 2
dbms_xmlschema.registerSchema(
schemaURL IN VARCHAR2,
schemaDoc IN CLOB,
local IN BOOLEAN := TRUE,
genTypes IN BOOLEAN := TRUE,
genbean IN BOOLEAN := FALSE,
genTables IN BOOLEAN := TRUE,
force IN BOOLEAN := FALSE,
owner IN VARCHAR2 := '',
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options IN PLS_INTEGER := 0,
schemaoid IN RAW := NULL,
import_options IN pls_integer := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
TBD
Overload 3
dbms_xmlschema.registerSchema(
schemaURL IN VARCHAR2,
schemaDoc IN BLOB,
local IN BOOLEAN := TRUE,
genTypes IN BOOLEAN := TRUE,
genbean IN BOOLEAN := FALSE,
genTables IN BOOLEAN := TRUE,
force IN BOOLEAN := FALSE,
owner IN VARCHAR2 := '',
csid IN NUMBER := REGISTER_CSID_NULL,
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
TBD
Overload 4
dbms_xmlschema.registerSchema(
schemaURL IN VARCHAR2,
schemaDoc IN BFILE,
local IN BOOLEAN := TRUE,
genTypes IN BOOLEAN := TRUE,
genbean IN BOOLEAN := FALSE,
genTables IN BOOLEAN := TRUE,
force IN BOOLEAN := FALSE,
owner IN VARCHAR2 := '',
csid IN NUMBER := REGISTER_CSID_NULL,
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
TBD
Overload 5
dbms_xmlschema.registerSchema(
schemaURL IN VARCHAR2,
schemaDoc IN sys.XMLType,
local IN BOOLEAN := TRUE,
genTypes IN BOOLEAN := TRUE,
genbean IN BOOLEAN := FALSE,
genTables IN BOOLEAN := TRUE,
force IN BOOLEAN := FALSE,
owner IN VARCHAR2 := '',
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
TBD
Overload 6
dbms_xmlschema.registerSchema(
schemaURL IN VARCHAR2,
schemaDoc IN sys.UriType,
local IN BOOLEAN := TRUE,
genTypes IN BOOLEAN := TRUE,
genbean IN BOOLEAN := FALSE,
genTables IN BOOLEAN := TRUE,
force IN BOOLEAN := FALSE,
owner IN VARCHAR2 := '',
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerSchema, UNSUPPORTED_WITH_COMMIT);
This function constructs a URIType instance using the URIFactory and invokes the regiserSchema function
dbms_xmlschema.registerURI(
schemaURL IN VARCHAR2,
schemaDocURI IN VARCHAR2,
local IN BOOLEAN := TRUE,
genTypes IN BOOLEAN := TRUE,
genbean IN BOOLEAN := FALSE,
genTables IN BOOLEAN := TRUE,
force IN BOOLEAN := FALSE,
owner IN VARCHAR2 := '',
enableHierarchy IN PLS_INTEGER := ENABLE_HIERARCHY_CONTENTS,
options IN PLS_INTEGER := 0);
PRAGMA SUPPLEMENTAL_LOG_DATA(registerURI, UNSUPPORTED_WITH_COMMIT);