MINI MINI MANI MO

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

Rem
Rem $Header: rdbms/admin/catlmnr.sql /main/40 2017/06/26 16:01:18 pjulsaks Exp $
Rem
Rem catlmnr.sql
Rem
Rem Copyright (c) 2007, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      catlmnr.sql - Create Tables and Views for Logminer
Rem
Rem    DESCRIPTION
Rem      This script creates logminer views and partitioned tables
Rem
Rem    NOTES
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/catlmnr.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/catlmnr.sql
Rem SQL_PHASE: CATLMNR
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: ORA-00955
Rem SQL_CALLING_FILE: rdbms/admin/catptabs.sql
Rem END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    pjulsaks    06/26/17 - Bug 25688154: Uppercase create_cdbview's input
Rem    tchorma     06/07/17 - bug 26234638 - remove unneccesary grant to SYS
Rem    yunkzhan    03/27/17 - Bug 22295425 - Add user_gg_rec and
Rem                           user_gg_recs types
Rem    tchorma     12/18/16 - Proj 47075 - Identity column Support for rolling
Rem    dvoss       11/15/16 - bug 5703311: add/expose logmnr_session$.purge_scn
Rem    dvoss       07/16/15 - bug 21456550: naming change
Rem    raeburns    06/04/15 - Use FORCE for types with only type dependents
Rem    smangala    04/02/15 - proj 58812: track auto cdr columns
Rem                         - dvoss: add COLLID and COLLINTCOL# for logminer
Rem    dvoss       03/24/15 - bug 20759099: allow wide numbers for
Rem                           tab$.property
Rem    dvoss       02/02/15 - proj 49286: per pdb characterset support
Rem    svivian     01/28/15 - bug 20392814: extend part_typ to support long 
Rem                           idents
Rem    dvoss       01/26/15 - proj 49288: track more cols in container$
Rem    abrown      12/05/14 - Bug 20105469: logmnr_tab_cols_support missing
Rem                           logmnr_uid predicate
Rem    smangala    11/17/14 - proj-58811: add support for sharding
Rem    yunkzhan    09/02/14 - Bug 19532017 - Add index SYSTEM.LOGMNR_I3CDEF
Rem    yunkzhan    07/23/14 - Add type GSBA_GG_REC
Rem    svivian     06/03/14 - long identifier support
Rem    surman      12/29/13 - 13922626: Update SQL metadata
Rem    gkulkarn    09/25/13 - Add secondary index LOGMNR_I3OBJ$ on
Rem                           SYSTEM.LOGMNR_OBJ$
Rem    tchorma     09/11/13 - Bug 17381384 - Fix subquery for internal refs in
Rem                           logmnr_gtcs_support
Rem    dvoss       09/11/13 - bug 17328599: moving type definitions
Rem    talliu      06/28/13 - Add CDB view for DBA view
Rem    dvoss       08/24/12 - bug 14508550 - logminer metadata fixes
Rem                           cdb/constraints
Rem    yunkzhan    08/21/12 - Bug-13894794 Add LOGMNRDERIVEDFLAGS to
Rem                           logmnrc_gtcs table and related views.
Rem    abrown      07/26/12 - Bug 14378546 : Logminer must track CON$
Rem    praghuna    07/15/12 - bug 14283060: Added logmnrc_*_gg tables
Rem    surman      04/12/12 - 13615447: Add SQL patching tags
Rem    tchorma     01/17/12 - bug 13365883 - populate type name,owner for
Rem                           ANYDATA
Rem    dvoss       01/06/12 - logminer_dictionary$.pdb_count, pdb_create_scn
Rem    gkulkarn    08/01/11 - Add DBA_SUPPLEMENTAL_LOGGING catalog view
Rem    dvoss       04/12/11 - Project 33052 - DB Consolidation
Rem    traney      03/29/11 - 35209: long identifiers dictionary upgrade
Rem    abrown      05/18/10 - Bug 9708526: Missing predicate for
Rem                           XReffedTableObjn etc.
Rem    jgalanes    08/16/08 - Add logmnrC_gsba for XML FDO tracking
Rem    preilly     07/17/07 - Need to get xmlintcol for special columns
Rem    dvoss       06/10/08 - bug 7033630 - add logmnrc_i2gtcs
Rem    dvoss       03/23/07 - bug 5867998
Rem    dvoss       02/12/07 - add grant to sys
Rem    dvoss       01/04/07 - Created
Rem

@@?/rdbms/admin/sqlsessstart.sql

Rem Define views that depend on new bootstrap table columns
@@catlmnr_mig.sql

Rem Create partitioned Logminer tables if they do not yet exist

alter session set events '14524 trace name context forever, level 1';
CREATE TABLE SYSTEM.LOGMNR_DICTSTATE$ (
                    LOGMNR_UID NUMBER(22),
                    START_SCNBAS NUMBER,
                    START_SCNWRP NUMBER,
                    END_SCNBAS NUMBER,
                    END_SCNWRP NUMBER,
                    REDO_THREAD NUMBER,
                    RBASQN NUMBER,
                    RBABLK NUMBER,
                    RBABYTE NUMBER,
                    LOGMNR_FLAGS NUMBER(22),
                    constraint LOGMNR_DICTSTATE$_PK
                       primary key (LOGMNR_UID) disable)
                 PARTITION BY RANGE(logmnr_uid)
                    ( PARTITION p_lessthan100 VALUES LESS THAN (100))
                 TABLESPACE SYSAUX LOGGING
/
CREATE TABLE SYSTEM.LOGMNRC_GTLO( 
                  LOGMNR_UID         NUMBER NOT NULL, 
                  KEYOBJ#            NUMBER NOT NULL,
                  LVLCNT             NUMBER NOT NULL,  /* level count */
                  BASEOBJ#           NUMBER NOT NULL,  /* base object number */
                  BASEOBJV#          NUMBER NOT NULL,  
                                                      /* base object version */
                  LVL1OBJ#           NUMBER,  /* level 1 object number */
                  LVL2OBJ#           NUMBER,  /* level 2 object number */
                  LVL0TYPE#          NUMBER NOT NULL,
                                              /* level 0 (base obj) type # */
                  LVL1TYPE#          NUMBER,  /* level 1 type # */
                  LVL2TYPE#          NUMBER,  /* level 2 type # */
                  OWNER#             NUMBER,  /* owner number */
                  OWNERNAME          VARCHAR2(384) NOT NULL,
                  LVL0NAME           VARCHAR2(384) NOT NULL,
                                              /* name of level 0 (base obj)  */
                  LVL1NAME           VARCHAR2(384), /* name of level 1 object */
                  LVL2NAME           VARCHAR2(384), /* name of level 2 object */
                  INTCOLS            NUMBER NOT NULL,
                              /* for table object, number of all types cols  */
                  COLS               NUMBER,
                           /* for table object, number of user visable cols  */
                  KERNELCOLS         NUMBER,
                        /* for table object, number of non zero secol# cols  */
                  TAB_FLAGS          NUMBER,   /* TAB$.FLAGS        */
                  TRIGFLAG           NUMBER,   /* TAB$.TRIGFLAG     */
                  ASSOC#             NUMBER,   /* IOT/OF Associated object */
                  OBJ_FLAGS          NUMBER,   /* OBJ$.FLAGS        */
                  TS#                NUMBER, /* table space number */
                  TSNAME             VARCHAR2(90), /* table space name   */
                  PROPERTY           NUMBER,
                  /* Replication Dictionary Specific Columns  */
                  START_SCN          NUMBER NOT NULL,
                                            /* SCN at which existence begins */
                  DROP_SCN         NUMBER,  /* SCN at which existence ends   */
                  XIDUSN             NUMBER,
                                        /* src txn which created this object */
                  XIDSLT             NUMBER,
                  XIDSQN             NUMBER,
                  FLAGS              NUMBER,
                  LOGMNR_SPARE1             NUMBER,
                  LOGMNR_SPARE2             NUMBER,
                  LOGMNR_SPARE3             VARCHAR2(1000),
                  LOGMNR_SPARE4             DATE,
                  LOGMNR_SPARE5             NUMBER,
                  LOGMNR_SPARE6             NUMBER,
                  LOGMNR_SPARE7             NUMBER,
                  LOGMNR_SPARE8             NUMBER,
                  LOGMNR_SPARE9             NUMBER,
                /* New in V11  */
                  PARTTYPE                  NUMBER,
                  SUBPARTTYPE               NUMBER,
                  UNSUPPORTEDCOLS           NUMBER,
                  COMPLEXTYPECOLS           NUMBER,
                  NTPARENTOBJNUM            NUMBER,
                  NTPARENTOBJVERSION        NUMBER,
                  NTPARENTINTCOLNUM         NUMBER,
                  LOGMNRTLOFLAGS            NUMBER,
                  LOGMNRMCV                 VARCHAR2(30),
                /* New in V12  */
                  ACDRFLAGS                 NUMBER,         /* automatic CDR */
                  ACDRTSOBJ#                NUMBER,         /* automatic CDR */
                  ACDRROWTSINTCOL#          NUMBER,         /* automatic CDR */
                    CONSTRAINT LOGMNRC_GTLO_PK
                    PRIMARY KEY(LOGMNR_UID, KEYOBJ#, BASEOBJV#)
                    USING INDEX LOCAL
                  ) PARTITION BY RANGE(logmnr_uid)
                     ( PARTITION p_lessthan100 VALUES LESS THAN (100))
                  TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNRC_I2GTLO 
    ON SYSTEM.LOGMNRC_GTLO (logmnr_uid, baseobj#, baseobjv#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNRC_I3GTLO 
    ON SYSTEM.LOGMNRC_GTLO (logmnr_uid, drop_scn) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNRC_GTCS(
                   LOGMNR_UID                NUMBER NOT NULL,
                   OBJ#                      NUMBER NOT NULL,
                                              /* table (base) object number  */
                   OBJV#                     NUMBER NOT NULL,
                                              /* table object version        */
                   SEGCOL#                   NUMBER NOT NULL,
                                              /* segcol# of column           */
                   INTCOL#                   NUMBER NOT NULL,
                                              /* intcol# of column           */
                   COLNAME                   VARCHAR2(384) NOT NULL, 
                                              /* name of column              */
                   TYPE#                     NUMBER NOT NULL, /* column type */
                   LENGTH                    NUMBER, /* data length */
                   PRECISION                 NUMBER, /* data precision */
                   SCALE                     NUMBER, /* data scale */
                   INTERVAL_LEADING_PRECISION  NUMBER,
                                       /* Interval Leading Precision, if any */
                   INTERVAL_TRAILING_PRECISION NUMBER,
                                      /* Interval trailing precision, if any */
                   PROPERTY                  NUMBER,
                   TOID                      RAW(16),
                   CHARSETID                 NUMBER,
                   CHARSETFORM               NUMBER,
                   TYPENAME                  VARCHAR2(384),
                   FQCOLNAME                 VARCHAR2(4000),
                                              /* fully-qualified column name */
                   NUMINTCOLS                NUMBER, /* Number of Int Cols  */
                   NUMATTRS                  NUMBER,
                   ADTORDER                  NUMBER,
                   LOGMNR_SPARE1                    NUMBER,
                   LOGMNR_SPARE2                    NUMBER,
                   LOGMNR_SPARE3                    VARCHAR2(1000),
                   LOGMNR_SPARE4                    DATE,
                   LOGMNR_SPARE5             NUMBER,
                   LOGMNR_SPARE6             NUMBER,
                   LOGMNR_SPARE7             NUMBER,
                   LOGMNR_SPARE8             NUMBER,
                   LOGMNR_SPARE9             NUMBER,
                /* New for V11.  */
                   COL#                      NUMBER,
                   XTYPESCHEMANAME           VARCHAR2(384),
                   XTYPENAME                 VARCHAR2(4000),
                   XFQCOLNAME                VARCHAR2(4000),
                   XTOPINTCOL                NUMBER,
                   XREFFEDTABLEOBJN          NUMBER,
                   XREFFEDTABLEOBJV          NUMBER,
                   XCOLTYPEFLAGS             NUMBER,
                   XOPQTYPETYPE              NUMBER,
                   XOPQTYPEFLAGS             NUMBER,
                   XOPQLOBINTCOL             NUMBER,
                   XOPQOBJINTCOL             NUMBER,
                   XXMLINTCOL                NUMBER,
                   EAOWNER#                  NUMBER,
                   EAMKEYID                  VARCHAR2(192),
                   EAENCALG                  NUMBER,
                   EAINTALG                  NUMBER,
                   EACOLKLC                  RAW(2000),
                   EAKLCLEN                  NUMBER,
                   EAFLAGS                   NUMBER,
		        /* New for V12.  */
                   LOGMNRDERIVEDFLAGS        NUMBER,
                   COLLID                    NUMBER,
                   COLLINTCOL#               NUMBER,
                   ACDRRESCOL#               NUMBER,        /* automatic CDR */
                     constraint logmnrc_gtcs_pk
                     primary key(logmnr_uid, obj#, objv#,intcol#)
                     using index local
                  ) PARTITION BY RANGE(logmnr_uid)
                     ( PARTITION p_lessthan100 VALUES LESS THAN (100))
                    TABLESPACE SYSAUX LOGGING
/

Rem Note the following index may not exist prior to 11.1.0.7.
CREATE INDEX SYSTEM.LOGMNRC_I2GTCS
    ON SYSTEM.LOGMNRC_GTCS (logmnr_uid, obj#, objv#, segcol#, intcol#)
    TABLESPACE SYSAUX LOCAL LOGGING
/


Rem 
Rem LOGMNRC_SEQ_GG is a table to hold sequence related information for GG.
Rem This is versioned by the commit_scn of the ddl.
Rem Sequences are versioned on every ddl on them. Each ddl on a sequence
Rem pushes a row into this table that contains the before image of the ddl.
Rem  SEQ_FLAGS is a bit field column whose bits can be
Rem     SEQ_CYCLE - derived from seq$.cycle#
Rem     SEQ_ORDER - derived from seq$.order$

CREATE TABLE SYSTEM.LOGMNRC_SEQ_GG (
                   LOGMNR_UID NUMBER NOT NULL,
                   OBJ#       NUMBER NOT NULL,
                   COMMIT_SCN NUMBER NOT NULL,
                   DROP_SCN   NUMBER,
                   SEQ_FLAGS  NUMBER NOT NULL, 
                   OWNER#      NUMBER NOT NULL,
                   OWNERNAME   VARCHAR2(384) NOT NULL,
                   OBJNAME    VARCHAR2(384) NOT NULL,
                   SEQCACHE    NUMBER, /* Used for sequences */
                   SEQINC      NUMBER,
                   SPARE1     NUMBER,
                   SPARE2     NUMBER,
                   SPARE3     VARCHAR2(4000),
                   SPARE4     VARCHAR2(4000),
                    constraint logmnrc_seq_gg_pk
                      primary key(logmnr_uid, obj#,commit_scn)
                      using index local
            ) PARTITION BY RANGE(logmnr_uid)
                     ( PARTITION p_lessthan100 VALUES LESS THAN (100))
            TABLESPACE SYSAUX LOGGING
/


CREATE INDEX SYSTEM.LOGMNRC_I2SEQGG
    ON SYSTEM.LOGMNRC_SEQ_GG (logmnr_uid, drop_scn)
    TABLESPACE SYSAUX LOCAL LOGGING
/

Rem
Rem LOGMNRC_CON_GG is a table to hold the constraint information
Rem tracked by SCN.
Rem

CREATE TABLE SYSTEM.LOGMNRC_CON_GG (
                   LOGMNR_UID NUMBER NOT NULL,
                   CON#       NUMBER NOT NULL,
                   NAME       VARCHAR2(384) NOT NULL,
                   COMMIT_SCN NUMBER NOT NULL,
                   DROP_SCN   NUMBER,
                   BASEOBJ#   NUMBER NOT NULL,
                   BASEOBJV#  NUMBER NOT NULL,
                   FLAGS      NUMBER NOT NULL, 
                   INDEXOBJ#  NUMBER,
                   SPARE1     NUMBER,
                   SPARE2     NUMBER,
                   SPARE3     NUMBER,
                   SPARE4     VARCHAR2(4000),
                   SPARE5     VARCHAR2(4000),
                   SPARE6     VARCHAR2(4000),
                    constraint logmnrc_con_gg_pk
                  primary key(logmnr_uid, con#, commit_scn)
                      using index local
            ) PARTITION BY RANGE(logmnr_uid)
                     ( PARTITION p_lessthan100 VALUES LESS THAN (100))
            TABLESPACE SYSAUX LOGGING
/

CREATE INDEX SYSTEM.LOGMNRC_I1CONGG
    ON SYSTEM.LOGMNRC_CON_GG (logmnr_uid, baseobj#, baseobjv#, commit_scn)
    TABLESPACE SYSAUX LOCAL LOGGING
/

CREATE INDEX SYSTEM.LOGMNRC_I2CONGG
    ON SYSTEM.LOGMNRC_CON_GG (logmnr_uid, drop_scn)
    TABLESPACE SYSAUX LOCAL LOGGING
/

Rem
Rem LOGMNRC_CONCOL_GG would contain the column information of the
Rem constraints pushed into LOGMNRC_CON_GG.
Rem

CREATE TABLE SYSTEM.LOGMNRC_CONCOL_GG (
                   LOGMNR_UID NUMBER NOT NULL,
                   CON#       NUMBER NOT NULL,
                   COMMIT_SCN NUMBER NOT NULL,
                   INTCOL#    NUMBER NOT NULL,
                   POS#       NUMBER,
                   SPARE1 NUMBER,
                   SPARE2 NUMBER,
                   SPARE3 VARCHAR2(4000),
                   constraint logmnrc_concol_gg_pk
                    primary key(logmnr_uid, con#, commit_scn, intcol#)
                    using index local
              ) PARTITION BY RANGE(logmnr_uid)
                     ( PARTITION p_lessthan100 VALUES LESS THAN (100))
              TABLESPACE SYSAUX LOGGING
/

Rem
Rem LOGMNRC_IND_GG is a table to hold the index information
Rem tracked by SCN.
Rem

CREATE TABLE SYSTEM.LOGMNRC_IND_GG (
                   LOGMNR_UID NUMBER NOT NULL,
                   OBJ#       NUMBER NOT NULL,
                   NAME       VARCHAR2(384) NOT NULL,
                   COMMIT_SCN NUMBER NOT NULL,
                   DROP_SCN   NUMBER,
                   BASEOBJ#   NUMBER NOT NULL,
                   BASEOBJV#  NUMBER NOT NULL,
                   FLAGS      NUMBER NOT NULL, 
                   OWNER#     NUMBER NOT NULL,
                   OWNERNAME  VARCHAR2(384) NOT NULL,
                   SPARE1     NUMBER,
                   SPARE2     NUMBER,
                   SPARE3     NUMBER,
                   SPARE4     VARCHAR2(4000),
                   SPARE5     VARCHAR2(4000),
                   SPARE6     VARCHAR2(4000),
                    constraint logmnrc_ind_gg_pk
                  primary key(logmnr_uid, obj#, commit_scn)
                      using index local
            ) PARTITION BY RANGE(logmnr_uid)
                     ( PARTITION p_lessthan100 VALUES LESS THAN (100))
            TABLESPACE SYSAUX LOGGING
/

CREATE INDEX SYSTEM.LOGMNRC_I1INDGG
    ON SYSTEM.LOGMNRC_IND_GG (logmnr_uid, baseobj#, baseobjv#, commit_scn)
    TABLESPACE SYSAUX LOCAL LOGGING
/

CREATE INDEX SYSTEM.LOGMNRC_I2INDGG
    ON SYSTEM.LOGMNRC_IND_GG (logmnr_uid, drop_scn)
    TABLESPACE SYSAUX LOCAL LOGGING
/

Rem 
Rem LOGMNRC_INDCOL_GG would contain the column information of the indexes
Rem pushed into LOGMNRC_IND_GG.
Rem
 
CREATE TABLE SYSTEM.LOGMNRC_INDCOL_GG (
         LOGMNR_UID NUMBER NOT NULL,
         OBJ#       NUMBER NOT NULL,
         COMMIT_SCN NUMBER NOT NULL,
         INTCOL#    NUMBER NOT NULL,
         POS#       NUMBER NOT NULL,
         SPARE1 NUMBER,
         SPARE2 NUMBER,
         SPARE3 VARCHAR2(4000),
         constraint logmnrc_indcol_gg_pk
          primary key(logmnr_uid, obj#, commit_scn, intcol#)
          using index local
    ) PARTITION BY RANGE(logmnr_uid)
           ( PARTITION p_lessthan100 VALUES LESS THAN (100))
    TABLESPACE SYSAUX LOGGING
/

Rem 
Rem LOGMNRC_SHARD_TS contains information from LOGMNR_SHARD_TABLESPACE
Rem tracked by SCN
Rem
CREATE TABLE SYSTEM.LOGMNRC_SHARD_TS (
         LOGMNR_UID        NUMBER NOT NULL,
         TABLESPACE_NAME   VARCHAR2(90) NOT NULL, 
         CHUNK_NUMBER      NUMBER NOT NULL,
         START_SCN         NUMBER NOT NULL,
         DROP_SCN          NUMBER,
         SPARE1            NUMBER,
         SPARE2            NUMBER,
         SPARE3            VARCHAR2(4000),
         CONSTRAINT LOGMNRC_SHARD_TS_PK
          PRIMARY KEY(LOGMNR_UID, TABLESPACE_NAME, START_SCN)
          USING INDEX LOCAL
    ) PARTITION BY RANGE(LOGMNR_UID)
           ( PARTITION P_LESSTHAN100 VALUES LESS THAN (100))
    TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNRC_I1SHARD_TS
    ON SYSTEM.LOGMNRC_SHARD_TS (LOGMNR_UID, DROP_SCN)
    TABLESPACE SYSAUX LOCAL LOGGING
/

Rem 
Rem LOGMNRC_TSPART contains information from several part$ tables tracked by
Rem SCN.  The table provides a mapping from an object number to the
Rem corresponding tablespace number.  The source tables tracked by this cache
Rem table are LOGMNR_TABPART$, LOGMNR_INDPART$, LOGMNR_TABSUBPART$,
Rem LOGMNR_INDSUBPART$.  Although, not required for sharding, it also tracks
Rem LOGMNR_TAB$ and LOGMNR_IND$ to the extend it can.
Rem
CREATE TABLE SYSTEM.LOGMNRC_TSPART (
         LOGMNR_UID NUMBER NOT NULL,
         OBJ#       NUMBER NOT NULL,
         TS#        NUMBER NOT NULL,
         START_SCN  NUMBER NOT NULL,
         DROP_SCN   NUMBER,
         SPARE1     NUMBER,
         SPARE2     NUMBER,
         SPARE3     VARCHAR2(4000),
       CONSTRAINT LOGMNRC_TSPART_PK
       PRIMARY KEY(LOGMNR_UID, OBJ#, START_SCN)
       USING INDEX LOCAL
    ) PARTITION BY RANGE(LOGMNR_UID)
           ( PARTITION P_LESSTHAN100 VALUES LESS THAN (100))
    TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNRC_I1TSPART
    ON SYSTEM.LOGMNRC_TSPART (LOGMNR_UID, DROP_SCN)
    TABLESPACE SYSAUX LOCAL LOGGING
/

Rem 
Rem LOGMNRC_TS contains information from LOGMNR_TS$ tracked by SCN
Rem
CREATE TABLE SYSTEM.LOGMNRC_TS (
                   LOGMNR_UID NUMBER NOT NULL,
                   TS#        NUMBER(22),
                   NAME       VARCHAR2(90),
                   START_SCN  NUMBER NOT NULL,
                   DROP_SCN   NUMBER,
                   SPARE1     NUMBER,
                   SPARE2     NUMBER,
                   SPARE3     VARCHAR2(4000),
                 CONSTRAINT LOGMNRC_TS_PK
                 PRIMARY KEY(LOGMNR_UID, TS#, START_SCN)
                 USING INDEX LOCAL
              ) PARTITION BY RANGE(LOGMNR_UID)
                     ( PARTITION P_LESSTHAN100 VALUES LESS THAN (100))
              TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNRC_I1TS
    ON SYSTEM.LOGMNRC_TS (LOGMNR_UID, DROP_SCN)
    TABLESPACE SYSAUX LOCAL LOGGING
/

CREATE TABLE SYSTEM.LOGMNRC_GSII(
                   LOGMNR_UID                NUMBER NOT NULL,
                   OBJ#                      NUMBER NOT NULL,
                   BO#                       NUMBER NOT NULL,
                   INDTYPE#                  NUMBER NOT NULL,
                   DROP_SCN                  NUMBER,
                   LOGMNR_SPARE1             NUMBER,
                   LOGMNR_SPARE2             NUMBER,
                   LOGMNR_SPARE3             VARCHAR2(1000),
                   LOGMNR_SPARE4             DATE,
                     constraint logmnrc_gsii_pk primary key(logmnr_uid, obj#)
                                 using index local
                  ) PARTITION BY RANGE(logmnr_uid)
                     ( PARTITION p_lessthan100 VALUES LESS THAN (100))
                    TABLESPACE SYSAUX LOGGING
/
CREATE TABLE SYSTEM.LOGMNRC_GSBA(
                   LOGMNR_UID                NUMBER NOT NULL,
                   AS_OF_SCN                 NUMBER NOT NULL,
                   FDO_LENGTH                NUMBER,
                   FDO_VALUE                 RAW(255),
                   CHARSETID                 NUMBER,
                   NCHARSETID                NUMBER,
                   DBTIMEZONE_LEN            NUMBER,
                   DBTIMEZONE_VALUE          VARCHAR2(192),
                   LOGMNR_SPARE1             NUMBER,
                   LOGMNR_SPARE2             NUMBER,
                   LOGMNR_SPARE3             VARCHAR2(1000),
                   LOGMNR_SPARE4             DATE,
                   DB_GLOBAL_NAME            VARCHAR2(384),
                     constraint logmnrc_gsba_pk 
                       primary key(logmnr_uid, as_of_scn)
                                 using index local
                  ) PARTITION BY RANGE(logmnr_uid)
                     ( PARTITION p_lessthan100 VALUES LESS THAN (100))
                    TABLESPACE SYSAUX LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_SEED$ (
      SEED_VERSION NUMBER(22),
      GATHER_VERSION NUMBER(22),
      SCHEMANAME VARCHAR2(384),
      OBJ# NUMBER,
      OBJV# NUMBER(22),
      TABLE_NAME VARCHAR2(384),
      COL_NAME VARCHAR2(384),
      COL# NUMBER,
      INTCOL# NUMBER,
      SEGCOL# NUMBER,
      TYPE# NUMBER,
      LENGTH NUMBER,
      PRECISION# NUMBER,
      SCALE NUMBER,
      NULL$ NUMBER NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_SEED$_pk 
         primary key (LOGMNR_UID, OBJ#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1SEED$ 
    ON SYSTEM.LOGMNR_SEED$ (LOGMNR_UID, OBJ#, INTCOL#)
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2SEED$ 
    ON SYSTEM.LOGMNR_SEED$ (logmnr_uid, schemaname, table_name,
                     col_name, obj#, intcol#)
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_DICTIONARY$ (
      DB_NAME VARCHAR2(27),            /* 3x9 (v$database.name) */
      DB_ID NUMBER(20),
      DB_CREATED VARCHAR2(20),         /* ASCII */
      DB_DICT_CREATED VARCHAR2(20),    /* ASCII */
      DB_DICT_SCN NUMBER(22),
      DB_THREAD_MAP RAW(8),
      DB_TXN_SCNBAS NUMBER(22),
      DB_TXN_SCNWRP NUMBER(22),
      DB_RESETLOGS_CHANGE# NUMBER(22),
      DB_RESETLOGS_TIME VARCHAR2(20),  /* ASCII */
      DB_VERSION_TIME VARCHAR2(20),    /* ASCII */
      DB_REDO_TYPE_ID VARCHAR2(8),     /* no longer used */
      DB_REDO_RELEASE VARCHAR2(60),    /* no longer used */
      DB_CHARACTER_SET VARCHAR2(192),/* 3x64 (sys.nls_database_parameters) */
      DB_VERSION VARCHAR2(240),      /* 3x80 (sys.product_component_version) */
      DB_STATUS VARCHAR2(240),       /* 3x80 (sys.product_component_version) */
      DB_GLOBAL_NAME VARCHAR(384),   /* 3x128 (128 is longest name allowed) */ 
      DB_DICT_MAXOBJECTS NUMBER(22),
      DB_DICT_OBJECTCOUNT NUMBER(22) NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      PDB_NAME VARCHAR(384),         /* 3x128 - may be oversized */
      PDB_ID NUMBER,
      PDB_UID NUMBER,
      PDB_DBID NUMBER,
      PDB_GUID RAW(16),
      PDB_CREATE_SCN NUMBER,
      PDB_COUNT NUMBER,
      PDB_GLOBAL_NAME VARCHAR2(384),
      FED_ROOT_CON_ID# NUMBER,
      constraint LOGMNR_DICTIONARY$_pk primary key (LOGMNR_UID) disable  ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1DICTIONARY$ 
    ON SYSTEM.LOGMNR_DICTIONARY$ (LOGMNR_UID)
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_OBJ$ (
      OBJV# NUMBER(22),
      OWNER# NUMBER(22),
      NAME VARCHAR2(384),
      NAMESPACE NUMBER(22),
      SUBNAME VARCHAR2(384),
      TYPE# NUMBER(22),
      OID$  RAW(16),
      REMOTEOWNER VARCHAR2(384),
      LINKNAME VARCHAR(384),
      FLAGS NUMBER(22),
      SPARE3 NUMBER(22),
      STIME DATE,
      OBJ# NUMBER(22) NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      START_SCNBAS NUMBER,
      START_SCNWRP NUMBER,
      constraint LOGMNR_OBJ$_pk primary key (LOGMNR_UID, OBJ#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1OBJ$ 
    ON SYSTEM.LOGMNR_OBJ$ (LOGMNR_UID, OBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2OBJ$ 
    ON SYSTEM.LOGMNR_OBJ$ (logmnr_uid, oid$) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I3OBJ$ 
    ON SYSTEM.LOGMNR_OBJ$ (LOGMNR_UID, NAME) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_TAB$ (
      TS# NUMBER(22),
      COLS NUMBER(22),
      PROPERTY NUMBER,
      INTCOLS NUMBER(22),
      KERNELCOLS NUMBER(22),
      BOBJ# NUMBER(22),
      TRIGFLAG NUMBER(22),
      FLAGS NUMBER(22),
      OBJ# NUMBER(22) NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      ACDRFLAGS        NUMBER,                              /* Automatic CDR */
      ACDRTSOBJ#       NUMBER,                              /* Automatic CDR */
      ACDRROWTSINTCOL# NUMBER,                              /* Automatic CDR */
      constraint LOGMNR_TAB$_pk primary key (LOGMNR_UID, OBJ#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1TAB$ 
    ON SYSTEM.LOGMNR_TAB$ (LOGMNR_UID, OBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2TAB$ 
    ON SYSTEM.LOGMNR_TAB$ (logmnr_uid, bobj#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_COL$ (
      COL# NUMBER(22),
      SEGCOL# NUMBER(22),
      NAME VARCHAR2(384),
      TYPE# NUMBER(22),
      LENGTH NUMBER(22),
      PRECISION# NUMBER(22),
      SCALE NUMBER(22),
      NULL$ NUMBER(22),
      INTCOL# NUMBER(22),
      PROPERTY NUMBER(22),
      CHARSETID NUMBER(22),
      CHARSETFORM NUMBER(22),
      SPARE1 NUMBER(22),
      SPARE2 NUMBER(22),
      OBJ# NUMBER(22) NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      COLLID NUMBER,
      COLLINTCOL# NUMBER,
      ACDRRESCOL# NUMBER,                                  /* Autodmatic CDR */
      constraint LOGMNR_COL$_pk 
        primary key (LOGMNR_UID, OBJ#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1COL$ 
    ON SYSTEM.LOGMNR_COL$ (LOGMNR_UID, OBJ#, INTCOL#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2COL$ 
    ON SYSTEM.LOGMNR_COL$ (logmnr_uid, obj#, name) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I3COL$ 
    ON SYSTEM.LOGMNR_COL$ (logmnr_uid, obj#, col#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_ATTRCOL$ (
      INTCOL#   number,
      NAME      varchar2(4000),
      OBJ#      number NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_ATTRCOL$_pk 
         primary key (LOGMNR_UID, OBJ#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1ATTRCOL$
    ON SYSTEM.LOGMNR_ATTRCOL$ (LOGMNR_UID, OBJ#, INTCOL#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_TS$ (
      TS#          NUMBER(22),
      NAME         VARCHAR2(90),
      OWNER#       NUMBER(22),
      BLOCKSIZE    NUMBER(22) NOT NULL,
      LOGMNR_UID   NUMBER(22),
      LOGMNR_FLAGS NUMBER(22),
      START_SCNBAS NUMBER,
      START_SCNWRP NUMBER,
      constraint LOGMNR_TS$_pk primary key (LOGMNR_UID, TS#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1TS$ 
    ON SYSTEM.LOGMNR_TS$ (LOGMNR_UID, TS#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_IND$ (
     BO#      NUMBER(22),
     COLS     NUMBER(22),
     TYPE#    NUMBER(22),
     FLAGS    NUMBER,
     PROPERTY NUMBER,
     OBJ#     NUMBER(22) NOT NULL,
     logmnr_uid NUMBER(22),
     logmnr_flags NUMBER(22),
     constraint LOGMNR_IND$_pk primary key (LOGMNR_UID, OBJ#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1IND$
    ON SYSTEM.LOGMNR_IND$ (LOGMNR_UID, OBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2IND$
    ON SYSTEM.LOGMNR_IND$ (LOGMNR_UID, BO#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_USER$ (
      USER# NUMBER(22),
      NAME VARCHAR2(384) NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_USER$_pk primary key (LOGMNR_UID, USER#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1USER$ 
    ON SYSTEM.LOGMNR_USER$ (LOGMNR_UID, USER#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2USER$ 
    ON SYSTEM.LOGMNR_USER$ (LOGMNR_UID, NAME) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_TABPART$ (
      OBJ# NUMBER(22),
      TS# NUMBER(22),
      PART# NUMBER,
      BO# NUMBER(22) NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_TABPART$_pk 
         primary key (LOGMNR_UID, OBJ#, BO#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1TABPART$
    ON SYSTEM.LOGMNR_TABPART$ (LOGMNR_UID, OBJ#, BO#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2TABPART$
    ON SYSTEM.LOGMNR_TABPART$ (logmnr_uid, bo#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_TABSUBPART$ (
      OBJ# NUMBER(22),
      DATAOBJ# NUMBER(22),
      POBJ# NUMBER(22),
      SUBPART# NUMBER(22),
      TS# NUMBER(22) NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_TABSUBPART$_pk 
         primary key (LOGMNR_UID, OBJ#, POBJ#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1TABSUBPART$
    ON SYSTEM.LOGMNR_TABSUBPART$ (LOGMNR_UID, OBJ#, POBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2TABSUBPART$
    ON SYSTEM.LOGMNR_TABSUBPART$ (logmnr_uid, pobj#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_TABCOMPART$ (
      OBJ# NUMBER(22),
      BO# NUMBER(22),
      PART# NUMBER(22) NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_TABCOMPART$_pk 
         primary key (LOGMNR_UID, OBJ#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1TABCOMPART$
    ON SYSTEM.LOGMNR_TABCOMPART$ (LOGMNR_UID, OBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2TABCOMPART$
    ON SYSTEM.LOGMNR_TABCOMPART$ (logmnr_uid, bo#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_TYPE$ (
      version# number,
      version varchar2(384),
      tvoid raw(16),
      typecode number,
      properties number,
      attributes number,
      methods number,
      hiddenMethods number,
      supertypes number,
      subtypes number,
      externtype number,
      externname varchar2(4000),
      helperclassname varchar2(4000),
      local_attrs number,
      local_methods number,
      typeid raw(16),
      roottoid raw(16),
      spare1 number,
      spare2 number,
      spare3 number,
      supertoid raw(16),
      hashcode raw(17),
      toid raw(16) not null,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_TYPE$_pk 
         primary key (LOGMNR_UID, TOID, VERSION#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1TYPE$
    ON SYSTEM.LOGMNR_TYPE$ (LOGMNR_UID, TOID, VERSION#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_COLTYPE$ (
      col# number,
      intcol# number,
      toid raw(16),
      version# number,
      packed number,
      intcols number,
      intcol#s raw(2000),
      flags number,
      typidcol# number,
      synobj# number,
      obj# number not null,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_COLTYPE$_pk 
         primary key (LOGMNR_UID, OBJ#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1COLTYPE$
    ON SYSTEM.LOGMNR_COLTYPE$ (LOGMNR_UID, OBJ#, INTCOL#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_ATTRIBUTE$ (
      version#      number,
      name          varchar2(384),
      attribute#    number,
      attr_toid     raw(16),
      attr_version# number,
      synobj#       number,
      properties    number,
      charsetid     number,
      charsetform   number,
      length        number,
      precision#    number,
      scale         number,
      externname    varchar2(4000),
      xflags        number,
      spare1        number,
      spare2        number,
      spare3        number,
      spare4        number,
      spare5        number,
      setter        number,
      getter        number,
      toid          raw(16) not null,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_ATTRIBUTE$_pk 
         primary key (LOGMNR_UID, TOID, VERSION#, ATTRIBUTE#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1ATTRIBUTE$
    ON SYSTEM.LOGMNR_ATTRIBUTE$ (LOGMNR_UID, TOID, VERSION#, ATTRIBUTE#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_LOB$ (
      OBJ#          NUMBER,
      INTCOL#       NUMBER,
      COL#          NUMBER,
      LOBJ#         NUMBER,
      CHUNK         NUMBER NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_LOB$_pk 
         primary key (LOGMNR_UID, OBJ#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1LOB$
    ON SYSTEM.LOGMNR_LOB$ (LOGMNR_UID, OBJ#, INTCOL#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_CON$ (
     owner#        number not null,
     name          varchar2(384) not null,
     con#          number not null,
     logmnr_uid    number(22),
     logmnr_flags  number(22),
     start_scnbas  number,
     start_scnwrp  number,
       constraint logmnr_con$_pk 
          primary key (LOGMNR_UID, CON#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1CON$
    ON SYSTEM.LOGMNR_CON$ (LOGMNR_UID, CON#)
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_CONTAINER$ (
     obj#          number not null,      /* Object number for the container */
     con_id#       number not null,                         /* container ID */
     dbid          number not null,                          /* database ID */
     con_uid       number not null,                            /* unique ID */
     create_scnwrp number not null,                    /* creation scn wrap */
     create_scnbas number not null,                    /* creation scn base */
     flags         number,                                         /* flags */
     status        number not null,                    /* active, plugged...*/
     logmnr_uid    number(22),
     logmnr_flags  number(22),
     vsn           number,                                  /* software vsn */
     fed_root_con_id# number,   /* CON_ID of Application Root if applicable */
       constraint logmnr_container$_pk 
          primary key (LOGMNR_UID, OBJ#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/

CREATE INDEX SYSTEM.LOGMNR_I1CONTAINER$
    ON SYSTEM.LOGMNR_CONTAINER$ (LOGMNR_UID, CON_ID#)
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_CDEF$ (
      CON#          NUMBER,
      COLS          NUMBER,
      TYPE#         NUMBER,
      ROBJ#         NUMBER, 
      RCON#         NUMBER, 
      ENABLED       NUMBER,
      DEFER         NUMBER,
      OBJ#          NUMBER NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_CDEF$_pk primary key (LOGMNR_UID, CON#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1CDEF$
    ON SYSTEM.LOGMNR_CDEF$ (LOGMNR_UID, CON#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2CDEF$
    ON SYSTEM.LOGMNR_CDEF$ (LOGMNR_UID, ROBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I3CDEF$
    ON SYSTEM.LOGMNR_CDEF$ (LOGMNR_UID, OBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_CCOL$ (
      CON#          NUMBER,
      OBJ#          NUMBER,
      COL#          NUMBER,
      POS#          NUMBER,
      INTCOL#       NUMBER NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_CCOL$_pk 
         primary key (LOGMNR_UID, CON#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1CCOL$
    ON SYSTEM.LOGMNR_CCOL$ (LOGMNR_UID, CON#, INTCOL#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_ICOL$ (
      OBJ#          NUMBER,
      BO#           NUMBER,
      COL#          NUMBER,
      POS#          NUMBER,
      SEGCOL#       NUMBER,
      INTCOL#       NUMBER NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_ICOL$_pk 
         primary key (LOGMNR_UID, OBJ#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1ICOL$
    ON SYSTEM.LOGMNR_ICOL$ (LOGMNR_UID, OBJ#, INTCOL#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_LOBFRAG$ (
      FRAGOBJ#      NUMBER,
      PARENTOBJ#    NUMBER,
      TABFRAGOBJ#   NUMBER,
      INDFRAGOBJ#   NUMBER,
      FRAG#         NUMBER NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_LOBFRAG$_pk 
         primary key (LOGMNR_UID, FRAGOBJ#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1LOBFRAG$
    ON SYSTEM.LOGMNR_LOBFRAG$ (LOGMNR_UID, FRAGOBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_INDPART$ (
      OBJ# NUMBER,
      BO#  NUMBER,
      PART# NUMBER,
      TS#  NUMBER NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_INDPART$_pk 
         primary key (LOGMNR_UID, OBJ#, BO#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1INDPART$
    ON SYSTEM.LOGMNR_INDPART$ (LOGMNR_UID, OBJ#, BO#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2INDPART$
    ON SYSTEM.LOGMNR_INDPART$ (logmnr_uid, bo#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_INDSUBPART$ (
      OBJ# NUMBER(22),
      DATAOBJ# NUMBER(22),
      POBJ# NUMBER(22),
      SUBPART# NUMBER(22),
      TS# NUMBER(22) NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_INDSUBPART$_pk 
         primary key (LOGMNR_UID, OBJ#, POBJ#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1INDSUBPART$
    ON SYSTEM.LOGMNR_INDSUBPART$ (LOGMNR_UID, OBJ#, POBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_INDCOMPART$ (
      OBJ#     NUMBER,
      DATAOBJ# NUMBER,
      BO#      NUMBER,
      PART#    NUMBER NOT NULL,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_INDCOMPART$_pk 
         primary key (LOGMNR_UID, OBJ#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1INDCOMPART$
    ON SYSTEM.LOGMNR_INDCOMPART$ (LOGMNR_UID, OBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_LOGMNR_BUILDLOG (
       BUILD_DATE VARCHAR2(20),             /* ASCII */
       DB_TXN_SCNBAS NUMBER,
       DB_TXN_SCNWRP NUMBER,
       CURRENT_BUILD_STATE NUMBER,
       COMPLETION_STATUS NUMBER,
       MARKED_LOG_FILE_LOW_SCN NUMBER,
       INITIAL_XID VARCHAR2(22) NOT NULL,   /* ASCII */
       logmnr_uid NUMBER(22),
       logmnr_flags NUMBER(22),
       CDB_XID VARCHAR2(22),                /* ASCII */
       SPARE1 NUMBER,
       SPARE2 VARCHAR2(4000),
       constraint LOGMNR_LOGMNR_BUILDLOG_pk 
          primary key (LOGMNR_UID, INITIAL_XID) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1LOGMNR_BUILDLOG
    ON SYSTEM.LOGMNR_LOGMNR_BUILDLOG (LOGMNR_UID, INITIAL_XID) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_NTAB$ (
       col# number,
       intcol# number,
       ntab# number,
       name varchar2(4000),
       obj# number not null,
       logmnr_uid NUMBER(22),
       logmnr_flags NUMBER(22),
       constraint LOGMNR_NTAB$_pk 
          primary key (LOGMNR_UID, OBJ#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1NTAB$
    ON SYSTEM.LOGMNR_NTAB$ (LOGMNR_UID, OBJ#, INTCOL#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2NTAB$
    ON SYSTEM.LOGMNR_NTAB$ (logmnr_uid, ntab#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_OPQTYPE$ (
       intcol# number not null,
       type number,
       flags number,
       lobcol number,
       objcol number,
       extracol number,
       schemaoid raw(16),
       elemnum number,
       schemaurl varchar2(4000),
       obj# number not null,
       logmnr_uid NUMBER(22),
       logmnr_flags NUMBER(22),
       constraint LOGMNR_OPQTYPE$_pk 
          primary key (LOGMNR_UID, OBJ#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1OPQTYPE$
    ON SYSTEM.LOGMNR_OPQTYPE$ (LOGMNR_UID, OBJ#, INTCOL#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_SUBCOLTYPE$ (
       intcol# number not null,
       toid raw(16) not null,
       version# number not null,
       intcols number,
       intcol#s raw(2000),
       flags number,
       synobj# number,
       obj# number not null,
       logmnr_uid NUMBER(22),
       logmnr_flags NUMBER(22),
       constraint LOGMNR_SUBCOLTYPE$_pk 
          primary key (LOGMNR_UID, OBJ#, INTCOL#, TOID) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1SUBCOLTYPE$
    ON SYSTEM.LOGMNR_SUBCOLTYPE$ (LOGMNR_UID, OBJ#, INTCOL#, TOID) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_KOPM$ (
       length number,
       metadata raw(255),
       name varchar2(384) not null,
      logmnr_uid NUMBER(22),
      logmnr_flags NUMBER(22),
      constraint LOGMNR_KOPM$_pk 
         primary key (LOGMNR_UID, NAME) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1KOPM$
    ON SYSTEM.LOGMNR_KOPM$ (LOGMNR_UID, NAME) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_PROPS$ (
       value$ varchar2(4000),
       comment$ varchar2(4000),
       name varchar2(384) not null,
       logmnr_uid NUMBER(22),
       logmnr_flags NUMBER(22),
       constraint LOGMNR_PROPS$_pk 
          primary key (LOGMNR_UID, NAME) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1PROPS$
    ON SYSTEM.LOGMNR_PROPS$ (LOGMNR_UID, NAME) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_ENC$ (
       obj# number,
       owner# number,
       encalg number,
       intalg number,
       colklc raw(2000),
       klclen number,
       flag number,
       mkeyid varchar2(192) not null,
       logmnr_uid NUMBER(22),
       logmnr_flags NUMBER(22),
       constraint LOGMNR_ENC$_pk 
          primary key (LOGMNR_UID, OBJ#, OWNER#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1ENC$
    ON SYSTEM.LOGMNR_ENC$ (LOGMNR_UID, OBJ#, OWNER#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_REFCON$ (
       col#     number,
       intcol#  number,
       reftyp   number,
       stabid   raw(16),
       expctoid raw(16),
       obj#     number not null,
       logmnr_uid NUMBER(22),
       logmnr_flags NUMBER(22),
       constraint LOGMNR_REFCON$_pk 
          primary key (LOGMNR_UID, OBJ#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1REFCON$
    ON SYSTEM.LOGMNR_REFCON$ (LOGMNR_UID, OBJ#, INTCOL#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_IDNSEQ$
(OBJ#      NUMBER NOT NULL,
 INTCOL#   NUMBER NOT NULL,
 SEQOBJ#   NUMBER NOT NULL,
 STARTWITH NUMBER NOT NULL,
 logmnr_uid NUMBER(22),
 logmnr_flags NUMBER(22),
 constraint LOGMNR_IDNSEQ$_pk 
  primary key (LOGMNR_UID, OBJ#, INTCOL#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      (PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1IDNSEQ$
    ON SYSTEM.LOGMNR_IDNSEQ$ (LOGMNR_UID, OBJ#, INTCOL#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I2IDNSEQ$
    ON SYSTEM.LOGMNR_IDNSEQ$ (LOGMNR_UID, SEQOBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNR_PARTOBJ$ (
      parttype    number,
       partcnt     number,
       partkeycols number,
       flags       number,
       defts#      number,
       defpctfree  number,
       defpctused  number,
       defpctthres number,
       definitrans number,
       defmaxtrans number,
       deftiniexts number,
       defextsize  number,
       defminexts  number,
       defmaxexts  number,
       defextpct   number,
       deflists    number,
       defgroups   number,
       deflogging  number,
       spare1      number,
       spare2      number,
       spare3      number,
       definclcol  number,
       parameters  varchar2(3000),   /* 3x1000 (sys.partobj$) */
       obj#        number not null,
       logmnr_uid NUMBER(22),
       logmnr_flags NUMBER(22),
       constraint LOGMNR_PARTOBJ$_pk 
          primary key (LOGMNR_UID, OBJ#) disable ) 
   PARTITION BY RANGE(logmnr_uid)
      ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1PARTOBJ$
    ON SYSTEM.LOGMNR_PARTOBJ$ (LOGMNR_UID, OBJ#) 
    TABLESPACE SYSAUX LOCAL LOGGING
/
CREATE TABLE SYSTEM.LOGMNRP_CTAS_PART_MAP (
                    LOGMNR_UID         NUMBER NOT NULL,
                    BASEOBJ#           NUMBER NOT NULL,
                    BASEOBJV#          NUMBER NOT NULL,  
                    KEYOBJ#            NUMBER NOT NULL,
                    PART#              NUMBER NOT NULL,
                    SPARE1             NUMBER,
                    SPARE2             NUMBER,
                    SPARE3             VARCHAR2(1000),
                    CONSTRAINT LOGMNRP_CTAS_PART_MAP_PK 
                       PRIMARY KEY(LOGMNR_UID, BASEOBJV#, KEYOBJ#) 
                       using index local )
              PARTITION BY RANGE(logmnr_uid)
                 ( PARTITION p_lessthan100 VALUES LESS THAN (100)) 
              TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNRP_CTAS_PART_MAP_I ON
                    SYSTEM.LOGMNRP_CTAS_PART_MAP (
                      LOGMNR_UID, BASEOBJ#, BASEOBJV#, PART#)
                    TABLESPACE SYSAUX LOCAL LOGGING
/

CREATE TABLE SYSTEM.LOGMNR_SHARD_TS (
   LOGMNR_UID        NUMBER NOT NULL,
   TABLESPACE_NAME   VARCHAR2(90) NOT NULL, 
   CHUNK_NUMBER      NUMBER NOT NULL,
   START_SCNBAS      NUMBER,
   START_SCNWRP      NUMBER,
   CONSTRAINT LOGMNR_SHARD_TS_PK
     PRIMARY KEY(LOGMNR_UID, TABLESPACE_NAME) disable)
   PARTITION BY RANGE(LOGMNR_UID)
     ( PARTITION P_LESSTHAN100 VALUES LESS THAN (100))
   TABLESPACE SYSAUX LOGGING
/
CREATE INDEX SYSTEM.LOGMNR_I1SHARD_TS
ON SYSTEM.LOGMNR_SHARD_TS (LOGMNR_UID, TABLESPACE_NAME)
TABLESPACE SYSAUX LOCAL LOGGING
/
alter session set events '14524 trace name context off';

CREATE OR REPLACE TYPE logmnr$alwayssuplog_srec FORCE
OID '93A023B60CB72798E040E80ABE49567B'
IS OBJECT (
  OWNER        VARCHAR2(128),
  TABLE_NAME   VARCHAR2(128),
  COLUMN_NAME  VARCHAR2(128),
  INTCOL       NUMBER,
  SEGCOL       NUMBER,
  USERCOL      NUMBER
)
/
show errors

CREATE TYPE logmnr$alwayssuplog_srecs 
OID '93A023B60CB82798E040E80ABE49567B'
IS TABLE OF logmnr$alwayssuplog_srec
/
show errors

CREATE TYPE logmnr$intcol_arr_type 
OID '93A023B60CB92798E040E80ABE49567B'
IS TABLE OF INTEGER;
/
show errors

/* Type that contains the table object metadata for GG */
create type SYSTEM.LOGMNR$TAB_GG_REC as object
(
LOGMNR_UID NUMBER,
OBJ# NUMBER,
BASEOBJV# NUMBER,
MD_TAB_USERID NUMBER,                /* owner# */
MD_TAB_COLCOUNT NUMBER,              /* user column count */
MD_TAB_TOTAL_COL_NUM NUMBER,         /* kernal column count */
MD_TAB_LOG_GROUP_EXISTS NUMBER,      /* Any log group exists for this table */
MD_TAB_IOT VARCHAR2(3) ,             /* 'YES'/'NO' IS IOT? */
MD_TAB_IOT_OVERFLOW VARCHAR2(3) ,    /* 'YES'/'NO' IOT with overflow ? */
MD_TAB_PARTITION  VARCHAR2(3) ,      /* 'YES'/'NO' is partitioned ? */
MD_TAB_SUBPARTITION VARCHAR2(3) ,    /* 'YES'/'NO' is sub partitioned? */
MD_TAB_XMLTYPETABLE VARCHAR2(3) ,    /* 'YES'/'NO' is xmltype table? */
MD_TAB_OBJECTID NUMBER,              /* object id if table object */
MD_TAB_OWNER VARCHAR2(384),     /* owner name */
MD_TAB_NAME VARCHAR2(384),      /* table name */
MD_TAB_OBJTYPE VARCHAR2(384),   /* Object type name */
MD_TAB_SCN NUMBER,                   /* COMMIT_SCN of this table version */
TAB_FLAGS NUMBER,
TRIGFLAG NUMBER,
OBJ_FLAGS NUMBER,
PROPERTY NUMBER,
PARTTYPE NUMBER,
SUBPARTTYPE NUMBER,
SPARE1  NUMBER,
SPARE2  NUMBER,
SPARE3  NUMBER,
SPARE4  VARCHAR2(4000),
SPARE5  VARCHAR2(4000),
SPARE6  VARCHAR2(4000),
/* Following fields added in 12.1.0.2 */
LVLCNT NUMBER,
LVL1OBJ# NUMBER,
LVL2OBJ# NUMBER,
LVL1TYPE# NUMBER,
LVL2TYPE# NUMBER,
LVL1NAME  VARCHAR2(384),
LVL2NAME  VARCHAR2(384),
INTCOLS   NUMBER,
ASSOC#    NUMBER,
XIDUSN    NUMBER,
XIDSLT    NUMBER,
XIDSQN    NUMBER,
DROP_SCN  NUMBER,
FLAGS     NUMBER,
LOGMNR_SPARE1   NUMBER,
LOGMNR_SPARE2   NUMBER,
LOGMNR_SPARE3   VARCHAR2(1000),
LOGMNR_SPARE4   DATE,
LOGMNR_SPARE5   NUMBER,
LOGMNR_SPARE6   NUMBER,
LOGMNR_SPARE7   NUMBER,
LOGMNR_SPARE8   NUMBER,
LOGMNR_SPARE9   NUMBER,
UNSUPPORTEDCOLS  NUMBER,
COMPLEXTYPECOLS  NUMBER,
NTPARENTOBJNUM   NUMBER,
NTPARENTOBJVERSION NUMBER,
NTPARENTINTCOLNUM  NUMBER,
LOGMNRTLOFLAGS    NUMBER,
LOGMNRMCV VARCHAR2(30),
/* Following fields added in 12.2 */
ACDRFLAGS        NUMBER,                                    /* automatic CDR */
ACDRTSOBJ#       NUMBER,                                    /* automatic CDR */
ACDRROWTSINTCOL# NUMBER                                     /* automatic CDR */
);
/
show errors

/* Type that contains the table object metadata for GG */
create type SYSTEM.LOGMNR$COL_GG_REC as object
(
LOGMNR_UID NUMBER,
OBJ# NUMBER,
MD_COL_NAME VARCHAR2(384),
MD_COL_NUM NUMBER,                 /* col# */
MD_COL_SEGCOL NUMBER,              /* segcol# */
MD_COL_TYPE NUMBER,                /* type# */
MD_COL_LEN NUMBER,       
MD_COL_PREC NUMBER,                /* precision */
MD_COL_SCALE NUMBER,
MD_COL_CHARSETID NUMBER,           /* character set id */
MD_COL_CHARSETFORM NUMBER,         /* character set form */
MD_COL_ALT_TYPE VARCHAR2(4000),    /* adt type if any */
MD_COL_ALT_PREC NUMBER,            /* precision of the adt attribute */
MD_COL_ALT_CHAR_USED VARCHAR2(2),  /* charset used by the adt attribute */
MD_COL_ALT_LENGTH NUMBER,          /* length of the adt attribute */
MD_COL_ALT_XML_TYPE NUMBER,        /* 0/1. is xml_type column */
MD_COL_ALT_BINARYXML_TYPE NUMBER,  /* 0/1. is xml_type stored as binary */
MD_COL_ENC_ISENC VARCHAR2(3) ,     /* 'YES'/'NO' */
MD_COL_ENC_NOSALT VARCHAR2(3) ,    /* 'YES'/'NO' */
MD_COL_ENC_ISLOB VARCHAR2(3) ,     /* 'YES'/'NO' */
MD_COL_ALT_OBJECTXML_TYPE NUMBER,  /* 0/1 xml_type stored as object */
MD_COL_HASNOTNULLDEFAULT VARCHAR2(3) ,   /* 'YES'/'NO' */
MD_COL_ALT_TYPE_OWNER VARCHAR2(384),  /* owner of the adt type if any */
PROPERTY NUMBER,
XCOLTYPEFLAGS NUMBER,
XOPQTYPEFLAGS NUMBER,
EAFLAGS NUMBER,
XFQCOLNAME VARCHAR2(4000),
SPARE1  NUMBER,
SPARE2  NUMBER,
SPARE3  NUMBER,
SPARE4  VARCHAR2(4000),
SPARE5  VARCHAR2(4000),
SPARE6  VARCHAR2(4000),
/* Following fields added in 12.1.0.2 */
OBJV# NUMBER,
INTCOL# NUMBER,
INTERVAL_LEADING_PRECISION NUMBER,
INTERVAL_TRAILING_PRECISION NUMBER,
TOID RAW(16),
TYPENAME VARCHAR2(384),
NUMINTCOLS NUMBER,
NUMATTRS NUMBER,
ADTORDER NUMBER,
LOGMNR_SPARE1 NUMBER,
LOGMNR_SPARE2 NUMBER,
LOGMNR_SPARE3 VARCHAR2(1000),
LOGMNR_SPARE4 DATE,
LOGMNR_SPARE5 NUMBER,
LOGMNR_SPARE6 NUMBER,
LOGMNR_SPARE7 NUMBER,
LOGMNR_SPARE8 NUMBER,
LOGMNR_SPARE9 NUMBER,
XTYPENAME VARCHAR2(4000),
XTOPINTCOL NUMBER,
XREFFEDTABLEOBJN NUMBER,
XREFFEDTABLEOBJV NUMBER,
XOPQTYPETYPE NUMBER,
XOPQLOBINTCOL NUMBER,
XOPQOBJINTCOL NUMBER,
XXMLINTCOL    NUMBER,
LOGMNRDERIVEDFLAGS NUMBER,
/* Following fields added in 12.2 */
COLLID      NUMBER,
COLLINTCOL#  NUMBER,
ACDRRESCOL# NUMBER
);
/
show errors

/* Type that contains Sequence object metadata for GG */
create type SYSTEM.LOGMNR$SEQ_GG_REC as object 
(
LOGMNR_UID NUMBER,
OBJ# NUMBER,
NAME VARCHAR2(384),
OWNER# NUMBER,
OWNERNAME VARCHAR2(384),
FLAGS NUMBER,
MD_TAB_SEQCACHE NUMBER,
MD_TAB_SEQINCREMENTBY NUMBER,
SPARE1  NUMBER,
SPARE2  NUMBER,
SPARE3  NUMBER,
SPARE4  VARCHAR2(4000),
SPARE5  VARCHAR2(4000),
SPARE6  VARCHAR2(4000)
);
/
show errors

/* Type that contains metadata of key set of a given table for GG */
create type SYSTEM.LOGMNR$KEY_GG_REC as object
(
LOGMNR_UID NUMBER,
KEY# NUMBER,                   /* index obj# or con# */
KEY_FLAGS NUMBER,              /* index or constraint */
KEY_NAME VARCHAR2(384),        /* index name or constraint name */
INDEX_OWNER# NUMBER,
INDEX_OWNERNAME VARCHAR2(384),
COLNAME VARCHAR2(384), 
INTCOL# NUMBER,
which number,
KEY_ORDER VARCHAR2(10),              /* asc or desc */
KEYCOL_FLAGS NUMBER,           /* Column properties such as is_null */
SPARE1  NUMBER,
SPARE2  NUMBER,
SPARE3  NUMBER,
SPARE4  VARCHAR2(4000),
SPARE5  VARCHAR2(4000),
SPARE6  VARCHAR2(4000)
);
/
show errors

/* Type that contains Global SCN based Metadata for GG */
CREATE TYPE SYSTEM.LOGMNR$GSBA_GG_REC AS OBJECT
(
LOGMNR_UID NUMBER,
NAME           VARCHAR2(384),
VALUE          VARCHAR2(4000),
LOGMNR_SPARE1  NUMBER,
LOGMNR_SPARE2  NUMBER,
LOGMNR_SPARE3  VARCHAR2(4000),
LOGMNR_SPARE4  DATE
);
/
show errors

/* Type that contains user Metadata for GG */
CREATE TYPE SYSTEM.LOGMNR$USER_GG_REC AS OBJECT
(
LOGMNR_UID     NUMBER,
USERNAME       VARCHAR2(384),
USERID         NUMBER,
LOGMNR_SPARE1  NUMBER,
LOGMNR_SPARE2  NUMBER,
LOGMNR_SPARE3  VARCHAR2(4000),
LOGMNR_SPARE4  DATE
);
/
show errors

CREATE TYPE SYSTEM.LOGMNR$TAB_GG_RECS AS TABLE OF  SYSTEM.LOGMNR$TAB_GG_REC;
/
show errors

CREATE TYPE SYSTEM.LOGMNR$COL_GG_RECS AS TABLE OF  SYSTEM.LOGMNR$COL_GG_REC;
/
show errors

CREATE TYPE SYSTEM.LOGMNR$SEQ_GG_RECS AS TABLE OF  SYSTEM.LOGMNR$SEQ_GG_REC;
/
show errors

CREATE TYPE SYSTEM.LOGMNR$KEY_GG_RECS AS TABLE OF  SYSTEM.LOGMNR$KEY_GG_REC;
/
show errors

CREATE TYPE SYSTEM.LOGMNR$GSBA_GG_RECS AS TABLE OF  SYSTEM.LOGMNR$GSBA_GG_REC;
/
show errors

CREATE TYPE SYSTEM.LOGMNR$USER_GG_RECS AS TABLE OF  SYSTEM.LOGMNR$USER_GG_REC;
/
show errors

Rem Populate NOEXP$ to ensure logminer metadata is not exported.
INSERT INTO sys.noexp$
             SELECT u.name, o.name, o.type#
             FROM sys.obj$ o, sys.user$ u
             WHERE (o.type# = 2 or o.type# = 6) AND
                   o.owner# = u.user# AND
                   u.name = 'SYSTEM' AND
                   o.name like 'LOGMNR%'
           MINUS
             SELECT x.owner, x.name, x.obj_type
             FROM sys.noexp$ x;
commit;

Rem Create or Replace Logminer Views


-- This function returns the maximum valid checkpoint 
--  for a given session.  Only valid for streams 
-- sessions and used by the dba_logmnr_session view
create or replace FUNCTION get_max_checkpoint(sessionnum IN NUMBER, 
                                              purge_scn IN NUMBER) 
                      RETURN number IS
                        ckpt number;
                      BEGIN
                        select ckpt_scn into ckpt
                        from 
                          (select c.ckpt_scn ckpt_scn
                          from system.logmnr_restart_ckpt$ c
                          where c.session# = sessionnum and 
                                ckpt_scn >= nvl(purge_scn,0) and
                                c.valid = 1 order by ckpt_scn desc)
                        where rownum = 1 ;
                        return ckpt;
                      END get_max_checkpoint;
/
    
create or replace view dba_logmnr_log as
                select
                  l.session#                    logmnr_session_id,
                  l.file_name                   name,
                  l.db_id                       dbid,
                  l.resetlogs_change#           resetlogs_scn,
                  l.reset_timestamp             resetlogs_time,
                  l.timestamp                   modified_time,            
                  l.thread#                     thread#,
                  l.sequence#                   sequence#,
                  l.first_change#               first_scn,
                  l.next_change#                next_scn,
                  l.first_time                  first_time,
                  l.next_time                   next_time,
                  l.dict_begin                  dictionary_begin,
                  l.dict_end                    dictionary_end,
                  case 
                  when (bitand(l.status, 2) = 2) then
                   'NO'
                  else
                   'YES'
                  end                           keep,
                  case  
                  when (bitand(l.status, 4) = 4) then
                   'YES'
                  else
                   'NO'
                  end                           suspect
                from system.logmnr_log$ l 
                where bitand(l.flags, 16) != 16; 

create or replace public synonym dba_logmnr_log for dba_logmnr_log;
grant select on dba_logmnr_log to select_catalog_role;
  

execute CDBView.create_cdbview(false,'SYS','DBA_LOGMNR_LOG','CDB_LOGMNR_LOG');
grant select on SYS.CDB_logmnr_log to select_catalog_role
/
create or replace public synonym CDB_logmnr_log for SYS.CDB_logmnr_log
/

create or replace view dba_logmnr_session as
      select 
        s.session#              id,
        s.session_name          name,
        s.global_db_name        source_database,
        s.db_id                 source_dbid,
        s.resetlogs_change#     source_resetlogs_scn,
        s.reset_timestamp       source_resetlogs_time,
        s.start_scn             first_scn,
        s.end_scn               end_scn,
        s.branch_scn            branch_scn,
        case
         when (bitand(s.session_attr, 16) = 16) then 'YES'
         else  'NO'
        end                     wait_for_log,
        case
          when (bitand(s.session_attr, 8388608) = 8388608) then 'YES'
         else  'NO'
        end                     hot_mine,
        /* safe_purge_scn is the scn below or at which it is safe to purge */
        /* pass this scn into dbms_logmnr_session.purge_session */
        case /* case#0 :streams or logical standby */
             /* KRVX_RESTART_CKPT_ENABLED = 268435456 */ 
          when (bitand(s.session_attr, 268435456) = 268435456) then
            null
          else /* case #0 */
            s.spill_scn 
          end    /* case #0 */        
                                      safe_purge_scn,         
        case /* case#0 :streams or logical standby */
          when (bitand(s.session_attr, 268435456) = 268435456) then     
            get_max_checkpoint(s.session#, purge_scn)
          else
            null
          end
                                        checkpoint_scn,
        s.purge_scn                     purge_scn
      from system.logmnr_session$ s;
create or replace public synonym dba_logmnr_session for dba_logmnr_session;
grant select on dba_logmnr_session to select_catalog_role;



execute CDBView.create_cdbview(false,'SYS','DBA_LOGMNR_SESSION','CDB_LOGMNR_SESSION');
grant select on SYS.CDB_logmnr_session to select_catalog_role
/
create or replace public synonym CDB_logmnr_session for SYS.CDB_logmnr_session
/

create or replace view LOGMNR_TAB_COLS_SUPPORT
    (logmnr_uid, obj#, owner#, OWNER, TABLE_NAME,
     COLUMN_NAME, type#, DATA_TYPE, DATA_TYPE_MOD, DATA_TYPE_OWNER,
     DATA_LENGTH, DATA_PRECISION, DATA_SCALE, NULLABLE, COLUMN_ID,
     CHARACTER_SET_NAME, CHAR_COL_DECL_LENGTH,
     CHAR_USED,
     V80_FMT_IMAGE, HIDDEN_COLUMN, VIRTUAL_COLUMN,
     SEGMENT_COLUMN_ID, INTERNAL_COLUMN_ID,  QUALIFIED_COL_NAME)
     as
      select o.logmnr_uid, o.obj#, o.owner#, u.name, o.name,
       c.name, c.type#,
       decode(c.type#, 1, decode(c.charsetform, 2, 'NVARCHAR2', 'VARCHAR2'),
                       2, decode(c.scale, null,
                                 decode(c.precision#, null, 'NUMBER', 'FLOAT'),
                                 'NUMBER'),
                       8, 'LONG',
                       9, decode(c.charsetform, 2, 'NCHAR VARYING', 'VARCHAR'),
                       12, 'DATE',
                       23, 'RAW', 24, 'LONG RAW',
                       58, nvl2(ac.synobj#,
                                (select o.name from system.logmnr_obj$ o
                                 where o.logmnr_uid = c.logmnr_uid and
                                 o.obj#=ac.synobj#), ot.name),
                       69, 'ROWID',
                       96, decode(c.charsetform, 2, 'NCHAR', 'CHAR'),
                       100, 'BINARY_FLOAT',
                       101, 'BINARY_DOUBLE',
                       105, 'MLSLABEL',
                       106, 'MLSLABEL',
                       111, nvl2(ac.synobj#,
                                (select o.name from system.logmnr_obj$ o
                                 where o.logmnr_uid = c.logmnr_uid and
                                 o.obj#=ac.synobj#), ot.name),
                       112, decode(c.charsetform, 2, 'NCLOB', 'CLOB'),
                       113, 'BLOB', 114, 'BFILE', 115, 'CFILE',
                       121, nvl2(ac.synobj#,
                                (select o.name from system.logmnr_obj$ o
                                 where o.logmnr_uid = c.logmnr_uid and
                                 o.obj#=ac.synobj#), ot.name),
                       122, nvl2(ac.synobj#,
                                (select o.name from system.logmnr_obj$ o
                                 where o.logmnr_uid = c.logmnr_uid and
                                 o.obj#=ac.synobj#), ot.name),
                       123, nvl2(ac.synobj#,
                                (select o.name from system.logmnr_obj$ o
                                 where o.logmnr_uid = c.logmnr_uid and
                                 o.obj#=ac.synobj#), ot.name),
                       178, 'TIME(' ||c.scale|| ')',
                       179, 'TIME(' ||c.scale|| ')' || ' WITH TIME ZONE',
                       180, 'TIMESTAMP(' ||c.scale|| ')',
                       181, 'TIMESTAMP(' ||c.scale|| ')' || ' WITH TIME ZONE',
                       231, 'TIMESTAMP(' ||c.scale|| ')' || ' WITH LOCAL TIME ZONE',
                       182, 'INTERVAL YEAR(' ||c.precision#||') TO MONTH',
                       183, 'INTERVAL DAY(' ||c.precision#||') TO SECOND(' ||
                             c.scale || ')',
                       208, 'UROWID',
                       'UNDEFINED'),
       decode(c.type#, 111, 'REF'),
       nvl2(ac.synobj#,
              (select u.name 
               from system.logmnr_user$ u, system.logmnr_obj$ o
               where o.owner#=u.user# and o.obj#=ac.synobj#
                 and u.logmnr_uid = c.logmnr_uid
                 and o.logmnr_uid = c.logmnr_uid),
             ut.name),
       c.length, c.precision#, c.scale,
       decode(sign(c.null$),-1,'D', 0, 'Y', 'N'),
       decode(c.col#, 0, to_number(null), c.col#), 
       decode(c.charsetform, 1, 'CHAR_CS',
                             2, 'NCHAR_CS',
                             3, NLS_CHARSET_NAME(c.charsetid),
                             4, 'ARG:'||c.charsetid),
       decode(c.charsetid, 0, to_number(NULL),
                           nls_charset_decl_len(c.length, c.charsetid)),
       decode(c.type#, 1, decode(bitand(c.property, 8388608), 0, 'B', 'C'),
                      96, decode(bitand(c.property, 8388608), 0, 'B', 'C'),
                      null),
       decode(bitand(ac.flags, 128), 128, 'YES', 'NO'),
       decode(c.property, 0, 'NO', decode(bitand(c.property, 32), 32, 'YES',
                                          'NO')),
       decode(c.property, 0, 'NO', decode(bitand(c.property, 8), 8, 'YES',
                                          'NO')),
       decode(c.segcol#, 0, to_number(null), c.segcol#), c.intcol#,
       decode(bitand(c.property, 1024), 1024,
              (select decode(bitand(cl.property, 1), 1, rc.name, cl.name)
               from system.logmnr_col$ cl, system.logmnr_attrcol$ rc
               where cl.intcol# = c.intcol#-1
               and cl.logmnr_uid = c.logmnr_uid
               and rc.logmnr_uid = c.logmnr_uid
               and cl.obj# = c.obj# and c.obj# = rc.obj#(+) and
               cl.intcol# = rc.intcol#(+)),
              decode(bitand(c.property, 1), 0, c.name,
                     (select tc.name from system.logmnr_attrcol$ tc
                      where tc.logmnr_uid = c.logmnr_uid and
                            c.obj# = tc.obj# and c.intcol# = tc.intcol#)))
from system.logmnr_col$ c, system.logmnr_obj$ o, system.logmnr_user$ u,
     system.logmnr_coltype$ ac, system.logmnr_obj$ ot, system.logmnr_user$ ut
where o.obj# = c.obj#
  and o.owner# = u.user#
  and o.logmnr_uid = c.logmnr_uid
  and o.logmnr_uid = u.logmnr_uid
  and c.logmnr_uid = ac.logmnr_uid(+)
  and c.obj# = ac.obj#(+) and c.intcol# = ac.intcol#(+)
  and ac.logmnr_uid = ot.logmnr_uid(+)
  and ac.toid = ot.oid$(+)
  and ot.type#(+) = 13
  and ot.logmnr_uid = ut.logmnr_uid(+)
  and ot.owner# = ut.user#(+)
  and (o.type# in (3, 4)                                     /* cluster, view */
       or
       (o.type# = 2     /* tables, excluding iot - overflow and nested tables */
        and
        not exists (select null
                    from system.logmnr_tab$ t
                    where o.logmnr_uid = t.logmnr_uid
                      and t.obj# = o.obj#
                      and (bitand(t.property, 512) = 512 or
                           bitand(t.property, 8192) = 8192))));


create or replace view LOGMNR_TAB_COLS_CAT_SUPPORT
    (obj#, owner#, OWNER, TABLE_NAME,
     COLUMN_NAME, type#, DATA_TYPE, DATA_TYPE_MOD, DATA_TYPE_OWNER,
     DATA_LENGTH, DATA_PRECISION, DATA_SCALE, NULLABLE, COLUMN_ID,
     CHARACTER_SET_NAME, CHAR_COL_DECL_LENGTH,
     CHAR_USED,
     V80_FMT_IMAGE, HIDDEN_COLUMN, VIRTUAL_COLUMN,
     SEGMENT_COLUMN_ID, INTERNAL_COLUMN_ID,  QUALIFIED_COL_NAME)
     as
      select o.obj#, o.owner#, u.name, o.name,
       c.name, c.type#,
       decode(c.type#, 1, decode(c.charsetform, 2, 'NVARCHAR2', 'VARCHAR2'),
                       2, decode(c.scale, null,
                                 decode(c.precision#, null, 'NUMBER', 'FLOAT'),
                                 'NUMBER'),
                       8, 'LONG',
                       9, decode(c.charsetform, 2, 'NCHAR VARYING', 'VARCHAR'),
                       12, 'DATE',
                       23, 'RAW', 24, 'LONG RAW',
                       58, nvl2(ac.synobj#,
                                (select o.name from sys.obj$ o
                                 where o.obj#=ac.synobj#), ot.name),
                       69, 'ROWID',
                       96, decode(c.charsetform, 2, 'NCHAR', 'CHAR'),
                       100, 'BINARY_FLOAT',
                       101, 'BINARY_DOUBLE',
                       105, 'MLSLABEL',
                       106, 'MLSLABEL',
                       111, nvl2(ac.synobj#,
                                (select o.name from sys.obj$ o
                                 where o.obj#=ac.synobj#), ot.name),
                       112, decode(c.charsetform, 2, 'NCLOB', 'CLOB'),
                       113, 'BLOB', 114, 'BFILE', 115, 'CFILE',
                       121, nvl2(ac.synobj#,
                                (select o.name from sys.obj$ o
                                 where o.obj#=ac.synobj#), ot.name),
                       122, nvl2(ac.synobj#,
                                (select o.name from sys.obj$ o
                                 where o.obj#=ac.synobj#), ot.name),
                       123, nvl2(ac.synobj#,
                                (select o.name from sys.obj$ o
                                 where o.obj#=ac.synobj#), ot.name),
                       178, 'TIME(' ||c.scale|| ')',
                       179, 'TIME(' ||c.scale|| ')' || ' WITH TIME ZONE',
                       180, 'TIMESTAMP(' ||c.scale|| ')',
                       181, 'TIMESTAMP(' ||c.scale|| ')' || ' WITH TIME ZONE',
                       231, 'TIMESTAMP(' ||c.scale|| ')' || ' WITH LOCAL TIME ZONE',
                       182, 'INTERVAL YEAR(' ||c.precision#||') TO MONTH',
                       183, 'INTERVAL DAY(' ||c.precision#||') TO SECOND(' ||
                             c.scale || ')',
                       208, 'UROWID',
                       'UNDEFINED'),
       decode(c.type#, 111, 'REF'),
       nvl2(ac.synobj#,
              (select u.name 
               from sys.user$ u, sys.obj$ o
               where o.owner#=u.user# and o.obj#=ac.synobj#),
             ut.name),
       c.length, c.precision#, c.scale,
       decode(sign(c.null$),-1,'D', 0, 'Y', 'N'),
       decode(c.col#, 0, to_number(null), c.col#), 
       decode(c.charsetform, 1, 'CHAR_CS',
                             2, 'NCHAR_CS',
                             3, NLS_CHARSET_NAME(c.charsetid),
                             4, 'ARG:'||c.charsetid),
       decode(c.charsetid, 0, to_number(NULL),
                           nls_charset_decl_len(c.length, c.charsetid)),
       decode(c.type#, 1, decode(bitand(c.property, 8388608), 0, 'B', 'C'),
                      96, decode(bitand(c.property, 8388608), 0, 'B', 'C'),
                      null),
       decode(bitand(ac.flags, 128), 128, 'YES', 'NO'),
       decode(c.property, 0, 'NO', decode(bitand(c.property, 32), 32, 'YES',
                                          'NO')),
       decode(c.property, 0, 'NO', decode(bitand(c.property, 8), 8, 'YES',
                                          'NO')),
       decode(c.segcol#, 0, to_number(null), c.segcol#), c.intcol#,
       decode(bitand(c.property, 1024), 1024,
              (select decode(bitand(cl.property, 1), 1, rc.name, cl.name)
               from sys.col$ cl, sys.attrcol$ rc
               where cl.intcol# = c.intcol#-1
               and cl.obj# = c.obj# and c.obj# = rc.obj#(+) and
               cl.intcol# = rc.intcol#(+)),
              decode(bitand(c.property, 1), 0, c.name,
                     (select tc.name from sys.attrcol$ tc
                      where c.obj# = tc.obj# and c.intcol# = tc.intcol#)))
from sys.col$ c, sys.obj$ o, sys.user$ u,
     sys.coltype$ ac, sys.obj$ ot, sys.user$ ut
where o.obj# = c.obj#
  and o.owner# = u.user#
  and c.obj# = ac.obj#(+) and c.intcol# = ac.intcol#(+)
  and ac.toid = ot.oid$(+)
  and ot.type#(+) = 13
  and ot.owner# = ut.user#(+)
  and (o.type# in (3, 4)                                    /* cluster, view */
       or
       (o.type# = 2    /* tables, excluding iot - overflow and nested tables */
        and
        not exists (select null
                      from sys.tab$ t
                     where t.obj# = o.obj#
                       and (bitand(t.property, 512) = 512 or
                            bitand(t.property, 8192) = 8192))));


create or replace view LOGMNR_GTCS_SUPPORT
    (logmnr_uid,
     obj#,
     objv#,
     segcol#,
     intcol#,
     col#,
     colname,
     type#,
     length,
     precision,
     scale,
     interval_leading_precision,
     interval_trailing_precision,
     property,
     charsetid,
     charsetform,
     logmnrcolflags,
     XTypeSchemaName,
     XTypeName,
     XFQColName,
     XTopIntCol,
     XReffedTableObjn,
     XReffedTableObjv,
     XColTypeFlags,
     XOpqTypeType,
     XOpqTypeFlags,
     XOpqLobIntcol,
     XOpqObjIntcol,
     XXMLIntCol,
     EaOwner#,
     EaMKeyId,
     EaEncAlg,
     EaIntAlg,
     EaColKlc,
     EaKLcLen,
     EaFlags,
     LogmnrDerivedFlags,
     collid,
     collintcol#,
     acdrrescol#
             )
as
select
         o.logmnr_uid,
         o.obj#,
         o.objv#,
         lc.segcol#,
         lc.intcol#,
         lc.col#,
         lc.name,
         lc.type#,
         lc.length,
         lc.precision#,
         lc.scale,
         lc.spare2,  /* INTERVAL_LEADING_PRECISION */
         lc.spare1,  /* INTERVAL_TRAILING_PRECISION */
         lc.property,
         lc.charsetid,
         lc.charsetform,
         NULL LogmnrColFlags,   /* THIS IS BEING SET IN C */
         case lc.type# 
              when 1 /* DTYCHR */ then NULL  /* shortcut for most common */
              when 2 /* DTYNUM */ then NULL
              when 12 /* DTYDAT */ then NULL
              when 58 /* DTYOPQ - XMLType, ANYDATA, etc. */ then
               (select lv.data_type_owner
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 121 /* DTYADT */ then
               (select lv.data_type_owner
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 122 /* DTYNTB */ then
               (select lv.data_type_owner
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 123 /* DTYNAR */ then
               (select lv.data_type_owner
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 111 /* DTYIREF */ then  /* needed?  copied from  dba_tab_cols */
               (select lv.data_type_owner
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
           else NULL end XTypeSchemaName,
         case lc.type# 
              when 1 /* DTYCHR */ then NULL  /* shortcut for most common */
              when 2 /* DTYNUM */ then NULL
              when 12 /* DTYDAT */ then NULL
              when 58 /* DTYOPQ - XMLTYPE, ANYDATA, etc. */ then
               (select lv.data_type
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 121 /* DTYADT */ then
               (select lv.data_type
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 122 /* DTYNTB */ then
               (select lv.data_type
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 123 /* DTYNAR */ then
               (select lv.data_type
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 111 /* DTYIREF */ then  /* needed?  copied from  dba_tab_cols */
               (select lv.data_type
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
           else NULL end XTypeName,
         case bitand(lc.property, 1029) 
              when 0 then
               null
              when 1 then
               (select lv.qualified_col_name
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 5 then
               (select lv.qualified_col_name
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 4 then
               (select lv.qualified_col_name
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
              when 1024 then
               (select lv.qualified_col_name
                 from sys.logmnr_tab_cols_support lv
                 where lv.logmnr_uid = o.logmnr_uid and
                       lv.obj# = lc.obj# and
                       lv.internal_column_id = lc.intcol#)
            else NULL end XFQColName,
         /* topintcol */
         case when (bitand(lt.property,1) = 0)  /* typed table bit not set */
            then /* relational table */
                 /* most columns are not hidden and thus do not have */
                 /* an associated topintcol.  Certain special columns */
                 /* where col# = 0 also do not have topintcol */
               case when
                    (bitand(lc.property,32) = 0) or  /* not hidden column */
                    (lc.col# = 0)then                /* special column */
                  NULL /* do not set topintcol */
               else /* it is hidden and is not col# = 0 (ie special) */
                    /* so find the covering user visible column */
                    (select min(sc.intcol#) /* min for speedup only */
                     from system.logmnr_col$ sc
                     where sc.logmnr_uid = o.logmnr_uid and
                           sc.obj# = lc.obj# and
                           sc.col# = lc.col# and
                           bitand(sc.property,1) = 0 and /*not an attribute*/
                           bitand(sc.property, 32) = 0)  /* not hidden */
               end
         else /* typed table */
              /* everything gets rowinfo$ column as topintcol except */
              /* for the rowinfo$ itself, and the oid */
            case when
                 (bitand(lc.property,2) = 0) and    /* not an oid */
                 (bitand(lc.property,512) = 0) then /* not rowinfo$ */
               (select min(sc.intcol#) /* min for speedup only */
                  from system.logmnr_col$ sc
                 where sc.logmnr_uid = o.logmnr_uid and 
                       sc.obj# = lc.obj# and
                       bitand(sc.property, 512) = 512) /* rowinfo col */
            else NULL end  /* oid/rowinfo, leave topintcol null */
         end XTopIntCol,
         case LC.TYPE# when 111 /* DTYIREF */ then
               (select oo.obj#
                from system.logmnr_obj$ oo, system.logmnr_refcon$ r
                where oo.logmnr_uid = o.logmnr_uid and
                      r.logmnr_uid = o.logmnr_uid and
                      oo.oid$ = r.stabid and
                      r.intcol# = lc.intcol# and 
                      r.obj# = o.obj#) 
             else NULL end XReffedTableObjn,
         case LC.TYPE# when 111 /* DTYIREF */ then
               (select oo.objv#
                from system.logmnr_obj$ oo, system.logmnr_refcon$ r
                where oo.logmnr_uid = o.logmnr_uid and
                      r.logmnr_uid = o.logmnr_uid and
                      oo.oid$ = r.stabid and
                      r.intcol# = lc.intcol# and 
                      r.obj# = o.obj#)
             else NULL end XReffedTableObjv,
         case LC.TYPE# when 58 /* DTYOPQ */ then
              (select ct.flags 
               from system.logmnr_coltype$ ct
               where ct.logmnr_uid = o.logmnr_uid and ct.obj# = o.obj# and
                     ct.intcol# = lc.INTCOL#)
            else NULL end XColTypeFlags,
         case LC.TYPE# when 58 /* DTYOPQ */ then
              (select ot.type
               from system.logmnr_opqtype$ ot
               where ot.logmnr_uid = o.logmnr_uid and ot.obj# = o.obj# and
                     ot.intcol# = lc.intcol#)
            else NULL end XOpqTypeType,
         case LC.TYPE# when 58 /* DTYOPQ */ then
              (select ot.flags
               from system.logmnr_opqtype$ ot
               where ot.logmnr_uid = o.logmnr_uid and ot.obj# = o.obj# and
                     ot.intcol# = lc.intcol#)
            else NULL end XOpqTypeFlags,
         case LC.TYPE# when 58 /* DTYOPQ */ then
              (select ot.lobcol
               from system.logmnr_opqtype$ ot
               where ot.logmnr_uid = o.logmnr_uid and ot.obj# = o.obj# and
                     ot.intcol# = lc.intcol#)
            else NULL end XOpqLobIntcol,
         case LC.TYPE# when 58 /* DTYOPQ */ then
              (select ot.objcol
               from system.logmnr_opqtype$ ot
               where ot.logmnr_uid = o.logmnr_uid and ot.obj# = o.obj# and
                     ot.intcol# = lc.intcol#)
            else NULL end XOpqObjIntcol,
         /* xmlintcol */
         case when (bitand(lt.property,1) = 0)  /* typed table bit not set */
            then /* relational table */
                 /* most columns are not hidden and thus do not have */
                 /* an associated topintcol/xmlintocol. */
               case when
                    (bitand(lc.property,32) = 0) then  /* not hidden column */
                  NULL /* do not set XMLintcol */
               else /* it is hidden and is not col# = 0 (ie special) */
                    /* so find the covering user visible column */
                    /* if it is not XML, then we want/get NULL */
                    (select min(sc.intcol#)
                     from system.logmnr_col$ sc, system.logmnr_opqtype$ opq
                     where sc.logmnr_uid = o.logmnr_uid and
                           opq.logmnr_uid = o.logmnr_uid and
                           sc.obj# = lc.obj# and        /* same obj# */
                           opq.obj# = lc.obj# and       /* same obj# */
                           sc.col# = lc.col# and        /* same col# */
                           sc.intcol# = opq.intcol# and
                           bitand(sc.property,1) = 0 and /*not an attribute*/
                           sc.type# = 58 and              /* opaque type */
                           opq.type = 1)                  /* XML */
               end
         else /* typed table */
               (select min(sc.intcol#)  /* NULL if topintocl is not XML */
                from system.logmnr_col$ sc, system.logmnr_opqtype$ opq
                where sc.logmnr_uid = o.logmnr_uid and sc.obj# = lc.obj# and
                      opq.logmnr_uid = o.logmnr_uid and opq.obj# = lc.obj# and
                      opq.intcol# = sc.intcol# and
                      bitand(sc.property, 512) = 512 and /* rowinfo col */
                      sc.type# = 58 and  /* opaque type */
                      opq.type = 1)    /* XML */
            end XXMLIntCol,
         case when (bitand(lc.property, 67108864) = 67108864) /* encrypt col */
           then 
         (select ea.owner#
               from system.logmnr_enc$ ea
               where ea.logmnr_uid = o.logmnr_uid and ea.obj# = o.obj#)
             else NULL end EaOwner#,
         case when (bitand(lc.property, 67108864) = 67108864) 
           then 
         (select ea.mkeyid
               from system.logmnr_enc$ ea
               where ea.logmnr_uid = o.logmnr_uid and ea.obj# = o.obj#)
             else NULL end EaMKeyId,
         case when (bitand(lc.property, 67108864) = 67108864) 
           then 
         (select ea.encalg
               from system.logmnr_enc$ ea
               where ea.logmnr_uid = o.logmnr_uid and ea.obj# = o.obj#)
             else NULL end EaEncAlg,
         case when (bitand(lc.property, 67108864) = 67108864) 
           then 
         (select ea.intalg
               from system.logmnr_enc$ ea
               where ea.logmnr_uid = o.logmnr_uid and ea.obj# = o.obj#)
             else NULL end EaIntAlg,
         case when (bitand(lc.property, 67108864) = 67108864)
           then 
         (select ea.colklc
               from system.logmnr_enc$ ea
               where ea.logmnr_uid = o.logmnr_uid and ea.obj# = o.obj#)
             else NULL end EaColKlc,
         case when (bitand(lc.property, 67108864) = 67108864) 
           then 
         (select ea.klclen
               from system.logmnr_enc$ ea
               where ea.logmnr_uid = o.logmnr_uid and ea.obj# = o.obj#)
             else NULL end EaKLcLen,
         case when (bitand(lc.property, 67108864) = 67108864) 
           then 
         (select nvl(ea.flag,0)
               from system.logmnr_enc$ ea
               where ea.logmnr_uid = o.logmnr_uid and ea.obj# = o.obj#)
             else NULL end EaFlags,
         0 as LogmnrDerivedFlags,
         lc.collid,
         lc.collintcol#,
         lc.acdrrescol#
       from
         system.logmnr_col$ lc, system.logmnr_tab$ lt, system.logmnr_obj$ o
       where 
         o.logmnr_uid = lc.logmnr_uid AND
         o.logmnr_uid = lt.logmnr_uid AND
         o.obj# = lt.obj# AND
         o.obj# = lc.obj#
       order by lc.logmnr_uid, o.obj#, lc.intcol#;

alter view logmnr_gtcs_cat_support_v$ compile;

create or replace view LOGMNR_GTCS_CAT_SUPPORT
as select
logmnr_uid,
       obj#,
       objv#,
       segcol#,
       intcol#,
       col#,
       colname,
       type#,
       length,
       precision,
       scale,
       interval_leading_precision,
       interval_trailing_precision,
       property,
       charsetid,
       charsetform,
       logmnrcolflags,
       XTypeSchemaName,
       XTypeName,
       XFQColName,
       XTopIntCol,
       XReffedTableObjn,
       XReffedTableObjv,
       XColTypeFlags,
       XOpqTypeType,
       XOpqTypeFlags,
       XOpqLobIntcol,
       XOpqObjIntcol,
       XXMLIntCol,
       EaOwner#,
       EaMKeyId,
       EaEncAlg,
       EaIntAlg,
       EaColKlc,
       EaKLcLen,
       EaFlags,
       LogmnrDerivedFlags,
       collid,
       collintcol#,
       acdrrescol#
from logmnr_gtcs_cat_support_v$
/

-- Create any missing partitions
declare
    type part_typ is record (table_name dbms_quoted_id, 
                             part_name dbms_quoted_id,
                             values_less_than number);
    type part_cur_typ is ref cursor;
    part_cur       part_cur_typ;
    part_rec       part_typ;
    part_query     varchar2(4000);
    alter_stmt     varchar2(4000);
BEGIN 

  part_query :=
    'select case when bitand(x.flags, 2) = 2 
                 then ''LOGMNR_''|| x.name
                 else x.name end table_name,
           ''P''|| TO_CHAR(ui.logmnr_uid) part_name,
           ui.logmnr_uid + 1 values_less_than
       from x$krvxdta x, system.logmnr_uid$ ui
      where bitand(x.flags,1) = 1 
        and not exists (select 1 
                        from obj$ o, user$ usr
                        where o.owner# = usr.user#
                          and usr.name = ''SYSTEM''
                          and o.name = case when bitand(x.flags, 2) = 2 
                                            then ''LOGMNR_''|| x.name
                                            else x.name end
                          and o.subname = ''P''|| TO_CHAR(ui.logmnr_uid)
                          and o.remoteowner is null 
                          and o.linkname is null
                          and o.type# = 19)
   union
     select case when bitand(x.flags, 2) = 2 
                 then ''LOGMNR_''|| x.name
                 else x.name end table_name,
           ''P''|| TO_CHAR(ui.logmnr_uid) part_name,
           ui.logmnr_uid + 1 values_less_than
       from x$krvxdta x, system.logmnrc_dbname_uid_map ui
      where bitand(x.flags,1) = 1 
        and bitand(x.flags,16) = 16 
        and not exists (select 1 
                        from obj$ o, user$ usr
                        where o.owner# = usr.user#
                          and usr.name = ''SYSTEM''
                          and o.name = case when bitand(x.flags, 2) = 2 
                                            then ''LOGMNR_''|| x.name
                                            else x.name end
                          and o.subname = ''P''|| TO_CHAR(ui.logmnr_uid)
                          and o.remoteowner is null 
                          and o.linkname is null
                          and o.type# = 19)
      order by values_less_than asc';
  open part_cur for part_query;
  loop
    fetch part_cur into part_rec;
    exit when part_cur%NOTFOUND;
    alter_stmt := 'alter table system.' || part_rec.table_name || 
                   ' add partition ' || part_rec.part_name ||
                   ' values less than (' || part_rec.values_less_than || 
                   ') logging';
    execute immediate alter_stmt;
    commit;
  end loop;
  close part_cur;
end;
/

--- DBA_SUPPLEMENTAL_LOGGING catalog view
create or replace view dba_supplemental_logging as
-- If minimal is off, no need to look elsewhere.
select 'NO' MINIMAL,
       'NO' PRIMARY_KEY,
       'NO' UNIQUE_INDEX,
       'NO' FOREIGN_KEY,
       'NO' ALL_COLUMN,
       'NO' PROCEDURAL
from v$database
where SUPPLEMENTAL_LOG_DATA_MIN = 'NO'
union
-- If there is no prop$ entry, go by what v$database says.
select  'YES' MINIMAL,
        SUPPLEMENTAL_LOG_DATA_PK PRIMARY_KEY,
        SUPPLEMENTAL_LOG_DATA_UI UNIQUE_INDEX,
        SUPPLEMENTAL_LOG_DATA_FK FOREIGN_KEY,
        SUPPLEMENTAL_LOG_DATA_ALL ALL_COLUMN,
        SUPPLEMENTAL_LOG_DATA_PL  PROCEDURAL
from v$database a where 
     a.SUPPLEMENTAL_LOG_DATA_MIN != 'NO' and
      not exists (select 1 from sys.props$ 
                  where name = 'SUPPLEMENTAL_LOG_DATA')
union
-- When DB wide minimal is enabled and the props$ entry for 
-- supplemental logging is non-zero (has some relevance)
-- look at both v$database and the props$ entry to detremine
-- the effective state of supplemental logging for the PDB 
-- in question.
select 'YES' MINIMAL,
       (case when (a.SUPPLEMENTAL_LOG_DATA_PK = 'NO') and
                   ((bitand(to_number(b.value$), 1) = 0))
                    then 'NO' else 'YES' end) PRIMARY_KEY,
       (case when (a.SUPPLEMENTAL_LOG_DATA_UI = 'NO') and
                   (bitand(to_number(b.value$), 2) = 0) 
                    then 'NO' else 'YES' end) UNIQUE_INDEX,
       (case when (a.SUPPLEMENTAL_LOG_DATA_FK = 'NO') and
                   (bitand(to_number(b.value$), 4) = 0) 
                    then 'NO' else 'YES' end) FOREIGN_KEY,
       (case when (a.SUPPLEMENTAL_LOG_DATA_ALL = 'NO') and
                   (bitand(to_number(b.value$), 32) = 0) 
                    then 'NO' else 'YES' end) ALL_COLUMN,
       (case when (a.SUPPLEMENTAL_LOG_DATA_PL = 'NO') and
                   (bitand(to_number(b.value$), 64) = 0) 
                    then 'NO' else 'YES' end) PROCEDURAL
from v$database a, (select value$ 
                    from sys.props$ where name = 'SUPPLEMENTAL_LOG_DATA') b
where a.SUPPLEMENTAL_LOG_DATA_MIN != 'NO';

comment on table DBA_SUPPLEMENTAL_LOGGING is
'Describes the current state of supplemental logging for this database'
/
comment on column DBA_SUPPLEMENTAL_LOGGING.MINIMAL is
'Is minimal supplemental Logging ON - YES or NO'
/
comment on column DBA_SUPPLEMENTAL_LOGGING.PRIMARY_KEY is
'Is primary key supplemental Logging ON - YES or NO'
/
comment on column DBA_SUPPLEMENTAL_LOGGING.UNIQUE_INDEX is
'Is unique column supplemental Logging ON - YES or NO'
/
comment on column DBA_SUPPLEMENTAL_LOGGING.FOREIGN_KEY is
'Is foreign key supplemental Logging ON - YES or NO'
/
comment on column DBA_SUPPLEMENTAL_LOGGING.ALL_COLUMN is
'Is all column supplemental Logging ON - YES or NO'
/
comment on column DBA_SUPPLEMENTAL_LOGGING.PROCEDURAL is
'Is supplemental logging for procedural replication ON - YES or NO'
/

create or replace public synonym dba_supplemental_logging
                             for dba_supplemental_logging;

grant select on dba_supplemental_logging to select_catalog_role;

execute CDBView.create_cdbview(false,'SYS','DBA_SUPPLEMENTAL_LOGGING','CDB_SUPPLEMENTAL_LOGGING');
grant select on SYS.CDB_supplemental_logging to select_catalog_role
/
create or replace public synonym CDB_supplemental_logging for SYS.CDB_supplemental_logging
/


@?/rdbms/admin/sqlsessend.sql

OHA YOOOO