Previous |
Next |
This topic includes an example that uses the Setup Streams Replication Wizard in Oracle Enterprise Manager to add tables to an existing hub-and-spoke replication environment. When the example is complete, the Oracle Streams replication environment replicates the changes made to the added tables at the databases in the environment.
Specifically, the example in this topic extends the replication environment configured in "Tutorial: Configuring Hub-and-Spoke Replication with Local Capture Processes". That configuration has the following characteristics:
The hr
schema is replicated at the hub.example.com
, spoke1.example.com
, and spoke2.example.com
databases.
The hub.example.com
database is the hub database in the hub-and-spoke environment, while the other databases are the spoke databases.
The spoke databases allow changes to the replicated schema, and each database has a local capture process to capture these changes.
Update conflict handlers are configured for each replicated table at each database to resolve conflicts
This example adds the following tables to the environment:
oe.orders
oe.order_items
This example uses the tables in the oe
sample schema. The oe
sample schema is installed by default with Oracle Database.
Note: Before you use the Setup Streams Replication Wizard to extend an Oracle Streams replication environment, ensure that the environment meets the conditions described in "About Extending an Oracle Streams Replication Environment".
To add database objects to an Oracle Streams replication environment:
Stop the capture process at the hub database in the hub-and-spoke environment.
In this example, stop the capture process at the hub.example.com
database. The replicated database objects can remain open to changes while the capture process is stopped. These changes will be captured when the capture process is restarted.
In Oracle Enterprise Manager, log in to the hub database as the Oracle Streams administrator.
Go to the Database Home page.
Click Data Movement to open the Data Movement subpage.
Click Manage Replication in the Streams section.
The Streams page appears, showing the Overview subpage.
Click Streams to open the Streams subpage.
Select the capture process that you want to stop. If necessary, use the search tool to find the capture process, and then select it.
Select Disable in Action.
Click Go.
Click Yes on the confirmation page to stop the capture process.
Note: You can also use the DBMS_CAPTURE_ADM.STOP_CAPTURE
procedure to stop a capture process.
While still connected to the hub database as the Oracle Streams administrator in Oracle Enterprise Manager, go to the Database Home page for the database instance.
Click Data Movement to open the Data Movement subpage.
Click Setup in the Streams section.
The Streams page appears, showing the setup options.
Select Replicate Tables in Setup Streams Replication.
In the Host Credentials section, enter the username and password for an administrative user on the host computer system.
Click Continue.
On the Object Selection page, click Add to open the Select Table page.
Use the search tools to display the oe.orders
and oe.order_items
tables, and select these tables.
For example, to display these tables, enter oe
in the Schema field and click Go.
Click Select. The Object Selection page displays the oe.orders
and oe.order_items
tables.
Click Next.
On the Destination Options page, identify the spoke database spoke1.example.com
by specifying its host name, port, SID or service name, and Oracle Streams administrator credentials.
(When you configure replication with the spoke2.example.com
database, identify spoke2.example.com
.)
Click Next.
Complete the Replication Options page:
In the Directory Path section, leave the directory paths for the source and destination database unchanged if the host user you specified in Step 6 can read from and write to the directories and the directories have enough space for a Data Pump export dump file. Otherwise, specify different directory paths, or create directory objects that meet these requirements and specify those.
Expand Advanced Options.
In the Options section, ensure that Capture, Propagate and Apply data manipulation language (DML) changes is selected.
If you do not want to replicate DDL changes, then deselect Capture, Propagate and Apply data definition language (DDL) changes.
Select Setup Bi-directional replication.
In the Capture Process section, enter capture_hns
in Capture Name.
In the Propagation Process section, enter propagation_spoke1
in Propagation Name. (When you configure replication with the spoke2.example.com
database, enter propagation_spoke2
.)
In the Apply Process section, enter apply_spoke1
in Apply Name. (When you configure replication with the spoke2.example.com
database, enter apply_spoke2
.)
Click Next.
On the Schedule Job page, either select Immediately or specify a time for the job to run later.
Click Next.
On the Review page, review the configuration information and click Submit.
On the Confirmation page, optionally click the job link to monitor the job.
When the job is running, information about its progress is recorded in the following data dictionary views: DBA_RECOVERABLE_SCRIPT
, DBA_RECOVERABLE_SCRIPT_PARAMS
, DBA_RECOVERABLE_SCRIPT_BLOCKS
, and DBA_RECOVERABLE_SCRIPT_ERRORS
. If the job stops because it encounters an error, then see Oracle Streams Replication Administrator's Guide for instructions about using the RECOVER_OPERATION
procedure in the DBMS_STREAMS_ADM
package to recover from these errors.
While still connected as the Oracle Streams administrator to the hub database, complete Steps 2 to 19 again. However, in Step 12, on the Destination Options page, identify the spoke database spoke2.example.com
by specifying its host name, port, SID or service name, and Oracle Streams administrator credentials.
Also, in Step 14g, enter propagation_spoke2
in Propagation Name, and in Step 14h, enter apply_spoke2
in Apply Name
Set the instantiation SCN for the replicated tables at the spoke databases:
Note: This step is required in this example because the replicated tables existed at the spoke databases before the wizard was run. If the replicated tables did not exist at the spoke databases before the wizard was run, then the wizard sets the instantiation SCN for the replicated tables and this step is not required. Typically, when an instantiation SCN is set for a shared table in a replication environment, the data in the shared table is consistent at the source and destination databases.
In SQL*Plus, connect to the hub.example.com
database as the Oracle Streams administrator.
See Oracle Database Administrator's Guide for information about connecting to a database in SQL*Plus.
Set the instantiation SCN for the oe.orders
table at the spoke1.example.com
database:
DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@spoke1.example.com( source_object_name => 'oe.orders', source_database_name => 'hub.example.com', instantiation_scn => iscn); END; /
Set the instantiation SCN for the oe.order_items
table at the spoke1.example.com
database:
DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@spoke1.example.com( source_object_name => 'oe.order_items', source_database_name => 'hub.example.com', instantiation_scn => iscn); END; /
Set the instantiation SCN for the oe.orders
table at the spoke2.example.com
database:
DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@spoke2.example.com( source_object_name => 'oe.orders', source_database_name => 'hub.example.com', instantiation_scn => iscn); END; /
Set the instantiation SCN for the oe.order_items
table at the spoke2.example.com
database:
DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@spoke2.example.com( source_object_name => 'oe.order_items', source_database_name => 'hub.example.com', instantiation_scn => iscn); END; /
Configure latest time conflict resolution for the orders
and order_items
tables in the oe
schema at the hub.example.com
, spoke1.example.com
, and spoke2.example.com
databases. See "Tutorial: Configuring Latest Time Conflict Resolution for a Table" for instructions.