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.