Oracle LCR$_XML_SCHEMA
Version 26ai

General Information
Library Note Morgan's Library Page Header
The best Oracle News for FY2026

Oracle Database 26ai will be available on generic Linux platforms in January and soon on AIX and Windows
Purpose XML schema definition for Logical Change Records for GoldenGate, Log Miner, and Streams

This stand-alone package header is not created by default and appears to likely last been used in version 10.1. That said, the source script is still present in version 21.1 so it will continue to be documented here in the Library.
AUTHID Not Defined
Dependencies
STANDARD (only)    
Documented No
First Available 10.1
Security Model Owned by SYS with no privileges granted
Source {ORACLE_HOME}/rdbms/admin/catxlcr1.sql

SQL> @?/rdbms/admin/catxlcr1.sql

Session altered.

SP2-0808: Package created with compilation warnings

Session altered.

SQL> sho err
Errors for PACKAGE LCR$_XM_SCHEMA:

LINE/COL ERROR
-------- ---------------------
1/1       PLW-05018: unit LCR$_XML_SCHEMA omitted optional AUTHID clause;
          default value DEFINER used
3/13      PLW-06026: package specification exposes global variable CONFIGURL
5/19      PLW-06026: package specification exposes global variable CONFIGXSD_10101
185/18    PLW-06026: package specification exposes global variable CONFIGXSD_9204
 
Source Code
CREATE OR REPLACE PACKAGE lcr$_xml_schema AS

  CONFIGURL VARCHAR2(2000) := 'https://xmlns.oracle.com/streams/schemas/lcr/streamslcr.xsd';
  CONFIGXSD_10101 VARCHAR2(20000) := '<schema xmlns="https://www.w3.org/2001/XMLSchema"
    targetNamespace="https://xmlns.oracle.com/streams/schemas/lcr"
    xmlns:lcr="https://xmlns.oracle.com/streams/schemas/lcr"
    xmlns:xdb="https://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" xdb:SQLType="LCR_DATETIME_FORMAT_T">
    <sequence>
      <element name = "value" type = "string" nillable="true"/>
      <element name = "format" type = "string" minOccurs="0" nillable="true"/>
    </sequence>
  </complexType>

  <complexType name="anydata" xdb:SQLType="LCR_ANYDATA_T">
    <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" xdb:SQLType="LCR_COLUMN_VALUE_T">
    <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" xdb:SQLType="LCR_EXTRA_ATTRIBUTE_T">
    <sequence>
      <element name = "attribute_name" type = "lcr:db_name"/>
      <element name = "attribute_value" type = "lcr:anydata"/>
    </sequence>
  </complexType>

  <element name = "ROW_LCR" xdb:defaultTable="">
    <complexType xdb:SQLType="ROW_LCR_T">
      <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:db_name" nillable="false"/>
        <element name = "object_name" type = "lcr:db_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 xdb:SQLType="LCR_OLD_VALUES_T">
      <sequence>
        <element name = "old_value" type="lcr:column_value" maxOccurs = "unbounded" xdb:SQLCollType="LCR_OLD_NEW_VALUE_T"/>
      </sequence>
    </complexType>
  </element>

    <element name = "new_values" minOccurs = "0">
      <complexType xdb:SQLType="LCR_NEW_VALUES_T">
        <sequence>
          <element name = "new_value" type="lcr:column_value" maxOccurs = "unbounded"
                xdb:SQLCollType="LCR_OLD_NEW_VALUE_T"/>
              </sequence>
            </complexType>
          </element>

          <element name = "extra_attribute_values" minOccurs = "0">
            <complexType xdb:SQLType="LCR_EXTRA_ATTRIBUTE_VALUES_T">
              <sequence>
                <element name = "extra_attribute_value" type="lcr:extra_attribute" maxOccurs = "unbounded" xdb:SQLCollType="LCR_EXTRA_ATTRIBUTE_VALUE_T"/>
              </sequence>
            </complexType>
          </element>
        </sequence>
      </complexType>
    </element>

    <element name = "DDL_LCR" xdb:defaultTable="">
      <complexType xdb:SQLType="DDL_LCR_T">
        <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:db_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:db_name" minOccurs = "0" nillable="true"/>
                <element name = "object_name" type = "lcr:db_name" minOccurs = "0" nillable="true"/>
                <element name = "logon_user" type = "lcr:db_name" minOccurs = "0" nillable="true"/>
                <element name = "base_table_owner" type = "lcr:db_name" minOccurs = "0" nillable="true"/>
                <element name = "base_table_name" type = "lcr:db_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 xdb:SQLType="LCR_EXTRA_ATTRIBUTE_VALUES_T">
              <sequence>
                <element name = "extra_attribute_value" type="lcr:extra_attribute" maxOccurs = "unbounded" xdb:SQLCollType="LCR_EXTRA_ATTRIBUTE_VALUE_T"/>
              </sequence>
            </complexType>
          </element>
        </sequence>
      </complexType>
    </element>
  </schema>';

  CONFIGXSD_9204 VARCHAR2(20000) :=
  '<schema xmlns="https://www.w3.org/2001/XMLSchema"
     targetNamespace="https://xmlns.oracle.com/streams/schemas/lcr"
     xmlns:lcr="https://xmlns.oracle.com/streams/schemas/lcr"
     xmlns:xdb="https://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" xdb:SQLType="LCR_DATETIME_FORMAT_T">
    <sequence>
      <element name = "value" type = "string" nillable="true"/>
      <element name = "format" type = "string" minOccurs="0" nillable="true"/>
    </sequence>
  </complexType>

  <complexType name="anydata" xdb:SQLType="LCR_ANYDATA_T">
    <choice>
      <element name="varchar2" type = "string" xdb:SQLType="VARCHAR2" nillable="true"/>

      <!-- Represent char as varchar2. xdb:CHAR blank pads upto 2000 bytes! -->
      <element name="char" type = "string" xdb:SQLType="VARCHAR2" nillable="true"/>
      <element name="nchar" type = "string" xdb:SQLType="NVARCHAR2" nillable="true"/>
      <element name="nvarchar2" type = "string" xdb:SQLType="NVARCHAR2" nillable="true"/>
      <element name="number" type = "double" xdb:SQLType="NUMBER" nillable="true"/>
      <element name="raw" type = "hexBinary" xdb:SQLType="RAW" 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"/>
    </choice>
  </complexType>

  <complexType name="column_value" xdb:SQLType="LCR_COLUMN_VALUE_T">
    <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"/>
    </sequence>
  </complexType>

    <element name = "ROW_LCR">
      <complexType xdb:SQLType="ROW_LCR_T">
        <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:db_name" nillable="false"/>
          <element name = "object_name" type = "lcr:db_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 xdb:SQLType="LCR_OLD_VALUES_T">
              <sequence>
                <element name = "old_value" type="lcr:column_value"maxOccurs = "unbounded" xdb:SQLCollType="LCR_OLD_NEW_VALUE_T"/>
              </sequence>
            </complexType>
          </element>

          <element name = "new_values" minOccurs = "0">
            <complexType xdb:SQLType="LCR_NEW_VALUES_T">
              <sequence>
                <element name = "new_value" type="lcr:column_value" maxOccurs = "unbounded" xdb:SQLCollType="LCR_OLD_NEW_VALUE_T"/>
              </sequence>
            </complexType>
          </element>
        </sequence>
      </complexType>
    </element>

    <element name = "DDL_LCR">
      <complexType xdb:SQLType="DDL_LCR_T">
        <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:db_name" nillable="false"/>
          <element name = "ddl_text" type = "string" nillable="false"/>
          <element name = "object_type" type = "string" minOccurs = "0" nillable="true"/>
          <element name = "object_owner" type = "lcr:db_name" minOccurs = "0" nillable="true"/>
          <element name = "object_name" type = "lcr:db_name" minOccurs = "0" nillable="true"/>
          <element name = "logon_user" type = "lcr:db_name" minOccurs = "0" nillable="true"/>
          <element name = "base_table_owner" type = "lcr:db_name" minOccurs = "0" nillable="true"/>
          <element name = "base_table_name" type = "lcr:db_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"/>
        </sequence>
      </complexType>
    </element>
  </schema>';
end;
/

Related Topics
Built-in Functions
Built-in Packages
DBMS_LCR
What's New In 21c
What's New In 26ai

Morgan's Library Page Footer
This site is maintained by Daniel Morgan. Last Updated: This site is protected by copyright and trademark laws under U.S. and International law. © 1998-2026 Daniel A. Morgan All Rights Reserved