Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

To force the conflict, the target table is going to be updated to a different value to than the source table.

1. On the target table on the target server (dbv02), run the following SQL to update the value

No Format
sqlplus oe/oe@ttorcl_trg
No Format
SQL> update SALES set AMOUNT_RECEIVED = 60 
where SALES_STATUS = 'OVERDUE' 
and PROD_ID = 101;
commit;

2. The  The AMOUNT_RECEIVED column is now different on the target as what it is on the source for record in record PROD_ID = 101. On 101 on the target database it is 60 and now differs from the source database it is NULL.

3. Update the AMOUNT_RECEIVED for PROD_ID = 101 on the source database. On source server (dbv01) run the following SQL to update the value

No Format
sqlplus oe/oe@ttorcl_src
No Format
SQL> update SALES set AMOUNT_RECEIVED = 120 
where SALES_STATUS = 'OVERDUE' 
and PROD_ID = 101;
commit;

4. This will create a conflict because the update statement will be replicated to the target database. The target value was already changed and so a conflict was created.

5. On the replication console the conflict will be shown.

No Format
APPLY IS running. Currently at plog 724 and SCN 14858536 (12/29/2013 13:59:45) and 1 apply conflicts so far (last at 29/12/2013 14:01:18) and WAITING on manual resolve of apply conflict id 724010046998.

6. The type of conflict is shown against the sales table. The conflict is "Command affected 0 rows".

No Format
OE.SALES:                      80%  Mine:5/5             Unrecov:0/0         Applied:4/4         Conflicts:1/1       Last:29/12/2013 13:59:38/RETRY:Command affected 0 row(s).

...

No Format
dbvrep> list conflict                                                                                                                                                           
Information for conflict 724010046998 (current conflict):
Table: OE.SALES at transaction 001e.008.00000060 at SCN 148585373144514
SQL text (with replaced bind values): update OE."SALES"
set AMOUNT_RECEIVED = 120
where (1=1)
and AMOUNT_RECEIVED IS NULL 
and PROD_ID = 101
Error: Command affected 0 row(s).
Handled as: PAUSE
Conflict repeated 21 times.

...

9. Decide which value should be kept on the target database. Do you want to keep the value of AMOUNT_RECEIVED = 60 or AMOUNT_RECEIVED = 120? In this case we are going to keep the value of AMOUNT_RECEIVED = 120 as this is the value on the source system.