Replication Guide and Reference

Table structures

This chapter describes the relational database tables that are used for replication.

Table 34, Table 35, and Table 36 provide brief descriptions of the tables listed in this chapter. When you become familiar with the tables, you can use Figure 23 and Figure 24 as a quick reference for the source and control server tables, table keys, and their parameters.

Important: You must not use SQL to update some of the control tables (see particular table descriptions for details). Altering control tables inappropriately can cause problems such as unexpected results, loss of data, and reduced replication performance.


Tables at a glance

Figure 23 and Figure 24 show the tables at the source and control servers, table keys, and their parameters.

Figure 23. Tables used at the source server. The tables used by the Capture program, Apply program, and Capture triggers at the source server.


The source server tables

Figure 24. Tables used at the control server. The tables used by the Apply program at the control server.


The control server tables


List of tables used at the source server

The following table provides a list of tables used at the source server during DB2 replication.

Table 34. Quick reference for tables used at the source server
Table name Internal name and description See topic
Apply-qualifier-cross-reference table (AS/400 specific) ASN.IBMSNAP_AUTHTKN

Contains information to support update-anywhere.

"Apply-qualifier-cross-reference table (AS/400 specific)"
Capture enqueue table

(VM and VSE specific)

ASN.IBMSNAP_CCPENQ

Used to ensure that only one Capture program is running per database.

"Capture enqueue table (VM and VSE specific)"
Change data table CD

A table that contains changed data information. Created when a replication source is defined.

"Change data table"
Consistent-change-data table userid.target_table

Contains additional columns to help identify transactions. This table stores the individual operations, transactions, and the approximate times of those transactions.

"Consistent-change-data table"
Critical section table ASN.IBMSNAP_CRITSEC

Used to prevent circular replication for update-anywhere replication.

"Critical section table"
Pruning control table ASN.IBMSNAP_PRUNCNTL

Coordinates synchpoint updates by allowing the Apply program to communicate with the Capture program and coordinates pruning of tables. There is one pruning control table at each source server and one row per source-to-target copy.

"Pruning control table"
Prune lock table ASN.IBMSNAP_PRUNE_LOCK

Used to serialize the access of staging tables during a cold start or retention limit pruning.

"Prune lock table"
Register table ASN.IBMSNAP_REGISTER

Contains information about replication sources, such as the names of the replication source tables, their attributes, and their corresponding CD and CCD table names.

"Register table"
Register extension table (AS/400 specific) ASN.IBMSNAP_REG_EXT

An extension of the register table. Contains additional information about replication sources, such as the journal name and the remote source table's database entry name.

"Register extension table for AS/400"
Register synchronization table ASN.IBMSNAP_REG_SYNCH

When replicating from a non-IBM data source, an update trigger on this table initiates an update of the SYNCHPOINT value for all the rows in the register table before the Apply program reads the information from the register table.

"Register synchronization table"
Trace table ASN.IBMSNAP_TRACE

Contains Capture program audit trail information.

"Trace table"
Tuning parameters table ASN.IBMSNAP_CCPPARMS

Contains parameters that you can modify to control the performance of the Capture program.

"Tuning parameters table"
Unit-of-work table ASN.IBMSNAP_UOW

Contains information about committed transactions. Used to maintain transaction consistency.

"Unit-of-work table"
Warm start table ASN.IBMSNAP_WARM_START

Contains information that enables the Capture program to resume capturing from the point in the log or journal where it last stopped. For AS/400 platforms, this table is used to determine the starting time of the RCVJRNE (Receive Journal Entry) command.

"Warm start table"


List of tables used at the control server

The following table provides a list of tables used at the control server during DB2 replication.

Table 35. Quick reference for tables used at the control server
Table name Internal name and description See topic
Apply trail table ASN.IBMSNAP_APPLYTRAIL

Contains Apply program audit trail and problem diagnostic information.

"Apply trail table"
Subscription columns table ASN.IBMSNAP_SUBS_COLS

Maps target table or view columns to the corresponding source table or view column or user-defined expression.

"Subscription columns table"
Subscription events table ASN.IBMSNAP_SUBS_EVENT

Contains user-defined event names that control the execution of a subscription set. You modify this table using SQL.

"Subscription events table"
Subscription set table ASN.IBMSNAP_SUBS_SET

Contains processing information for a set of subscription-set members, which are processed by the Apply program as a group.

"Subscription set table"
Subscription statements table ASN.IBMSNAP_SUBS_STMTS

Contains SQL statements or stored procedure calls that are defined in a subscription set.

"Subscription statements table"
Subscription-targets-member table ASN.IBMSNAP_SUBS_MEMBR

Identifies a source and target table (or view) pair and specifies processing information for that pair.

"Subscription-targets-member table"
Row-replica-target-list table

(Microsoft Jet specific)

ASN.IBMSNAP_SUBS_TGTS

Maintains the names of the row-replica tables. Row-replica tables are a type of target table used specifically with the Microsoft Jet database.

"Row-replica-target-list table (Microsoft Jet specific)"
Subscription-schema-changes table

(Microsoft Jet specific)

ASN.IBMSNAP_SCHEMA_CHG

Used to signal add or delete modifications to a subscription.

"Subscription-schema-changes table (Microsoft Jet specific)"


List of tables used at the target server

The following table provides a list of tables used at the target server.

Table 36. Quick reference for target tables
Table name Internal name and description See topic
Base aggregate table userid.target_table.target_table

Contains data aggregated from a source table.

"Base aggregate table"
Change aggregate table userid.target_table

Contains data aggregations based on changes from a source table.

"Change aggregate table"
Consistent-change-data table userid.target_table

Contains additional columns to help identify transactions. This table stores the individual operations, transactions, and the approximate times of those transactions.

"Consistent-change-data table"
Point-in-time table userid.target_table

Identical to a user copy table, except that the IBMSNAP_LOGMARKER column is included to record a specific commit time from the source server.

"Point-in-time table"
Replica table userid.target_table

A type of target table used for update-anywhere replication.

"Replica table"
Row-replica table

(Microsoft Jet specific)

userid.target_table

A type of Microsoft Jet target table that can be updated.

"Row-replica table (Microsoft Jet specific)"
User copy table userid.target_table

A copy of the user table.

"User copy table"
Conflict table

(Microsoft Jet specific)

IBMSNAP_target_name_CONFLICT

Contains row data for DataPropagator for Microsoft Jet-detected conflict losers.

"Conflict table (Microsoft Jet specific)"
Error information table

(Microsoft Jet specific)

IBMSNAP_ERROR_INFO

Contains additional information to identify the row-replica table and row that caused an error.

"Error information table (Microsoft Jet specific)"
Error messages table

(Microsoft Jet specific)

IBMSNAP_ERROR_MESSAGE

Contains error codes and error messages. There can be more than one row in this table. Depending on the error code, additional information will be available in the error information, error-side-information, and conflict tables.

"Error messages table (Microsoft Jet specific)"
Error-side-information table

(Microsoft Jet specific)

IBMSNAP_SIDE_INFO

Contains the names of the conflict tables.

"Error-side-information table (Microsoft Jet specific)"
Key string table

(Microsoft Jet specific)

IBMSNAP_GUID_KEY

Maps the Microsoft Jet table identifiers and row identifiers to primary key values when the following actions occur:

  • Rows are deleted from Microsoft Jet database tables.
  • Deletes are recorded in MSysTombstone with s_Generation, TableGUID and s_GUID (row) identifiers, but without primary key details.
  • The primary key values are needed to propagate Microsoft Jet database deletes to an RDBMS.
"Key string table (Microsoft Jet specific)"
Synchronization generations table

(Microsoft Jet specific)

IBMSNAP_S_GENERATION

Prevents cyclic updates from propagating back to the RDBMS from a Microsoft Jet database.

"Synchronization generations table (Microsoft Jet specific)"


Tables used at the source server

This section describes the tables used at the source server and the columns in each table. These tables are created automatically the first time that you define a replication source if you use the Control Center and if they do not already exist on the source server. On the AS/400 platform, these tables are created automatically in the following situations if they do not exist already on the source server:

The administration tools use the information in the register, register extension, and pruning control tables to define your source and target tables for replication. After you define your replication sources, the Capture program uses the tuning parameters, capture enqueue, warm start, critical section, trace, and Apply-qualifier-cross-reference tables to control and audit your data. In addition to all the Capture program control and audit tables mentioned, the Capture triggers also use the register synchronization table to control data. The UOW and CD tables track data that has not yet been replicated.

Register table

This table contains information that you can update by using SQL.

ASN.IBMSNAP_REGISTER

The register table contains information about replication sources, such as the names of the replication source tables, their attributes, and their staging table names. A row is automatically inserted into this table every time a new replication source is defined at this server. You must update this table to maintain an external CCD table.

The register table is the place to look if you need to know how you defined your replication sources.

Table 37 provides a brief description of the columns in the register table.

Table 37. Columns in the register table
Column name Description
SOURCE_OWNER The owner of the source table or view.
SOURCE_TABLE The source from which data is being captured.
SOURCE_VIEW_QUAL This value is set to 0 for physical tables that are defined as sources and is greater than 0 for views that are defined as sources. This column is used to support multiple subscriptions for different source views with identical SOURCE_OWNER and SOURCE_TABLE column values.
GLOBAL_RECORD A flag that indicates whether this row is the global record. In the global record, only the SYNCHPOINT and SYNCHTIME columns are set by the Capture program to reflect its progress. If the Capture program has not been running, then there is no global record.

Y
This row is the global record.

N
This row is not the global record.
SOURCE_STRUCTURE A value that identifies the structure of the source table or view:

1
User table

3
CCD table

4
Point-in-time table

5
Base aggregate table

6
Change aggregate table

7
Replica table

8
User copy table

9
Row-replica table
SOURCE_CONDENSED A flag that indicates:

Y
For any given primary key, the CCD, replica, and user tables show only one row.

N
All changes must remain, retaining a complete update history.

A
Valid only for base aggregate or change aggregate tables.
SOURCE_COMPLETE

A flag that indicates:

Y
The source table contains a row for every primary key value of interest.

N
The source table contains some subset of rows of primary key values.

CD_OWNER The owner of the change data table or a view.
CD_TABLE The name of the change data table or view for captured updates to the source table (set when you define the replication source). This value is used by the Apply program and can be the name of a table or a view. The Capture program inserts one row into the CD table for every committed and uncommitted change to this replication source. The Apply program then joins this table with the UOW table so that only committed changes are replicated.
PHYS_CHANGE_OWNER The owner of the PHYS_CHANGE_TABLE. For a view defined as a source, this value equals the value of a CD or CCD table referenced in the change data view definition. For non-view replication sources, the value equals the CD_OWNER or the CCD_OWNER column. The Capture program uses this value to properly maintain CD_OLD_SYNCHPOINT and CD_NEW_SYNCHPOINT for view replication sources. The Apply program uses this value to properly maintain CCD_OLD_SYNCHPOINT and SYNCHPOINT for view replication sources that are based on CCD tables that the Apply program maintains.
PHYS_CHANGE_TABLE The name of the physical CD or CCD table. For a view replication source, this value equals the value of the CD or CCD table replication source definition referenced in the change data view definition. For non-view replication sources, the value equals the CD_TABLE or the CCD_TABLE column. The Capture program uses this value to properly maintain CD_OLD_SYNCHPOINT and CD_NEW_SYNCHPOINT for view replication sources. The Apply program uses this value to properly maintain CCD_OLD_SYNCHPOINT and SYNCHPOINT for view replication sources that are based on the CCD tables that the Apply program maintains.
CD_OLD_SYNCHPOINT The approximate SYNCHPOINT value when the Capture program begins to capture changes from the source table. The Capture program sets this value to NULL during a cold start. The Apply program sets this value to NULL for a target replica when cascading a gap condition. If the value is null when the synchpoint column of the pruning control table is set to xX'00000000000000000000X', the Capture program sets an initial value, and the same sequence number is reflected back into the SYNCHPOINT column of the pruning control table; this is the sequence number associated with the pruning control table update. Subsequent values are set by the Capture program when old rows are pruned from the table.
CD_NEW_SYNCHPOINT The Capture program advances this column as it inserts new rows into the CD table. If the Capture program did not insert into the change data table recently, then the value does not advance. The Apply program uses this column to see if there are new changes to be replicated.
DISABLE_REFRESH When this column is created, it contains the 0 flag. If you set the flag to 1, the Apply program is not allowed to perform a full refresh of the source server until the flag is set back to 0. This column is used to defer, not eliminate, a full refresh for a subscription. For example, you might want to defer a full refresh when the Capture program starts up cold or a gap in the log is detected. The Apply program will not process subscriptions to this replication source until control table values are updated. This flag prevents full refresh activity from overloading the source database during peak periods. This column is initialized to 0. You can use a program at the source database site to set this flag.

0
Full refreshes are allowed.

1
Full refreshes are prevented.
CCD_OWNER The owner of the local CCD table.
CCD_TABLE The name of the staging table that contains committed-only captured updates.
CCD_OLD_SYNCHPOINT

This value is set in one of the following ways when the CCD table is initialized:

  • By the administration tool when the CCD table is automatically defined as a source. CCD_OLD_SYNCHPOINT is set to NULL.
  • By the Control Center when a CCD table is defined as an external replication source table (for example, the table is maintained by IMS DataPropagator). CCD_OLD_SYNCHPOINT is set to MIN(IBMSNAP_COMMITSEQ) of the CCD table.

This column is related to full-refresh processing against CCD tables. The value in this column needs to be changed only when the CCD table is reinitialized or pruned of change data that has not yet been processed by all subscriptions which refer to it (as occurs in retention-limit pruning). This value can be much older than any row remaining in the CCD table, and it is maintained in one of the following ways:

  • Automatically by the Apply program or by another external application that maintains the CCD table.
  • Manually, for CCD replication sources that are not created and maintained by the Apply program. This is the case for CCD tables that contain changes generated by IMS DataPropagator.

If this column is not maintained, the Apply program using the CCD table as a replication source will not know that the CCD table was reinitialized, so it will fail to reinitialize complete copies of the CCD source.

SYNCHPOINT In the global row, where the GLOBAL_RECORD column is set to Y, this is the log or journal identifier (synchpoint) of the last log or journal record processed by the Capture program. The Apply program compares this value to the last synchpoint that it processed to see if there are new changes available for replication.

For CCD source definitions, this is the equivalent to CD_NEW_SYNCHPOINT and is updated by the Apply program that maintains the CCD table. This column must be set explicitly for a CCD replication source that is not created and maintained by the Apply program. An example is a CCD table of IMS changes generated by IMS DataPropagator.

SYNCHTIME A source server timestamp. The Capture program or an external program, such as IMS DataPropagator, updates this timestamp whether there are changes to be processed or not.

The Apply program uses this value when advanced conflict detection is selected for update-anywhere replication to ensure that the Capture program captured all outstanding changes for a replication source table.

CCD_CONDENSED A flag that indicates:

Y
This CCD replication source has only the last captured change for a source table row.

N
This CCD replication source has one row for each source table row change.
CCD_COMPLETE

A flag that indicates:

Y
The CCD table contains a row for every primary key value of interest.

N
The CCD table is initially empty and then is populated as changes are applied.

ARCH_LEVEL The architectural level of the definition in the row. This level is defined by IBM, and for Version 7 is 0201.
DESCRIPTION A field for comments that you enter when defining replication sources.
BEFORE_IMG_PREFIX Represents the default character identifying before-image column names in the CD table. The value can be NULL, but must not match any leading character identifying after-image user data column names in the CD table. The length of BEFORE_IMG_PREFIX is:

1
For an ASCII or an EBCDIC single byte prefix character.

2
For an ASCII double byte prefix character.

4
For an EBCDIC DBCS prefix character. This length allows for shift-in and shift-out characters.
CONFLICT_LEVEL A flag that indicates:

0
The Apply program does not check for conflicts. Data consistency must be enforced by your application design to avoid potential conflicting updates.

1
Standard detection with cascading transaction rejection. The Apply program checks for conflicts based on the changes captured to this point. The Apply program will reverse any conflicting transaction at the replica, as well as any transactions with dependencies on the conflicting transaction. Changes captured after the Apply program begins conflict detection will not be checked during this Apply cycle.

2
Enhanced detection with cascading transaction rejection. The Apply program waits until the Capture program captures all changes from the log or journal (see description of the SYNCHTIME column) and then does a standard conflict detection (CONFLICT_LEVEL = 1). During the wait time, the Apply program holds a LOCK on the source tables to ensure that no changes are made during the conflict detection process.
PARTITION_KEYS_CHG This value is assumed to be the same for all the user table's dependent replicas. A flag indicating:

N
Updates to the source table are staged by the Capture program as an update operation and processed by the Apply program as an UPDATE statement to the target table.

Y
Updates to the source table are staged by the Capture program as a delete and insert pair. The Apply program processes the delete first and the insert second. When this flag is set, every update to a replication source is stored in the CD table as two rows: a delete row and an insert row. This flag ensures that an update to a key or partitioning column is always processed correctly. Use this flag when:
  • The source columns for target table primary keys can be updated at the source table.
  • The source columns for target table partitioning columns were defined in predicates.
  • The target table is a DB2 Universal Database Enterprise - Extended Edition table stored in a multipartition nodegroup.

NULL
If this is the global control row.

Register extension table for AS/400

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_REG_EXT

This table is an AS/400-specific table that provides supplemental information for the register table, ASN.IBMSNAP_REGISTER. For every register table row, there is a matching row in the register extension table containing a few additional AS/400-specific columns.

This table is maintained by a trigger program (program QZSNJRNL in library QDPR) on the register table (ASN.IBMSNAP_REGISTER). The trigger is defined at the time the register table is created.

Use this table to complete the information from the register table to track where and how you defined your replication sources on an AS/400 server.

Table 38 provides a brief description of the columns in the register extension table.

Table 38. Columns in the register extension table
Column name Description
SOURCE_OWNER The owner of the source table or view.
SOURCE_TABLE The source from which data is being captured.
SOURCE_NAME A 10-character source table (or view) system name, used to issue commands.
SOURCE_MBR The name of the source table member being captured. Used for issuing Receive Journal Entry (RCVJRNE) commands and ALIAS support.
SOURCE_TABLE_RDB When using remote journals, this column contains the database name of the system where the source table actually resides. For non-remote-journal cases, this column is NULL.
JRN_LIB The library name of the journal that the source table uses.
JRN_NAME The name of the journal used by a source table. An asterisk followed by nine blanks in this column means that the source table is not currently in a journal. Therefore, it is not possible to capture data for this source table.
FR_START_TIME Time at which the full refresh starts. This column is updated by Capture for AS/400, not the administration tool, during operations.
SOURCE_VIEW_QUAL Supports the view of subscriptions by matching the similar column in the register table. This value is set to equal 0 for physical tables that are defined as a source and is greater than 0 for views that are defined as sources. You must have this column to support multiple subscriptions for different source views with identical SOURCE_OWNER and SOURCE_TABLE column values.

Pruning control table

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_PRUNCNTL

The pruning control table coordinates the pruning of the change data (CD) tables, which have the potential for unlimited growth. For each new subscription set, the Apply program first updates the pruning control table and then it begins a full refresh of every member of the new subscription set. After the full refresh, the Capture program begins capturing changes from the replication source. When the Capture program begins to capture data, it updates the pruning control table to notify the Apply program. During each Apply cycle, the Apply program updates the pruning control table to indicate the last change applied. The Capture program then uses the information to prune the CD and UOW tables.

The rows in the pruning control table are not deleted during a cold start of the Capture program. The administration tools use the values from the pruning control table to provide a list of copies defined as source tables and views.

There is one pruning control table at each source server and one row in the pruning control table for each subscription-set member.

You can manually prune your table by issuing the prune command or have it done automatically by updating the PRUNE_INTERVAL column in the tuning parameters table. See Tuning parameters table for more information about using the tuning parameters table.

Use this table to monitor the pruning status of your CD and UOW tables.

Table 39 provides a brief description of each of the columns in the pruning control table.

Table 39. Columns in the pruning control table
Column name Description
TARGET_SERVER The database name of the server where target tables or views are stored.
TARGET_OWNER A qualifier for a target table or view.
TARGET_TABLE The target to which data is being applied.
SYNCHTIME A source server timestamp. The SYNCHTIME value equals the SYNCHTIME field value in the subscription set table. The Capture program or an external program, such as IMS DataPropagator, updates this timestamp whether there are changes to be processed or not.

The Apply program uses this value when advanced conflict detection is selected for update-anywhere replication to ensure that the Capture program captures all outstanding changes for a replication source table.

SYNCHPOINT The SYNCHPOINT value equals the SYNCHPOINT field value in the subscription set table. This value is used to coordinate the pruning of CD tables. The Apply program sets this initial value to hex 0, indicating refresh. If the Apply program sets a nonzero value, the CD table can be eligible for pruning.
SOURCE_OWNER The owner of the source table or view.
SOURCE_TABLE The source from which data is being captured.
SOURCE_VIEW_QUAL Supports the view of physical tables by matching the similar column in the register table. This value is set to 0 for physical tables that are defined as sources and is greater than 0 for views that are defined as sources. This column is used to support multiple subscriptions for different source views with identical SOURCE_OWNER and SOURCE_TABLE column values.
APPLY_QUAL A unique identifier for a group of subscription sets. This case sensitive value is supplied by the user when defining a subscription set. This column is part of the foreign key from the subscription set table. See Subscription set table for more details.
SET_NAME An identifier for a group of subscription-set members. This value is supplied when you define a subscription set. This column is part of the foreign key from the subscription set table. See Subscription set table for more details.
CNTL_SERVER The database name of the control server for the Apply program updating this row.
TARGET_STRUCTURE A value that identifies the type of target table or view:

1
Source table

2
Not available

3
CCD table

4
Point-in-time table

5
Base aggregate table

6
Change aggregate table

7
Replica table

8
User copy table

9
Row-replica table
CNTL_ALIAS The DB2 Universal Database alias corresponding to the control server named in the CNTL_SERVER column.

Tuning parameters table

This table contains information that you can update by using SQL.

ASN.IBMSNAP_CCPPARMS

This table contains parameters that you can modify to control the performance of the Capture program. You can set these parameters to modify the length of time that you retain data in the CD table, the amount of time that the Capture program is allowed to lag in processing log records, how often data will be committed, and how often your CD and UOW tables are pruned. These modifications must be done manually because there are no DB2 DataPropagator processes that update this table after it is created. The Capture program can read your modifications only during its start processing; therefore, you should stop and start the Capture program if you want your modifications to take effect.

Table 40 provides a brief description of the columns in the tuning parameters table.

Table 40. Columns in the tuning parameters table
Column name Description
RETENTION_LIMIT The age limit, in minutes, for keeping CD table rows. This value is used with the SYNCHPOINT column of the pruning control table to determine the pruning limit. Any change data rows older than this value are pruned, even if they have not been copied to all targets. Transactions rejected after update conflict detection will have their changes pruned by RETENTION_LIMIT aging, not by normal pruning. The default value is 10 080 minutes (which equals seven days).
LAG_LIMIT The amount of time, in minutes, that the Capture program is allowed to lag in processing log records before it shuts itself down. During periods of high update frequency, full refreshes can be more economical than updates. The default value is 10 080 (which equals seven days).
COMMIT_INTERVAL The Capture program commit threshold, in seconds, for any inserts, updates, or deletes to the global UOW table and any pruning control tables. The default value is 30.

On systems that do not support ISOLATION (UR), this value should be less than the DB2 lock timeout value to prevent Apply program instances from timing out due to contention with the Capture program.

PRUNE_INTERVAL The Capture program commit threshold, in seconds, for automatic or manual pruning of CD and UOW rows that are no longer needed. The default value is 300. Values set lower save space, but increase processing costs. Values set higher require more CD and UOW table space, but decrease processing costs. There is no effect on table space or processing cost when the NOPRUNE option is selected.

Capture enqueue table (VM and VSE specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_CCPENQ

The Capture enqueue table is used in the VM and VSE environments only. This table is used to ensure that there is only one Capture program running per database.

Table 41 provides a list and a brief description of the Capture enqueue table column.

Table 41. Capture enqueue table column
Column name Description
LOCKNAME Unique name of the resource for this database.

Warm start table

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data. If you delete all the rows from this table, the Capture program will take longer to start because it must calculate a restart position based on the contents of the CD tables, the UOW table, and the control tables.

ASN.IBMSNAP_WARM_START

This table is created in the same database as the register table and contains information that enables the Capture program to restart from the last log or journal record read. Use the information in this table to avoid a full refresh of your system.

You do not have to recover this table if it is damaged. Simply create an empty table before warm starting the Capture program.

The following three tables show platform-specific layouts of the warm start table:


Table 42. Columns in the warm start table
Column name Description
SEQ The last captured sequence number from the log or journal record. Used for quickly restarting following a shutdown or failure.
AUTHTKN The DB2 token for the unit of work associated with the SEQ log or journal record. AUTHTKN length is 12 characters. If you supply a longer value, it is truncated.
AUTHID The DB2 authorization ID for the unit of work associated with the SEQ log or journal record. AUTHID length is 18 characters. If you supply a longer value, it is truncated.
CAPTURED A flag indicating whether or not this unit of work was captured.

Y
This unit of work was captured.

N
This unit of work was not captured.
UOWTIME The MVS clock, or Windows NT, HP-UX, Sun Solaris, OS/2, and AIX Coordinated Universal Time (UTC) clock indicating when the unit of work associated with the SEQ position was captured (source server timestamp).

Table 43. Columns in the warm start table for VM and VSE platforms
Column name Description
SEQ The last captured sequence number from the log or journal record. Used for quickly restarting following a shutdown or failure.
UOWID The unit-of-recovery ID from the log record header for this unit of work.
AUTHID The DB2 authorization ID for the unit of work associated with the SEQ log or journal record.
CAPTURED A flag indicating whether or not this unit of work was captured.

Y
This unit of work was captured.

N
This unit of work was not captured.
UOWTIME The VSE and VM time-of-day clock indicating when the unit of work associated with the SEQ log or journal record was captured (source server timestamp).

For AS/400, the warm start table is used to determine the starting time of the RCVJRNE (Receive Journal Entry) command. A row is inserted into the warm start table for each journal that is used by a replication source or a group of replication sources.

Table 44 provides a brief description of the columns in the warm start table for the AS/400 platform.

Table 44. Columns in the warm start table for AS/400 platform
Column name Description
JRN_LIB The library name of the journal.
JRN_NAME The name of the journal used by a source table. An asterisk followed by nine blanks in this column means that the source table is not currently in a journal. Therefore, it is not possible to capture data for this source table.
JRN_JOB_NUMBER The job number of the current job for a particular journal. If the journal is not active, this column contains the job number of the last job that was processed.
LOGMARKER The timestamp of the last processed journal entry.
UID A unique number that is used as a prefix for the contents of the IBMSNAP_UOWID column located in the UOW table.
SEQNBR The sequence number of the last processed journal entry.

Critical section table

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_CRITSEC

This table is used to prevent circular replication in an update-anywhere scenario.

You do not have to recover this table if it is damaged. Simply create an empty table.

Table 45 provides a brief description of the critical section table column.

Table 45. Critical section table column
Column name Description
APPLY_QUAL A unique identifier for a group of subscription sets. This value is supplied by the user when defining a subscription set. Each Apply process is started with an APPLY_QUAL value. This value is used during update-anywhere replication to prevent circular propagation of the changes made by the Apply program. See Subscription set table for more details.

Prune lock table

ASN.IBMSNAP_PRUNE_LOCK

The prune lock table is used to serialize the access of staging tables during a cold start or retention limit pruning. (Retention limit pruning is pruning after the retention limit is reached. The default retention limit is 10 080, which equals 7 days.) There are no rows in this table. The Capture and Apply programs use this table as a logical lock to serialize their operations during these critical phases. If a prune lock table does not exist, as on DB2 UDB Version 5 servers, the critical section (ASN.IBMSNAP_CRITSEC) table is locked instead. If a prune lock table does not exist, you can create one to increase the concurrency of update-anywhere subscriptions.

You do not have to recover this table if it is damaged. Simply create an empty table.

Trace table

ASN.IBMSNAP_TRACE

This table contains audit trail information for the Capture program. Everything that is done by the Capture program is recorded in this table, which makes it one of the best places to look if a problem with the Capture program occurs. If you cold start the Capture program, all of the trace table's entries are deleted, so you might want to save a copy of this table before you issue a cold start command.

The following two tables show platform-specific layouts of the trace table. Table 46 shows the layout for all platforms other than AS/400, and Table 47 shows the AS/400 layout.

Table 46. Columns in the trace table
Column name Description
OPERATION The type of Capture program operation, for example, initialization, capture, or error condition.
TRACE_TIME The time that a row is inserted into the trace table.
DESCRIPTION The message ID followed by the message text. The message can be informational or error. This column contains English-only text. See Capture and Apply messages for a detailed description of the correlating message ID in the DESCRIPTION column.

Table 47. Columns in the trace table for AS/400
Column name Description
OPERATION The type of Capture program operation, for example, initialization, capture, or error condition.
TRACE_TIME The time that a row is inserted into the trace table.
JOB_NAME The fully qualified name of the job that wrote this trace entry.

Position
Description

1-10
QDPRCTL5 or the journal job name

11-20
The ID of the user who started the Capture program

21-26
The job number
JOB_STR_TIME The starting time of the job named in the JOB_NAME column.
DESCRIPTION The message ID followed by the message text. The message ID is the first 7 characters of the DESCRIPTION column. The message text starts at the 9th position of the DESCRIPTION column. Refer to Replication messages for AS/400 for information about messages.

Apply-qualifier-cross-reference table (AS/400 specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_AUTHTKN

The Apply-qualifier-cross-reference table is used in the AS/400 environment only. This table is used during update-anywhere replication to keep track of the jobs run by a particular Apply qualifier. It is pruned by the Capture program based on the retention limit. The default retention limit is 10 080, which equals 7 days.

Table 48 provides a brief description of the columns in the apply-qualifier-cross-reference table.

Table 48. Columns in the apply-qualifier-cross-reference table
Column name Description
APPLY_QUAL An Apply qualifier, which is a unique identifier for a group of subscription sets. You supply this value when defining a subscription set. Each Apply process is started with an Apply qualifier. This value is used during update-anywhere replication to prevent circular propagation of the changes made by the Apply program. See Subscription set table for more details.
IBMSNAP_AUTHTKN The job name associated with a transaction. AUTHTKN length is 12 characters. If you supply a longer value, it is truncated. Capture for AS/400 matches this column with the name of the job that issued the transaction to determine if a transaction is issued by either the Apply program or a user application. If the names match, then Capture for AS/400 copies the value from the APPLY_QUAL column to the UOW row. If the names do not match, then Capture for AS/400 sets the APPLY_QUAL column of the UOW row to blank. This column is not automatically copied to other tables; you must select it and copy it as a user data column.
IBMSNAP_LOGMARKER The approximate commit time at the source server.

Register synchronization table

Important: Altering this table might result in wasteful pruning processing.

ASN.IBMSNAP_REG_SYNCH

There is an update trigger on this table that initiates an update of the SYNCHPOINT value for all the rows in the register table when the Apply program fetches data from a non-IBM data source.

Table 49 provides a brief description of the register synchronization table column.

Table 49. Register synchronization table column
Column name Description
TRIGGER_ME

Y
A trigger was initiated to update the SYNCHPOINT value for all rows in the register table.

Unit-of-work table

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_UOW

The unit-of-work (UOW) table ensures data integrity by recording transactions that were committed at the source server. The Apply program joins the UOW and CD table based on matching IBMSNAP_UOWID values to ensure that only committed changes are being copied. The results are ordered by the log or journal record sequence number of the change in the CD table within the committed units of work. If you cold start the Capture program, all of this table's entries are deleted.
For AS/400:Capture for AS/400 can start data capturing for only a subset of the replication sources. Therefore, Capture for AS/400 does not delete all the rows in the UOW table if you do a partial cold start.

The Capture program requires that there is one UOW table for each source server. The Capture program inserts one new row into this table for every log or journal record that commits changes to replication sources.
For AS/400:There are some user programs that do not use commitment control. In such cases, the Capture program arbitrarily inserts a new UOW row after a number of rows are written to the CD table. This artificial commitment boundary helps reduce the size of the UOW table.

The Capture program also prunes the UOW table based on information inserted into the pruning control table by the Apply program.
For AS/400:The UOW table is pruned by retention limits, not by the pruning control table information.

Table 50 provides a brief description of the columns in the UOW table.

Table 50. Columns in the UOW table
Column name Description
IBMSNAP_UOWID The unit-of-work identifier from the log record header for this unit of work.
IBMSNAP_COMMITSEQ The log record sequence number of the captured commit statement.
IBMSNAP_LOGMARKER The approximate commit time at the source server.
IBMSNAP_AUTHTKN The authorization token associated with the transaction. This ID is useful for database auditing. For DB2 Universal Database for OS/390, this column is the correlation ID. For DB2 Universal Database for AS/400, this column is the job name of the job that caused a transaction. This column is not automatically copied to other tables; you must select it and copy it as a user data column. This column can be selected as a user data column for a noncomplete CCD target table.
IBMSNAP_AUTHID The authorization ID associated with the transaction. It is useful for database auditing. AUTHID length is 18 characters. If you supply a longer value, it is truncated. For DB2 Universal Database for OS/390, this column is the primary authorization ID. For DB2 Universal Database for AS/400, this column has the name of the user profile ID under which the application that caused the transaction ran. This column holds a 10-character ID padded with blanks. This column is not automatically copied to other tables; you must select it and copy it as a user data column. This column can be selected as a user data column for a noncomplete CCD target table.
IBMSNAP_REJ_CODE This value is set only during update-anywhere replication if conflict detection is specified as standard or advanced when you define your replication source.

0
A transaction with no known conflict.

1
A transaction that contains a conflict where the same row in the source and replica tables have a change that was not replicated. When a conflict occurs, the transaction will be reversed at the replica table.

2
A cascade-rejection of a transaction dependent on a prior transaction having at least one same-row conflict. When a conflict occurs, the transaction will be reversed at the replica table.

3
A transaction that contains at least one referential-integrity constraint violation. Because this transaction violates the referential constraints defined on the source table, the Apply program will mark this subscription set as failed. Updates cannot be copied until the referential integrity definitions are corrected.

4
A cascade-rejection of a transaction dependent on a prior transaction having at least one constraint conflict.
IBMSNAP_APPLY_QUAL This column prevents circular replication during update-anywhere processing. It remains blank for local updates, but contains the name of the associated Apply program for updates that are made by the Apply program for an update-anywhere subscription set. The Capture program derives this value from the critical section table.

Change data table

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

CD

Change data (CD) tables record all changes made to a replication source. Committed, uncommitted, and incomplete changes are inserted as rows into the CD table. The CD table works with the UOW table to provide commit information. (See Staging data for more information.) Pruning of the CD table rows is coordinated by the pruning control table. (See Pruning control table for more information.)

CD tables are automatically created when you define a replication source. For each replication source that is enabled for data capture, there is one CD table. If you cold start the Capture program, all of the CD table's entries are deleted.

Manually changing the CD table is not recommended. However, the CD table can be a useful resource for problem determination. Knowing exactly what changes were committed or not committed can help you understand where the Capture program failed.

Recommendation: A unique ascending index is strongly recommended for the IBMSNAP_UOWID and IBMSNAP_INTENTSEQ columns.

Table 51 provides a list and a brief description of each of the columns in the CD table.

Table 51. Columns in the CD table
Column name Description
IBMSNAP_UOWID Unit-of-work ID for an update. The Apply program uses this column to join the CD table with the UOW table so that only committed changes are replicated.
IBMSNAP_INTENTSEQ Log or journal record sequence number that uniquely identifies a change. This value is globally ascending.
IBMSNAP_OPERATION Character value of I, U, or D, indicating an insert, update, or delete record.
DATA1 User column from source table specified when the replication source was defined.
AFTER-IMAGE User column from source table selected when defining a replication source. This column will have the same name, data type, and null attributes as the source column. The after-image column also contains the equivalent source table column value after the change is made.
BEFORE-IMAGE User column from source table selected when defining a replication source. This column will have the same name, data type, and null attributes as the source column. The name is the source column prefixed with the BEFORE_IMG_PREFIX value from the register table. This column contains the equivalent source table column value before the change was made.


Tables used at the control server

The control server is the DB2 system that you chose to hold your subscription definitions. The following section provides a brief description of the tables used at the control server and the columns in each table. If you are using the Control Center, these tables, which contain information about your subscription definitions, are automatically created when you define a subscription set if they do not already exist.

The subscription set, subscription-targets-member, subscription columns, subscription statements, row-replica, and subscription-schema-changes tables contain information about subscriptions. When a new subscription set is defined, the administration tools simultaneously update rows in the subscription set, subscription columns, subscription-targets-member, and subscription statements tables.

The subscription events and Apply trail tables are used by the Apply program to control and audit your data.

Subscription set table

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_SUBS_SET

The subscription set table lists all of the subscription sets defined at the control server and identifies the source and target server pairs that are processed as a group. Rows are inserted into this table when you create your subscription set definition.

Use this table to identify subscription sets that are defined.

Table 52 provides a brief description of the columns in the subscription set table.

Table 52. Columns in the subscription set table
Column name Description
APPLY_QUAL Uniquely identifies a group of subscription sets that are processed by the same Apply process. This user-specified value must be unique for the control server where the subscription set table is located. For update-anywhere, this value must be unique at the control server and at the source server. This value is case-sensitive. You must specify this value when you define a subscription set. See Defining replication subscription sets for more details.
SET_NAME Identifies a group of source and target tables (subscription-set members) that are processed by the Apply program as a group. This user-specified value must be unique within an Apply qualifier. Changes for subscription members in a set are processed in a single transaction during the Apply processing cycle.
WHOS_ON_FIRST The following values are used to control the order of processing in update-anywhere replication scenarios.

F
(first) The target table is the user table or parent replica. The source table is the dependent row-replica and, in the case of update conflicts between the source table and the target table, the source table will have its conflicting transactions rejected. F is not used for read-only subscriptions.

S
(second) The source table is the user table, parent replica, or other source. The target table is the dependent row-replica or other copy and, in the case of update conflicts between the source table and the target table, the target table will have its conflicting transactions rejected. S is used for all read-only subscriptions.
ACTIVATE The following values are flags set by either the administration tool (0 and 1) or by the Apply program (2).

0
The subscription set is deactivated.

1
The subscription set is active indefinitely.

2
The subscription set is used for a one-time-only subscription execution.
SOURCE_SERVER The database name of the source server where the source tables and views are defined.
SOURCE_ALIAS The DB2 Universal Database alias corresponding to the source server named in the SOURCE_SERVER column.
TARGET_SERVER The database name of the server where the target tables and views are defined.
TARGET_ALIAS The DB2 Universal Database alias corresponding to the target server named in the TARGET_SERVER column.
STATUS A value that represents in-progress and completed work status for the Apply program.

-1
A failed execution.

0
A successful subscription definition.

1
A pending or in-progress execution. Do not modify this definition or any rows related to this subscription set in other control tables.

2
A continuing execution of a single logical subscription set that was divided according to the MAX_SYNCH_MINUTES control column and is being serviced by multiple subscription cycles. Do not modify this row or any row related to this subscription set in other control tables.
LASTRUN The estimated time that the last subscription set began. The Apply program sets the LASTRUN value each time a subscription set is processed. It is the approximate time at the control server that the Apply program begins processing the subscription set.
REFRESH_TIMING Sets the timing between statement executions.

R
The Apply program uses the value in SLEEP_MINUTES to determine replication timing.

E
The Apply program checks the time value in the subscription events table to determine replication timing. Before any replication (change capture or full refresh) can begin, an event must occur.

B
Indicates that a subscription set has both relative and event timing specifications. Therefore, this subscription set can be eligible for a refresh based on either the timer or event timing criteria.
SLEEP_MINUTES Specifies the time (in minutes), of inactivity between subscription set processing when REFRESH_TIMING is R or B.
EVENT_NAME A unique character string used to represent an event. Use this identifier to update the subscription events table when you want to trigger replication for a subscription set.
LASTSUCCESS The control server timestamp for the beginning of the last successful processing of a subscription set.
SYNCHPOINT The Apply program uses the SYNCHPOINT value from the global row of the register table at the source server if GLOBAL_RECORD is Y. If data blocking is specified in the subscription-set definition, then the SYNCHPOINT value is the log or journal record sequence number of the last change applied during the Apply process.
SYNCHTIME The Capture program or an external program, such as IMS DataPropagator, updates this timestamp whether there are changes to be processed or not.

The Apply program uses this value when advanced conflict detection is selected for update-anywhere replication to ensure that the Capture program captured all outstanding changes for a replication source table.

MAX_SYNCH_MINUTES A time-threshold limit to regulate the amount of change data to fetch and apply during a subscription cycle. The Apply program breaks the subscription set processing into mini-cycles based on the IBMSNAP_LOGMARKER column in the UOW or CCD table at the source server and issues a COMMIT at the target server after each successful mini-cycle. The limit is automatically recalculated if the Apply program encounters a resource constraint that makes the set limit unfeasible. MAX_SYNCH_MINUTES values that are less than 1 will be treated the same as a MAX_SYNCH_MINUTES value equal to NULL.
AUX_STMTS The number of SQL statements that you define in the subscription statement table that can run before or after the Apply program processes a subscription set.
ARCH_LEVEL The architectural level of the definition contained in the row. This field identifies the rules under which a row was created. This level is defined by IBM, and for Version 7 is 0201.

Subscription-targets-member table

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_SUBS_MEMBR

This table or view contains information about the individual source and target table pairs defined for a subscription set. Rows are automatically inserted into this table when you create a subscription set member.

Use this table or view to identify a specific source and target table pair within a subscription set.

Table 53 provides a brief description of the columns in the subscription-targets-member table.

Table 53. Columns in the subscription-targets-member table
Column name Description
APPLY_QUAL Uniquely identifies a group of subscription sets that are processed by the same Apply process. This user-specified value must be unique for the control server where the subscription set table is located. For update-anywhere, this value must be unique at the control server and at the source server. This value is case-sensitive. You must specify this value when you define a subscription set.
SET_NAME Identifies a group of source or target table pairs (subscription-set members) that are processed by the Apply program as a group. This user-specified value must be unique within an Apply qualifier. Changes for subscription members in a set are processed in a single transaction during the Apply processing cycle.
WHOS_ON_FIRST The following values are used to control the order of processing in update-anywhere replication scenarios.

F
(first) The target table is the user table or parent replica. The source table is the dependent row-replica and, in the case of update conflicts between the source table and the target table, the source table will have its conflicting transactions rejected. F is not used for read-only subscriptions.

S
(second) The source table is the user table, parent replica, or other source. The target table is the dependent row-replica or other copy and, in the case of update conflicts between the source table and the target table, the target table will have its conflicting transactions rejected. S is used for all read-only subscriptions.
SOURCE_OWNER The owner of the source table or view.
SOURCE_TABLE The source from which data is being captured.
SOURCE_VIEW_QUAL Supports the view of physical tables by matching the similar column in the register table. This value is set to 0 for physical tables that are defined as sources and is greater than 0 for views that are defined as sources. This column is used to support multiple subscriptions for different source views with identical SOURCE_OWNER and SOURCE_TABLE column values.
TARGET_OWNER A qualifier for a target table or view.
TARGET_TABLE The target to which data is being applied.
TARGET_CONDENSED A flag indicating:

Y
For any given primary key, the target table shows only one row.

N
All changes must remain, retaining a complete update history.

A
The target table is a base aggregate or change aggregate tables.
TARGET_COMPLETE

A flag indicating:

Y
The target table contains a row for every primary key value of interest.

N
The target table contains some subset of rows of primary key values.

TARGET_STRUCTURE The structure of the target table:

1
User table

3
CCD table

4
Point-in-time table

5
Base aggregate table

6
Change aggregate table

7
Replica

8
User copy

9
Row-replica (Microsoft Jet specific)
PREDICATES Lists the predicates to be placed in a WHERE clause for the table in the TARGET_TABLE column. This WHERE clause creates a row subset of the source table. Predicates are recognized only when WHOS_ON_FIRST is set to S. The letter A is a predefined correlation-name for the physical source table used in a correlated subquery. Cannot contain an ORDER BY clause because the Apply program cannot generate an ORDER BY clause. Aggregate tables require a dummy predicate followed by a GROUP BY clause as a predicate.

Subscription columns table

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_SUBS_COLS

This table contains information about the columns of the subscription-set members being copied in a subscription set. The subscription columns table contains supplemental information to the subscription-targets-member table.

Rows are automatically inserted or deleted from this table when information contained in one or more columns of a source and target table pair is changed.

Use this table if you need information about specific columns in a subscription-set member.

Table 54 provides a brief description of the columns in the subscription columns table.

Table 54. Columns in the subscription columns table
Column name Description
APPLY_QUAL Identifies the Apply program for the platform instance that will run this subscription set. The value must be unique among all Apply processes maintaining dependent replicas of a user table or parent replica, and unique among all Apply processes sharing a common set of control tables. This value is case sensitive. You must specify this value when you define a subscription set.
SET_NAME Names a subscription set. This value is unique within an Apply qualifier.
WHOS_ON_FIRST The following values are used to control the order of processing in update-anywhere replication scenarios.

F
(first) The target table is the user table or parent replica. The source table is the dependent row-replica and, in the case of update conflicts between the source table and the target table, the source table will have its conflicting transactions rejected. F is not used for read-only subscriptions.

S
(second) The source table is the user table, parent replica, or other source. The target table is the dependent row-replica or other copy and, in the case of update conflicts between the source table and the target table, the target table will have its conflicting transactions rejected. S is used for all read-only subscriptions.
TARGET_OWNER A qualifier for a target table or view.
TARGET_TABLE The target to which data is being applied.
COL_TYPE

A flag indicating:

A
For an after-image column.

B
For a before-image column.

C
For a computed column without an SQL-column-function reference.

D
A DATALINK value or DATALINK indicator column.

F
For a computed column with an SQL-column-function reference.

L
A large object (LOB) column.

R
Signifies a relative record number column, provided by the system and used as a primary key column. Used only by DB2 DataPropagator for AS/400.

TARGET_NAME The name of the target table or view column. It does not need to match the source column name.

Internal CCD column names cannot be renamed. They must match the CD table column names.

IS_KEY

Y
The column is all or part of the primary key of the target (all condensed copies must have primary keys).

N
The column is not part of a key of the target.

COLNO The numeric location of the column in the original source, to be preserved relative to other user columns in displays and subscriptions.
EXPRESSION The source column name or an SQL expression representing the target column.

Subscription statements table

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data. The number of entries for a subscription should be reflected in ASN.IBMSNAP_SUBS_SET.AUX_STMTS. If AUX_SMTS is zero for a subscription set, the corresponding entries in the subscription statements table are ignored by the Apply program.

ASN.IBMSNAP_SUBS_STMTS

This table contains the user-defined SQL statements or stored procedure calls that will be executed before or after each subscription-set processing cycle. Execute immediately (EI) statements or stored procedures can be executed at the source or target server only. This table is populated when you define a subscription set that uses SQL statements or stored procedure calls.

Table 55 provides a brief description of the columns in the subscription statements table.

Table 55. Columns in the subscription statements table
Column name Description
APPLY_QUAL Uniquely identifies a group of subscription sets that are processed by the same Apply process. This user-specified value must be unique for the control server where the subscription set table is located. For update-anywhere, this value must be unique at the control server and at the source server. This value is case-sensitive. You must specify this value when you define a subscription set.
SET_NAME Identifies a group of source and target table pairs (subscription-set members) that are processed by the Apply program as a group. This user-specified value must be unique within an Apply qualifier. Changes for subscription-set members in a set are processed in a single transaction during the Apply processing cycle.
WHOS_ON_FIRST The following values are used to control the order of processing in update-anywhere replication scenarios.

F
(first) The target table is the user table or parent replica. The source table is the dependent row-replica and, in the case of update conflicts between the source table and the target table, the source table will have its conflicting transactions rejected. F is not used for read-only subscriptions.

S
(second) The source table is the user table, parent replica, or other source. The target table is the dependent row-replica or other copy and, in the case of update conflicts between the source table and the target table, the target table will have its conflicting transactions rejected. S is used for all read-only subscriptions.
BEFORE_OR_AFTER A value indicating:

A
The statement is executed at the target server after all of the answer-set rows are applied.

B
The statement is executed at the target server before any of the answer-set rows are applied.

S
The statement is executed at the source server before opening the answer-set cursors.

G
The statement is executed at the source server before opening any cursors to either fetch answer-set rows or fetch replication source details.
STMT_NUMBER Defines the relative order of execution within the scope of BEFORE_OR_AFTER.
EI_OR_CALL A value indicating:

E
The SQL statement should be run as an EXEC SQL EXECUTE IMMEDIATE.

C
The SQL statement contains a stored procedure name to run as an EXEC SQL CALL.
SQL_STMT One of the following values:

Statement
The SQL statement should run as an EXEC SQL EXECUTE IMMEDIATE statement if EI_OR_CALL is E.

Procedure
The 8-byte name of an SQL-stored procedure, without parameters or the CALL keyword, that runs as an EXEC SQL CALL statement if EI_OR_CALL is C.
ACCEPT_SQLSTATES One to ten 5-byte SQLSTATE values that you specified when you defined the subscription set. These non-zero values are accepted by the Apply program as a successful execution. Any other values will cause a failed execution.

Row-replica-target-list table (Microsoft Jet specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_SUBS_TGTS

This table is necessary to identify when a member has been deleted from a subscription set for a Microsoft Jet database target, so that the row-replica table can be deleted from the Microsoft Jet database. The row-replica-target-list table allows DataPropagator for Microsoft Jet to maintain a list of known row-replica tables in a stable DB2 or DataJoiner database. DataPropagator for Microsoft Jet uses this information during schema analysis to determine if any row-replica tables should be deleted because the corresponding subscription-set member was dropped since the last synchronization.

Table 56 provides a brief description of the columns in the row-replica-target-list table.

Table 56. Columns in the row-replica-target-list table
Column name Description
APPLY_QUAL Uniquely identifies a group of subscription sets that are processed by the same Apply process. This user-specified value must be unique for the control server where the subscription set table is located. For update-anywhere, this value must be unique at the control server and at the source server. This value is case-sensitive. You must specify this value when you define a subscription set.
SET_NAME Identifies a group of source and target table pairs (subscription-set members) that are processed by the Apply program as a group. This user-specified value must be unique within an Apply qualifier.
WHOS_ON_FIRST The following values are used to control the order of processing in update-anywhere replication scenarios.

F
(first) The target table is the user table or parent replica. The source table is the dependent row-replica and, in the case of update conflicts between the source table and the target table, the source table will have its conflicting transactions rejected. F is not used for read-only subscriptions.

S
(second) The source table is the user table, parent replica, or other source. The target table is the dependent row-replica or other copy and, in the case of update conflicts between the source table and the target table, the target table will have its conflicting transactions rejected. S is used for all read-only subscriptions.
TARGET_OWNER A qualifier for a target table or view.
TARGET_TABLE The target to which data is being applied.
LAST_POSTED This column is the timestamp of when this row was inserted into the table. This column is for informational purposes only.

Subscription-schema-changes table (Microsoft Jet specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

ASN.IBMSNAP_SCHEMA_CHG

This table allows DataPropagator for Microsoft Jet to determine if some relevant schema change has occurred since its last synchronization. If a modification is made, DataPropagator for Microsoft Jet will drive a thorough analysis of the replication control information. DataPropagator for Microsoft Jet will then create or drop row-replica tables, or columns in row-replica tables, to automatically converge the Microsoft Jet database schema with the schema described by the replication control information. This schema convergence occurs before data synchronization, so that new columns and new tables are copied.

Table 57 provides a brief description of the columns in the subscription-schema-changes table.

Table 57. Columns in the subscription-schema-changes table
Column name Description
APPLY_QUAL Uniquely identifies a group of subscription sets that are processed by the same Apply process. This user-specified value must be unique for the control server where the subscription set table is located. For update-anywhere, this value must be unique at the control server and at the source server. This value is case-sensitive. You must specify this value when you define a subscription set.
SET_NAME Identifies a group of source and target table pairs (subscription-set members) that are processed by the Apply program as a group. This user-specified value must be unique within an Apply qualifier. Changes for subscription members in a set are processed in a single transaction at the target site during the Apply processing cycle.
LAST_CHANGED This column is the timestamp of when this row was last changed in this table. This column is for informational purposes only.

Subscription events table

This table contains information that you update using SQL.

ASN.IBMSNAP_SUBS_EVENT

This table contains information about the event triggers that are copied in a subscription set. The subscription events table contains event names and timestamps associated with the event names. You insert a row into this table when you create a new event to start an Apply process. See Event timing.

Table 58 provides a brief description of the columns in the subscription events table.

Table 58. Columns in the subscription events table
Column name Description
EVENT_NAME When you replicate events between systems, this column contains a globally unique character string in a global name space configuration. Otherwise, this column contains a control server unique character string.
EVENT_TIME A control server timestamp of a current or future posting time. User applications signalling replication events provide the values in this column.
END_OF_PERIOD A source server timestamp value that acts like an upper boundary. Any transactions that are committed after this period are not replicated until a later event is posted.

The only way to prevent eligible change data from replicating during a subscription cycle is to make sure that the value in this column is less than the CURRENT TIMESTAMP value at the source server.

A unique index on EVENT_NAME and EVENT_TIME is created automatically by the administration tool or by the DPCNTL file.

Apply trail table

ASN.IBMSNAP_APPLYTRAIL

The Apply trail table contains audit trail information for the Apply program. This table records a history of updates performed against subscriptions. It is a repository of diagnostic and performance statistics. The Apply trail table is one of the best places to look if a problem occurs with the Apply program. Because this table is not automatically pruned, it is up to you to do so.

Table 59 provides a brief description of the columns in the Apply trail table.

Table 59. Columns in the Apply trail table
Column name Description
APPLY_QUAL Uniquely identifies a group of subscription sets that are processed by the same Apply process. This user-specified value must be unique for the control server where the subscription set table is located. For update-anywhere, this value must be unique at the control server and at the source server. This value is case-sensitive. You must specify this value when you define a subscription set.
SET_NAME Identifies a group of source and target table pairs (subscription-set members) that are processed by the Apply program as a group. This user-specified value must be unique within an Apply qualifier. Changes for subscription members in a set are processed in a single transaction at the target site during the Apply program processing cycle.
WHOS_ON_FIRST The following values are used to control the order of processing in update-anywhere replication scenarios.

F
(first) The target table is the user table or parent replica. The source table is the dependent row-replica and, in the case of update conflicts between the source table and the target table, the source table will have its conflicting transactions rejected. F is not used for read-only subscriptions.

S
(second) The source table is the user table, parent replica, or other source. The target table is the dependent row-replica or other copy and, in the case of update conflicts between the source table and the target table, the target table will have its conflicting transactions rejected. S is used for all read-only subscriptions.
ASNLOAD Contains one of the following values:

Y
Indicates that the Apply program was started and that the LOADXit parameter and the ASNLOAD exit routine were called to perform a full refresh on a subscription set.

N
Indicates that the ASNLOAD exit routine was not called because either a full refresh was not needed or the Apply program was not started with the LOADXit parameter.

NULL
Indicates that an Apply program error occurred before the Apply program could determine whether the ASNLOAD exit routine should be called.
MASS_DELETE A mass delete is always triggered during a full refresh. The following are values for this column:

Y
Indicates that a full refresh was done for a subscription set.

N
Indicates that a full refresh was not done for a subscription set.

NULL
Indicates that an error occurred before the Apply program could determine whether or not a full refresh was needed.
EFFECTIVE_MEMBERS The number of subscription-set members that are changed during an Apply cycle, either by a full refresh or by the replication of inserts, updates, and deletes. This number ranges between zero and the number of defined subscription-set members.
SET_INSERTED The total number of rows inserted into subscription-set members during the subscription cycle.
SET_DELETED The total number of rows deleted from subscription-set members during the subscription cycle.
SET_UPDATED The total number of rows updated in subscription-set members during the subscription cycle.
SET_REWORKED The Apply program reworks changes under the following conditions:
  • If an insert fails because the row already exists in the target table, the Apply program converts the insert to an update of the existing row.
  • If the update fails because the row does not exist in the target table, the Apply program converts the update to an insert.
SET_REJECTED_TRXS The total number of transactions rejected due to an update-anywhere conflict. This column is used only for update-anywhere subscription sets where conflict detection is defined as standard or advanced.
STATUS A value that represents in-progress and completed work status for the Apply program.

-1
A failed execution.

0
A successful subscription definition.

1
A pending or in-progress execution. Do not modify this definition or any rows related to this subscription set in other control tables.

2
A continuing execution of a single logical subscription that was divided according to the MAX_SYNCH_MINUTES control column and is being serviced by multiple subscription cycles. Do not modify this row or any row related to this subscription set in other control tables.
LASTRUN The estimated time that the last subscription began. The Apply program sets the LASTRUN value each time a subscription set is processed. It is the approximate time at the control server that the Apply program begins processing the subscription set.
LASTSUCCESS The control server timestamp for the beginning of the last successful processing of a subscription set.
SYNCHPOINT The Apply program uses the SYNCHPOINT value from the global row of the register table at the source server if GLOBAL_RECORD is Y. If data blocking is specified in the subscription definition, then the SYNCHPOINT value is the log or journal record sequence number of the last change applied during the Apply process.
SYNCHTIME The Capture program or an external program, such as IMS DataPropagator, updates this timestamp whether there are changes to be processed or not.

The Apply program uses this value when advanced conflict detection is selected for update-anywhere replication to ensure that the Capture program has captured all outstanding changes for a replication source table.

SOURCE_SERVER The database name of DB2 for OS/390, DB2 for VSE, and DB2 for VM where the source tables and views are defined.
SOURCE_ALIAS The DB2 Universal Database alias corresponding to the source server named in the SOURCE_SERVER column.
SOURCE_OWNER The owner of the source table or view.
SOURCE_TABLE The source from which data is being captured.
SOURCE_VIEW_QUAL Supports the view of physical tables by matching the similar column in the register table. This value is set to 0 for physical tables that are defined as sources and is greater than 0 for views that are defined as sources. This column is used to support multiple subscriptions for different source views with identical SOURCE_OWNER and SOURCE_TABLE column values.
TARGET_SERVER The database name of the target server where the target tables and views are defined.
TARGET_ALIAS The DB2 Universal Database alias corresponding to the target server named in the TARGET_SERVER column.
TARGET_OWNER A qualifier for a target table or view.
TARGET_TABLE The target to which data is being applied.
SQLSTATE The SQL state code for a failed execution. Otherwise, NULL.
SQLCODE The SQL error code for a failed execution. Otherwise, NULL.
SQLERRP The database product identifier of the server where an SQL error occurred that caused a failed execution. Otherwise, NULL.
SQLERRM The SQL error information for a failed execution. Otherwise, NULL.
APPERRM The Apply error message ID and text for a failed execution. Refer to Capture and Apply messages and Replication messages for AS/400 for detailed message information. Otherwise, NULL.

Apply job table (AS/400 specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

IBMSNAP_APPLY_JOB

This AS/400-specific table is used to guarantee a unique APPLY_QUAL value for all instances of the Apply program running at the control server. A row is added to this table every time an instance of the Apply program is started. If you start a new instance of the Apply program with an APPLY_QUAL value that already exists, the start command fails.

Table 60 provides a brief description of the columns in the Apply job table.

Table 60. Columns in the Apply job table
Column name Description
APPLY_QUAL A unique identifier for a group of subscription sets. This value is supplied by the user when defining a subscription set. Each instance of the Apply program is started with an APPLY_QUAL. This value is used during update-anywhere replication to prevent circular replication of the changes made by the Apply program. See the subscription set table on page Subscription set table for more details.
CONTROL_SERVER Name of the database where the control tables and view are defined.
USER_NAME Name of the user who started a new instance of the Apply program
JOB_NAME The fully qualified name of the job that wrote this trace entry:
  • position 1-10: APPLY_QUAL, truncated to 10 characters if necessary
  • position 11-20: The ID of the user who started the Apply program
  • position 21-26: The job number
JOB_NUMBER The job number of the current job for a particular journal. If the journal is not active, this column contains the job number of the last job that was processed.


Tables used at the target server

The following section provides a brief description of the types of target tables used at the target server and the columns in each table.

User copy table

Important: If you use SQL to update this table, you run the risk of losing your updates when a full refresh is performed by the Apply program.

userid.target_table

The user copy table is identical to the point-in-time target table with the exception of the IBMSNAP_LOGMARKER column, which is not included in the user copy table.

Except for subsetting and data enhancement, a user copy table reflects a valid state of the source table, but not necessarily the most current state. References to user copy tables (or any other type of target table) reduce the risk of contention problems that results from a high volume of direct access to the source tables. Accessing local user copy tables is much faster than using the network to access remote source tables for each query.

Table 61 provides a brief description of the columns in the user copy table.

Table 61. Columns in the user copy table
Column name Description
user key columns The primary key of the target table, although it is not necessarily a component of the primary key of the source table. You can use predicates to prevent a NULL value from being assigned to the key fields of any copies.
user nonkey columns The nonkey data columns from the source table or view. The columns from the source table do not need to match these columns, but the data types must match.
user computed columns User-defined columns that are derived from SQL expressions. You can use computed columns with SQL functions to convert source data types to different target data types.

Point-in-time table

Important: If you use SQL to update this table, you run the risk of losing your updates when a full refresh is performed by the Apply program.

userid.target_table

The point-in-time table is similar to the user copy table, but contains an additional system column (IBMSNAP_LOGMARKER) containing the approximate timestamp of when the particular row was inserted or updated at the source system. Otherwise, a point-in-time table is much like a past image of the source table. Point-in-time copies reflect a valid state of the source table, but not necessarily the most current state.

Table 62 provides a brief description of the columns in the point-in-time table.

Table 62. Columns in the point-in-time table
Column name Description
user key columns The primary key of the target table, although it is not necessarily a component of the primary key of the source table. You can use predicates to prevent a NULL value from being assigned to the key fields of any copies.
user nonkey columns The nonkey data columns from the source table or view. The columns from the source table do not need to match these columns, but the data types must match.
user computed columns User-defined columns that are derived from SQL expressions. You can use computed columns with SQL functions to convert source data types to different target data types.
IBMSNAP_LOGMARKER The approximate commit time at the source server. This column is NULL following a full refresh.

Consistent-change-data table

This table contains information that you can update by using SQL.

userid.target_table

CCD tables are staging tables that contain committed change data (for details, see Staging data). Maintaining CCD tables requires updating the CCD_OLD_SYNCHPOINT and SYNCHPOINT columns of the register table.

The CCD table can be:

For CCD tables:

The originally captured operation code in the IBMSNAP_OPERATION column and the sequence numbers IBMSNAP_INTENTSEQ and IBMSNAP_COMMITSEQ are included in CCD tables. For condensed CCD tables, only the latest values are kept for each row.

Special cases for condensed CCD tables

Because condensed CCD tables must have a unique index:

Table 63 provides a brief description of the columns in the CCD table.

Table 63. Columns in the CCD table
Column name Description
IBMSNAP_INTENTSEQ Log or journal record sequence number that uniquely identifies a change. This value is globally ascending.
IBMSNAP_OPERATION Character value of I, U, or D, indicating an insert, update, or delete record.
IBMSNAP_COMMITSEQ The log record sequence number of the captured commit statement. This value groups inserts, updates, and deletes by the original transactions for the source table.
IBMSNAP_LOGMARKER The approximate commit time at the source server.
user key columns The primary key of the target table, although it is not necessarily a component of the primary key of the source table. You can use predicates to prevent a NULL value from being assigned to the key fields of any copies.
user nonkey columns The nonkey data columns from the source table. The columns from the source table do not need to match these columns, but the data types must match.
user computed columns User-defined columns that are derived from SQL expressions. You can use computed columns with SQL functions to convert source data types to different target data types.

Replica table

This table contains information that you can update by using SQL.

userid.target_table

The replica must have the same primary key as the source table. Because of these similarities, the replica table can be used as a source table for further subscription sets, making the target server a source server as well. Converting a target table into a source table is done automatically when you define a replica target type and specify the CHANGE DATA CAPTURE attribute. See Defining subscription sets for update-anywhere replication for more information.

Table 64 provides a brief description of the columns in the replica table.

Table 64. Columns in the replica table
Column name Description
user key columns The primary key of the target table, although it is not necessarily a component of the primary key of the source table. You can use predicates to prevent a NULL value from being assigned to the key fields of any copies.
user nonkey columns The nonkey data columns from the source table. The columns from the source table do not need to match these columns, but the data types must match.

Base aggregate table

userid.target_table

Base aggregate tables are target tables that contain data aggregated from a source table. Functions are performed on data located at the source table, and the result of the function is inserted as a row in the base aggregate table.

For base aggregate tables:

Table 65 provides a brief description of the columns in the base aggregate table.

Table 65. Columns in the base aggregate table
Column name Description
user columns Columns computed from the source table.
IBMSNAP_LLOGMARKER The current source server timestamp when the data was last aggregated.
IBMSNAP_HLOGMARKER The current source server timestamp when the data was last aggregated.

Change aggregate table

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

userid.target_table

A change aggregate table is a target table that contains data aggregations based on changes from a source table. This table is similar to the base aggregate table, except that the functions being performed at the source table are done only for changes that occur during a specific time interval. The results of these functions are inserted as rows into the change aggregate table. Before-image user data columns must be nullable in change aggregate tables.

Table 66 provides a brief description of the columns in the change aggregate table.

Table 66. Columns in the change aggregate table
Column name Description
user key columns The primary key of the target table, although it is not necessarily a component of the primary key of the source table. You can use predicates to prevent a NULL value from being assigned to the key fields of any copies.
user nonkey columns The nonkey data columns from the source table. The columns from the source table do not need to match these columns, but the data types must match.
user computed columns User-defined columns that are derived from SQL expressions. You can use computed columns with SQL functions to covert source data types to different target data types.
IBMSNAP_LLOGMARKER The oldest IBMSNAP_LOGMARKER or IBMSNAP_LLOGMARKER value present in the (CD+UOW) or CCD table rows being aggregated.
IBMSNAP_HLOGMARKER The newest IBMSNAP_LOGMARKER or IBMSNAP_HLOGMARKER value present in the (CD+UOW) or CCD table rows being aggregated.

Row-replica table (Microsoft Jet specific)

Important:This table contains information that you can update by using SQL.

userid.target_table

This table is an update-anywhere replica table maintained by DataPropagator for Microsoft Jet. Conflicts are detected row by row, not transaction by transaction, as they are for replica tables. Row-replica is the only type of target table supported by DataPropagator for Microsoft Jet. The source table can be a DB2, Oracle, Sybase, Informix, or Microsoft SQL Server user table, or a DB2 replica. The source can also be a view of a DB2 user table or replica table, including a join view.

Table 67 provides a brief description of the columns in the row-replica table.

Table 67. Columns in the row-replica table
Column name Description
user key columns The primary key of the target table, although it is not necessarily a component of the primary key of the source table. You can use predicates to prevent a NULL value from being assigned to the key fields of any copies.
user nonkey columns The nonkey data columns from the source table. The columns from the source table do not need to match these columns, but the data types must match.

Conflict table (Microsoft Jet specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

IBMSNAP_<target name>_CONFLICT

This table is a conflict table for tracking synchronization conflicts and errors. This Microsoft Jet database control table mimics Microsoft's conflict tables. This table contains the conflict loser's row data. The columns are the same as the corresponding row-replica table. This table can have more than one row. The conflict table is created along with the row-replica table in the Microsoft Jet database and dropped when the row-replica table is dropped.

Table 68 provides a brief description of the columns in the conflict table.

Table 68. Columns in the conflict table
Column name Description
target name The corresponding row-replica table's name.
column names of row-replica A list of column names found in the corresponding row-replica table.

Error information table (Microsoft Jet specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

IBMSNAP_ERROR_INFO

This table identifies the row-replica table and row that caused the error. This table can have more than one row. The error information table is created along with the Microsoft Jet database and never dropped.

Table 69 provides a brief description of the columns in the error information table.

Table 69. Columns in the error information table
Column name Description
TableName The name of the row-replica table that is the source of the row that caused the error.
RowGuid The GUID of the row that caused the error.
Operation One of the following commands to identify the operation that caused the error: INSERT, UPDATE, or DELETE.
Reason The DB2 DataPropagator error message number.

Error messages table (Microsoft Jet specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

IBMSNAP_ERROR_MESSAGE

This table identifies the nature of an error. It contains the error code and error message. This table can have more than one row. The error messages table is created along with the Microsoft Jet database and never dropped.

Table 70 provides a brief description of the columns in the error messages table.

Table 70. Columns in the error messages table
Column name Description
Reason The DB2 DataPropagator error message number.
ReasonText The DB2 DataPropagator error message text.

Error-side-information table (Microsoft Jet specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

IBMSNAP_SIDE_INFO

This table is a conflict table for tracking synchronization conflicts and errors. This Microsoft Jet database control table mimics Microsoft's conflict tables. This table contains the names of the conflict tables created by DataPropagator for Microsoft Jet.

Table 71 provides a brief description of the error-side-information table column.

Table 71. Error-side-information table column
Column name Description
ConflictTableName The conflict table name created by DataPropagator for Microsoft Jet.

Key string table (Microsoft Jet specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

IBMSNAP_GUID_KEY

This table maps the Microsoft Jet table names and row identifiers to primary key values when the following changes occur:

When DataPropagator for Microsoft Jet replicates delete actions to another Microsoft Jet database, only the internal row identifier is sent. To replicate delete actions outside of the Microsoft Jet environment, DataPropagator for Microsoft Jet needs to replicate a searched delete, with predicates referencing primary key values. The key string table allows DataPropagator for Microsoft Jet to maintain the key values needed to replicate a delete to an RDBMS, even after the row is physically deleted from the row-replica table.

Table 72 provides a brief description of the columns in the key string table.

Table 72. Columns in the key string table
Column name Description
RowReplicaname Identifies the row-replica table where the row was inserted.
s_GUID Identifies the row in the specific row-replica table.
key_string The string of "and-ed" DB2 SQL predicates identifying the key columns and their row values, with character constants delimited by single quotation marks. The column names are taken from the row-replica definition and can contain uppercase letters, lowercase letters or both. The constant values are taken from the rows themselves and the string values can contain uppercase letters, lowercase letters, numeric characters, or any combination of the three. Microsoft Jet database supports ASCII, so the string constants can contain single- or double-byte characters. For example:
COL1=(character) AND COL2=(character)

Synchronization generations table (Microsoft Jet specific)

Important: Do not use SQL to update this table. Altering this table inappropriately can cause unexpected results and loss of data.

IBMSNAP_S_GENERATION

This table is used to prevent cyclic updates from replicating back to the RDBMS from a Microsoft Jet database. When DB2 is the target, this function is accomplished in a different way, using the APPLY_QUAL column of the critical section table, which results in the Capture Program posting to the APPLY_QUAL column of the UOW table.

The s_GENERATION column is maintained by Microsoft Jet and set to the same generation number as any other updates made since the last synchronization. If synchronization is successful, the synchronization generations table will contain one row whose Update_Type value is F.

Due to the risk of partial failures during a DataPropagator for Microsoft Jet synchronization cycle, and because the WHOS_ON_FIRST = S flow is handled before the WHOS_ON_FIRST = F flow, multiple RDBMS-to-Jet generations can be posted before any Microsoft Jet database changes replicate to the RDBMS. In such a case, there is the possibility that a list of s_GENERATION values will need to be skipped over when determining which s_GENERATION of changes needs to be replicated to the RDBMS.

Table 73 provides a brief description of the columns in the synchronization generations table.

Table 73. Synchronization generations table
Column name Description
Update_Type A value that indicates whether a generation of changes is:

L
Local to the Microsoft Jet database

F
Foreign
JetSynchtime This is a dummy column, set to the time of a forced Microsoft Jet database synchronization.


[ Top of Page | Previous Page | Next Page ]