cdr realize template

The cdr realize template command creates the replicates, replicate set, and participant tables as specified in a template, and then synchronizes data on all or a subset of the database servers within the replication domain.

Syntax


1  cdr realize template?  %Connect Option  (1)  template?   --syncdatasource=data_server? %Synchronization Options
1  --verify
1?   --autocreate?  --dbspace=dbspace
2?   --target
2?   --mode =
3.1 send_only
3.1 receive_only
2 +  ?database@server_group
2?   --applyasowner
Synchronization Options

1?  --extratargetrows=
2.1 delete
2.1 keep
2.1 merge?   --foreground?  --memadjust=size
2.1 K
2.1 M
Notes:
Element Purpose Restrictions Syntax
database Name of the database that includes the table to be replicated. The database server must be in an Enterprise Replication domain. Long Identifiers
data_server The database server from which the data is copied to all other database servers listed. The database server must be in an Enterprise Replication domain.
dbspace The name of the dbspace for tables. The dbspace must exist on all the database servers listed. If you do not specify a dbspace name and new tables are created, they are created in the default dbspace.
server_group Name of the database server group that includes the server to connect to. The database server group name must be the name of an existing Enterprise Replication server group in sqlhosts. Long Identifiers
sizeK or size M Size, in either kilobytes (K) or megabytes (M), of the send queue during synchronization. Must be a positive integer and must not be greater than the amount of available memory.
template The name of the template. The template must exist. Use the cdr define template command to create the template. Long Identifiers

The following table describes the special options to cdr realize template.

Long Form Short Form Meaning
--applyasowner -o Specifies that any tables created when you realize the template are owned by the owner of the source tables. By default, the tables are owned by the user informix.
--autocreate -u Specifies that if the tables in the template definition do not exist in the databases on the target servers, they are created automatically. However, the tables cannot contain columns with user-defined data types.
Note: Tables that are created with autocreate do not automatically include non-replicate key indexes, defaults, constraints (including foreign constraints), triggers, or permissions. You must manually create these objects.
--dbspace= -D Specifies the dbspace in which the automatically created objects are placed. If not specified, then the default dbspace is used.
--extratargetrows= -e Specifies how to handle rows that are found on the target servers that are not present on the data source server from which the data is being copied (data_server):
  • delete: (default) remove rows and dependent rows, based on referential integrity constraints, from the target servers
  • keep: retain rows on the target servers
  • merge: retain rows on the target servers and replicate them to the data source server
This option applies to the initial data synchronization operation only; it does not affect the behavior of the replicate.
--foreground -F Specifies that the synchronization operation is performed as a foreground process.
--memadjust= -J Increases the size of the send queue during synchronization to the number of kilobytes or megabytes specified by the size element.
--mode= -m Specifies whether the participant either only sends or only receives replicated data:
  • send_only (S): The participant only sends replicated data and does not receive replicated data.
  • receive_only (R): The participant only receives replicated data and does not send replicated data.
--syncdatasource= -S Specifies which server is the source of the data that is used to synchronize all the other servers that are listed in the cdr realize template command.

The server that is listed with this option must either be listed as one of the servers on which to realize the template, or it must already have the template.

--target -t

Specifies that all of the servers that are listed in the command become receive-only servers, including the source server, unless the template is already realized on the source server.

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 by running the cdr define server command and define the template by running the cdr define template command. Create the database to be replicated on all database servers in the replication domain. However, only the database on the synchronization data source server must be populated with data.

All specified servers must be online and the cdr utility must be able to connect to each server.

If you run this command as a DBSA instead of as user informix, you must have INSERT, UPDATE, and DELETE permission on the replicated tables on all the replication servers in the domain.

The cdr realize template command performs the following tasks:

  • If you specify the --autocreate option, creates database tables on the target servers.
    Recommendation: If you use --autocreate, specify a dbspace name. If you do not specify a dbspace name, tables are created in the root dbspace, which is not recommended.
  • If you specify the --verify option, verifies the database, tables, column data types, and replication keys on all participating servers; however, the template is not realized.
  • If you specify the --syncdatasource option, synchronizes the data from the source database with the databases specified by this command. If you specify the --foreground option, runs synchronization as a foreground process. If you specify the --memadjust option, increases the size of the send queue from the value of the CDR_QUEUEMEM configuration parameter.

    If you are running this command with the --syncdatasource option as a DBSA, you must have certain permissions granted to you on several system tables in the syscdr database. For more information, see Preparing for Role Separation (UNIX).

  • Verifies the database and table attributes to ensure that replication can be performed on each database.
  • Creates replicates as master replicates on all servers.
  • Creates a replicate set for the new replicates.
  • Starts the replicates on all servers.

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.

You can run the cdr check queue --qname=cntrlq command to wait for the cdr realize template command to be applied at all Enterprise Replication servers before you run the data synchronization task.

Examples

The following example illustrates the cdr realize template command:
cdr realize template tem1 -c detroit\
new_cars@detroit new_cars0@chicago new_cars1@newark\
new_cars2@columbus
Line 1 specifies that the template name is tem1 and the server to which to connect 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 database servers:
cdr realize template tem1 -c detroit\
--syncdatasource=detroit --extratargetrows=keep\
--foreground --memadjust=50M\
--target chicago newark columbus
cdr realize template tem1 -c detroit\
--syncdatasource=detroit --extratargetrows=keep\
--foreground --memadjust=50M\
--mode=receive_only 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 --mode=receive_only option makes each server a receive-only participant.

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