MINI MINI MANI MO

Path : /proc/self/root/opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //proc/self/root/opt/oracle/product/18c/dbhomeXE/rdbms/admin/drep.bsq

REM   harnesin  06/28/17 - Bug 25871643: Future pdb registration support
REM   yanxie    04/06/17 - bug 22666352: change partdobj# to varchar2
REM   jjye      12/16/16 - bug 21571874: MV uses dbms_scheduler
Rem   sramakri  09/01/16 - Remove CDC from 12.2
REM   jorgrive  11/18/15 - Bug 22234530: add pdb_id streams$_apply_spill_txn
REM   huntran   11/09/15 - move apply$_error_txn to catapp, cdr_info in sysaux
REM   vgerard   10/10/15 - add apply$_procedure_stats
REM   yanxie    06/24/15 - on-statement mjv: add flag4 in snap$ 
REM   sgarduno  04/22/15 - Bug 20855956 - Streams Long Identifier support.
REM   sgarduno  03/20/15 - Bug 20560241: Long identifier support 
REM                        for XSTREAM$_MAP.
REM   huntran   01/20/15 - proj 58812: apply$_auto_cdr_column_groups
REM   jorgrive  06/30/14 - added table repl$_process_events
REM   romorale  04/08/14 - BigSCN lcrid_version to streams$_apply_process 
REM   sgarduno  06/18/14 - Bug 18030980: long identifier, use M_IDEN.
REM   p4kumar   01/21/14 - Bug 17537632
REM   thoang    12/03/13 - Add comment to xstreams$_server.flags column
REM   praghuna  11/20/13 - Added pto recovery fields to apply milestone
REM   huntran   10/01/13 - track lob operations in table stats
REM   tianli    09/15/13 - add apply$_cdr_info
REM   tfyu      09/05/13 - use sumdelta$.spare2 for partition dict. obj number
REM   myuin     03/15/13 - spare4 in streams$_apply_milestone is used 4 logbsn
REM   tianli    09/12/12 - rename source_pdb_name to source_container_name
REM   romorale  09/13/12 - Bug 14541945: Startup time will be set in column 
REM                        spare18 of apply$_table_stats. 
REM   tianli    08/02/12 - add table for cdb global-name/pdb-name mapping
REM   vgerard   07/26/12 - Bug-14284283:Add set_by column to handlers
REM   praghuna  01/29/12 - bug13110976:Added flags to streams$_apply_milestone
REM   thoang    02/18/12 - Bug 13717163: streams$_apply_progress cannot use
REM                        deferred segment creation due to Data Layer API. 
REM   tianli    12/20/11 - add notifier info for grant/prepare
REM   tianli    12/10/11 - add source_database to streams$_process_params
REM   huntran   11/15/11 - error position
REM   thoang    10/25/11 - add comments for spare columns
REM   thoang    09/13/11 - add source_root_name to streams$_rules
REM   thoang    08/05/11 - change source_db_name field to nullable
REM   rbello    05/20/11 - Add rmtab$
REM   tfyu      05/11/11 - Add mlog$.partdobj#
REM   rrudd     05/05/11 - New redef_status$ table to support batched
REM                        online redefinition of partitions.
REM   huntran   12/21/10 - xstream$_dml_conflict_handler
REM                        xstream$_dml_conflict_columns
REM                        xstream$_reperror_handler
REM                        xstream$_handle_collisions
REM   yurxu     04/11/11 - Add connect_user for xstream$_sever
REM   tianli    03/30/11 - support pdb for xstream
REM   traney    03/21/11 - 35209: long identifiers dictionary upgrade
Rem   yurxu     03/07/11 - Bug-11922716: 2-level privilege model
REM   yurxu     03/07/11 - Bug-11922716: 2-level privilege model
REM   praghuna  11/10/09 - bug 9121494
REM   thoang    10/10/09 - add inbound_svr to streams$_apply_process
REM   thoang    02/14/09 - add xout_processed_time & parent_transaction_id
REM   rmao      02/17/08 - add seqnum to streams$_propagation_process, add
REM                      - streams$_propagation_seqnum sequence
REM   juyuan    11/24/08 - add apply change handler table
REM   jinwu     10/06/08 - add stmt handlers
REM   thoang    11/24/08 - add xidusn, xidslt & xidsqn cols to apply$_error
REM   rmao      04/04/08 - add streams$_split_merge, streams$_capture_server
REM   huagli    03/08/08 - Project 25482: commit SCN-based MV logs
REM   wesmith   12/10/07 - MV log purge optimization
REM   thoang    02/27/08 - Add xstream system tables
REM   jklein    08/01/05 - creation
REM
REM the streams feature depends on the SYSAUX tablespace from manageability.
REM
rem
rem  sumpartlog$ table
rem  This table has one row per table partition being dropped or its dataobj# 
rem  changed
rem  obj# is a key; and so is (bo#, part#)
rem  There is a non-unique index on bo#, obj#
rem
create table sumpartlog$ (
  obj#        number not null,                 /* object number of partition */
  /* DO NOT CREATE INDEX ON DATAOBJ#  AS IT WILL BE UPDATED IN A SPACE
   * TRANSACTION DURING TRUNCATE */
  dataobj#    number,                            /* data layer object number */
  bo#         number not null,                /* object number of base table */
  newobj#     number,               /* new object number of partition if any */
  newdataobj#    number,              /* new data layer object number if any */
  pobj#       number,               /* partition object number; populated when 
                                           TRUNCATE/COALESCE of subpartition */
  hiboundlen  number not null,      /* length of high bound value expression */
  loboundlen  number not null,       /* length of low bound value expression */
  boundvals   long,               /* concatenated text of low-and high-bound */
                                                         /* value expression */
  parttype    number,                                      /* partition type */
                                               /* 1=RANGE,2=COMPOSITE,3=LIST */
  pmoptype    number,                                  /* recorded PMOP type */
  scn         number,                             /* summary sequence number */
  timestamp   date not null,                 /* Time when the PMOP occurred. */
  flags       number,                        /* 0x01 It is a table operation */
                               /* 0x02 logged because DL/DML happened before */
                              /* 0x04 table op is issued by complete refresh */
                                        /* 0x08 PMOP log is commit SCN-based */
  /* These spare columns are for future needs, e.g. values for the 
   * PARALLEL(degree, instances) parameters.  */
  spare1      number,           
  spare2      number,
  spare3      number,
  xid         number,                                     /* transaction id */
  cscn        number                                          /* commit SCN */
)
/
create index i_sumpartlog$ on sumpartlog$(bo#, obj#)
/
create index i_sumpartlog$_bopart$ on sumpartlog$(bo#, dataobj#)
/
create table sumdelta$           /* sumdelta table */
( tableobj#     number not null, /* detail table obj# loaded */
  partitionobj# number not null, /* partition data obj# that was loaded */
  dmloperation  char(1),         /* I=insert, D=delete */
  scn           number not null, /* SCN when the bulk DML occurred. */
  timestamp     date not null,   /* Time when the bulk DML occurred. */
  lowrowid      rowid not null,  /* low rowid modified in this partition. */
  highrowid     rowid not null,  /* high rowid modified in this partition. */
  sequence      number,          /* sequence # */
  spare1        number,          /* 0x0001 - commit SCN-based DL log */
  spare2        number,          /* partition dictionary object number */
  spare3        varchar2(1000),
  spare4        date,
  xid           number           /* transaction id */
)
/
create unique index i_sumdelta$ on 
  sumdelta$(tableobj#, partitionobj#, timestamp, lowrowid, highrowid) 
/ 
CREATE TABLE snap_logdep$ (                           /* slog$ for sumdelta$ */
  tableobj#  number,                             /* obj# of the master table */
  snapid     integer,           /* internal id of the snapshot using the log */
  snaptime   date,                  /* time of last refresh for the snapshot */
  rscn       number)                                     /* last refresh scn */
/ 
create unique index i_snap_logdep1 on snap_logdep$(tableobj#, snapid)
/
CREATE TABLE snap_loadertime$ (                       /* mlog$ for sumdelta$ */
  tableobj#  number,                             /* obj# of the master table */
  oldest     date,                /* oldest information for the master table */
  oldest_scn number,          /* oldest scn information for the master table */
  youngest   date,                 /* most recent refresh timestamp assigned */
  flag       number)                            /* (reserved for future use) */
/
create unique index i_snap_loadertime1 on snap_loadertime$(tableobj#)
/
create cluster c_mlog# (master varchar2("M_IDEN"),
                        mowner varchar2("M_IDEN"))
/
create index i_mlog# on cluster c_mlog#
/
create table mlog$          /* list of local master tables used by snapshots */
( mowner          varchar2("M_IDEN") not null,            /* owner of master */
  master          varchar2("M_IDEN") not null,             /* name of master */
  oldest          date,       /* maximum age of rowid information in the log */
  oldest_pk       date,          /* maximum age of PK information in the log */
  oldest_seq      date,    /* maximum age of sequence information in the log */
  oscn            number,                                   /* scn of oldest */
  youngest        date,                     /* most recent snaptime assigned */
  yscn            number,                   /* set-up scn;  identifies group */
                                          /* of rows set up at time youngest */
  log             varchar2("M_IDEN") not null,                /* name of log */
  trig            varchar2("M_IDEN"),           /* trigger on master for log */
  flag            number,       /* 0x0001, log contains rowid values         */
                                /* 0x0002, log contains primary key values   */
                                /* 0x0004, log contains filter column values */
                                /* 0x0008, log is imported                   */
                                /* 0x0010, log is created with temp table    */
  mtime           date not null,                    /* DDL modification time */
  temp_log        varchar2("M_IDEN"),/* temp table as updatable snapshot log */
  oldest_oid      date,         /* maximum age of OID information in the log */
  oldest_new      date,              /* maximum age of new values in the log */
  purge_start       date,                                /* purge start date */
  purge_next        varchar2("M_DATF"),        /* purge next date expression */
  purge_job         varchar2("M_IDEN"),                    /* purge job name */
  last_purge_date   date,                                 /* last purge date */
  last_purge_status number,    /* last purge status: error# or 0 for success */
  rows_purged       number,                     /* last purge: # rows purged */
  oscn_pk           number,      /* maximum scn of PK information in the log */
  oscn_seq          number,/* maximum scn of sequence information in the log */
  oscn_oid          number,     /* maximum scn of OID information in the log */
  oscn_new          number,          /* maximum scn of new values in the log */
  partdobj#         varchar2(4000)
                                 /* partition data obj# of the table for log */
)
cluster c_mlog# (master, mowner)
/
create table snap_xcmt$ /* xid and commit_scn mapping table */
( xid          number not null,                            /* transaction id */
  commit_scn   number not null                                 /* commit SCN */
)
/
create table slog$                     /* list of snapshots on local masters */
( mowner          varchar2("M_IDEN") not null,            /* owner of master */
  master          varchar2("M_IDEN") not null,             /* name of master */
  snapshot        date,                 /* identifies V7 snapshots: obsolete */
  snapid          integer,                        /* identifies V8 snapshots */
  sscn            number,                                 /* scn of snapshot */
  snaptime        date               not null,        /* when last refreshed */
  tscn            number,                                 /* scn of snaptime */
  user#           number)                  /* userid for security validation */
cluster c_mlog# (master, mowner)
/
create index i_slog1 on slog$(snaptime)
/
REM
REM IMPORTANT NOTE:
REM   Due to the clob column, snap$ must appear after the creation of lob$
REM
create table snap$                                /* list of local snapshots */
( sowner          varchar2("M_IDEN") not null,          /* owner of snapshot */
  vname           varchar2("M_IDEN") not null,      /* name of snapshot view */
  tname           varchar2("M_IDEN") not null,     /* name of snapshot table */
  mview           varchar2("M_IDEN"),          /* view snapshot is made from */
  mowner          varchar2("M_IDEN"),                     /* owner of master */
  master          varchar2("M_IDEN"),                      /* name of master */
  mlink           varchar2("M_XDBI"),        /* database link to master site */
  can_use_log     varchar2(1),                                     /* unused */
  snapshot        date,       /* used by V7 masters to identify the snapshot */
  snapid          integer,    /* used by V8 masters to identify the snapshot */
  sscn            number,                                 /* scn of snapshot */
  snaptime        date,   /* when this snapshot was last refreshed: OBSOLETE */
  tscn            number,                                 /* scn of snaptime */
  error#          number,          /* last error caused by automatic refresh */
  auto_fast       varchar2(1),        /* date function for automatic refresh */
  auto_fun        varchar2("M_DATF"),             /* obsolete, 7.1 and above */
  auto_date       date,                           /* obsolete, 7.1 and above */
  refgroup        number,                                          /* unused */
  ustrg           varchar2("M_IDEN"),     /* trigger for updatable snapshots */
  uslog           varchar2("M_IDEN"),         /* log for updatable snapshots */
  status          integer,  /* 0x0000, Need to regenerate refresh operations */
                            /* 0x0001, fast refresh operations generated     */
                            /* 0x0002, complete refresh operations generated */
  master_version  integer,              /* Oracle version of the master site */
                                                              /* (1) -> V7.x */
                                                              /* (2) -> V8.0 */
  tables          integer,  /* number of tables in snapshot definition query */
  field1          number,                                  /* for future use */
  field2          varchar2("M_IDEN"),                      /* for future use */
  flag            number,                   /* 0x0001, can use master log    */
                                            /* 0x0002, snapshot is updatable */
                                            /* 0X0010, ROWID snapshot        */
                                            /* 0x0020, PRIMARY KEY snapshot  */
  flag2           number,                           /* extended snapshot flg */
  query_txt       long,                /* query which this view instantiates */
  lobmaskvec      raw(255),                       /* lob columns mask vector */
  mtime           date not null,                    /* DDL modification time */
  mas_roll_seg    varchar2("M_IDEN"),        /* master-side rollback segment */
  rscn            number,                                /* last refresh scn */
  refhnt          number,                                    /* refresh hint */
  query_len       integer,            /* length of snapshot definition query */
  instsite        integer default 0,                   /* instantiating site */
  flavor_id       number,                                       /* flavor id */
  objflag         number,                   /* object properties of snapshot */
  sna_type_oid    raw(16),                             /* object MV type OID */
  sna_type_hashcode raw("KOTHCL"),                /* object MV type hashcode */
  sna_type_owner  varchar2("M_IDEN"),                /* object MV type owner */
  sna_type_name   varchar2("M_IDEN"),                 /* object MV type name */
  mas_type_oid    raw(16),                   /* master object table type OID */
  mas_type_hashcode raw("KOTHCL"),      /* master object table type hashcode */
  mas_type_owner  varchar2("M_IDEN"),      /* master object table type owner */
  mas_type_name   varchar2("M_IDEN"),       /* master object table type name */
  parent_sowner   varchar2("M_IDEN"),               /* parent snapshot owner */
  parent_vname    varchar2("M_IDEN"),                /* parent snapshot name */
  rel_query       clob,                /* relational transformation of query */
  alias_txt       clob,                             /* text for column alias */
  syn_count       integer,           /* number of synonyms for master tables */
  flag3           number,                           /* extended snapshot flg */
  eval_edition    varchar2("M_IDEN"),                  /* evaluation edition */
  flag4           number                            /* extended snapshot flg */
)
/
create unique index i_snap1 on snap$(vname, sowner, instsite)
/
create index i_snap2 on snap$(parent_vname, parent_sowner, instsite)
/
create sequence snapshot_id$                         /* Snapshot ID sequence */
  increment by 1
  start with 1
  minvalue 1
  maxvalue 2147483647     /* max value that is guaranteed to fit into an SB4 */
  nocycle
/
create table snap_reftime$
( sowner          varchar2("M_IDEN") not null,          /* owner of snapshot */
  vname           varchar2("M_IDEN") not null,      /* name of snapshot view */
  tablenum        integer not null,   /* order of master table in snap query */
  snaptime        date,                    /* time of last refresh for table */
  mowner          varchar2("M_IDEN"),                     /* owner of master */
  master          varchar2("M_IDEN"),                      /* name of master */
  masflag         number,                  /* additional master information: */
                                    /* (0x0001) is a fact table              */
                                    /* (0x0002) can be foreign key optimized */
  masobj#         number,                        /* obj# of the master table */
  loadertime      date,       /* last refresh with respect to SQL*Loader log */
  refscn          number,   /* scn of latest info used to refresh this table */
  instsite        integer default 0,                   /* instantiating site */
  lastsuccess     date,             /* time of last known successful refresh */
  fcmaskvec       raw(255),                    /* filter columns mask vector */
  ejmaskvec       raw(255),                 /* equi-join columns mask vector */
  sub_handle      number,              /* subscription handle (if using CDC) */
  change_view     varchar2("M_IDEN")      /* change view name (if using CDC) */
)
/
create unique index i_snap_reftime1 on 
  snap_reftime$(vname, sowner, instsite, tablenum)
/
create table mlog_refcol$             /* list of snapshot log filter columns */
( mowner          varchar2("M_IDEN") not null,            /* owner of master */
  master          varchar2("M_IDEN") not null,             /* name of master */
  colname         varchar2("M_IDEN") not null,   /* master table column name */
  oldest          date,          /* maximum age of information in the column */
  oldest_scn      number,        /* maximum scn of information in the column */
  flag            integer)                       /* column meta information: */
/
create unique index i_mlog_refcol1 on mlog_refcol$(mowner, master, colname)
/
create table snap_refop$            /* fast refresh operations for snapshots */
( sowner          varchar2("M_IDEN") not null,          /* owner of snapshot */
  vname           varchar2("M_IDEN") not null,      /* name of snapshot view */
  tabnum          integer not null,   /* order of table in subquery chain    */
                                      /* the master table is indicated by 1  */
  setnum          integer default 0,  /* the set of queries for a given      */
                                      /* table number, used for many-many    */
                                      /* subqueries or UNIONS                */
  operation#      integer not null,   /* operation type (see kkzrff, kkzrei) */
                                      /* FAST REFRESH OPERATIONS (outer tab) */
                                      /* 0 -> SELECT for delete phase        */
                                      /* 1 -> DELETE statement               */
                                      /* 2 -> SELECT for upd/ins phase       */
                                      /* 3 -> UPDATE statement               */
                                      /* 4 -> INSERT statement               */
                                      /* 5 -> DELETE local inserts (if upd)  */
                                      /* FAST REFRESH OPERATIONS (inner tab) */
                                      /* 0 -> SELECT for delete phase        */
                                      /* 1 -> DELETE statement               */
                                      /* 2 -> SELECT for insert phase        */
                                      /* 3 -> INSERT statement               */
                                      /* COMPLETE REFRESH OPERATIONS         */
                                      /* 6 -> Insert as Select               */
  cols            number,             /* bind columns in the query           */
                                      /* 0 -> no bind columns                */
                                      /* 1 -> snaptime                       */
                                      /* 2 -> snaptime, ejmaskvec            */
                                      /* 3 -> snaptime, ejmaskvec, fcmaskvec */
  fcmaskvec       raw(255),        /* obsolete -  filter columns mask vector */
                                      /* used for many-many subquery or UNION*/
  ejmaskvec       raw(255),       /* obsolete -equi-join columns mask vector */
                                      /* used for many-many subquery or UNION*/
  sql_txt         long,                /* query which this view instantiates */
  instsite        integer default 0)                   /* instantiating site */
/
create unique index i_snap_refop1 on 
  snap_refop$(sowner, vname, instsite, operation#, tabnum, setnum)
/
create table snap_colmap$            /* snapshot column aliasing information */
( sowner          varchar2("M_IDEN") not null,          /* owner of snapshot */
  vname           varchar2("M_IDEN") not null,      /* name of snapshot view */
  snacol          varchar2("M_IDEN") not null,    /* name of snapshot column */
  tabnum          integer not null,   /* order of master table in snap query */
  mascol          varchar2("M_IDEN"),                  /* master column name */
  maspos          integer,             /* position of master column (intcol) */
  colrole         number,                         /* how is this column used */
  instsite        integer default 0,                   /* instantiating site */
  snapos          integer default 0     /* position of col in snapshot table */
)
/
create unique index i_snap_colmap1 on 
  snap_colmap$(sowner, vname, instsite, tabnum, snacol)
/
create table snap_objcol$              /* snapshot object column information */
( sowner            varchar2("M_IDEN") not null,      /* snapshot view owner */
  vname             varchar2("M_IDEN") not null,       /* snapshot view name */
  instsite          integer default 0,                 /* instantiating site */
  tabnum            integer not null, /* master table this column belongs to */
  snacol            varchar2("M_IDEN") not null,     /* snapshot column name */
  mascol            varchar2("M_IDEN"),     /* associated master column name */
  flag              number,                             /* column properties */
  storage_tab_owner varchar2("M_IDEN"),  /* non-image coll/substitutable col */
  storage_tab_name  varchar2("M_IDEN"),  /* non-image coll/substitutable col */
  sna_type_oid      raw(16),                 /* type OID for snapshot column */
  sna_type_hashcode raw("KOTHCL"),      /* type hashcode for snapshot column */
  sna_type_owner    varchar2("M_IDEN"),    /* type owner for snapshot column */
  sna_type_name     varchar2("M_IDEN"),     /* type name for snapshot column */
  mas_type_oid      raw(16),                   /* type OID for master column */
  mas_type_hashcode raw("KOTHCL"),        /* type hashcode for master column */
  mas_type_owner    varchar2("M_IDEN"),      /* type owner for master column */
  mas_type_name     varchar2("M_IDEN")        /* type name for master column */
)
/
create unique index i_snap_objcol1 on 
  snap_objcol$(sowner, vname, instsite, tabnum, snacol);
/
create table reg_snap$            /* snapshots that use masters on this site */
( sowner          varchar2("M_IDEN") not null,          /* owner of snapshot */
  snapname        varchar2("M_IDEN") not null,           /* name of snapshot */
  snapsite        varchar2("M_XDBI") not null,       /* location of snapshot */
  snapshot_id     integer,                        /* identifies the snapshot */
  flag            number,                            /* updatable, PK, rowid */
  rep_type        number,                        /* type of replicating site */
  comment$        varchar2("M_VCSZ"),                 /* comment on snapshot */
  query_txt       long)                 /* query that this view instantiates */
/
create unique index i_reg_snap1 on reg_snap$(sowner, snapname, snapsite)
/
create index i_reg_snap2 on reg_snap$(snapshot_id)
/
create table snap_site$                      /* mapping of site names to IDs */
( site_name  varchar2("M_XDBI") not null,                       /* site name */
  site_id    integer                                              /* site ID */
)
/
create unique index i_snap_site1 on snap_site$(site_name)
/
create sequence snapsite_id$                    /* snapshot Site ID sequence */
  increment by 1
  start with 1
  minvalue 1
  maxvalue 4294967295                           /* max portable value of UB4 */
  nocycle
/
rem
rem  Refresh Groups
rem
create sequence rgroupseq
  start with 1
  increment by 1
  minvalue 1
  maxvalue 999999999                        /* should be less than MAXSB4VAL */
  cache 20
  noorder
  cycle
/
create cluster c_rg#
( refgroup        number)                            /* refresh group number */
/
create index i_rg# on cluster c_rg#
/
create table rgroup$
( refgroup         number,                        /* number of refresh group */
  owner            varchar2("M_IDEN") not null,    /* owner of refresh group */
  name             varchar2("M_IDEN") not null,     /* name of refresh group */
  flag             number default 0,       /* 0x01, destroy group when empty */
                                                 /* 0x02, do not push queues */
                                               /* 0x04, refresh after errors */
                                               /* 0x08, RepAPI refresh group */
  rollback_seg     varchar2("M_IDEN"),            /* rollback segment to use */
  field1           number default 0,
  job              number not null, /* job in job$ for refreshing this group */
  purge_opt#       integer,      /* purge_opt#, parallelism#, and heap_size# */
  parallelism#     integer,      /* are parameters for parallel propagation  */
  heap_size#       integer,      /* in V8                                    */
  instsite         integer default 0,                    /* snapshot site id */
  refresh_sequence number,                    /* refresh sequence for RepAPI */
  job_name         VARCHAR2("M_IDEN") DEFAULT NULL            /* job name in */
                             /* dba_scheduler_jobs for refreshing this group */
)
cluster c_rg# (refgroup)
/
create unique index i_rgroup on rgroup$ (owner, name, instsite)
/
create unique index i_rgref on rgroup$ (refgroup)
/
create index i_rgjob on rgroup$ (job)
/
create index i_rgjobname on rgroup$ (job_name)
/
create table rgchild$
( owner           varchar2("M_IDEN") not null,             /* owner of child */
  name            varchar2("M_IDEN") not null,              /* name of child */
  type#           varchar2("M_IDEN") default 'SNAPSHOT',   /* type of object */
  field1          number default 0,
  refgroup        number,                   /* refresh group the child is in */
  instsite        integer default 0                      /* snapshot site id */
)
cluster c_rg# (refgroup)
/
create unique index i_rgchild on rgchild$ (owner, name, instsite, type#)
/

rem
rem  Change Data Capture (CDC) is deprecated and has been removed except for 
rem  cdc_rsid_seq$ which is used for sync capture
rem

create sequence cdc_rsid_seq$       /* CDC row sequence ids for sync capture */
  start with 1
  increment by 1
  nomaxvalue
  minvalue 1
  nocycle
  cache 10000
  order
/

rem
rem Streams tables
rem
rem NOTE: Not all columns are populated during cloning. 
rem If you start using a spare column or add a new column then 
rem please change the cloning logic if you want to copy over the 
rem old value of that column to the cloned capture process. 

-- tabel for dba_streams_slit_merge view
CREATE TABLE streams$_split_merge
(
  original_capture_name  VARCHAR2("M_IDEN")   NOT NULL,    /* the original capture */
  cloned_capture_name    VARCHAR2("M_IDEN")   DEFAULT NULL,  /* the cloned capture */
  original_queue_owner   VARCHAR2("M_IDEN")   DEFAULT NULL,
  original_queue_name    VARCHAR2("M_IDEN")   DEFAULT NULL, 
  cloned_queue_owner     VARCHAR2("M_IDEN")   DEFAULT NULL, 
  cloned_queue_name      VARCHAR2("M_IDEN")   DEFAULT NULL,
  streams_type           NUMBER         DEFAULT NULL,
                                             /* propagation (1) or apply (2) */
  original_streams_name  VARCHAR2("M_IDEN")   DEFAULT NULL,
                                 /* original propagation or local apply name */
  cloned_streams_name    VARCHAR2("M_IDEN")   DEFAULT NULL,   
                                   /* cloned propagation or local apply name */
  recoverable_script_id  RAW(16)        DEFAULT NULL,
                       /* unique oid of the script to split or merge streams */
  action_type            NUMBER         DEFAULT NULL,   
            /* type of action performed on this streams (1:split or 2:merge) */
  action_threshold       NUMBER         DEFAULT NULL,          
                    /* value of auto_split_threshold or auto_merge_threshold */
  active                 NUMBER         DEFAULT NULL,    
                                       /* whether there is a job on this row */
  status                 NUMBER         DEFAULT NULL,  
                                                        /* status of streams */
  status_update_time     TIMESTAMP      DEFAULT NULL,
                                        /* time when status was last updated */
  creation_time          TIMESTAMP      DEFAULT SYSTIMESTAMP,
                                             /* time when the row is created */
  job_owner              VARCHAR2("M_IDEN")   DEFAULT NULL,
  job_name               VARCHAR2("M_IDEN")   DEFAULT NULL,  
                                /* name of the job to split or merge streams */
  schedule_owner         VARCHAR2("M_IDEN")   DEFAULT NULL,
  schedule_name          VARCHAR2("M_IDEN")   DEFAULT NULL,
                   /* name of the schedule to run split or merge streams job */
  lag                    NUMBER         DEFAULT NULL,      
                        /* specifies the time in seconds that cloned capture */
                                             /* lags behind original capture */
  error_number           NUMBER         DEFAULT NULL,
                                             /* error number reported if any */
  error_message          VARCHAR2("M_VCSZ") DEFAULT NULL,
                                                     /* explanation of error */
  spare1                 NUMBER         DEFAULT NULL,              /* unused */
  spare2                 NUMBER         DEFAULT NULL,              /* unused */
  spare3                 NUMBER         DEFAULT NULL,              /* unused */
  spare4                 NUMBER         DEFAULT NULL,              /* unused */
  spare5                 VARCHAR2("M_VCSZ") DEFAULT NULL,          /* unused */
  spare6                 VARCHAR2("M_VCSZ") DEFAULT NULL,          /* unused */
  spare7                 VARCHAR2("M_VCSZ") DEFAULT NULL,          /* unused */
  spare8                 VARCHAR2("M_VCSZ") DEFAULT NULL,          /* unused */
  spare9                 DATE           DEFAULT NULL,              /* unused */
  spare10                DATE           DEFAULT NULL,              /* unused */
  spare11                DATE           DEFAULT NULL,              /* unused */
  spare12                DATE           DEFAULT NULL,              /* unused */
  spare13                TIMESTAMP      DEFAULT NULL,              /* unused */
  spare14                TIMESTAMP      DEFAULT NULL,              /* unused */
  spare15                TIMESTAMP      DEFAULT NULL,              /* unused */
  spare16                TIMESTAMP      DEFAULT NULL               /* unused */
)
/

CREATE UNIQUE INDEX i_streams_split_merge ON streams$_split_merge
 (original_capture_name, cloned_capture_name, job_name, job_owner)
/

create sequence streams$_cap_sub_inst  
                                  /* capture subscriber instantiation number */
  increment by 1
  start with 1
  minvalue 1
  maxvalue 4294967295                           /* max portable value of UB4 */
  cycle
  nocache
/

CREATE TABLE streams$_capture_server
(
  QUEUE_SCHEMA               VARCHAR2("M_IDEN"),
  QUEUE_NAME                 VARCHAR2("M_IDEN"),
  DST_QUEUE_SCHEMA           VARCHAR2("M_IDEN"),
  DST_QUEUE_NAME             VARCHAR2("M_IDEN"),
  STARTUP_TIME               DATE,
  DBLINK                     VARCHAR2("M_XDBI"),
  STATUS                     VARCHAR2("M_IDEN"),
  TOTAL_MSGS                 NUMBER,
  TOTAL_BYTES                NUMBER,
  LAST_LCR_CREATION_TIME     DATE DEFAULT NULL,
  LAST_LCR_PROPAGATION_TIME  DATE,
  DST_DATABASE_NAME          VARCHAR2("M_XDBI"),
  SESSION_ID                 NUMBER,
  SERIAL#                    NUMBER,                     /* PROCESS SERIAL # */
  SPID                       VARCHAR2("M_IDEN"),
  PROPAGATION_NAME           VARCHAR2("M_IDEN") DEFAULT NULL,
  CAPTURE_NAME               VARCHAR2("M_IDEN") DEFAULT NULL,
  APPLY_NAME                 VARCHAR2("M_IDEN") DEFAULT NULL,
  APPLY_OBJ#                 NUMBER default 0,
  FIRST_APPLIED_SCN          NUMBER default 0,
  INACTIVE_TIME              DATE DEFAULT NULL,
  SUB_NUM                    NUMBER default 0, 
      /* uniqueuely identifies capture queue subscribers as they are created */
  SPARE1                     NUMBER,
  SPARE2                     NUMBER,
  SPARE3                     VARCHAR2("M_VCSZ"),
  SPARE4                     VARCHAR2("M_VCSZ"),
  SPARE5                     DATE,
  SPARE6                     DATE
)
/

CREATE UNIQUE INDEX i_streams_capture_server on streams$_capture_server
  (capture_name, PROPAGATION_NAME, APPLY_NAME)
/

create table streams$_capture_process
(
  queue_oid       raw(16)             not null,       /* AQ queue identifier */
  queue_owner     varchar2("M_IDEN")  not null,            /* AQ queue owner */
  queue_name      varchar2("M_IDEN")  not null,             /* AQ queue name */
  capture#        number              not null,                   /* 1 to 99 */
  capture_name    varchar2("M_IDEN")  not null,
  status          number,      /* capture process status: START, STOP, ABORT */
  ruleset_owner   varchar2("M_IDEN"),                      /* rule set owner */
  ruleset_name    varchar2("M_IDEN"),                       /* rule set name */
  logmnr_sid      number,           /* id of the persistent logminer session */
                                 /* needed for creating a persistent session */
  predumpscn      number,                                        /* OBSOLETE */
  dumpseqbeg      number,                                        /* OBSOLETE */
  dumpseqend      number,                                        /* OBSOLETE */
  postdumpscn     number,                                        /* OBSOLETE */
  flags           number,                    /* 0x01 = KNLCAPF_DICT_LOADED   */
                                             /* 0x02 = KNLCAPF_SESS_CDC      */
                                             /* 0x04 = KNLCAPF_SESS_IMPLICIT */
                                             /* 0x08 = KNLCAPF_SESS_EXPLICIT */
                                             /* 0x10 = KNLCAPF_NEED_DECOUPLE */
                                             /* 0x20 = KNLCAPF_DONE_DECOUPLE */
                                             /* 0x40 = KNLCAPF_DOWN_CAPTURE  */
                                             /* 0x80 = KNLCAPF_SESS_APPS     */
                                             /*0x100 = KNLCAPF_DONT_EXPORT   */
                                             /*0x200 = KNLCAPF_SYNC_CAPTURE  */
                                             /*0x400 = KNLCAPF_NO_APP_RESTRT */
                                             /*0x800 = KNLCAPF_SESS_AUDIT    */
                                            /*0x1000 = KNLCAPF_ALREADY_RAN   */
                                            /*0x2000 = KNLCAPF_CKPT_FREE     */
                                            /*0x4000 = KNLCAPF_CLONE         */
                                           /*0x20000 = KNLCAPF_SUSPENDED     */

  start_scn       number,     /* scn from which capture process should start */
  start_scn_time  timestamp,              /* Time coressponding to start_scn */
  capture_userid  number,                        /* capture security context */
  spare1          number,                           /* used for captured scn */
  spare2          number,                                     /* applied scn */
  spare3          number,                       /* checkpoint retention time */
  use_dblink      number,            /* use dblink from downstream to src db */
  first_scn       number, /* initially predump scn, eventually the earliest  */
                          /* scn from which capture process can restart from */
  first_scn_time  timestamp,              /* Time corresponding to first_scn */
  source_dbname   varchar2("M_XDBI"),            /* global name of source db */
  negative_ruleset_owner varchar2("M_IDEN"),      /* negative rule set owner */
  negative_ruleset_name  varchar2("M_IDEN"),       /* negative rule set name */
  start_date             date,                   /* captures from start date */
  end_date               date,                    /* captures up to end_date */
  error_number           number,             /* error number reported if any */
  error_message          varchar2("M_VCSZ"),         /* explanation of error */
  status_change_time     date,    /* the date that the status column changed */
  version                varchar2(64),             /* capture version number */
  spare4                 number,     /* for testing knlciWaitForInflightTxns */
  spare5                 number,                       /* Capture oldest scn */
  spare6                 number,                     /* Extract recovery scn */
  spare7                 varchar2(1000),                           /* unused */
  source_root_name       varchar2("M_XDBI")              /* source root name */
)
/
create unique index i_streams_capture_process1 on streams$_capture_process
 (capture#)
/
create unique index i_streams_capture_process2 on streams$_capture_process
 (capture_name)
/

create sequence streams$_capture_inst        /* capture instantiation number */
  increment by 1
  start with 1
  minvalue 1
  maxvalue 4294967295                           /* max portable value of UB4 */
  cycle
  nocache
/

create table streams$_apply_process
(
  apply#            number         not null, /* apply#0 is reserved for HaDB */
  apply_name        varchar2("M_IDEN") not null,       /* apply process name */
  queue_oid         raw(16)            not null,      /* AQ queue identifier */
  queue_owner       varchar2("M_IDEN") not null,           /* AQ queue owner */
  queue_name        varchar2("M_IDEN") not null,            /* AQ queue name */
  status            number,      /* apply process status: START, STOP, ABORT */
  flags             number,              /* apply process flags (see knal.h) */
                                   /* deferred (apply_captured=>TRUE) 0x0001 */
                                                       /* send events 0x0002 */
                                               /* no dependency check 0x0004 */
                                                    /* use c handlers 0x0008 */
                                                          /* CDC mode 0x0010 */
                                                  /* Audit vault mode 0x0020 */
                                     /* Assemble lobs for audit vault 0x0040 */
                                        /* don't export apply process 0x0080 */
                                                 /* XStream Out apply 0x0100 */
                                                  /* XStream In apply 0x0200 */
                                                  /* Uncommitted data 0x0400 */
                                                      /* Include MVDD 0x0800 */
  ruleset_owner     varchar2("M_IDEN"),                    /* rule set owner */
  ruleset_name      varchar2("M_IDEN"),                     /* rule set name */
  message_handler   varchar2(392),                         /* message handler */
  ddl_handler       varchar2(392),                             /* DDL handler */
  precommit_handler varchar2(392),                       /* precommit handler */
  apply_userid      number,                        /* apply security context */
  apply_dblink      varchar2("M_XDBI"),               /* apply database link */
  apply_tag         raw("M_CSIZ"),                              /* apply tag */
  spare1            number,
  spare2            number,
  spare3            number,
  negative_ruleset_owner varchar2("M_IDEN"),      /* negative rule set owner */
  negative_ruleset_name  varchar2("M_IDEN"),       /* negative rule set name */
  start_date             date,                      /* apply txn start limit */
  end_date               date,                        /* apply txn end limit */
  error_number           number,             /* error number reported if any */
  error_message          varchar2("M_VCSZ"),         /* explanation of error */
  status_change_time     date,    /* the date that the status column changed */
  ua_notification_handler varchar2(392),   /* user agent notification handler */
  ua_ruleset_owner        varchar2("M_IDEN"),    /* user agent ruleset owner */
  ua_ruleset_name         VARCHAR2("M_IDEN"),          /* user agent ruleset */
  spare4                  number,
  spare5                  number,
  spare6                  varchar2("M_VCSZ"),
  spare7                  varchar2("M_VCSZ"),
  spare8                  date,
  spare9                  date,
  source_root_name        varchar2("M_XDBI"),            /* source root name */
  lcrid_version           number default 1                  /* lcrid version */
)
/
create unique index i_streams_apply_process1 on
  streams$_apply_process (apply#)
/
create unique index i_streams_apply_process2 on
  streams$_apply_process (apply_name)
/
create index i_streams_apply_process3 on
  streams$_apply_process (queue_oid)
/

create table streams$_propagation_process
(
  propagation_name             varchar2("M_IDEN") not null,
  source_queue_schema          varchar2("M_IDEN"),
  source_queue                 varchar2("M_IDEN"),
  destination_queue_schema     varchar2("M_IDEN"),
  destination_queue            varchar2("M_IDEN"),
  destination_dblink           varchar2("M_XDBI"),
  ruleset_schema               varchar2("M_IDEN"),
  ruleset                      varchar2("M_IDEN"),
  negative_ruleset_schema      varchar2("M_IDEN"),/* negative rule set owner */
  negative_ruleset             varchar2("M_IDEN"), /* negative rule set name */
  original_propagation_name    varchar2("M_IDEN"),
  original_source_queue_schema varchar2("M_IDEN"),
  original_source_queue        varchar2("M_IDEN"),
  spare1                       number,  /* 0x01 = queue to queue propagation */
                                        /* 0x02 = auto_merge is TRUE         */
                                        /* 0x04 = last run in CCAC mode      */
  spare2                       varchar2("M_XDBI"),
  acked_scn                    number,
  auto_merge_threshold         number,
  creation_time                date DEFAULT SYSDATE,     /* time of creation */
  error_date                   date,          /* the time last error occured */
  error_msg                    varchar2("M_VCSZ"),     /* last error message */
                      /* error_date and error_msg are only populated in CCAC */
  unschedule_time              DATE   DEFAULT NULL, /* time when unscheduled */
  seqnum                       number,             /* unique sequence number */
  spare3                       number,
  spare4                       number,
  spare5                       date,
  spare6                       date,
  spare7                       varchar2("M_VCSZ"),
  spare8                       varchar2("M_VCSZ")
)
/
create unique index streams$_prop_p_i1 on streams$_propagation_process
(propagation_name)
/
create unique index streams$_prop_p_i2 on streams$_propagation_process
(source_queue_schema,source_queue, destination_queue_schema,
 destination_queue, destination_dblink)
/

rem squence for streams$_propagation_process.seqnum
create sequence streams$_propagation_seqnum
 start with     1
 increment by   1
 nocache
 nocycle
/

rem Table to store parameters for capture and apply processes.
create table streams$_process_params
(
  process_type       number not null,                /* 1 -> apply   process */
                                                     /* 2 -> capture process */
  process#           number not null,                         /* X_process # */
  name               varchar2("M_XDBI") not null,          /* parameter name */
  value              varchar2("M_VCSZ"),                  /* parameter value */
  user_changed_flag  number,            /* 1 if changed by user, 0 otherwise */
  internal_flag      number,    /* 1 if internal param, 0 if exposed to user */
  spare1             number,
  source_database    varchar2("M_XDBI")              /* source database name */
)
/
create unique index i_streams_process_params1 on
  streams$_process_params (process_type, process#, name, source_database)
/

rem Table to store extra attributes for capture
create table streams$_extra_attrs
(
  process#           number not null,                   /* capture_process # */
  name               varchar2("M_IDEN") not null,          /* attribute name */
  include            varchar2("M_IDEN"),       /* the attribute is included? */
  flag               number,   /* 0x01 = row_attribute, 0x02 = ddl_attribute */
  spare1             number,
  spare2             varchar2(1000)
)
/
create unique index i_streams_extra_attrs1 on
  streams$_extra_attrs (process#, name)
/

create table streams$_prepare_object
(
  obj#            number  not null,
  cap_type        number  default 0,  /* 0 = async capture, 1 = sync capture */
  ignore_scn      number  not null,
  timestamp       date,
  flags           number,       /* flags for supplemental logging: see knl.h */
  spare1          number,
  spare2          varchar2(1000)
)
/
create unique index i_streams_prepare1 on streams$_prepare_object 
  (obj#, cap_type)
/

rem streams$_prepare_ddl is for DDL support.
rem DDL looks up this table to see if a schema or database
rem is prepared for instantiation
create table streams$_prepare_ddl
(
  global_flag number not null,            /* 1 if usrid is null, 0 otherwise */
  usrid       number,             /* user id (NULL for database instantiate) */
  scn         number,                       /* ignore scn (currently unused) */
  timestamp   date,                   /* time at which schema was registered */
  flags       number,           /* flags for supplemental logging: see knl.h */
  spare1      number,
  spare2      varchar2(1000),
  allpdbs     number default 0,                 /* 0=current pdb, 1=all pdbs */
  c_invoker   varchar2("M_IDEN")            /* canon_invoker of prepare call */
)
/
create unique index i_streams_prepare_ddl on
  streams$_prepare_ddl(global_flag, usrid)
/

create table streams$_apply_milestone 
(
  apply#          number             not null,
  source_db_name  varchar2("M_XDBI"),
  oldest_scn      number             not null,
  commit_scn      number             not null,
  synch_scn       number             not null,           /* Synch-point SCN. */
  epoch           number             not null,         /* Incarnation number */
  processed_scn   number             not null,
                            /* all complete txns < processed_scn are applied */
  apply_time      date,
  applied_message_create_time date,
  spare1          number, /* primary scn corresponding to this syncpoint SCN */
  start_scn       number,
  oldest_transaction_id varchar2(128),              /* oldest transaction id */
  spill_lwm_scn       number,                     /* spill low watermark SCN */
  lwm_external_pos    raw(64),     
              /* low watermark external position, associated with commit_scn */
  spare2              number,
  spare3              varchar2("M_VCSZ"),
  oldest_position                raw(64),                 /* oldest position */
  spill_lwm_position             raw(64),    /* spill low watermark position */
  processed_position             raw(64),              /* processed position */
  start_position                 raw(64),                  /* start position */
  xout_processed_position        raw(64),  /* XStream Out processed position */
  xout_processed_create_time     date,  /* XStream Out processed create time */
  xout_processed_tid             varchar2(128),        /* XOut proc trans id */
  xout_processed_time            date,         /* XStream Out processed time */
  applied_high_position          raw(64),    /* applied high commit position */
  oldest_create_time             date,             /* oldest LCR create time */
  spill_lwm_create_time          date,    /* spill low watermark create time */
  spare4                         raw(64),   /* conservative restart position */
  spare5                         raw(64), /* logbsn from source DB (OGG only)*/
  spare6                         date,
  spare7                         date,
  spare8                         number,
  spare9                         number,
  spare10                        timestamp,
  spare11                        timestamp,
  flags                          number,           /* Added to hold PTO info */
                              /* Could hold other info as well in the future */
  eager_error_retry              number,/* number of retries for eager error */
  source_root_name               varchar2("M_XDBI"),     /* source root name */
  pto_recovery_scn               number,  /* local scn when PT was recovered */
  pto_recovery_incarnation       number      /* DB inc when PT was recovered */
)
/
create unique index i_streams_apply_milestone1 on streams$_apply_milestone
(apply#, source_db_name, source_root_name)
/

rem No constraints on this table it has to be really high performance 
rem since it is inserted on every txn
create table streams$_apply_progress
(
  apply#          number,
  source_db_name  varchar2("M_XDBI"),
  xidusn          number,
  xidslt          number,
  xidsqn          number,
  commit_scn      number,
  spare1          number,
                                                /*----- New 11.2 fields -----*/
  commit_position raw(64),                                /* commit position */
  transaction_id  varchar2(128)                           /* transaction id */
) segment creation immediate
tablespace SYSAUX
/

create table streams$_key_columns
(
  sname       varchar2("M_IDEN") not null,
  oname       varchar2("M_IDEN") not null,
  type        number             not null,
  cname       varchar2("M_IDEN") not null,
  dblink      varchar2("M_XDBI"),
  long_cname  varchar2("M_VCSZ"),
  spare1      number
)
/
create unique index i_streams_key_columns on 
  streams$_key_columns(sname, oname, type, cname, dblink)
/

rem table used for deferred prcedure calls
create table streams$_def_proc
(
  base_obj_num     number,
  flags            number,
  owner            varchar2("M_IDEN"),
  package_name     varchar2("M_IDEN"),
  procedure_name   varchar2("M_IDEN"),
  param_name       varchar2("M_IDEN"),
  param_type       number,
  raw_value        raw("M_CSIZ"),
  number_value     number,
  date_value       date,
  varchar2_value   varchar2("M_VCSZ"),
  nvarchar2_value  nvarchar2(1000),
  clob_value       clob,
  blob_value       blob,
  nclob_value      nclob
)
/

rem streams$_rules is populated by APIs in dbms_streams_adm
rem The values in columns streams_name and streams_type may not be valid
rem if the same rule was used by multiple Streams processes and the Streams
rem process, which the rule was created for, was dropped. In that scenario,
rem the values in streams_name and streams_type columns still refer to the
rem dropped Streams process. Internal users should refer to 
rem "_DBA_STREAMS_RULES_H" to get the valid streams_name and streams_type. 
rem
create table streams$_rules
(
  streams_name         varchar2("M_IDEN"),     /* capture/apply/prop process */
  streams_type         number,      /* capture (1), propagation(2), apply (3)*/
  rule_type            number,                           /* dml (1), ddl (2) */
  include_tagged_lcr   number,                                     /* 0 or 1 */
  source_database      varchar2("M_XDBI"),           /* source database name */
  rule_owner           varchar2("M_IDEN"),                     /* rule owner */
  rule_name            varchar2("M_IDEN"),     /* system generated rule name */
  rule_condition       varchar2("M_VCSZ"),  /* system generated rule context */
  dml_condition        varchar2("M_VCSZ"), /* NULL except for row subsetting */
  subsetting_operation number,    /* null, insert (1), update(2), delete (3) */
  schema_name          varchar2(384),       /* schema name, null for db type */
  object_name          varchar2(384),  
                                      /* table name, null for schema/db type */
  object_type          number,       /*  table(1), schema(2),  database (3)  */
  and_condition        varchar2("M_VCSZ"), /* and condition appended to rule */
  spare1               number,
  spare2               number,
  spare3               number,
  source_root_name     varchar2("M_XDBI")                /* source root name */
)
/
create unique index i_streams_rules1 on
  streams$_rules(rule_owner, rule_name)
/
create index  i_streams_rules2 on
  streams$_rules(schema_name, object_name)
/

rem subscriptions of source objects
create table apply$_source_obj
(
  id             number              not null,                 /* sequence # */
  owner          varchar2("M_IDEN")  not null,        /* source object owner */
  name           varchar2("M_IDEN")  not null,         /* source object name */
  type           number              not null,         /* source object type */
  source_db_name varchar2("M_XDBI")  not null,       /* source database name */
  dblink         varchar2("M_XDBI"),   /* database link for HS instantiation */
  inst_scn       number,                                /* instantiation scn */
  ignore_scn          number,/* scn used to determine LCR selection by apply */
  spare1              number,
  inst_external_pos   raw(64),    /* 128 (length of correlation ID) / 2 = 64 */
                                   /* external position, aka stream position */
  spare2              varchar2("M_VCSZ"),
  spare3              raw("M_CSIZ"),
  source_root_name    varchar2("M_XDBI")                 /* source root name */
)
/
create unique index i_apply_source_obj1 on
  apply$_source_obj (id)
/
create unique index i_apply_source_obj2 on apply$_source_obj 
  (owner, name, type, source_db_name, dblink, source_root_name)
/
rem sequence for apply$_source_obj.id
create sequence apply$_source_obj_id nocache
/

rem source schema instantiation scns
rem a NULL name means a global inst_scn
create table apply$_source_schema
(
  source_db_name varchar2("M_XDBI") not null,        /* source database name */
  /* 1024 if value for RMAN TRANSPORT TABLESPACE otherwise
   * 1 if name is null and 0 if name is non-null.
   */
  global_flag    number             not null,
  name           varchar2("M_IDEN"),                   /* source schema name */
  dblink         varchar2("M_XDBI"),   /* database link for HS instantiation */
  inst_scn       number,                                /* instantiation scn */
  spare1              number,
  inst_external_pos   raw(64),    /* 128 (length of correlation ID) / 2 = 64 */
                                   /* external position, aka stream position */
  spare2              varchar2("M_VCSZ"),
  spare3              raw("M_CSIZ"),
  source_root_name    varchar2("M_XDBI")                 /* source root name */
)
/
create unique index i_apply_source_schema1 on apply$_source_schema 
  (source_db_name, global_flag, name, dblink, source_root_name)
/

rem source object level (virtual) constraints
create table apply$_virtual_obj_cons
(
  owner          varchar2("M_IDEN")  not null,        /* source object owner */
  name           varchar2("M_IDEN")  not null,         /* source object name */
  powner         varchar2("M_IDEN")  not null,    /* source parent obj owner */
  pname          varchar2("M_IDEN")  not null,     /* source parent obj name */
  spare1         number,
  spare2         number,
  spare3         varchar2("M_IDEN"),
  spare4         varchar2("M_VCSZ")
)
/
create unique index i_apply_virtual_obj_cons on
  apply$_virtual_obj_cons (owner, name, powner, pname)
/

create table sys.apply$_constraint_columns
(
  owner                varchar2("M_IDEN") not null,          /* object owner */
  name                 varchar2("M_IDEN") not null,           /* object name */
  constraint_name      varchar2("M_IDEN") not null,
  cname                varchar2("M_IDEN") not null,           /* column name */
  cpos                 number,                            /* column position */
  long_cname           varchar2("M_VCSZ"),  /* long col name for adt support */
  spare1               number,
  spare2               number,
  spare3               varchar2("M_IDEN"),
  spare4               varchar2("M_VCSZ")
)
/

create unique index sys.apply$_constraint_columns_uix1 on
  sys.apply$_constraint_columns(owner, name, constraint_name, cname)
/
-- to facilitate the query: given a constraint name, find out
-- all related objects
create index sys.apply$_constraint_columns_idx1 on
  sys.apply$_constraint_columns(constraint_name)
/

rem This table allows multiple objects in the destination subscribed to the 
rem same source object.
create table apply$_dest_obj
(
  id              number             not null,                      /* seq # */
  source_owner    varchar2("M_IDEN") not null,           /* source obj owner */
  source_name     varchar2("M_IDEN") not null,            /* source obj name */
  type            number       not null,  /* type of source obj and dest obj */
  owner           varchar2("M_IDEN") not null,             /* dest obj owner */
  name            varchar2("M_IDEN") not null,              /* dest obj name */
  apply#          number,             /* apply process assigned to this dest */
  status          number,                   /* such as pending, ready, error */
  error_notifier  varchar2(92),             /* function to invoke for errors */
  spare1          number
)
/
create unique index i_apply_dest_obj1 on
  apply$_dest_obj (id)
/
rem source and apply# uniquely identify a destination
create unique index i_apply_dest_obj2 on
  apply$_dest_obj (source_owner, source_name, type, apply#)
/
rem destination and apply# uniquely identify a source
create unique index i_apply_dest_obj3 on
  apply$_dest_obj (owner, name, type, apply#)
/
rem sequence for apply$_dest_obj.id
create sequence apply$_dest_obj_id nocache
/

rem column mapping between source and destination tables
create table apply$_dest_obj_cmap
(
  dest_id          number             not null,       /* id of parent row in */
                                                          /* apply$_dest_obj */
  src_long_cname   varchar2("M_VCSZ") not null,        /* source column name */
  dest_long_cname  varchar2("M_VCSZ"),            /* destination column name */
                                          /* if null, same as src_long_cname */
  spare1           number
)
/
rem we need to add src_long_cname to this index but it is > max key len
create index i_apply_dest_obj_cmap1 on 
  apply$_dest_obj_cmap (dest_id)
/

rem apply operations associated with destination object
create table apply$_dest_obj_ops
(
  object_number        number not null,               /* id of parent row in */
                                    /* obj$, -1 if not exists                */
  sname                varchar2("M_IDEN") not null,
  oname                varchar2("M_IDEN") not null,
  apply_name           varchar2("M_IDEN"),
  apply_operation      number not null,              /* apply operation type */
                                                     /* 1 -> INSERT          */
                                                     /* 2 -> UPDATE          */
                                                     /* 3 -> DELETE          */
                                                     /* 4 -> LOB_UPDATE      */
                                                     /* 5 -> ASSEMBLE_LOBS   */
  error_handler        char(1),                      /* 'Y' if error handler */
                                                     /* 'N' if not           */
  user_apply_procedure varchar2(392), /* if user_apply_procedure is null,    */
                                      /* default apply rules will be used    */
                                      /* or if there is no child row in      */
                                      /* apply$_dest_obj_ops                 */
                                      /* for apply$_dest_obj.id              */
                                      /* max length = 392                    */
                                      /* 128(schema)+128(package)+128(name)  */
                                      /* +2(periods)+6(double quotes)        */
  handler_name         varchar2("M_IDEN") default null, /*stmt-based handler */
  assemble_lobs        char(1) default 'N',          /* 'Y' if assemble lobs */
                                                     /* 'N' if not           */
  set_by               number default NULL,          /* set by user or by GG */
                                                     /* NULL -> USER         */
                                                     /* 1    -> GOLDENGATE   */
  spare1               number,
  spare2               number,
  spare3               number
)
/
create unique index i_apply_dest_obj_ops1 on apply$_dest_obj_ops
 (sname, oname, apply_operation, apply_name, handler_name)
/

rem generate unique id for streams stmt handlers
create sequence streams$_stmt_handler_seq start with 1 increment by 1
/

create table streams$_stmt_handlers
(
  handler_id          number not null,                         /* handler id */
  handler_name        varchar2("M_IDEN") not null,           /* handler name */
  handler_comment     varchar2("M_VCSZ") default null,    /* handler comment */
  handler_flag        raw(4) default '00000000',             /* handler flag */
                                     /* '00000001' auto-created on statement */
  creation_time       timestamp,      /* time when the statement was created */
  modification_time   timestamp,     /* time when the statement was modified */
  spare1              number,
  spare2              number,
  spare3              varchar2("M_VCSZ"),
  spare4              timestamp,
  spare5              raw(2000)
)
/
create unique index i_streams_stmt_handlers on streams$_stmt_handlers
 (handler_name)
/
create unique index i_streams_stmt_handler_ids on streams$_stmt_handlers
 (handler_id)
/

rem streams handler stmts
create table streams$_stmt_handler_stmts
(
  handler_id          number not null,                       /* handler name */
  statement           clob,                                     /* statement */
  statement_type      number not null,                  /* type of statement */
  execution_sequence  number not null,    /* execution sequence of statement */
  creation_time       timestamp,      /* time when the statement was created */
  modification_time   timestamp,     /* time when the statement was modified */
  spare1              number,
  spare2              number,
  spare3              varchar2("M_VCSZ"),
  spare4              varchar2("M_VCSZ"),
  spare5              timestamp,
  spare6              raw(2000)
)
/
create unique index i_streams_stmt_handler_stmts on streams$_stmt_handler_stmts
 (handler_id, execution_sequence)
/

rem apply change handler
create table apply$_change_handlers (
  change_table_owner  varchar2("M_IDEN"),
  change_table_name   varchar2("M_IDEN"),
  source_table_owner  varchar2("M_IDEN"),
  source_table_name   varchar2("M_IDEN"),
  handler_name        varchar2("M_IDEN"),
  capture_values      number,
  apply_name          varchar2("M_IDEN"),
  operation           number,
  creation_time       timestamp,
  modification_time   timestamp,
  spare1              number,
  spare2              number,
  spare3              varchar2("M_VCSZ"),
  spare4              varchar2("M_VCSZ"),
  spare5              timestamp,
  spare6              timestamp,
  spare7              raw(2000)
)
/
create unique index i_apply_change_handlers on apply$_change_handlers
 (change_table_owner, change_table_name, source_table_owner,
  source_table_name, handler_name, apply_name, operation)
/

rem table used to store error transaction information
create table apply$_error
( 
  local_transaction_id  varchar2("M_LTID"),     /* Tid of error creation txn */
  source_transaction_id varchar2(128),       /* transaction id at the source */
  source_database       varchar2("M_XDBI"),/* node which originated this txn */
  queue_owner           varchar2("M_IDEN") not null,    /* local queue owner */
  queue_name            varchar2("M_IDEN") not null,     /* local queue name */
  apply#                number  not null, /* apply engine processing the txn */
  message_number        number,            /* message which caused the error */
  message_count         number,             /* Number of messages in the txn */
  min_step_no           number,            /* min step no in exception queue */
  recipient_id          number,          /* User ID of the original receiver */
  recipient_name        varchar2("M_IDEN"),  
                                       /* User name of the original receiver */
  source_commit_scn     number,           /* original commit SCN for the txn */
  error_number          number,                     /* error number reported */
  error_message         varchar2("M_VCSZ"),          /* explanation of error */
  aq_transaction_id     varchar2("M_IDEN"),             /* AQ transaction id */
  spare1                number,
  spare2                number,
  spare3                number,
  error_creation_time   date,                    /* time this error occurred */
  external_source_pos   raw(64),                 /* external source position */
  spare4                raw("M_CSIZ"),
  spare5                varchar2("M_VCSZ"),
                                                /*----- New 11.2 fields -----*/
  commit_time           number,      /* time when txn commited on the source */
  xidusn                number,    
  xidslt                number,
  xidsqn                number,
  retry_count           number,         /* number of times to retry an error */
  flags                 number,                                     /* flags */
  error_pos             raw(64),                           /* error position */
                                      /* 12.1 fields for integrated replicat */
  start_seq#            number,          /* start seq# of the replicat trail */
  end_seq#              number,            /* end seq# of the replicat trail */
  start_rba             number,           /* start rba of the replicat trail */
  end_rba               number,             /* end rba of the replicat trail */
  error_seq#            number,   /* seq# of replicat trail for error record */
  error_rba             number,    /* rba of replicat trail for error record */
  error_index#          number,   /* replicat mapping index for error record */
  spare6                number,
  spare7                number,
  spare8                varchar2("M_VCSZ"),
  spare9                varchar2("M_VCSZ"),
  spare10               raw(1000),
  spare11               raw(1000),
  spare12               timestamp
)
tablespace SYSAUX
/
create unique index streams$_apply_error_unq 
 on apply$_error(local_transaction_id)
 tablespace SYSAUX
/

rem tables required for conflict resolution
rem apply$_error_handler_sequence is used to generate a value 
rem for log_group_id in apply$_error_handler.

create sequence apply$_error_handler_sequence start with 1
/

rem stores all conflict resolution methods
create table apply$_error_handler
(
  object_number          number,  /* table obj# error handler is defined for */
  method_name            varchar2(92),                     /* name of method */
  resolution_column      varchar2("M_VCSZ"), /* column used to resolve error */
  resolution_id          number,          /* id number for the error handler */
  spare1                 number
)
/
create unique index apply$_error_handler_unq
 on apply$_error_handler(resolution_id)
/

rem stores the column list for update column resolution
create table apply$_conf_hdlr_columns
(
  object_number number,           /* table obj# error handler is defined for */
  resolution_id number,                   /* id number for the error handler */
  column_name   varchar2("M_IDEN"),   /* name of a column in the column list */
                                                /* for a update conf handler */
  spare1        number
)
/
create unique index apply$_conf_hdlr_columns_unq1
 on apply$_conf_hdlr_columns(object_number, column_name)
/
create unique index apply$_conf_hdlr_columns_unq2
 on apply$_conf_hdlr_columns(resolution_id, column_name)
/

rem XStream In persistent apply table stats
create table apply$_table_stats 
(
apply#                     number,                   /* apply process number */
server_id                  number,                /* apply server identifier */
save_time                  date,                /* when stats were persisted */
source_table_owner         varchar2("M_IDEN"),         /* source table owner */
source_table_name          varchar2("M_IDEN"),          /* source table name */
destination_table_owner    varchar2("M_IDEN"),    /* destination table owner */
destination_table_name     varchar2("M_IDEN"),     /* destination table name */
last_update                date,    /*last time stats for table were updated */
total_inserts              number,  /* total number of inserts for the table */
total_updates              number,  /* total number of updates for the table */
total_deletes              number,  /* total number of deletes for the table */
insert_collisions          number,    /* num insert collisions for the table */
update_collisions          number,    /* num update collisions for the table */
delete_collisions          number,   /* num delete collisionss for the table */
reperror_records           number,  /* num colls resolved by reperror record */
reperror_ignores           number,  /* num colls resolved by reperror ignore */
wait_dependencies          number,            /* number of wait dependencies */
cdr_insert_row_exists      number,  /* number of insert row exists conflicts */
cdr_update_row_exists      number,  /* number of update row exists conflicts */
cdr_update_row_missing     number, /* number of update row missing conflicts */
cdr_delete_row_exists      number,  /* number of delete row exists conflicts */
cdr_delete_row_missing     number, /* number of delete row missing conflicts */
cdr_successful_resolutions number,   /* number of successful CDR resolutions */
cdr_failed_resolutions     number,       /* number of failed CDR resolutions */
spare1                     number,
spare2                     number,
spare3                     number,
spare4                     number,
spare5                     number,
spare6                     number,
spare7                     number,
spare8                     number,
spare9                     number,
spare10                    number,
spare11                    varchar2("M_VCSZ"),
spare12                    varchar2("M_VCSZ"),
spare13                    varchar2("M_VCSZ"),
spare14                    varchar2("M_VCSZ"),
spare15                    raw(1000),
spare16                    raw(1000),
spare17                    raw(1000),
spare18                    date,                             /* startup time */
spare19                    date,
spare20                    date,
lob_operations             number                /* piecewise lob operatiosn */
)
/
create index apply$_table_stats_i
  on apply$_table_stats (apply#, save_time)
/

rem persistent apply procedure stats
create table apply$_procedure_stats 
(
apply#                 number,                    /* apply process number */
server_id              number,                 /* apply server identifier */
save_time              date,                 /* when stats were persisted */
startup_time           date,
procedure_owner        varchar2("M_IDEN"),         
package_name           varchar2("M_IDEN"),          
procedure_name         varchar2("M_IDEN"),     
last_update            date,    /* last time stats for table were updated */
total_executions       number, /* total number of executions for the proc */
spare1                 number,
spare2                 number,
spare3                 number,
spare4                 number,
spare5                 varchar2("M_VCSZ"),
spare6                 varchar2("M_VCSZ"),
spare7                 date,
spare8                 date
)
/
create index apply$_procedure_stats_i
  on apply$_procedure_stats (apply#, save_time)
/


rem XStream In persistent apply coodinator table 
create table apply$_coordinator_stats
(
apply#                     number,                   /* apply process number */
save_time                  date,                /* when stats were persisted */
apply_name                 varchar2("M_IDEN"),         /* apply process name */
state                      number,                      /* coordinator state */
total_applied              number,                           /* txns applied */
total_waitdeps             number,             /* WAIT_DEP messages received */
total_waitcommits          number,          /* WAIT_COMMIT messages received */
total_admin                number,                  /* admin requests issued */
total_assigned             number,                          /* txns assigned */
total_received             number,                           /* txn received */
total_ignored              number,                 /* number of txns ignored */
total_rollbacks            number,            /* number of rollback attempts */
total_errors               number,  /* number of txns which errored on apply */
unassigned_eager           number,        /* number of unassigned eager txns */
unassigned_complete        number,     /* number of unassigned complete txns */
auto_txnbufsize            number,      /* Auto adjusted value of txnbufsize */
startup_time               date,           /* SYSDATE when the apply started */
lwm_time                   date,                     /* time lwm was updated */
lwm_msg_num                number,                       /* lwm number (SCN) */
lwm_msg_time               date,             /* creation time of lwm message */
hwm_time                   date,                     /* time hwm was updated */
hwm_msg_num                number,                       /* hwm number (SCN) */
hwm_msg_time               date,             /* creation time of hwm message */
elapsed_schedule_time      number,       /* time elapsed scheduling messages */
elapsed_idle_time          number,                /* time elapsed being idle */
lwm_position               raw(64),         /* low watermark commit position */
hwm_position               raw(64),        /* high watermark commit position */
processed_msg_num          number,             /* processed msg number (SCN) */
flag                       number,                       /* coordinator flag */
flags_factoring            number,                           /* factor flags */
replname                   varchar2("M_IDEN"),   /* name of replicat process */
spare1                     number,
spare2                     number,
spare3                     number,
spare4                     number,
spare5                     number,
spare6                     number,
spare7                     number,
spare8                     number,
spare9                     number,
spare10                    number,
spare11                    varchar2("M_VCSZ"),
spare12                    varchar2("M_VCSZ"),
spare13                    varchar2("M_VCSZ"),
spare14                    varchar2("M_VCSZ"),
spare15                    raw(1000),
spare16                    raw(1000),
spare17                    raw(1000),
spare18                    date,
spare19                    date,
spare20                    date
);
create index apply$_coordinator_stats_i
  on apply$_coordinator_stats (apply#, save_time)
/


rem XStream In persistent apply server table 
create table apply$_server_stats
(
apply#                     number,                   /* apply process number */
server_id                  number,                /* apply server identifier */
save_time                  date,                /* when stats were persisted */
apply_name                 varchar2("M_IDEN"),         /* apply process name */
state                      number,              /* state of the apply server */
startup_time               date,           /* SYSDATE when the apply started */
xid_usn                    number,   /* xid usn of transaction being applied */
xid_slt                    number,   /* xid slt of transaction being applied */
xid_sqn                    number,   /* xid sqn of transaction being applied */
cscn                       number,      /* commit scn of current transaction */
depxid_usn                 number,       /* xid usn of txn server depends on */
depxid_slt                 number,       /* xid slt of txn server depends on */
depxid_sqn                 number,       /* xid sqn of txn server depends on */
depcscn                    number,    /* commit scn of txn server depends on */
msg_num                    number,          /* current message being applied */
total_assigned             number,          /* total txns assigned to server */
total_admin                number,   /* total admin tasks assigned to server */
total_rollbacks            number,       /* total number of txns rolled back */
total_msg                  number,       /* total number of messages applied */
last_apply_time            date,            /* time last message was applied */
last_apply_msg_num         number,         /* number of last message applied */
last_apply_msg_time        date,    /* creation time of last applied message */
elapsed_apply_time         number,         /* time elapsed applying messages */
commit_position            raw(64),    /* commit position of the transaction */
dep_commit_position        raw(64),   /* commit pos of txn server depends on */
last_apply_pos             raw(64),      /* position of last message applied */
flag                       number,                                  /* flags */
nosxid                     varchar2(128),   /* txn id that slave is applying */
depnosxid                  varchar2(128),        /* txn id slave depends on  */
max_inst_scn               number,              /* maximum instantiation SCN */
total_waitdeps             number,      /* total number of wait dependencies */
total_lcrs_retried         number,           /* total number of lcrs retried */
total_txns_retried         number,           /* total number of txns retried */
txn_retry_iter             number,            /* current txn retry iteration */
lcr_retry_iter             number,            /* current lcr retry iteration */
total_txns_discarded       number,    /* txns handled by reperror RECORD_TXN */
flags_factoring            number,                        /* factoring flags */
spare1                     number,
spare2                     number,
spare3                     number,
spare4                     number,
spare5                     number,
spare6                     number,
spare7                     number,
spare8                     number,
spare9                     number,
spare10                    number,
spare11                    varchar2("M_VCSZ"),
spare12                    varchar2("M_VCSZ"),
spare13                    varchar2("M_VCSZ"),
spare14                    varchar2("M_VCSZ"),
spare15                    raw(1000),
spare16                    raw(1000),
spare17                    raw(1000),
spare18                    date,
spare19                    date,
spare20                    date
);
create index apply$_server_stats_i
  on apply$_server_stats (apply#, server_id, save_time)
/

rem XStream In persistent apply reader table 
create table apply$_reader_stats
(
apply#                     number,                   /* apply process number */
save_time                  date,                /* when stats were persisted */
apply_name                 varchar2("M_IDEN"),         /* apply process name */
state                      number,              /* state of the apply reader */
startup_time               date,           /* SYSDATE when the apply started */
msg_num                    number,          /* current message being applied */
total_msg                  number,       /* total number of messages applied */
total_spill_msg            number,   /* the total number of messages spilled */
last_rcv_time              date,           /* time last message was received */
last_rcv_msg_num           number,        /* number of last message received */
last_rcv_msg_time          date,           /* creation time of last received */
sga_used                   number,                        /* SGA memory used */
elapsed_dequeue_time       number,        /* time elapsed dequeuing messages */
elapsed_schedule_time      number,       /* time elapsed scheduling messages */
elapsed_spill_time         number,         /* time elapsed spilling messages */
last_browse_num            number,                        /* last browse SCN */
oldest_scn_num             number,                             /* oldest SCN */
last_browse_seq            number,            /* last browse sequence number */
last_deq_seq               number,           /* last dequeue sequence number */
oldest_xid_usn             number,                         /* oldest xid usn */
oldest_xid_slt             number,                         /* oldest xid slt */
oldest_xid_sqn             number,                         /* oldest xid sqn */
spill_lwm_scn              number,                /* spill low watermark SCN */
commit_position            raw(64),    /* commit position of the transaction */
last_rcv_pos               raw(64),             /* position of last received */
last_browse_pos            raw(64),                  /* last browse position */
oldest_pos                 raw(64),                       /* oldest position */
spill_lwm_pos              raw(64),          /* spill low watermark position */
flag                       number,                                  /* flags */
oldest_xidtxt              varchar2(128),           /* oldest transaction id */
num_deps                   number,                 /* number of dependencies */
num_dep_lcrs               number,            /* number of lcrs with txn dep */
num_wmdeps                 number             ,/* number of lcrs with WM dep */
num_in_memory_lcrs         number,           /* number of knallcrs in memory */
sga_allocated              number,  /* total sga allocated from streams pool */
total_lcrs_retried         number,           /* total number of lcrs retried */
total_txns_retried         number,           /* total number of txns retried */
txn_retry_iter             number,            /* current txn retry iteration */
lcr_retry_iter             number,            /* current lcr retry iteration */
total_txns_discarded       number,    /* txns handled by reperror RECORD_TXN */
flags_factoring            number,                        /* factoring flags */
spare1                     number,
spare2                     number,
spare3                     number,
spare4                     number,
spare5                     number,
spare6                     number,
spare7                     number,
spare8                     number,
spare9                     number,
spare10                    number,
spare11                    varchar2("M_VCSZ"),
spare12                    varchar2("M_VCSZ"),
spare13                    varchar2("M_VCSZ"),
spare14                    varchar2("M_VCSZ"),
spare15                    raw(1000),
spare16                    raw(1000),
spare17                    raw(1000),
spare18                    date,
spare19                    date,
spare20                    date
);
create index apply$_reader_stats_i
  on apply$_reader_stats (apply#, save_time)
/

rem stores persistent batch sql statistics for the apply servers
create table apply$_batch_sql_stats
(
apply#                     number,                   /* apply process number */
save_time                  date,                /* when stats were persisted */
server_id                  number,                /* apply server identifier */
batch_opeations            number,
batches                    number,
batches_executed           number,
queues                     number,
batches_in_error           number,
normal_mode_ops            number,
immediate_flush_ops        number,
pk_collisions              number,
uk_collisions              number,
fk_collisions              number,
thread_batch_groups        number,
num_commits                number,
num_rollbacks              number,
queue_flush_calls          number,
ops_per_batch              number,
ops_per_batch_executed     number,
ops_per_queue              number,
parallel_batch_rate        number,
spare1                     number,
spare2                     number,
spare3                     number,
spare4                     number,
spare5                     number,
spare6                     number,
spare7                     number,
spare8                     number,
spare9                     number,
spare10                    number,
spare11                    number,
spare12                    number,
spare13                    number,
spare14                    number,
spare15                    number,
spare16                    varchar2(4000),
spare17                    varchar2(4000),
spare18                    varchar2(4000),
spare19                    varchar2(4000),
spare20                    raw(1000),
spare21                    raw(1000),
spare22                    raw(1000),
spare23                    date,
spare24                    date,
spare25                    date
);
create index apply$_batch_sql_stats_i
  on apply$_batch_sql_stats (apply#, server_id, save_time)
/

rem stores the CDR resolution information for populating IR exception tables
create table apply$_cdr_info
(
  local_transaction_id  varchar2("M_LTID"),/*local id of txn that errors out */
  source_transaction_id varchar2(128),       /* transaction id at the source */
  source_database       varchar2("M_XDBI"),  /* db which originated this txn */   
  error_number          number,                     /* error number reported */
  error_message         varchar2("M_VCSZ"),          /* explanation of error */
  source_object_owner   varchar2("M_IDEN"),  /* source database object owner */
  source_object_name    varchar2("M_IDEN"),   /* source database object name */
  dest_object_owner     varchar2("M_IDEN"),    /* dest database object owner */
  dest_object_name      varchar2("M_IDEN"),     /* dest database object name */
  operation             number,                             /* LCR operation */
  position              raw(64),                             /* LCR position */
  seq#                  number,                /* seq# of the replicat trail */
  rba                   number,                 /* rba of the replicat trail */
  index#                number,            /* index # of the replicat record */
  resolution_status     number,                    /* 1. SUCCEEDED 2. FAILED */
  resolution_column     varchar2("M_VCSZ"),    /* column used for resolution */
  resolution_method     number,        /* resolution method
                                        * 1 IGNORE,     2 RECORD,  3 DELTA,
                                        * 4 MOVERWRITE, 5 MAXIMUM, 6 MINIMUM */
  resolution_time       timestamp,           /* time when resolution happens */
  table_successful_cdr  number, /* # of successful resolutions for the table */
  table_failed_cdr      number,     /* # of failed resolutions for the table */
  all_successful_cdr    number, /* # of successful resolutions for the table */
  all_failed_cdr        number,     /* # of failed resolutions for the table */
  flags                 number,                                     /* flags */
  spare1                number,
  spare2                varchar2("M_VCSZ"),
  spare3                timestamp
)
tablespace SYSAUX
/
create unique index apply$_cdr_info_unq1
 on apply$_cdr_info(local_transaction_id,seq#,rba,index#)
tablespace SYSAUX
/ 


rem stores column group information for automatic CDR
create table apply$_auto_cdr_column_groups
(
  obj#                  number not null,                   /* obj# for table */
  column_group_name     varchar2("M_IDEN") not null,    /* column group name */
  column_group_id       number not null,                  /* column group id */
  flags                 number,                                     /* flags */
  spare1                number,
  spare2                number,
  spare3                number,
  spare4                timestamp,
  spare5                varchar2("M_VCSZ"),
  spare6                varchar2("M_VCSZ"),
  spare7                varchar2("M_VCSZ"),
  spare8                date
)
/
create unique index apply$_auto_cdr_cg_unq1
 on apply$_auto_cdr_column_groups(obj#, column_group_name)
/
create unique index apply$_auto_cdr_cg_unq2
 on apply$_auto_cdr_column_groups(obj#, column_group_id)
/ 

rem stores object level information for destination objects
create table streams$_dest_objs
(
  object_number  number,                           /* destination table obj# */
  property       number,                        /* table property - bit flag */
                                       /* 0x01 -> do not compare for deletes */
                                       /* 0x02 -> do not compare for updates */
  dblink         varchar2("M_XDBI"),   /* database link for HS instantiation */
  spare1         number,
  spare2         number,
  spare3         varchar2(1000),
  spare4         varchar2(1000)
)
/

create unique index streams$_dest_objs_i
  on streams$_dest_objs(object_number, dblink)
/

rem stores the columns for which to turn conflict detection off
create table streams$_dest_obj_cols
(
  object_number number,                            /* destination table obj# */
  column_name   varchar2("M_IDEN"),       /* name of the column for which to */
                                              /* turn conflict detection off */
  flag          number,                        /* column property - bit flag */
                                       /* 0x01 -> do not compare for deletes */
                                       /* 0x02 -> do not compare for updates */
  dblink        varchar2("M_XDBI"),    /* database link for HS instantiation */
  spare1        number,
  spare2        varchar2(1000)
)
/

create unique index streams$_dest_obj_cols_i
  on streams$_dest_obj_cols(object_number, column_name, dblink)
/

rem keeps track of the streams privileges granted to a user
create table streams$_privileged_user
(
  user# number not null,     /* user number, this mapping is for user$.user# */
  privs number not null,            /* the privileges granted (bit vector) : */
                                    /*   0x1 is streams administrator        */
  flags number,                                /* 0x01 for XStream admin usr */
  spare1 number,
  spare2 number,
  spare3 varchar2(1000),
  spare4 varchar2(1000)
)
/
create unique index i_streams_privileged_user1
 on streams$_privileged_user(user#)
/

rem populated by dbms_streams_adm.add_message_rule
rem The values in columns streams_name and streams_type may not be valid
rem if the same rule was used by multiple Streams processes and the Streams
rem process, which the rule was created for, was dropped. In that scenario,
rem the values in streams_name and streams_type columns still refer to the
rem dropped Streams process. Internal users should refer to 
rem "_DBA_STREAMS_RULES_H" to get the valid streams_name and streams_type. 
rem
create table streams$_message_rules
(
  streams_name    varchar2("M_IDEN") not null,      /* name of apply/dequeue */
  streams_type    number not null, /* propagation(2), apply (3), dequeue (4) */
  msg_type_owner  varchar2("M_IDEN"),                  /* message type owner */
  msg_type_name   varchar2("M_IDEN"),                   /* message type name */
  msg_rule_var    varchar2("M_IDEN"),               /* message rule variable */
  rule_owner      varchar2("M_IDEN") not null,                 /* rule owner */
  rule_name       varchar2("M_IDEN") not null,                  /* rule name */
  rule_condition  varchar2("M_VCSZ"),          /* text of the rule condition */
  spare1          number,
  spare2          number,
  spare3          number,
  spare4          varchar2("M_IDEN"),
  spare5          varchar2("M_XDBI")
)
/
create unique index i_streams_message_rules
 on streams$_message_rules(streams_name, streams_type, rule_owner, rule_name)
/

rem consumers of user-enqueued messages
create table streams$_message_consumers
(
  streams_name    varchar2("M_IDEN") not null,            /* name of dequeue */
  queue_oid       raw(16)            not null,        /* AQ queue identifier */
  queue_owner     varchar2("M_IDEN") not null,                /* queue owner */
  queue_name      varchar2("M_IDEN") not null,                 /* queue name */
  rset_owner      varchar2("M_IDEN"),                      /* rule set owner */
  rset_name       varchar2("M_IDEN"),                       /* rule set name */
  neg_rset_owner  varchar2("M_IDEN"),             /* negative rule set owner */
  neg_rset_name   varchar2("M_IDEN"),              /* negative rule set name */
  spare1          number,
  spare2          number,
  spare3          number,
  spare4          varchar2("M_IDEN"),
  spare5          varchar2("M_XDBI")
)
/
create unique index i_streams_message_consumers
 on streams$_message_consumers(streams_name)
/

rem apply spilling transaction information
create table streams$_apply_spill_txn
(
  applyname                 varchar2("M_IDEN") NOT NULL,/* name of the apply */
  xidusn                    number NOT NULL,    /* source transaction ID usn */
  xidslt                    number NOT NULL,    /* source transaction ID slt */
  xidsqn                    number NOT NULL,    /* source transaction ID sqn */
  first_scn                 number NOT NULL,         /* first SCN in the txn */
  last_scn                  number,                   /* last SCN in the txn */
  last_scn_seq              number,              /* last sequence in the txn */
  last_cap_instno           number,          /* capture instantiation number */
  commit_scn                number,                /* commit SCN for the txn */
  spillcount                number,        /* the number of messages spilled */
  err_num                   number,                          /* raised error */
  err_idx                   number,       /* index of lcr which raised error */
  sender                    varchar2("M_IDEN"), /* user who enqueued the txn */
  flags                     number,                       /* txn level flags */
  priv_state                number,                             /* txn state */
  distrib_cscn              number,                /* distributed commit SCN */
  src_commit_time           number,  /* time when txn commited on the source */
  dep_flag                  number,                      /* dependency state */
  spill_flags               number,                  /* spill specific flags */
  first_message_create_time date,          /* time first message was created */
  spill_creation_time       date DEFAULT SYSDATE,  /* time of spill creation */
  txnkey                    number,       /* the id key for this transaction */
  spare1                    number,
  spare2                    number,
  spare3                    number,
  spare4                    number,
  spare5                    varchar2("M_VCSZ"),
  spare6                    varchar2("M_VCSZ"),
  spare7                    varchar2("M_VCSZ"),
                                                /*----- New 11.2 fields -----*/
  first_position            raw(64),            /* first position in the txn */
  last_position             raw(64),             /* last position in the txn */
  commit_position           raw(64),          /* commit position for the txn */
  last_message_create_time  date,   /* time last spilled message was created */
  transaction_id            varchar2(128),                 /* transaction id */
  parent_transaction_id     varchar2(128),     /* PDML parent transaction id */
  spare8                    date,
  spare9                    raw(100),
  pdb_id                    number DEFAULT 0
)
tablespace SYSAUX
/
create unique index i_streams_apply_spill_txn
 on streams$_apply_spill_txn(applyname, xidusn, xidslt, xidsqn, pdb_id)
tablespace SYSAUX
/

rem apply spill tracking table
create table streams$_apply_spill_txn_list
(
  txnkey                    number,/* the id key in streams$_apply_spill_txn */
  status                    varchar2(1),
  spare1                    number,
  spare2                    number,
  spare3                    varchar2("M_VCSZ"),
  spare4                    varchar2("M_VCSZ")
)
tablespace SYSAUX
/

rem create a sequence for split-merge api
rem this sequence is used by auto_merge_streams to generate 
rem schedule name, job name
create sequence streams$_sm_id
 start with     1
 increment by   1
 nocache
 nocycle
/


rem
rem File Group Repository tables
rem

rem file groups
create table fgr$_file_groups
(
  file_group_id     number             not null,      /* obj# for file group */
  keep_files        varchar2(1)        not null,        /* keep files setting*/
  min_versions      number             not null,       /* min number to keep */
  max_versions      number             not null,       /* max number to keep */
  retention_days    number             not null,         /* max days to keep */
  creator           varchar2("M_IDEN") not null,       /* file group creator */
  creation_time     timestamp with time zone not null,      /* creation time */
  sequence_name     varchar2("M_IDEN") not null,  /* sequence for version id */
  audit$            varchar2("S_OPFL") not null,         /* auditing options */
  user_comment      varchar2("M_VCSZ"),                      /* user comment */
  default_dir_obj   varchar2("M_IDEN"),          /* default directory object */
  spare1            number,
  spare2            number,
  spare3            varchar2("M_IDEN"),
  spare4            varchar2("M_XDBI")
)
/

create unique index i_fgr$_file_groups1
 on fgr$_file_groups(file_group_id)
/

rem file group versions
create table fgr$_file_group_versions
(
  version_id        number             not null,      /* internal version id */
  file_group_id     number             not null,     /* version's file group */
  creator           varchar2("M_IDEN") not null,        /* version's creator */
  creation_time     timestamp with time zone not null,      /* creation time */
  version_guid      raw(16)            not null,           /* version's GUID */
  version_name      varchar2("M_IDEN") not null,          /* name of version */
  user_comment      varchar2("M_VCSZ"),                      /* user comment */
  default_dir_obj   varchar2("M_IDEN"),          /* default directory object */
  spare1            number,
  spare2            number,
  spare3            varchar2("M_IDEN"),
  spare4            varchar2("M_XDBI")
)
/
create unique index i_fgr$_file_group_versions1
 on fgr$_file_group_versions(version_name, file_group_id)
/
create unique index i_fgr$_file_group_versions2
 on fgr$_file_group_versions(file_group_id, version_id)
/
create unique index i_fgr$_file_group_versions3
 on fgr$_file_group_versions(version_guid)
/

rem file group versions export info
create table fgr$_file_group_export_info
(
  version_guid      raw(16)            not null,           /* version's GUID */
  export_version    varchar2("M_IDEN") not null,     /* export compatibility */
  export_platform   varchar2(101)      not null,          /* export platform */
  export_time       date               not null,              /* export time */
  export_scn        number,                                    /* export scn */
  source_db_name    varchar2("M_XDBI"),         /* global name of the source */
  spare1            number,
  spare2            number,
  spare3            varchar2("M_IDEN"),
  spare4            varchar2("M_XDBI")
)
/
create unique index i_fgr$_file_group_export_info1
 on fgr$_file_group_export_info(version_guid)
/

rem file group files
create table fgr$_file_group_files
(
  file_name         varchar2(512)      not null,                /* file name */
  creator           varchar2("M_IDEN") not null,             /* file creator */
  /* file's creation time */
  creation_time     timestamp with time zone not null,
  file_dir_obj      varchar2("M_IDEN") not null,/* directory object for file */
  version_guid      raw(16)            not null,           /* version's GUID */
  file_size         number,                                     /* file size */
  file_blocksize    number,                               /* file block size */
  file_type         varchar2(130),                              /* file type */
  user_comment      varchar2("M_VCSZ"),                      /* user comment */
  spare1            number,
  spare2            number,
  spare3            varchar2("M_IDEN"),
  spare4            varchar2("M_XDBI")
)
/
create unique index i_fgr$_file_group_files1
 on fgr$_file_group_files(file_name, version_guid)
/
create index i_fgr$_file_group_files2
 on fgr$_file_group_files(version_guid)
/

create table fgr$_tablespace_info
(
  version_guid      raw(16)            not null,           /* version's GUID */
  tablespace_name   varchar2("M_IDEN_30") not null,       /* tablespace name */
  spare1            number,
  spare2            number,
  spare3            varchar2("M_IDEN"),
  spare4            varchar2("M_XDBI")
)
/
create unique index i_fgr$_tablespace_info1
 on fgr$_tablespace_info(version_guid, tablespace_name)
/
create index i_fgr$_tablespace_info2
 on fgr$_tablespace_info(tablespace_name)
/

create table fgr$_table_info
(
  version_guid      raw(16)            not null,           /* version's GUID */
  schema_name       varchar2("M_IDEN") not null,              /* schema name */
  table_name        varchar2("M_IDEN") not null,               /* table name */
  tablespace_name   varchar2("M_IDEN_30"),                /* tablespace name */
  scn               number,                                    /* export scn */
  spare1            number,
  spare2            number,
  spare3            varchar2("M_IDEN"),
  spare4            varchar2("M_XDBI")
)
/
create unique index i_fgr$_table_info1
 on fgr$_table_info(version_guid, schema_name, table_name)
/
create index i_fgr$_table_info2
 on fgr$_table_info(schema_name, table_name, tablespace_name)
/
create index i_fgr$_table_info3
 on fgr$_table_info(table_name)
/
create table ruleset$ (
        obj#            number not null,                    /* object number */
        baseobj         number not null,               /* base object number */
        rules_table     number not null         /* table in which rules live */
)
/
create table log$
(
  btable#    number not null,                        /* base table object id */
  colname    varchar2("M_IDEN") not null,                   /* logging column name */
  refcount   number not null,                        /* number of references */
  ltable#    number not null                      /* logging table object id */
)
/
create sequence log$sequence   /* sequence for logging table name generation */
  increment by 1
  start with 1
  minvalue 0
  nomaxvalue
  cache 10
  order
  nocycle
/
rem Recoverable script : table storing recoverable script details
create table reco_script$
( 
  oid                    raw(16),                        /* global unique id */
  invoking_package_owner varchar2("M_IDEN"),   /* pkg owner of invoking proc */
  invoking_package       varchar2("M_IDEN"),     /* name of the invoking pkg */
  invoking_procedure     varchar2("M_IDEN"),    /* name of the invoking proc */
  invoking_user          varchar2("M_IDEN"),                /* invoking user */
  total_blocks           number,     /* total number of blocks in the script */
  context                clob,        /* any context the user wishes to pass */
                                /* between blocks, like some state variables */
  status                 number,   /* GENERATING, EXECUTING, EXECUTED, ERROR */
  done_block_num         number,
                            /* nth block that has been successfully executed */
  script_comment         varchar2("M_VCSZ"),   /* comments passed in by user */
  ctime                  date default SYSDATE,         /* script create time */
  spare1                 number,
  spare2                 number,
  spare3                 number,
  spare4                 varchar2(1000),
  spare5                 varchar2(1000),
  spare6                 date
)
tablespace SYSAUX
/ 

create unique index reco_script$_unq
  on reco_script$ (oid)
tablespace SYSAUX
/

rem Recoverable script : table storing operation parameters
create table reco_script_params$
(
  oid            raw(16),               /* global unique id of the operation */
  param_index    number,               /* to associate multivalue parameters */
  name           varchar2("M_IDEN"),                    /* name of parameter */
  spare1         number,
  spare2         number,
  spare3         varchar2(1000),
  value          clob                                  /* value of parameter */
)
tablespace SYSAUX
/

create unique index reco_script_params$_unq
  on reco_script_params$ (oid, name, param_index)
tablespace SYSAUX
/

rem Recoverable script : table storing recoverable script blocks
create table reco_script_block$
(
  oid                  raw(16),                          /* global unique id */
  block_num            number,                    /* nth block in the script */
  forward_block        clob,                 /* forward block to be executed */
  forward_block_dblink varchar2("M_XDBI"),/* where forward block is executed */
  undo_block           clob,     /* block to be executed in case of rollback */
  undo_block_dblink    varchar2("M_XDBI"),   /* where undo block is executed */
  state_block          clob,        /* block to be executed to set the state */
  status               number,   /* EXECUTED, ERROR, NOT EXECUTED, EXECUTING */
  context              clob,              /* any ctx the user wishes to pass */
  block_comment        varchar2("M_VCSZ"),    /* user comments for the block */
  ctime                date default SYSDATE,   /* time the block was created */
  spare1               number,
  spare2               number,
  spare3               number,
  spare4               varchar2(1000),
  spare5               varchar2(1000),
  spare6               date
)
tablespace SYSAUX
/

create unique index reco_script_block$_unq
  on reco_script_block$ (oid, block_num)
tablespace SYSAUX
/

rem Recoverable script : table storing recoverable script errors
create table reco_script_error$
(
  oid                 raw(16),                           /* global unique id */
  block_num           number,                       /* nth block that failed */
  error_number        number,                                /* error number */
  error_message       varchar2("M_VCSZ"),                   /* error message */
  error_creation_time date default SYSDATE,            /* time error occured */
  spare1              number,
  spare2              varchar2(1000)
)
tablespace SYSAUX
/

rem
rem BEGIN Data comparison: sequence, table definitions
rem 

rem Stores the comparison registration's static parameters

CREATE TABLE comparison$
(
  comparison_id      NUMBER NOT NULL,
  comparison_name    VARCHAR2("M_IDEN") NOT NULL,
  user#              NUMBER,               /* userid for security validation */
  comparison_mode    NUMBER,                              /* CMP_CMODE_TABLE */
  schema_name        VARCHAR2("M_IDEN"),   
  object_name        VARCHAR2("M_IDEN"),   
  object_type        NUMBER,
  rmt_schema_name    VARCHAR2("M_IDEN"),   
  rmt_object_name    VARCHAR2("M_IDEN"),   
  rmt_object_type    NUMBER,
  dblink_name        VARCHAR2("M_XDBI"),  
  scan_mode          NUMBER,             /* CMP_SCAN_MODE_FULL_TABLE etc.    */
  scan_percent       NUMBER,
  cyl_idx_val        VARCHAR2("M_VCSZ"),
  null_value         VARCHAR2("M_VCSZ"),
  loc_converge_tag   RAW("M_CSIZ"),
  rmt_converge_tag   RAW("M_CSIZ"),
  max_num_buckets    NUMBER,
  min_rows_in_bucket NUMBER,
  flags              NUMBER,             
        /* 0x00000001    1       SINGLE COLUMN INDEX
         * 0x00000002    2       UNIQUE INDEX 
         * 0x00000004    4       NULLABLE INDEX COLUMN
         */
  last_update_time   TIMESTAMP,
  spare1             NUMBER,           
  spare2             NUMBER,
  spare3             NUMBER,
  spare4             VARCHAR2(1000)
)
tablespace SYSAUX
/

CREATE UNIQUE INDEX cmp_uniq_idx1 ON comparison$ (comparison_id)
tablespace SYSAUX
/

CREATE UNIQUE INDEX cmp_uniq_idx2 ON comparison$ (comparison_name)
tablespace SYSAUX
/

rem 
rem Stores the index columns as well as other columns used in comparison.
rem

CREATE TABLE comparison_col$(
  comparison_id      NUMBER             NOT NULL,
  col_position       NUMBER             NOT NULL,
  col_name           VARCHAR2("M_IDEN") NOT NULL,
  data_type          NUMBER,                            /* number, date etc. */
  flags              NUMBER,
        /* 0x00000001    1       Index Column
         */
  spare1             NUMBER,           
  spare2             NUMBER,
  spare3             NUMBER,
  spare4             VARCHAR2(1000)
)
tablespace SYSAUX
/

CREATE INDEX cmpcol_uniq_idx1 ON comparison_col$ 
(comparison_id, col_position, col_name)
tablespace SYSAUX
/


rem
rem Stores the results for a particular scan iteration of a comparison.
rem Each top level scan will have the parent_scan_id as NULL.
rem 
CREATE TABLE comparison_scan$ (
  comparison_id         NUMBER  NOT NULL,
  scan_id               NUMBER  NOT NULL,  
  parent_scan_id        NUMBER,
  num_rows              NUMBER,               /* Number of rows in scan      */
           /* CMP_STAT_SUC, CMP_STAT_DIF, CMP_STAT_BUC_DIF, CMP_STAT_ROW_DIF */
  status                NUMBER,
  flags                 NUMBER,
        /* 0x00000001    1       Scan Nulls
         */
  last_update_time      TIMESTAMP,
  spare1                NUMBER,                         /* current dif count */
  spare2                NUMBER,                         /* initial dif count */
  spare3                NUMBER,                              /* root scan id */
  spare4                VARCHAR2(1000),
  spare5                NUMBER,
  spare6                NUMBER,
  spare7                NUMBER,
  spare8                TIMESTAMP
)
tablespace SYSAUX
/

CREATE UNIQUE INDEX cmp_scan_uniq_idx ON comparison_scan$ 
  (comparison_id, scan_id)
tablespace SYSAUX
/


rem
rem Stores the column ranges for a scan.
rem 
CREATE TABLE comparison_scan_val$ (
  comparison_id         NUMBER NOT NULL,
  scan_id               NUMBER NOT NULL,  
  column_position       NUMBER NOT NULL,
  min_val               VARCHAR2("M_VCSZ"),   /* Minimum value for this scan */
  max_val               VARCHAR2("M_VCSZ"),   /* Maximum value for this scan */
  flags                 NUMBER,
  last_update_time      TIMESTAMP,
  spare1                NUMBER,           
  spare2                NUMBER,
  spare3                NUMBER,
  spare4                VARCHAR2(1000)
)
tablespace SYSAUX
/

CREATE UNIQUE INDEX cmp_scan_val_uniq_idx ON comparison_scan_val$ 
  (comparison_id, scan_id, column_position)
tablespace SYSAUX
/

rem Stores the row difs of a scan
CREATE TABLE comparison_row_dif$ (
  comparison_id         NUMBER          NOT NULL,
  scan_id               NUMBER          NOT NULL,
  loc_rowid             ROWID,
  rmt_rowid             ROWID,
  idx_val               VARCHAR2("M_VCSZ"),
  status                NUMBER,      /* dbms_cmp_int.CMPI_ROWDIF_SUC or _DIF */
  last_update_time      TIMESTAMP,
  spare1                NUMBER,           
  spare2                NUMBER,
  spare3                NUMBER,
  spare4                VARCHAR2(1000)
)
tablespace SYSAUX
/

CREATE UNIQUE INDEX cmp_row_dif_uniq_idx_1 ON comparison_row_dif$ 
  (comparison_id, scan_id, loc_rowid, rmt_rowid)
tablespace SYSAUX
/

CREATE UNIQUE INDEX cmp_row_dif_uniq_idx_2 ON comparison_row_dif$ 
  (comparison_id, scan_id, rmt_rowid, loc_rowid)
tablespace SYSAUX
/

CREATE SEQUENCE comparison_seq$  
  START WITH 1 
  INCREMENT BY 1
  MINVALUE 1
  NOCACHE
/

CREATE SEQUENCE comparison_scan_seq$ 
  START WITH 1
  INCREMENT BY 1
  MINVALUE 1
  MAXVALUE 4294967295
  CYCLE
  CACHE 20
/


rem
rem END Data comparison: sequence, table definitions
rem 

rem ---------------------------------------------------------
rem Persistent tables for storing Streams topoloy information
rem ---------------------------------------------------------

rem persistent table for streams component
create table streams$_component
(
  component_id       number not null, /* system assigned unique component id */
  component_name     varchar2(390),                 /* name of the component */
                                       /* component_name of the propagation  */
                                       /* sender has the following form:     */
                                       /* "queue_schema"."queue_name"@dblink */
                                       /*  queue_schema   varchar2(M_IDEN)   */
                                       /*  queue_name     varchar2(M_IDEN)   */
                                       /*  dblink         varchar2(128)      */
                                       /*  in total 128 + 128 + 128 + 6 = 390*/
  component_db       varchar2("M_XDBI"),  /* database on which comp. resides */
  component_type     number,                /* type of the streams component */
                                                   /* 1              capture */
                                                   /* 2   propagation sender */
                                                   /* 3 propagation receiver */
                                                   /* 4                apply */
                                                   /* 5                queue */
  component_property number,                  /* properties of the component */
                                                  /* 0x01 downstream capture */
                                                  /* 0x02      local capture */
                                                  /* 0x04         hot mining */
                                                  /* 0x08        cold mining */
                                                  /* 0x10     buffered queue */
                                                  /* 0x20   persistent queue */
  component_changed_time date,   /* time that the component was last changed */
  spare1             number,                               /* spare column 1 */
  spare2             number,                               /* spare column 2 */
  spare3             varchar2("M_VCSZ"),                   /* spare column 3 */
  spare4             date                                  /* spare column 4 */
)
tablespace SYSAUX
/
create unique index streams$_component_ind on
streams$_component(component_id)
tablespace SYSAUX
/

rem persistent table for streams component link
create table streams$_component_link
(
  source_component_id number not null,         /* id of the source component */
  dest_component_id   number not null,    /* id of the destination component */
  path_id             number not null, /* id of the path the link belongs to */
  position            number, /* 1-based position of the link on stream path */
  path_flag           raw(4) default '00000000',  /* flag of the stream path */
                         /* bit 1 -    whether the link is on an active path */
                         /* bit 2 - whether the link is on an optimized path */
                             /* value '00000000' - inactive unoptimized path */
                             /* value '00000001' -   active unoptimized path */
                             /* value '00000002' -   inactive optimized path */
                             /* value '00000003' -     active optimized path */
  original_path_id    number default null, /* id of the original stream path */
                          /* and it is only populated for the optimized path */
  spare1              number,                              /* spare column 1 */
  spare2              number,                              /* spare column 2 */
  spare3              varchar2("M_VCSZ"),                  /* spare column 3 */
  spare4              date                                 /* spare column 4 */
)
tablespace SYSAUX
/
create unique index streams$_component_link_ind on
streams$_component_link(source_component_id, dest_component_id, path_id)
tablespace SYSAUX
/

rem persistent table for Streams component properties
create table streams$_component_prop
(
  component_id   number not null,                     /* id of the component */
  prop_name      varchar2("M_IDEN"),                 /* name of the property */
  prop_value     varchar2("M_VCSZ"),                /* value of the property */
  spare1         number,
  spare2         number,
  spare3         varchar2("M_VCSZ"),
  spare4         date
)
tablespace SYSAUX
/
create unique index streams$_component_prop_ind on
streams$_component_prop(component_id, prop_name)
tablespace SYSAUX
/

rem persistent table for streams database
create table streams$_database
(
  global_name     varchar2("M_XDBI") not null,    /* database covered by */
                                                    /* stream topologies */
  last_queried    date not null,        /* time stream topology data was */
                                          /* collected from the database */
  version         varchar2("M_IDEN"),                /* database version */
                                           /* same as v$instance.version */
  compatibility   varchar2("M_IDEN"),     /* database compatible setting */
  management_pack_access
                  varchar2("M_IDEN"), /* management pack access, values: */
                                      /* NULL :                 pre-11.1 */
                                      /* NONE : 11.1, no diagnostic pack */
                                      /* DIAGNOSTIC                      */
                                      /* DIAGNOSTIC+TUNING               */
  spare1          number,                              /* spare column 1 */
  spare2          number,                              /* spare column 2 */
  spare3          varchar2("M_VCSZ"),                  /* spare column 3 */
  spare4          date                                 /* spare column 4 */
)
tablespace SYSAUX
/
create unique index streams$_database_ind on streams$_database(global_name)
tablespace SYSAUX
/

--
-- Table to track XStream servers
--
create table xstream$_server
(
  server_name       varchar2("M_IDEN") not null,      /* XStream server name */
  app_src_database  varchar2("M_XDBI") default null,       /* apply's src db */
  capture_name      varchar2("M_IDEN") default NULL,         /* capture name */
  cap_src_database  varchar2("M_XDBI") default null,     /* capture's src db */
  queue_owner       varchar2("M_IDEN") not null,              /* queue owner */
  queue_name        varchar2("M_IDEN") not null,               /* queue name */
  flags             number,                          /* XStream server flags */
                                                     /* XStream Out   0x0001 */
                                                     /* XStream In    0x0002 */
                                            /* Uncommitted data mode  0x0004 */
                                                /* client is attached 0x0008 */
  user_comment      varchar2("M_VCSZ"),                      /* user comment */
  create_date       timestamp,                /* server's creation timestamp */
  spare1            number,
  spare2            number,
  spare3            number,
  spare4            timestamp,
  spare5            varchar2("M_VCSZ"),
  spare6            varchar2("M_VCSZ"),
  status_change_time date,       /* the time that the status column changed */ 
  connect_user      varchar2("M_IDEN")       /* connect_user for this server */
)
/
create unique index i_xstream_server1 on
  xstream$_server(server_name)
/
create index i_xstream_server2 on
  xstream$_server(capture_name)
/

--
-- Table to track subset rules for XStream servers
--
create table xstream$_subset_rules
(
  server_name       varchar2("M_IDEN") not null,      /* XStream server name */
  rules_owner       varchar2("M_IDEN") not null,              /* Rules owner */
  insert_rule       varchar2("M_IDEN") not null,         /* insert rule name */
  delete_rule       varchar2("M_IDEN") not null,         /* delete rule name */
  update_rule       varchar2("M_IDEN") not null,         /* update rule name */
  spare1            number,
  spare2            number,
  spare3            number,
  spare4            timestamp,
  spare5            varchar2("M_VCSZ"),
  spare6            varchar2("M_VCSZ")
)
/
create unique index i_xstream_subset_rules on
  xstream$_subset_rules(server_name, rules_owner, insert_rule, delete_rule,
                        update_rule)
/

--
-- Table to track system-generated objects for XStream servers
--
create table xstream$_sysgen_objs
(
  server_name       varchar2("M_IDEN") not null,      /* XStream server name */
  object_owner      varchar2("M_IDEN") not null,      /* generated obj owner */
  object_name       varchar2("M_IDEN") not null,       /* generated obj name */
  object_type       varchar2("M_IDEN") not null,              /* object type */
  spare1            number,
  spare2            number,
  spare3            number,
  spare4            timestamp,
  spare5            varchar2("M_VCSZ"),
  spare6            varchar2("M_VCSZ")
)
/
create index i_xstream_sysgen_objs1 on
  xstream$_sysgen_objs(server_name)
/
create index i_xstream_sysgen_objs2 on
  xstream$_sysgen_objs(object_owner, object_name, object_type)
/

--
-- Table for xstream parameters 
--
create table xstream$_parameters
(
  server_name       varchar2("M_IDEN") not null,      /* XStream server name */
  server_type       number not null,         /* 0 for outbond, 1 for inbound */
  position          number not null,    /* total ordering for the parameters */
  param_key         varchar2(100),               /* keyword in the parameter */
  schema_name       varchar2("M_IDEN"),             /* optional, no wildcard */
  object_name       varchar2("M_IDEN"),         /* optional, can do wildcard */
  user_name         varchar2("M_IDEN"),                     /* creation user */
  creation_time     timestamp,                              /* creation time */
  modification_time timestamp,                          /* modification time */
  flags             number,                              /* unused right now */
  details           clob,                           /* the parameter details */
  spare1            number,
  spare2            number,
  spare3            number,
  spare4            timestamp,
  spare5            varchar2("M_VCSZ"),
  spare6            varchar2("M_VCSZ"),
  spare7            raw(64),
  spare8            date,
  spare9            clob
)
/
create unique index i_xstream_parameters on
  xstream$_parameters(server_name, server_type, position)
/

--
-- Sequence for conflict handler id
--
create sequence conflict_handler_id_seq$     /* conflict handler id sequence */
  start with 1
  increment by 1
  minvalue 1
  maxvalue 4294967295                           /* max portable value of UB4 */
  nocycle
  nocache
/

--
-- Table for xstream dml_conflict_handler
--
create table xstream$_dml_conflict_handler
(
  object_name            varchar2("M_IDEN"),                  /* object name */
  schema_name            varchar2("M_IDEN"),                  /* schema name */
  apply_name             varchar2("M_IDEN"),                   /* apply name */
  conflict_type          number,                 /* conflict type definition */
                                                             /* 1 row exists */
                                                            /* 2 row missing */
  user_error             number,                                   /* unused */
  opnum                  number,             /* 1 insert, 2 update, 3 delete */
  method_txt             clob,                                     /* unused */
  method_name            varchar2("M_VCSZ"),                       /* unused */
  old_object             varchar2("M_IDEN"),         /* original object name */
  old_schema             varchar2("M_IDEN"),         /* original schema name */
  method_num             number,           /* resolution method
                                            * 1 RECORD, 2 IGNORE, 3 OVERWRITE,
                                            * 4 MAXIMUM, 5 MINIMUM, 6 DELTA  */
  conflict_handler_name  varchar2("M_IDEN"), /* Name of the conflict handler */
  resolution_column      varchar2("M_IDEN"),           /* column to evaluate */
  conflict_handler_id    number,               /* ID of the conflict handler */
  set_by                 number default NULL,        /* set by user or by GG */
                                                     /* NULL -> USER         */
                                                     /* 1    -> GOLDENGATE   */
  spare1                 number,  
  spare2                 number, 
  spare3                 number, 
  spare4                 timestamp,  
  spare5                 varchar2("M_VCSZ"),
  spare6                 varchar2("M_VCSZ"),
  spare7                 raw(64),
  spare8                 date,
  spare9                 clob
)
/
create index i_xstream_dml_conf_handler1 on
  xstream$_dml_conflict_handler(apply_name, schema_name, object_name,
                                old_schema, old_object, opnum, conflict_type,
                                method_num)
/
create unique index i_xstream_dml_conf_handler2 on
  xstream$_dml_conflict_handler(apply_name, conflict_handler_name)
/

--
-- Table to store the conflict resolution group for
-- xstream$_dml_conflict_handler
--
create table xstream$_dml_conflict_columns
(
  conflict_handler_id       number not null,                   /* handler id */
  column_name               varchar2("M_IDEN") not null,           /* column */
  spare1                    number,  
  spare2                    number, 
  spare3                    number, 
  spare4                    timestamp,  
  spare5                    varchar2("M_VCSZ"),
  spare6                    varchar2("M_VCSZ"),
  spare7                    raw(64),
  spare8                    date,
  spare9                    clob
)
/
create index i_xstream_dml_conflict_cols1 on
  xstream$_dml_conflict_columns(conflict_handler_id)
/

-- table for reperror handlers
create table xstream$_reperror_handler
(
  apply_name          varchar2("M_IDEN") not null,             /* Apply name */
  schema_name         varchar2("M_IDEN") not null,            /* dest schema */
  table_name          varchar2("M_IDEN") not null,             /* dest table */
  source_schema_name  varchar2("M_IDEN") not null,             /* src schema */
  source_table_name   varchar2("M_IDEN") not null,              /* src table */
  error_number        number not null,                       /* error number */
  method              number not null, /* 1 ABEND, 2 RECORD,
                                        * 3 RECORD_TRANSACTION, 4 IGNORE,
                                        * 5 RETRY, 6 RETRY_TRANSACTION */
  max_retries         number,                                 /* max retries */
  delay_msecs         number,                     /* retry delay miliseconds */
  set_by              number default NULL,           /* set by user or by GG */
                                                     /* NULL -> USER         */
                                                     /* 1    -> GOLDENGATE   */
  spare1              number,  
  spare2              number, 
  spare3              number, 
  spare4              timestamp,  
  spare5              varchar2("M_VCSZ"),
  spare6              varchar2("M_VCSZ"),
  spare7              raw(64),
  spare8              date,
  spare9              clob
)
/
create unique index i_xstream_reperror_handler1 on
  xstream$_reperror_handler(apply_name, schema_name, table_name,
                           source_schema_name, source_table_name, error_number)
/

-- table for collision handlers
create table xstream$_handle_collisions
(
  apply_name          varchar2("M_IDEN") not null,             /* apply name */
  schema_name         varchar2("M_IDEN") not null,            /* dest schema */
  table_name          varchar2("M_IDEN") not null,             /* dest table */
  source_schema_name  varchar2("M_IDEN") not null,             /* src schema */
  source_table_name   varchar2("M_IDEN") not null,              /* src table */
  handle_collisions   varchar2(1) not null,        /* Handle collisions? Y/N */
  set_by              number default NULL,           /* set by user or by GG */
                                                     /* NULL -> USER         */
                                                     /* 1    -> GOLDENGATE   */
  spare1              number,  
  spare2              number, 
  spare3              number, 
  spare4              timestamp,  
  spare5              varchar2("M_VCSZ"),
  spare6              varchar2("M_VCSZ"),
  spare7              raw(64),
  spare8              date,
  spare9              clob
)
/
create unique index i_xstream_handle_collisions1 on
  xstream$_handle_collisions(apply_name, schema_name, table_name,
                             source_schema_name, source_table_name)
/


--
-- Table to track connection between XOut to XIN server
--
create table xstream$_server_connection
(
 outbound_server               varchar2("M_IDEN") not null,  
 inbound_server                varchar2("M_IDEN") not null, 
 inbound_server_dblink         varchar2("M_XDBI"),  
 outbound_queue_owner          varchar2("M_IDEN"),
 outbound_queue_name           varchar2("M_IDEN"),
 inbound_queue_owner           varchar2("M_IDEN"),
 inbound_queue_name            varchar2("M_IDEN"),
 rule_set_owner                varchar2("M_IDEN"),
 rule_set_name                 varchar2("M_IDEN"),
 negative_rule_set_owner       varchar2("M_IDEN"),
 negative_rule_set_name        varchar2("M_IDEN"),
 flags                         number,      
 status                        number,
 create_date                   date,
 error_message                 varchar2(4000),
 error_date                    date,
 acked_scn                     number,
 auto_merge_threshold          number,
 spare1                        number,
 spare2                        number,
 spare3                        varchar2("M_VCSZ"),
 spare4                        varchar2("M_VCSZ"),
 spare5                        varchar2("M_VCSZ"),
 spare6                        varchar2("M_VCSZ"),
 spare7                        date,
 spare8                        date,
 spare9                        raw("M_CSIZ"),
 spare10                       raw("M_CSIZ")
)
/
create index i_xstream_server_connection1 on xstream$_server_connection
    (outbound_server, inbound_server, inbound_server_dblink)
/
/

--
-- Table to for ddl conflict handlers
--
create table xstream$_ddl_conflict_handler
(
  apply_name        varchar2("M_IDEN") not null,               /* apply name */
  conflict_type     varchar2("M_VCSZ") not null,            /* conflict type */
  include           clob,                                /* inclusion clause */
  exclude           clob,                                /* exclusion clause */
  method            clob,                   /* method for resolving conflict */
  spare1            number,
  spare2            number,
  spare3            number,
  spare4            timestamp,
  spare5            varchar2("M_VCSZ"),
  spare6            varchar2("M_VCSZ"),
  spare7            clob,
  spare8            clob,
  spare9            raw(100)
)
/
create index i_xstream_ddl_conflict_hdlr1 on
  xstream$_ddl_conflict_handler(apply_name)
/

--
-- Table to for ddl conflict handlers
--
create table xstream$_map
(
  apply_name        varchar2("M_IDEN") not null,               /* apply name */
  src_obj_owner     varchar2("M_IDEN"),                /*source object owner */
  src_obj_name      varchar2("M_IDEN") not null,            /* source object name */
  tgt_obj_owner     varchar2("M_IDEN"),               /* target object owner */
  tgt_obj_name      varchar2("M_IDEN") not null,            /* target object name */
  colmap            clob,                       /* column mapping definition */
  sqlexec           clob,                              /* SQLEXEC definition */
  sequence          number,                      /* order of mapping clauses */
  spare1            number,
  spare2            number,
  spare3            number,
  spare4            timestamp,
  spare5            varchar2("M_VCSZ"),
  spare6            varchar2("M_VCSZ"),
  spare7            clob,
  spare8            clob,
  spare9            raw(100)
)
/
create index i_xstream_map1 on
  xstream$_map(apply_name)
/

create table goldengate$_privileges
( username        varchar2("M_IDEN") not null,
  privilege_type  number not null,              /* 1: capture; 2: apply; 3:* */
  privilege_level number not null,              /* 1: administrator; 2: user */
  create_time     timestamp,
  spare1          number,
  spare2          number,
  spare3          timestamp,
  spare4          varchar2("M_VCSZ"),
  spare5          varchar2("M_VCSZ"),
  optional_priv   varchar2("M_VCSZ"),    /* optional privilege to be granted */
  allpdbs         number default 0,         /* 0 = current pdb, 1 = all pdbs */
  c_invoker       varchar2("M_IDEN"))
/
create unique index goldengate$_privileges_i on 
  goldengate$_privileges(username, privilege_type, privilege_level)
/

create table xstream$_privileges
( username        varchar2("M_IDEN") not null,
  privilege_type  number not null,              /* 1: capture; 2: apply; 3:* */
  privilege_level number not null,              /* 1: administrator; 2: user */
  create_time     timestamp,
  spare1          number,
  spare2          number,
  spare3          timestamp,
  spare4          varchar2("M_VCSZ"),
  spare5          varchar2("M_VCSZ"),
  optional_priv   varchar2("M_VCSZ"),    /* optional privilege to be granted */
  allpdbs         number default 0,         /* 0 = current pdb, 1 = all pdbs */
  c_invoker       varchar2("M_IDEN"))
/
create unique index i_xstream_privileges on 
  xstream$_privileges(username, privilege_type, privilege_level)
/

-- add dbname mapping table for CDB
create table repl$_dbname_mapping
(
  source_root_name     varchar2("M_XDBI"),
  source_database_name varchar2("M_XDBI"),
  source_container_name varchar2("M_IDEN"),
  spare1               number,
  spare2               number,
  spare3               timestamp,
  spare4               varchar2("M_VCSZ"),
  spare5               varchar2("M_VCSZ")
)
/
create unique index i_repl_dbname_mapping_1 on 
  repl$_dbname_mapping(source_root_name, source_database_name)
/
create unique index i_repl_dbname_mapping_2 on 
  repl$_dbname_mapping(source_root_name, source_container_name)
/

REM 
REM RMTAB$
REM
-- rmtab$ - rowid mapping table (rmt) dictionary table
-- a row gets added to this table when an rmt is created
-- and gets deleted when an rmt is dropped.
-- See kkzurmt.h for API
create table rmtab$
(
   obj#     number,                                              /* rmt objn */
   stab#    number,                                     /* source table objn */
   sobj#    number,                           /* source table partition objn */
   sobjd#   number,                            /* source table/partiton objd */
   ttab#    number,                                     /* target table objn */
   tobj#    number,                           /* target table partitino objn */
   tobjd#   number,                           /* target table/partition objd */
   mflags   number,                                         /* mutable flags */
   name     varchar("M_IDEN"),                                /* name of rmt */
   user#    number                                   /* user who created rmt */
)
/
create index stab_rmtab$ on rmtab$ (stab#)
/


-- repl$_process_events,
-- dictionary table that stores events of the replication processes,
-- can be use to have a comprehensive history of the lifetime of a process,
-- when it was created, started, stopped, dropped, aborted.

create table repl$_process_events
(
   streams_type  number not null,                           /* 0 -> STREAMS */
                                                            /* 1 -> XSTREAM */
                                                         /* 2 -> GOLDENGATE */
   process_type  number not null,                           /* process type */
   streams_name  varchar2 ("M_IDEN") not null,              /* streams name */
   event_name    varchar2 ("M_IDEN"),                              /* event */
   description   varchar2 (2000),                        /* event's details */
   event_time    timestamp,                    /* event's registration time */ 
   error_number  number,                    /* error number reported if any */
   error_message varchar2(2000),                    /* explanation of error */
   spare1        number,
   spare2        number,
   spare3        number,
   spare4        varchar2(2000),
   spare5        varchar2(2000),
   spare6        timestamp,
   spare7        raw(2000)
)
/

create index i_repl$_process_event on repl$_process_events (streams_name)
/

-- Bug 25871643: goldengate$_container_rules,
-- system table to store rules for automatic registration of future pdbs.
-- rules can be inclusion/exclusion, can contain wildcards (? or *).  

create table goldengate$_container_rules
(
   rule#          number              not null,                   /* rule id */
   capture_name   varchar2 ("M_IDEN") not null,              /* Capture Name */
   filter_rule    varchar2 ("M_VCSZ") not null,               /* filter rule */
   inclusion_rule number              default 1,       /* 0 - exclusion rule */
						       /* 1 - inclusion rule */
   escape_char    varchar2(1)         default '\',       /* escape character */
   flag           number              default 1,        /* flag for wildcard */
   spare1         number              default null,                /* unused */
   spare2         varchar2 (2000)     default null                 /* unused */
)
/

create unique index i_goldengate$_container_rules on goldengate$_container_rules 
	(rule#)
/

create sequence rule_id_seq$
                        /* Sequence for rule# in goldengate$_container_rules */
  increment by 1
  start with 1
  minvalue 1
  maxvalue 4294967295                           /* max portable value of UB4 */
  cycle
/

OHA YOOOO