Ids Erp Bookmap
Ids Erp Bookmap
Informix
Version 11.50
IBM Informix
Enterprise Replication Guide
SC27-3610-02
Informix Product Family
Informix
Version 11.50
IBM Informix
Enterprise Replication Guide
SC27-3610-02
Note
Before using this information and the product it supports, read the information in “Notices” on page J-1.
Chapter 3. Selecting the Enterprise Replication System and Network Topology . . . . 3-1
Primary-Target Replication System . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1
Primary-Target Data Dissemination . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1
Data Consolidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
Workload Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
Workflow Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
Primary-Target Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
Update-Anywhere Replication System . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4
Conflict Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
Conflict Resolution Rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6
Conflict Resolution Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14
Choosing a Replication Network Topology . . . . . . . . . . . . . . . . . . . . . . . . 3-14
Fully Connected Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15
Hierarchical Routing Topology Terminology . . . . . . . . . . . . . . . . . . . . . . . 3-15
Hierarchical Tree Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16
Forest of trees topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-17
Chapter 6. Defining Replication Servers, Replicates, Participants, and Replicate Sets 6-1
Starting Database Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1
Defining Replication Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1
Customizing the Replication Server Definition . . . . . . . . . . . . . . . . . . . . . . 6-2
Defining Replicates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3
Defining Participants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3
Defining Master Replicates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-4
Defining Shadow Replicates . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-6
Specifying Conflict Resolution Rules and Scope . . . . . . . . . . . . . . . . . . . . . . 6-7
Specifying Replication Frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-7
Setting Up Failed Transaction Logging . . . . . . . . . . . . . . . . . . . . . . . . . 6-8
Replicating Only Changed Columns . . . . . . . . . . . . . . . . . . . . . . . . . . 6-8
Using the IEEE Floating Point or Canonical Format . . . . . . . . . . . . . . . . . . . . . 6-9
Enabling Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-10
Defining Replicate Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-10
Exclusive Replicate Sets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-10
Non-Exclusive Replicate Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-11
Customizing the Replicate Set Definition . . . . . . . . . . . . . . . . . . . . . . . . 6-11
Initially Synchronizing Data Among Database Servers . . . . . . . . . . . . . . . . . . . . 6-12
Using Templates to Set Up Replication. . . . . . . . . . . . . . . . . . . . . . . . . . 6-13
Defining Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-13
Realizing Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-13
Contents v
Deleting Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-12
Managing Replication Server Network Connections . . . . . . . . . . . . . . . . . . . . . 7-12
Viewing Network Connection Status . . . . . . . . . . . . . . . . . . . . . . . . . 7-12
Dropping the Network Connection . . . . . . . . . . . . . . . . . . . . . . . . . . 7-12
Reestablishing the Network Connection . . . . . . . . . . . . . . . . . . . . . . . . 7-13
Resynchronizing Data among Replication Servers . . . . . . . . . . . . . . . . . . . . . . 7-13
Performing Direct Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . 7-14
Checking Consistency and Repairing Inconsistent Rows . . . . . . . . . . . . . . . . . . . 7-15
Performing a Repair Job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-18
Repairing Failed Transactions with ATS and RIS Files. . . . . . . . . . . . . . . . . . . . 7-19
Resynchronizing Data Manually . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-20
Alter, Rename, or Truncate Operations during Replication . . . . . . . . . . . . . . . . . . . 7-21
Adding a Replicated Column . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-22
Dropping a Replicated Column . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-22
Modifying the Data Type or Size of a Replicated Column . . . . . . . . . . . . . . . . . . 7-23
Changing the Name of a Replicated Column, Table, or Database . . . . . . . . . . . . . . . . 7-24
Considerations for Changing or Recreating Primary Key Columns . . . . . . . . . . . . . . . 7-25
Attaching a New Fragment to a Replicated Table . . . . . . . . . . . . . . . . . . . . . 7-25
Remastering a Replicate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-25
Part 3. Appendixes
Contents vii
CDR_SERIAL Configuration Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . B-8
CDR_SUPPRESS_ATSRISWARN Configuration Parameter . . . . . . . . . . . . . . . . . . . B-9
ENCRYPT_CDR Configuration Parameter . . . . . . . . . . . . . . . . . . . . . . . . . B-9
ENCRYPT_CIPHERS Configuration Parameter . . . . . . . . . . . . . . . . . . . . . . . B-10
ENCRYPT_MAC Configuration Parameter . . . . . . . . . . . . . . . . . . . . . . . . B-11
ENCRYPT_MACFILE Configuration Parameter . . . . . . . . . . . . . . . . . . . . . . . B-12
ENCRYPT_SWITCH Configuration Parameter . . . . . . . . . . . . . . . . . . . . . . . B-13
CDR_ALARMS Environment Variable . . . . . . . . . . . . . . . . . . . . . . . . . . B-13
CDR_ATSRISNAME_DELIM Environment Variable . . . . . . . . . . . . . . . . . . . . . B-13
CDR_DISABLE_SPOOL Environment Variable . . . . . . . . . . . . . . . . . . . . . . . B-14
CDR_LOGDELTA Environment Variable . . . . . . . . . . . . . . . . . . . . . . . . . B-14
CDR_PERFLOG Environment Variable . . . . . . . . . . . . . . . . . . . . . . . . . B-15
CDR_RMSCALEFACT Environment Variable . . . . . . . . . . . . . . . . . . . . . . . B-15
CDR_ROUTER Environment Variable . . . . . . . . . . . . . . . . . . . . . . . . . . B-15
CDRSITES_10X Environment Variable . . . . . . . . . . . . . . . . . . . . . . . . . . B-16
CDRSITES_731 Environment Variable . . . . . . . . . . . . . . . . . . . . . . . . . . B-17
CDRSITES_92X Environment Variable . . . . . . . . . . . . . . . . . . . . . . . . . . B-18
Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J-1
Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J-3
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X-1
Contents ix
x IBM Informix Enterprise Replication Guide
Introduction
About this publication
This publication describes IBM® Informix® Enterprise Replication and the concepts
of data replication. This publication explains how to design your replication
system, as well as administer and manage data replication throughout your
enterprise.
This section discusses the intended audience and the associated software products
that you must have to use Enterprise Replication.
Types of Users
This publication is for database server administrators and assumes that you have
the following background:
v A working knowledge of your computer, your operating system, and the utilities
that your operating system provides
v Some experience working with relational databases or exposure to database
concepts
v Some experience with database server administration, operating- system
administration, and network administration
The examples in this publication are written with the assumption that you are
using the default locale, en_us.8859-1. This locale supports U.S. English format
conventions for date, time, and currency. In addition, this locale supports the ISO
8859-1 code set, which includes the ASCII code set plus many 8-bit characters such
as é, è, and ñ.
If you plan to use nondefault characters in your data or your SQL identifiers, or if
you want to conform to the nondefault collation rules of character data, you need
to specify the appropriate nondefault locale.
For instructions on how to specify a nondefault locale, additional syntax, and other
considerations related to GLS locales, see the IBM Informix GLS User's Guide.
Demonstration Databases
The DB-Access utility, which is provided with your IBM Informix database server
products, includes one or more of the following demonstration databases:
v The stores_demo database illustrates a relational schema with information about
a fictitious wholesale sporting-goods distributor. Many examples in IBM
Informix publications are based on the stores_demo database.
v The superstores_demo database illustrates an object-relational schema. The
superstores_demo database contains examples of extended data types, type and
table inheritance, and user-defined routines.
The scripts that you use to install the demonstration databases reside in the
$INFORMIXDIR/bin directory on UNIX platforms and in the
%INFORMIXDIR%\bin directory in Windows environments.
The following changes and enhancements are relevant to this publication. For a
comprehensive list of all new features for this release, see the IBM Informix Getting
Started Guide.
Table 1. What's New in IBM Informix Enterprise Replication Guide for version 11.50.xC9
Overview Reference
Easier setup of faster consistency checking for Enterprise “Indexing the ifx_replcheck Column” on page 7-18
Replication
Table 2. What's New in IBM Informix Enterprise Replication Guide for version 11.50.xC8
Overview Reference
New editions and product names For more information about the Informix product family,
go to http://www.ibm.com/software/data/informix/.
IBM Informix Dynamic Server editions were withdrawn
and new Informix editions are available. Some products
were also renamed. The publications in the Informix
library pertain to the following products:
v IBM Informix database server, formerly known as IBM
Informix Dynamic Server (IDS)
v IBM OpenAdmin Tool (OAT) for Informix, formerly
known as OpenAdmin Tool for Informix Dynamic
Server (IDS)
v IBM Informix SQL Warehousing Tool, formerly known
as Informix Warehouse Feature
Table 3. What's New in IBM Informix Enterprise Replication Guide for version 11.50.xC7
Overview Reference
Improved Enterprise Replication error code descriptions “Return Codes for the cdr Utility” on page A-8
Table 5. What's New in IBM Informix Enterprise Replication Guide for version 11.50.xC5
Overview Reference
Improving the Performance of Consistency Checking with “Preparing Tables for a Consistency Check Index” on
an Index page 4-18
You can now increase the speed of a consistency check on “Indexing the ifx_replcheck Column” on page 7-18
a replicate by indexing a new shadow column,
ifx_replcheck. You add the ifx_replcheck column to your
replicated table using the WITH REPLCHECK clause and
create a unique index on the ifx_replcheck column and
your primary key columns. You can also alter an existing
table to add the ifx_replcheck column. The replicated
table must also have the CRCOLS shadow columns. You
cannot perform a table-level restore on a table that
contains the ifx_replcheck column.
Improving the Performance of Checking or Synchronizing “cdr check replicateset” on page A-43
Replicate Sets (Windows)
“cdr sync replicateset” on page A-146
This feature, which was added in Informix v11.50.xC4 for
other operating systems, is now available on Windows
platforms. You can increase the speed of a consistency
check or a synchronization operation on a replicate set by
performing the operation on each replicate in parallel.
Specify the number of parallel processes to use for
processing a replicate set by using the --process option.
Enterprise Replication Stops if Memory Allocation Fails “Enterprise Replication Event Alarms” on page 8-21
Introduction xiii
Table 5. What's New in IBM Informix Enterprise Replication Guide for version 11.50.xC5 (continued)
Overview Reference
Specifying the Range of Data Sync Threads to Apply “CDR_APPLY Configuration Parameter” on page B-1
Replicated Transactions
Table 6. What's New in IBM Informix Enterprise Replication Guide for version 11.50.xC4
Overview Reference
Role separation for Enterprise Replication (UNIX) “Preparing for Role Separation (UNIX)” on page 4-19
You can use the new delete wins conflict resolution rule to “cdr define replicate” on page A-53
perform conflict resolution that compares the time stamps
of conflicting rows but prevents upserts. An upsert is an
UPDATE operation that is converted to an INSERT
operation because the row to update was not found on
the target server. An upsert operation can occur if a row
is deleted from a target server before an UPDATE
operation is processed on that target server or if an
UPDATE operation was processed by the target server
before the INSERT operation for that row. Depending on
your business logic, you might want to prevent deleted
rows from being reinserted and UPDATE operations from
occurring before INSERT operations.
By default, inconsistent rows are rechecked for up to five “cdr check replicateset” on page A-43
seconds, which might not be enough time for replicated
transactions to be applied on the target server. You can
now specify the number of seconds to spend on
rechecking the consistency of inconsistent rows.
Rechecking prevents transactions that are in progress
from being listed as inconsistent in the consistency report.
You can use the --inprogress option of the cdr check
replicate and cdr check replicateset commands to specify
the maximum number of seconds to perform rechecking.
Schedule Synchronization or Consistency Checking “cdr check replicate” on page A-34
Operations
“cdr check replicateset” on page A-43
You can now use the Scheduler to automate the running
of synchronization and consistency check operations by “cdr sync replicate” on page A-142
using the --background option with the cdr check or cdr
sync commands. “cdr sync replicateset” on page A-146
You can now reduce the duration of a consistency check “cdr check replicateset” on page A-43
by performing a check in parallel and by controlling the
amount of data that is checked. You can specify a time
from which to check updated rows by using the --since
option. You can specify a subset of a table to check by
using the --where option. You can prevent the checking of
large objects by using the --skipLOB option.
Introduction xv
Table 6. What's New in IBM Informix Enterprise Replication Guide for version 11.50.xC4 (continued)
Overview Reference
Improve the Performance of Checking or Synchronizing “cdr check replicateset” on page A-43
Replicate Sets (UNIX)
“cdr sync replicateset” on page A-146
You can increase the speed of a consistency check or a
synchronization operation on a replicate set by
performing the operation on each replicate in parallel.
Specify the number of parallel processes to use for
processing a replicate set by using the --process option.
Compress Replicated Data “Data Compression Considerations” on page 2-5
You can compress and uncompress data in replicated IBM Informix Administrator's Guide
tables independently on different Enterprise Replication
servers.
Table 7. What's New in IBM Informix Enterprise Replication Guide for version 11.50.xC3
Overview Reference
Dynamically updating Enterprise Replication “cdr add onconfig” on page A-27
configuration parameters in the ONCONFIG file
“cdr change onconfig” on page A-29
Previously, the cdr add onconfig, cdr change onconfig,
and cdr remove onconfig commands dynamically “cdr remove onconfig” on page A-105
updated Enterprise Replication configuration parameters
for the current session only. Now these commands create
persistent updates to Enterprise Replication configuration
parameters in the ONCONFIG file.
Administering with the SQL administration API IBM Informix Administrator's Reference
Table 8. What's New in IBM Informix Enterprise Replication Guide for version 11.50.xC2
Overview Reference
Improving the performance of an Enterprise Replication “Improve Performance During Synchronization” on page
synchronization operation 6-14
You can prevent the generation of either ATS or RIS files “cdr modify server” on page A-97
by setting the ATS or RIS directory to /dev/null (UNIX)
or NUL (Windows).
Introduction xvii
Table 9. What's New in IBM Informix Enterprise Replication Guide for version 11.50.xC1
Overview Reference
Support for Secure Sockets Layer data encryption IBM Informix Security Guide
If only SQL statements are listed in the example, they are not delimited by
semicolons. For instance, you might see the code in the following example:
CONNECT TO stores_demo
...
COMMIT WORK
DISCONNECT CURRENT
To use this SQL code for a specific product, you must apply the syntax rules for
that product. For example, if you are using an SQL API, you must use EXEC SQL
at the start of each statement and a semicolon (or other appropriate delimiter) at
the end of the statement. If you are using DB–Access, you must delimit multiple
statements with semicolons.
Tip: Ellipsis points in a code example indicate that more code would be added in
a full application, but it is not necessary to show it to describe the concept being
discussed.
Additional documentation
Documentation about this release of IBM Informix products is available in various
formats.
IBM Informix SQL-based products are fully compliant with SQL-92 Entry Level
(published as ANSI X3.135-1992), which is identical to ISO 9075:1992. In addition,
many features of IBM Informix database servers comply with the SQL-92
Intermediate and Full Level and X/Open SQL Common Applications Environment
(CAE) standards.
The IBM Informix Geodetic DataBlade® Module supports a subset of the data types
from the Spatial Data Transfer Standard (SDTS)—Federal Information Processing
Standard 173, as referenced by the document Content Standard for Geospatial
Metadata, Federal Geographic Data Committee, June 8, 1994 (FGDC Metadata
Standard).
IBM Informix Dynamic Server (IDS) Enterprise Edition, Version 11.50 is certified
under the Common Criteria. For more information, see Common Criteria
Certification: Requirements for IBM Informix Dynamic Server, which is available at
http://www.ibm.com/e-business/linkweb/publications/servlet/pbi.wss?CTY=US
&FNC=SRX&PBL=SC23-7690-00.
Syntax diagrams
Syntax diagrams use special components to describe the syntax for statements and
commands.
Table 10. Syntax Diagram Components
Component represented in PDF Component represented in HTML Meaning
Introduction xix
Table 10. Syntax Diagram Components (continued)
Component represented in PDF Component represented in HTML Meaning
-t table
(1)
Setting the Run Mode
-S server -T target
This diagram has a segment named “Setting the Run Mode,” which according to
the diagram footnote is on page Z-1. If this was an actual cross-reference, you
would find this segment on the first page of Appendix Z. Instead, this segment is
shown in the following segment diagram. Notice that the diagram uses segment
start and end components.
l
c
-f
d u n N
p
a
To see how to construct a command correctly, start at the upper left of the main
diagram. Follow the diagram to the right, including the elements that you want.
The elements in this diagram are case-sensitive because they illustrate utility
syntax. Other types of syntax, such as SQL, are not case-sensitive.
You must also use any punctuation in your statements and commands exactly as
shown in the syntax diagrams.
Introduction xxi
Identifiers and names
Variables serve as placeholders for identifiers and names in the syntax diagrams
and examples.
You can replace a variable with an arbitrary name, identifier, or literal, depending
on the context. Variables are also used to represent complex syntax elements that
are expanded in additional syntax diagrams. When a variable appears in a syntax
diagram, an example, or text, it is shown in lowercase italic.
The following syntax diagram uses variables to illustrate the general form of a
simple SELECT statement.
When you write a SELECT statement of this form, you replace the variables
column_name and table_name with the name of a specific column and table.
Feedback from all methods is monitored by the team that maintains the user
documentation. The feedback methods are reserved for reporting errors and
omissions in the documentation. For immediate help with a technical problem,
contact IBM Technical Support. For instructions, see the IBM Informix Technical
Support website at http://www.ibm.com/planetwide/.
Data replication generates and manages multiple copies of data at one or more
sites, which allows an enterprise to share corporate data throughout its
organization.
This chapter introduces IBM Informix Enterprise Replication and explains how this
product replicates data.
At each target server, Enterprise Replication receives and applies each transaction
contained in the replication data to the appropriate databases and tables as a
normal, logged transaction.
Log-based data capture takes changes from the logical log and does not compete
with transactions for access to production tables. Log-based data-capture systems
operate as part of the normal database-logging process and thus add minimal
overhead to the system.
Two other methods of data capture, which Enterprise Replication does not support,
include:
v Trigger-based data capture
A trigger is code in the database that is associated with a piece of data. When
the data changes, the trigger activates the replication process.
v Trigger-based transaction capture
A trigger is associated with a table. Data changes are grouped into transactions
and a single transaction might trigger several replications if it modifies several
tables. The trigger receives the whole transaction, but the procedure that
captures the data runs as a part of the original transaction, thus slowing down
the original transaction.
High Performance
Enterprise Replication provides high performance by not overly burdening the
data source and by using networks and all other resources efficiently.
Because Enterprise Replication captures changes from the logical log instead of
competing with transactions that access production tables, Enterprise Replication
minimizes the effect on transaction performance. Because the capture mechanism is
internal to the database, the database server implements this capture mechanism
efficiently. For more information, see “Log-Based Data Capture.”
High Availability
Because Enterprise Replication implements asynchronous data replication, network
and target database server outages are tolerated. In the event of a database server
or network failure, the local database server continues to service local users. The
local database server stores replicated transactions in persistent storage until the
remote server becomes available.
You can easily bring a new table up-to-date with replication when you start a new
replicate, or when you add a new participant to an existing replicate, by specifying
an initial synchronization. Initial synchronization can be run online while
replication is active.
If replication has failed for some reason, you can repair replicated data by running
the cdr sync replicate or cdr sync replicateset command to resynchronize data and
correct data mismatches between replicated tables. You can repair data while
replication is active.
You can also repair data after replication has failed by using ATS and RIS
files.Enterprise Replication examines the specified ATS or RIS file and attempts to
reconcile the rows that failed to be applied. This method is fast, but does not allow
as much flexibility as a repair job allows in defining how the repair should be
done.
Flexible Architecture
Enterprise Replication allows replications based on specific business and
application requirements and does not impose model or methodology restrictions
on the enterprise.
Enterprise Replication supports all built-in IBM Informix data types, as well as
extended and user-defined data types.
Enterprise Replication supports the Global Language Support (GLS) feature, which
allows IBM Informix products to handle different languages, regional conventions,
and code sets.
Related concepts
“Primary-Target Replication System” on page 3-1
“Update-Anywhere Replication System” on page 3-4
“Choosing a Replication Network Topology” on page 3-14
“Enterprise Replication Data Types” on page 2-12
“Using GLS with Enterprise Replication” on page 2-12
Centralized Administration
Enterprise Replication allows administrators to easily manage all the distributed
components of the replication system from a single point of control.
You can use the command-line utility (CLU) to administer the replication system
from your system command prompt and connect to other servers involved in
replication, as necessary. For information, see Appendix A, “The cdr
Command-Line Utility Reference,” on page A-1.
First, you create a template using the cdr define template command. This defines
the database, tables, and columns and the characteristics of the replicates that will
be created. You can view information about a template by using the cdr list
template command from a non-leaf node.
Second, you instantiate the template on the servers where you want to replicate
this data by running the cdr realize template command. If the table already exists
on a node, Enterprise Replication verifies it matches the template definition. If the
table does not exist on a node, Enterprise Replication can optionally create the
table. Enterprise Replication can also optionally perform an initial data
synchronization on all servers where you realize the template.
You can delete templates that you no longer need using the cdr delete template
command.
See “Using Templates to Set Up Replication” on page 6-13 for more information.
All replication commands mentioned in this section are described in detail in
Appendix A, “The cdr Command-Line Utility Reference,” on page A-1.
Network Encryption
Enterprise Replication supports the same network encryption options that you can
use with communications between server and clients to provide complete data
encryption.
You can use the Secure Sockets Layer (SSL) protocol, a communication protocol
that ensures privacy and integrity of data transmitted over the network, for
connections between Enterprise Replication servers. For information on using the
SSL protocol, see the "Secure Sockets Layer Communication Protocol" section of the
IBM Informix Security Guide.
You can use encryption configuration parameters to provide data encryption with
a standard cryptography library. A message authentication code (MAC) is
transmitted as part of the encrypted data transmission to ensure data integrity.
This is the same type of encryption provided by the ENCCSM communications
support module for non-replication communication. Enterprise Replication shares
the same ENCRYPT_CIPHERS, ENCRYPT_MAC, ENCRYPT_MACFILE, and
ENCRYPT_SWITCH configuration parameters with high availability clusters.
Enterprise Replication encryption configuration parameters are documented in
Appendix B, “Configuration Parameter and Environment Variable Reference,” on
page B-1.
After you define the servers and replicates, Enterprise Replication replicates data in
three phases:
1. “Data Capture” on page 1-7
2. “Data Transport” on page 1-12
3. “Applying Replicated Data” on page 1-12
The following diagram shows these three phases of replication and the Enterprise
Replication components that perform each task.
1. Client
application
Database
3. Snoopy
Database
8. Data Sync
4. Grouper
6 9. Ack Queue
10
Data Capture
As the database server writes rows to the logical log, it marks rows that should be
replicated. Later, Enterprise Replication reads the logical log to obtain the row
images for tables that participate in replication.
IBM Informix database servers manage the logical log in a circular fashion; the
most recent logical-log entries write over the oldest entries. Enterprise Replication
must read the logical log quickly enough to prevent new logical-log entries from
overwriting the logs Enterprise Replication has not yet processed.
If the database server comes close to overwriting a logical log that Enterprise
Replication has not yet processed, user transactions are blocked until Enterprise
Replication can advance. (This situation is called DDRBLOCK mode and occurs only
if the system is severely misconfigured.)
The row images that participate in replication are passed to Enterprise Replication
for further evaluation.
Row Images
Enterprise Replication evaluates the initial and final images of a row and any
changes that occur between the two row images to determine which rows to
replicate. Each row image contains the data in the row as well as the action
performed on that row.
A row might change more than once in a particular transaction. For example, a
transaction might insert and then update a row prior to committing. Enterprise
Replication evaluates the net effect (final state) of a transaction based on the row
buffers in the log. Enterprise Replication then determines what should replicate,
based on the net effect, the initial state of the row, and whether the replicate
definition (in particular, the WHERE clause) applies to the initial and final state.
Table 1-1 shows the logic that determines which rows are candidates for
replication.
Table 1-1. Enterprise Replication Evaluation Logic
Send to
Initial Replicate Replicate Primary-Key Destination
Image Evaluates Final Image Evaluates Changed? Database Server Comments
INSERT T or F DELETE T or F Yes or no Nothing Net change of
transaction results in no
replication
INSERT T or F UPDATE T Yes or no INSERT with final Inserts final data of
row image transaction
Where:
v Initial image is the before image of the transaction in the logical log.
v The replicate evaluates to T (true) or F (false).
v Final image is the image of the transaction that is replicated.
Table 1-1 on page 1-7 illustrates how Enterprise Replication evaluates the
row-image type (INSERT, UPDATE, DELETE), the results of evaluating the
replicate WHERE clause for both the initial and final image, and whether the
primary key changes as a result of the transaction.
Tip: The evaluation logic in Table 1-1 on page 1-7 assumes that the source and the
destination tables are initially synchronized (identical before replication begins). If
the tables were not synchronized, anomalous behavior could result.
Enterprise Replication supports the replication of BYTE and TEXT data types
(simple large objects) and BLOB and CLOB data types (smart large objects), and
opaque user-defined data types, as well as all built-in IBM Informix data types.
However, Enterprise Replication implements the replication of these types of data
somewhat differently from the replication of other data types. For more
information, see “Replicating Simple and Smart Large Objects” on page 2-13, and
“Replicating Opaque User-Defined Data Types” on page 2-15.
For more information, see “Setting Up Send and Receive Queue Spool Areas” on
page 4-8 and “Preventing Memory Queues from Overflowing” on page 8-14.
The data contains the filtered log records for a single transaction. Enterprise
Replication stores the replication data in a stable (recoverable) send queue on the
source database server. Target sites acknowledge receipt of data when it is applied
to or rejected from the target database.
If the target database server is unavailable for an extended period, the send queue
on the source database server might consume excessive resources. In this situation,
dallas_office phoenix_office
BEGIN WORK;
COMMIT WORK;
Figure 1-2 shows a transaction that takes place at the Dallas office. Enterprise
Replication uses the logic in Table 1-2 to evaluate whether any information is sent
to the destination database server at the Phoenix office.
Table 1-2. Insert Followed by a Delete Evaluation Logic
Send to
Replicate Final Replicate Primary-Key Destination
Initial Image Evaluates Image Evaluates Changed? Database Server
INSERT T or F DELETE T or F Yes or no Nothing
In Figure 1-3 on page 1-11, Enterprise Replication uses the logic in Table 1-3 on
page 1-11 to evaluate whether any information is sent to the destination database
server.
dallas_office phoenix_office
The replicate WHERE clause imposes the restriction that only rows are replicated
where the exempt column contains a value of "N." Enterprise Replication evaluates
the transaction (an insert followed by an update) and converts it to an insert to
propagate the updated (final) image.
In Figure 1-4, Enterprise Replication uses the logic in Table 1-4 on page 1-12 to
evaluate whether any information is sent to the destination database server.
dallas_office phoenix_office
The example shows a replicate WHERE clause column update. A row that does not
meet the WHERE clause selection criteria is updated to meet the criteria.
Enterprise Replication replicates the updated row image and converts the update
to an insert.
Data Transport
Enterprise Replication ensures that all data reaches the appropriate server,
regardless of a network or system failure. In the event of a failure, Enterprise
Replication stores data until the network or system is operational. Enterprise
Replication replicates data efficiently with a minimum of data copying and
sending.
When Enterprise Replication applies replication data, it checks to make sure that
no collisions exist. A collision occurs when two database servers update the same
data simultaneously. Enterprise Replication reviews the data one row at a time to
detect a collision.
Pakistan
Time= 12:29:25
Products (in inventory)
India Column Column
Pakistan
...
field value field value
field value
Bangkok field value
...
Bangkok
Time= 12:29:27
Enterprise Replication scans to see if the same primary key already exists in the
target table or in the associated delete table, or if a replication order error is detected.
A delete table stores the row images of deleted rows. A replication order error is
the result of replication data that arrives from different database servers with one
of the following illogical results:
v A replicated DELETE that finds no row to DELETE on the target
v An UPDATE that finds no row to UPDATE on the target
v An INSERT that finds a row that already exists on the target
Once you configure Enterprise Replication, use this information to manage your
replication environment:
v “Managing Replication Servers” on page 7-1
v “Managing Replicates” on page 7-5
v “Managing Replicate Sets” on page 7-9
v Chapter 8, “Monitoring and Troubleshooting Enterprise Replication,” on page 8-1
The Enterprise Replication server administrator must have IBM Informix Database
Server Administrator (DBSA) privileges to configure and manage Enterprise
Replication or be user informix (UNIX) or a member of the Informix-Admin
group (Windows).
Replicate
A replicate defines the replication participants and various attributes of how to
replicate the data, such as frequency and how to handle any conflicts during
replication.
For more information, see “Defining Replicates” on page 6-3 and “cdr define
replicate” on page A-53.
Master Replicate
A master replicate is a replicate that guarantees data integrity by verifying that
replicated tables on different servers have consistent column attributes. Master
replicates also allow you to perform alter operations on replicated tables.
For more information, “Defining Master Replicates” on page 6-4 and “cdr define
replicate” on page A-53.
Shadow Replicate
A shadow replicate is a copy of an existing (primary) replicate. Shadow replicates
allow Enterprise Replication to manage alter and repair operations on replicated
tables.
Participant
A participant specifies the data (database, table, and columns) to replicate and the
database servers to which the data replicates.
Important: You cannot start and stop replicates that have no participants.
For more information, see “Defining Participants” on page 6-3 and “Participant
and participant modifier” on page A-4.
Replicate Set
A replicate set combines several replicates to form a set that can be administered
together as a unit.
If your replication system contains many replicates that you define as part of a
replicate set, you can use a single command to start, stop, suspend, or resume all
the replicates in the set.
For more information, see “Managing Replicate Sets” on page 7-9 and “cdr change
replicateset” on page A-32.
Template
A template provides a mechanism to set up and deploy replication for a group of
tables on one or more servers. This is especially useful if you have a large number
of tables to replicate between many servers. Internally, a template defines a group
of master replicates and a replicate set for a specified group of tables using
attributes such as database, tables, columns and primary keys from the master
node.
You create a template using the cdr define template command and then
instantiate, or realize, it on servers with the cdr realize template command. See
“Using Templates to Set Up Replication” on page 6-13 for more information.
Global Catalog
Each database server that participates in Enterprise Replication maintains tables in
the syscdr database to keep track of Enterprise Replication configuration
information and state. For all root and nonroot replication servers, this catalog is a
global catalog that maintains a global inventory of Enterprise Replication
configuration information. The global catalog is created when you define the server
for replication. For more information, see Table 3-5 on page 3-15.
The tables in one global catalog instance are automatically replicated to the global
catalogs of all other replication servers (except leaf servers). Thus you can manage
the entire replication environment from one non-leaf replication server. For
information about managing replication servers (and their global catalogs), refer to
“Managing Replication Servers” on page 7-1.
Leaf replication servers (Table 3-5 on page 3-15) have limited catalogs. Because the
parent database server always manages operations that involve a leaf database
server, the catalog of the leaf database server contains only enough data to allow it
to interact with its parent server. Limiting the catalog of leaf database servers
makes the replication system more efficient because the global catalogs do not
need to be replicated to the leaf servers.
For information on defining root, nonroot, and leaf servers, see “Customizing the
Replication Server Definition” on page 6-2.
Related concepts
“Connect Option” on page A-3
Related tasks
“Customizing the Replication Server Definition” on page 6-2
Operational Considerations
Enterprise Replication imposes the following operational limitations:
v Enterprise Replication supports replication on IBM Informix only.
v Replication is restricted to base tables. That is, you cannot define a replicate on a
view or synonym. A view is a synthetic table, a synthesis of data that exists in
real tables and other views. A synonym is an alternative name for a table or a
view. For more information on views and synonyms, see the IBM Informix
Database Design and Implementation Guide.
v Replication is not inherited by any child tables in a typed hierarchy.
Warm restores are not permitted. You must perform a cold restore up to the
current log of all relevant dbspaces on Enterprise Replication servers before
resuming replication.
If the restore did not include all the log files from the replay position, or the
system was not restored to the current log file, you must advance the log file
unique ID past the latest log file unique ID prior to the restore, and then run the
cdr cleanstart command followed by the cdr sync command to synchronize the
server.
You can also consolidate free space in a table or fragment and you can return this
free space to the dbspace. Performing these operations on one Enterprise
Replication server does not affect the data on any other Enterprise Replication
server.
Attention: After you uncompress data on one server, do not remove any
compression dictionaries that another Enterprise Replication server needs.
Unbuffered Logging
Databases on all server instances involved in replication must be created with
logging.
It is recommended that you replicate tables only from databases created with
unbuffered logging. Enterprise Replication evaluates the logical log for transactions
that modify tables defined for replication. If a table defined for replication resides
in a database that uses buffered logging, the transactions are not immediately
written to the logical log, but are instead buffered and then written to the logical
Chapter 2. Overview of Enterprise Replication Administration 2-5
log in a block of logical records. When this occurs, IBM Informix Enterprise
Replication evaluates the buffer of logical-log records all at once, which consumes
excess CPU time and memory. When you define a table for replication in a
database created with unbuffered logging, Enterprise Replication can evaluate the
transactions as they are produced.
Table Types
The following table types are not supported by Enterprise Replication:
v RAW tables
Because RAW tables are not logged, they cannot be replicated using Enterprise
Replication.
v Temporary tables
Because the database server deletes temporary tables when an application
terminates or closes the database, you should not include these tables in your
replication environment.
For more information on table types, see IBM Informix Database Design and
Implementation Guide.
Out-of-Row Data
Enterprise Replication collects out-of-row data for transmission after the user
transaction has committed. Due to activity on the replicated row, the data might
not exist at the time Enterprise Replication collects it for replication. In such cases,
Enterprise Replication normally applies a NULL on the target system, unless the
data is a smart large object. Therefore, you should avoid placing a NOT NULL
constraint on any replicated column that includes out-of-row data.
If a column has smart large objects and the smart large object data does not exist
when Enterprise Replication collects it for replication, then Enterprise Replication
creates smart large objects with no data and zero size.
Shadow Columns
Shadow columns are hidden columns on replicated tables that contain values
supplied by the database server. The database server uses shadow columns to
perform internal operations.
You can add shadow columns to your replicated tables with the CREATE TABLE
or ALTER TABLE statement. To view the contents of shadow columns, you must
explicitly specify the columns in the projection list of a SELECT statement; shadow
columns are not included in the results of SELECT * statements.
All unique indexes defined on replicated tables should have a unique constraint.
For more information about primary keys and constraints, see the IBM Informix
Database Design and Implementation Guide and the IBM Informix Guide to SQL:
Syntax.
Important: Because primary key updates are sent as DELETE and INSERT
statement pairs, avoid changing the primary key and updating data in the same
transaction.
If you do not set CDR_SERIAL, you must specify that the serial column is part of a
composite primary key, to avoid generating non-unique serial primary keys. The
non-serial column part of the primary key identifies the server on which the row
was initially created.
Cascading Deletes
If a table includes a cascading delete, when a parent row is deleted, the children
are also deleted. If both the parent and child tables participate in replication, the
deletes for both the parent and child are replicated to the target servers.
If the same table definition exists on the target database, Enterprise Replication
attempts to delete the child rows twice. Enterprise Replication usually processes
deletions on the parent tables first and then the children tables. When Enterprise
Replication processes deletions on the children, an error might result, because the
rows were already deleted when the parent was deleted. The table in Table 2-1
indicates how IBM Informix Enterprise Replication resolves cascading deletes with
conflict resolution scopes and rules.
For more information on cascading deletes, see the ON DELETE CASCADE section
in the IBM Informix Guide to SQL: Syntax.
Table 2-1. Resolving Cascade Deletes
Conflict-Resolution Rule Conflict-Resolution Scope Actions on Delete Errors
Time stamp Row-by-row or transaction Continue processing rest of
the transaction
Delete wins Row-by-row or transaction Continue processing rest of
the transaction
Ignore Transaction Abort entire transaction
Ignore Row-by-row Continue processing rest of
the transaction
Triggers
A trigger is a database object that automatically sets off a specified set of SQL
statements when a specified event occurs.
If the same triggers are defined on both the source and target tables, any insert,
update, or delete operation that the triggers generate are also sent to the target
database server. For example, the target table might receive replicate data caused
by a trigger that also executes locally. Depending on the conflict-resolution rule
and scope, these operations can result in errors. To avoid this problem, define the
replicate to not fire triggers on the target table.
You might want to design your triggers to take different actions depending on
whether a transaction is being performed as part of Enterprise Replication. Use the
'cdrsession' option of the DBINFO() function to determine if the transaction is a
For more information on triggers, see “Enabling Triggers” on page 6-10 and the
CREATE TRIGGER section in IBM Informix Guide to SQL: Syntax.
Related reference
DBINFO Function (SQL Syntax)
Using Constraints
When using constraints, ensure that the constraints you add at the target server are
not more restrictive than those at the source server. Discrepancies between
constraints at the source and target servers can cause some rows to fail to be
replicated.
To enable deferred constraint checking, you should create a unique constraint for
each unique index on a replicated table. Deferred constraint checking improves the
accuracy and speed of constraint checking at target servers. If you do not create
unique constraints for unique indexes, the following message is printed to the
message log:
Warning - Table table_name
is replicated and contains a unique index
rather than a unique constraint.
Unique constraints should be used with replicated tables
rather than a simple unique index.
For tables that have referential integrity constraints set up between them, if you
need to resynchronize the data in the tables, you can perform synchronization on
the replicate set. For replicate sets, Enterprise Replication synchronizes tables in an
order that preserves referential integrity constraints (for example, child tables are
synchronized after parent tables).
Sequence Objects
In bi-directional Enterprise Replication, if you replicate tables using sequence
objects for update, insert, or delete operations, the same sequence values might be
generated on different servers at the same time, leading to conflicts.
To avoid this problem, define sequence objects on each server so that the ranges of
generated sequence values are distinct. For more information about the CREATE
SEQUENCE and ALTER SEQUENCE statements of SQL, see the IBM Informix
Guide to SQL: Syntax.
Replication Volume
To determine replication volume, you must estimate how many data rows change
per day. For example, an application issues a simple INSERT statement that inserts
Distributed Transactions
A distributed transaction is a transaction that commits data in a single transaction
over two or more database servers.
Large Transactions
While Enterprise Replication is able to handle large transactions, it is optimized for
small transactions. For best performance, avoid replicating large transactions.
Large transactions are handled with a grouper paging file located in temporary
smart large objects. Enterprise Replication can process transactions up to 4 TB in
size. For more information, see “Setting Up the Grouper Paging File” on page 4-11.
You can view Enterprise Replication grouper paging statistics with the onstat -g
grp pager command (see “onstat -g grp” on page C-8).
Instead of using Enterprise Replication to perform a batch job, use BEGIN WORK
WITHOUT REPLICATION to run the batch job locally on each database server. For
more information, see “Blocking Replication” on page 4-15.
To use the forbidden and limited SQL statements described in this section against a
table defined for replication, you must first stop (not suspend) the replicate that
contains the table, before running the SQL statement. After modifying the table at
all required nodes, restart the replicate. For more information, see “Managing
Replicates” on page 7-5.
Forbidden SQL Statements: You cannot use the following SQL statement against
a table that is included in a replicate:
v DROP TABLE
You must first set alter mode with the cdr alter command before you can perform
these tasks:
v Add shadow columns:
– ALTER TABLE ... ADD CRCOLS;
– ALTER TABLE ... ADD REPLCHECK;
v Remove or disable the primary key constraint.
v Modify the primary key columns.
For example, alter the column to add default values or other integrity
constraints.
v Change the primary key from one column to another.
For example, if a primary key is defined on col1, you can change the primary
key to col2.
Tip: You can rename both dbspaces and sbspaces while IBM Informix Enterprise
Replication is active.
For more information on requirements for SQL statements see “Alter, Rename, or
Truncate Operations during Replication” on page 7-21.
Code-set conversion with the GLS library requires only those code-set conversion
files found in the $INFORMIXDIR/gls/cv9 directory.
v For U.S. English, locales are handled automatically by the Client SDK/Informix
Connect installation and setup.
v For non-U.S. English locales, you might need to explicitly provide the locale and
conversion files.
For information about how to specify a nondefault locale and other considerations
related to GLS locales, see the IBM Informix GLS User's Guide.
Related concepts
“Flexible Architecture” on page 1-4
For general information on data types, refer to the IBM Informix Guide to SQL:
Reference.
Important: For non-master replicates, Enterprise Replication does not verify the
data types of columns in tables that participate in replication. The replicated
column in a table on the source database server must have the same data type as
the corresponding column on the target server. The exception to this rule is
cross-replication between simple large objects and smart large objects.
If you use SERIAL, SERIAL8, or BIGSERIAL data types, you must be careful when
defining serial columns. For more information, see “Serial Data Types and Primary
Keys” on page 2-7.
Related concepts
“Flexible Architecture” on page 1-4
If you use floating-point data types with heterogeneous hardware, you might need
to use IEEE floating point or canonical format for the data transfers. For more
information, see “Using the IEEE Floating Point or Canonical Format” on page 6-9.
Simple large objects in tblspaces are logged in the logical log and therefore,
Enterprise Replication can evaluate the data for replication directly. Enterprise
Replication cannot evaluate large object data that is stored in a blobspace or
sbspace; instead, Enterprise Replication uses information about the large object that
is stored in the row to evaluate them.
For more information about database storage, see the IBM Informix Administrator's
Guide.
Enterprise Replication evaluates simple large object data that is stored in a tblspace
independently from the rest of its row.
Simple large object data that is stored in tblspaces (rather than in blobspaces) is
placed in the logical log. Enterprise Replication reads the logical log to capture and
evaluate the data for potential replication.
For simple large objects, if the column on the target database server is also stored
in a tblspace, Enterprise Replication evaluates the values of the shadow columns,
cdrserver and cdrtime, in the source and target columns and uses the following
logic to determine if the data is to be applied:
v If the column of the replicated data has a time stamp that is greater than the
time stamp of the column on the local row, the data for the column is accepted
for replication.
v If the server ID and time stamp of the replicated column are equal to the server
ID and time stamp on the column on the local row, the data for the column is
accepted for replication.
v If there is no SPL conflict-resolution rule and the time stamps are equal, then
Enterprise Replication applies the data to the row with the lowest CDR server
ID.
If you use the SPL conflict resolution, simple large objects that are stored in
tblspaces are handled differently than large objects in blobspaces.
Related concepts
“SPL Conflict Resolution for Large Objects” on page 3-10
Enterprise Replication does not retrieve simple large object data that is stored in
blobspaces and smart large object data that is stored in sbspaces from the logical
log. Instead, Enterprise Replication retrieves the large object data directly from the
blobspace or sbspace before sending the data to the target database server.
In most cases, the subsequent transaction that modified or deleted the large object
will also be replicated, so the data again becomes consistent once that transaction
is replicated. The data in the large object is inconsistent for only a short time.
Keep in mind that if you specify sending only the columns that changed, the data
might not get updated during the next update of the row. For more information,
see “Replicating Only Changed Columns” on page 6-8.
If you use the SPL conflict resolution, large objects that are stored in blobspaces or
sbspaces are handled differently than simple large objects in tblspaces.
Distributing BYTE and TEXT Data: If Enterprise Replication processes a row and
discovers undeliverable BYTE or TEXT columns, the following actions can occur:
v Any undeliverable columns are set to NULL if the replication operation is an
INSERT and the row does not already exist at the target.
v The old value of the local row is retained if the replication operation is an
UPDATE or if the row already exists on the target.
Installing and Registering UDTs: You must install and register UDTs and their
associated support routines on all database servers participating in Enterprise
Replication prior to starting replication.
The purpose of these functions is similar to the existing send() and receive()
functions provided for client/server transmissions.
When preparing a row that includes any UDT columns to queue to the target
system, Enterprise Replication calls the streamwrite() function on each UDT
column. The function converts the UDT column data from the in-server
representation to a representation that can be shipped over the network. This
allows Enterprise Replication to replicate the column without understanding the
internal representation of the UDT.
On the target server, Enterprise Replication calls the streamread() function for each
UDT column that it transmitted using the streamwrite() function.
Comparison Functions
When you define a compare() function, you must also define the greaterthan(),
lessthan(), equal(), or other functions that use the compare() function.
For more information on writing these support functions, see the IBM Informix
User-Defined Routines and Data Types Developer's Guide.
Replicating Table Hierarchies: To replicate tables that form a hierarchy, you must
define a separate replicate for each table. If you define a replicate on a super table,
Enterprise Replication does not automatically create implicit replicate definitions
on the subordinate tables.
Tip: Enterprise Replication does not require that the table hierarchies be identical
on the source and target servers.
You must use conflict resolution uniformly for all tables in the hierarchy. In other
words, either no conflict resolution for all tables or conflict resolution for all tables.
(Read-only) (Read-only)
Primary
Database
server
Target Target
Database (Read-write) Database
server server
(Read-only) (Read-only)
Data Consolidation
As businesses reorganize to become more competitive, many choose to consolidate
data into one central database server. Data consolidation allows the migration of
data from several database servers to one central database server. In Figure 3-2, the
remote locations have read-write capabilities while the central database server is
read-only.
Primary Primary
Database Database
server server
(Read-write) (Read-write)
Target
Database
server
Primary
Primary (Read-only)
Database
Database server
server
(Read-write) (Read-write)
Businesses can also use data consolidation to off-load OLTP data for decision
support (DSS) analysis. For example, data from several OLTP systems can be
replicated to a DSS system for read-only analysis. Pay close attention to the
configuration of the tables from which data is replicated to ensure that each
primary key is unique among the multiple primary database servers.
Workload Partitioning
Workload partitioning gives businesses the flexibility of assigning data ownership
at the table-partition level, rather than within an application. Figure 3-3 on page
3-3 illustrates workload partitioning.
In Figure 3-3, the replication model matches the partition model for the employee
tables. The Asia-Pacific database server owns the partition and can therefore
update, insert, and delete employee records for personnel in its region. The
changes are then propagated to the U.S. and European regions. The Asia-Pacific
database server can query or read the other partitions locally, but cannot update
those partitions locally. This strategy applies to other regions as well.
Workflow Replication
Unlike the data dissemination model, in a workflow-replication system, the data
moves from site to site. Each site processes or approves the data before sending it
on to the next site.
Inventory
Order entry Accounting management Ship
custno custname custno custname custno custname custno custname
1234 XYZLTD 1234 XYZLTD 1234 XYZLTD 1234 XYZLTD
1235 XSPORTS 1235 XSPORTS 1235 XSPORTS 1235 XSPORTS
Figure 3-4. A Workflow-Replication System Where Update Authority Moves From Site to Site
Chapter 3. Selecting the Enterprise Replication System and Network Topology 3-3
In a workflow-replication system, application modules can be distributed across
multiple sites and databases. Data can also be replicated to sites that need
read-only access to the data (for example, if order-entry sites want to monitor the
progress of an order).
Primary-Target Considerations
Consider the following factors when you select a primary-target replication system:
v Administration
Primary-target replication systems are the easiest to administer because all
updates are unidirectional and therefore, no data update conflicts occur.
Primary-target replication systems use the ignore conflict-resolution rule. See
“Conflict Resolution Rule” on page 3-6.
v Capacity planning
All replication systems require you to plan for capacity changes. For more
information, see “Preparing Data for Replication” on page 4-15.
v High-availability planning
In the primary-target replication system, if a target database server or network
connection goes down, Enterprise Replication continues to log information for
the database server until it becomes available again. If a database server is
unavailable for some time, you might want to remove the database server from
the replication system. If the unavailable database server is the read-write
database server, you must plan a course of action to change read-write
capabilities on another database server.
If you require a fail-safe replication system, you should select a high-availability
replication system. For more information, see “High-Availability Replication
System” on page 5-1.
Database
Update server
Update
Database
server
Los Angeles
service center
Because each service center can update a copy of the data, conflicts can occur
when the data is replicated to the other sites. To resolve update conflicts,
Enterprise Replication uses conflict resolution.
Chapter 3. Selecting the Enterprise Replication System and Network Topology 3-5
Related concepts
“High-Availability Replication System” on page 5-1
“Disk Space for Delete Tables” on page 4-7
“Shadow Column Disk Space” on page 4-7
“Preparing Data for Replication” on page 4-15
“Flexible Architecture” on page 1-4
Related tasks
“Specifying Conflict Resolution Rules and Scope” on page 6-7
Conflict Resolution
When multiple database servers try to update the same row simultaneously (the
time stamp for both updates is the same GMT time), a collision occurs. For more
information, see “Applying Replicated Data” on page 1-12. Enterprise Replication
must determine which new data to replicate. To solve conflict resolution, you must
specify the following for each replicate:
v A conflict-resolution rule
v The scope of the rule
Related concepts
“Shadow Columns” on page 2-6
“Time Synchronization” on page 4-14
“Considerations for Replicating Opaque Data Types” on page 2-16
Related tasks
“Replicating Only Changed Columns” on page 6-8
Related reference
“cdr define replicate” on page A-53
The ignore conflict-resolution rule can only be used as a primary conflict- resolution
rule and can have either a transaction or a row scope (as described in “Conflict
Resolution Scope” on page 3-14). Table 3-1 describes the ignore conflict-resolution
rule.
Table 3-1. Ignore Conflict-Resolution Rule
Database Operation
Row Exists in Target? Insert Update Delete
No Apply row Discard row Discard row
Yes Discard row Apply row Apply row
When a replication message fails to apply to a target, you can spool the
information to one or both of the following directories:
v Aborted-transaction spooling (ATS)
If selected, all buffers in a failed replication message that compose a transaction
are written to this directory.
v Row-information spooling (RIS)
If selected, the replication message for a row that could not be applied to a
target is written to this directory.
All time stamps and internal computations are performed in Greenwich Mean
Time (GMT). The time stamp conflict resolution rule assumes time synchronization
between cooperating Enterprise Replication servers.
The time stamp resolution rule behaves differently depending on which scope is in
effect:
v Row scope
Enterprise Replication evaluates one row at a time. The row with the most
recent time stamp wins the conflict and is applied to the target database servers.
If an SPL routine is defined as a secondary conflict-resolution rule, the routine
resolves the conflict when the row times are equal.
v Transaction scope
Enterprise Replication evaluates the most recent row-update time among all the
rows in the replicated transaction. This time is compared to the time stamp of
Chapter 3. Selecting the Enterprise Replication System and Network Topology 3-7
the appropriate target row. If the time stamp of the replicated row is more recent
than the target, the entire replicated transaction is applied. If a routine is defined
as a secondary conflict resolution rule, it is used to resolve the conflict when the
time stamps are equal.
If no secondary conflict-resolution rule is defined and the time stamps are equal,
the transaction from the database server with the lower value in the cdrserver
shadow column wins the conflict.
The following table shows how a conflict is resolved based on the latest time
stamp with row scope. The time stamp Tlast_update (the time of the last update)
represents the row on the target database server with the last (most recent) update.
The time stamp Trepl (the time when replication occurs) represents the time stamp
on the incoming row.
Enterprise Replication first checks to see if a row with the same primary key exists
in either the target table or its corresponding delete table.
If the row exists, Enterprise Replication uses the latest time stamp to resolve the
conflict.
Table 3-2. Conflict Resolution Based on the Time Stamp
Database Operation
Row Exists on
Target? Time Stamp Insert Update Delete
No n/a Apply row Apply row (Convert Apply row (INSERT into
UPDATE to INSERT) Enterprise Replication
delete table)
Yes Tlast_update < Trepl Apply row (Convert Apply row Apply row
INSERT to UPDATE)
Tlast_update > Trepl Discard row
Tlast_update = Trepl Apply row if no routine is defined as a secondary conflict resolution
rule. Otherwise, invoke the routine.
Important: Do not remove the delete tables created by Enterprise Replication. The
delete table is automatically removed when the last replicate defined with conflict
resolution is deleted.
Related concepts
“Conflict Resolution Scope” on page 3-14
“Time Synchronization” on page 4-14
“Delete Wins Conflict Resolution Rule” on page 3-12
The SPL rule allows you complete flexibility to determine which row prevails in
the database. However, for most users, the time stamp conflict resolution rule
provides sufficient conflict resolution.
Routines for conflict resolution must be in SPL. Enterprise Replication does not
allow user-defined routines in C or in Java.
Important: You cannot use an SPL routine or a time stamp with an SPL routine if
the replicate is defined to replicate only changed columns or the replicated table
contains any extensible data types. See “Replicating Only Changed Columns” on
page 6-8.
Argument Description
Server name [CHAR(18)] From the local target row NULL if local target
row does not exist
Time stamp (DATETIME YEAR TO From the local target row NULL if local target
SECOND) row does not exist
Local delete-table indicator [CHAR(1)] Y indicates the origin of the row is the delete
or Local key delete-row indicator table. K indicates the origin of the row is the
[CHAR(1)] replicate-key delete row.
D - delete
U - update
Local row data returned in regular SQL Where the regular SQL format is taken from the
format SELECT clause of the participant list
Replicate row data after-image returned Where the regular SQL format is taken from the
in regular SQL format SELECT clause of the participant list
The routine must set the following arguments before the routine can be applied to
the replication message.
Chapter 3. Selecting the Enterprise Replication System and Network Topology 3-9
Argument Description
An indicator of the desired database Same as the replicate action codes with the
operation to be performed [CHAR(1)] following additional codes
v A - Accept the replicated row and apply the
column values returned by the SPL routine.
For example, if Enterprise Replication receives an
insert and the row already exists locally, the insert
is converted to an update
v S - Accept the replicated row and apply the
column values as received from the other site.
For example, if Enterprise Replication receives an
insert and the row already exists locally, the insert
fails at the time Enterprise Replication tries to
apply the transaction to the database, and the
transaction aborts with an SQL error.
v O - Discard the replicated row.
v X - Abort the transaction.
A non-zero integer value to request Logging value takes effect only if logging is
logging of the conflict resolution and the configured for this replicate.
integer value in the spooling files
(INTEGER)
The columns of the row to be applied to This list of column values is not parsed if the
the target table replicate action type in routine returns one of the following replicate
regular SQL format action types: S, O, or X.
You can use the arguments to develop application-specific routines. For example,
you can create a routine in which a database server always wins a conflict
regardless of the time stamp.
The following list includes some items to consider when you use an SPL routine
for conflict resolution:
v Any action that a routine takes as a result of replication does not replicate.
v You cannot use an SPL routine to start another transaction.
v Frequent use of routines might affect performance.
For information on specifying that the SPL routine is optimized, see “Conflict
Options” on page A-56.
Tip: Do not assign a routine that is not optimized as a primary conflict resolution
rule for applications that usually insert rows successfully.
When the routine is invoked, information about each large object column is passed
to the routine as five separate fields. The following table describes the fields.
Argument Description
Column size (INTEGER) The size of the column (if data exists for this column).
NULL if the column is NULL.
BLOB flag [CHAR(1)] For the local row, the field is always NULL.
If the routine returns an action code of A, D, I, or U, the routine parses the return
values of the replicated columns. Each large object column can return a
two-character field.
The first character defines the desired option for the large object column, as the
following table shows.
Value Function
C Performs a time-stamp check for this column as used by the time-stamp
rule.
N Sets the replicate column to NULL.
R Accepts the replicated data as it is received.
L Retains the local data.
The second character defines the desired option for blobspace or sbspace data if
the data is found to be undeliverable, as the following table shows.
Value Function
N Sets the replicated column to NULL.
Chapter 3. Selecting the Enterprise Replication System and Network Topology 3-11
Value Function
L Retains the local data (default).
O Aborts the row.
X Aborts the transaction.
Related concepts
“Replicating Simple Large Objects from Tblspaces” on page 2-13
“Replicating Large Objects from Blobspaces or Sbspaces” on page 2-14
All time stamps and internal computations are performed in Greenwich Mean
Time (GMT). The delete wins conflict-resolution rule assumes time synchronization
between cooperating Enterprise Replication servers.
The delete wins rule is similar to the time stamp rule except that it prevents upsert
operations and does not use a secondary conflict resolution rule. The delete wins
rule prevents upsert operations that results from an UPDATE operation that is
converted to an INSERT operation because the row to update was not found on
the target server. An upsert operation can occur if a row is deleted from a target
server before an UPDATE operation is processed on that target server or if an
UPDATE operation was processed by the target server before the INSERT
operation for that row. Depending on your business logic, upsert operations might
violate referential integrity.
The delete wins rule prevents upsert operations in the following ways:
v If a row is deleted on a replication server, that row is deleted on all other
replication servers, regardless of whether an UPDATE operation to that row
occurred after the delete.
v If an UPDATE operation to a row is received before its INSERT operation, the
UPDATE operation fails and generates and ATS or RIS file. The INSERT
operation succeeds, but results in data inconsistency. To repair the inconsistency,
run the cdr check replicate command with the --repair option.
The delete wins rule handles time stamp conflicts differently depending on which
scope is in effect:
v Row scope
Enterprise Replication evaluates one row at a time. The row with the most
recent time stamp wins the conflict and is applied to the target database servers.
v Transaction scope
Enterprise Replication evaluates the most recent row-update time among all the
rows in the replicated transaction. This time is compared to the time stamp of
the appropriate target row. If the time stamp of the replicated row is more recent
than the target, the entire replicated transaction is applied.
If the time stamps are equal, the transaction from the database server with the
lower value in the cdrserver shadow column wins the conflict.
The table below shows how a conflict is resolved with the delete wins rule with
row scope. The time stamp Tlast_update (the time of the last update) represents the
Enterprise Replication first checks to see if a row with the same primary key exists
in either the target table or its corresponding delete table.
If the row exists, Enterprise Replication uses the latest time stamp to resolve the
conflict.
Table 3-3. Conflict Resolution Based on the Time Stamp
Database Operation from source server
Row Exists on
Target? Time Stamp Insert Update Delete
No n/a Apply row Discard row and Apply row (INSERT into
generate and ATS or Enterprise Replication
RIS file delete table)
Yes Tlast_update < Trepl Apply row (Convert Apply row Apply row
INSERT to UPDATE)
Tlast_update > Trepl Discard row Discard row Apply row
Tlast_update = Trepl The database server with the lower value in the cdrserver shadow
column wins the conflict.
Important: Do not remove the delete tables created by Enterprise Replication. The
delete table is automatically removed when the last replicate defined with conflict
resolution is deleted.
Related concepts
“Time Synchronization” on page 4-14
“Time Stamp Conflict Resolution Rule” on page 3-7
Chapter 3. Selecting the Enterprise Replication System and Network Topology 3-13
Conflict Resolution Scope
Each conflict-resolution rule behaves differently depending on the scope.
Enterprise Replication defers some constraint checking on the target tables until the
transaction commits. If a unique constraint or foreign-key constraint violation is
found on any row of the transaction at commit time, the entire transaction is
rejected (regardless of the scope) and, if you have ATS set up, written to the ATS
directory.
Transaction and row scopes are only applicable for apply failure related to conflict
resolution, such as missing rows or newer local rows. For other errors, such as lock
timeouts, constraint problems, lack of disk space, and so on, the whole incoming
transaction is aborted, rolled back, and spooled to ATS or RIS files if so configured,
regardless of whether row scope is defined.
Related concepts
“Failed Transaction (ATS and RIS) Files” on page 8-3
“Time Stamp Conflict Resolution Rule” on page 3-7
Related tasks
“Specifying Conflict Resolution Rules and Scope” on page 6-7
Related reference
“cdr define replicate” on page A-53
The topology that you choose influences the types of replication that you can use.
These topics describe the topologies that Enterprise Replication supports.
Europe
Italy Germany
France
If necessary, you can also add high-availability clusters and a backup server to any
server to provide high availability. For more information, see “High-Availability
Replication System” on page 5-1.
The root is the point from which database servers branch into a
logical sequence. All root database servers within Enterprise
Replication must be fully interconnected.
Nonroot server An Enterprise Replication server that is not a root database
server but has a complete global catalog and is connected to its
parent and to its children
Chapter 3. Selecting the Enterprise Replication System and Network Topology 3-15
Table 3-5. Replication Topology Terms (continued)
Term Definition
Tree A data structure that contains database servers that are linked
in a hierarchical manner
The topmost node is called the root. The root can have zero or
more child database servers; the root is the parent database
server to its children.
Parent-child A relationship between database servers in a tree data structure
in which the parent is one step closer to the root than the child.
Leaf server A database server that has a limited catalog and no children.
A root server is fully connected to all other root servers. It has information about
all other replication servers in its replication environment. Figure 3-6 on page 3-15
shows an environment with four root servers.
A nonroot server is similar to a root server except that it forwards all replicated
messages for other root servers (and their children) through its parent. All nonroot
servers are known to all root and other nonroot servers. A nonroot server might or
might not have children. All root and nonroot servers are aware of all other servers
in the replication environment.
Japan China
Bejing Guangzhou
Hong Kong
Shanghai
Asia is the root database server. Japan, China, and Guangzhou are nonroot
database servers. You can define Beijing, Shanghai, and Hong Kong as either
nonroot database servers or leaf database servers, depending on how you plan to
use them. The dashed connection from China to Shanghai indicates that Shanghai
is a leaf server.
You could define a replicate that replicates data exclusively between Shanghai and
Japan. However, the transaction data would have to go through China and Asia. If
either China or Asia is offline replication is suspended. Similarly, a replicate
defined between Japan and China would require Asia to be functioning, even
though both Japan and China, as nonroot servers, have entries in their sqlhosts
files for each other.
Parent servers are good candidates for using high-availability clusters to provide
backup servers.
Chapter 3. Selecting the Enterprise Replication System and Network Topology 3-17
North America France
Europe
Germany
Asia
Japan China
Beijing Guangzhou
Hong Kong
Shanghai
In Figure 3-8, North America, Asia, and Europe are root database servers. That is,
they are fully connected with each other. France and Germany are in a tree whose
root is Europe. Asia is the root for the six database servers in its tree.
In a forest of trees, all replication messages from one tree to another must pass
through their roots. For example, a replication message from Beijing to France
must pass through China, Asia, and Europe.
To ensure that all servers retain access to the replication system, use
high-availability clusters on parent servers. For more information, see “Using
high-availability clusters in a forest of trees topology” on page 5-4.
For more information on preparing the network environment, see the chapter on
client/server connectivity in the IBM Informix Administrator's Guide.
Important: Leave a blank line at the end of the hosts file on Windows.
Configure port numbers for replication servers in one of the following ways:
v Specify the port numbers in the sqlhosts file. This method risks conflicting with
port numbers being used by other applications.
v Specify the service names in the sqlhosts file and specify the port numbers for
each service name in the services file.
Important: Leave a blank line at the end of the services file on Windows.
For example, your services file might look like the following:
sydney 5327/tcp
melbourne 5327/tcp
If the database servers reside on the same system, you must provide unique port
numbers for each.
Typically, a server group includes only one database server. However, if the
computer has multiple network protocols or network interface cards, the server
group includes all aliases for the database server. Enterprise Replication treats the
server group as one object, whether it includes one or several database server
names.
All Enterprise Replication commands and options use the name of the database
server group of the more familiar database server name (that is, the name specified by
the INFORMIXSERVER environment variable) for all references to database servers.
The exception is the --connect option, which can use both server name or group
name. This publication also refers to a database server group as a server group.
Each replication server must have complete sqlhosts server group information for
the entire domain, except leaf servers in hierarchical routing topologies. Each leaf
server must have sqlhosts connectivity information for itself and its parent (hub).
On UNIX, a database server group is defined in the sqlhosts file. The following
example shows a very simple sqlhosts file for four Enterprise Replication servers,
serv1, serv2, serv3, and serv4 and their database server groups. The first line
describes the database server group g_serv1, which includes the database server
serv1, and so on.
dbservername nettype hostname servicename options
The following table describes the fields in the sqlhosts example above.
Table 4-1. sqlhosts fields
Field name Description
dbservername Database server group name or database server name
nettype Type of connection (composed of the database server product,
interface type, and network protocol). Enterprise Replication
cannot use shared memory connections even if the replicating
servers are on same machine.
hostname The name of the computer where the database server resides.
servicename The service name in the services file or the port number.
options v The g option specifies the name of the group to which the
database server belongs.
v The i option specifies a unique identifier for the database
server. Make sure that this identifier is consistent for the
database server across all nodes in the domain. Must be a
positive integer from 1 through 32767.
The secure ports listed in the sqlhosts files can only be used for Enterprise
Replication communication. You must configure a separate port for client/server
communications with the local replication servers.
You must run the cdr utility on the local computer and specify the regular
connection with the Connect option, for example:
cdr list server --connect=a_serv1
In this example, serv1 and c_serv1 are two connection ports on the same database
server. Encrypted client/server communication uses the c_serv1 port, while
encrypted Enterprise Replication uses the serv1 port.
The database server normally logs only columns that have changed. This behavior
is called the logical-log record reduction option. Enterprise Replication deactivates
this option for tables that participate in replication. (The logical-log record
reduction option remains enabled for tables that do not participate in Enterprise
Replication.) Enterprise Replication logs all columns, not only the columns that
have changed, which increases the size of your logical log.
To determine the size of your logical log, examine your data activity for normal
operations and for the replication system you defined. Keep in mind that defining
replication on a table causes Enterprise Replication to deactivate log reduction for
that table, and that your transactions might log more data.
Use the following guidelines when configuring your logical log files:
v Make sure that all logical log files are approximately the same size.
v Make the size of the logical log files large enough so that the database server
switches log files no more than once every 15 minutes during normal
processing.
v Plan to have sufficient logical-log space to hold at least four times the maximum
transaction size.
v Set LTXEHWM (long-transaction, exclusive-access, high-watermark) 30 percent
larger than LTXHWM (long-transaction high-watermark).
Important: If you specify that the database server allocate logical log files
dynamically (DYNAMIC_LOGS), it is recommended that you set LTXEHWM to no
higher than 70 when using Enterprise Replication.
For more information about logical logs and these configuration parameters, see
IBM Informix Administrator's Reference and IBM Informix Administrator's Guide.
The database server can add logs dynamically when Enterprise Replication
approaches a potential log wrap situation if the CDR_MAX_DYNAMIC_LOGS
configuration parameter is set to a non-zero integer.
Delete tables handle conflicts such as when a DELETE or UPDATE operation finds
no corresponding row on the target. The DTCleaner thread removes a row from
the delete tables after all the servers have progressed beyond that row. Enterprise
Replication does not create delete tables for tables that have replicates defined with
a conflict resolution rule of ignore or always-apply.
Delete tables are created on the database server where the data originates and on
all the database servers to which data gets replicated. Delete tables are stored in
the same dbspaces, using the same fragmentation strategy, as their base tables.
Important: Do not remove the delete tables created by Enterprise Replication. The
delete table is automatically removed when the last replicate defined with conflict
resolution is deleted.
Related concepts
“Update-Anywhere Replication System” on page 3-4
Related tasks
“Replicating Only Changed Columns” on page 6-8
If you plan to use any conflict-resolution rule except ignore or always-apply, you
must allow for an additional 8 bytes for the CRCOLS shadow columns, cdrserver
and cdrtime, which store the server and time stamp information that Enterprise
Replication uses for conflict resolution.
The following table shows the amount of space used by each shadow column.
Table 4-2. Shadow column size
Shadow column name Data type Size
cdrserver INTEGER 4 bytes
cdrtime INTEGER 4 bytes
ifx_replcheck BIGINT 8 bytes
The send and receive queues reside in memory and are managed by the Reliable
Queue Manager (RQM). The CDR_QUEUEMEM configuration parameter
(“CDR_QUEUEMEM Configuration Parameter” on page B-7) specifies the amount
of memory space that is available for the data queues.
When a queue in memory fills (for the receive queue, this only occurs with large
transactions), the transaction buffers are written (spooled) to disk. Spooled
transactions consist of transaction records (headers that contain internal information
for Enterprise Replication), replicate information (summaries of the replication
information for each transaction), and row data (the actual replicated data). Spooled
transaction records and replication records are stored in transaction tables and
replication tables in a single dbspace. Spooled row data is stored in one or more
sbspaces.
Important: To prevent the send and receive queues from spooling to disk, see
“Preventing Memory Queues from Overflowing” on page 8-14.
To determine the size of your transaction record dbspace, you must determine the
estimated number of transactions in a given period. You should allocate 110 bytes
per transaction to the dbspace and allocate enough disk space to store 24 hours of
transaction records. For example, if your network is down for 24 hours, and you
estimate that you will log 1000 transactions each day, the size of the transaction
record dbspace should be at least 108 kilobytes (110 bytes * 1000 transactions /
1024).
To create the transaction record dbspace, use onspaces -c. For example, to create a
110 kilobyte dbspace called er_dbspace using raw disk space on UNIX with an
offset of 0, enter:
onspaces -c -d er_dbspace -p /dev/raw_dev1 -o 0 -s 110
The pathname for the dbspace cannot be longer than 256 bytes.
For information on creating dbspaces, see the chapter on managing disk space in
the IBM Informix Administrator's Guide and the IBM Informix Administrator's
Reference.
Related tasks
“Setting Configuration Parameters” on page 4-13
Important: Before starting Enterprise Replication, you must create at least one
sbspace for spooled row data and set the CDR_QDATA_SBSPACE configuration
parameter to its location.
Follow these guidelines when creating sbspaces for spooled row data:
v Create all the sbspaces of same default log mode type with the same size.
v Do not use Enterprise Replication row data sbspaces for non-Enterprise
Replication activity.
v Ensure that the sbspaces are sufficiently large.
To determine the size of your spooled row data sbspaces, determine your log
usage and then consider how much data you can collect if your network goes
down. For example, assume that you usually log 40 megabytes of data each day,
but only 10 percent of that is replicated data. If your network is down for 24
hours and you estimate that you will log 4 megabytes of replicated data each
day, the size of the sbspaces you identify for the spooled row data must be a
total of at least 4 megabytes.
Windows Only
On Windows, increase the resulting size of the sbspace by approximately
a factor of two. (The default page size, the way that data maps onto a
page, and the number of pages written to disk differs on Windows.)
Important: When the row data sbspaces fill, Enterprise Replication hangs until you
either resolve the problem that is causing Enterprise Replication to spool or
To create row data sbspaces, use the onspaces -c utility. For example, to create a
4-megabyte sbspace, called er_sbspace, using raw disk space on UNIX with an
offset of 0, enter:
onspaces -c -S er_sbspace -p /dev/rdsk/c0t1d0s4 -o 0 -s 4000\
-m /dev/rdsk2/c0t1d0s4 0 \
-Df "AVG_LO_SIZE=2,LOGGING=OFF"
The -m option specifies the location and offset of the sbspace mirror. The -Df
option specifies default behavior of the smart large objects stored in the sbspace:
v AVG_LO_SIZE (average large object size)
Set this parameter to the expected average transaction size (in kilobytes). The
database server uses this value to calculate the metadata size. The minimum
value for AVG_LO_SIZE is 2 kilobytes, which is appropriate for Enterprise
Replication in most cases. (The default value of AVG_LO_SIZE is 32 kilobytes.) If
you set AVG_LO_SIZE to larger than the expected transaction size, you might
run out of metadata space. If you set AVG_LO_SIZE too small, you might waste
space on metadata.
v LOGGING
Set this parameter to OFF to create an sbspace without logging. Set this
parameter to ON to create an sbspace with logging. It is recommended that you
use a combination of logging and non-logging sbspaces for Enterprise
Replication. For more information, see “Logging Mode for sbspaces.”
Enterprise Replication uses the default log mode that the sbspace was created with
for spooling row data.
Create sbspaces with a default logging mode of ON or OFF according to the types
of transactions Enterprise Replication replicates:
v LOGGING=ON
Create sbspaces with LOGGING set to ON to support these situations:
– Replicated systems with high-availability clusters
Enterprise Replication must use logging sbspaces for transactions involved in
high-availability clusters.
– Small transactions
Enterprise Replication uses logging sbspaces for transactions that are less than
a page size (2K or 4K) of replicated data.
For logging sbspaces, performance might be enhanced because logging mode
enables asynchronous IO. However, a logging sbspace consumes additional
logical-log space.
v LOGGING=OFF
Create sbspaces with LOGGING set to OFF to support replication of large
transactions (greater than a page size of replicated data).
Important: Do not change the Enterprise Replication sbspace default log mode
while Enterprise Replication is running. To change the default log mode, follow the
procedure below.
You can change the default logging mode of the row data sbspace if you have
more than one sbspace specified by the CDR_QDATA_SBSPACE configuration
parameter.
Important: Do not drop an Enterprise Replication row data sbspace using the
onspaces -d -f (force) command.
You can drop a row data sbspace if you have more than one sbspace specified by
the CDR_QDATA_SBSPACE configuration parameter.
The location of the sbspace used for the paging file is determined by the first of
the following ONCONFIG configuration parameters that is set:
v SBSPACETEMP
v SBSPACENAME
v CDR_QDATA_SBSPACE
The size of the paging sbspace should be at least three times the size of the largest
transaction to be processed. This sbspace is also used by the database server for
other tasks; consider its overall usage when determining size requirements.
Important: If the paging sbspace fills, Enterprise Replication hangs until you
allocate additional disk space to the sbspace. If additional space is unavailable, use
the cdr stop command to stop replication.
If you set up ATS and RIS, Enterprise Replication writes ATS and RIS files to
directories on the system:
v ATS files
If you are using primary-target replication, create the ATS directory on the target
system. If you are using update-anywhere replication (“Update-Anywhere
Replication System” on page 3-4) and have a conflict resolution rule other than
ignore or always-apply (“Conflict Resolution” on page 3-6) enabled, create the ATS
directory on all participating replication systems.
v RIS files
If you have a conflict resolution role other than ignore or always-apply enabled,
create the RIS directory on all participating replication systems.
The default location for these directories is /tmp (UNIX) or \tmp (Windows).
Specify a location other than /tmp or \tmp for the spooling directories.
Create the new location for these directories before you define the server for
replication. The path names for the ATS and RIS directories cannot be longer than
256 characters.
For information about ATS and RIS, refer to Chapter 8, “Monitoring and
Troubleshooting Enterprise Replication,” on page 8-1.
If you are using high-availability clusters with Enterprise Replication, set up your
servers according to the instructions in “Setting Up Database Server Groups for
High-Availability Cluster Servers” on page 5-5.
In the onconfig file for each database server, make sure that the DBSERVERNAME
is set to the correct database server. If you use both DBSERVERNAME and
DBSERVERALIASES, DBSERVERNAME should refer to the TCP connection and
not to a shared-memory connection. For information about database server aliases,
refer to the IBM Informix Administrator's Guide.
If you want to suppress certain data sync error and warning codes from appearing
in ATS and RIS files, you can set the CDR_SUPPRESS_ATSRISWARN configuration
parameter.
If you want to customize the number of data sync threads to use, you can set the
CDR_APPLY configuration parameter.
If you want to encrypt network communications, make sure that the following
configuration parameters are set in the onconfig file for each database server:
v ENCRYPT_CDR is set to 1 or 2 to enable encryption. The default value is 0,
which prevents encryption.
v ENCRYPT_CIPHERS specifies which ciphers and cipher modes are used for
encryption.
v ENCRYPT_MAC controls the level of Message Authentication Code (MAC) used
to ensure message integrity.
v ENCRYPT_MACFILE is set to the full path and filenames of the MAC files.
v ENCRYPT_SWITCH is set to the number of minutes between automatic
renegotiations of ciphers and keys. (The cipher is the encryption methodology.
The secret key is the key used to build the encrypted data using the cipher.)
When replication is active on an instance, you might need to double the amount of
lock resources, to accommodate transactions on replicated tables.
Time Synchronization
Whenever you use replication that requires time stamp, time stamp with a stored
procedure, or delete wins conflict resolution, you must synchronize the operating
system times of the database servers that participate in the replicate.
All timestamps and internal computations are performed in Greenwich Mean Time
(GMT) and have an accuracy of plus or minus one second.
Important: These commands do not guarantee the times will remain synchronized.
If the operating system times of the database servers do become out of sync or if
their times move backward, time stamp or stored procedure conflict resolution
might produce failures caused by incorrect time stamps.
Related concepts
“Conflict Resolution” on page 3-6
“Delete Wins Conflict Resolution Rule” on page 3-12
“Time Stamp Conflict Resolution Rule” on page 3-7
When you define a new replicate on tables with existing data on different database
servers, the data might not be consistent. Similarly, if you add a participant to an
existing replicate, you must ensure that all the databases in the replicate have
consistent values.
Blocking Replication
You might need to block replication so that you can put data into a database that
you do not want replicated, perhaps for a new server or because you had to drop
and re-create a table.
To block replication while you prepare a table, use the BEGIN WORK WITHOUT
REPLICATION statement. This starts a transaction that does not replicate to other
database servers.
The following code fragment shows how you might use this statement:
The following list indicates actions that occur when a transaction starts with
BEGIN WORK WITHOUT REPLICATION:
v SQL does not generate any values for the cdrserver, cdrtime, and ifx_replcheck
shadow columns for the rows that are inserted or updated within the
transaction. You must supply values for these columns with the explicit column
list. You must supply these values even if you want the column values to be
NULL.
v To modify a table with shadow columns that is already defined in Enterprise
Replication, you must explicitly list the columns to be modified. The following
two examples show an SQL statement and the correct changes to the statement
to modify columns:
– If table_name1 is a table defined for replication, you must change the
following statement:
LOAD FROM filename INSERT INTO table_name1;
to:
LOAD FROM filename INSERT INTO table_name1 \
(list of columns);
The list of columns must match the order and the number of fields in the load file.
v If table_name3 and table_name4 are tables defined for replication with the same
schema, you must change the following statement:
INSERT INTO table_name3 SELECT * FROM table_name4;
to an explicit statement, where col1, col2,..., colN are the columns of the table:
INSERT INTO table_name3 VALUES
(cdrserver, cdrtime,ifx_replcheck, col1, ..., colN)
cdrserver, cdrtime *
FROM table_name4;
The shadow columns (cdrserver, cdrtime, and ifx_replcheck) are not included in
an * list.
For more information about these statements, refer to the IBM Informix Guide to
SQL: Syntax.
Related concepts
“Load and unload data” on page 4-21
Important: You must use the following syntax when you issue the BEGIN WORK
WITHOUT REPLICATION statement from Informix ESQL/C programs. Do not use
the ‘$' syntax.
sprintf(stmt, “BEGIN WORK WITHOUT REPLICATION”);
EXEC SQL execute immediate :stmt;
To define the cdrserver and cdrtime shadow columns when you create a new
table, use the WITH CRCOLS clause. For example, the following statement creates
a new table named customer with a data column named id and the two shadow
columns:
CREATE TABLE customer(id int) WITH CRCOLS;
To add the cdrserver and cdrtime shadow columns to an existing replicated table:
1. Set alter mode on the table by running the cdr alter --on command.
Adding CRCOLS columns to an existing table can result in a slow alter operation
if any of the table columns have data types that require a slow alter. If a slow alter
operation is necessary, make sure you have disk space at least twice the size of the
original table, plus extra log space.
For example, the following statement adds the shadow columns to an existing
table named customer:
ALTER TABLE customer ADD CRCOLS;
You cannot drop conflict resolution shadow columns while replication is active. To
drop the cdrserver and cdrtime shadow columns, stop replication and then use the
DROP CRCOLS clause with the ALTER TABLE statement. For example, the
following statement drops the two shadow columns from a table named customer:
ALTER TABLE customer DROP CRCOLS;
Related concepts
“Shadow Columns” on page 2-6
“Shadow Column Disk Space” on page 4-7
Using the WITH CRCOLS Option (SQL Syntax)
“Limited SQL Statements” on page 2-10
Related reference
Enterprise Replication shadow columns (SQL Syntax)
To define the ifx_replcheck shadow column when you create a new table, use the
WITH REPLCHECK clause. For example, the following statement creates a new
table named customer with a data column named id and the ifx_replcheck
shadow column:
CREATE TABLE customer(id int) WITH REPLCHECK;
Because altering a table to add the ifx_replcheck shadow column is a slow alter
operation, make sure you have disk space at least twice the size of the original
table plus log space.
For example, the following statements add the ifx_replcheck shadow column to an
existing table named customer:
ALTER TABLE customer ADD REPLCHECK;
For more information on the CREATE TABLE and ALTER TABLE statements, see
the sections in the IBM Informix Guide to SQL: Syntax.
Related concepts
“Shadow Column Disk Space” on page 4-7
“Shadow Columns” on page 2-6
“Limited SQL Statements” on page 2-10
Related tasks
“Indexing the ifx_replcheck Column” on page 7-18
Related reference
Enterprise Replication shadow columns (SQL Syntax)
Using the WITH REPLCHECK Keywords (SQL Syntax)
The DBSA user who runs Enterprise Replication commands must be a member of
the DBSA group on all of the replication servers in the domain.
For some Enterprise Replication commands, you must grant the DBSA user
additional permissions on tables or files. The following table describes the
permissions needed for each command.
Table 4-3. Permissions for the DBSA user
Command Type of Permission Tables, Files, or Database
cdr check replicate INSERT The tables that participate in
replication. Must be granted
cdr check replicateset UPDATE on all replication servers in
the domain.
cdr define replicate DELETE
To update the permissions on a table or database, use the GRANT statement. For
example, the following statement grants INSERT and UPDATE permissions on the
rsncjobdef_tab table to the DBSA member with the user name of carlo:
GRANT INSERT, UPDATE ON rsncjobdef_tab TO carlo;
For more information on the GRANT statement, see the IBM Informix Guide to SQL:
Syntax.
To update the permissions on ATS and RIS files, use an operating system
command, such as the chown UNIX command.
If you have not yet set up your replication environment, for loading data, you can
use the following tools:
v High-Performance Loader
v onunload and onload Utilities
v dbexport and dbimport utilities
v UNLOAD and LOAD statements
v External tables
When you unload and load data, you must use the same type of utility for both
the unload and load operations. For example, you cannot unload data with the
onunload utility and then load the data with a LOAD statement.
If you want to use load and unload tools on tables that are already being
replicated, you should block replication while you prepare the table.
If a table that you plan to replicate includes the CRCOLS or REPLCHECK shadow
columns, the statements that you use for unloading the data must explicitly name
the shadow columns. If you use the SELECT statement with * FROM table_name to
High-Performance Loader
The High-Performance Loader (HPL) provides a high-speed tool for moving data
between databases.
How you use the HPL depends on how you defined the tables to replicate.
You can also use deluxe mode without replication to load data. After a deluxe
mode load, you do not need to perform a level-0 archive. Deluxe mode also allows
you to load TEXT and BYTE data and opaque user-defined types.
For information about HPL, refer to the IBM Informix High-Performance Loader
User's Guide.
If you want to unload selected columns of a table, you must use either the
UNLOAD statement or the HPL.
Restriction: You can only use the onunload and onload utilities in identical
(homogeneous) environments.
If you use the onload utility while replication is active, you must synchronize the
data after you finish loading the data.
Related concepts
The onunload and onload utilities (Migration Guide)
For more information about the UNLOAD and LOAD statements, see the IBM
Informix Guide to SQL: Syntax.
Replicate zebra replicates data from table table1 for the following database servers:
alpha, beta, and gamma.
The servers alpha, beta, and gamma belong to the server groups g_alpha, g_beta,
and g_gamma, respectively. Assume that alpha is the database server from which
you want to get the initial copy of the data.
This step starts the flow of data from alpha, beta, and gamma to delta.
At this point, you might see some transactions aborted because of conflict.
Transactions can abort because alpha, beta, and gamma started queuing data
from delta in step 4. However, those same transactions might have been moved
in steps 5 and 7.
This chapter covers how to include other data replication solutions, such as
high-availability data replication, in your Enterprise Replication system. The
following topics are covered:
v The design of a high-availability cluster replication system
v Preparing a high-availability cluster database server
v Managing Enterprise Replication with a high-availability cluster
For a complete description of data replication, see the IBM Informix Administrator's
Guide.
The secondary server does not participate in IBM Informix Enterprise Replication;
it receives updates from the primary server. If the primary server in a
high-availability cluster becomes unavailable, one of the secondary servers takes
over the role of the primary server. Using Connection Manager, you can specify
which secondary server should take over in the event of a failure of the primary
server.
High-Availability
Secondary Server
Enterprise
Replication
ER Target ER Target
(Read-only) (Read-only)
Primary server
(Read/write)
ER Target ER Target
(Read-only) (Read-only)
If the primary server fails, the secondary server is set to standard mode, the target
database connections are redirected to it, and IBM Informix Enterprise Replication
continues, as illustrated in Figure 5-2 on page 5-3.
(Read/write)
ER Target ER Target
(Read-only) (Read-only)
Primary server
(offline)
ER Target ER Target
(Read-only) (Read-only)
In an update-anywhere replication system, you can use HDR with any server for
which you need high availability, as illustrated in Figure 5-3.
Critical server
(Primary)
Backup server
(High Availability Secondary)
If China fails, then Beijing and Shanghai can no longer replicate with other
servers in the replication system; Guangzhou and Hong Kong can only replicate
with each other. However, if China was part of a high-availability cluster, when it
failed, the secondary server would replace it and replication could continue, as
illustrated in Figure 5-4 on page 5-4.
Beijing Guangzhou
Hong Kong
Shanghai
In this example, Asia and Guangzhou, which are also parent servers, could also
benefit from using a high-availability cluster to ensure high availability.
For example, in Figure 3-8 on page 3-18, Asia, Europe, China, and Guangzhou
should use high-availability clusters to provide backup servers, as illustrated in
Figure 5-5 on page 5-5.
Europe
secondary
North America France
Europe
primary
High-Availability Germany
Cluster
Asia Asia
High-Availability
secondary primary Cluster
China China
primary secondary
Japan
Guangzhou Guangzhou
primary secondary
Hong Kong
Shanghai
For example, Figure 5-6 on page 5-6 illustrates two Enterprise Replication nodes,
one of which is an HDR pair.
HDR
serv1_sec
g_serv1 g_serv2
Figure 5-6. Database Server Groups for Enterprise Replication with HDR
In this example, the HDR pair consists of the primary server, serv1, and the
secondary server, serv1_sec. These two servers belong to the same database server
group, g_serv1. The non-HDR server, serv2, belongs to the database server group
g_serv2. The following example displays the SQLHOSTS file for this configuration.
Important: If you use the g=server option in the group member definition, you
can put the definition anywhere in the sqlhosts file.
Either HDR or Enterprise Replication can be set up first on the HDR pair serv1
and serv1_sec, but Enterprise Replication cdr commands must be executed only on
the primary server. If any cdr commands are attempted on the secondary server, a
–117 error is returned: Attempting to process a cdr command on an HDR secondary
server.
Related concepts
“Load and unload data” on page 4-21
“Database Server Groups” on page 4-2
If you need to start the primary server while Enterprise Replication is running on
the secondary server, use the oninit –D command to prevent Enterprise
Replication and HDR from starting on the primary server.
If the problem has been resolved on the primary server and you wish to
reestablish it as the primary server, then first stop Enterprise Replication on the
secondary server. Otherwise, Enterprise Replication attempts to restart on the
primary server while it is still active on the secondary server. Table 5-2 shows how
to reestablish the primary server.
Table 5-2. Reestablishing the Primary Server
Step On the Primary On the Secondary
1. cdr command
cdr stop
2. onmode command
onmode -s
3. onmode command
onmode -d secondary
4. oninit
5. cdr command
cdr start
If you remove a server from a cluster, use the cdr delete server –force command to
eliminate Enterprise Replication from that server. For example, the two HDR
servers are being split and the secondary server is to be used for reporting
purposes. After the report processing is complete, HDR can be reestablished. “cdr
delete server” on page A-74 shows how to remove a secondary server from a
high-availability cluster and Enterprise Replication.
Table 5-3. Removing the Secondary Server from a cluster and ER
Step On the Primary On the Secondary
1. onmode command onmode command
onmode -d standard onmode -d standard
2. cdr command
cdr delete server -f server_name
If the HDR primary server has problems communicating to its secondary server,
Enterprise Replication is in a suspended state until one of the following actions is
taken:
v Resolve the connection problem between HDR pairs.
v Convert the primary server to standard mode.
For more information on managing high-availability clusters, see the IBM Informix
Administrator's Guide.
Performance Considerations
When Enterprise Replication is running on an HDR pair, some operations cannot
be performed until the logs are shipped to the secondary server. This delay
prevents possible inconsistency within the Enterprise Replication domain during
an HDR switch-over to a secondary server. Consequently, there is a slight increase
in replication latency when Enterprise Replication is used with HDR. You can
control this latency increase by setting the DRINTERVAL configuration parameter
to a low value.
To bring the server from offline to online, issue the following command for your
operating system.
To bring the server from quiescent mode to online on either UNIX or Windows,
enter onmode -m.
For more information on initializing the database server, see the chapter on
database server operating modes in the IBM Informix Administrator's Guide.
To define the replication server in a new domain by using the cdr utility, use the
cdr define server command to connect to the database server and specify the
database server group name. For example, the following command connects to a
server called stan and creates a new domain containing the database server group
g_stan:
The --init option specifies the database server group to add to the replication
domain. If the INFORMIXSERVER environment variable is not set to the server
that you are defining, specify the --connect=server_name option. You can also
configure replication attributes for the server.
You can specify any existing server in the domain, however, if you define a server
as a nonroot or a leaf server, then the synchronization server becomes the parent of
the new server. For example, if you add a new server kauai as a leaf server and
want its parent to be hawaii, then specify hawaii with the --sync option.
Related concepts
“Row Data sbspaces” on page 4-9
“Choosing a Replication Network Topology” on page 3-14
“Enterprise Replication Server Administrator” on page 2-1
Related tasks
“Setting Up Failed Transaction Logging” on page 6-8
Related reference
“cdr define server” on page A-64
“cdr define replicate” on page A-53
When you define a replication server, you can specify the following attributes in
the cdr define server command:
v Set the idle timeout.
To specify the time (in minutes) that you want to allow the connection between
two Enterprise Replication servers to remain idle before disconnecting, use the
--idle=timeout option.
You can later change the values of this attribute with the cdr modify server
command.
v Specify the location of the ATS and RIS directories.
To use ATS, specify the directory for the Aborted Transaction Spooling (ATS)
files for the server using --ats=dir or--ris=dir . To prevent either ATS or RIS file
generation, set the directory to /dev/null (UNIX) or NUL (Windows).
You can later change the values of these attributes with the cdr modify server
command.
v Specify the format of the ATS and RIS files.
Use the –atsrisformat=type option to specify whether the ATS and RIS files are
generated in text format, XML format, or both formats.
You can later change the values of this attribute with the cdr modify server
command.
v Specify the type of server if you are using hierarchical replication:
Defining Replicates
To define a replicate, use the cdr define replicate command.
After you define the replicate and participants, you must manually start the
replicate using the cdr start replicate command.
Defining Participants
You must define a participant for each server involved in the replicate definition
using the cdr define replicate command. Each participant in a replicate must
specify a different database server.
Restriction: You cannot start and stop replicates that have no participants.
Chapter 6. Defining Replication Servers, Replicates, Participants, and Replicate Sets 6-3
Restriction: Do not create more than one participant definition for each row and
column to replicate. If the participant is the same, Enterprise Replication attempts
to insert or update duplicate values during replication. For example, if one
participant modifier includes WHERE x < 50 and another includes WHERE x <
100, Enterprise Replication sends the data for when x is between 50 and 100 twice.
In addition, for a primary-target replication system, you can specify the participant
type as either primary or target (receive-only). If you do not specify the participant
type, Enterprise Replication defines the participant as update-anywhere, by default.
For example, in the following participant definition, the P indicates that in this
replicate, hawaii is a primary server:
“P db1@g_hawaii:informix.mfct” “select * from mfct” \
If any data in the selected columns changes, that changed data is sent to the
secondary servers.
In the following example, the R indicates that in this replicate, maui is a secondary
server:
“R db2@g_maui:informix.mfct” “select * from mfct”
The specified table and columns receive information sent from the primary server.
Changes to those columns on maui are not replicated.
Important: The R in the participant definition indicates that the table is receive-only
mode, not that the table is in read-only mode.
If you do not specify the participant type, Enterprise Replication defines the
participant as update-anywhere by default. For example:
“db1@g_hawaii:informix.mfct” “select * from mfct” \
“db2@g_maui:informix.mfct” “select * from mfct”
Related concepts
“Primary-Target Replication System” on page 3-1
Related reference
“Participant and participant modifier” on page A-4
When you define a master replicate, you must specify a participant that is on the
server for which you are running the command. This participant is used to create
the dictionary information for the master replicate. If you specify additional
participants in the cdr define replicate command, they are verified against the
master definition and added to the replicate if they pass validation. If any
participant fails validation, the cdr define replicate command fails and that
participant is disabled.
Chapter 6. Defining Replication Servers, Replicates, Participants, and Replicate Sets 6-5
You can modify an existing master replicate to remove name verification by using
the --name=n option of the cdr modify replicate command.
Related reference
“cdr modify replicate” on page A-93
When you define an empty master replicate, you must specify only one participant
in the cdr define replicate command. This participant is used to create the master
dictionary information but is not added to the replicate.
The --empty option is only supported for master replicates, you cannot use it
without the --master option.
You create a shadow replicate using the cdr define replicate command with the
--mirrors option, as described in “cdr define replicate” on page A-53.
When you define a shadow replicate, its state is always set to the same state as the
primary replicate. If you change the state of the primary replicate, all its shadow
replicates’ states are also changed to the same state.
You cannot delete a primary replicate if it has any shadow replicates defined. You
must first delete the shadow replicates, and then the primary replicate.
You cannot modify a primary replicate (using the cdr modify replicate command)
if it has any shadow replicates defined. Also, you cannot modify shadow replicates
directly.
You cannot suspend or resume a primary replicate (using the cdr suspend
replicate or cdr resume replicate command) if it has any shadow replicates
defined. Also, you cannot suspend or resume shadow replicates directly. If the
primary replicate and its shadow replicates are part of an exclusive replicate set,
you can suspend or resume the entire replicate set using the cdr suspend replicate
or cdr resume replicate command.
If you add a primary replicate to an exclusive replicate set, all its shadow
replicates are also automatically added. If you delete a primary replicate from an
exclusive replicate set, all its shadow replicates are also automatically deleted.
You can also specify the scope using the --scope=scope option:
v transaction (default)
v row
Related concepts
“Update-Anywhere Replication System” on page 3-4
“Conflict Resolution Rule” on page 3-6
“Conflict Resolution Scope” on page 3-14
Related reference
“cdr define replicate” on page A-53
Important: If you use time-based replication and two tables have referential
constraints, the replicates must belong to the same exclusive replicate set. For more
information, see “Exclusive Replicate Sets” on page 6-10.
Chapter 6. Defining Replication Servers, Replicates, Participants, and Replicate Sets 6-7
Setting Up Failed Transaction Logging
The Aborted Transaction Spooling (ATS) files and Row Information Spooling (RIS)
files contain information about failed transactions and aborted rows. You can use
this information to help you diagnose problems that arise during replication.
Tip: Until you become thoroughly familiar with the behavior of the replication
system, select both ATS and RIS options.
Related concepts
Chapter 8, “Monitoring and Troubleshooting Enterprise Replication,” on page 8-1
Related tasks
“Replicating Only Changed Columns”
“Creating ATS and RIS Directories” on page 4-12
“Defining Replication Servers” on page 6-1
Related reference
“cdr define replicate” on page A-53
By default, Enterprise Replication replicates the entire row, even if only one
column changed. Exceptions to this are columns containing BLOB or CLOB data:
these columns are updated only when their contents have changed, regardless of
whether other columns have changed or not. This prevents large amounts of data
from being unnecessarily transmitted. Enterprise Replication always sends the
primary key column, even if you specify to replicate only changed columns.
You can change the default behavior to replicate only the columns that changed. To
replicate only changed columns, include the --fullrow n option in the replicate
definition.
Replicating only the columns that changed has the following advantages:
v Sends less data, as only the data that needs to be modified is sent
v Uses less Enterprise Replication resources, such as memory
If Enterprise Replication replicates an entire row from the source, and the
corresponding row does not exist on the target, Enterprise Replication applies the
update as an insert, also known as an upsert, on the target (unless you are using
the delete wins conflict resolution rule). By replicating the entire row, Enterprise
Replication corrects any errors during replication. If any errors occur in an update
of the target database server (for example, a large object is deleted before
Enterprise Replication can send the data), the next update from the source
database server (a complete row image) corrects the data on the target server.
Replicating only the columns that changed has the following disadvantages:
Enterprise Replication logs bitmap information about the updated columns in the
logical-log file. For more information, see the CDR record type in the logical-logs
chapter in the IBM Informix Administrator's Reference.
Related concepts
“Conflict Resolution” on page 3-6
“Disk Space for Delete Tables” on page 4-7
“Considerations for Replicating Opaque Data Types” on page 2-16
Related tasks
“Setting Up Failed Transaction Logging” on page 6-8
Related reference
“cdr define replicate” on page A-53
You can specify sending this data in either IEEE floating point format or
machine-independent decimal representation:
v Enable IEEE floating point format to send all floating point values in either
32-bit (for SMALLFLOAT) or 64-bit (for FLOAT) IEEE floating point format.
To use IEEE floating point format, include the --floatieee option in your replicate
definition.
It is recommended that you define all new replicates with the --floatieee option.
v Enable canonical format to send floating-point values in a machine-independent
decimal representation when you replicate data between dissimilar hardware
platforms.
To use canonical format, include the --floatcanon option in your replicate
definition. The --floatcanon option is provided for backward compatibility only;
it is recommended that you use the --floatieee option when defining new
replicates.
v If you specify neither IEEE or canonical formats, Enterprise Replication sends
FLOAT and SMALLFLOAT data types as a straight copy of machine
representation. If you are replicating across different platforms, replicated
floating-point numbers will be incorrect.
Chapter 6. Defining Replication Servers, Replicates, Participants, and Replicate Sets 6-9
Important: You cannot modify the replicate to change the --floatieee or
--floatcanon options.
Related reference
“cdr define replicate” on page A-53
Enabling Triggers
By default, when a replicate causes an insert, update, or delete on a target table,
triggers associated with the table are not executed. However, you can specify that
triggers are executed when the replicate data is applied by enabling triggers in the
replicate definition.
When you design your triggers, you can use the 'cdrsession' option of the
DBINFO() function to determine if the transaction is a replicated transaction.
For information, refer to “Triggers” on page 2-8 and “Special Options” on page
A-58.
Related reference
“cdr define replicate” on page A-53
Use non-exclusive replicate sets if you want to add a replicate to more than one
replicate set. For example, you might want to create replicate sets to manage
replicates on the target server, table, or entire database. To do this, create three
non-exclusive replicate sets:
v A set that contains the replicates that replicate to the target server
v A set that contains the replicates on a particular table
v A set that contains all the replicates
To define the exclusive replicate set dev_set with the replicates dev_pdx and
dev_lenexa and specify that the members of dev_set replicate at 5:00 p.m. every
day, enter:
cdr define replicateset -X --at 17:00 dev_set dev_pdx\
dev_lenexa
Important: For replicates that belong to an exclusive replicate set, you cannot
specify the frequency individually for replicates in the set.
Chapter 6. Defining Replication Servers, Replicates, Participants, and Replicate Sets 6-11
For more information, see “cdr define replicateset” on page A-62.
You do not need to suspend any servers that are replicating data while you add
the new replicate and synchronize it.
The cdr start replicate and cdr start replicateset commands provide options to
perform an initial synchronization for the replicates you are starting. All of the
rows that match the replication criteria will be transferred from the source server
to the target servers. If you are starting a replicate set, Enterprise Replication
synchronizes tables in an order that preserves referential integrity constraints (for
example, child tables are synchronized after parent tables).
Use the --syncdatasource (-S) option of the cdr start replicate or cdr start
replicateset command to specify the source server for synchronization. Any
existing rows in the specified replicates are deleted from the remote tables and
replaced by the data from the node you specify using -S.
The --extratargetrows option of the cdr start replicate or cdr start replicateset
commands specifies how to handle rows found on the target servers that are not
present on the source server. You can specify to remove rows from the target, keep
extra rows on the target, or replicate extra rows from the target to other
participants.
If you use the cdr start replicate or cdr start replicateset command to specify a
subset of servers on which to start the replicate (or replicate set), that replicate (or
replicate set) must already be active on the source server. The source server is the
server you specify with the -S option. For example, for the following command,
repl1 must already be active on serv1:
cdr start repl repl1 ... -S serv1 serv2 serv3
When you start a replicate (or replicate set) for participants on all servers, the
replicate does not need to be active on the source server. So, for the following
command, repl1 does not need to be active:
cdr start repl1 ... -S serv1
If replication fails for some reason and data becomes inconsistent, there are
different ways to correct data mismatches between replicated tables while
replication is active. The recommended method is direct synchronization. You can
also repair data based on an ATS or RIS file. Both of these methods are described
in “Resynchronizing Data among Replication Servers” on page 7-13.
First, you create a template using the cdr define template command; then, you
instantiate it on the servers where you want to replicate data by running the cdr
realize template command.
Important: If you want to use time-based replication, you must set up replication
manually.
Important: Templates set up replication for full rows of tables (all the columns in
the table), because they are designed to facilitate setting up large scale replication
environments. If you want a participant to contain a partial row (just some
columns in the table), you can either set up replication manually, or, after you
realize a template you can use the cdr remaster command to restrict the query.
All options of the cdr define template, cdr list template, cdr realize template, and
cdr delete template commands are described in detail in Appendix A, “The cdr
Command-Line Utility Reference,” on page A-1.
Defining Templates
You define a template using the cdr define template command, with which you
can specify which tables to use, the database and server they are located in, and
whether to create an exclusive or non-exclusive replicate set. Table names can be
listed on the command line or accessed from a file using the --file option, or all
tables in a database can be selected.
Important: A template cannot define tables from more than one database.
Specify that the replicate set is exclusive if you have referential constraints on the
replicated columns. Also, if you create an exclusive replicate set using a template,
you do not need to stop the replicate set to add replicates. For more information
about exclusive replicate sets, see “Defining Replicate Sets” on page 6-10.
You can use the cdr list template command from a non-leaf node to view details
about the template, including the internally generated names of the master
replicates. These are unique names based on the template, the server, and table
names.
Realizing Templates
After you define a template using the cdr define template command, use the cdr
realize template command to instantiate the template on your Enterprise
Chapter 6. Defining Replication Servers, Replicates, Participants, and Replicate Sets 6-13
Replication database servers. The cdr realize template command first verifies that
the tables on each node match the master definition used to create the template.
Then, on each node, it adds the tables defined in the template as participants to
master replicates created by the template.
If a table does not already exist on a server where you realize the template, you
can choose to create it, and it is also added to the replicate.
Also, at realization time, you can also choose to synchronize data among all
servers.
Note: Tables created with autocreate do not automatically include non-primary key
indices, defaults, constraints (including foreign constraints), triggers, or
permissions. If the tables you create with autocreate require the use of these objects
you must explicitly create the objects by hand.
Other Options
You can use the --applyasowner option to realize a table by its owner rather than
the user informix.
The --target option defines whether target servers are receive-only (when target
servers are defined as receive-only, updates made on those servers are not
propagated).
Changing Templates
You cannot update a template. To adjust a template, you must delete it with the
cdr delete template command and then re-create it with the cdr define template
command.
Template Example
This example illustrates a scenario in which one template is created, and then a
second template is added and realized on the same servers. The replicates in both
templates are consolidated into the first template for ease of maintenance, and the
second template is then deleted.
The first template Replicateset1 is defined on three tables in the college database:
staff, students, and schedule. The template is realized on the servers g_cdr_ol_1
and g_cdr_ol_2.
The second template Replicateset2 is defined on three tables in the bank database:
account, teller, and transaction. This template is realized on the same servers as
the first template: g_cdr_ol_1 and g_cdr_ol_2.
The replicates in both templates exist on the same servers, and would be
administered (for example, stopped and started) at the same time. Thus, the
replicates defined as part of Replicateset2 can be moved into Replicateset1, after
which the Replicateset2 template can then be deleted.
Chapter 6. Defining Replication Servers, Replicates, Participants, and Replicate Sets 6-15
Creating mastered replicate Replicateset2_g_cdr_ol_1_1_1_account
for table ’testadm’.account
Creating mastered replicate Replicateset2_g_cdr_ol_1_1_2_teller
for table ’testadm’.teller
Creating mastered replicate Replicateset2_g_cdr_ol_1_1_3_transactions
for table ’testadm’.transactions
Creating mastered replicate Replicateset2_g_cdr_ol_1_1_4_customer
for table ’testadm’.customer
This command also creates the replicate set Replicateset2.
5. Realize the template Replicateset2 on g_cdr_ol_1:
cdr realize template -c g_cdr_ol_1 Replicateset2 "bank@g_cdr_ol_1"
6. Realize the template on server g_cdr_ol_2 and synchronize the data with server
g_cdr_ol_1:
cdr realize template -c g_cdr_ol_1 -u -S g_cdr_ol_1 \
Replicateset2 "bank@g_cdr_ol_2"
7. Add the replicates created as part of Replicateset2 to Replicateset1. (Use the
cdr list replset Replicateset2 command to list the replicates in Replicateset2.):
cdr change replset -c g_cdr_ol_1 -a Replicateset1\
Replicateset2_g_cdr_ol_1_1_1_account \
Replicateset2_g_cdr_ol_1_1_2_teller \
Replicateset2_g_cdr_ol_1_1_3_transactions \
Replicateset2_g_cdr_ol_1_1_4_customer
8. Delete the replicate set Replicateset2:
cdr delete template Replicateset2
9. Realize all the replicates on a new server g_cdr_ol_3. Then realize the template
Replicateset1 on the server g_cdr_ol_3:
cdr realize template -c g_cdr_ol_1 -u -S g_cdr_ol_1\
Replicateset1 "bank@g_cdr_ol_3"
This command adds g_cdr_ol_3 as a participant to all the replicates in
Replicateset1, including the replicates that were created as part of the template
Replicateset2: Replicateset2_g_cdr_ol_1_1_1_account,
Replicateset2_g_cdr_ol_1_1_2_teller,
Replicateset2_g_cdr_ol_1_1_3_transactions, and
Replicateset2_g_cdr_ol_1_1_4_customer.
The state of the server refers to the relationship between the source server and the
target server. To determine the current state of the server, use the cdr list server
server_name command. For more information about the possible server states, see
“cdr list server” on page A-88.
For information about each of these attributes, see “Defining Replication Servers”
on page 6-1. For more information about the cdr modify server command, see “cdr
modify server” on page A-97.
The following table shows which kind of changes are valid for Enterprise
Replication configuration parameters.
Table 7-1. Options for dynamically updating Enterprise Replication configuration parameters
cdr add cdr change cdr remove
Configuration Parameter onconfig onconfig onconfig
CDR_APPLY No No No
CDR_DBSPACE No Yes No
CDR_DSLOCKWAIT No Yes No
CDR_ENV CDR_ALARMS No No No
CDR_ENV CDR_LOGDELTA No Yes No
CDR_ENV CDR_PERFLOG No Yes No
CDR_ENV CDR_RMSCALEFACT No Yes No
CDR_ENV CDR_ROUTER No Yes No
CDR_ENV CDRSITES_731 Yes Yes Yes
CDR_ENV CDRSITES_92X Yes Yes Yes
CDR_ENV CDRSITES_10X Yes Yes Yes
CDR_EVALTHREADS No Yes No
CDR_MAC_DYNAMIC_LOGS No Yes No
CDR_NIFCOMPRESS No Yes No
CDR_QDATA_SBSPACE Yes Yes Yes
CDR_QHDR_DBSPACE No Yes No
CDR_QUEUEMEM No Yes No
CDR_SERIAL No Yes No
CDR_SUPPRESS_ATSRISWARN Yes Yes Yes
ENCRYPT_CDR No Yes No
ENCRYPT_CIPHERS No Yes No
ENCRYPT_MAC Yes Yes Yes
ENCRYPT_MACFILE Yes Yes Yes
ENCRYPT_SWITCH No Yes No
You can view the setting of Enterprise Replication configuration parameters and
environment variables with the onstat -g cdr config command.
For example, to connect to the global catalog of the database server idaho, enter:
cdr list server --connect=idaho
For more information, see “Global Catalog” on page 2-3 and “Connect Option” on
page A-3.
You can stop Enterprise Replication on a server by shutting down the database
server. Replication begins again when you restart the database server.
However, you might want to temporarily stop the Enterprise Replication threads
without stopping the database server.
You can temporarily stop replication by running the cdr stop command. The
stopped server does not capture data to be replicated. Other replication servers in
the domain continue to queue replicated data for the stopped server in their send
queues. Replication threads remain stopped (even if the database server is stopped
and restarted) until you run the cdr start command. When you restart replication
on the server, it receives and applies the replicated data from the other replication
servers. However, if replication is stopped for long enough, the replay position on
the logical log on the stopped server can be overrun and the send queues on the
active replication servers can fill up. If either of these situations happens, you must
synchronize the server that was stopped.
If replication stopped due to an error, you can restart replication by shutting down
and restarting the database server or by running the cdr start command.
If replication was stopped by the cdr stop command, restart replication by running
the cdr start command.
When you run the cdr start command, Enterprise Replication resumes evaluating
the logical logs at the replay position (where Enterprise Replication stopped
evaluating the logical log when the server was stopped). If the replay position was
overwritten in the logical log, replication cannot restart and event alarm 75 is
raised. In this situation, run the cdr cleanstart command to restart Enterprise
Replication and then synchronize the data.
Related reference
“cdr start” on page A-112
For example, to suspend replication of data to the server group g_papeete from the
server group g_raratonga, enter: cdr suspend server g_papeete g_raratonga
Important: When you suspend replication on a server, you must ensure that the
send queues on the other Enterprise Replication servers participating in replication
do not fill.
To delete a replication server on which Enterprise Replication is active, use the cdr
delete server command. You must run the cdr delete server command twice: once
on the server being deleted and once on another server in the domain.
To delete a replication server on which Enterprise Replication is not active, use the
cdr delete server command with the --force option.
To restart Enterprise Replication on a server after you delete it, you must define it
again with the cdr define server command and then synchronized the data.
However, the history of rows that were deleted on the server while it was not
defined for replication is lost.
Examples
For example, to remove the server group g_papeete from Enterprise Replication,
set the INFORMIXSERVER environment variable to papeete and run the
following commands:
cdr delete server g_papeete
cdr delete server --connect=raratonga g_papeete
The first command deletes the local server group (g_papeete) from Enterprise
Replication, and the second connects to another server in the replication
environment (raratonga) and deletes g_papeete from that server. The change then
replicates to the other servers in the replication domain.
Related reference
“cdr delete server” on page A-74
Managing Replicates
You can perform the following tasks on existing replicates:
v Modify replicate attributes or participants
v View replicate properties and state
v Change the state of a replicate (whether replication is being performed)
v Delete a replicate
Modifying Replicates
You can modify replicates in two ways:
v “Adding or Deleting Participants” on page 7-6
v “Changing Replicate Attributes” on page 7-6
To add a participant to an existing replicate, use the cdr change replicate --add
command. For example, to add two participants to the sales_data replicate, enter:
cdr change replicate --add sales_data \
"db1@hawaii:jane.table1" "select * from table1" \
"db2@maui:john.table2" "select * from table2"
To delete a participant from the replicate, use the cdr change replicate --delete
command.
For example, to delete these two participants from the replicate, enter:
cdr change replicate --delete sales_data \
"db1@hawaii:jane.table1" "db2@maui:john.table2"
You cannot change the conflict resolution from ignore to a non-ignore option (time
stamp, SPL routine, or time stamp and SPL routine). You cannot change a
non-ignore conflict resolution option to ignore.
For information on each of these attributes, see “Defining Replicates” on page 6-3.
For example, to change the replication frequency for the sales_data replicate to
every Sunday at noon, enter:
cdr modify replicate sales_data Sunday.12:00
For information about this command, see “cdr list replicate” on page A-82.
To change the replicate state to active, use the cdr start replicate command. For
example, to start the replicate sales_data on the servers server1 and server23,
enter:
sales_data server1 server23
This command causes server1 and server23 to start sending data for the sales_data
replicate.
If you omit the server names, this command starts the replicate on all servers that
are included in that replicate.
When you start a replicate, you can choose to perform an initial data
synchronization, as described in “Initially Synchronizing Data Among Database
Servers” on page 6-12.
Warning: Run the cdr start replicate command on an idle system (no transactions
are occurring) or use the BEGIN WORK WITHOUT REPLICATION statement until
after you successfully start the replicate.
When replication is active on an instance, you may need to double the amount of
lock resources, to accommodate transactions on replicated tables.
If a replicate belongs to an exclusive replicate set, you must start the replicate set
to which the replicate belongs. For more information, see “Starting a Replicate.”
Stopping a Replicate
You can temporarily stop replication for administrative purposes.
To stop the replicate, use the cdr stop replicate command. This command changes
the replicate state to inactive and deletes any data in the send queue for that
replicate. When a replicate is inactive, Enterprise Replication does not transmit or
process any database changes.
In general, you should only stop replication when no replication activity is likely
to occur for that table or on the advice of IBM Software Support. If database
activity does occur while replication is stopped for a prolonged period of time, the
replay position in the logical log might be overrun. If a message that the replay
position is overrun appears in the message log, you must resynchronize the data
on the replication servers. For more information on resynchronizing data, see
“Resynchronizing Data among Replication Servers” on page 7-13.
This command causes server1 and server23 to purge any data in the send queue
for the sales_data replicate and stops sending data for that replicate. Any servers
not listed on the command line continue to capture and send data for the
sales_data replicate (even to server1 and server23).
If you omit the server names, this command stops the replicate on all servers that
are included in that replicate.
If a replicate belongs to an exclusive replicate set, you must stop the replicate set
to which the replicate belongs. For more information, see “Exclusive Replicate
Sets” on page 6-10 and “Stopping a Replicate Set” on page 7-10.
Stopping a replicate set also stops any direct synchronization, repair jobs, or
consistency checking that are in progress. To complete synchronization or
consistency checking, you must rerun the cdr sync replicateset or cdr check
replicateset command. To restart a repair job, use the cdr start repair command.
Suspending a Replicate
If you do not want to completely halt all processing for a replicate, you can
suspend a replicate using the cdr suspend replicate command. When a replicate is
in a suspended state, the replicate captures and accumulates changes to the source
database, but does not transmit the captured data to the target database.
If a replicate belongs to an exclusive replicate set, you must suspend the replicate
set to which the replicate belongs. For more information, see “Exclusive Replicate
Sets” on page 6-10 and “Suspending a Replicate Set” on page 7-11.
If a replicate belongs to an exclusive replicate set, you must resume the replicate
set to which the replicate belongs. For more information, see “Exclusive Replicate
Sets” on page 6-10 and “Resuming a Replicate Set” on page 7-11.
Warning: Avoid deleting a replicate and immediately re-creating it with the same
name. If you re-create the objects immediately (before the operation finishes
propagating to the other Enterprise Replication database servers in the network),
failures might occur in the Enterprise Replication system at the time of the
operation or later. For more information, see “Operational Considerations” on page
2-4.
The state of the replicate when you add it to a replicate set depends on the type of
replicate set:
v For a non-exclusive replicate set, the state of the new replicate remains as it was
when you added it to the set. To bring all the replicates in the non-exclusive set
to the same state, use one of the commands described in “Managing Replicate
Sets.”
v For an exclusive replicate set, Enterprise Replication changes the existing state
and replication frequency settings of the replicate to the current properties of the
exclusive replicate set.
To delete a replicate from the replicate set, use cdr change replicate --delete.
When you add or remove a replicate from an exclusive replicate set that is
suspended or that is defined with a frequency interval, Enterprise Replication
transmits all the data in the queue for the replicates in the replicate set up to the
point when you added or removed the replicate. For more information, see
“Suspending a Replicate Set” on page 7-11 and “Frequency Options” on page A-25.
For example, to change the replication frequency for each of the replicates in the
sales_set to every Monday at midnight, enter:
cdr modify replicateset sales_set Monday.24:00
When you start a replicate set, you can choose to perform an initial data
synchronization, as described in “Initially Synchronizing Data Among Database
Servers” on page 6-12.
Warning: Run the cdr start replicateset command on an idle system (when no
transactions are occurring) or use the BEGIN WORK WITHOUT REPLICATION
statement after you successfully start the replicate.
For more information, see “cdr start replicateset” on page A-117 and “cdr start
replicate” on page A-114.
Stopping a replicate set also stops any direct synchronization, repair jobs, or
consistency checking that are in progress. To complete synchronization or
consistency checking, you must rerun the cdr sync replicateset or cdr check
replicateset command. To restart a repair job, use the cdr start repair command.
For more information, see “cdr stop replicateset” on page A-135 and “cdr stop
replicate” on page A-133.
For more information, see “cdr suspend replicateset” on page A-137 and “cdr
suspend replicate” on page A-136.
Related reference
“cdr change replicateset” on page A-32
For more information, see “cdr resume replicateset” on page A-110 and “cdr
resume replicate” on page A-109.
Tip: When you delete a replicate set, Enterprise Replication does not delete the
replicates that are members of the replicate set. The replicates remain in the state
they were in when the set was deleted.
Warning: Avoid deleting a replicate set and immediately re-creating it with the
same name. If you re-create the objects immediately (before the operation finishes
propagating to the other Enterprise Replication database servers in the network),
failures might occur in the Enterprise Replication system at the time of the
operation or later. For more information, see “Operational Considerations” on page
2-4.
You cannot update a template. To modify a template, you must delete it with the
cdr delete template command and then re-create it with the cdr define template
command.
Deleting Templates
Use the cdr delete template command to delete any templates that you no longer
want to use to set up replication. The command also deletes any replicate sets
associated with the template which exist if the template has been realized.
Important: Deleting a template does not delete replicates that have been created
by realizing a template.
Warning: When you disconnect a server from Enterprise Replication, you must
ensure that the send queues on all other Enterprise Replication servers
participating in replication do not fill.
For example, to reestablish the network connection between the current replication
server and the server g_papeete, enter:
cdr connect server g_papeete
The following table compares each of the methods. All methods except manual
table unloading and reloading can be performed while replication is active.
Table 7-2. Resynchronization methods
Method Description
Direct synchronization v Replicates all rows from the specified
reference server to all specified target
servers for a replicate or replicate set.
v Runs as a foreground process by default,
but can run as a background process.
v Populates tables in a new participant.
v Quickly synchronizes significantly
inconsistent tables when used with the
TRUNCATE statement.
Checking consistency and then repairing v Compares all rows from the specified
inconsistent rows target servers with the rows on the
reference server, prepares a consistency
report, and optionally repairs inconsistent
rows.
v Runs as a foreground process by default,
but can run as a background process.
Repair job v Replicates all rows from the specified
reference server to one target server for a
replicate or replicate set.
v Two-step process: define a job and then
start it.
v A job can only be used one time.
v Runs as a background process.
v Optionally filters a job so that only
specific rows or columns are repaired.
ATS or RIS file repairs v Used to repair rows that other
synchronization methods could not repair.
v Repairs a single transaction at a time.
v Replicates or replication server must have
been configured with the ATS or RIS
option.
Related concepts
“Repair and Initial Data Synchronization” on page 1-3
Related reference
“cdr stop” on page A-131
“cdr stop replicate” on page A-133
You can synchronize a single replicate or a replicate set. When you synchronize a
replicate set, Enterprise Replication synchronizes tables in an order that preserves
referential integrity constraints (for example, child tables are synchronized after
parent tables). You can choose how to handle extra target rows and whether to
enable trigger firing on target servers.
To perform direct synchronization, use the cdr sync replicate or cdr sync
replicateset command.
You can monitor the progress of a synchronization operation with the cdr stats
sync command if you provide a progress report task name in the cdr sync
replicate or cdr sync replicateset command.
When you truncate a table by using the TRUNCATE statement, you remove all
rows from the table while replication is active. After the tables on the target servers
are empty, direct synchronization efficiently applies data from the source server to
the target servers.
For the syntax of these commands, see “cdr sync replicate” on page A-142 and
“cdr sync replicateset” on page A-146.
To perform a consistency check, use the cdr check replicate or cdr check
replicateset command. Use the --repair option to repair the inconsistent rows. A
consistency report is displayed for your review.
You can monitor the progress of a consistency check with the cdr stats check
command if you provide a progress report task name in the cdr check replicate or
cdr check replicateset command.
Jan 17 2009 15:46:50 ------ Table scan for repl1 end ---------
The missing rows could be in the process of being replicated from g_serv1 to
g_serv2.
Jan 17 2009 15:46:50 ------ Table scan for repl1 end ---------
The report indicates whether the replicate became consistent after the repair
process. In this example, the Validation of repaired rows failed. message
indicates that the replicate is not consistent. This might occur because some
replicated transactions were still being replicated. Use the --inprogress option to
extend the validation time.
The verbose form of the consistency report also displays the differing values for
each inconsistent row.
For more information about the contents of the consistency report, see “cdr check
replicate” on page A-34.
Related reference
“cdr check replicate” on page A-34
To increase the speed of consistency checking by limiting the amount of data that
is checked, use one or more of the following options:
v Skip the checking of large objects with the --skipLOB option. If you find that
your large objects do not change as much as other types of data, then skipping
them can make a consistency check quicker.
v Check from a specific time with the --since option. If the replicate uses the time
stamp or delete wins conflict resolution rule and you regularly check
consistency, you can limit the data that is checked to the data that was updated
since the last consistency check.
v When checking a replicate, you can check a subset of the data with the --where
option.
If you have large tables, you can index the ifx_replcheck shadow column.
You can index the ifx_replcheck shadow column to increase the speed of
consistency checking.
If you have a large replicated table, you can add the ifx_replcheck shadow column
and then create a new unique index on that column and the existing primary key
columns. The index on the ifx_replcheck shadow column allows the database
server to determine whether rows in different tables have different values without
comparing the values in those rows. You must create the index on the table in each
database server that participates in the replicate.
Before you can create an index on the ifx_replcheck shadow column and the
primary key, you must prepare the replicated table by adding the ifx_replcheck
shadow column. You can add the ifx_replcheck shadow column when you create
the table with the WITH REPLCHECK clause, or you can alter an existing table to
add the ifx_replcheck shadow column with the ADD REPLCHECK clause.
To index the ifx_replcheck shadow column, create a unique index based on the
existing primary key columns and the ifx_replcheck column.
For example, the following statement creates an index on a table named customer
on the primary key column id and ifx_replcheck:
CREATE UNIQUE INDEX customer_index ON customer(id, ifx_replcheck);
Related concepts
“Preparing Tables for a Consistency Check Index” on page 4-18
Related tasks
“Checking Consistency and Repairing Inconsistent Rows” on page 7-15
Related reference
“cdr check replicate” on page A-34
“cdr check replicateset” on page A-43
Repair jobs can be run online while replication is active. Create a repair job using
the cdr define repair command, and then, run the job using the cdr start repair
command.
You can define a repair job for a single replicate or for a replicate set. When you
repair a replicate set, Enterprise Replication synchronizes tables in an order that
preserves referential integrity constraints (for example, child tables are
synchronized after parent tables).
Important: Running a repair job can consume a large amount of space in your log
files. Ensure you have sufficient space before starting the repair job.
If a repair job cannot repair a row, the inconsistent row is recorded in an ATS or
RIS file. For more information, see “Repairing Failed Transactions with ATS and
RIS Files.”
Restriction: In the WHERE clauses, only specify columns that are exactly the same
on the source and target nodes and only specify columns that are not updated.
Warning: If the repair job is active when you issue the cdr delete repair command,
the repair data in the send queue of the source server is purged.
Each operation is displayed to stderr, unless you use the –quiet option with the
cdr repair command. You can preview the operations without performing them by
using the –check option with the cdr repair command.
Related concepts
“Failed Transaction (ATS and RIS) Files” on page 8-3
Appendix A, “The cdr Command-Line Utility Reference,” on page A-1
“Repair and Initial Data Synchronization” on page 1-3
Related tasks
“Performing Direct Synchronization” on page 7-14
“Checking Consistency and Repairing Inconsistent Rows” on page 7-15
Important: If tables that you are synchronizing include shadow columns, you must
explicitly unload and load these columns. If these values are not included,
Enterprise Replication inserts NULL values. For more information, see “Shadow
Column Disk Space” on page 4-7 and “Load and unload data” on page 4-21.
Most of the supported operations do not require any special steps when performed
on replicated tables or databases; some, however, do require special steps. None of
the supported alter, rename, or truncate operations are replicated. You must
perform these operations on each replicate participant.
You can perform the following alter, rename, and truncate operations on active,
replicated tables or databases without performing extra steps:
Operation Requirements
Add or drop default values and SQL checks None
Add or drop fragments Requires mastered replicate to be defined
Add or drop unique, distinct, and foreign keys None
Alter the locking granularity None
Alter the next extent size None
Change an existing fragment expression on an Requires mastered replicate to be defined
existing dbspace
Convert a fragmented table to a Requires mastered replicate to be defined
non-fragmented table
Convert a non-fragmented table to a Requires mastered replicate to be defined
fragmented table
Convert from one fragmentation strategy to Requires mastered replicate to be defined
another
Create a clustered index Requires mastered replicate to be defined
Modify the data type of a replicated column Requires mastered replicate to be defined
Modify the data type of a replicated column in Requires mastered replicate to be defined
a multiple-column primary key
Move a fragment expression from one dbspace Requires mastered replicate to be defined
to another dbspace
Move a non-fragmented table from one dbspace Requires mastered replicate to be defined
to another dbspace
Recluster an existing index Requires mastered replicate to be defined
Rename a database None
Rename a replicated column Requires non-strict mastered replicate to
be defined
Rename a table Requires non-strict mastered replicate to
be defined
Truncate a replicated table Requires mastered replicate to be defined
You can perform the following alter operations on active, replicated tables, but you
must perform extra steps, which are described in following sections:
v Add a column to a replicated table
v Drop a column from a replicated table
v Attach a fragment to a replicated table
Before altering a replicated table, ensure that you have sufficient log space
allocated for long transactions, a sufficient number of locks available, and sufficient
space available for the queue sbspace.
The following restrictions apply when you use alter operations on replicated tables.
v Enterprise Replication must be in an active state, unless you are only adding or
dropping check constraints and default values.
v Tables must have a master replicate defined.
v The DROP TABLE statement is not supported.
Recommendation: If you need to perform more than one alter operation, enclose
them in a single transaction so that alter mode only needs to be set and unset one
time.
For a list of common alter operation problems and how to solve them, see
“Troubleshooting Tips for Alter Operations” on page 8-19.
Related reference
“cdr alter” on page A-28
When you modify a replicated column, do not insert data into the modified
column that will not fit into the old column definition until all participants have
been altered, because the data might be truncated or data conversion to and from
the master dictionary format to the local dictionary format might fail. Enterprise
Replication handles the data type mismatch by having the source server convert
data that is in the local dictionary format to the master dictionary format, and the
target server convert data from the master dictionary format to the local dictionary
format. If Enterprise Replication detects a mismatch in data type or size between
the master replicate definition and the local table definition, a warning is printed
in the log file.
If Enterprise Replication is not able to convert the replicated row data into the
master dictionary format on the source server while queuing replicated data into
the send queue, the replicate is stopped for the local participant. If this occurs, you
must correct the problem and then restart the replicate from the local participant
with the --syncdatasource option. If the correction is to delete the problematic row
data, delete the row using the BEGIN WORK WITHOUT REPLICATION
statement. Otherwise, the deleted row is moved from the replicated table to the
associated delete table, which might cause problems for the subsequent alter
operation on the replicated table.
If Enterprise Replication cannot convert row data from the master dictionary
format to local table dictionary format at the target server after receiving replicated
data, the replicated transaction is spooled to ATS and RIS files. For example, if you
modify a SMALLINT column to an INTEGER column, make sure that you do not
insert data that is too large for the SMALLINT data type until the alter operation is
performed at all replicate participants, and remastering is performed so that the
master dictionary reflects the INTEGER data type.
This situation can happen while modifying a replicated column from a data type
larger in length or size to a data type smaller in length or size, for example, from
an INTEGER column to a SMALLINT column, and if the delete table has data
which cannot fit in the new type column.
To avoid this situation, do not convert between data types that cause data
truncation or produce cases where data cannot fit into the new type. If the above
situation has already occurred, carefully update or delete the problematic rows
from the delete table and attempt to unset alter mode manually by using the cdr
alter command. If you cannot resolve the problem, contact IBM Software Support.
After an alter operation, the master dictionary no longer matches the replicated
table dictionary. Because data transfer is always done in master dictionary format,
data conversion between the local dictionary format and the master dictionary
format is performed. Data conversion can slow the performance of your replication
system. The remastering process changes the master dictionary to match the
altered replicated table dictionary. Therefore, after remastering, data conversion is
not necessary.
To change the name of a replicated column, table, or database, run the SQL
statement RENAME COLUMN, RENAME TABLE, or RENAME DATABASE on all
participants in the replicate.
If the primary key contains multiple columns, you do not need to perform any
special steps to modify one or more of its columns. The column modification
implicitly recreates the primary key.
If the primary key is a single column, you must enclose the primary key column
modification and the primary key recreation operations in a single transaction.
If you wish to drop and recreate a primary key, you must manually set alter mode,
drop and recreate the primary key, and then manually unset alter mode.
Related concepts
“Limited SQL Statements” on page 2-10
Remastering a Replicate
The cdr remaster command redefines an existing master replicate, or turns an
existing non-master replicate into a master replicate. You must run the cdr
remaster command if you add a new replicated column or drop a replicated
column. If you modify a replicated column, you should remaster, however,
remastering is not mandatory.
Related reference
“cdr swap shadow” on page A-140
Automatic Remastering
To use automatic remastering run the cdr remaster command for the replicate for
which you want to update the definition.
Manual Remastering
You must use manual remastering if your participants to not have matching
column names and they were created with name verification turned off (--name
option of the cdr define replicate command set to n).
While performing the cdr swap shadow operation, Enterprise Replication stores
the BEGIN WORK position of the last known transaction sent to the grouper as a
swap log position for the current swap operation. Any transaction begun prior to the
swap log position will use the original (old) replicate definition. Any transaction
begun after the swap log position will use the new replicate definition.
The old replicate definition will be cleaned up automatically after the replicate
definition is no longer required by Enterprise Replication.
In This Chapter
The Aborted Transaction Spooling (ATS) and Row Information Spooling (RIS) files
contain information about failed transactions.
In addition, you can use tools provided with the server, such as the onstat
command, to display statistics that you can use to diagnose problems. For more
information on the onstat commands that are relevant to Enterprise Replication,
see Appendix C, “onstat Command Reference,” on page C-1.
You can monitor the status of every Enterprise Replication server from any server
in the domain in the following ways:
v Use the cdr view command. Specify one or more subcommands, depending on
what information you want to monitor.
v Use the IBM OpenAdmin Tool (OAT) for Informix with the Replication plug-in.
You can monitor individual Enterprise Replication servers from the local server or
from a remote server by using SQL queries on the system monitoring tables.
You can view information about the local Enterprise Replication server by running
onstat commands.
You set the ALARMPROGRAM script to capture event alarms for the following
situations:
You should understand the typical behavior of your Enterprise Replication system.
There are many factors that contribute to the performance and other behaviors,
including: hardware configuration, network load and speed, type of replication,
and number of replicated transactions.
Use the cdr view command or the SMI tables to understand the typical behavior of
your system, establish benchmarks, and track trends. Deviations from typical
behavior do not necessarily indicate a problem. For example, transactions might
take longer to replicate during peak usage times or during end-of-month
processing.
The following table describes some replication processing problems that might
occur.
Table 8-1. Potential Replication Problems and Solutions
Problem How to diagnose How to solve
Enterprise Replication is not v Run the cdr view state Start replication with the cdr
running command start command.
v Query the syscdr_state
SMI table
v Examine event alarms
captured by the alarm
program
One or more Enterprise v Run the cdr view servers Start the database server or
Replication servers are not command fix the connection problem.
running or connected to the
v Run the cdr view nif
network
command
v Query the syscdr_nif SMI
table
v Examine event alarms
captured by the alarm
program
If you do need to call IBM Software Support, find the version of the database
server that is running Enterprise Replication with the cdr -V command.
You can use the ATS and RIS files to identify problems or as input to the cdr
repair command or custom utilities that extract or reapply the aborted rows.
ATS file generation occurs if the entire transaction is aborted. Transactions defined
with row scope that have aborted rows but are successfully committed on the
target tables are not logged. All rows that fail conflict resolution for a transaction
that has row scope defined are also written to the RIS file, if RIS is enabled.
In some cases, such as with long transactions, the database server itself aborts
transactions. In these cases, Enterprise Replication does not generate an ATS or RIS
file.
ATS and RIS files can be generated under the following circumstances:
v ATS or RIS generation is enabled for a replicate, the replicate uses a conflict
resolution rule other than ignore or always-apply, and a conflict is detected on a
target server.
v Under some error conditions, ATS or RIS files can be generated on a source
server, regardless if ATS or RIS generation is enabled or the conflict resolution
rule.
When an ATS or RIS file is generated, an event alarm with a class ID for 48 is also
generated. You can use event alarms to send notifications to a database
administrator.
Related concepts
“Conflict Resolution Scope” on page 3-14
Related tasks
“Repairing Failed Transactions with ATS and RIS Files” on page 7-19
Related reference
“CDR_DISABLE_SPOOL Environment Variable” on page B-14
“cdr define replicate” on page A-53
Failed transactions are not automatically recorded in ATS and RIS files. You can
choose to generate either ATS or RIS files, or both.
You should create a separate directory to store ATS and RIS files. If you do not
create a separate directory and specify it when you define the replication server,
Enterprise Replication stores the ATS and RIS files in the /tmp directory on UNIX
and the %INFORMIXDIR%\tmp directory on Windows.
The following table provides the naming convention for ATS and RIS files:
type.target.source.threadID.timestamp.sequence.extension
Table 8-2. ATS and RIS file naming conventions
Name Description
type The format of the file: ats or ris.
target The name of the database server receiving this replicate transaction.
source The name of the database server that originated the transaction.
threadID The identifier of the thread that processed this transaction.
timestamp The value of the internal time stamp at the time that this ATS or RIS file
was generated.
sequence A unique integer, incremented each time an ATS or RIS file is generated.
extension The file type. No extension indicates a text file; xml indicates an XML file.
The naming convention ensures that all ATS and RIS file names that are generated
are unique. However, when an ATS or RIS file is opened for writing, any previous
file contents are overwritten. (Enterprise Replication does not append to a spool
file; if a name collision does occur with an existing file, the original contents of the
file are lost.)
The default delimiter for the timestamp portion of text file names is a colon (:) on
UNIX and a period (.) on Windows. You can define the delimiter between the
The following is an example of a name of an ATS file in text format on UNIX for a
transaction sent by server g_amsterdam to server g_beijing:
ats.g_beijing.g_amsterdam.D_2.000529_23:27:16.6
The following is an example of the same ATS file name in XML format:
ats.g_beijing.g_amsterdam.D_2.000529_23.27.16.6.xml
The format of ATS and RIS files is part of the server definition that you create with
the cdr define server command:
Text (Default)
ATS and RIS files are generated as text files that Enterprise Replication can
process during a repair operation. Text format is useful if you intend to use
the cdr repair command to repair inconsistencies.
XML ATS and RIS files are generated as XML files that you can use if you write
your own custom repair scripts. You cannot use ATS or RIS files in XML
format with the cdr repair command.
Both ATS and RIS files are generated in both text and XML format so that you
can choose how to process failed transactions.
Enterprise Replication raises event alarms when ATS and RIS files are generated
regardless of format.
The XML format uses an XML schema that is stored in the INFORMIXDIR/etc
directory.
Columns that appear empty could contain a null value or an empty string. The
XML format differentiates between null data and empty strings by setting the
isNull="true" attribute of the COLUMN tag for null data.
The values of the following data types are not shown in XML files:
v Smart large objects
v Simple large objects
8-6 IBM Informix Enterprise Replication Guide
v User-defined data types
For these data types, the following attributes are set for the COLUMN tag:
v isLOBorUDT="true"
v dataExists="false"
Special Symbols
Example
The following example shows an ATS file displaying a transaction with two failed
insert operations. The third column in each row contains a data type that is not
shown.
<?xml version="1.0" encoding="UTF-8"?>
<ERFILE version="1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="/usr/informix/etc/idser.xsd">
<ATS version="1">
<TRANSACTION RISFile="/tmp/ris.g_cdr_ol_3.g_cdr_ol_2.D_5.080411_14.08.57.3.xml"
generateRISFile="true" processedRows="2">
<SOURCE id="20" name="g_cdr_ol_2" commitTime="2008-04-11T14:08:57"/>
<TARGET id="30" name="g_cdr_ol_3" receiveTime="2008-04-11T14:08:57"/>
<MESSAGE>All rows in a transaction defined with row scope were rejected</MESSAGE>
</TRANSACTION>
<ATSROWS>
<ATSROW num="1" replicateID="655362" database="bank" owner="testadm" table="customer"
operation="Insert">
<REPLICATED>
<SHADOWCOLUMNS serverID="20" serverName="g_cdr_ol_2" cdrTimeInt="1207940937"
cdrTimeString="2008-04-11T14:08:57"/>
<DATA>
<COLUMN name="col1" dataExists="true" isHex="false" isLOBorUDT="false"
isNull="false">261</COLUMN>
<COLUMN name="col2" dataExists="true" isHex="false" isLOBorUDT="false"
isNull="false">cdr_ol_2</COLUMN>
<COLUMN name="col3" dataExists="false" isHex="false" isLOBorUDT="true"
isNull="false"></COLUMN>
</DATA>
</REPLICATED>
</ATSROW>
<ATSROW num="2" replicateID="655362" database="bank" owner="testadm" table="customer"
operation="Insert">
<REPLICATED>
<SHADOWCOLUMNS serverID="20" serverName="g_cdr_ol_2" cdrTimeInt="1207940937"
cdrTimeString="2008-04-11T14:08:57"/>
<DATA>
<COLUMN name="col1" dataExists="true" isHex="false" isLOBorUDT="false"
isNull="false">262</COLUMN>
<COLUMN name="col2" dataExists="true" isHex="false" isLOBorUDT="false"
isNull="false">cdr_ol_2</COLUMN>
<COLUMN name="col3" dataExists="false" isHex="false" isLOBorUDT="true"
isNull="false"></COLUMN>
</DATA>
</REPLICATED>
The following example shows the corresponding RIS file for the failed transaction
shown in the ATS example.
<?xml version="1.0" encoding="UTF-8"?>
<ERFILE version="1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="/usr/informix/etc/idser.xsd">
<RIS version="1">
<SOURCE id="20" name="g_cdr_ol_2" commitTime="2008-04-11T14:08:57"/>
<TARGET id="30" name="g_cdr_ol_3" receiveTime="2008-04-11T14:08:57"/>
<RISROWS>
<RISROW num="1" replicateID="655362" database="bank" owner="testadm" table="customer"
operation="Insert">
<CDRERROR num="0"/>
<SQLERROR num="-668"/>
<ISAMERROR num="-1"/>
<SPLCODE num="63"/>
<LOCAL>
<SHADOWCOLUMNS serverID="20" serverName="g_cdr_ol_2" cdrTimeInt="1206852121"
cdrTimeString="2008-04-11T12:08:57"/>
<DATA>
<COLUMN name="col1" dataExists="true" isHex="false" isLOBorUDT="false"
isNull="false">261</COLUMN>
<COLUMN name="col2" dataExists="true" isHex="false" isLOBorUDT="false"
isNull="false">cdr_ol_2</COLUMN>
<COLUMN name="col3" dataExists="false" isHex="false" isLOBorUDT="true"
isNull="false"></COLUMN>
</DATA>
</LOCAL>
<REPLICATED>
<SHADOWCOLUMNS serverID="20" serverName="g_cdr_ol_2" cdrTimeInt="1207940937"
cdrTimeString="2008-04-11T14:08:57"/>
<DATA>
<COLUMN name="col1" dataExists="true" isHex="false" isLOBorUDT="false"
isNull="false">261</COLUMN>
<COLUMN name="col2" dataExists="true" isHex="false" isLOBorUDT="false"
isNull="false">cdr_ol_2</COLUMN>
<COLUMN name="col3" dataExists="false" isHex="false" isLOBorUDT="true"
isNull="false"></COLUMN>
</DATA>
</REPLICATED>
</RISROW>
</RISROWS>
<TXNABORTED ATSFile="/tmp/ats.g_cdr_ol_3.g_cdr_ol_2.D_5.080411_14.08.57.4.xml"
generateATSFile="true"/>
</RIS>
</ERFILE>
XML Tags:
XML tags are used in ATS and RIS files that are generated in XML format.
Table 8-3. XML tags in ATS and RIS files
Tag name Description Attributes Parent tag Child tags
ERFILE Top level tag for ATS version: XML file format None ATS
and RIS files version number.
RIS
ATS Parent tag for ATS files version: ATS file format ERFILE TRANSACTION
version number.
ATSROWS
TXNCOMMITTED
TRANSACTION Contains the name of v RISFile: The name of the ATS SOURCE
the RIS file (if it exists) RIS file, if it was created.
and the number of rows TARGET
processed before the v generateRISFile: Set to
transaction was aborted. true if an RIS file exists MESSAGE
for this aborted
transaction. CDRERROR
v processedRows: Number
of rows processed before SQLERROR
the transaction was
ISAMERROR
aborted.
SPLCODE
ATSROWS Contains the replicated None ATS ATSROW
aborted rows
SOURCE Contains source server v id: Server ID. TRANSACTION None
information
v name: Server group name. RIS
v commitTime: Transaction
commit time.
TARGET Contains target server v id: Server ID. TRANSACTION None
information
v name: Server group name. RIS
v receiveTime: Transaction
receive time.
SQLERROR Contains the SQL error num: Error number. TRANSACTION None
code
RISROW
ISAMERROR Contains the ISAM error num: Error number. TRANSACTION None
code
RISROW
CDRERROR Contains the data sync v num: Error number. TRANSACTION None
error code
v description: Error RISROW
description.
MESSAGE Contains the notification None TRANSACTION None
message
RISROW
SPLCODE Contains the SPL code num: SPL code number. TRANSACTION None
number if a stored
procedure conflict rule RISROW
is being used
RISROWS Contains the local and None RIS RISROW
replicated aborted rows
The first three characters in each line of the ATS and RIS file describe the type of
information for the line, as the following table defines. The first four labels apply
to both ATS and RIS files. The last three labels only apply to RIS files.
If you define a replicate to only replicate columns that changed, the RRD entry in
the ATS and RIS file shows a ? for the value of any columns that are not available.
For example:
RRD 427|amsterdam|?|?|?|?|?|?|?|?|?|?|?
For more information, see “Replicating Only Changed Columns” on page 6-8.
If a replicate includes one or more BLOB or CLOB columns, the RRD entry in the
ATS and RIS file displays the smart large object metadata (the in-row descriptor of
the data), not the smart large object itself, in hexadecimal format.
When the information recorded in the ATS or RIS file includes BYTE or TEXT data,
the replicated row data (RRD) information is reported, as the following examples
show.
Example 1
<1200, TEXT, PB 877(necromsv) 840338515(00/08/17 20:21:55)>
In this example:
v 1200 is the size of the data.
v TEXT is the data type (it is either BYTE or TEXT).
v PB is the storage type (PB when the BYTE or TEXT is stored in the tblspace, BB
for blobspace storage).
v The next two fields are the server identifier and the time stamp for the column if
the conflict-resolution rule is defined for this replicate and the column is stored
in a tblspace.
<500 (NoChange), TEXT, PB 877(necromsv) 840338478(00/08/17 20:21:18)>
Example 2
In this example, 500 (NoChange)indicates that the TEXT data has a size of 500, but
the data has not been changed on the source server. Therefore the data is not sent
from the source server.
Example 3
<(Keep local blob),75400, BYTE, PB 877(necromsv) 840338515(00/08/17 20:21:55)>”)
In this example, (Keep local blob) indicates that the replicated data for this
column was not applied on the target table, but instead the local BYTE data was
kept. This usually happens when time stamp conflict resolution is defined and the
local column has a time stamp greater than the replicated column.
UDT Information
If a replicate includes one or more UDT columns, the RRD entry in the ATS and
RIS files displays the row data in delimited format as usual, except the string
<skipped> is put in place of UDT column values. For example, for a table with
columns of type INTEGER, UDT, CHAR(10), UDT, the row might look like this:
RRD 334|<skipped>|amsterdam|<skipped>
To prevent the generation of both ATS and RIS files, set the
CDR_DISABLE_SPOOL environment variable to 1.
To prevent the generation of either ATS or RIS files, set the ATS or RIS directory to
/dev/null (UNIX) or NUL (Windows) with the cdr define server or cdr modify
server commands.
For a list of error and warning messages that you can suppress, see Appendix H,
“Data Sync Warning and Error Messages,” on page H-1.
For more information, see “Setting Up Send and Receive Queue Spool Areas” on
page 4-8.
If Enterprise Replication detects that the database server is approaching a log wrap
situation, Enterprise Replication blocks user transactions to prevent the current log
from advancing until Enterprise Replication log processing advances sufficiently
that the potential for log wrap is diminished. This state of blocking user
transactions is known as DDRBLOCK mode. When Enterprise Replication is in
DDRBLOCK mode, you see the following error in the message log:
DDR Log Snooping - DDRBLOCK phase started, userthreads blocked
Although user transactions are blocked while the server is in DDRBLOCK mode,
Enterprise Replication activity is allowed to continue. During this time, Enterprise
Replication attempts process transactions to advance the replay position and
remove the risk of a log overrun. Enterprise Replication can usually resolve the
cause of the DDRBLOCK state. However, in more extreme cases, the replay
position can be overrun. If the replay position is overrun, the following message
appears in the message log file:
WARNING: The replay position was overrun, data may not be replicated.
If this occurs, you must resynchronize the source and target servers. For more
information, see “Resynchronizing Data among Replication Servers” on page 7-13.
DDRBLOCK mode is usually caused by the logical logs being misconfigured for
the current transaction activity or by the Enterprise Replication system having to
spool more than usual. More-than-usual spooling could be caused by one of the
following situations:
v A one-time job might be larger than normal and thus require more log space.
v If one of the target servers is currently unavailable, more spooling of replicated
transactions can be required.
v The spool file or paging space could be full and needs to be expanded. For more
information, see “Preventing Memory Queues from Overflowing” on page 8-14.
If Enterprise Replication detects that the log files are configured too small for the
current database activity, then the following message might appear in the message
log file:
You can execute cdr list commands, such as cdr list repl, while the replication
server is in DDRBLOCK mode. You must create a temporary dbspace with the
onspaces utility and set the DBSPACETEMP configuration parameter before
executing the cdr list command.
Related concepts
“Logical Log Configuration Guidelines” on page 4-6
Tip: When you use onstat -d to monitor disk usage, the S flag in the Flags column
indicates an sbspace. For each sbspace chunk, the first row displays information
about the whole sbspace and user-data area. The second row displays information
about the metadata area.
To add a chunk to a dbspace, use onspaces -a. For example, to add a 110 kilobyte
chunk with an offset of 0 to the er_dbspace dbspace, enter:
onspaces -a er_dbspace -p /dev/raw_dev2 -o 0 -s 110
To add a chunk to an sbspace, use the same onspaces command above, however
you can specify more information about the chunk that you are adding. After you
add a chunk to the sbspace, you must perform a level-0 backup of the root
dbspace and the sbspace.
See the sections on adding chunks to dbspaces and sbspaces in the IBM Informix
Administrator's Guide and the IBM Informix Administrator's Reference for more
information.
To increase the number of sbspaces that can be used for Enterprise Replication,
create new sbspaces with the onspaces -c -S command and then add their names
to the CDR_QDATA_SBSPACE configuration parameter with the cdr add onconfig
command. For more information, see “cdr add onconfig” on page A-27.
The following problems illustrate common issues with performing alter operations
on replicated tables:
v Problem: You receive an error that the replicate is not defined after running the
following command:
cdr alter -o test:tab
Error:Replicate(s) not defined on table test:.tab
The owner name is missing from the table name, test:tab.
Solution: Include the table owner name, for example:
cdr alter -o test:user1.tab
v Problem: You receive an error that the replicated table is in alter mode after
running the following command:
> insert into tab values(1,1);
REPLICATE: rep1
STATE: Active ON:delhi
CONFLICT: Timestamp
FREQUENCY: immediate
QUEUE SIZE: 0
PARTICIPANT: test:nagaraju.tab
OPTIONS: transaction,ris,ats,fullrow
Database selected.
19995: Enterprise Replication error encountered while setting alter mode. See
message log file to get the Enterprise Replication error code
Error in line 1Near character position 27
>
REPLICATE: rep2
STATE: Active ON:delhi
CONFLICT: Timestamp
FREQUENCY: immediate
QUEUE SIZE: 0
PARTICIPANT: test:nagaraju.tab12
OPTIONS: transaction,ris,ats,fullrow
REPLTYPE: Master
You can see that repl1 has been converted to a master replicate. You can also see
that a new replicate definition,
Shadow_4_rep1_GMT1112381058_GID100_PID29935, was also created against
the table (tab1). Notice the last two fields of the output for
Shadow_4_rep1_GMT1112381058_GID100_PID29935:
REPLTYPE: Shadow
PARENT REPLICATE: rep1
The Shadow attribute indicates that this replicate is a shadow replicate, and
PARENT REPLICATE: rep1 shows that this is a shadow replicate for the primary
replicate rep1. Notice that the Master attribute is not present for this replicate
definition. This shadow replicate is actually the old non-master replicate. The cdr
remaster command created a new master replicate, rep1, for the table tab and
converted the old non-master replicate (rep1) to a shadow replicate for the new
master replicate.
This table is not yet ready to be altered because there is still a non-master
replicate, Shadow_4_rep1_GMT1112381058_GID100_PID29935, defined for the
table, tab. You must wait for
Shadow_4_rep1_GMT1112381058_GID100_PID29935 to be deleted automatically
by Enterprise Replication after all the data queued for this shadow replicate is
applied at all the replicate participants. This process can take some time.
Alternatively, if you are sure that there is no data pending for this old
non-master replicate, then you can issue the cdr delete repl command against
Shadow_4_rep1_GMT1112381058_GID100_PID29935.
After making sure that Shadow_4_rep1_GMT1112381058_GID100_PID29935 no
longer exists, you can attempt the ALTER TABLE tab add col4 int; statement
against the table.
You can set your alarm program script to capture Enterprise Replication class IDs
and messages and initiate corrective actions or notifications for each event. For
example, you can add a new chunk to the queue data sbspace or dbspace if you
detect (using class ID 31) that the storage space is full.
Most event alarms operate in the background. For events that operate in the
foreground, the session that triggered the alarm is suspended until the alarm
program execution completes. For information on setting alarm program scripts to
capture events, see "Event alarms" in the IBM Informix Administrator's Reference.
The following table lists the information about Enterprise Replication event alarms:
v The class ID is an integer value identifying the category of the event.
v The class message provides general information about the event.
v The specific message provides detailed information about the event.
v The severity describes the seriousness of the event on a scale from 1 to 5, where
5 is the most serious.
v Whether the event operates in the foreground and explanations for the events.
v Whether the event is disabled by default.
Table 8-4. Enterprise Replication Event Alarms
Class ID Class and Specific Messages Severity Explanation
30 Class message: 3 User transactions are being blocked to prevent the
database server from overwriting a logical log that
DDR subsystem notification Enterprise Replication has not yet processed.
Specific message: Online log: The following message appears in the
online log:
DDR Log Snooping - Catchup
phase started, userthreads blocked DDR Log Snooping - DDRBLOCK phase started,
userthreads blocked
DDR subsystem notification Online log: The specific message also appears in the
online log.
Specific message:
ER state: Active and replicating data.
DDR Log Snooping - Catchup
phase completed, userthreads User action: None.
unblocked
30 Class message: 4 The log replay position has been overwritten.
DDR subsystem failure Online log: The following message appears in the
online log:
Specific message:
WARNING: The replay position was overrun, data
WARNING: The replay position may not be replicated.
was overrun, data may not be
replicated. ER state: Active and replicating data. Enterprise
Replication shuts down if the log read position also
gets overwritten. If Enterprise Replication shuts
down, event alarm 47 is raised.
ER stable storage pager sbspace is The grouper paging sbspace has run out of space.
full
ER state: Active and waiting for the space to be
Specific message: added to the sbspace name specified in alarm
specific message.
CDR Pager: Paging File full:
Waiting for additional space in User action: Add a new chunk to the specified
sbspace_name sbspace.
ER stable storage queue sbspace is The storage space of a queue has filled.
full
Online log: The specific message also appears in the
Specific message: online log.
CDR QUEUER: Send Queue space ER state: Active and waiting for space to be added
is FULL - waiting for space in to the sbspace listed.
sbspace_name.
User action: Add a new chunk to the specified
CDR QUEUER: Send Queue space sbspace. If the message specifies
is FULL - waiting for space in CDR_QDATA_SBSPACE, add a chunk to one or
CDR_QDATA_SBSPACE more of the sbspaces specified by the
CDR_QDATA_SBSPACE configuration parameter.
ER stable storage queue dbspace is The storage space of a queue has filled.
full
Online log: The specific message also appears in the
Specific message: online log.
CDR QUEUER: Send Queue space ER state: Active and waiting for space to be added
is FULL - waiting for space in to the dbspace specified by the
CDR_QHDR_DBSPACE. CDR_QHDR_DBSPACE configuration parameter.
ER: error detected in grouper sub ER state: Enterprise Replication was shut down
component internally. Event alarm 47 is also raised.
ER: error detected in grouper sub ER state: Active and replicating transactions.
component
User action: Recommended to stop Enterprise
Specific message: Replication with the cdr stop command and restart
it using the cdr start command.
CDR Grouper Evaluator thread is
aborting.
32 Class message: 4 The grouper subcomponent cannot copy the
transaction into the send queue.
ER: error detected in grouper sub
component ER state: Active and replicating transactions.
ER: error detected in data sync sub ER state: Active and replicating transactions.
component
User action: Run the cdr check replicateset
Specific message: command with the --repair option to make sure that
the data is consistent.
CDR DS thread_name thread is
aborting.
34 Class message: 3 This event runs in the foreground.
ER: error detected in queue RQM cannot find the replicate in the global catalog
management sub component for which it has a transaction.
CDR CDR_subcomponent_name: bad User action: Run the cdr check replicateset
replicate ID replicate_id command with the --repair option to make sure that
the data is consistent.
ER state: Inactive.
file name|file name. User Action: To process the failed transactions, run
the cdr repair command for each file, or run the cdr
check replicateset command with the --repair
option.
49 Class message: 3 This event alarm is disabled by default.
A replication state change event The cdr start command was run.
has happened.
Specific message:
Specific message:
A replication state change event The cdr suspend server command was run.
has happened.
Specific message:
A replication state change event The cdr resume server command was run.
has happened.
Specific message:
A replication state change event The cdr connect server command was run.
has happened.
Specific message:
A replication state change event The cdr disconnect server command was run.
has happened.
Specific message:
A replication state change event The cdr suspend replicate command was run.
has happened.
Specific message:
Replication is suspended on
replicate replicate_name on server
server_name.
56 Class message: 3 This event alarm is disabled by default.
A replication state change event The cdr suspend replicateset command was run.
has happened.
Specific message:
Replication is suspended on
replicate set replicateset_name on
server server_name.
57 Class message: 3 This event alarm is disabled by default.
A replication state change event The cdr resume replicate command was run.
has happened.
Specific message:
A replication state change event The cdr resume replicateset command was run.
has happened.
Specific message:
A replication state change event The cdr start replicate command was run.
has happened.
Specific message:
A replication state change event The cdr start replicateset command was run.
has happened.
Specific message:
A replication state change event The cdr stop replicate command was run.
has happened.
Specific message:
A replication state change event The cdr stop replicateset command was run.
has happened.
Specific message:
A replication state change event The cdr modify replicate command was run.
has happened.
Specific message:
A replication state change event The cdr modify replicateset command was run.
has happened.
Specific message:
A replication state change event The cdr change replicate command was run to add
has happened. or delete one or more participants.
Specific message:
A replication state change event The cdr change replicateset command was run to
has happened. add or delete one or more replicates.
Specific message:
Change in replicateset
replicateset_name on server
server_name: operation action,
member[s] replicate_name.
67 Class message: 3 This event alarm is disabled by default.
A replication state change event The cdr delete server command was run.
has happened.
Specific message:
A replication state change event The cdr delete replicate command was run.
has happened.
Specific message:
A replication state change event The cdr delete replicateset command was run.
has happened.
Specific message:
A replication state change event The cdr modify server command was run.
has happened.
Specific message:
The replay position (logical log ID User Action: Clear the receive queue and restart
log_number and log position replication by running the cdr cleanstart command
log_position) is later than the and then synchronize the data by running the cdr
current position. check replicateset command with the --repair
option.
By default, Enterprise Replication event alarms are enabled, except most of the
state change event alarms that are raised by specific cdr commands. You might
want to enable state change event alarms to track which cdr commands are being
run, but if you are setting up your replication system and running many cdr
commands, the resulting large number of event alarms might affect system
performance.
To change which Enterprise Replication event alarms are enabled, reset the values
of the CDR_ENV configuration parameter for the CDR_ALARMS environment
variable:
1. Add a new line or update the existing line for CDR_ENV CDR_ALARMS in
the onconfig file. List all the Enterprise Replication event alarms that you want
to be enabled.
2. Restart the database server.
Example
The following example shows the CDR_ENV value in the onconfig file for the
CDR_ALARMS environment variable with event alarm 49 enabled in addition to
the default event alarms:
Each cdr command follows the same approximate format, with the following
components:
v Command and its variation
The command specifies the action that should be taken.
v Options
The options modify the action of the command. Each option starts with a minus
(-) or a double-minus (--).
v Target
The target specifies the Enterprise Replication object that should be acted upon.
v Other objects
Other objects specify objects that are affected by the change to the target.
If you enter an incorrect cdr command at the command-line prompt, the database
server returns a usage message that summarizes the cdr commands. For a more
detailed usage message, enter cdr variation -h. For example, cdr list server -h.
You can run cdr commands from within SQL statements by using the SQL
administration API. Most cdr commands that perform actions are supported by the
SQL administration API; cdr commands that display information are not
supported. For more information, see the IBM Informix Administrator's Reference.
Related concepts
“Enterprise Replication Server Administrator” on page 2-1
Command Abbreviations
For most commands, each of the words that make up a cdr command variation can
be abbreviated to three or more characters.
The exceptions to this rule are the replicateset commands, which can be
abbreviated to replset. For example, the following commands are equivalent:
Command abbreviations are not allowed when you run cdr commands within SQL
statements using the SQL administration API. For more information, see the IBM
Informix Administrator's Reference.
Option Abbreviations
Each option for a cdr command has a long form and a short form. You can use
either form, and you can mix long and short forms within a single command.
Using short forms, you can write the previous examples as follows:
UNIX:
cdr def ser -c ohio -i 500 -A /cdr/ats -I utah
WINDOWS:
cdr def ser -c ohio -i 500 -A D:\cdr\ats -I utah
The long form is always preceded by a double minus (--). Most (but not all) long
forms require an equal sign (=) between the option and its argument. The short
form is preceded by a single minus (-) and is usually the first letter of the long
form. The short form never requires an equal sign. However, sometimes the short
form is capitalized and sometimes it is not. To find the correct syntax for the short
form, check the table that accompanies each command variation.
With the exception of the keyword transaction, all keywords (or letter
combinations) that modify the command options must be written as shown in the
syntax diagrams. For example, in the “Conflict Options” on page A-56, the option
conflict can be abbreviated, but the keyword ignore cannot be abbreviated. Both of
the following forms are correct:
--conflict=ignore
-C ignore
Option Order
You can specify the options of the cdr commands in any order. Some of the syntax
diagrams show the options in a specific order because it makes the diagram easier
to read.
Do not repeat any options. The following fragment is incorrect because -c appears
twice. In most cases, if you duplicate an option you will receive an error. However,
if no error is given, the database server uses the last instance of the option. In the
following example, the database server uses the value -c utah:
-c ohio -i 500 -c utah
The following two commands are equivalent. The first command is too long to fit
on a single line, so it is continued on the next line. The second example, which
uses short forms for the options, fits on one line.
For information on how to manage long lines at your command prompt, check
your operating system documentation.
Long Identifiers
Identifier names used in cdr commands follow the guidelines of SQL syntax.
Identifiers are the names of objects, such as database servers, databases, columns,
replicates, replicate sets, and so on, that Informix and Enterprise Replication use.
For more information about identifiers, see the IBM Informix Guide to SQL: Syntax.
The length of a path and file name, such as the names of ATS files, can be 256
bytes.
User login IDs can be a maximum of 32 bytes. The owner of a table is derived
from a user ID and is thus limited to 32 bytes.
Connect Option
Most cdr commands allow a connect option to specify the database server to
connect to for performing the command.
The --connect option causes the command to use the global catalog that is on the
specified server. If you do not specify this option, the connection defaults to the
database server specified by the INFORMIXSERVER environment variable.
-c server
--connect=server
-c server_group
--connect=server_group
You must use the --connect option when you add a database server to your
replication environment with the cdr define server command.
You might use the --connect option if the database server to which you would
normally attach is unavailable.
If your replication domain contains database servers that are running different
server versions, cdr commands must connect to the server running the latest
version of IBM Informix. If you are connected to a database server running an
older version of IBM Informix, you cannot run a cdr command on a database
server running a later version of IBM Informix.
P I
" database@server_group:owner.table "
R O
Participant Modifier:
Option Meaning
I Default. Disables the table-owner option (O).
Usage
You must include the server group, database, table owner, and table name when
defining a participant, and enclose the entire participant definition in quotation
marks.
Restriction: Do not create more than one replicate definition for each row and
column set of data to replicate. If the participant overlaps, Enterprise Replication
attempts to insert duplicate values during replication.
Only replicate between like data types. For example, do not replicate between the
following:
v CHAR(40) to CHAR(20)
v INT to FLOAT
For detailed information about the SELECT statement and WHERE clause, refer to
the IBM Informix Guide to SQL: Syntax.
Examples
The message briefly describes the error. For information on interpreting the return
code, use the cdr finderr command.
This error code can be returned when a cdr sync or cdr check task cannot
switch connections between task participants.
User action: Run the command from the replication server running the
most recent version of Informix.
This error code can be returned if one of the cdr sync or cdr check task
participants cannot be accessed or if a task participant became inactive or
went offline while a sync or check task is in progress.
This error code can be returned if the user executing the cdr define
replicate or cdr change replicate command does not have Connect
privilege on the database specified for the replicated table.
User action: Check the status of all participating servers and rerun the
command when all servers are active.
6 Database does not exist. The database name specified for the replicate in the command does not
exist.
User action: Verify the spelling of the database names and that they exist
on each participant and rerun the command.
This error code can be returned if the cdr view command is run and the
sysadmin database does not exist.
7 Database not logged. The database specified for the replicate in the command is a non-logging
database. Replicated databases must be logged.
User action: Change the database logging mode to buffered logging and
rerun the command.
8 Invalid or mismatched The value for the --at or --every option is not within the range of valid
frequency attributes. values or is formatted incorrectly.
User action: Rerun the command with valid and correctly formatted
frequency values.
9 A connection already exists This error code can be returned if the cdr connect server command is run
for the given server. for a server that already has an active connection.
10 Invalid replicate set state The replicate set specified in the command is not in the appropriate state
change. for the command. This error code is returned in the following situations:
v The cdr stop replicateset command is run but all replicates in the
replicate set are not active.
v The cdr start replicateset command is run but all replicates in the
replicate set are already active.
v The cdr suspend replicateset command is run but all replicates in the
replicate set are not active.
v The cdr resume replicateset command is run but all replicates in the
replicate set are already active.
User action: Run the cdr list replicateset and cdr list replicate commands
to see the status of each replicate.
User action: Rerun the command with the correct replicate set name, or
add replicates to the replicate set and then rerun the command.
12 Replicate set name already in The replicate set name specified in the command is already being used.
use. Replicate set names must be unique in the domain.
User action: Run the cdr list replicateset command to view a list of
replicate set names and then rerun the original command with a different
replicate set name.
13 Invalid idle time The value for the --idle option is not within the range of valid values or is
specification. formatted incorrectly.
User action: Rerun the command with a valid and correctly formatted
value.
14 Invalid operator or specifier. Both the --ignoredel y and the deletewins options were used in the same
command. These options cannot be used together.
User action: Rerun the command with only one of these options.
15 Invalid length. The ATS or RIS directory path specified in the command exceeds 256
characters.
This error can be returned if the server group name exceeds 127 characters.
User action: Rerun the command with a shorter directory path or server
group name.
16 Replicate is not a member of The replicate specified to be deleted from the replicate set is not a member
the replicate set. of the replicate set.
User action: Run the cdr list replicateset command for the replicate set to
view a list of replicates in the replicate set and then rerun the original
command with the correct replicate name.
17 Participants required for One or more of the participants necessary for this command were not
operation specified. specified.
This error code is returned if the sync source server or the target server is
not defined as a participant for the cdr sync or cdr check task. This error
code is also returned if the target participant list is empty.
User action: Add a primary key constraint to the table and rerun the
command.
19 Table does not exist. The table owner name specified in the command is not correct.
This error is also returned if the table owner name is not specified for a
table in an ANSI database.
User action: Rerun the command with the correct table owner name.
User action: Rerun the command including the primary key column in the
participant SELECT statement.
25 Replicate already The replicate specified to be added to the replicate set is already a member
participating in a replicate of the replicate set.
set.
User action: Run the cdr list replicateset command to view a list of
replicates in the replicate set.
26 Replicate set operation not The replicate specified to be deleted from the replicate set does not have a
permitted on replicate. valid name.
User action: Run the cdr list replicateset command to view a list of
replicates in the replicate set and then rerun the original command with the
correct replicate name.
28 Replicate name already in The replicate name specified in the command is already being used.
use. Replicate names must be unique in the domain.
User action: Run the cdr list replicate command to view a list of replicate
names and then rerun the original command with a different replicate
name.
29 Table does not exist . The table name specified in the command does not exist.
User action: Run the cdr list replicate command to see the status of the
replicate.
31 Undefined replicate. The replicate name cannot be found in Enterprise Replication catalog tables.
The name of the replicate might be incorrectly specified in the command.
User action: Rerun the command with the correct replicate name.
33 Server not participant in The server name specified in the command is not a participant in the
replicate/replicate set. replicate or replicate set.
User action: To see a list of all participants for each replicate, query the
syscdrpart view in the sysmaster database.
User action: Check the sqlhosts file for the correct spelling of the server
group name, or, if necessary, update the sqlhosts file to add the server
group, and then rerun the original command.
37 Undefined server. The target participant cannot be found in the Enterprise Replication catalog
tables. The name of the server might be incorrectly specified in the
command.
User action: Rerun the command with the correct server name.
38 SPL routine does not exist. The SPL routine specified with the --conflict option does not exist on one
or more participants.
User action: Make sure that the SPL routine exists on all participants and
rerun the command.
39 Invalid select syntax. The SELECT statement included in the command is not valid or is missing
from the command.
User action: Rerun the command with the correct SELECT statement.
40 Unsupported SQL syntax The SELECT statement contains syntax that is not supported for replicate
(join, etc.). participants. Syntax such as subqueries in the WHERE clause or selecting
from multiple tables with a JOIN clause is not supported.
User action: Rerun the command with the correct SELECT statement.
42 Invalid time range. The time range does not have valid values or is formatted incorrectly.
User action: Rerun the command with a valid and correctly formatted time
range.
43 Participants required for The command did not include the required participant information.
specified operation.
User action: Rerun the command with participant information.
44 Invalid name syntax. The name of a replicate or server in the command is not valid, for example,
the name could be too long.
This error code is also returned if the server specified in the cdr repair
command does not exist in the Enterprise Replication catalog.
48 Out of memory. Enterprise Replication cannot allocate enough memory for this command.
49 Maximum number of The maximum number of replicates that can be defined from a particular
replicates exceeded. server has been exceeded.
User action: Run the cdr list server command to see a list of all replication
server names and group IDs
53 Duplicate server or replicate. A replication server or replicate name is listed more than once in the
command.
This error code is returned if the sync source server is also specified as a
sync target server or if the same server is listed multiple times as a sync
target participant.
This error code is returned if the same group name is defined more than
once in the sqlhosts file.
User action: Rerun the command specifying each server and replicate one
time.
54 Invalid conflict rule The conflict resolution rule is not correctly specified.
specified.
This error code is returned for the cdr define replicate or cdr modify
replicate command under the following circumstances:
v A stored procedure is specified as the conflict resolution rule but the
table has user-defined data types or collection data types.
v A secondary conflict resolution rule is specified that is not a stored
procedure conflict resolution rule.
v A secondary conflict resolution rule is specified but the primary conflict
resolution rule is not time stamp or delete wins.
User action: Correct the conflict resolution rule issue and rerun the
command.
55 Resolution scope not The conflict resolution scope (row or transaction) is required for ER to
specified. resolve conflicts between replicated transactions. Scope is not required if the
conflict resolution rule is ignore, in which case ER does not attempt to
resolve conflicts.
User action: Alter the replicated table to add the shadow columns by using
the ADD CRCOLS clause and rerun the original command.
57 Error creating delete table. The delete table corresponding to the replicated table could not be created.
User action: Check the server message log file for additional error
messages.
58 No conflict resolution rule A conflict resolution rule was not specified in the command.
specified.
User action: Rerun the command with the --conflict option to specify a
conflict resolution rule.
61 User does not have The user running this command does not have the DBSA privilege at one
permission to issue of the participants in the command.
command.
User action: Acquire the DBSA privilege on all participants and rerun the
command, or rerun the command as a user that has the DBSA privilege at
all participants.
User action: Run the cdr list server command to see the status of the
server.
63 Enterprise Replication The command cannot make Enterprise Replication active because ER is
already active. already active on the server.
User action: Run the cdr list server command to see the status of the
server.
64 Remote/cyclic The command to define a replication server was attempted on a remote
synchronization not allowed. server.
User action: Rerun the command on the server that is being defined.
65 Server identifier already in The server group ID is not unique.
use.
User action: Rerun the command with a unique server group ID.
66 No upper time for prune The ending date value for the error pruning range was not specified.
error.
User action: Rerun the command with a valid ending date.
67 Error not found for delete or The error sequence number does not exist in the errors table.
update.
User action: Run the cdr error command to see a list of error sequence
numbers and then rerun the command with an existing number.
68 Invalid participant mode. The participant type value is not valid.
User action: Rerun the command with the --conflict option set to ignore or
always.
70 Connect/disconnect to/from The command attempted to connect the local server to itself.
same server.
User action: Rerun the command with a different server name.
72 Cannot delete server with The command could not delete the hub server because the hub server still
children. has child servers.
User action: Delete the child servers and then delete the hub server.
75 Request denied on limited The command is not allowed on leaf servers.
server.
77 Could not drop the The syscdr database could be not deleted because a client is accessing it.
Enterprise Replication
database. User action: Wait for the client to unlock the syscdr database and then
rerun the command. If necessary, use the --force option to drop the syscdr
database if Enterprise Replication was partially deleted.
User action: Rerun the command with a valid ATS directory path.
79 Invalid RIS directory. The RIS directory path specified in the command was not valid for one of
the following reasons:
v The path does not exist.
v The path is not a directory.
v The path is /dev/null (UNIX) or NUL (Windows).
User action: Rerun the command with a valid RIS directory path.
80 Invalid conflict resolution The conflict resolution rule of a replicate cannot be changed to ignore or
change. from ignore.
84 No sync server. A synchronization server must be specified if the replication server being
defined is a non-root or leaf server. The first server in a replication domain
must be a root server.
User action: Rerun the command with only one of the options.
91 Invalid server state change. The server is already in the state indicated by the command.
This error code can be returned if the cdr suspend server command is run
on a server that is suspended or if the cdr resume server command is run
on a server that is active.
User action: Run the cdr list server command to see the status of the
server.
92 CDR is already defined. Enterprise Replication is already defined on this server.
93 Enterprise Replication is Enterprise Replication cannot be stopped on the server because replication
currently initializing. is in the process of being initialized.
User action: Run the cdr list server command to see the status of the
server. Rerun the command when replication is active.
94 Enterprise Replication is Enterprise Replication cannot be stopped on the server because replication
currently shutting down. is already in the process of being stopped.
User action: Run the cdr list server command to see the status of the
server. If necessary, rerun the command.
99 Invalid options or arguments One or more of the options included with this command are not valid
passed to command. options.
User action: Rerun the command specifying a root server with the --sync
option.
103 Invalid server to connect. A non-root server can only connect to its parent or children servers.
User action: Create the required routines for the user-defined type and
rerun the command.
106 Setup necessary for UDR The set-up process necessary to run the streamread(), streamwrite(), or
invocation could not be compare() routine for a user-defined type included in the participant
completed. definition failed.
User action: Check to be sure that the required routines for the
user-defined type exist. Create them if necessary and rerun the command.
107 Sbspace specified for the The sbspace specified for the CDR_QDATA_SBSPACE configuration
send/receive queue does not parameter is not a valid name or does not exist.
exist.
User action: Correct the value of the CDR_QDATA_SBSPACE configuration
parameter or create the sbspace and rerun the command.
108 DB space specified for the The dbspace specified for the CDR_QHDR_DBSPACE configuration
send/receive queue does not parameter is not a valid name or does not exist.
exist.
User action: Correct the value of the CDR_QHDR_DBSPACE configuration
parameter or create the dbspace and rerun the command.
110 Data types with out of row A replicate participant WHERE clause cannot include a data type that has
or multi-representational out-of-row data, such as, a collection data type, a user-defined type, or a
data are not allowed in a large object type.
replicate where clause.
User action: Remove the column with out-of-row data from the participant
WHERE clause and rerun the command.
111 Cannot have Full Rows off The stored procedure conflict resolution rule requires full row replication.
and use stored procedure
conflict resolution. User action: Rerun the command without the --fullrow=n option.
112 The replicate set command The command was successful on some, but not all, of the replicates in the
could only be partially replicate set.
executed. Please run cdr list
replset ReplSetName to User action: Run the cdr list replicate command to see the status of each
check results. replicate and run the appropriate command on each of the remaining
replicates.
User action: Run the equivalent command for the replicate set.
115 The syscdr database is The syscdr database cannot be opened.
missing.
User action: Check server message log file for any additional error
messages.
If you received this error code after running the cdr delete server --force
command, no action is required on the server being deleted. Run the cdr
delete server command to delete that server on all peer replication servers
in the domain.
If you receive this error after running the cdr start command, make sure
that Enterprise Replication is defined on the local server, and if necessary,
define it by running the cdr define server command.
116 Dbspace indicated by The dbspace specified as the value of the CDR_DBSPACE configuration
CDR_DBSPACE is invalid. parameter does not exist.
User action: Run the cdr stop command and then rerun the cdr delete
server --force command.
121 Master participant not The replication server that is specified as the master server in the command
found. does not exist or is not a participant in the specified replicate.
User action: Rerun the command with the correct master server name.
122 Attempt to perform invalid The replicate specified in the command has shadow replicates, which
operation including shadow prevent the command from completing.
replicates.
User action: Run the cdr list replicate command to see shadow replicate
information. Wait for the shadow replicate to be deleted and then rerun the
original command. If you are deleting the replicate, delete the shadow
replicate and then rerun the original command.
User action: Rerun the command with the master server included in the
participant list or check the table dictionary.
126 Invalid template participant. The same table name was specified more than once in the cdr define
template command, or a participant name in the cdr realize template
command is not valid.
User action: Rerun the command with unique table names or with valid
participant names.
127 Template name already in A replication template with this name already exists.
use.
User action: Rerun the command with a unique template name.
128 Undefined template. The template name specified in the command does not exist.
User action: Run the cdr delete template command to delete a template.
131 Sync server not specified. The synchronization server specified in the command must be the same
server that was specified in the cdr define repair command.
User action: Rerun the command with the correct synchronization server.
132 Invalid sync server specified. The synchronization server specified in the command is not a replication
Server is not yet defined in server.
ER topology.
User action: Rerun the command with an existing replication server as the
synchronization server.
134 Cannot lock the replicated The command cannot obtain an exclusive lock on the table to set alter
table in exclusive mode. For mode.
more information see
message log file. User action: See the online message log file for other errors.
135 Replicate/table is not in alter The table specified in the command is not in alter mode and therefore alter
mode. mode cannot be turned off.
136 Snoopy sub-component is Alter mode could not be set because the log capture thread was not active.
down.
User action: Run the cdr list replicate command to see the states of
replicates.
155 Resynch job is not defined. The repair job specified in the command does not exist.
User action: Run the cdr list repair command to see the states of repair
jobs and rerun the command with an existing repair job name.
156 Cannot perform auto Automatic remastering is not possible for the specified replicate.
remastering process.
Replicate is not defined with User action: Manually remaster the replicate. For instructions, see “Manual
column name verification Remastering” on page 7-26.
option (–name=y). Perform
manual remastering process.
157 CDR: Cannot verify/block The specified table cannot be set in alter mode because the grouper
grouper evaluation blocking component is not active.
condition.
User action: Run the onstat -g grp and onstat -g ddr commands to check
the status of the grouper and log capture.
158 CDR: Cannot unblock Alter mode cannot be turned off for the table because the grouper
grouper evaluation. component is not active.
User action: Run the onstat -g grp and onstat -g ddr commands to check
the status of the grouper and log capture.
159 CDR: Grouper evaluation More than one alter statement for replicated tables was included in a single
was already blocked in the transaction.
same transaction. Commit
the previous alter statement User action: Rerun each alter statement in its own transaction.
then re-execute the current
alter statement.
160 The specified table was not A table name specified in the command was not found or is not a type of
found in the database. The table that can be replicated.
table specified is either a
view or an internally created User action: Rerun the command with valid table names.
cdr system table and
replicate cannot be defined
on views and internally
created cdr system tables.
161 Specified file to read table The file name specified in the command does not exist.
participants filename could
not be opened. Please check. User action: If necessary, create the file. Rerun the command with the
Template could not be correct file path and name for the table list.
defined.
162 CDR: Local group name not The ATS or RIS file content is not in the correct format. The file might be
defined in ATS/RIS file. corrupted.
User action: Run the cdr list replicate command to see the replicates that
are defined for the table.
164 Cannot repair - ATS/RIS The ATS or RIS file content is not in the correct format. The file might be
repair failed. corrupted.
165 Cannot suspend The replicate or replicate set cannot be suspended until the active repair
replicate/replset because of jobs are complete.
dependent repair jobs.
User action: Wait for the repair jobs to complete. Run the cdr list replicate
command to see if the shadow replicates associated with the repair jobs still
exist. After the shadow replicates are automatically deleted, rerun the
original command.
166 Replicate set does not have The replicate set specified in the commands does not contain replicates.
any replicates.
User action: Run the cdr list replicateset command for the replicate set to
see its replicates.
167 Enterprise Replication is not Enterprise Replication commands cannot be run on servers running
supported in Informix Informix Express Edition.
Express Edition server.
168 The specified table is Replicates cannot be defined on views.
actually a view, replicate
definition on view is not User action: Rerun the command specifying standard table names.
supported.
169 Cannot realize an empty The template could not be instantiated because it does not contain any
template/ replicates.
User action: Run the cdr list template command to see if the template
contains replicates.
170 Template is not yet defined The template could not be instantiated because it is not defined.
that does not have any
replicates. User action: Run the cdr list template command to see the names of
defined templates.
171 Classic replicates do not The --verify and --autocreate options are valid only for master replicates.
support --verify (-v) and/or
--autocreate (-u) options. User action: Verify the replicate definition by running the cdr list replicate
command.
172 Checksum libraries not Enterprise Replication cannot find checksum UDR routines for the cdr
installed. check command. This error occurs if the replication server is running a
version of Informix that does not support the cdr check replicate or cdr
check replicateset command.
User action: Run the cdr list server or cdr view servers command to see
the status of the participating server and when all servers are active, rerun
the original command.
This error code is also returned when a repair job created by the cdr define
repair command is stopped by the cdr stop repair command.
User action: Restart the job by running the cdr start repair command.
174 External Sync abort required. The synchronization or repair task did not complete in the timeout period.
This error can occur if the replicate being synchronized or the shadow
replicate that was created to resynchronize the data is not active at all the
participants specified in the command.
User action: Run the cdr list replicate command to check the replicate
status. If all participants are active, try running the command again.
175 Sync has received a request The synchronization or check command was stopped.
to stop.
176 Sync attempted on replicate The synchronization or check command was stopped because one of the
which is not active. replicates specified is not active.
178 WARNING: Replicate is not The replicate is not in sync.
in sync.
This error can be returned after running cdr check replicate or cdr check
replicateset.
This error can be returned after running cdr check replicate or cdr check
replicateset with the --repair option if there are pending transactions that
have not yet been applied or if transactions were aborted.
User action: If you receive this error after running a consistency check,
repair the data. For more information, see Resynchronizing data among
replication servers.
If you receive this error code after repairing data, look for ATS or RIS files
at target participants. If you see ATS or RIS files, look at the SQL and ISAM
error code for the failures and if necessary repair the transactions by using
the cdr repair command. If there are no ATS or RIS files at the target
participants, rerun the original command with the --inprogress option to
control how long check task should recheck inconsistent rows that might be
in process of being applied at target servers.
181 Value specified cannot be set The specified configuration parameter was not modified for the current
in-memory, for more session.
information see message log
file. User action: See the server online message log file for further information.
182 Warning: Value specified was The value of the configuration parameter specified in the command was
adjusted before setting it adjusted and then the configuration parameter was reset for the current
in-memory, for more session.
information see message log
file. User action: See the server online message log file for further information.
User action: Look at the additional error messages printed on the screen to
get more details about this error.
201 Sync/Check encountered an The data type of one of the columns being synchronized or checked cannot
unexpected column type. be resolved for data comparison.
202 Source and Target do not Corresponding columns on the source server and the target server have
have the same data type. different data types.
203 Data for row or column not Enterprise Replication cannot display the column value of a mismatched
found. column on the screen.
204 Table could not be found. The table that is being synchronized or repaired is not found on one of the
participants. This error code is also returned if the participant being deleted
cannot be found in the Enterprise Replication catalog tables.
205 Undefined server group. The server group specified in the command was not found in the
Enterprise Replication catalog tables.
User action: Rerun the command with an existing server group name.
206 Template not realized at sync The template could not be realized on the specified servers because it had
data source. not yet been realized on the synchronization server.
User action: Rerun the cdr realize template command specifying the
synchronization source server as a participant.
207 Template already realized at One or more of the participants specified in the command already has the
one or more of requested template instantiated on it.
servers.
User action: Run the cdr list replicate command to check the status of the
participants and then rerun the original command with the correct list of
participants.
208 Server unknown at remote Information about the local server is not available at the remote server.
server.
209 A byte sequence that is not a One or more characters in a name specified in the command is not valid.
valid character in the
specified locale was
encountered
210 Parameter passed to An argument specified in the command does not have a valid value.
command (or internally,
routine) is invalid.
211 Command is too large to be The command specified as a background task exceeded 2048 bytes.
executed as a background
task. User action: Rerun the command without the --background option.
212 Sync/Check subtask aborted. One of the tasks that was being performed in parallel was stopped.
User action: Check the command output to determine which task was
stopped.
This error can be returned after running cdr check replicateset with the
--repair option if there are pending transactions that have not yet been
applied or if transactions were aborted.
User action: If you receive this error after running a consistency check,
repair the data. For more information, see Resynchronizing data among
replication servers.
If you receive this error code after repairing data, look for ATS or RIS files
at target participants. If you see ATS or RIS files, look at the SQL and ISAM
error code for the failures and if necessary repair the transactions by using
the cdr repair command. If there are no ATS or RIS files at the target
participants, rerun the original command with the --inprogress option to
control how long check task should recheck inconsistent rows that might be
in process of being applied at target servers.
214 ER: The logical log replay Enterprise Replication could not start because the logical log replay position
position is not valid. Restart is not valid.
ER with the cdr cleanstart
command, and then User action: Run the cdr cleanstart command and then the cdr check
synchronize the data with replicateset command with the --repair option.
the cdr check --repair
command.
215 Command failed -- The Tables created with the CREATE EXTERNAL TABLE statement cannot be
specified table is an external included in a replicate.
table. You cannot include an
external table in a replicate.
Related reference
“cdr finderr” on page A-81
Frequency Options
You can specify the interval between replications or the time of day when
replication should occur for a replicate.
The frequency of replication is a property of a replicate. You can set the frequency
of replication for a replicate when you define it or modify it. You can reset the
frequency of all replicates in a replicate set when you define or modify a replicate
set or define a template. For non-exclusive replicate sets, you can update the
frequency of individual replicates separately.
Frequency Options:
--immed
--every=interval
--at=time
Intervals
The -e interval option lets you specify the interval between actions. The interval of
time between replications can be either of the following formats:
v The number of minutes
To specify the number of minutes, specify an integer value greater than 0. For
example, -e 60 indicates 60 minutes between replications.
If you specify the interval of time between replications in minutes, the longest
interval allowed is 1966020.
v The number of hours and minutes
To specify hours and minutes, give the number of hours, followed by a colon,
and then the number of minutes. For example, -e 5:45 indicates 5 hours and 45
minutes between replications.
If you specify the length of time in hours and minutes, the longest interval allowed
is 32767:59.
Time of Day
Enterprise Replication always gives the time of day in 24-hour time. For example,
19:30 is 7:30 P.M. Enterprise Replication always gives times with respect to the
local time, unless the TZ environment variable is set. However, Enterprise
Replication stores times in the global catalog in Greenwich Mean Time (GMT).
The -a time option lets you specify the day on which an action should occur. The
string time can have the following formats:
v Day of week
To specify a specific day of the week, give either the long or short form of the
day, followed by a period and then the time. For example, --at=Sunday.18:40 or
-a Sun.18:40 specifies that the action should occur every Sunday at 6:40 P.M.
The day of the week is given in the locale of the client. For example, with a
A-26 IBM Informix Enterprise Replication
French locale,Guide
you might have --at=Lundi.3:30 or -a Lun.3:30. The time and
day are in the time zone of the server.
v Day of month
To specify a specific day in the month, give the date, followed by a period, and
then the time. For example, 1.3:00 specifies that the action should occur at 3:00
A.M. on the first day of every month.
The special character L represents the last day of the month. For example,
L.17:00 is 5:00 P.M. on the last day of the month.
v Daily
To specify that replication should occur each day, give only the time. For
example, 4:40 specifies that the action should occur every day at 4:40 A.M.
Related reference
“cdr change replicateset” on page A-32
“cdr define replicate” on page A-53
“cdr define replicateset” on page A-62
“cdr define template” on page A-68
“cdr modify replicate” on page A-93
“cdr modify replicateset” on page A-96
Syntax
cdr add onconfig “ parameter name value “
(1)
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Use the cdr add onconfig command to add one or more values to an Enterprise
Replication configuration parameter while replication is active. The ONCONFIG
file is updated. You can set environment variables by using the CDR_ENV
configuration parameter.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example adds an sbspace to the existing list of sbspaces for holding
spooled transaction row data:
cdr add onconfig "CDR_QDATA_SBSPACE sbspace_11"
The following example adds the cdrIDs for two version 7.x servers to the existing
list of servers:
cdr add onconfig "CDR_ENV CDRSITES_731=1,3"
Related tasks
“Dynamically Modifying Configuration Parameters for a Replication Server” on
page 7-1
Related reference
“cdr change onconfig” on page A-29
“cdr remove onconfig” on page A-105
cdr alter
The cdr alter command puts the specified tables in alter mode.
Syntax
cdr alter --on
(1) --off
Connect Option
database:owner.table
Notes:
1 See “Connect Option” on page A-3.
Usage
Use this command to place a table in or out of alter mode. Use alter mode when
you need to alter an attached fragment to the table or you want to perform other
alter operations manually.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Syntax
cdr change onconfig
(1)
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Usage
Use the cdr change onconfig command to replace the existing value of an
Enterprise Replication configuration parameter with a new value in the
ONCONFIG file. You can set Enterprise Replication environment variables by
using the CDR_ENV configuration parameter.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Syntax
Notes:
1 See “Connect Option” on page A-3.
Use this command to add or delete a participant from a replicate. You can define a
replicate that has zero or one participants, but to be useful, a replicate must have
at least two participants. You cannot start and stop replicates that have no
participants.
When you run the cdr change replicate command, an event alarm with a class ID
of 65 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example adds two participants to the replicate named repl_1:
db1@server1:antonio.table with the modifier select * from table1, and
db2@server2:carlo.table2 with the modifier select * from table2:
cdr change repl -a repl_1 \
"db1@server1:antonio.table1" "select * from table1" \
"db2@server2:carlo.table2" "select * from table2"
The following example removes the same two participants from replicate repl_1:
cdr change repl -d repl_1 \
"db1@server1:antonio.table1" \
"db2@server2:carlo.table2"
Related reference
“cdr define replicate” on page A-53
“cdr delete replicate” on page A-72
“cdr list replicate” on page A-82
“cdr modify replicate” on page A-93
“cdr resume replicate” on page A-109
“cdr start replicate” on page A-114
“cdr stop replicate” on page A-133
“cdr suspend replicate” on page A-136
“Enterprise Replication Event Alarms” on page 8-21
“Participant and participant modifier” on page A-4
repl_set replicate
Notes:
1 See “Connect Option” on page A-3.
Usage
Use this command to add replicates to a replicate set or to remove replicates from
an exclusive or non-exclusive replicate set:
v If you add a replicate to an exclusive replicate set, Enterprise Replication
changes the existing state and replication frequency settings of the replicate to
the current properties of the exclusive replicate set.
If you remove a replicate from an exclusive replicate set, the replicate retains the
properties of the replicate set at the time of removal (not the state the replicate
was in when it joined the exclusive replicate set).
When you add or remove a replicate from an exclusive replicate set that is
suspended or that is defined with a frequency interval, Enterprise Replication
transmits all the data in the queue for the replicates in the replicate set up to the
point when you added or removed the replicate.
v If you add or remove a replicate to a non-exclusive replicate set, the replicate
retains its individual state and replication frequency settings.
When you run the cdr change replicateset command, an event alarm with a class
ID of 66 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
The following example adds the replicates house and barn to replicate set
building_set:
cdr change replicateset --add building_set house barn
The following example removes the replicates teepee and wigwam from replicate
set favorite_set:
cdr change replset --delete favorite_set teepee wigwam
Related concepts
“Frequency Options” on page A-25
Related tasks
“Suspending a Replicate Set” on page 7-11
Related reference
“cdr define replicate” on page A-53
“cdr delete replicateset” on page A-73
“cdr list replicateset” on page A-86
“cdr modify replicateset” on page A-96
“cdr resume replicateset” on page A-110
“cdr start replicateset” on page A-117
“cdr stop replicateset” on page A-135
“cdr suspend replicateset” on page A-137
“cdr define replicateset” on page A-62
“Enterprise Replication Event Alarms” on page 8-21
Syntax
cdr check replicate --master=data_server
(1)
Connect Option
--repl=repl_name target_server
--all --name=task_name
--verbose --repair
delete
--extratargetrows= keep
merge
--background --skipLOB --since=start_time
--where=WHERE_Clause
Notes:
1 See “Connect Option” on page A-3.
Usage
Use the cdr check replicate command to check the consistency of data between
multiple database servers for a specific replicate. The cdr check replicate command
compares all rows on all specified database servers against the data in the
reference server and produces a consistency report. If you include the --verbose
option, the report lists every inconsistent row value; otherwise, the report
summarizes inconsistent rows.
If you want to monitor the progress of the check operation, include the --name
option and specify a name for the progress report task. Then run the cdr stats
check command and specify the progress report task name.
If replicated transactions are active when the cdr check replicate command is
running, the consistency report might include rows that are temporarily
inconsistent until those transactions are applied at the target server. By default, the
cdr check replicate command rechecks inconsistent rows for up to five seconds
after the initial check is completed. If you find your transaction latency is longer
than five seconds, you can extend the recheck time period by using the
--inprogress option to specify a longer interval. After the initial recheck,
inconsistent transactions are rechecked until there are no inconsistent transactions
or the amount of seconds specified by the --inprogress option elapses. In general,
set the recheck time to a little longer than your average transaction latency because
if repairing inconsistencies causes spooling in the send queue, transaction latency
might increase during a repair. View your transaction latency with the cdr view
apply command, or in the IBM OpenAdmin Tool (OAT) for Informix.
You can improve the performance of consistency checks by limiting the amount of
data that is checked by using one or more of the following options:
v Check from a specific time with the --since option. If the replicate uses the time
stamp or delete wins conflict resolution rule and you regularly check
consistency, you can limit the data that is checked to the data that was updated
since the last consistency check.
v Check a subset of the data with the --where option. For example, if you have a
corrupted table fragment on a server, you can specify to check only the data in
that fragment.
v Skip the checking of large objects with the --skipLOB option. If you find that
your large objects do not change as much as other types of data, then skipping
them can make a consistency check quicker.
If you have large tables, you can speed consistency checking by indexing the
ifx_replcheck shadow column.
If you include the --repair option, the cdr check replicate command repairs
inconsistent rows so that they match the rows on the reference server. The cdr
check replicate command uses direct synchronization as a foreground process
when repairing inconsistent rows. The cdr check replicate command with the
--repair option performs the following tasks:
If you included the --since or --where options, this number indicates the
number of rows that fit the filter conditions. The number of rows
checked with the --since option might be different on different servers,
because of replication latency. Some rows might be checked on a source
server to verify target server rows even if those rows on the source
server did not originally fit the filter conditions.
Extra The number of rows on the target server that do not exist on the
reference server.
The number of processed rows for a target server is usually equal to the
number of extra rows it has. If a row has child rows, then the number of
processed rows can be greater than the number of extra rows because
the child rows must be deleted as well.
If the --extratargetrows option is set to keep, then extra rows are not
deleted from the target and those rows are not added to the Processed
column. If the --extratargetrows option is set to merge, then those rows
are replicated to the reference server and are listed in the Processed
column for the target server.
Return codes
If the command is not successful, one of the following error codes is returned: 1, 5,
17, 18, 31, 37, 48, 53, 54, 61, 75, 99, 101, 121, 172, 174, 178, 193, 194, 195, 200, 203,
204.
For information on these error codes, see “Return Codes for the cdr Utility” on
page A-8
Examples
These example show some of the options available for checking consistency.
The following command generates a consistency report for a replicate named repl1,
comparing the data on the server serv2 with the data on the server serv1:
cdr check replicate --master=g_serv1 --repl=repl1 g_serv2
The summary consistency report for the previous command might be:
Jan 17 2009 15:46:45 ------ Table scan for repl1 start --------
Jan 17 2009 15:46:50 ------ Table scan for repl1 end ---------
If a target server has extra rows, the consistency report for the previous command
might be:
Jan 17 2009 15:46:45 ------ Table scan for repl1 start --------
Jan 17 2009 15:46:55 ------ Table scan for repl1 end ---------
In this example, not all repaired rows were validated. Some rows might be still in
the process of being applied on the target servers. Using the --inprogress option to
extend the time of the validation check after the repair might prevent validation
failures.
The verbose consistency report for the previous command might be:
Jan 17 2009 15:46:45 ------ Table scan for repl1 start --------
Jan 17 2009 15:46:59 ------ Table scan for repl1 end ---------
This report indicates that the first check found three extra rows and 11 missing
rows on the server g_srv2. After the repair operation and subsequent recheck, three
rows were still missing on g_srv2. The progress report information can be accessed
with the cdr stats check task1 command.
The verbose consistency report for the previous command might be:
Jan 17 2009 15:47:15 ------ Table scan for repl1 end ---------
This report indicates that there is one inconsistent row on g_serv2. The primary
key for that row is the combination of the item_num column and the order_num
column. The row that is inconsistent is the one that has the item number 1 and the
order number 1011. There are two rows that are missing on g_serv2, each
identified by its primary key value.
The following command generates a summary consistency report for the data that
has been updated in the last five minutes:
cdr check replicate --master=g_serv1 --repl=repl1 g_serv2 --since=5M
Jan 17 2009 15:46:50 ------ Table scan for repl1 end ---------
Only two rows were checked on each server (the Rows column) because only two
rows were updated in the last five minutes.
The following command generates a summary consistency report for the data that
has been updated since July 4, 2008 at 12:30:00 local time:
cdr check replicate --master=g_serv1 --repl=repl1 g_serv2 \
--since="2008-07-04 12:30:00"
Syntax
cdr check replicateset --master=data_server
(1)
Connect Option
--replset=repl_set target_server
--all --name=task_name
--verbose off
--firetrigger= on
follow
--inprogress=recheck_time --background --skipLOB
--since=start_time --process=number_processes
Notes:
1 See “Connect Option” on page A-3.
Usage
Use the cdr check replicateset command to check the consistency of data between
multiple database servers for a replicate set. The cdr check replicateset command
compares all rows on all specified database servers against the data in the
reference server and produces a consistency report. If you include the --verbose
option, the report lists every inconsistent value; otherwise, the report summarizes
inconsistent rows.
If you run this command as a DBSA, you must have INSERT, UPDATE, and
DELETE permission on the replicated tables on all the replication servers in the
domain.
If you want to monitor the progress of the check operation, include the --name
option and specify a name for the progress report task. Then run the cdr stats
check command and specify the progress report task name.
If replicated transactions are active when the cdr check replicateset command is
running, the consistency report might include rows that are temporarily
inconsistent until those transactions are applied at the target server. By default, the
cdr check replicateset command rechecks inconsistent rows for up to five seconds
after the initial check is completed. If you find your transaction latency is longer
than five seconds, you can extend the recheck time period by using the
--inprogress option to specify a longer interval. After the initial recheck,
inconsistent transactions are rechecked until there are no inconsistent transactions
or the amount of seconds specified by the --inprogress option elapses. In general,
set the recheck time to a little longer than your average transaction latency because
if repairing inconsistencies causes spooling in the send queue, transaction latency
might increase during a repair. View your transaction latency with the cdr view
apply command, or in the IBM OpenAdmin Tool (OAT) for Informix.
If you have large tables, you can speed consistency checking by indexing the
ifx_replcheck shadow column.
The cdr check replicateset command repairs inconsistent rows so that they match
the rows on the reference server. During a repair of inconsistent rows, the cdr
check replicateset command uses direct synchronization as a foreground process
when repairing inconsistent rows. The cdr check replicateset command with the
--repair option performs the following tasks:
1. Determines the order in which to repair tables if they have referential
relationships.
2. Creates a shadow replicate with the source server and target server as
participants. The conflict resolution rule for the shadow replicate is always
apply.
3. Performs an index scan using the primary key index at both the source server
and the target server to create a checksum and identify inconsistent rows.
4. Replicates inconsistent rows from the source server to the target server by
performing a dummy update of the source server, which might result in
increase logging activity.
5. Runs a check to determine if any rows remain inconsistent. Rows can be
temporarily inconsistent if not all transactions are complete on the target server.
6. If any rows are inconsistent, reruns the check for up to five seconds, or for up
to the number of seconds specified by the --inprogress option.
7. Deletes the shadow replicate.
8. Repeats steps 2 through 7 for each replicate in the replicate set.
9. Displays the consistency report.
Return codes
If the command is not successful, one of the following error codes is returned: 1, 5,
11, 17, 18, 31, 37, 48, 53, 54, 61, 75, 99, 101, 121, 166, 172, 174, 193, 194, 195, 200,
203, 204, 213.
For information on these error codes, see “Return Codes for the cdr Utility” on
page A-8
Examples
The following command uses two processes to generate a consistency report for
each of the two replicates in the set in parallel for a replicate set named replset1,
comparing the data on the server serv2 with the data on the server serv1:
cdr check replicateset --master=g_serv1 --replset=replset_1 g_serv2 \
--process=2
The summary consistency report for the previous command might be:
Jan 17 2010 15:46:45 ------ Table scan for repl1 start --------
Jan 17 2010 15:46:55 ------ Table scan for repl1 end ---------
Jan 17 2010 15:46:46 ------ Table scan for repl2 start --------
Jan 17 2010 15:47:05 ------ Table scan for repl2 end ---------
This report indicates that the replicate set is consistent on these servers.
The consistency report for replicate sets shows a series of consistency reports for
individual replicates that has the same format as the reports run with the cdr
check replicate command.
cdr cleanstart
The cdr cleanstart command starts an Enterprise Replication server with empty
queues.
Syntax
cdr cleanstart
(1)
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr cleanstart command starts an Enterprise Replication server, but first
empties replication queues of pending transactions. Use this command if
synchronizing the server using the cdr sync command would be quicker than
letting the queues process normally.
If an Enterprise Replication server was restored from a backup, but the restore did
not include all log files from the replay position, or the system was not restored to
the current log file, advance the log file unique ID past the latest log file unique ID
prior to the restore, and then run the cdr cleanstart command followed by the cdr
sync command to synchronize the server.
You can run this command from within an SQL statement by using the SQL
administration API.
Related reference
“cdr start” on page A-112
Notes:
1 See “Connect Option” on page A-3.
Usage
When you run the cdr connect server command, an event alarm with a class ID of
53 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Related reference
“cdr define server” on page A-64
“cdr delete server” on page A-74
“cdr disconnect server” on page A-78
“cdr list server” on page A-88
“cdr modify server” on page A-97
“cdr resume server” on page A-111
“cdr suspend server” on page A-139
“Enterprise Replication Event Alarms” on page 8-21
Syntax
--syncdatasource=data_server
delete --blocksize=size
--extratargetrows= keep
merge
Notes:
1 See “Connect Option” on page A-3.
Short
Long Form Form Meaning
--blocksize= -b Specifies the number of user table rows to process
together during a repair. Set this option to a lower
number to increase concurrency. If not set, then the
blocksize is calculated internally depending on the
primary key size of the table being repaired.
Usage
Use the cdr define repair command to define a repair job to repair inconsistent
data between two Enterprise Replication servers. You can choose the level of
granularity for the job by specifying the whole participant, or a specific portion of
it defined by a SELECT statement.
If you are running this command as a DBSA, you need to have certain permissions
granted to you on several system tables in the syscdr database. For more
information, see “Preparing for Role Separation (UNIX)” on page 4-19.
While defining repair job, the Enterprise Replication network connection must be
active between the Connect server, the reference server, and the target servers. The
server specified in the Connect Option must be a non-leaf server.
To start the repair job, use the cdr start repair command.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example defines a repair job, repair_1, on the server utah for a
specified portion of the participant:
Line 2 of this example indicates that the replicate to repair is named rep1 and that
the synchronization data source server containing the correct data is iowa.
Line 3 indicates that if there are rows on the target server, utah, that are not
present on the synchronization data server (iowa) then those rows are deleted
during the repair job.
Lines 4 through 7 show that the specific rows to repair on the utah server are
those that have a customerid between 100 and 200.
The following example defines a repair job, repair_2, on the server utah for the
whole participant:
cdr define repair repair_2\
--replicate=rep1 --syncdatasource=iowa\
--extratargetrows=keep \
utah
Line 3 of this example indicates that if rows are found on the utah server that do
not exist on the iowa server, then those rows should remain.
Syntax
cdr define replicate
(1)
Connect Option
(4) (5)
Scope Options Frequency Options
replicate
(6) (7)
Special Options Shadow Replicate Options
participant modifier
Notes:
1 See “Connect Option” on page A-3.
2 See Master Replicate Options.
3 See “Conflict Options” on page A-56.
4 See “Scope Options” on page A-57.
5 See “Frequency Options” on page A-25.
6 See “Special Options” on page A-58.
7 See “Shadow Replicate Options” on page A-59.
Usage
To be useful, a replicate must include at least two participants. You can define a
replicate that has one or no participant, but before you can use that replicate, you
must use the cdr change replicate command to add more participants. You cannot
start and stop replicates that have no participants.
When you define a replicate, the replicate does not begin until you explicitly
change its state to active by running the cdr start replicate command.
Important: Do not create more than one replicate definition for each row and
column set of data to replicate. If the participant is the same, Enterprise Replication
attempts to insert duplicate values during replication.
You can run this command from within an SQL statement by using the SQL
administration API.
The master replicate options specify whether Enterprise Replication defines the
replicate as a master replicate. A master replicate uses saved dictionary information
about the attributes of replicated columns to verify that participants conform to the
specified schema. You must specify at least one participant when creating a master
replicate. All participants specified are verified when the cdr define replicate or
cdr change replicate command is executed. If any participant does not conform to
the master definition, the command fails and that local participant is disabled. If a
participant you specify does not contain the master replicate table, Enterprise
Replication automatically creates the table on the participant based on the master
replicate dictionary information. All database servers containing master replicates
must be able to establish a direct connection with the master replicate database
server.
--master=server
--empty y --verify
--name= n --autocreate
Conflict Options
The --conflict options specify how Enterprise Replication resolves conflicts with
data arriving at the database server.
Conflict Options:
--conflict= always
ignore
SPL_routine
--optimize
timestamp
, SPL_routine
--optimize
deletewins
Scope Options
The --scope options specify the scope of Enterprise Replication conflict resolution.
Scope Options:
transaction
--scope= row
Special Options
Special Options:
--ats
--ris
--floatieee
--floatcanon
--firetrigger
y
--fullrow= n
n
--ignoredel= y
n
--UTF8= y
The following table describes the special options to cdr define replicate.
The following table describes the shadow replicate option to cdr define replicate.
Line 2 specifies that the replicate has a transaction scope for conflict resolution
scope and enables aborted transaction spooling. Enterprise Replication replicates
only the rows that changed and uses the IEEE floating point format to send
floating-point numbers across dissimilar platforms. The final item specifies the
name of the replicate, newrepl.
This example is the same as the preceding example with the following exceptions:
v Line 1 instructs Enterprise Replication to use the global catalog on database
server ohio.
v Line 2 specifies that the data is replicated every five hours.
cdr def repl -c ohio -C timestamp,sp1 \
-S tran -A -e 5:00 -I newrepl \
"db1@iowa:antonio.table1" "select * from table1" \
"db2@utah:carlo.table2" "select * from table2"
Important: Enterprise Replication supports replicate sets for IBM Informix, Version
9.3 and later only. You cannot define or modify replicate sets to include replicates
with participants that are Version 9.2 and earlier. In addition, replicate sets are
different from and are incompatible with replicate groups (in Version 9.2 and
earlier).
repl_set
(2) --exclusive
Frequency Options
replicate
Notes:
1 See “Connect Option” on page A-3.
2 See “Frequency Options” on page A-25.
Usage
If you run this command as a DBSA, you must have INSERT, UPDATE, and
DELETE permission on the replicated tables on all the replication servers in the
domain.
Any valid replicate can be defined as part of a replicate set. A replicate can belong
to more than one non-exclusive replicate set, but to only one exclusive replicate set.
When you create an exclusive replicate set, the state is initially set to active.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example connects to the default server and defines the non-exclusive
replicate set accounts_set with replicates repl1, repl2, and repl3:
cdr def replset accounts_set repl1 repl2 repl3
The following example connects to the server olive and defines the exclusive
replicate set market_set with replicates basil and thyme:
cdr def replset --connect=olive --exclusive market_set basil thyme
Related concepts
“Frequency Options” on page A-25
“Preparing for Role Separation (UNIX)” on page 4-19
Related tasks
“Exclusive Replicate Sets” on page 6-10
“Defining Replicate Sets” on page 6-10
Related reference
“cdr change replicateset” on page A-32
“cdr delete replicateset” on page A-73
“cdr list replicateset” on page A-86
“cdr modify replicateset” on page A-96
“cdr resume replicateset” on page A-110
“cdr start replicateset” on page A-117
“cdr stop replicateset” on page A-135
“cdr suspend replicateset” on page A-137
Syntax
cdr define server
(1)
Connect Option
(2) --nonroot --sync=sync_server
Dynamic Options --leaf
Notes:
1 See “Connect Option” on page A-3.
2 See “Dynamic Options.”
Dynamic Options
The options allow you to modify the default behavior of cdr define server that
you can change with cdr modify server.
Options:
A value of /dev/null
(UNIX) or NUL (Windows)
prevents ATS file
generation.
ris_dir Name of the directory for Must be a full pathname. Follows naming
Row Information Spooling The path for the directory conventions on
files. The default is /tmp. can be no longer than 256 your operating
characters. system
A value of /dev/null
(UNIX) or NUL (Windows)
prevents RIS file
generation.
timeout Idle time-out for this Must be an integer number Integer
replication server. of minutes. 0 indicates no
time-out. The maximum
value is 32767.
The following table describes the options to cdr define server that you can change
with cdr modify server.
The cdr define server command creates the Enterprise Replication global catalog
and adds the database server from the server_group . If you specify a
synchronization server, the new server is added to an existing Enterprise
Replication domain. If you do not specify a synchronization server, Enterprise
Replication creates a new domain.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The first example defines the first database server in a replication domain. The
command connects to the database server stan, initializes Enterprise Replication,
and sets the idle timeout to 500 minutes. The example also specifies that ATS files
are generated into the /cdr/ats directory, RIS files are generated in the /cdr/ris
directory, and that the format of ATS and RIS files is text.
cdr define server --connect=stan \
--idle=500 --ats=/cdr/ats --ris=/cdr/ris \
--atsrisformat=text --init g_stan
The following example adds a database server to the replication domain that was
created in the first example. The command connects to the database server oliver,
initializes Enterprise Replication, synchronizes its catalogs with the catalogs on the
existing database server stan, and sets an idle timeout of 600 minutes for the
database server oliver. This command also specifies that ATS files are generated
into the /cdr/ats directory, no RIS files will be generated, and the ATS file format is
XML.
cdr define server -c oliver -i 600 \
-A /cdr/ats -R /dev/null -X xml \
-S g_stan -I g_oliver
Because templates define replicates, many of the syntax options for the cdr define
template command are the same as for the cdr define replicate command.
Syntax
(2)
cdr define template template Conflict Options
(1)
Connect Option
(3) (4) (5)
Scope Options Frequency Options Special Options
Notes:
1 See “Connect Option” on page A-3.
2 See “Conflict Options” on page A-56.
3 See “Scope Options” on page A-57.
4 See “Frequency Options” on page A-25.
5 See “Special Options” on page A-58.
Usage
The replicate set can be exclusive or non-exclusive. Specify that the replicate set is
exclusive if you have referential constraints placed on the replicated columns. If
you create an exclusive replicate set using a template, you do not need to stop the
replicate set to add replicates. The cdr define template command performs this
task automatically.
After you define a template using the cdr define template command, use the cdr
realize template command to apply the template to your Enterprise Replication
database servers.
You cannot update a template. To modify a template, you must delete it and then
re-create it with the cdr define template command.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Line 1 of the example specifies a template name of tem1 and that the connection is
made to the server detroit. Line 2 specifies a conflict-resolution rule of timestamp
and a transaction scope for conflict resolution. Line 3 specifies that the master
replicate information is obtained from the server chicago. Line 4 specifies to use
the new_cars database on the chicago server and to include only the tables table1,
table2, and table3.
The next example is the same as the first except that it has additional options and
uses a file instead of a list of tables:
cdr define template tem1 -c detroit\
-C timestamp -S tran --master=chicago\
--ignoredel=y\
--database=new_cars --file=tabfile.txt
Line 3 indicates that delete operations are not replicated. Retaining deleted rows
on target servers is useful for consolidation models.
Line 4 specifies a filename for a file that contains a list of tables to include in the
template. The tabfile.txt file has the following contents:
table1
table2
table3
table4
Syntax
cdr delete repair job
(1)
Connect Option
--syncdatasource=source_server
Notes:
1 See “Connect Option” on page A-3.
The following table describes the option to the cdr delete repair command.
Usage
Use the cdr delete repair command to delete an existing repair job. You cannot
delete a repair job that is running.
If you are running this command as a DBSA, you need to have certain permissions
granted to you on several system tables in the syscdr database. For more
information, see “Preparing for Role Separation (UNIX)” on page 4-19.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Syntax
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr delete replicate command deletes the replicate repl_name from the global
catalog. All replication data for the replicate is purged from the send queue at all
participating database servers.
When you run the cdr delete replicate command, an event alarm with a class ID
of 68 is generated, if that event alarm is enabled.
Examples
The following command connects to the default database server specified by the
INFORMIXSERVER environment variable and deletes the replicate smile:
cdr del rep smile
Related concepts
“Operational Considerations” on page 2-4
Related reference
“cdr change replicate” on page A-30
“cdr define replicate” on page A-53
“cdr list replicate” on page A-82
“cdr modify replicate” on page A-93
“cdr resume replicate” on page A-109
“cdr start replicate” on page A-114
“cdr stop replicate” on page A-133
“cdr suspend replicate” on page A-136
“Enterprise Replication Event Alarms” on page 8-21
Syntax
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr delete replicateset command does not affect the replicates or associated
data. When a replicate set is deleted, the individual replicates within the replicate
set are unchanged.
Attention: Avoid deleting a replicate set and immediately re-creating it with the
same name. If you re-create the objects immediately (before the operation finishes
propagating to the other Enterprise Replication database servers in the network),
failures might occur in the Enterprise Replication system at the time of the
operation or later.
When you run the cdr delete replicateset command, an event alarm with a class
ID of 69 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example connects to the default database server and deletes the
replicate set accounts_set:
cdr del replset accounts_set
Related concepts
“Operational Considerations” on page 2-4
Related reference
“cdr change replicateset” on page A-32
“cdr define replicateset” on page A-62
“cdr define replicate” on page A-53
“cdr list replicateset” on page A-86
“cdr modify replicateset” on page A-96
“cdr resume replicateset” on page A-110
“cdr start replicateset” on page A-117
“cdr stop replicateset” on page A-135
“cdr suspend replicateset” on page A-137
“Enterprise Replication Event Alarms” on page 8-21
Syntax
cdr delete server server_group
(1) --force
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Usage
Use the cdr delete server command to remove Enterprise Replication from an
active Enterprise Replication server. Use the cdr delete server command with the
--force option to remove Enterprise Replication from an inactive server. You cannot
delete a server that has non-root or leaf children under it. You must delete the
children of a server before deleting the parent server.
To remove an Enterprise Replication server from a domain, you must run the cdr
delete server command twice:
1. On the server being removed, to remove Enterprise Replication from that
server. This command is not propagated to other servers in the domain.
2. On another server, to remove the deleted server from the domain.
To remove an entire Enterprise Replication domain, run the cdr delete server
command once on each replication server.
On the server being deleted from Enterprise Replication, the cdr delete server
command performs the following tasks:
1. Drops the Enterprise Replication connection to other hosts in the domain. A
25582 error and an operating system error might be printed to the online log.
2. Removes Enterprise Replication information, including delete tables and
shadow columns.
3. Shuts down Enterprise Replication, if it is running.
4. Drops the local copy of the global catalog (syscdr).
When you run the cdr delete server command on another root server in the
domain, the command performs the following tasks:
1. Deletes the database server from the global catalogs of all other servers in the
domain.
2. Removes the database server from all participating replicates.
3. Purges all replication data destined for the deleted server from the send
queues.
Use the cdr delete server –force command to remove Enterprise Replication from a
high-availability cluster server after it has been converted to a standard server
using the oninit -d standard command. For more information, see “Failure of the
Primary Server in a High-Availability Cluster” on page 5-7.
When you run the cdr delete server command, event alarms with class IDs of 67
and 71 are generated, if those event alarms are enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Example 1: Removing a single database server from the domain
This example removes the server g_italy from the replication environment (assume
that you issue the commands from the replication server g_usa):
cdr delete server -c italy g_italy
cdr delete server -c usa g_italy
The first command connects to server italy and removes Enterprise Replication
from italy. That is, it removes the syscdr database and removes or stops other
components of Enterprise Replication.
g_italy
g_usa
g_japan
To remove Enterprise Replication from every server in the domain, issue the cdr
delete server command while connecting to each server. For example, if you are on
In this example, the replication server group g_usa contains two servers that
participate in a high-availability cluster: a primary and a secondary (usa_s). After
converting usa_s to a standalone server, the following command removes
Enterprise Replication from it:
cdr delete server -c usa_s g_usa -f
Related concepts
“Operational Considerations” on page 2-4
Related tasks
“Deleting a Replication Server” on page 7-5
Related reference
“cdr connect server” on page A-49
“cdr define server” on page A-64
“cdr disconnect server” on page A-78
“cdr list server” on page A-88
“cdr modify server” on page A-97
“cdr resume server” on page A-111
“cdr suspend server” on page A-139
“Enterprise Replication Event Alarms” on page 8-21
Syntax
cdr delete template template
(1)
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Use the cdr delete template command to delete the template definition and the
replicate set realized from the template. Any replicates created by realizing the
template to a database server are unaffected by this command.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following command deletes the template and replicate set tem1:
cdr delete template tem1
Related reference
“cdr define template” on page A-68
“cdr realize template” on page A-99
“Enterprise Replication Event Alarms” on page 8-21
Syntax
cdr disconnect server server_group
(1)
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr disconnect server command drops the connection (for example, for a
dialup line) between server_group and the server specified in the --connect option.
If the --connect option is omitted, the command drops the connection between
server_group and the default database server (the one specified by the
INFORMIXSERVER environment variable).
When you run the cdr disconnect server command, event alarms with class IDs of
54 and 71 are generated, if those event alarms are enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
The following example drops the connection between the default database server
(the one specified by the INFORMIXSERVER environment variable) and the
server group g_store1:
cdr disconnect server g_store1
Related reference
“cdr connect server” on page A-49
“cdr define server” on page A-64
“cdr delete server” on page A-74
“cdr list server” on page A-88
“cdr modify server” on page A-97
“cdr resume server” on page A-111
“cdr suspend server” on page A-139
cdr error
The cdr error command manages the error table and provides convenient displays
of errors.
Syntax
cdr error
(1)
Connect Option
--seq=err_server:seqno
--prune " last "
first ,
--zap
--follow
--all
--nomark
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr error command allows you to examine replication errors on any
replication server. Sometimes a command succeeds on the server on which it is
executed but fails on one of the remote servers. For example, if you execute cdr
define replicate on server1, but the table name is misspelled on server2, the
command succeeds on server1 and appears to have completed successfully. You
can use cdr error -c server2 to see why replication is failing.
The cdr error command also allows you to administer the cdr error table remotely.
The reviewed flag lets you watch for new errors while keeping the old errors in
the table. For example, you could run cdr error periodically and append the output
to a file.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following command displays the current list of errors on database server hill:
cdr error --connect=hill
After the errors are displayed, Enterprise Replication marks the errors as reviewed.
The following command connects to the database server lake and removes from
the error table all errors that occurred before the time when the command was
issued:
cdr error -c lake --zap
The following command deletes all errors from the error table that occurred at or
before 2:56 in the afternoon on May 1, 2008:
cdr error -p “2008-05-01 14:56:00”
The following command deletes all errors from the error table that occurred at or
after noon on May 1, 2008 and before or at 2:56 in the afternoon on May 1, 2008:
cdr finderr
The cdr finderr command looks up a specific Enterprise Replication return code
and displays the corresponding error text.
Syntax
cdr finderr ER_return_code
You can also view the Enterprise Replication return codes in the file
$INFORMIXDIR/incl/esql/cdrerr.h.
You can run this command from within an SQL statement by using the SQL
administration API.
Related concepts
“Return Codes for the cdr Utility” on page A-8
Syntax
cdr list repair
(1) job
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Usage
Use the cdr list repair command to display information about repair jobs. If no
repair jobs are named, the command lists all repair jobs on the current server. If
one or more repair jobs are named, the command displays detailed information
about those jobs.
The cdr list command can be used while the replication server is in DDRBLOCK
mode. Before using the cdr list command you must set the DBSPACETEMP
configuration parameter and create a temporary dbspace with the onspaces utility.
SOURCE
------
bank@g_serv1:rajakum.account
select acct_id,branch_name,acct_addr,acct_balance,
last_tran_date from ’rajakum’.account
TARGET
-------
bank@g_serv2:rajakum.account
select acct_id,branch_name,acct_addr,acct_balance,
last_tran_date from ’rajakum’.account
BLOCK SIZE: 20
TARGET ROW OPTION: Delete
PROCESSED ROWS: 400
START TIME: 2004-02-28 17:06:29
END TIME: 2004-02-28 17:07:34
Related reference
“cdr define repair” on page A-50
“cdr delete repair” on page A-71
“cdr stop repair” on page A-132
“cdr list repair” on page A-81
“cdr start repair” on page A-113
Syntax
full
cdr list replicate
(1) brief
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr list replicate command displays information about replicates (the full
option). If no replicates are named, the command lists all replicates on the current
server. If one or more replicates are named, the command displays detailed
information about those replicates.
To display only replicate names and participant information, use the brief option.
You do not need to be user informix to use this command; any user can run it.
In hierarchical topology, leaf servers have limited information about other database
servers in the Enterprise Replication domain. Therefore, when cdr list replicate is
executed on a leaf server, it displays incomplete information about the other
database servers.
The cdr list replicate command can be used while the replication server is in
DDRBLOCK mode. Before using the cdr list replicate command you must set the
DBSPACETEMP configuration parameter and create a temporary dbspace with the
onspaces utility.
Output Description
Value Description
Active Specifies that Enterprise Replication captures data from the logical log
and transmits it to participants
Definition Indicates that the replication definition failed on a peer server
Failed
Inactive Specifies that no database changes are captured, transmitted, or processed
Pending Indicates that a cdr delete replicate command has been issued and the
replicate is waiting for acknowledgment from the participants
Quiescent Specifies that no database changes are captured for the replicate or
participant
Suspended Specifies that the replicate captures and accumulates database changes
but does not transmit any of the captured data
Value Description
immediate Specifies that replication occurs immediately
every hh:mm Specifies that replications occur at intervals (for example, 13:20
specifies every thirteen hours and 20 minutes)
at day.hh:mm Specifies that replications occur at a particular time on a particular
day (for example, 15.18:30 specifies on the 15th day of the month
at 6:30 P.M.)
Value Description
ats Indicates that ATS files are generated if transactions fail to be
applied at the target server.
firetrigger Indicates that the rows that this replicate inserts fire triggers at the
destination.
floatcanon Indicates that floating-point numbers are replicated in
machine-independent decimal representation.
floatieee Indicates that floating-point numbers are replicated in either 32-bit
(for SMALLFLOAT) or 64-bit (for FLOAT) IEEE floating-point
format.
fullrow Indicates to replicate only changed columns and disable upserts.
ignoredel Indicates that rows are retained if they are deleted on other nodes
in the domain.
ris Indicates that RIS files are generated if transactions fail to be
applied at the target server.
row Indicates that the replicate uses row scope.
transaction Indicates that the replicate uses transaction scope.
The REPLTYPE field can include the following values. If the REPLTYPE is not
shown, the replicate is a classic replicate (neither a master or a shadow replicate).
Value Description
Master Indicates that the replicate is defined as a master replicate.
Shadow Indicates that the replicate is a shadow replicate. A shadow
replicate can also be a master replicate.
Examples
The following example displays a list of the replicates on the current server with
full details:
cdr list replicate
REPLICATE: Repl2
STATE: Inactive
CONFLICT: Deletewins
FREQUENCY: immediate
QUEUE SIZE: 0
PARTICIPANT: bank:joe.account
OPTIONS: row,ris,ats
REPLTYPE: Master,Shadow
PARENT REPLICATE: Repl1
The PARENT REPLICATE field only appears if the replicate is a shadow replicate.
The following example displays a list of the replicates on the current server with
brief details:
cdr list replicate brief
Syntax
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr list replicateset command displays a list of the replicate sets that are
currently defined. To list the information about each of the replicates within the
replicate set, use cdr list replicateset repl_set.
You do not need to be user informix to use this command; any user can run it.
In hierarchical topology, leaf servers have limited information about other database
servers in the Enterprise Replication domain. Therefore, when cdr list replicateset
is executed against a leaf server, it displays incomplete information about the other
database servers.
The cdr list replicateset command can be used while the replication server is in
DDRBLOCK mode. Before using the cdr list replicateset command you must set
the DBSPACETEMP configuration parameter and create a temporary dbspace with
the onspaces utility.
The following example displays a list of the replicate sets on the current server:
cdr list replicateset
The Ex field shows whether the replicate set is exclusive. The T field shows
whether the replicate set was created from a template.
This example displays information for all the replicates in the replicate set g1:
cdr list replset g1
REPLICATE: Repl4
STATE: Inactive
CONFLICT: Deletewins
FREQUENCY: immediate
QUEUE SIZE: 0
PARTICIPANT: bank:arthur.teller
OPTIONS: row,ris,ats
REPLTYPE: Master
The information supplied for each replicate is the same as the information
provided by the cdr list replicate command.
Syntax
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr list server command displays information about servers. You do not need
to be user informix to use this command; any user can run it.
The cdr list server command can be used while the replication server is in
DDRBLOCK mode. Before using the cdr list server command you must set the
DBSPACETEMP configuration parameter and create a temporary dbspace with the
onspaces utility.
When no server-group name is given, the cdr list server command lists all
database server groups that are visible to the current replication server.
In hierarchical topology, leaf servers only have information about their parent
database servers in the Enterprise Replication domain. Therefore, when cdr list
server is executed against a leaf server, it displays incomplete information about
the other database servers.
The SERVER and ID columns display the name and unique identifier of the
Enterprise Replication server group.
The QUEUE column displays the size of the queue for the server group.
The CONNECTION CHANGED column displays the most recent time that the
status of the server connection was changed.
Examples
In the following examples, usa, italy, and france are root servers, denver is a
nonroot server, and miami is a leaf server. The usa server is the parent of denver,
and denver is the parent of miami.
denver france
miami
When the cdr list server command includes the name of a database server group,
the output displays the attributes of that database server. The following commands
and example output illustrate how the cdr list server command displays server
information.
In this example, the server g_usa generates ATS and RIS files in XML format, has
an idle time out of 15 seconds, and is a hub server.
cdr list server g_usa
NAME ID ATTRIBUTES
-----------------------------------------------------
g_usa 1 atsrisformat=xml timeout=15 hub
In this example, the g_denver server shows the g_usa server as its root server.
cdr list server -c denver g_denver
NAME ID ATTRIBUTES
-----------------------------------------------------
g_denver 27 root=g_usa
In this example, the attributes of the g_denver server are shown from the
perspective of the italy server. The g_denver server has the g_usa server as its root
server and uses the g_usa server to forward replicated transactions between it and
the italy server.
cdr list server -c italy g_denver
NAME ID ATTRIBUTES
-----------------------------------------------------
g_denver 27 root=g_usa forward=g_usa
In this example, the g_miami server shows the g_denver server as its root server
and that it is a leaf server.
cdr list server g_miami
NAME ID ATTRIBUTES
-----------------------------------------------------
g_miami 4 root=g_denver leaf
The following example shows possible output for the cdr list server command if
no server groups are specified:
cdr list server
SERVER ID STATE STATUS QUEUE CONNECTION CHANGED
--------------------------------------------------------------
Syntax
BRIEF
FULL
Notes:
1 See “Connect Option” on page A-3.
Usage
To display detailed information for your templates, use the FULL option.
In hierarchical topology, leaf servers have limited information about other database
servers in the Enterprise Replication domain. Therefore, when cdr list template is
executed against a leaf server, it displays incomplete information about the other
database servers.
The cdr list template command can be used while the replication server is in
DDRBLOCK mode. Before using the cdr list template command you must set the
DBSPACETEMP configuration parameter and create a temporary dbspace with the
onspaces utility.
Examples
The following example displays detailed information about the templates on the
current server:
cdr list template
The following example displays detailed information about the template tem1:
cdr list template tem1
TEMPLATE: tem1
TEMPLATE ID: 6553605
SERVER: utah
DATABASE: newcars
REPLICATE: tem1_utah_2_2_table2
OWNER: pravin
TABLE: table2
TEMPLATE: tem1
TEMPLATE ID: 6553605
SERVER: utah
DATABASE: newcars
REPLICATE: tem1_utah_2_3_table3
OWNER: pravin
TABLE: table3
Syntax
cdr modify replicate
(1) --name=n
Connect Option
replicate
(2) participant
Conflict Options
(3)
Scope Options
(4)
Frequency Options
(5)
Special Options
Notes:
1 See “Connect Option” on page A-3.
2 See “Conflict Options” on page A-56.
3 See “Scope Options” on page A-57.
4 See “Frequency Options” on page A-25.
5 See “Special Options” on page A-94.
The cdr modify replicate command modifies the attributes of a replicate or of one
or more participants in the replicate. You can also change the mode of a
participant. If the command does not specify participants, the changes apply to all
participants in the replicate.
If you change the conflict resolution rule with cdr modify replicate, you must also
specify the scope with the---scope option, even if you are not changing the scope.
The attributes for cdr modify replicate are the same as the attributes for cdr define
replicate, with the following exceptions:
v You cannot change the machine-independent decimal representation
(--floatcanon) or IEEE floating point (--floatieee) formats.
v You cannot change the conflict resolution from ignore to a non-ignore option
(time stamp, SPL routine, or time stamp and SPL routine). You cannot change a
non-ignore conflict resolution option to ignore.
However, you can change from time stamp resolution to SPL routine resolution
or from SPL routine resolution to time stamp.
v The --ats, --ris, --firetrigger, and --fullrow options require a yes (y) or no (n)
argument.
When you run the cdr modify replicate command, an event alarm with a class ID
of 63 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Special Options
Special Options:
--ats y
n
--ris y
n
--firetrigger y
n
--fullrow y
n
n
--ignoredel= y
n
--UTF8= y
The following table describes the special options to cdr modify replicate.
Examples
The following example changes the mode of the first participant listed to
receive-only and the mode of the second to primary:
cdr mod repl smile “R db1@server1:antonio.table1” \
“P db2@server2:carlo.table2”
Syntax
Notes:
1 See “Connect Option” on page A-3.
2 See “Frequency Options” on page A-25.
Usage
The cdr modify replicateset command modifies the attributes of all the replicates
in the replicate set repl_set. To add or delete replicates from a replicate set, use the
cdr change replicateset command.
When you run the cdr modify replicateset command, an event alarm with a class
ID of 64 is generated, if that event alarm is enabled.
Examples
The following example connects to the default server (the server specified by the
INFORMIXSERVER environment variable) and modifies the replicate set sales_set
to process replication data every hour:
cdr mod replset --every=60 sales_set
Related concepts
“Frequency Options” on page A-25
Related reference
“cdr change replicateset” on page A-32
“cdr define replicateset” on page A-62
“cdr delete replicateset” on page A-73
“cdr list replicateset” on page A-86
“cdr define replicate” on page A-53
“cdr resume replicateset” on page A-110
“cdr start replicateset” on page A-117
“cdr stop replicateset” on page A-135
“cdr suspend replicateset” on page A-137
“Enterprise Replication Event Alarms” on page 8-21
Syntax
cdr modify server
(1) --idle=timeout
Connect Option
--mode --ats=ats_dir --ris=ris_dir
primary
readonly
server_group
text
--atsrisformat = xml
both
Notes:
1 See “Connect Option” on page A-3.
A value of /dev/null
(UNIX) or NUL (Windows)
prevents ATS file
generation.
ris_dir Name of the Row Must be a full path name. Follows naming
Information Spooling The path for the directory conventions on
directory. can be no longer than 256 your operating
bytes. system.
A value of /dev/null
(UNIX) or NUL (Windows)
prevents RIS file
generation.
Usage
The cdr modify server command modifies the replication server server_group.
When you run the cdr modify server command, an event alarm with a class ID of
70 is generated, if that event alarm is enabled.
Examples
The following example connects to the database server paris and modifies the idle
time-out of server group g_rome to 10 minutes. ATS files are generated into the
directory /cdr/atsdir in both text and XML format.
cdr modify server -c paris -i 10 -A /cdr/atsdir \
-X both g_rome
The following example connects to the default database server and sets the modes
of all participants on g_geometrix to primary:
cdr mod ser -m p g_geometrix
Related concepts
Chapter 8, “Monitoring and Troubleshooting Enterprise Replication,” on page 8-1
Related tasks
“Enabling ATS and RIS File Generation” on page 8-4
“Disabling ATS and RIS File Generation” on page 8-13
“Customizing the Replication Server Definition” on page 6-2
Related reference
“cdr connect server” on page A-49
“cdr define server” on page A-64
“cdr delete server” on page A-74
“cdr disconnect server” on page A-78
“cdr list server” on page A-88
“cdr resume server” on page A-111
“cdr suspend server” on page A-139
“Enterprise Replication Event Alarms” on page 8-21
Syntax
cdr realize template template
(1)
Connect Option
--syncdatasource=data_server
Synchronization Options
server_group
database@ --applyasowner
Synchronization Options:
--extratargetrows= delete
keep
merge
--foreground
--memadjust=size K
M
Notes:
1 See “Connect Option” on page A-3.
If you use this option, you must run the cdr realize
template command twice: once to realize the
template on the source server and other primary
servers, and again to realize the template on
receive-only servers.
--verify -v Specifies that the cdr realize template command
verifies that the database, tables, column data types
are correct on all listed servers, but does not realize
the template.
Usage
Before you can use the cdr realize template command, you must define Enterprise
Replication servers using the cdr define server command and define the template
using the cdr define template command. You should also create the database to be
replicated on all database servers in the replication domain. However, only the
database on the synchronization data source server needs to be populated with
data.
If you run this command as a DBSA, you must have INSERT, UPDATE, and
DELETE permission on the replicated tables on all the replication servers in the
domain.
The replicates and replicate set created from a template have generated names. Use
the cdr list template command to see the names of the replicates and replicate set
associated with a particular template.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Line 1 specifies that the template name is tem1 and the server to connect to is the
detroit server. Lines 2 and 3 list the names of the databases and database servers
on which to realize the template.
The following example illustrates realizing the template on the source server, and
then, creating the databases and tables, and loading data on the target receive-only
database servers:
cdr realize template tem1 -c detroit\
--syncdatasource=detroit --extratargetrows=keep\
--foreground --memadjust=50M\
--target chicago newark columbus
Line 1 realizes the template on the detroit server, as a primary server by default.
Line 2 specifies to use the detroit server as the source of the data to replicate to all
other participating servers. If Enterprise Replication encounters any rows on the
chicago, newark, or columbus servers that do not exist on the detroit server, those
rows are kept.
Line 3 specifies that the synchronization operation is done in the foreground, and
the size of the send queue is set to 50 MB.
Line 4 specifies the participant type for each server. The --target option makes all
servers receive-only participants.
The following example verifies the database and table attributes on the chicago,
newark, and columbus servers; the template is not realized on these servers:
cdr realize template tem1 -c detroit\
--verify chicago newark columbus
cdr remaster
The cdr remaster command changes the SELECT clause or the server from which
to base the master replicate definition of an existing master replicate. This
command can also convert a classic (non-master) replicate to a master replicate.
Syntax
cdr remaster --master=server replicate
(1)
Connect Option
modifier
Notes:
1 See “Connect Option” on page A-3.
Usage
Use the cdr remaster command to perform one of the following tasks:
v Convert a classic replicate to a master replicate. Master replicates ensure schema
consistency among the participants in the replicates.
To use the cdr remaster command, the master replicate definition must have been
created with name verification turned on, by using the cdr define replicate
command with the --name=y option.
You can run this command from within an SQL statement by using the SQL
administration API.
As part of its processing, the cdr remaster command creates a shadow replicate.
The shadow replicate is named as follows:
Shadow_4_basereplicatename_GMTtime_GIDlocalCDRID_PIDpid
Examples
The following example shows the original definition of the master replicate before
the alter operation:
cdr define repl --master=delhi -C timestamp\
newrepl "[email protected]" "select col1, col2 from tab"\
This example shows the cdr remaster command adding a new column, col3, in the
newrepl participant:
cdr remaster --master=delhi newrepl\
"select col1, col2, col3 from tab"
Related reference
“cdr alter” on page A-28
Syntax
cdr remove onconfig “ parameter name value “
Usage
Use the cdr remove onconfig command to replace the existing value of an
Enterprise Replication configuration parameter with a new value in the
ONCONFIG file. You can set environment variables by using the CDR_ENV
configuration parameter.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
cdr repair
The cdr repair command synchronizes data based on ATS or RIS files.
Syntax
cdr repair ats ats_file
--check ris ris_file
--verbose
--quiet
The cdr repair command reconciles rows that failed to be applied based on the
information in the specified ATS or RIS file. If a row exists on the source database
server, it is replicated again. If a row does not exist on the source database server,
but does exist on the target server, then it is deleted from the target database
server. By default, each of the repair operations is displayed to stderr.
If you are running this command as a DBSA, you must have read permission on
the ATS and RIS files. Permissions on ATS and RIS files can be set with the chown
operating system command.
The ATS or RIS file you specify in the cdr repair command must be in text format,
which is the default format. You cannot specify the XML format of an ATS or RIS
in the cdr repair command.
Before you run a repair, preview the repair to make sure the operations that would
be performed are correct. To preview the repair operations, use the –check option.
All repair operations are displayed to stderr, but not performed. In an active
system, however, the operations displayed by the –check option might not be the
same as the operations performed when you later run the repair.
The server on which you run the cdr repair command must have a copy of the
ATS or RIS file and be able to connect to the source and target database servers
involved in the failed transaction. In a hierarchical routing environment where the
source and target database servers are not directly connected you might need to
run the cdr repair command from an intermediate server. If necessary, copy the
ATS or RIS file to the intermediate server.
ATS and RIS files do not include code set information, therefore, the code sets
associated with the locales specified by the DB_LOCALE and CLIENT_LOCALE
environment variables must be the same.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Syntax
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr resume replicate command causes all participants in the replicate
repl_name to enter the active state.
If a replicate belongs to an exclusive replicate set, you cannot run cdr resume
replicate to resume that individual replicate. You must use cdr resume replicateset
to resume all replicates in the exclusive replicate set. If a replicate belongs to a
non-exclusive replicate set, you can resume the individual replicates in the set.
When you run the cdr resume replicate command, an event alarm with a class ID
of 57 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example connects to the default database server (the one specified
by the INFORMIXSERVER environment variable) and resumes the replicate smile:
cdr res repl smile
Syntax
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr resume replicateset command causes all replicates contained in the
replicate set repl_set to enter the active state for all participants.
If not all the replicates in a non-exclusive replicate set are suspended, the cdr
resume replicateset command displays a warning and only resumes the replicates
that are currently suspended.
When you run the cdr resume replicateset command, an event alarm with a class
ID of 58 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
The following example connects to the default database server (the one specified
by the INFORMIXSERVER environment variable) and resumes the replicate set
accounts_set:
cdr res replset accounts_set
Related reference
“cdr change replicateset” on page A-32
“cdr define replicateset” on page A-62
“cdr delete replicateset” on page A-73
“cdr list replicateset” on page A-86
“cdr modify replicateset” on page A-96
“cdr define replicate” on page A-53
“cdr start replicateset” on page A-117
“cdr stop replicateset” on page A-135
“cdr suspend replicateset” on page A-137
“Enterprise Replication Event Alarms” on page 8-21
“cdr resume replicate” on page A-109
“cdr list server” on page A-88
Syntax
cdr resume server to_server_group
(1)
Connect Option
from_server_group
Notes:
1 See “Connect Option” on page A-3.
The cdr resume server command resumes delivery of replication data to the
to_server_group database server from the database servers included in the
from_server_group list. If the from_server_group list is omitted, the command resumes
replication of data from all database servers participating in the Enterprise
Replication system to the to_server_group. Replication data must have previously
been suspended to the server with the cdr suspend server command.
When you run the cdr resume server command, an event alarm with a class ID of
52 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example connects to the default server (the one specified by the
INFORMIXSERVER environment variable) and resumes replication of data to the
server g_iowa from the servers g_ohio and g_utah:
cdr res serv g_iowa g_ohio g_utah
Related reference
“cdr connect server” on page A-49
“cdr define server” on page A-64
“cdr delete server” on page A-74
“cdr disconnect server” on page A-78
“cdr list server” on page A-88
“cdr modify server” on page A-97
“cdr suspend server” on page A-139
“Enterprise Replication Event Alarms” on page 8-21
cdr start
The cdr start command starts Enterprise Replication processing.
Syntax
cdr start
(1)
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Usage
Use cdr start to restart Enterprise Replication after you stop it with the cdr stop
command or replication stops for another reason, such as memory allocation
problems. When you issue cdr start, Enterprise Replication activates all connections
to other connected replication servers. Replication servers, replicates, and replicate
sets that were suspended before the cdr stop command was issued remain
suspended; no data is sent for the suspended servers, replicates, or sets.
When you run the cdr start command, event alarm 49 is generated, if that event
alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Syntax
cdr start repair job
(1)
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Use the cdr start repair command to start a repair job that was previously defined
with the cdr define repair command. You must run this command while connected
to the source server for the job, as specified in the cdr define repair command by
the --syncdatasource option.
If you are running this command as a DBSA, you need to have certain permissions
granted to you on several system tables in the syscdr database. For more
information, see “Preparing for Role Separation (UNIX)” on page 4-19.
If you specify a server in the Connect Option, it must be a non-leaf server and
must be the source server for the repair job. The source server and the target
server must be able to establish a direct connection.
If Enterprise Replication stops during a repair job, the job is automatically restarted
when Enterprise Replication restarts.
To stop a repair job that is in progress, use the cdr stop repair command.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Syntax
server_group
--syncdatasource=data_server
Synchronization Options
Synchronization Options:
--extratargetrows= delete
keep
merge
--foreground
--memadjust=size K
M
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr start replicate command causes the replicate to enter the active state
(capture-send) on the specified database servers and the source database server
specified by the --syncdatasource option.
If you are running this command with the --syncdatasource option as a DBSA, you
need to have certain permissions granted to you on several system tables in the
syscdr database. For more information, see “Preparing for Role Separation (UNIX)”
on page 4-19.
If you would like the synchronization operation to be run in the foreground, use
the --foreground option.
The size of the send queue is specified by the value of the CDR_QUEUEMEM
configuration parameter. You can increase the amount of memory that the send
queue can use during this synchronization operation by using the --memadjust
option to specify the size of the send queue.
If no server is specified, the repl_name starts on all servers that are included in the
replicate. A replicate can have both active and inactive participants. When at least
one participant is active, the replicate is active, however, replication does not start
until at least two participants are active. You cannot start replicates that have no
participants.
If a replicate belongs to an exclusive replicate set, you cannot run cdr start
replicate to start that individual replicate. You must use cdr start replicateset to
start all replicates in the exclusive replicate set.
Because Enterprise Replication does not process log records that were produced
before the cdr start replicate command was run, transactions that occur during this
period might be partially replicated. To avoid problems, either issue the cdr start
When you run the cdr start replicate command, an event alarm with a class ID of
59 is generated, if that event alarm is enabled.
Examples
The following command starts the replicate accounts on the server groups g_svr1
and g_svr2:
cdr sta rep accounts g_svr1 g_svr2
The following example starts the replicate named accounts on the server g_svr1
with g_svr2 as the source server:
cdr start replicate accounts g_svr1 --syncdatasource=g_svr2\
--foreground --memadjust=50M
The second line indicates that the synchronization happens in the foreground and
the size of the send queue is 50 MB.
Related concepts
“Preparing for Role Separation (UNIX)” on page 4-19
Related reference
“cdr change replicate” on page A-30
“cdr define replicate” on page A-53
“cdr delete replicate” on page A-72
“cdr list replicate” on page A-82
“cdr modify replicate” on page A-93
“cdr resume replicate” on page A-109
“cdr stop replicate” on page A-133
“cdr suspend replicate” on page A-136
“Enterprise Replication Event Alarms” on page 8-21
Syntax
cdr start replicateset repl_set
(1)
Connect Option
server_group
Synchronization Options:
--extratargetrows= delete
keep
merge
--foreground
--memadjust=size K
M
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr start replicateset command causes the replicates defined in the specified
replicate set to enter the active state (capture-send) on the specified database
servers and the source database server specified by the --syncdatasource option.
If you are running this command with the --syncdatasource option as a DBSA, you
need to have certain permissions granted to you on several system tables in the
syscdr database. For more information, see “Preparing for Role Separation (UNIX)”
on page 4-19.
If you would like the synchronization operation to be run as in the foreground, use
the --foreground option.
The size of the send queue is specified by the value of the CDR_QUEUEMEM
configuration parameter. You can increase the amount of memory that the send
queue can use during this synchronization operation by using the --memadjust
option to specify the size of the send queue.
If the server_group list is omitted, the replicate set repl_set enters the active state for
all database servers participating in the replicate set.
Because Enterprise Replication does not process log records that were produced
before the cdr start replicateset command took place, transactions that occur
during this period might be partially replicated. To avoid problems, either issue the
cdr start replicateset command on an idle system (no transactions are occurring) or
use the BEGIN WORK WITHOUT REPLICATION statement until after you
successfully start the replicates in the replicate set.
If not all the replicates in a non-exclusive replicate set are inactive, the cdr start
replicateset command displays a warning and only starts the replicates that are
currently inactive.
When you run the cdr start replicateset command, an event alarm with a class ID
of 60 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example connects to the default database server specified by the
INFORMIXSERVER environment variable and starts the replicate set accounts_set
on the server groups g_hill and g_lake:
cdr sta replset accounts_set g_hill g_lake
The second line indicates that the synchronization happens in the foreground and
the size of the send queue is 50 MB.
Related concepts
“Preparing for Role Separation (UNIX)” on page 4-19
Related reference
“cdr change replicateset” on page A-32
“cdr define replicateset” on page A-62
“cdr delete replicateset” on page A-73
“cdr list replicateset” on page A-86
“cdr modify replicateset” on page A-96
“cdr resume replicateset” on page A-110
“cdr define replicate” on page A-53
“cdr stop replicateset” on page A-135
“cdr suspend replicateset” on page A-137
“Enterprise Replication Event Alarms” on page 8-21
Syntax
cdr stats rqm
(1) --ackq
Connect Option --cntrlq
--recvq
--syncq
--sendq
Notes:
1 See “Connect Option” on page A-3.
The cdr stats rqm command displays the RQM (reliable queue manager) statistics
for the queues used by Enterprise Replication. These queues are the ack send,
control send, send, sync send, and the receive queue. If no queue is specified, the
cdr stats rqm command displays statistics for all Enterprise Replication queues.
The cdr stats rqm command shows, among other things, how many transactions
are currently queued in memory and spooled, the size of the data in the queue,
how much real memory is being used, pending transaction buffers and data, the
maximum memory used for data and headers (overhead), and totals for the
number of transactions queued, the number of transactions, the number of deleted
transactions, and the number of transaction lookups that have occurred.
Examples
The following example shows the output for cdr stats rqm --ackq:
RQM Statistics for Queue number: 1 name: ack_send
Flags: ACKSEND_Q, SENDQ_MASK
Txns in queue: 0
Txns in memory: 0
Txns in spool only: 0
Txns spooled: 0
Unspooled bytes: 0
Size of Data in queue: 0 Bytes
Real memory in use: 0 Bytes
Pending Txn Buffers: 0
Pending Txn Data: 0 Bytes
Max Real memory data used: 44 Bytes
Max Real memory hdrs used: 320 Bytes
Total data queued: 120 Bytes
Total Txns queued: 0
Total Txns 3
Total Txns spooled: 0
Total Txns restored: 0
Total Txns recovered: 0
Spool Rows read: 0
Total Txns deleted: 3
Total Txns duplicated: 0
Total Txn Lookups: 8
The following example shows the output for cdr stats rqm --cntrlq:
RQM Statistics for Queue number: 2 name: control_send
Transaction Spool Name: control_send_stxn
Flags: CTRL_SEND_Q, STABLE, USERTXN, PROGRESS_TABLE,
NEED_ACK, SENDQ_MASK
Txns in queue: 0
Txns in memory: 0
Txns in spool only: 0
Txns spooled: 0
Unspooled bytes: 0
Size of Data in queue: 0 Bytes
Real memory in use: 0 Bytes
Pending Txn Buffers: 0
Pending Txn Data: 0 Bytes
Max Real memory data used: 185 Bytes
Max Real memory hdrs used: 320 Bytes
Total data queued: 185 Bytes
Total Txns queued: 0
The following example shows the output for cdr stats rqm --recvq:
RQM Statistics for Queue number: 4 name: trg_receive
Transaction Spool Name: trg_receive_stxn
Flags: RECV_Q, SPOOLED, PROGRESS_TABLE
Txns in queue: 0
Txns in memory: 0
Txns in spool only: 0
Txns spooled: 0
Unspooled bytes: 0
Size of Data in queue: 0 Bytes
Real memory in use: 0 Bytes
Pending Txn Buffers: 0
Pending Txn Data: 0 Bytes
Max Real memory data used: 0 Bytes
Max Real memory hdrs used: 0 Bytes
Total data queued: 0 Bytes
Total Txns queued: 0
Total Txns 0
Total Txns spooled: 0
Total Txns restored: 0
Total Txns recovered: 0
Spool Rows read: 0
Total Txns deleted: 0
Total Txns duplicated: 0
Total Txn Lookups: 0
The following example shows the output for cdr stats rqm --syncq:
RQM Statistics for Queue number: 3 name: sync_send
Flags: SYNC_Q, NEED_ACK, SENDQ_MASK
Txns in queue: 0
Txns in memory: 0
Txns in spool only: 0
Txns spooled: 0
Unspooled bytes: 0
Size of Data in queue: 0 Bytes
Real memory in use: 0 Bytes
Pending Txn Buffers: 0
Pending Txn Data: 0 Bytes
Max Real memory data used: 0 Bytes
Max Real memory hdrs used: 0 Bytes
Total data queued: 0 Bytes
Total Txns queued: 0
Total Txns 0
Total Txns spooled: 0
Total Txns restored: 0
Total Txns recovered: 0
Spool Rows read: 0
Total Txns deleted: 0
Total Txns duplicated: 0
Total Txn Lookups: 1131
The following example shows the output for cdr stats rqm --sendq:
RQM Statistics for Queue number: 0 name: trg_send
Transaction Spool Name: trg_send_stxn
Flags: SEND_Q, SPOOLED, PROGRESS_TABLE, NEED_ACK,
SENDQ_MASK, SREP_TABLE
Syntax
cdr stats recv
(1)
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr stats recv command displays the parallelism statistics for the receiver,
including transaction count, number of pending and active transactions, the
maximum that have been pending and active, the average number of pending and
active transactions, and the commit rate. Totals and averages are calculated for
pending and active transactions for the servers listed.
Examples
Statistics by Source
Server Repl Txn Ins Del Upd Last Target Apply Last Source Commit
144 9371650 11 0 0 220 2005/03/30 09:36:25 2005/03/30 09:36:25
task_name
--verbose --delete=task_name
Notes:
1 See “Connect Option” on page A-3.
The following table describes the options to the cdr stats check command.
Use the cdr stats check command to display the progress of a consistency check
operation while the cdr check replicate or cdr check replicateset command is
running. You must have specified a task name in the cdr check replicate or cdr
check replicateset command. You must be connected to the same server on which
the cdr check replicate or cdr check replicateset command was run when you run
the cdr stats check command.
The cdr stats check command displays a snapshot of the consistency report and an
estimate of the time remaining to complete the consistency check. If you use the
--repeat option, the consistency report is displayed every specified time interval.
You can view the progress of previously run consistency checks that have named
tasks, if those progress report tasks have not been overwritten or deleted.
If you want to see the detailed progress report, include the --verbose option. The
format of the verbose progress report is the same as the verbose consistency report
generated by the cdr check replicate and cdr check replicateset commands.
Examples
The following example checks a replicate named repl1, creates a task named tst,
and then displays a progress report every two seconds.
cdr check repl –r repl1 –m cdr1 –a --name=tst
cdr stats check –-repeat=2 tst
The progress report from the previous command might look like this:
Job tst
repl1 Started Jan 17 16:10:59
*********+----+----+----+----+----+----+----+----+ Remaining 0:00:08
---------------------------------------------------
Job tst
repl1 Started Jan 17 16:10:59
**********************--+----+----+----+----+----+ Remaining 0:00:04
---------------------------------------------------
Job tst
repl1 Started Jan 17 16:10:59
***********************************----+----+----+ Remaining 0:00:02
---------------------------------------------------
Job tst
repl1 Started Jan 17 16:10:59
*************************************************+ Remaining 0:00:01
---------------------------------------------------
Job tst
repl1 Completed
Started Jan 17 16:10:59, Elapsed Time 0:00:07
The following example checks and repairs the replicate, creates a task named tst,
and displays a verbose progress report every four seconds.
cdr check repl –r repl1 –m cdr1 –a --name=tst --repair
cdr stats check –-repeat=4 –-verbose tst
---------------------------------------------------
Job tst
repl1 Started Jan 17 16:34:42
*********************************-+----+----+----+ Remaining 0:00:02
---------------------------------------------------
Job tst
repl1 Started Jan 17 16:34:42
*************************************************+ Remaining 0:00:01
---------------------------------------------------
Job tst
repl1 Completed
Started Jan 17 16:34:42, Elapsed Time 0:00:11
The following example checks a replicate set named set, creates a task named tst,
and displays a progress report every five seconds:
cdr check replset –s set –m cdr1 –a –n tst
cdr stats check –r 5 tst
The progress report from the previous command might look like this:
Job tst
repl3 Started Jan 17 16:41:19
*****----+----+----+----+----+----+----+----+----+ Remaining 0:00:16
repl2 Pending
repl1 Pending
Estimated time remaining for job tst 0:00:52
---------------------------------------------------
Job tst
repl3 Started Jan 17 16:41:19
***************************************+----+----+ Remaining 0:00:01
repl2 Pending
repl1 Pending
Estimated time remaining for job tst 0:00:19
---------------------------------------------------
Job tst
repl3 Completed
Started Jan 17 16:41:19, Elapsed Time 0:00:08
repl2 Completed
Started Jan 17 16:41:27, Elapsed Time 0:00:08
repl1 Started Jan 17 16:41:35
----+----+----+----+----+----+----+----+----+----+ Remaining 0:01:08
Estimated time remaining for job tst 0:01:08
---------------------------------------------------
Job tst
repl3 Completed
Started Jan 17 16:41:19, Elapsed Time 0:00:08
repl2 Completed
Started Jan 17 16:41:27, Elapsed Time 0:00:08
repl1 Started Jan 17 16:41:35
*********************************-+----+----+----+ Remaining 0:00:02
Estimated time remaining for job tst 0:00:02
---------------------------------------------------
Job tst
repl3 Completed
Started Jan 17 16:41:19, Elapsed Time 0:00:08
repl2 Completed
Started Jan 17 16:41:27, Elapsed Time 0:00:08
repl1 Completed
Started Jan 17 16:41:35, Elapsed Time 0:00:11
Run time for job tst 0:00:27
Related tasks
“Checking Consistency and Repairing Inconsistent Rows” on page 7-15
Related reference
“The replcheck_stat Table” on page D-1
“The replcheck_stat_node Table” on page D-2
“cdr check replicate” on page A-34
“cdr check replicateset” on page A-43
Notes:
1 See “Connect Option” on page A-3.
The following table describes the options to the cdr stats sync command.
Usage
Use the cdr stats sync command to display the progress of a synchronization
operation (cdr sync replicate or cdr sync replicateset). You must be connected to
the same server on which the cdr sync replicate or cdr sync replicateset command
was run when you run the cdr stats sync command. The cdr stats sync command
displays a snapshot of the progress report and an estimate of the time remaining to
complete the synchronization operation. If you use the --repeat option, the
progress report is displayed every specified time interval.
You can view the progress of previously run synchronization operations that have
named tasks, if those progress report tasks have not been overwritten or deleted.
If you want to see the detailed progress report, include the --verbose option. The
format of the verbose progress report is the same as the verbose consistency report
generated by the cdr check replicate and cdr check replicateset commands.
Examples
The following example synchronizes a replicate named repl1, creates a task named
tst, and then displays a progress report every two seconds.
cdr sync repl –r repl1 –m cdr1 –a --name=tst
cdr stats sync –-repeat=2 tst
---------------------------------------------------
Job tst
repl1 Started Jan 17 16:10:59
**********************--+----+----+----+----+----+ Remaining 0:00:04
---------------------------------------------------
Job tst
repl1 Started Jan 17 16:10:59
***********************************----+----+----+ Remaining 0:00:02
---------------------------------------------------
Job tst
repl1 Started Jan 17 16:10:59
*************************************************+ Remaining 0:00:01
---------------------------------------------------
Job tst
repl1 Completed
Started Jan 17 16:10:59, Elapsed Time 0:00:07
The following example synchronizes the replicate, creates a task named tst, and
displays a verbose progress report every four seconds.
cdr sync repl –r repl1 –m cdr1 –a --name=tst
cdr stats sync –-repeat=4 –-verbose tst
The progress report from the previous command might look like this:
Job tst
repl1 Started Jan 17 16:34:42
*******--+----+----+----+----+----+----+----+----+ Remaining 0:00:12
---------------------------------------------------
Job tst
repl1 Started Jan 17 16:34:42
*********************************-+----+----+----+ Remaining 0:00:02
---------------------------------------------------
Job tst
repl1 Started Jan 17 16:34:42
*************************************************+ Remaining 0:00:01
---------------------------------------------------
Job tst
The following example synchronizes a replicate set named set, creates a task
named tst, and displays a progress report every five seconds:
cdr sync replset –s set –m cdr1 –a –n tst
cdr stats sync –r 5 tst
The progress report from the previous command might look like this:
Job tst
repl3 Started Jan 17 16:41:19
*****----+----+----+----+----+----+----+----+----+ Remaining 0:00:16
repl2 Pending
repl1 Pending
Estimated time remaining for job tst 0:00:52
---------------------------------------------------
Job tst
repl3 Started Jan 17 16:41:19
***************************************+----+----+ Remaining 0:00:01
repl2 Pending
repl1 Pending
Estimated time remaining for job tst 0:00:19
---------------------------------------------------
Job tst
repl3 Completed
Started Jan 17 16:41:19, Elapsed Time 0:00:08
repl2 Started Jan 17 16:41:27
*******************+----+----+----+----+----+----+ Remaining 0:00:06
repl1 Pending
Estimated time remaining for job tst 0:00:13
---------------------------------------------------
Job tst
repl3 Completed
Started Jan 17 16:41:19, Elapsed Time 0:00:08
repl2 Completed
Started Jan 17 16:41:27, Elapsed Time 0:00:08
repl1 Started Jan 17 16:41:35
----+----+----+----+----+----+----+----+----+----+ Remaining 0:01:08
Estimated time remaining for job tst 0:01:08
---------------------------------------------------
Job tst
repl3 Completed
Started Jan 17 16:41:19, Elapsed Time 0:00:08
repl2 Completed
Started Jan 17 16:41:27, Elapsed Time 0:00:08
repl1 Started Jan 17 16:41:35
*********************************-+----+----+----+ Remaining 0:00:02
Estimated time remaining for job tst 0:00:02
---------------------------------------------------
Job tst
repl3 Completed
Started Jan 17 16:41:19, Elapsed Time 0:00:08
repl2 Completed
cdr stop
The cdr stop command stops replication on the server to which you are connected
without shutting down the database server.
Syntax
(1)
cdr stop Connect Option
Notes:
1 See “Connect Option” on page A-3.
Usage
Generally, to stop replication on a server, you should shut down the database
server. Under rare conditions, you might want to temporarily stop the Enterprise
Replication processing without shutting down the database server.
The cdr stop command shuts down replication in an orderly manner; however no
data to be replicated is captured. When the shutdown of Enterprise Replication is
complete, the message CDR shutdown complete appears in the database server log
file.
When you run the cdr stop command, event alarms with class IDs of 50 and 71 are
generated, if those event alarms are enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Return Codes
0 The command was successful.
5 Enterprise Replication cannot connect to the specified server.
48 There is not enough memory to perform the operation.
62 Enterprise Replication is not active.
93 Enterprise Replication is in the process of starting.
94 Enterprise Replication is already in the process of stopping.
Examples
Syntax
cdr stop repair job
(1)
Connect Option
Notes:
1 See “Connect Option” on page A-3.
Use the cdr stop repair command to stop a repair job that is in progress. To restart
the repair job, use the cdr start repair command. You must run this command
while connected to the source server for the job, as specified in the cdr define
repair command by the --syncdatasource option.
If you are running this command as a DBSA, you need to have certain permissions
granted to you on several system tables in the syscdr database. For more
information, see “Preparing for Role Separation (UNIX)” on page 4-19.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Syntax
cdr stop replicate repl_name
(1)
Connect Option
at_server_group
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr stop replicate command changes the state of the replicate repl_name to
inactive (no replicated data is captured, sent or received) on the replication servers
in the specified at_server_group list. In addition, this command deletes any data in
the send queue for the stopped replicate. You cannot stop replicates that have no
participants.
If you omit the at_server_group list, the replicate enters the inactive state on all
database servers participating in the replicate and all send queues for the replicate
are deleted.
If a replicate belongs to an exclusive replicate set, you cannot run cdr stop
replicate to stop that individual replicate. You must use cdr stop replicateset to
stop all replicates in the exclusive replicate set.
If you run this command while direct synchronization, a repair job, or consistency
checking with repair is in progress, that repair process will stop. (Consistency
checking continues; only the repair stops.) Direct synchronization and consistency
checking repair cannot be resumed; you must rerun cdr sync replicate or cdr
check replicate command with the --repair option. Restart the repair job with the
cdr start repair command.
When you run the cdr stop replicate command, an event alarm with a class ID of
61 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following command connects to the database server lake and stops the
replicate aRepl on server groups g_server1 and g_server2:
cdr sto rep -c lake aRepl g_server1 g_server2
Syntax
cdr stop replicateset repl_set
(1)
Connect Option
server_group
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr stop replicateset command causes all replicates in the replicate set repl_set
to enter the inactive state (no capture, no send) on the database servers in the
server_group list.
If the server_group list is omitted, the replicate set repl_set enters the inactive state
for all database servers participating in the replicate set.
If you run this command while direct synchronization, a repair job, or consistency
checking with repair is in progress, that repair process will stop. (Consistency
checking continues; only the repair stops.) Direct synchronization and consistency
checking repair cannot be resumed; you must rerun cdr sync replicate or cdr
check replicate command. Restart the repair job with the cdr start repair command
with the --repair option.
When you run the cdr stop replicateset command, an event alarm with a class ID
of 62 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example connects to the database server paris and stops the
replicate set accounts_set on server groups g_utah and g_iowa:
cdr sto replset --connect=paris accounts_set g_utah g_iowa
Related reference
“cdr change replicateset” on page A-32
“cdr define replicateset” on page A-62
“cdr delete replicateset” on page A-73
“cdr list replicateset” on page A-86
“cdr modify replicateset” on page A-96
“cdr resume replicateset” on page A-110
“cdr start replicateset” on page A-117
“cdr define replicate” on page A-53
“cdr suspend replicateset” on page A-137
“Enterprise Replication Event Alarms” on page 8-21
Syntax
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr suspend replicate command causes the replicate repl_name to enter the
suspend state (capture, no send) for all participants.
If a replicate belongs to an exclusive replicate set, you cannot run cdr suspend
replicate to suspend that individual replicate. You must use cdr suspend
replicateset to suspend all replicates in the exclusive replicate set.
When you run the cdr suspend replicate command, an event alarm with a class ID
of 55 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example connects to the database server stan and suspends the
replicate house:
cdr sus repl --connect=stan house
Related reference
“cdr change replicate” on page A-30
“cdr define replicate” on page A-53
“cdr delete replicate” on page A-72
“cdr list replicate” on page A-82
“cdr modify replicate” on page A-93
“cdr resume replicate” on page A-109
“cdr start replicate” on page A-114
“cdr stop replicate” on page A-133
“Enterprise Replication Event Alarms” on page 8-21
“cdr suspend replicateset”
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr suspend replicateset command causes all the replicates in the replicate set
repl_set to enter the suspend state. Information is captured, but no data is sent for
any replicate in the set. The data is queued to be sent when the set is resumed.
If not all the replicates in the non-exclusive replicate set are active, the cdr suspend
replicateset command displays a warning and only suspends the replicates that are
currently active.
When you run the cdr suspend replicateset command, an event alarm with a class
ID of 56 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
Syntax
cdr suspend server to_server_group
(1)
Connect Option
from_server_group
Notes:
1 See “Connect Option” on page A-3.
Usage
The cdr suspend server command suspends delivery of replication data to the
to_server_group database server from the database servers included in the
from_server_group list. If the from_server_group list is omitted, the command
suspends replication of data from all database servers participating in the
replication domain to the to_server_group.
To restart replication on a suspended replication server, run the cdr resume server
command. Shutting down and restarting the suspended database server does not
resume replication.
When you run the cdr suspend server command, an event alarm with a class ID of
51 is generated, if that event alarm is enabled.
You can run this command from within an SQL statement by using the SQL
administration API.
Examples
The following example connects to the default server (the one specified by the
INFORMIXSERVER environment variable) and suspends replication of data to the
server g_iowa from the servers g_ohio and g_utah:
cdr sus serv g_iowa g_ohio g_utah
Related reference
“cdr connect server” on page A-49
“cdr define server” on page A-64
“cdr delete server” on page A-74
“cdr disconnect server” on page A-78
“cdr list server” on page A-88
“cdr modify server” on page A-97
“cdr resume server” on page A-111
“Enterprise Replication Event Alarms” on page 8-21
Syntax
cdr swap shadow --primaryname=repl_name
(1)
Connect Option
Usage
Use the cdr swap shadow command to switch a replicate with its shadow replicate
as the last step in manually remastering a replicate that was created with the
--name=n option. You create a shadow replicate using the cdr define replicate
command with the --mirrors option.
Use the onstat -g cat repls command to obtain the repl_ID and shadow_ID.
Alternatively, you can query the syscdrrepl view in the sysmaster database.
You can run this command from within an SQL statement by using the SQL
administration API.
Syntax
cdr sync replicate --master=data_server
(1)
Connect Option
--repl=repl_name target_server
--all --name=task_name
delete off
--extratargetrows= keep --firetrigger= on
merge follow
--memadjust=size K --background
M
Notes:
1 See “Connect Option” on page A-3.
Usage
Use the cdr sync replicate command to synchronize data between multiple
database servers for a specific replicate. This command performs direct
synchronization as a foreground process.
If you run this command as a DBSA, you must have INSERT, UPDATE, and
DELETE permission on the replicated tables on all the replication servers in the
domain.
The size of the send queue is specified by the value of the CDR_QUEUEMEM
configuration parameter. You can increase the amount of memory that the send
queue can use during this synchronization operation by using the --memadjust
option to specify the size of the send queue.
If you want to monitor the progress of the synchronization operation, include the
--name option and specify a name for the progress report task. Then run the cdr
stats sync command and specify the progress report task name.
You can run this command from within an SQL statement by using the SQL
administration API.
Return codes
For information on these error codes, see “Return Codes for the cdr Utility” on
page A-8
Examples
The following example illustrates synchronizing all replication servers for the
replicate named repl_1:
cdr sync replicate --master=g_serv1 --repl=repl_1\
--all --extratargetrows=keep\
--firetrigger=on
The data on the server group g_serv1 is used as the reference for correcting the
data on the other servers. Line 2 indicates that all servers associated with the
replicate are synchronized and that if the synchronization operation detects rows
on the target servers that do not exist on the reference server (g_serv1), that those
rows should remain on the other servers. Line 3 indicates that triggers should be
fired on the target servers even if the replicate definition does not include the
--firetrigger option.
The following example illustrates synchronizing three servers for the replicate
named repl_2:
cdr sync replicate -m g_serv1 -r repl_2\
g_serv2 g_serv3
The reference server is g_serv1 and the target servers are g_serv2 and g_serv3.
Because the --extratargetrows option is not specified, the default behavior occurs:
rows, and any dependent rows that are based on referential integrity constraints,
that are on the target servers but not on the reference server, are deleted.
Example 3: Synchronize in the background and set the send queue size
The following example illustrates synchronizing in the background and setting the
size of the send queue to 50 MB:
cdr sync replicate --master=g_serv1 --repl=repl_1\
--memadjust=50M --background
Syntax
cdr sync replicateset --master=data_server
(1)
Connect Option
--replset=repl_set target_server
--all --name=task_name
delete off
--extratargetrows= keep --firetrigger= on
merge follow
--memadjust=size K --background
M
--process=number_processes
Notes:
1 See “Connect Option” on page A-3.
Usage
Use the cdr sync replicateset command to synchronize data between multiple
database servers for a replicate set. This command performs direct synchronization
as a foreground process.
The size of the send queue is specified by the value of the CDR_QUEUEMEM
configuration parameter. You can increase the amount of memory that the send
queue can use during this synchronization operation by using the --memadjust
option to specify the size of the send queue.
If you want to monitor the progress of the synchronization operation, include the
--name option and specify a name for the progress report task. Then run the cdr
stats sync command and specify the progress report task name.
You can run this command from within an SQL statement by using the SQL
administration API.
Return codes
If the command is not successful, one of the following error codes is returned: 1, 5,
11, 17, 18, 31, 37, 48, 53, 61, 75, 99, 101, 121, 166, 172, 174, 193, 194, 195, 200, 203,
204, 213.
For information on these error codes, see “Return Codes for the cdr Utility” on
page A-8
The following example illustrates synchronizing all replication servers for the
replicate set replset_1 using g_serv1 as the reference server:
cdr sync replicateset --master=g_serv1 --replset=replset_1\
--all --extratargetrows=keep
Line 2 indicates that all servers associated with the replicate set are synchronized
and that if the synchronization process detects rows on the target servers that do
not exist on the reference server (g_serv1), that those rows should remain on the
other servers.
The following example illustrates synchronizing three servers for the replicate set
named replset_2 and using two processes to synchronize each of the two replicates
in the set in parallel:
cdr sync replicateset -m g_serv1 -s replset_2\
g_serv2 g_serv3 --process=2
The reference server is g_serv1 and the target servers are g_serv2 and g_serv3.
Because the --extratargetrows option is not specified, the default behavior occurs:
rows, and any dependent rows that are based on referential integrity constraints,
that are on the target servers but not on the reference server, are deleted.
Example 3: Synchronize in the background and set the send queue size
The following example illustrates synchronizing in the background and setting the
size of the send queue to 50 MB:
cdr sync replicateset --master=g_serv1 --replset=replset_1\
--memadjust=50M --background
Related concepts
“Database Server Groups” on page 4-2
“Preparing for Role Separation (UNIX)” on page 4-19
Related tasks
“Performing Direct Synchronization” on page 7-14
Related reference
“cdr check replicateset” on page A-43
“cdr stats sync” on page A-127
cdr -V
The cdr -V command displays the version of Informix that is currently running.
Syntax
cdr -V
Use the cdr -V command if you need to obtain the version of the database server,
usually at the request of IBM Software Support.
Examples
cdr view
The cdr view command displays information about every Enterprise Replication
server in the domain.
Syntax
cdr view
(1)
Connect Option
state
profile --repeat=time
ddr
--logstage
servers
sendq
rcv
apply
nif
ats
ris
ATS and RIS Directory Options
--help
--atsdir
--risdir --verbose
--repair
--quiet --delete
--check
Notes:
1 See “Connect Option” on page A-3.
Usage
Use the cdr view command to monitor the Enterprise Replication domain. Each
subcommand results in different output information.
You can repair inconsistencies listed in ATS or RIS files on every server by using
the --repair option. Use the --delete option to delete the ATS or RIS files after the
repair is complete.
Tip: Using the --repair option is equivalent to running the cdr repair command.
The --check option is equivalent to the cdr repair --check command.
The following example of the output of the cdr view state command shows the
state of Enterprise Replication and each of its main components for every server in
the Enterprise Replication domain.
STATE
Source ER Capture Network Apply
State State State State
-----------------------------------------------------------------------------
cdr1 Active Running Running Running
cdr2 Active Running Running Running
cdr3 Active Running Running Running
cdr4 Active Running Running Running
Possible values in the Capture State, Network State, and Apply State columns
include:
Running
The Enterprise Replication component is running normally.
Down The Enterprise Replication component is not running.
Uninitialized
The server is not a source server for replication.
The following example of the output of the cdr view profile command shows a
summary of the other cdr view commands and information about the sbspaces
designated for spooled transaction data.
ER PROFILE for Node cdr2 ER State Active
The SPOOL DISK USAGE section shows the total amount of memory, in bytes, in
the sbspaces that Enterprise Replication uses to store spooled transaction row data,
and the amount of available metadata and user data space.
In this example, transactions are being captured one log page from where they are
being committed. Transactions are being applied further back in the same log. Over
47 000 additional log pages need to be used before transaction blocking would
occur.
The columns in the output of the cdr view ddr command provide the following
information:
Server The name of the Enterprise Replication server.
Snoopy log page
The log ID and position at which transactions are being captured for
replication.
Replay log page
The log ID and position at which transactions have been applied. This is
the position from which the log would need to be replayed to recover
Enterprise Replication if Enterprise Replication or the database server shut
down.
Current log page
The log page on which replicated transactions are being captured.
total log pages
The total number of log pages on the server.
log pages to DDRBLOCK
The number of log pages that would have to be used before transaction
blocking occurs.
The following example of the output of the cdr view servers command shows the
state of the Enterprise Replication servers and their connections to each other.
SERVERS
Server Peer ID State Status Queue Connection Changed
---------------------------------------------------------------------------
cdr1 cdr1 1 Active Local 0
cdr2 2 Active Connected 0 Apr 15 10:46:16
cdr3 3 Active Connected 0 Apr 15 10:46:16
cdr4 4 Active Connected 0 Apr 15 10:46:15
cdr2 cdr1 1 Active Connected 0 Apr 15 10:46:16
cdr2 2 Active Local 0
cdr3 3 Active Connected 0 Apr 15 10:46:16
cdr4 4 Active Connected 0 Apr 15 10:46:16
cdr3 cdr1 1 Active Connected 0 Apr 15 10:46:16
cdr2 2 Active Connected 0 Apr 15 10:46:16
cdr3 3 Active Local 0
cdr4 4 Active Connected 0 Apr 15 10:46:16
cdr4 cdr1 1 Active Connected 0 Apr 15 10:46:16
cdr2 2 Active Connected 0 Apr 15 10:46:16
cdr3 3 Active Connected 0 Apr 15 10:46:16
cdr4 4 Active Local 0
In this example, each of the four servers are connected to each other.
The output of this command is similar to the output of the cdr list server
command, except that the cdr view server command shows all servers in the
Enterprise Replication domain, not just the servers connected to the one from
which the command is run. For information about the columns in this output, see
“cdr list server” on page A-88.
The following example of the output of the cdr view sendq command shows
information about the send queue for each server.
RQM SENDQ
Server Trans. Trans. Trans. Data Memory ACKS
in que in mem spooled in queue in use pending
---------------------------------------------------------------------------
cdr1 594 594 0 49896 49896 0
cdr2 0 0 0 0 0 0
cdr3 0 0 0 0 0 0
cdr4 0 0 0 0 0 0
In this example, only the server cdr1 has transactions in the send queue, all of
which are in memory.
The columns of the cdr view sendq command provide the following information
in addition to the server name:
Trans. in que
The number of transactions in the send queue.
Trans. in mem
The number of transactions in the send queue that are currently in
memory.
The following example of the output of the cdr view rcv command shows
information about the receive queue for each server.
RCV
Server Received Spooled Memory Pending Waiting
Txn. Txn. In Use Txn. Txn.
---------------------------------------------------------------------------
cdr1 0 0 0 0 0
cdr2 372 0 871164 372 0
cdr3 220 0 18480 220 0
cdr4 0 0 0 0 0
In this example, the servers cdr2 and cdr3 have transactions in the receive queue,
all of which have been preprocessed and are in the pending state waiting to be
applied.
The columns of the cdr view rcv command provide the following information in
addition to the server name:
Received Txn.
The number of transactions in the receive queue.
Spooled Txn.
The number of transactions in the receive queue that have been spooled to
disk.
Memory In Use
The size, in bytes, of the receive queue.
Pending Txn.
The number of transactions that have been preprocessed but not yet
applied.
Waiting Txn.
The number of acknowledgments waiting to be sent back to the source
server.
The following example of the output of the cdr view apply command shows how
replicated data is being applied.
APPLY
Server Pl Failure Num Num Apply --Latency-- ATS RIS
Rate Ratio Run Failed Rate Max Avg. # #
---------------------------------------------------------------------------
In this example, the servers cdr2, cdr3, and cdr4 each applied 10 001 transactions.
The columns of the cdr view apply command provide the following information in
addition to the server name:
Pl Rate
Indicates the degree of parallelism used when data is being applied. Zero
indicates the highest possible rate of parallelism.
Failure Ratio
The ratio of the number of times data could not be applied in parallel
because of deadlocks or lock time outs.
Num Run
The number of transactions processed.
Num Failed
The number of failed transactions because of deadlocks or lock time outs.
Apply Rate
The number of transactions that have been applied divided by the amount
of time that replication has been active. The Apply Rate is equal to the
Commit Rate in the cdr view profile command.
Max. Latency
The maximum number of seconds for processing any transaction.
Avg. Latency
The average number of seconds of the life cycle of a replicated transaction.
ATS # The number of ATS files.
RIS # The number of RIS files.
The following example of the output of the cdr view nif command shows the
status and statistics of connections between servers.
NIF
Source Peer State Messages Messages Messages Transmit
Sent Received Pending Rate
---------------------------------------------------------------------------
cdr1 cdr2 Connected 24014 372 6 21371.648
cdr3 Connected 24020 17 0 20527.105
cdr4 Connected 24014 23 6 21925.727
cdr2 cdr1 Connected 392 24015 0 21380.879
cdr3 Connected 14 14 0 10.857
cdr4 Connected 14 14 0 11.227
cdr3 cdr1 Connected 17 24021 0 20310.611
cdr2 Connected 14 14 0 10.739
cdr4 Connected 14 14 0 11.227
cdr4 cdr1 Connected 236 24015 0 21784.225
cdr2 Connected 14 14 0 11.101
cdr3 Connected 14 14 0 11.101
In this example, all servers are connected to each other. The server cdr1 has six
messages that have not yet been sent to server cdr2 and server cdr4.
The cdr view ats and cdr view ris Command Output
The following example of the output of the cdr view ats command shows that
there are no ATS files in text format.
ATS for cdr1 - no files
---------------------------------------------------------------------------
In this example, the servers cdr2 and cdr4 each have one RIS file.
For more information on ATS and RIS files, see Chapter 8, “Monitoring and
Troubleshooting Enterprise Replication,” on page 8-1.
The cdr view atsdir and cdr view risdir Command Output
The cdr view atsdir command and cdr view risdir command outputs have the
same format. The following example of the output of the cdr view risdir command
shows the names of two RIS files.
RISDIR
Server File Size Create
Name Time
---------------------------------------------------------------------------
cdr2 ris.cdr2.cdr1.D_4.080415_11:56:14.1 465 2008-04-15 11:56:15
cdr4 ris.cdr4.cdr1.D_1.080415_11:56:14.1 475 2008-04-15 11:56:15
In this example, both server cdr2 and server cdr4 have a single RIS file. The Size
column shows the size of the file, in bytes.
Examples
The following command would display information about the send queue and the
network every 10 seconds:
cdr view sendq nif --repeat=10
The following command could be used in a daemon or script that runs every five
minutes to check all servers for ATS and RIS files, repair inconsistencies, and delete
the processed ATS and RIS files:
cdr view atsdir risdir --repair --delete --repeat=300
Use the CDR_ENV configuration parameter to set the environment variables that
affect the behavior of Enterprise Replication.
You can view the setting of Enterprise Replication configuration parameters and
environment variables with the onstat -g cdr config command. See “onstat -g cdr
config” on page C-4.
Related concepts
“Configuring network encryption for replication servers” on page 4-5
Related tasks
“Dynamically Modifying Configuration Parameters for a Replication Server” on
page 7-1
“Setting Configuration Parameters” on page 4-13
Use the CDR_APPLY configuration parameter to specify the number of data sync
threads that are dynamically allocated as needed. By default, Enterprise Replication
allocates a range of one to four data sync threads for each CPU VP.
Transactions that receive updates and deletes from another server in the replicate
can abort because of locking problems. If you experience transaction aborts in the
data sync due to lock timeouts like this, you might want to increase the value of
this parameter.
The onconfig file can contain multiple entries for the CDR_ENV environment
variable. You can specify only one environment variable per CDR_ENV entry.
When you update the CDR_ALARMS environment variable in the onconfig file,
you must list all the Enterprise Replication event alarms that you want to be
enabled.
The following lines in the onconfig file set the CDR_LOGDELTA environment
variable to 30 and the CDR_ROUTER environment variable to 1:
CDR_ENV CDR_LOGDELTA=30
CDR_ENV CDR_ROUTER=1
Related tasks
“Enabling or Disabling Enterprise Replication Event Alarms” on page 8-36
Transaction list
INV# Product Enterprise
Thread 1234 chandelier Replication
1235 candlestick message queue
INV# Product
Logical log Thread 3421 clock
3427 china
Fan out
INV# Product
Thread
4325 crystal
4367 silverware
INV# Product
Thread
6798 pottery
6520 ceramic_tile
Value Meaning
-1 The source database server never compresses the data, regardless of
whether or not the target site uses compression.
0 The source database server compresses the data only if the target database
server expects compressed data.
1 The database server performs a minimum amount of compression.
9 The database server performs the maximum possible compression.
The compression values determine how much memory can be used to store
information while compressing, as follows:
Different sites can have different levels. For example, Figure B-2 shows a set of
three root servers connected with LAN and a nonroot server connected over a
modem. The CDR_NIFCOMPRESS configuration parameter is set so that
connections between A, B, and C use no compression. The connection from C to D
uses level 6.
A D
C
When you increase the value of CDR_QUEUEMEM, you reduce the number of
elements that must be written to disk, which can eliminate I/O overhead.
Therefore, if elements are frequently stored on disk, increase the value of
CDR_QUEUEMEM. Conversely, if you set the value of CDR_QUEUEMEM too
high, you might adversely impact the performance of your system. High values for
CDR_QUEUEMEM also increase the time necessary for recovery. Tune the value of
CDR_QUEUEMEM for the amount of memory available on your computer.
where:
delta Determines the incremental size of the serial column values. This value
must be the same on all replication servers and must be at least the
number of expected servers in the Enterprise Replication domain.
offset Determines the offset of the serial value that will be generated. This value
must be different on all replication servers and must be between 0 and one
less than the value of delta, inclusive.
For example, suppose you have two primary servers, g_usa and g_japan, and one
read-only target server, g_italy. You plan to add three additional servers in the
future. You might set CDR_SERIAL to the values shown in the following table.
The CDR_SERIAL setting of 5,2, 5,3, and 5,4 are reserved for the future servers.
If you need to add more servers than the delta value of CDR_SERIAL, you must
reset CDR_SERIAL on all servers simultaneously and ensure that the serial values
on the new servers are unique.
For more information on using serial columns as primary keys, see “Serial Data
Types and Primary Keys” on page 2-7.
If you use both encryption and compression (by setting the CDR_NIFCOMPRESS
configuration parameter), then compression occurs before encryption.
The cipher list for allbut can include unique, abbreviated entries. For example, bf
can represent bf-1, bf-2, and bf-3. However, if the abbreviation is the name of an
actual cipher, then only that cipher is eliminated. Therefore, des eliminates only the
des cipher, but de eliminates des, des3, and desx.
Important: The encryption cipher and mode used is randomly chosen among the
ciphers common between the two servers. It is strongly recommended that you do
The following ciphers are supported. For an updated list, see the Release Notes.
desx Extended DES (128-bit key) bf-3 Blow Fish (192-bit key)
All ciphers support all modes, except the desx cipher, which only supports the cbc
mode.
The level is prioritized to the highest value. For example, if one node has a level of
high and medium enabled and the other node has only low enabled, then the
connection attempt fails. Use the off entry between servers only when a secure
network connection is guaranteed.
To specify the built-in key, use the keyword builtin. Using the builtin option
provides limited message verification (some validation of the received message and
determination that it appears to have come from an IBM Informix client or server).
The strongest verification is done by a site-generated MAC key file.
Use the CDR_ENV configuration parameter to set this environment variable in the
onconfig file.
Related tasks
“Enabling or Disabling Enterprise Replication Event Alarms” on page 8-36
ATS and RIS files in XML format always use a period (.) as the delimiter.
For example, the default file name for an ATS file in text format on UNIX might
look like this: ats.g_beijing.g_amsterdam.D_2.000529_23:27:16.6. If
CDR_ATSRISNAME_DELIM is set to a period (.), then the same file name would
look like this: ats.g_beijing.g_amsterdam.D_2.000529_23.27.16.6.
Related concepts
“ATS and RIS File Names” on page 8-5
If CDR_ROUTER is not set at hub server, the hub server will send an
acknowledgment if the transaction is stored in the local queue at the hub server or
if the hub server received acknowledgment from all of its leaf servers.
The cdrID is the unique identifier for the database server in the Options field of
the SQLHOSTS file ( i = unique_ID).
For example, suppose that you have 5 database servers, Version 10.00.xC1, whose
cdrID values range from 2 through 10 (cdrID = 2, 3, 8, 9, and 10).
If you upgrade database server cdrID 8 to Version 10.00.xC4, you must set the
CDRSITES_10X environment variable for the other server cdrIDs by setting the
CDR_ENV configuration parameter in the ONCONFIG file before bringing the
Version 10.00.xC4 database server online:
CDR_ENV CDRSITES_10x=2,3,9,10
To prevent this malfunction, if you have Version 7.3x, 7.20x, or 7.24x servers in
your Enterprise Replication environment, set the CDRSITES_731 environment
variable with the CDR_ENV configuration parameter for these servers.
Note: You can only set the CDRSITES_731 environment variable by using the
CDR_ENV configuration parameter. You cannot set CDRSITES_731 as a standard
environment variable.
For example, suppose that you have 5 database servers, Version 7x servers whose
cdrID values range from 1 through 7 (cdrID = 1, 4, 5, 6, and 7).
If you upgrade database server cdrID 6 to Version 10.0, 9.40, or 9.30, you must set
the CDRSITES_731 environment variable for the other server cdrIDs by setting the
To prevent this malfunction, if you have Version 9.21 or 9.20 servers in your
Enterprise Replication environment, set the CDRSITES_92X environment variable
Note: You can only set the CDRSITES_92X environment variable by using the
CDR_ENV configuration parameter. You cannot set CDRSITES_92X as a standard
environment variable.
For example, suppose that you have 5 database servers, Version 9.21 or 9.20 whose
cdrID values range from 2 through 10 (cdrIDs = 2, 3, 8, 9, and 10).
If you upgrade database server cdrID 8 to Version 10.0, 9.40, or 9.30, you must set
the CDRSITES_92X environment variable for the other server cdrIDs by setting
the CDR_ENV configuration parameter in the ONCONFIG file before bringing the
Version 10.0, 9.40, or 9.30 database server online:
CDR_ENV CDRSITES_92x=2,3,9,10
The onstat utility reads shared-memory structures and provides statistics about the
database server that are accurate at the instant that the command executes. The
system-monitoring interface (SMI) also provides information about the database
server. For general information about onstat and SMI, refer to the IBM Informix
Administrator's Reference. For information on SMI tables specific to Enterprise
Replication, see Appendix E, “SMI Tables for Enterprise Replication Reference,” on
page E-1.
Related concepts
“Monitor Enterprise Replication” on page 8-1
onstat -g ath
Prints information about all threads.
The following table summarizes the threads that Enterprise Replication uses. You
can use this information about threads when you evaluate memory use. For more
information, see the utilities chapter of the IBM Informix Administrator's Reference.
Number of
Threads Thread Name Thread Description
1 ddr_snoopy Performs physical I/O from logical log, verifies potential replication,
and sends applicable log-record entries to Enterprise Replication.
1 preDDR Runs during queue recovery to monitor the log and sets blockout mode
if the log position advances too far before replication resumes.
1 CDRGfan Receives log entries and passes entries to evaluator thread
n CDRGevaln Evaluates log entry to determine if it should be replicated (n is the
number of evaluator threads specified by CDR_EVALTHREADS). This
thread also performs transaction compression on the receipt of
COMMIT WORK and queues completed replication messages.
1 per large CDRPager Performs the physical IO for the temporary smart large object that holds
transaction paged transaction records. Grouper paging is activated for a transaction
when its size is 10 percent of the value of SHMVIRTSIZE or
CDR_QUEUEMEM or when it includes more than 100,000 records.
1 CDRCparse Parses all SQL statements for replicate definitions.
1 per CDRNsTnCDRNsAn Sending thread for site.
connection
1 per CDRNrn Receiving thread for site.
connection
2...n CDRACK_n Accepts acknowledgments from site. At least 2, up to a maximum of the
number of active connections.
# CPUs... CDRD_n Replays transaction on the target system (data sync thread). At least one
thread is created for each CPU virtual processor (VP). The maximum
number of threads is 4*(number of CPU VPs).
1 CDRSchedMgr Schedules internal Enterprise Replication events.
onstat -g cat
Prints information from the Enterprise Replication global catalog.
full
onstat -g cat
replname
repls
servers
Modifier Description
replname The name of a replicate
Usage
The global catalog contains a summary of information about the defined servers,
replicates, and replicate sets on each of the servers within the domain. If a
replicated table is undergoing an alter operation, the onstat -g cat command shows
that it is in alter mode. For example, use this command to determine:
v How many servers and how many replicates are configured
v Which table matches a given replicate
v Whether a server is a root or leaf server
v The current bitmap mask for a given server. You can use the bitmap mask with
the output from the onstat -g rqm command to determine which server
Enterprise Replication is waiting on for an acknowledgment.
You can set the scope of the output by specifying one of the following options to
onstat -g cat:
v full: (Default) Prints expanded information for both replicate servers and
replicates.
v replname: Prints information on the specified replicate only.
v repls: Prints information on replicates only.
v servers: Prints information on servers only.
This sample output from the onstat -g cat repls command shows that the table tab
is in alter mode. The replicate rep1 is defined on this table, its replicate ID is
6553601.
GLOBAL-CATALOG CACHE STATISTICS
REPLICATES
-------------------
Parsed statements:
Id 6553601 table tab
Id 6553602 table tab12
Inuse databases: test(2)
Name: rep1, Id: 6553601 State: ACTIVE Flags: 0x800000 ALTERMODE
This sample output from the onstat -g cat servers command shows that the server
g_bombay and g_delhi are active; neither one is a hub or a leaf server, and both
have ATS and RIS files generated in XML format.
GLOBAL-CATALOG CACHE STATISTICS
SERVERS
-------------------
Current server : Id 200, Nm g_bombay
Last server slot: (0, 2)
# free slots : 0
Broadcast map : <[0005]>
Leaf server map : <[0000]>
Root server map : <[0006]>
Adjacent server map: <[0004]>
Id: 200, Nm: g_bombay, Or: 0x0002, off: 0, idle: 0, state Active
root Id: 00, forward Id: 00, ishub: FALSE, isleaf: FALSE
subtree map: <empty>
atsrisformat=xml
Id: 100, Nm: g_delhi, Or: 0x0004, off: 0, idle: 0, state Active
root Id: 00, forward Id: 100, ishub: FALSE, isleaf: FALSE
subtree map: <empty>
atsrisformat=xml
Related reference
“onstat -g cdr”
onstat -g cdr
Prints the output for all of the Enterprise Replication statistics commands.
onstat -g cdr
Usage
The long option prints additional information about settings that can be useful for
IBM Support.
Modifier Description
parameter_name The name of an Enterprise Replication configuration parameter
variable_name The name of an Enterprise Replication environment variable
If you use onstat -g cdr config without any options, the settings of all Enterprise
Replication configuration parameters and environment variables are included in
the output. If you specify the CDR_ENV configuration parameter without an
environment variable name, all Enterprise Replication environment variables are
included in the output.
The following sample output of the onstat -g cdr config command shows the
settings of all Enterprise Replication configuration parameters and CDR_ENV
environment variables:
onstat -g cdr config
CDR_DBSPACE:
CDR_DBSPACE configuration setting: rootdbs
CDR_DSLOCKWAIT:
CDR_DSLOCKWAIT configuration setting: 5
CDR_EVALTHREADS:
CDR_EVALTHREADS configuration setting: 1, 2
CDR_MAX_DYNAMIC_LOGS:
CDR_MAX_DYNAMIC_LOGS configuration setting: 0
CDR_NIFCOMPRESS:
CDR_NIFCOMPRESS configuration setting: 0
CDR_QDATA_SBSPACE:
CDR_QDATA_SBSPACE configuration setting: cdrsbsp
CDR_QHDR_DBSPACE:
CDR_QHDR_DBSPACE configuration setting: rootdbs
CDR_QUEUEMEM:
CDR_QUEUEMEM configuration setting: 4096
CDR_SERIAL:
CDR_SERIAL configuration setting: 0, 0
CDR_SUPPRESS_ATSRISWARN:
CDR_SUPPRESS_ATSRISWARN configuration setting: [None suppressed]
ENCRYPT_CDR:
ENCRYPT_CDR configuration setting: 0
ENCRYPT_CIPHERS:
ENCRYPT_CIPHERS configuration setting: [None configured]
ENCRYPT_MAC:
ENCRYPT_MAC configuration setting: [None configured]
ENCRYPT_MACFILE:
ENCRYPT_MACFILE configuration setting: [None configured]
ENCRYPT_SWITCH:
ENCRYPT_SWITCH configuration setting: 0,0
CDR_ENV environment variable settings:
CDR_LOGDELTA:
CDR_LOGDELTA configuration setting: 0
CDR_PERFLOG:
CDR_PERFLOG configuration setting: 0
CDR_ROUTER:
CDR_ROUTER configuration setting: 0
CDR_RMSCALEFACT:
CDR_RMSCALEFACT configuration setting: 0
CDRSITES_731:
CDRSITES_731 configuration setting: [None configured]
CDRSITES_92X:
CDRSITES_92X configuration setting: [None configured]
CDRSITES_10X:
CDRSITES_10X configuration setting: [None configured]
onstat -g ddr
Prints the status of the Enterprise Replication database log reader.
You can use the information from the onstat -g ddr command to monitor replay
position in the log file and ensure replay position is never overwritten (which can
cause loss of data). The replay position is the point from where, if a system failure
occurs, Enterprise Replication starts re-reading the log information into the log
update buffers. All the transactions generated before this position at all the target
servers have been applied by Enterprise Replication or safely stored in stable
queue space. As messages are acknowledged or stored in the stable queue, the
replay position should advance. If you notice that replay position is not advancing,
this can mean that the stable queue is full or a remote server is down.
The onstat -g ddr output shows you a snapshot of the replay position, the snoopy
position, and the current position. The snoopy position identifies the position of the
ddr_snoopy thread in the logical logs. The ddr_snoopy has read the log records up
until this point. The current position is the position where the server has written
its last logical log record.
If log reading is blocked, data might not be replicated until the problem is
resolved. If the block is not resolved, the database server might overwrite the read
(ddr_snoopy) position, which means that data will not be replicated. If this occurs,
you must manually resynchronize the source and target databases.
You can configure one or more actions to occur if the current position reaches the
log needs position by setting the CDR_LOG_LAG_ACTION configuration
parameter.
The following sample output from the onstat ddr command shows the replay
position, snoopy position, and current position highlighted.
DDR -- Running
# Event Snoopy Snoopy Replay Replay Current Current
Buffers ID Position ID Position ID Position
528 24 165018 24 6a018 24 166000
Log Pages Snooped: From From Tossed
Cache Disk (LBC full)
247 111 0
Total dynamic log requests: 0
DDR events queue
Type TX id Partnum Row id
onstat -g dss
Prints detailed statistical information about the activity of individual data sync
threads.
The data sync thread applies the transaction on the target server. Statistics include
the number of applied transactions and failures and when the last transaction from
a source was applied.
Modifier Action
UDR Prints summary information about any UDR invocations by the data sync
threads.
UDRx Prints expanded information (including a summary of error information)
about any UDR invocations by the data sync threads. The Procid column
lists the UDR procedure ID.
In the following example, only one data sync thread is currently processing the
replicated data. It has applied a total of one replicated transaction and the
transaction was applied at 2004/09/13 18:13:10. The Processed Time field shows
the time when the last transaction was processed by this data sync thread.
-- Up 00:00:28 -- 28672 Kbytes
DS thread statistic
cmtTime Tx Tx Tx Last Tx
Name < local Committed Aborted Processed Processed Time
---------- ------- --------- ------- --------- -----------------
CDRD_1 0 1 0 1 (1095117190) 2004/09/13
18:13:10
Tables (0.0%):
Databases: test
CDR_DSLOCKWAIT = 1
CDR_DSCLOSEINTERVAL = 60
Related reference
“onstat -g cdr” on page C-3
onstat -g dtc
Prints statistics about the delete table cleaner.
The delete table cleaner removes rows from the delete table when they are no
longer needed.
The -g dtc option is used primarily as a debugging tool and by IBM Software
Support.
onstat -g grp
TPrints statistics about the grouper.
The grouper evaluates the log records, rebuilds the individual log records into the
original transaction, packages the transaction, and queues the transaction for
transmission.
The -g grp option is used primarily as a debugging tool and by Technical Support.
Modifier Action
A Prints all the information printed by the G, T, P, E, R, and S modifiers
E Prints grouper evaluator statistics
Ex Prints grouper evaluator statistics, expands user-defined routine (UDR)
environments
G Prints grouper general statistics
L Prints grouper global list
Lx Prints grouper global list, expands open transactions
M Prints grouper compression statistics
Mz Clears grouper compression statistics
P Prints grouper table partition statistics
pager Prints grouper paging statistics
The rest of this section contains sample output from various onstat -g grp modifier
commands. The following sample shows output for the onstat -g grp command.
Grouper at 0xb014018:
Last Idle Time: (1095122236) 2010/09/13 19:37:16
RSAM interface ring buffer size: 528
RSAM interface ring buffer pending entries: 0
Eval thread interface ring buffer size: 48
Eval thread interface ring buffer pending entries: 0
Log update buffers in use: 0
Max log update buffers used at once: 5
Log update buffer memory in use: 0
Max log update buffer memory used at once: 320
Updates from Log: 16
Log update links allocated: 512
Blob links allocated: 0
Conflict Resolution Blocks Allocated: 0
Memory pool cache: Empty
Last Tx to Queuer began : (1095118105) 2010/09/13 18:28:25
Last Tx to Queuer ended : (1095118105) 2010/09/13 18:28:25
Last Tx to Queuer log ID, position: 12,23
Open Tx: 0
Serial Tx: 0
Tx not sent: 0
Tx sent to Queuer: 2
Tx returned from Queuer: 2
Events sent to Queuer: 7
Events returned from Queuer: 7
Total rows sent to Queuer: 2
Open Tx array size: 1024
Table ’tab’ at 0xae8ebb0 [ CDRShadow ]
Table ’tab12’ at 0xae445e0 [ CDRShadow ]
The following example shows output for the onstat -g grp E command. The field
Evaluators: 4 indicates that there are four evaluation threads configured for the
system.
Repl links on global free list: 0 Evaluators: 4
Evaluator at 0xba71840 ID 0 [Idle:Idle] Protection: unused
Eval iteration: 1007
Updates evaluated: 0
Repl links on local free list: 256
UDR environment table at 0xba71890
Number of environments: 0
Table memory limit : 16777
Table memory used : 0
SAPI memory limit : 131072
SAPI memory used : 0
Count failed UDR calls: 0
Evaluator at 0xba718f0 ID 1 [Idle:Idle] Protection: unused
Eval iteration: 1007
Updates evaluated: 0
Repl links on local free list: 256
UDR environment table at 0xba71940
Number of environments: 0
Table memory limit : 16777
Table memory used : 0
SAPI memory limit : 131072
SAPI memory used : 0
Count failed UDR calls: 0
The following example shows output for the onstat -g grp G command.
Grouper at 0xb8ab020:
Last Idle Time: (1095115397) 2010/09/13 17:43:17
RSAM interface ring buffer size: 1040
RSAM interface ring buffer pending entries: 0
Eval thread interface ring buffer size: 64
Eval thread interface ring buffer pending entries: 0
Log update buffers in use: 0
Max log update buffers used at once: 1
Log update buffer memory in use: 0
Max log update buffer memory used at once: 64
Updates from Log: 1
Log update links allocated: 512
Blob links allocated: 0
Conflict Resolution Blocks Allocated: 0
Memory pool cache: Empty
The following example shows output for the onstat -g grp P command. In the
following example, the grouper is evaluating rows for the account, teller and
customer tables.
Table ’teller’ at 0xb851480 [ CDRShadow VarChars ]
Table ’account’ at 0xb7faad8 [CDRShadow VarChars VarUDTs Floats
Blobs]
Table ’customer’ at 0xbbe67a8 [CDRShadow VarChars VarUDTs]
Grouper Table Partitions:
Slot 387...
’account’ 1048707
Slot 389...
’teller’ 1048709
Slot 394...
’customer’ 1048714
The following example shows output for the onstat -g grp pager command. The
sample output shows the grouper large transaction evaluation statistics.
Grouper Pager statistics:
Number of active big transactions: 0
Total number of big transactions processed: 0
Spool size of the biggest transaction processed: 0 Bytes
The following example shows output for the onstat -g grp R command. In this
example, the grouper is configured to evaluate rows for replicates with IDs
6553601 and 6553602 (you can use the onstat -g cat repls command to obtain the
replicate names). The Ignore attribute of replicate ID 6553602 shows that the
grouper is currently not evaluating rows for this replicate. This can happen if the
replicate state is not ACTIVE. You can obtain the replicate state using the onstat -g
cat repls command.
The following example shows output for the onstat -g grp T command. In this
example, the grouper evaluated and queued 1 transaction to the send queue. The
Tx sent to Queuer field shows the total number of transactions evaluated and
queued to the send queue for propagating to all the replicate participants. The
Total rows sent to Queuer field shows the total number of rows queued to the
send queue for propagating to all the replicate participants.
Last Tx to Queuer began : (1095116676) 2010/09/13 18:04:36
Last Tx to Queuer ended : (1095116676) 2010/09/13 18:04:36
Last Tx to Queuer log ID, position: 5,3236032
Open Tx: 0
Serial Tx: 0
Tx not sent: 0
Tx sent to Queuer: 1
Tx returned from Queuer: 0
Events sent to Queuer: 0
Events returned from Queuer: 0
Total rows sent to Queuer: 1
Open Tx array size: 1024
Related reference
“onstat -g cdr” on page C-3
onstat -g nif
Prints statistics about the network interface.
onstat -g nif
all
sites
server_ID
sum
The output shows which sites are connected and provides a summary of the
number of bytes sent and received by each site. This can help you determine if a
site is not sending or receiving bytes.
The -g nif option is used primarily as a debugging tool and by Technical Support.
Option Action
all Prints the sum and the sites.
sites Prints the NIF site context blocks.
server_ID Prints information about the replication server with that server ID.
sum Prints the sum of the number of buffers sent and received for each site.
The following example shows output for the onstat -g nif command. In this
example, the local server is connected to the server group g_bombay and its CDR
ID is 200. The connection status is running. The connection between the two
servers is running, but the replication state on the g_bombay server is suspended.
The server group g_bombay internal NIF version is 9. The local server has sent
three messages to the server g_bombay and it has received two messages from
g_bombay.
$ onstat -g nif
CDR connections:
Id Name State Version Sent Received
-----------------------------------------------------
200 g_bombay RUN,SUSPEND 9 3 2
Output Description
NIF anchor Block
The address of the network storage block.
nifGState
The connection state.
RetryTimeout
The number of seconds before Enterprise Replication attempts to retry a
dropped connection.
Id The Enterprise Replication ID number for the server.
Name The name of the server group.
State The connection state between the local server and the listed server. If
multiple states are shown the second state designates the replication state.
Version
The internal version number of the NIF component on the listed server.
Sent The number of messages the local server has sent to the listed server.
Received
The number of messages received by the local server from the listed server.
Related reference
“onstat -g cdr” on page C-3
onstat -g que
Prints statistics that are common to all queues.
The queuer manages the logical aspects of the queue. The RQM (reliable queue
manager) manages the physical queue.
The -g que option is used primarily as a debugging tool and by Technical Support.
In the following example, Element high water mark shows the maximum size of
the transaction buffer header data (metadata) allowed in memory, shown in
kilobytes. Data high water mark shows the maximum size of transactions for user
data allowed in memory, shown in kilobytes.
onstat -g rcv
Prints statistics about the receive manager.
The receive manager is a set of service routines between the receive queues and
data sync.
The serverID modifier causes the command to print only those output messages
received from the replication server whose groupID is serverid. The full modifier
causes the command to print all statistics.
The onstat -g rcv command includes the Receive Manager global section. In this
section, the following fields have the meanings shown:
Field Description
cdrRM_DSParallelPL Shows the current level of Apply Parallelism, 0 (zero) being the highest
The onstat -g rcv command includes the Receive Parallelism Statistics section, a
summary of the data sync threads by source server.
Field Description
Server Source server ID
Tot.Txn. Total number of transactions applied from this source server
Pending Number of current transactions in the pending list for this source server
Active Number of current transactions currently being applied from this source
server
MaxPnd Maximum number of transactions in the pending list queue
MaxAct Maximum number of transaction in the active list queue
AvgPnd Average depth of the pending list queue
AvgAct Average depth of the active list queue
CommitRt Commit rate of transaction from this source server based on transactions
per second
The Statistics by Source section of the onstat -g rcv command shows the following
information for each source server. For each replicate ID:
v The number of transactions applied from the source servers
v The number of inserts, deletes, and updates within the applied transactions
v The timestamp of the most recently applied transaction on the target server
v The timestamp of the commit on the source server for the most recently applied
transaction
The -g rcv option is used primarily as a debugging tool and by Technical Support.
If you suspect that acknowledgment messages are not being applied, you can use
this option to check.
The following example shows output for the onstat -g rcv full command.
Receive Manager global block 0D452018
cdrRM_inst_ct: 5
cdrRM_State: 00000000
cdrRM_numSleepers: 3
cdrRM_DsCreated: 3
cdrRM_MinDSThreads: 1
cdrRM_MaxDSThreads: 4
cdrRM_DSBlock 0
cdrRM_DSParallelPL 0
cdrRM_DSFailRate 0.000000
cdrRM_DSNumRun: 35
cdrRM_DSNumLockTimeout 0
cdrRM_DSNumLockRB 0
cdrRM_DSNumDeadLocks 0
cdrRM_DSNumPCommits 0
cdrRM_ACKwaiting 0
cdrRM_totSleep: 77
cdrRM_Sleeptime: 153
cdrRM_Workload: 0
Statistics by Source
Server 1
Repl Txn Ins Del Upd Last Target Apply Last Source Commit
65541 23 0 1 616 2010/09/08 14:20:15 2010/09/08 14:20:15
65542 11 0 0 253 2010/09/08 14:19:33 2010/09/08 14:19:33
65545 1 0 67 0 2010/09/08 14:20:37 2010/09/08 14:20:37
Server 5
Repl Txn Ins Del Upd Last Target Apply Last Source Commit
65541 3 0 0 81 2010/09/08 16:36:10 2010/09/08 16:36:09
Server 6
Repl Txn Ins Del Upd Last Target Apply Last Source Commit
65548 6 0 0 42 2010/09/08 16:37:59 2010/09/08 16:37:58
Related reference
“onstat -g cdr” on page C-3
onstat -g rep
Prints events that are in the queue for the schedule manager.
The -g rep option is used primarily as a debugging tool and by Technical Support.
The repl_name modifier limits the output to those events originated by the replicate
named repl_name.
The following example shows sample output for the onstat -g rep command:
Schedule manager Cb: add7e18 State: 0x8100 <CDRINIT,CDRRUNNING>
onstat -g rqm
Prints statistics and contents of the low-level queues (send queue, receive queue,
ack send queue, sync send queue, and control send queue) managed by the
Reliable Queue Manager (RQM).
The RQM manages the insertion and removal of items to and from the various
queues. The RQM also manages spooling of the in-memory portions of the queue
to and from disk. The -g rqm option displays the contents of the queue, size of the
transactions in the queue, how much of the queue is in memory and on disk, the
location of various handles to the queue, and the contents of the various progress
tables. You can choose to print information for all queues or for just one queue by
using one of the modifiers described below.
Modifier Action
ACKQ Prints the ack send queue
CNTRLQ Prints the control send queue
RECVQ Prints the receive queue
SBSPACES Prints detailed statistical information about the sbspaces configured for
CDR_QDATA_SBSPACE.
SENDQ Prints the send queue
SYNCQ Prints the sync send queue
FULL Prints full information about every in-memory transaction for every queue
BRIEF Prints a brief summary of the number of transactions in each of the
queues and the replication servers for which the data is queued Use this
modifier to quickly identify sites where a problem exists. If large amounts
of data are queued for a single server, then that server is probably down
or off the network.
VERBOSE Prints all the buffer headers in memory
When you specify a modifier to select a specific queue, the command prints all the
statistics for that queue and information about the first and last in-memory
transactions for that queue. When you select the SBSPACES modifier, the
command prints information about the sbspaces being used for replication,
including how full those sbspaces are.
The other modifiers of the onstat -g rqm command are used primarily as a
debugging tool and by Technical Support.
The output for the SENDQ modifier contains the following sections:
The following example shows output for the onstat -g rqm SENDQ command.
> onstat -g rqm SENDQ
Progress Table:
Progress Table is Stable
On-disk table name............: spttrg_send
Flush interval (time).........: 30
Time of last flush............: 1207866706
Flush interval (serial number): 1000
Serial number of last flush...: 1
Current serial number.........: 5
Blocked:DDR
In this example, the sbspaces are all either full or nearly full.
Related reference
“onstat -g cdr” on page C-3
onstat -g sync
Prints statistics about the active synchronization process.
The following example shows output for the onstat -g sync command.
Prim Sync St. Shadow Flag Stat Block EndBlk
Repl Source Repl Num Num
Output Description
Prim Repl
Replicate number of the replicate being synchronized
Sync Source
Source server of the sync
St Sync replicate state
Shadow Repl
The shadow replicate used to perform the sync
Flag Internal flags:
v 0x02 = external sync
v 0x04 = shutdown request has been issued
v 0x08 = abort has occurred
v 0x010 = a replicate stop has been requested
v 0X020 = shadow or primary replicate has been deleted
Stat Resync job state
Block num
Last block applied on targets (on source always 0)
EndBlock Num
Last block in resync process. Marks the end of the sync scan on the target.
A value of' -2 indicates that the scan is still in progress, and the highest
block number is not yet known.
onstat -k
Prints information about active locks.
In the following output, the number 2 in the last row shows an Enterprise
Replication pseudo lock:
Locks
address wtlist owner lklist type tblsnum rowid key#/bsiz
a197ff8 0 5c2db4a8 0 S 100002 204 0
a198050 0 5c2db4a8 a197ff8 S 100002 205 0
a198260 0 5c2f2248 0 S 100002 204 0
a198470 0 5c2e6b78 a198520 S 100002 205 0
a198520 0 5c2e6b78 0 S 100002 204 0
a1986d8 0 5c2ec6e0 a198ba8 S 100002 205 0
a198ba8 0 5c2ec6e0 0 S 100002 204 0
a1993e8 0 5c2f03d0 a19be30 S 2 1c05a 0
Related reference
“cdr stats check” on page A-124
“cdr stats sync” on page A-127
The RQM manages the insertion and removal of items to and from the various
queues. The RQM also manages spooling of the in-memory portions of the queue
to and from disk.
The progress tables keep track of what data has been sent to which servers and
which servers have acknowledged receipt of what data. Enterprise Replication uses
the transaction keys and stamps to keep track of this information.
The progress table is two dimensional. For each server to which Enterprise
Replication sends data, the progress tables keep progress information on a
per-replicate basis.
When a replication server receives replicated data from a source database server, it
puts this data on the receive queue for processing. On the target side, Enterprise
Replication picks up transactions from this queue and applies them on the target.
When a replication server receives replicated data from a source database server, it
puts the data in the receive queue and then applies the transactions on the target.
Although not directly connected, a nonroot server is similar to a root server except
it forwards all replicated messages through its parent (root) server. All nonroot
servers are known to all root servers and other nonroot servers. A nonroot server
can be a terminal point in a tree or it can be the parent for another nonroot server
or a leaf server. Nonroot and root servers are aware of all replication servers in the
replication environment, including all the leaf servers.
A leaf server is a nonroot server that has a partial catalog. A leaf server has
knowledge only of itself and its parent server. It does not contain information
about replicates of which it is not a participant. The leaf server must be a terminal
point in a replication hierarchy.
Related concepts
“Hierarchical Routing Topology Terminology” on page 3-15
The name of each table that describes an Enterprise Replication queue is composed
of the following three pieces:
v syscdr, which indicates that the table describes Enterprise Replication
v An abbreviation that indicates which queue the table describes
v A suffix, either _buf or _txn, which specifies whether the table includes buffers
or transactions
Selecting from these tables provides information about the contents of each queue.
For example, the following SELECT statement returns a list of all transactions
queued on the send queue:
SELECT * FROM syscdrsend_txn
The following example returns a list of all transactions queued on the in-memory
send queue and returns the number of buffers and the size of each buffer for each
transaction on the send queue:
SELECT cbkeyserverid,cbkeyid,cbkeypos,count(*),sum(cbsize)
from syscdrsend_buf
group by cbkeyserverid, cbkeyid, cbkeypos
order by cbkeyserverid, cbkeyid, cbkeypos
Each queue is two-dimensional. Every queue has a list of transaction headers. Each
transaction header in turn has a list of buffers that belong to that transaction.
The ctstamp1 and ctstamp2 columns combine to form the primary key for these
tables.
The following columns combine to form the primary key for this table:
cbkeyserverid, cbkeyid, cbkeypos, cbkeysequence.
The columns cbkeyserverid, cbkeyid, and cbkeypos form a foreign key that points
to the transaction in the _txn table that the buffer represents.
For information about database server groups, see “Database Server Groups” on
page 4-2.
UNIX Only
The UNIX sqlhosts file for each database server contains the following
connectivity information.
g_usa group - - i=1
usa ontlitcp s1 techpubs1 g=g_usa
g_italy group - - i=8
italy ontlitcp s2 techpubs2 g=g_ital
g_japan group - - i=6
japan ontlitcp s3 techpubs6 g=g_japan
Windows Only
See Appendix G, “SQLHOSTS Registry Key (Windows),” on page G-1 for
information on how to prepare the SQLHOSTS connectivity information
using the information shown in the above UNIX sqlhosts file.
You must create an sbspace for the row data and set the CDR_QDATA_SBSPACE
parameter to the location of that sbspace. For more information, see “Setting Up
Send and Receive Queue Spool Areas” on page 4-8 and “CDR_QDATA_SBSPACE
Configuration Parameter” on page B-6.
All commands in this example, except for creation of the sample databases on italy
and japan, are issued from the computer s1.
The databases for the examples in this chapter are identical stores_demo databases
with logging, as follows:
v Create a database named stores on the usa database server:
s1> dbaccessdemo -log stores
v Create a database named stores on the italy database server:
For information on preparing data for replication, see “Data Preparation Example”
on page 4-23.
Primary-Target Example
This is a simple example of primary-target replication.
In this example, define the g_usa and g_italy database server groups as Enterprise
Replication servers and create a replicate, repl1.
Tip: In all options except the --connect option, Enterprise Replication uses the
name of the database server group to which a database server belongs, instead
of the name of the database server itself.
4. Verify that the second definition succeeded:
cdr list server
The command returns the following information:
Now you can modify the manufact table on the usa database server and see the
change reflected in the manufact table on the italy database server.
In repl1, usa is the primary database server and italy is the target. Changes made
to the manufact table on italy do not replicate to usa.
Update-Anywhere Example
This example builds on the primary-target example and creates a simple
update-anywhere replication.
REPLICATE: repl2
STATE: Inactive
CONFLICT: Ignore
FREQUENCY: immediate
QUEUE SIZE: 0
PARTICIPANT: g_usa:informix.stock
g_italy:informix.manufact
Although this output shows that repl2 exists, it does not show the participant
modifiers (the SELECT statements) for repl2.
3. Display the participant modifiers for repl2:
cdr list replicate repl2
This command returns the following information:
REPLICATE TABLE SELECT
------------------------------------------------------------
repl2 stores@g_usa:informix.stock select * from stock
repl2 stores@g_italy:informix.stock select * from stock
4. Add the japan database server to the replication system already defined in the
previous example:
cdr define server --connect=japan --init \
--sync=g_usa g_japan
You can use either g_usa or g_italy in the --sync option.
Enterprise Replication maintains identical information on all servers that
participate in the replication system. Therefore, when you add the japan
database server, information about that server is propagated to all
previously-defined replication servers (usa and italy).
5. Display the replication servers so that you can verify that the definition
succeeded:
cdr list server
The command returns the following information:
SERVER ID STATE STATUS QUEUE CONNECTION CHANGED
----------------------------------------------------------
g_italy 8 Active Connected 0 JUN 14 14:38:44 2000
g_japan 6 Active Connected 0 JUN 14 14:38:44 2000
g_usa 1 Active Local 0
6. Add the participant and participant modifier to repl2:
cdr change replicate --add repl2 \
"stores@g_japan:informix.stock" "select * from stock"
7. Display detailed information about repl2 after adding the participant in step 6:
cdr list replicate repl2
The command returns the following information:
REPLICATE TABLE SELECT
------------------------------------------------------------
repl2 stores@g_usa:informix.stock select * from stock
repl2 stores@g_italy:informix.stock select * from stock
repl2 stores@g_japan:informix.stock select * from stock
8. Make the replicate active:
cdr start repl2
9. Display a list of replicates so that you can verify that the STATE of repl2 has
changed to ACTIVE:
REPLICATE: repl2
STATE: Active
CONFLICT: Ignore
FREQUENCY: immediate
QUEUE SIZE: 0
PARTICIPANT: g_usa:informix.stock
g_italy:informix.manufact
g_japan:informix.manufact
Now you can modify the stock table on one database server and see the change
reflected on the other database servers.
To cause a replication
1. Use DB-Access to insert a line into the stock table on usa:
INSERT INTO stores@usa:stock VALUES (401, “PRC”, “ski boots”, 200.00,
“pair”, “pair”);
2. Observe the change on the italy and japan database servers:
SELECT * from stores@italy:stock;
SELECT * from stores@japan:stock;
Hierarchy Example
This example adds a replication tree to the fully-connected environment of the usa,
italy, and japan replication servers.
The nonroot servers boston and denver are children of usa. (The leaf server miami
is a child of boston.) Figure F-1 on page F-7 shows the replication hierarchy.
japan usa
root root
denver boston
nonroot nonroot
miami
leaf
To try this example, you need to prepare three additional database servers: boston,
denver, and miami. To prepare the database servers, use the techniques described
in “Replication Example Environment” on page F-1.
To define a hierarchy
1. Add boston to the replication hierarchy as a nonroot server attached to the root
server usa:
cdr define server --connect=boston --nonroot --init \
--sync g_usa g_boston
The backslash (\) indicates that the command continues on the next line.
2. Add denver to the replication hierarchy as a nonroot server attached to the
root server usa:
cdr define server -c denver -I -N --ats=/ix/myats \
-S g_usa g_denver
This command uses short forms for the connect, init, and sync options. (For
information about the short forms, refer to “Option Abbreviations” on page
A-2.) The command also specifies a directory for collecting information about
failed replication transactions, /ix/myats.
3. List the replication servers as seen by the usa replication server:
cdr list server
The root server usa is fully connected to all the other root servers. Therefore
usa knows the connection status of all other root servers and of its two child
servers, denver and boston. The command returns the following information:
SERVER ID STATE STATUS QUEUE CONNECTION CHANGED
-----------------------------------------------------------
g_boston 3 Active Connected 0 Aug 19 14:20:03 2000
g_denver 27 Active Connected 0 Aug 19 14:20:03 2000
g_italy 8 Active Connected 0 Aug 19 14:20:03 2000
g_japan 6 Active Connected 0 Aug 19 14:20:03 2000
g_usa 1 Active Local 0
4. List the replication servers as seen by the denver replication server:
cdr list server --connect=denver
When you install the database server, the setup program creates the following key
in the Windows registry:
HKEY_LOCAL_MACHINE\SOFTWARE\INFORMIX\SQLHOSTS
Each computer that hosts a database server or a client must include the
connectivity information either in the sqlhosts registry key or in a central registry.
When the client application runs on the same computer as the database server,
they share a single sqlhosts registry key.
For example, to set up replication between the server instance srv1 on the
computer host1 and the server instance srv2 on host2, you must ensure the
following:
v Both host1 and host2 include SQLHOSTS registry key entries for srv1 and srv2.
v The services file on both computers includes the details of the services used by
both database server instances.
If you specify a shared sqlhosts registry key, you must set the environment
variable INFORMIXSQLHOSTS on your local computer to the name of the
You must comply with Windows network-access conventions and file permissions
to ensure that the local computer has access to the shared sqlhosts registry key. For
information about network-access conventions and file permissions, see your
Windows documentation.
See the online help for ISA for details on setting up the SQLHOSTS registry key
and database server group registry key.
Important: Use extreme caution with regedit. If you make mistakes when editing
the registry, you can destroy the configurations, not only of your IBM Informix
products, but of your other applications.
For example, a database server named iris_112 could have a key under the
SQLHOSTS key with the following values:
v HOST: iris
v OPTIONS: g=g_iris
v PROTOCOL: onsoctcp
v SERVICE: techpubs27
In this manual, each of the names of the database server groups are the database
server names prefixed by g_. The g_ prefix is not a requirement; it is just the
convention that this manual uses.
A key for the database server iris_112 would appear both directly under
SQLHOSTS and under g_iris:
SQLHOSTS
iris_112
g_iris
iris_112
Related concepts
“Database Server Groups” on page 4-2
You cannot suppress code 0, DSROWCOMMITTED, which indicates that the row
was committed, or code 1, DSEROW, which indicates that an error occurred.
Accessibility features
The following list includes the major accessibility features in IBM Informix
products. These features support:
v Keyboard-only operation.
v Interfaces that are commonly used by screen readers.
v The attachment of alternative input and output devices.
Tip: The information center and its related publications are accessibility-enabled
for the IBM Home Page Reader. You can operate all features by using the keyboard
instead of the mouse.
Keyboard navigation
This product uses standard Microsoft Windows navigation keys.
You can view the publications in Adobe Portable Document Format (PDF) by using
the Adobe Acrobat Reader.
In dotted decimal format, each syntax element is written on a separate line. If two
or more syntax elements are always present together (or always absent together),
the elements can appear on the same line, because they can be considered as a
single compound syntax element.
Each line starts with a dotted decimal number; for example, 3 or 3.1 or 3.1.1. To
hear these numbers correctly, make sure that your screen reader is set to read
punctuation. All syntax elements that have the same dotted decimal number (for
example, all syntax elements that have the number 3.1) are mutually exclusive
The dotted decimal numbering level denotes the level of nesting. For example, if a
syntax element with dotted decimal number 3 is followed by a series of syntax
elements with dotted decimal number 3.1, all the syntax elements numbered 3.1
are subordinate to the syntax element numbered 3.
Certain words and symbols are used next to the dotted decimal numbers to add
information about the syntax elements. Occasionally, these words and symbols
might occur at the beginning of the element itself. For ease of identification, if the
word or symbol is a part of the syntax element, the word or symbol is preceded by
the backslash (\) character. The * symbol can be used next to a dotted decimal
number to indicate that the syntax element repeats. For example, syntax element
*FILE with dotted decimal number 3 is read as 3 \* FILE. Format 3* FILE
indicates that syntax element FILE repeats. Format 3* \* FILE indicates that
syntax element * FILE repeats.
The following words and symbols are used next to the dotted decimal numbers:
? Specifies an optional syntax element. A dotted decimal number followed
by the ? symbol indicates that all the syntax elements with a
corresponding dotted decimal number, and any subordinate syntax
elements, are optional. If there is only one syntax element with a dotted
decimal number, the ? symbol is displayed on the same line as the syntax
element (for example, 5? NOTIFY). If there is more than one syntax element
with a dotted decimal number, the ? symbol is displayed on a line by
itself, followed by the syntax elements that are optional. For example, if
you hear the lines 5 ?, 5 NOTIFY, and 5 UPDATE, you know that syntax
elements NOTIFY and UPDATE are optional; that is, you can choose one or
none of them. The ? symbol is equivalent to a bypass line in a railroad
diagram.
! Specifies a default syntax element. A dotted decimal number followed by
the ! symbol and a syntax element indicates that the syntax element is the
default option for all syntax elements that share the same dotted decimal
number. Only one of the syntax elements that share the same dotted
decimal number can specify a ! symbol. For example, if you hear the lines
2? FILE, 2.1! (KEEP), and 2.1 (DELETE), you know that (KEEP) is the
default option for the FILE keyword. In this example, if you include the
FILE keyword but do not specify an option, default option KEEP is applied.
A default option also applies to the next higher dotted decimal number. In
this example, if the FILE keyword is omitted, default FILE(KEEP) is used.
Notes:
1. If a dotted decimal number has an asterisk (*) next to it and there is
only one item with that dotted decimal number, you can repeat that
same item more than once.
2. If a dotted decimal number has an asterisk next to it and several items
have that dotted decimal number, you can use more than one item
from the list, but you cannot use the items more than once each. In the
previous example, you can write HOST STATE, but you cannot write HOST
HOST.
3. The * symbol is equivalent to a loop-back line in a railroad syntax
diagram.
+ Specifies a syntax element that must be included one or more times. A
dotted decimal number followed by the + symbol indicates that this syntax
element must be included one or more times. For example, if you hear the
line 6.1+ data-area, you must include at least one data area. If you hear
the lines 2+, 2 HOST, and 2 STATE, you know that you must include HOST,
STATE, or both. As for the * symbol, you can repeat a particular item if it is
the only item with that dotted decimal number. The + symbol, like the *
symbol, is equivalent to a loop-back line in a railroad syntax diagram.
IBM may not offer the products, services, or features discussed in this document in
other countries. Consult your local IBM representative for information on the
products and services currently available in your area. Any reference to an IBM
product, program, or service is not intended to state or imply that only that IBM
product, program, or service may be used. Any functionally equivalent product,
program, or service that does not infringe any IBM intellectual property right may
be used instead. However, it is the user's responsibility to evaluate and verify the
operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter
described in this document. The furnishing of this document does not grant you
any license to these patents. You can send license inquiries, in writing, to:
For license inquiries regarding double-byte (DBCS) information, contact the IBM
Intellectual Property Department in your country or send inquiries, in writing, to:
The following paragraph does not apply to the United Kingdom or any other
country where such provisions are inconsistent with local law: INTERNATIONAL
BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS"
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
PURPOSE. Some states do not allow disclaimer of express or implied warranties in
certain transactions, therefore, this statement may not apply to you.
Licensees of this program who wish to have information about it for the purpose
of enabling: (i) the exchange of information between independently created
programs and other programs (including this one) and (ii) the mutual use of the
information which has been exchanged, should contact:
IBM Corporation
J46A/G4
555 Bailey Avenue
San Jose, CA 95141-1003
U.S.A.
The licensed program described in this document and all licensed material
available for it are provided by IBM under terms of the IBM Customer Agreement,
IBM International Program License Agreement or any equivalent agreement
between us.
All statements regarding IBM's future direction or intent are subject to change or
withdrawal without notice, and represent goals and objectives only.
All IBM prices shown are IBM's suggested retail prices, are current and are subject
to change without notice. Dealer prices may vary.
This information is for planning purposes only. The information herein is subject to
change before the products described become available.
This information contains examples of data and reports used in daily business
operations. To illustrate them as completely as possible, the examples include the
names of individuals, companies, brands, and products. All of these names are
fictitious and any similarity to the names and addresses used by an actual business
enterprise is entirely coincidental.
COPYRIGHT LICENSE:
Each copy or any portion of these sample programs or any derivative work, must
include a copyright notice as follows:
© (your company name) (year). Portions of this code are derived from IBM Corp.
Sample Programs.
© Copyright IBM Corp. _enter the year or years_. All rights reserved.
If you are viewing this information softcopy, the photographs and color
illustrations may not appear.
Trademarks
IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of
International Business Machines Corp., registered in many jurisdictions worldwide.
Other product and service names might be trademarks of IBM or other companies.
A current list of IBM trademarks is available on the web at "Copyright and
trademark information" at http://www.ibm.com/legal/copytrade.shtml.
Adobe, the Adobe logo, and PostScript are either registered trademarks or
trademarks of Adobe Systems Incorporated in the United States, and/or other
countries.
Java and all Java-based trademarks and logos are trademarks or registered
trademarks of Oracle and/or its affiliates.
UNIX is a registered trademark of The Open Group in the United States and other
countries.
Notices J-3
J-4 IBM Informix Enterprise Replication Guide
Index
Special characters --force option
cdr delete server A-75
--ackq option --foreground option
cdr stats rqm A-120 cdr realize template A-99
--add option --fullrow option 6-8
cdr change replicate 7-6, A-30 cdr modify replicate A-95
cdr change replicateset 7-9, A-33 --idle option
--all option cdr define server 6-2, A-64
cdr define template A-68 cdr modify server A-97
cdr error A-80 --ignoredel option A-95
--applyasowner option 6-14 --immed option 6-7, A-26
cdr realize template A-99 --init option 6-1
--at option 6-7, A-26 cdr define server A-64
time formats A-25 --leaf option 6-2
--ats option 6-2, 6-8, 8-4 cdr define server A-64
cdr define server A-64 --master option 6-4
cdr modify replicate A-95 cdr define template A-68
cdr modify server A-97 --memadjust option
--autocreate option cdr realize template A-99
cdr change replicate A-30 cdr sync replicate A-142, A-146
cdr realize template 6-14, A-99 --mirrors option 6-6
--blocksize option --name option 6-5
cdr define repair A-50 cdr modify replicate A-93
--check option --nonroot option 6-2
cdr repair A-107 cdr define server A-64
--cntrlq option --off option
cdr stats rqm A-120 cdr alter A-29
--conflict option 6-7 --on option
--connect option cdr alter A-29
and database server name 6-1 --optimize option 6-7
connecting to another replication server 7-3 --primaryid option A-141
--database option cdr swap shadow A-141
cdr define template A-68 --primaryname option A-141
--dbspace option 6-14 cdr swap shadow A-141
cdr realize template A-99 --prune option
--delete option 7-6, 7-9 cdr error A-80
cdr change replicate A-30 --quiet option
cdr change replicateset A-33 cdr repair A-107
--empty option 6-5 --recvq option
--every option 6-7, A-26 cdr stats rqm A-120
--exclusive option 6-10 --replicate option
cdr define replicateset A-62 cdr define repair A-50
cdr define template A-68 --replset option
--extratargetrows option 6-12 cdr define repair A-50
cdr check replicate A-34 --ris option 6-8, 8-4
cdr check replicateset A-43 cdr define server A-64
cdr define repair A-50 cdr modify replicate A-95
cdr realize template A-99 cdr modify server A-97
cdr start replicate A-116 --sendq option
cdr start replicateset A-118 cdr stats rqm A-120
cdr sync replicate A-142 --seq option
cdr sync replicateset A-146 cdr error A-80
--file option 6-13 --shadowid option A-141
cdr define template A-68 cdr swap shadow A-141
--filter option 7-19 --shadowname option A-141
cdr define repair A-50 cdr swap shadow A-141
--firetrigger option 6-10 --sync option 6-2
cdr modify replicate A-95 cdr define server A-64
cdr sync replicateset A-34, A-43, A-142, A-146 --syncdatasource option 6-12, 6-14
--floatcanon option 6-9 cdr check replicateset A-50
--follow option cdr delete repair A-71
cdr error A-80
Index X-3
cdr modify replicate (continued) cdr suspend replicateset
restrictions A-94 examples A-138
syntax A-93 suspending replicates in a replicate set 7-11
cdr modify replicateset syntax A-138
changing replication frequency 7-10 cdr suspend server
examples A-97 examples A-112, A-139
syntax A-96 suspending replication of data to the server 7-4
cdr modify server syntax A-139
--mode option A-97 cdr swap shadow 6-6, 7-26, A-140
changing attributes of server 7-1 cdr sync replicate 7-14, A-142
examples A-97 cdr sync replicateset 7-14, A-146
options A-97 cdr view A-150
syntax A-97 CDR_ALARMS environment variable B-13
cdr realize template 1-5, 6-13 CDR_APPLY configuration parameter 4-13, B-1
options A-99 CDR_ATSRISNAME_DELIM environment variable B-14
syntax A-99 CDR_DBSPACE configuration parameter 4-13, B-2
CDR record type 6-8 CDR_DISABLE_SPOOL environment variable B-14
cdr remaster 7-25 CDR_DSLOCKWAIT configuration parameter B-2
option A-104 CDR_ENV configuration parameter B-2
syntax A-104 CDR_EVALTHREADS configuration parameter B-4
cdr remove onconfig 7-1, A-105 CDR_LOGDELTA environment variable B-15
cdr repair 7-20, A-107 CDR_MAX_DYNAMIC_LOGS configuration parameter 8-15,
options A-107 B-4
cdr resume replicate CDR_NIFCOMPRESS configuration parameter B-5, B-6
examples A-109 CDR_PERFLOG environment variable B-15
resuming a suspended replicate to active 7-8 CDR_QDATA_SBSPACE configuration parameter 4-9, 4-13,
syntax A-109 6-1, B-6
cdr resume replicateset 7-11, A-110 CDR_QHDR_DBSPACE configuration parameter 4-8, 4-13,
cdr resume server 7-4, A-111 B-7
cdr start CDR_QUEUEMEM configuration parameter 4-8, 4-13, B-7
examples A-113 CDR_RMSCALEFACT environment variable B-15
restarting on a stopped server 7-4 CDR_ROUTER environment variable B-15
syntax A-112 CDR_SERIAL configuration parameter 4-13, B-8
cdr start repair 7-18, A-113 CDR_SUPPRESS_ATSRISWARN configuration parameter B-9
cdr start replicate 4-23, 6-12 cdrerr.h file A-81
changing replicate state to active 7-7 cdrserver shadow column 2-6, 4-7, 4-16
options A-115 behavior with BEGIN WORK WITHOUT
syntax A-114 REPLICATION 4-15
cdr start replicateset 6-12 cdrserver 2-13
changing state of all replicates in a replicate set to CDRSITES_10X environment variable B-16
active 7-10 CDRSITES_731 environment variable B-17
options A-118 CDRSITES_92X environment variable B-18
syntax A-117 cdrtime shadow column 2-6, 4-7, 4-16
cdr stats check A-124 behavior with BEGIN WORK WITHOUT
cdr stats recv REPLICATION 4-15
syntax A-123 Enterprise Replication recording value of 2-13
cdr stats rqm A-120 Central registry
options A-120 SQLHOSTS G-1
cdr stats sync A-127 Changing
cdr stop column information
examples A-131 in ATS files 8-11
stopping capture of data 7-3 columns, replicating 6-8
syntax A-131 Child database server 3-15
cdr stop repair 7-19, A-132 Choosing a replication network topology 3-14
cdr stop replicate Chunks
examples A-133 adding to
stopping a replicate 7-7 storage spaces 8-17
syntax A-133 Cipher
cdr stop replicateset encryption B-10
examples A-136 CLOB type
stopping replicates in a replicate set 7-10 ATS files 8-11
syntax A-135 spooled row data 4-9
cdr suspend replicate Clock synchronization 4-14
examples A-137 CLU 1-4
halting processing for a replicate 7-8 Codeset conversion files 2-12
syntax A-136 Cold restores 2-5
Index X-5
Conflict resolution (continued) Data (continued)
rules (continued) distributing 1-12
time stamp 3-7, 6-7 inconsistent 2-14
time synchronization 3-7, 3-12 integrity 6-5
valid combinations 3-6 loading 4-21
scope maintaining consistency 1-3
changing 7-6 preparing 4-15
options A-53 repair 7-13
row 3-14, 6-7 synchronization 7-13
specifying 6-7 unloading 4-21
transaction 3-14, 6-7 Data delivery
shadow columns 2-13 suspending
simple large objects 2-13 for replicate sets A-138
specifying options A-53 for replicates A-136
support for UDRs 3-8 for replication servers A-139
time stamp 2-13 Data dissemination model, defined 3-1
timestamp 4-14 Data propagation, considerations for asynchronous 2-4
transactional integrity 3-14 Data replication
triggers 2-8 asynchronous, defined 1-1
update-anywhere 3-4 capture mechanisms
Conflicts, and asynchronous propagation 2-4 log-based data capture 1-2
Connecting to a database server A-50 trigger-based data capture 1-2
CONNECTION CHANGED column, cdr list server trigger-based transaction capture 1-2
output A-88 defined 1-1
Connection status, replication servers A-89 synchronous, defined 1-1
Considerations Data sync row-specific errors H-1
distributed transactions 2-10 Data sync threads
large transactions 2-10 setting CDR_APPLY B-1
memory use C-1 Data types
planning to use Enterprise Replication 2-4 BIGSERIAL 2-7
primary-target replication systems 3-4 built-in 1-4
replicating extensible 2-16
changed columns only 6-8 FLOAT 6-9
extensible data types 2-16 floating-point 2-13
replication SERIAL 2-7
volume 2-9 SERIAL and SERIAL8 2-12
SPL routines for conflict resolution 3-8 SERIAL8 2-7
transaction processing 2-9 SMALLFLOAT 6-9
Consistency support for 2-15
ensuring 4-15 supported 2-12
Consistency checking 7-15 user-defined 1-4
improving performance 7-18 user-defined. 2-15
preparing tables for 4-18 Data-consolidation model, defined 3-2
Consistency report 7-15 Database server groups 4-2
Consolidation replication. 3-1 HDR, defining for 5-5
Constraints 2-7, 2-9, 3-14, 6-7, 6-12 registry key G-3
Conventions SQLHOSTS file 4-2
ATS files 8-5 usage 6-1
command-line utility A-1 Windows 4-2
CREATE TABLE statement 4-17, 4-18 Database servers
Creating aliases 4-2
databases with unbuffered logging 2-5 connecting to A-50
replicate sets 6-10 declaring for Enterprise Replication 6-1
row data sbspace 4-9 disconnecting from A-78
Creating templates 1-5, 6-13 listing A-88
Cross-replication, between simple large objects and smart large preparing environment 4-13
objects 2-14 removing from Enterprise Replication A-74
Customizing specifying type 6-2
replicate sets 6-11 starting 6-1
replicates 6-3 Databases
replication server definition 6-2 considerations
backing up 2-5
restoring 2-5
D creating
with unbuffered logging 2-5
Data
designing, considerations 2-5
applying 1-12
locking 2-10
capture types 1-2
Index X-7
Enterprise Replication (continued) Errors (continued)
data types 2-12 replication server status A-89
database server groups for HDR 5-5 return codes A-8
default behavior 6-8 table
defined 1-1 managing A-79
deleting and recreating objects 2-4 ESQL/C, BEGIN WORK WITHOUT REPLICATION 4-17
displaying statistics A-120, A-123 Evaluating
encryption, configuring 4-13 data
event alarms 8-21 for replication 1-7
flexible architecture 1-4 data, examples of 1-10
high availability 1-2 rows 1-7, 1-8
managing 2-1 Event alarm 8-21
mixed-version environments 2-12 Event alarms
performance 1-2 enabling 8-36
process for replicating data 1-6 Examples
queues E-16 adding replicates to replicate sets 7-9
role of logical log files 2-5 ATS file names 8-5
server BEGIN WORK WITHOUT REPLICATION 4-16, 4-17
administrator 2-1 BYTE and TEXT data
defined 2-2 in ATS and RIS files 8-13
definitions in global catalog 2-3 cdr delete replicateset A-73
starting A-112 collision 1-12
stopping A-131 DB-Access 4-16
supported database servers 2-4 defining replicate sets 6-11
synonyms 2-4 deleting
terminology 2-2 replicates 7-9
threads replicates from replicate sets 7-10
list of C-1 replication servers 7-5
restarting 7-4 evaluating data 1-10
stopping 7-3 hierarchy F-6
using Global Language Support 2-12 non-exclusive replicate sets 6-11
views 2-4 participant definition 6-3
Environment preparing data for replication 4-23
database server, preparing 4-13 primary-target F-2
network replication F-1, F-8
preparing 4-1 replication environment F-1
testing 4-5 resuming
Environment variables replicates 7-8
CDR_ALARMS B-13 replication servers 7-4
CDR_ATSRISNAME_DELIM B-14 RIS file names 8-5
CDR_DISABLE_SPOOL B-14 services file 4-2
CDR_LOGDELTA B-15 set A-119
CDR_PERFLOG B-15 stopping
CDR_RMSCALEFACT B-15 replicates 7-8
CDR_ROUTER B-15 suspending
CDRSITES_10X B-16 replicates 7-8
CDRSITES_731 B-17 replication 7-4
CDRSITES_92X B-18 unloading shadow columns 4-21
Event alarms update-anywhere F-4
enabling B-13 updating shadow columns 4-16
INFORMIXDIR 4-13 using ESQL/C 4-17
INFORMIXSERVER 4-13, 6-1, 7-3 Exclusive lock 2-10
INFORMIXSQLHOSTS 4-13, G-1 Exclusive replicate sets
setting 4-13 --exclusive option 6-10, A-62, A-68
TZ A-25 adding replicates to 7-9
viewing Enterprise Replication settings C-4 characteristics of 6-10
equal support function 2-15 defined 6-10
EREKY shadow columns A-104 referential constraints 6-7
ERKEY shadow columns A-30, A-53 resuming replicates 7-8
Errors starting replicates 7-7
data sync row-specific H-1 stopping replicates 7-7
interpreting return codes A-81 suspending replicates 7-8
logging Extended data types
changing 7-6 support for 2-15
setting up 6-8
message files
cdrerr.h A-81
G
Global catalog I
contents of 2-3 IBM Informix Server Administrator 1-4
defined 2-3 setting up SQLHOSTS registry G-2
leaf servers 2-4 ID column, cdr list server output A-88
synchronizing 6-2 Identifier A-3
Global Language Support (GLS) Idle timeout
locale of date A-25 modifying 7-1
support of 1-4 setting 6-2
using with Enterprise Replication 2-12 specifying A-64
GLS. 1-4 IEEE floating point format 6-9, A-53
greaterthan support function 2-15 ifx_replcheck shadow column 2-6, 4-7, 7-18
Grouper 7-26 Ignore conflict resolution rule 3-6
Grouper paging file, setting up 4-11 Ignore conflict-resolution rule 3-7, 6-7
Groups 4-2 database action 3-7
Guidelines for configuring logical log files 4-6
Index X-9
In-place alters Logging (continued)
ADD and DROP CRCOLS 4-17 errors 6-8
ADD and DROP REPLCHECK 4-18 unbuffered 2-5, 4-19
Inactive state A-82 LOGGING configuration parameter 4-9
defined 7-7 Logging mode, for spooled row data sbspaces 4-10
Inconsistent data with blobspaces or sbspaces 2-14 Logical log
Increasing storage space size 8-17 files 4-6
industry standards xix and maximum transaction size 4-6
Information consistency, update-anywhere 3-4 bitmap information about updated columns 6-8
informix user 2-1 capacity planning 4-6
Informix-Admin group, Windows 2-1 configuration guidelines 4-6
INFORMIXDIR environment variable 4-13 determining size 4-6
INFORMIXSERVER environment variable 4-13, 6-1, 7-3 disk space, error 8-17
INFORMIXSQLHOSTS environment variable 4-13, G-1 dynamically adding 8-15
Initial synchronization 1-3, 2-9, 6-12 increasing size 8-14
Installing overwriting 8-15
UDTs 2-15 reading of 1-7
Instantiating templates 1-5, 6-13 role in Enterprise Replication 2-5
Integrity, data 6-5 size 4-6
Interval formats A-25 switching 4-6
Invalid sbspace 6-1 Logical Log Record reduction option, and Enterprise
IP address Replication 4-6
specifying in hosts file 4-1 Long identifiers A-3
LTXEHWM configuration parameter 4-6, C-6
LTXHWM configuration parameter 4-6, C-6
K
Keys
primary M
and constraints 2-7 Machine-independent format 6-9, A-53
and SERIAL data types 2-7 Maintaining consistency 1-3
and UDT columns 2-16 Managing
removing constraints 2-11 Enterprise Replication, overview 2-1
replicate sets 7-9
replicates 7-5, 7-9
L Manual remastering 6-6, 7-26
Manual repair 7-20
large objects
Many-to-one replication 3-1
SPL conflict resolution 3-11
Master replicates 6-4, 7-25
Large transactions
defined 2-2
grouper paging file 4-11
strict 6-5
Large transactions, considerations for Enterprise
Maximum transaction size, and logical log files 4-6
Replication 2-10
Memory queues
Leaf servers
preventing overflows 8-14
defined 3-15
Memory use considerations C-1
global catalog 2-3
Message authentication code files B-12
limited catalog 2-4
Message formats
specifying 6-2
canonical 6-9
lessthan support function 2-15
IEEE 6-9
Limitations, SPL conflict resolution 3-8
Message queues
Limited SQL statements 2-11
CDR_QUEUEMEM configuration parameter 4-8
LOAD statement 4-21, 4-23
defined 4-8
Loading data
planning disk space 4-8
ER servers 4-21
Mixed version environments 2-12
Local status, replication servers A-89
mode option, cdr modify server A-97
Locales
Modes
different 2-12
encryption B-10
Enterprise Replication 2-12
Modifying
specifying nondefault 2-12
primary-key constraint 2-11
Lock
replicate sets 7-9
monitoring with onstat -k C-21
templates 6-15
type codes C-21
Monitoring
Locking databases 2-10
dbspaces, onstat command 8-16
Locks, exclusive. 2-10
disk usage 8-16
Log-based data capture 1-2
sbspaces 8-16
Logging
oncheck command 8-16
aborted transactions 8-3
onstat command 8-16
databases, preparing 4-19
Multiple references to a smart large object 2-15
Index X-11
Options for Enterprise Replication (continued) Parameters, configuration (continued)
--recvq A-120 LOGGING 4-9
--replicate A-50 LTXEHWM 4-6, C-6
--replset A-50 LTXHWM 4-6, C-6
--ris 6-8, 8-4, A-64, A-95, A-97 ONCONFIG configuration parameter 4-8
--scope 6-7 Parameters, configuration
--sendq A-120 CDR_SUPPRESS_ATSRISWARN B-9
--seq A-80 setting in ONCONFIG file 2-7, 4-13
--shadowid A-141 Parent database server 3-15
--shadowname A-141 Parent-child
--sync 6-2, A-64 defined 3-15
--syncdatasource 6-12, 6-14, A-50, A-71, A-99, A-116, A-119 Participant definition
--target 6-15, A-99 contents 6-3
--verbose A-107 example 6-3
--verify 6-14, A-30, A-99 Participant modifiers
--zap A-80 defined A-5
-–repair A-34, A-43 restrictions 2-16
-–repl A-34 Participant type
-–replset A-43 changing 7-6
-–verbose A-34, A-43 default 6-3
—all A-34, A-43, A-142 Primary 6-3
—check A-150 Target 6-3
—delete A-150 Participants
—help A-150 adding to replicates 4-23, 7-6
—master A-34, A-43, A-142 changing mode A-94
—quiet A-150 defined 2-3, 6-1, A-5
—repair A-150 defining 6-3, A-5
—repeast A-150 deleting from replicates 7-6
—repl A-142 new 1-3, 6-12
—verbose A-150 primary option A-5
abbreviations A-2 receive-only option A-5
conflict resolution A-53 removing from replicates A-30
frequency A-25 specifying type A-5
order A-2 update-anywhere 6-3
primary A-5 Pathname
receive-only A-5 ATS and RIS directories 4-12
scope A-53 dbspaces 4-8
Out-of-row data, sharing during replication 2-15 sbspaces 4-9
Overflowing memory queues, preventing 8-14 Pending state, defined A-82
Overwriting logical log files 8-15 Performance
Owner, table 6-14 Enterprise Replication 1-2
Permitted SQL statements 2-11
Planning
P considerations 2-4
Port numbers
Parameters, configuration
services file 4-2
AVG_LO_SIZE 4-9
Preparing
CDR_APPLY 4-13, B-1
consistent data 4-15
CDR_DBSPACE 4-13, B-2
data for replication
CDR_DSLOCKWAIT B-2
defined 4-15
CDR_ENV B-2
example 4-23
CDR_EVALTHREADS B-4
database server environment 4-13
CDR_MAX_DYNAMIC_LOGS B-4
disk
CDR_NIFCOMPRESS B-5, B-6
Enterprise Replication 4-6
CDR_QDATA_SBSPACE 4-9, 4-13, 6-1, B-6
hosts file 4-1
CDR_QHDR_DBSPACE 4-8, 4-13, B-7
logging databases 4-19
CDR_QUEUEMEM 4-8, 4-13, B-7
network environment 4-1
CDR_SERIAL 4-13, B-8
Network environment
CDR_SUPPRESS_ATSRISWARN B-9
preparing 4-1
configuration B-1, B-13
services file 4-2
DBSERVERALIASES 4-13, B-1
SQLHOSTS connectivity information G-2
DBSERVERNAME 4-13, B-1
tables for conflict resolution 4-17
ENCRYPT_CDR B-10
UDR replication 4-17
ENCRYPT_CIPHERS B-10
UDT replication 4-17
ENCRYPT_MAC B-12
Preventing
ENCRYPT_MACFILE B-12
DDRBLOCK mode 8-15
ENCRYPT_SWITCH B-13
memory queues from overflowing 8-14
Enterprise Replication, dynamically changing 7-1
Index X-13
Replicates (continued) Replication systems (continued)
exclusive replicate sets 7-8 update-anywhere 3-4
starting 7-7, A-114 Replication topologies
exclusive replicate sets 7-7 forest of trees 3-17
STATE field A-82 fully-connected 3-15
stopping 7-7, A-133 hierarchical tree 3-16
exclusive replicate sets 7-7 terminology 3-15
suspending 7-8, A-136 Requirements
exclusive replicate sets 7-8 disk space
Timestamp conflict resolution rule A-82 delete tables 4-7
viewing properties 7-6 message queue spooling 4-8
Replicating shadow columns 4-7
changed columns only 6-8 Restores
extensible data types cold 2-5
considerations 2-16 warm 2-5
floating-point values 6-9 Restoring databases, considerations 2-5
multiple references to a smart large object 2-15 Resuming
simple large objects 2-13, 2-15 replicate sets 7-11
smart large objects 2-13, 2-15 suspended
table hierarchies 2-17 replicates 7-8
UDTs 2-15 replication servers 7-4
Replicating data Resynchronizing replication servers 7-20
capturing transactions 1-7 Return codes
evaluating defined A-8
row images 1-7 RIS files
process 1-6 activating A-53, A-64
Replicating only changed columns, advantages 6-8 capacity planning 4-12
Replication configuring 6-8
blocking 4-15 defined 8-3
choosing network topology 3-14 disabling generation 8-13
environment file names, defined 8-5
managing 2-1 modifying directory 7-1
examples F-1, F-8 preparing to use 8-4
frequency repair using 7-20
changing 7-6, 7-10 specifying directory A-64, A-97, A-107
replicate sets 6-11 role separation
specifying 6-7 preparing for replication 4-19
models root dbspace
primary-target 1-1 transaction records 4-8
update-anywhere 1-1 Root servers
order error, defined 1-12 defined 3-15
restarting 7-4 global catalog 2-3
stopping 7-3 Routines
suspending 7-4 application-specific 3-8
tree, illustrated 3-16 Row conflict resolution scope 3-7, 3-12, 3-14, 6-7, 8-3
volume 2-9 Row data
Replication failure 1-3 creating sbspace 4-9
Replication servers storage 4-8
connecting 7-3 Row Information Spooling. 3-7, 8-3
customizing 6-2 ROWID
defined 2-2 locking information C-21
defining 6-1, A-64 ROWIDS
deleting 7-5, A-74 adding and dropping 2-11
listing A-88 Rows
managing 7-1 replicating entire 6-8
modifying 7-1, 7-6, A-97 RQM. 4-8
resuming 7-4 RRD label, ATS files 8-11
resynchronizing 7-20 RRH label, ATS files 8-11
state, defined 7-1 RRS label, ATS files 8-11
suspending A-139 Rules 6-7
synchronizing 6-2 conflict resolution 3-6
troubleshooting 8-14 extensible data types 2-16
viewing attributes 7-3 large objects 3-11
Replication systems delete wins 3-12
high-availability 5-1 time stamp 3-7
primary-target 3-1, 3-4
supported by Enterprise Replication 3-1
Index X-15
Solving configuration problems 8-17 starts command 6-1
Source server, synchronization 6-12 STATE column, cdr list server output A-88
Specifying STATE field, cdr list replicate output A-82
ATS directory A-107 Statements
conflict resolution ALTER TABLE 4-17, 4-18
rules 6-7 BEGIN WORK WITHOUT REPLICATION 4-15
scope 6-7 CREATE TABLE 4-17, 4-18
database server type 6-2 DROP CRCOLS 4-17
default behavior for smart large objects 4-9 DROP REPLCHECK 4-18
location LOAD 4-21, 4-23
ATS directory 6-2 RENAME COLUMN 7-24
replication frequency 6-7 RENAME TABLE 7-24
RIS directory A-107 SELECT 4-21
SPL conflict resolution SQL, supported 2-10
limitations 3-8 TRUNCATE 7-15
rule 3-6, 3-8, 6-7 UNLOAD 4-23
SPL Conflict resolution WITH CRCOLS 4-17
large objects 3-11 WITH REPLCHECK 4-18
SPL routines States
arguments 3-8 active 7-7
considerations 3-8 inactive 7-7
delete table 3-8 STATUS column, cdr list server output A-88
information passed by Enterprise Replication 3-8 Stopping
limitations for conflict resolution 2-16 replicates 7-7
nonoptimized 3-8 Storage
optimized 3-8 delete tables 4-7
Spooled row data sbspace increasing size of spaces 8-17
changing logging mode 4-10 spooled transactions 4-8
dropping 4-11 Storing
guidelines for creating 4-9 data in tblspaces 2-13
logging mode 4-10 streamread support function 2-15, 4-17
Spooled transactions streamwrite support function 2-15, 4-17
defined 4-8 Strict master replicates 6-5
storage 4-8 Support functions
troubleshooting 8-14 compare 2-15
Spooling equal 2-15
directories greaterthan 2-15
ATS and RIS 3-7 lessthan 2-15
capacity planning 4-12 replicating UDTs 2-15, 4-17
default 4-12 streamread 2-15, 4-17
more than usual, causes of 8-15 streamwrite 2-15, 4-17
planning for disk space 4-8 writing 2-15, 4-17
SQL statements Supported
forbidden 2-10 data types 2-12
limited 2-11 database servers 2-4
permitted 2-11 SQL statements 2-10
supported 2-10 table types 2-6
SQLHOSTS Suspended state A-82, A-89
INFORMIXSQLHOSTS environment variable G-1 Suspending
on UNIX F-1 replicate sets 7-11
on Windows G-1 replicates 7-8
preparing connectivity information G-2 replication 7-4
registry key G-1, G-4 Swap log position 7-26
local G-1 Switching logical log files 4-6
setting up G-2 Synchronization 1-3, 6-12, 7-14
shared G-1 servers 3-15, 6-2
setting up with ISA G-2 times 3-7, 3-12
specifying registry host machine 4-13 Synchronizing
SQLHOSTS file clocks
database server groups for HDR 5-5 net time command 4-14
encryption, setting up 4-2 rdate command 4-14
format 8-17 data
specifying location 4-13 inconsistent tables 7-13
UNIX 4-2 onload and onunload utilities 4-22
standards xix using DB-Access 4-16
Starting using ESQL/C 4-17
replicates 7-7 global catalog 6-2
Index X-17
Transactions (continued) User-defined data types (continued)
tables E-17 installing 4-17
Tree installing and registering 2-15
defined 3-15 loading with deluxe mode 4-22
topology, illustrated 3-16 preparing to replicate 4-17
triggers registering 4-17
–firetrigger option A-43, A-95, A-142, A-146 replicating
Triggers preparation 2-15
–firetrigger option 6-10, A-34 spooled row data 4-9
activating with replication A-53 support 2-15
changing 7-6 support functions 2-15
data capture 1-2 Users, informix 2-1
defined 1-2 Utilities
enabling 6-10 dbexport 4-22
errors with Enterprise Replication 2-8 dbimport 4-22
firing A-95 onunload 4-21
primary key updates 1-8 unload 4-22
transaction capture 1-2
Troubleshooting
configuration problems 8-17
spooled transactions 8-14
V
Values, sending floating-point 6-9
Troubleshooting Enterprise Replication
Variables. 4-13
alter operations 8-19
Verification, master replicate 6-5
Trusted environment
Viewing
configuring 4-4
Enterprise Replication 2-4
testing 4-5
replicate attributes 7-6
Two-phase commit protocol
replication server attributes 7-3
defined 1-1
templates 1-5, 6-13
distributed transactions 2-10
Virtual column
TXH label, ATS files 8-11
support 2-16
TZ environment variable A-25
Visual disabilities
reading syntax diagrams I-1
U
UDRs
installing 4-17
W
Warm restores 2-5
preparing to replicate 4-17
WHERE clause
registering 4-17
column updates 1-8
SPL conflict resolution 3-8
Windows
UDTs 4-17
database server groups 4-2
Unbuffered logging 2-5, 4-19
Informix-Admin group 2-1
UNIX
onmode command 6-1
database server groups 4-2
SQLHOSTS registry host 4-13
onmode command 6-1
WITH CRCOLS statement
SQLHOSTS file 4-2, 4-13
defining shadow columns 4-17
UNLOAD statement 4-23
WITH REPLCHECK statement
unload utility 4-22
defining shadow columns 4-18
Unloading data 4-21
Workflow replication business model 3-3
Unsupported table types 2-6
Workload partitioning business model 3-2
Up-to-date, with replication 1-3
Writing
Update-anywhere
support functions 2-15
examples F-4
transaction buffers to disk 8-14
participants 6-3
replication system
combining with HDR 5-1
Updates
multiple-row images 1-8
primary key 1-8
WHERE clause column 1-8
Updating shadow columns 4-16
UPSERTs
defined 6-8
replicating only changed columns 6-8
User-defined data types
ATS files 8-11
columns, primary key 2-16
information in ATS files 8-11
Printed in USA
SC27-3610-02
Spine information:
Informix Product Family Informix Version 11.50 IBM Informix Enterprise Replication Guide