The XML schema described in this appendix defines the format of a logical change record (LCR). The Oracle XML DB must be installed to use the XML schema for LCRs.
The namespace for this schema is the following:
http://xmlns.oracle.com/streams/schemas/lcr
The schema is the following:
http://xmlns.oracle.com/streams/schemas/lcr/streamslcr.xsd
The following is the XML schema definition for LCRs:
'<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xmlns.oracle.com/streams/schemas/lcr"
xmlns:lcr="http://xmlns.oracle.com/streams/schemas/lcr"
xmlns:xdb="http://xmlns.oracle.com/xdb"
version="1.0"
elementFormDefault="qualified">
<simpleType name = "short_name">
<restriction base = "string">
<maxLength value="30"/>
</restriction>
</simpleType>
<simpleType name = "long_name">
<restriction base = "string">
<maxLength value="4000"/>
</restriction>
</simpleType>
<simpleType name = "db_name">
<restriction base = "string">
<maxLength value="128"/>
</restriction>
</simpleType>
<!-- Default session parameter is used if format is not specified -->
<complexType name="datetime_format">
<sequence>
<element name = "value" type = "string" nillable="true"/>
<element name = "format" type = "string" minOccurs="0" nillable="true"/>
</sequence>
</complexType>
<complexType name="anydata">
<choice>
<element name="varchar2" type = "string" xdb:SQLType="CLOB"
nillable="true"/>
<!-- Represent char as varchar2. xdb:CHAR blank pads upto 2000 bytes! -->
<element name="char" type = "string" xdb:SQLType="CLOB"
nillable="true"/>
<element name="nchar" type = "string" xdb:SQLType="NCLOB"
nillable="true"/>
<element name="nvarchar2" type = "string" xdb:SQLType="NCLOB"
nillable="true"/>
<element name="number" type = "double" xdb:SQLType="NUMBER"
nillable="true"/>
<element name="raw" type = "hexBinary" xdb:SQLType="BLOB"
nillable="true"/>
<element name="date" type = "lcr:datetime_format"/>
<element name="timestamp" type = "lcr:datetime_format"/>
<element name="timestamp_tz" type = "lcr:datetime_format"/>
<element name="timestamp_ltz" type = "lcr:datetime_format"/>
<!-- Interval YM should be as per format allowed by SQL -->
<element name="interval_ym" type = "string" nillable="true"/>
<!-- Interval DS should be as per format allowed by SQL -->
<element name="interval_ds" type = "string" nillable="true"/>
<element name="urowid" type = "string" xdb:SQLType="VARCHAR2"
nillable="true"/>
</choice>
</complexType>
<complexType name="column_value">
<sequence>
<element name = "column_name" type = "lcr:long_name" nillable="false"/>
<element name = "data" type = "lcr:anydata" nillable="false"/>
<element name = "lob_information" type = "string" minOccurs="0"
nillable="true"/>
<element name = "lob_offset" type = "nonNegativeInteger" minOccurs="0"
nillable="true"/>
<element name = "lob_operation_size" type = "nonNegativeInteger"
minOccurs="0" nillable="true"/>
<element name = "long_information" type = "string" minOccurs="0"
nillable="true"/>
</sequence>
</complexType>
<complexType name="extra_attribute">
<sequence>
<element name = "attribute_name" type = "lcr:short_name"/>
<element name = "attribute_value" type = "lcr:anydata"/>
</sequence>
</complexType>
<element name = "ROW_LCR" xdb:defaultTable="">
<complexType>
<sequence>
<element name = "source_database_name" type = "lcr:db_name"
nillable="false"/>
<element name = "command_type" type = "string" nillable="false"/>
<element name = "object_owner" type = "lcr:short_name"
nillable="false"/>
<element name = "object_name" type = "lcr:short_name"
nillable="false"/>
<element name = "tag" type = "hexBinary" xdb:SQLType="RAW"
minOccurs="0" nillable="true"/>
<element name = "transaction_id" type = "string" minOccurs="0"
nillable="true"/>
<element name = "scn" type = "double" xdb:SQLType="NUMBER"
minOccurs="0" nillable="true"/>
<element name = "old_values" minOccurs = "0">
<complexType>
<sequence>
<element name = "old_value" type="lcr:column_value"
maxOccurs = "unbounded"/>
</sequence>
</complexType>
</element>
<element name = "new_values" minOccurs = "0">
<complexType>
<sequence>
<element name = "new_value" type="lcr:column_value"
maxOccurs = "unbounded"/>
</sequence>
</complexType>
</element>
<element name = "extra_attribute_values" minOccurs = "0">
<complexType>
<sequence>
<element name = "extra_attribute_value"
type="lcr:extra_attribute"
maxOccurs = "unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element name = "DDL_LCR" xdb:defaultTable="">
<complexType>
<sequence>
<element name = "source_database_name" type = "lcr:db_name"
nillable="false"/>
<element name = "command_type" type = "string" nillable="false"/>
<element name = "current_schema" type = "lcr:short_name"
nillable="false"/>
<element name = "ddl_text" type = "string" xdb:SQLType="CLOB"
nillable="false"/>
<element name = "object_type" type = "string"
minOccurs = "0" nillable="true"/>
<element name = "object_owner" type = "lcr:short_name"
minOccurs = "0" nillable="true"/>
<element name = "object_name" type = "lcr:short_name"
minOccurs = "0" nillable="true"/>
<element name = "logon_user" type = "lcr:short_name"
minOccurs = "0" nillable="true"/>
<element name = "base_table_owner" type = "lcr:short_name"
minOccurs = "0" nillable="true"/>
<element name = "base_table_name" type = "lcr:short_name"
minOccurs = "0" nillable="true"/>
<element name = "tag" type = "hexBinary" xdb:SQLType="RAW"
minOccurs = "0" nillable="true"/>
<element name = "transaction_id" type = "string"
minOccurs = "0" nillable="true"/>
<element name = "scn" type = "double" xdb:SQLType="NUMBER"
minOccurs = "0" nillable="true"/>
<element name = "extra_attribute_values" minOccurs = "0">
<complexType>
<sequence>
<element name = "extra_attribute_value"
type="lcr:extra_attribute"
maxOccurs = "unbounded"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>';