This chapter describes how to alter an existing classic replication system.
Table 10-1 lists the tasks often performed on an existing classic replicated system.
Table 10-1 Tasks performed on an existing classic replicated system
Task | What to do |
---|---|
Alter or drop a classic replication scheme |
See"Altering a classic replication scheme" and "Dropping a classic replication scheme". |
Alter a table used in a replication scheme |
See "Altering a replicated table in a classic replication scheme". |
Truncate a table used in a replication scheme |
See "Truncating a replicated table in a classic replication scheme". |
Change the replication state of a subscriber database |
|
Resolve update conflicts |
|
Recover from failures |
|
Upgrade database |
Use the |
You can perform the following tasks without stopping the replication agent:
Create, alter or drop a user. These statements are replicated.
Grant or revoke privileges from a user. These statements are replicated.
Add a subscriber to the replication scheme. See "Creating and adding a subscriber database to a classic replication scheme".
Add a PL/SQL object to the master database and implement its replication on subscribers. See "Adding a PL/SQL object to an existing classic replication scheme".
Use ALTER REPLICATION
to alter the classic replication scheme on the master and subscriber databases. Any alterations on the master database must also be made on its subscribers.
Note:
You must have theADMIN
privilege to use the ALTER REPLICATION
statement.Most ALTER REPLICATION
operations are supported only when the replication agent is stopped (ttAdmin
-repStop
). The procedure for ALTER REPLICATION
operations that require the replication agents to be stopped is:
Use the ttRepStop
built-in procedure or ttAdmin
-repStop
to stop the replication agent for the master and subscriber databases. While the replication agents are stopped, changes to the master database are stored in the log.
Issue the same ALTER REPLICATION
statement on both master and subscriber databases.
Use the ttRepStart
built-in procedure or ttAdmin
-repStart
to restart the replication agent for the master and subscriber databases. The changes stored in the master database log are sent to the subscriber database.
If you use ALTER REPLICATION
to change a classic replication scheme that specifies a DATASTORE
element, then:
You cannot use SET NAME
to change the name of the DATASTORE
element.
You cannot use SET CHECK CONFLICTS
to enable conflict resolution.
This section includes the following topics:
Adding a table or sequence to an existing classic replication scheme
Adding a PL/SQL object to an existing classic replication scheme
Adding a DATASTORE element to an existing classic replication scheme
Dropping a table or sequence from a classic replication scheme
Creating and adding a subscriber database to a classic replication scheme
Dropping a subscriber database from a classic replication scheme
Changing a TABLE or SEQUENCE element name in a classic replication scheme
Eliminating conflict detection in a classic replication scheme
Eliminating the return receipt service in a classic replication scheme
There are two ways to add a table or sequence to an existing classic replication scheme:
When the element level of the classic replication scheme is TABLE
or SEQUENCE
, use the ALTER REPLICATION
statement with the ADD ELEMENT
clause to add a table or sequence. See Example 10-1.
When the element level of the classic replication scheme is DATASTORE
, use the ALTER REPLICATION
statement with the ALTER ELEMENT
clause to include a table or sequence. See Example 10-2.
Example 10-1 Adding a sequence and a table to a classic replication scheme
This example uses the classic replication scheme r1
that was defined in Example 9-10. It alters replication scheme r1
to add sequence seq
and table westleads
, which are updated on database westds
and replicated to database eastds
.
ALTER REPLICATION r1 ADD ELEMENT elem_seq SEQUENCE seq MASTER westds ON "westcoast" SUBSCRIBER eastds ON "eastcoast" ADD ELEMENT elem_westleads TABLE westleads MASTER westds ON "westcoast" SUBSCRIBER eastds ON "eastcoast";
Example 10-2 Adding a sequence and a table to a DATASTORE element
Add the sequence my.seq
and the table my.tab1
to the ds1
DATASTORE
element in my.rep1
replication scheme.
ALTER REPLICATION my.rep1 ALTER ELEMENT ds1 DATASTORE INCLUDE SEQUENCE my.seq ALTER ELEMENT ds1 DATASTORE INCLUDE TABLE my.tab1;
To add a new PL/SQL procedure, package, package body or function to an existing replication scheme, complete these tasks:
Create the PL/SQL object on a master database. The CREATE
statement is not replicated to subscribers.
Create the PL/SQL object on the subscribers
Grant privileges to the new PL/SQL object on the master database. The GRANT
statement is replicated to the subscribers.
You can add a DATASTORE
element to an existing classic replication scheme by using the ALTER REPLICATION
statement with the ADD ELEMENT
clause. All tables except temporary tables, materialized views, and nonmaterialized views are included in the replication scheme if you do not use the INCLUDE
or EXCLUDE
clauses. See "Including tables or sequences when you add a DATASTORE element" and "Excluding a table or sequence when you add a DATASTORE element".
Example 10-3 Adding a DATASTORE element to a classic replication scheme
Add a DATASTORE
element to an existing classic replication scheme.
ALTER REPLICATION my.rep1 ADD ELEMENT ds1 DATASTORE MASTER rep2 SUBSCRIBER rep1, rep3;
You can restrict replication to specific tables or sequences when you add a database to an existing classic replication scheme. Use the ALTER REPLICATION
statement with the ADD ELEMENT
clause and the INCLUDE TABLE
clause or INCLUDE SEQUENCE
clause. You can have one INCLUDE
clause for each table or sequence in the same ALTER REPLICATION
statement.
Example 10-4 Including a table and sequence in a DATASTORE element
Add the ds1
DATASTORE
element to my.rep1
replication scheme. Include the table my.tab2
and the sequence my.seq
in the DATASTORE
element.
ALTER REPLICATION my.rep1 ADD ELEMENT ds1 DATASTORE MASTER rep2 SUBSCRIBER rep1, rep3 INCLUDE TABLE my.tab2 INCLUDE SEQUENCE my.seq;
You can exclude tables or sequences when you add a DATASTORE
element to an existing classic replication scheme. Use the ALTER REPLICATION
statement with the ADD ELEMENT
clause and the EXCLUDE TABLE
clause or EXCLUDE SEQUENCE
clause. You can have one EXCLUDE
clause for each table or sequence in the same ALTER REPLICATION
statement.
Example 10-5 Excluding a table or sequence from a DATASTORE element
Add the ds2
DATASTORE
element to a replication scheme, but exclude the table my.tab1
and the sequence my.seq
.
ALTER REPLICATION my.rep1 ADD ELEMENT ds2 DATASTORE MASTER rep2 SUBSCRIBER rep1 EXCLUDE TABLE my.tab1 EXCLUDE SEQUENCE my.seq;
This section includes the following topics:
Dropping a table or sequence that is replicated as part of a DATASTORE element
Dropping a table or sequence that is replicated as a TABLE or SEQUENCE element
To drop a table or sequence that is part of a classic replication scheme at the DATASTORE
level, complete the following tasks:
Stop the replication agent.
Exclude the table or sequence from the DATASTORE
element in the classic replication scheme.
Drop the table or sequence.
If you have more than one DATASTORE
element that contains the table or sequence, then you must exclude the table or sequence from each element before you drop it.
To drop a table that is part of a classic replication scheme at the TABLE
or SEQUENCE
level, complete the following tasks:
Stop the replication agent.
Drop the element from the classic replication scheme.
Drop the table or sequence.
You can add a new subscriber database while the replication agents are running. To add a database to a classic replication scheme, do the following:
Make sure the new subscriber database does not exist.
Apply the appropriate statements to all participating databases:
ALTER REPLICATION ... ALTER ELEMENT ... ADD SUBSCRIBER ...
On the source database (the master), create a user and grant the ADMIN
privilege to the user:
CREATE USER ttuser IDENTIFIED BY ttuser; User created. GRANT admin TO ttuser;
Logged in as the instance administrator, run the ttRepAdmin
-duplicate
command to copy the contents of the master database to the newly created subscriber. You can use the -setMasterRepStart
option to ensure that any updates made to the master after the duplicate operation has started are also copied to the subscriber.
Start the replication agent on the newly created database (ttAdmin
-repStart
).
Stop the replication agent before you drop a subscriber database.
This example alters the r1
replication scheme to drop the backup3
subscriber for the westleads
table:
Stop the replication agent before you change a TABLE
or SEQUENCE
element name in a classic replication scheme.
Change the element name of the westleads
table from elem_westleads
to newelname
:
Example 10-10 Changing a table name
ALTER REPLICATION r1 ALTER ELEMENT Eelem_westleads SET NAME newelname;
Note:
You cannot use theSET NAME
clause to change the name of a DATASTORE
element.Stop the replication agent before you replace a master database in a classic replication scheme.
In this example, newwestds
is made the new master for all elements currently configured for the master, westds
:
In this example, conflict detection configured by the CHECK CONFLICTS
clause in the classic replication scheme shown in Example 13-2 is eliminated for the elem_accounts_1
table:
Example 10-12 Eliminating conflict detection for a table
ALTER REPLICATION r1 ALTER ELEMENT elem_accounts_1 SET NO CHECK;
See Chapter 13, "Resolving Replication Conflicts" for a detailed discussion on conflict checking.
In this example, the return receipt service is eliminated for the first subscriber in the classic replication scheme shown in Example 9-10:
The port number is the TCP/IP port number on which the replication agent of a subscriber database accepts connection requests from the master replication agent. See "Port assignments" for details on how to assign port to the replication agents.
In this example, the r1
replication scheme is altered to change the port number of the eastds
to 22251:
If a replication host has multiple network interfaces, you may specify which interfaces are used for replication traffic using the ROUTE
clause. If you need to change which interfaces are used by replication, you may do so by dropping and adding IP addresses from or to a ROUTE
clause. See "Configuring network interfaces with the ROUTE clause" for more information.
Use the FAILTHRESHOLD
attribute of the STORE
parameter to reset the log failure threshold. Stop the replication agents before using ALTER REPLICATION
to define a new threshold value, and then restart the replication agents.
See "Setting the transaction log failure threshold" for more information about the log failure threshold.
You can use ALTER TABLE ... ADD COLUMN
or ALTER TABLE ... DROP COLUMN
statements to add or drop columns on the master database in a classic replication scheme. The ALTER TABLE
operation is replicated to alter the subscriber databases. These are the only ALTER TABLE
clauses that are replicated in a classic replication scheme.
If you use ALTER TABLE
on a database configured for bidirectional replication, first stop updates to the table on all of the replicated databases and confirm all replicated updates to the table have been received by the databases before issuing the ALTER TABLE
statement. Do not resume updates until the ALTER TABLE
operation has been replicated to all databases. This is necessary to ensure that there are no write operations until after the table is altered on all databases.
Note:
You can use thettRepSubscriberWait
built-in procedure or monitoring tools described in Chapter 12, "Monitoring Replication" to confirm the updates have been received and committed on the databases.Also, if you are executing a number of successive ALTER TABLE
operations on a database, you should only proceed with the next ALTER TABLE
after you have confirmed the previous ALTER TABLE
has reached all of the subscribers.
You can use TRUNCATE TABLE
to delete all of the rows of a table without dropping the table itself. Truncating a table is faster than using a DELETE FROM
table statement.
Truncate operations on replicated tables are replicated and result in truncating the table on the subscriber database. Unlike delete operations, however, the individual rows are not deleted. Even if the contents of the tables do not match at the time of the truncate operation, the rows on the subscriber database are deleted anyway.
The TRUNCATE
statement replicates to the subscriber, even when no rows are operated upon.
When tables are being replicated with timestamp conflict checking enabled, conflicts are not reported.
You can use the DROP REPLICATION
statement to remove a replication scheme from a database. You cannot drop a classic replication scheme when master catchup is required unless it is the only classic replication scheme in the database.
Note:
You must have theADMIN
privilege to use the DROP REPLICATION
statement.You must stop the replication agent before you drop a classic replication scheme.
Example 10-15 Dropping a replication scheme
To remove the repscheme
replication scheme from a database, enter the following:
DROP REPLICATION repscheme;
If you are dropping replicated tables, you must drop the classic replication scheme before dropping the replicated tables. Otherwise, you receive an error indicating that you have attempted to drop a replicated table or index.