Versions Compared

Key

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

From version 2.8 onwards Dbreplicate parameters Replicate parameters APPLY_LOOP_PREVENTION and MINE_LOOP_PREVENTION will become public ones.

This page is trying to shed some light onto the meaning of the APPLY_LOOP_PREVENTION and MINE_LOOP_PREVENTION parameters.

 

Replicate does filtering of transactions based on TRANSACTION_NAME which contains "DBREPL_database_name_XID". 

Mine prevention throws them out on mine and it throws out all of them.
Apply loop prevention throws them out on apply - if td database name matches current database (=they just completed a loop).

 

APPLY_LOOP_PREVENTION ( YES on default)

Purpose:  Changes that are mined on the source server and then applied on the target server are not mined again on the target server. This is prevented by the APPLY_LOOP_PREVENTION setting.

Based on TRANSACTION_NAME the APPLY_LOOP_PREVENTION throws transaction out on apply - if the database name matches current database (=they just completed a loop).

                 Check  It also checks if the DDL was done by an apply process on this db; modify the DDL by adding comment to the end so next mine/apply can check that it was done by apply.

...

Purpose:  Changes that are mined on the source server and then applied on the target server. This is controlled by the MINE_LOOP_PREVENTION setting.

MINE_LOOP_PREVENTION throws out transaction based on the TRANSACTION_NAME that contains "DBREPL_database_name_XID". 

                 If set to YES it checks if we skip this DDL due to 

    • it is created by an APPLY process and apply adds comment to end of the DDL - This is disabled - we need to pass at least CREATE TABLE to apply; we just let apply loop prevention to do it's job for DDL
    • an established isolation level triggered by a SET TRANSACTION statement

Comment: MINE_LOOP_PREVENTION is preferred to APPLY_LOOP_PREVENTION as the changes are filtered sooner and don't even get written to a PLOG file. But it's too aggressive in more complicated scenarios.

Valid Settings: YES or NO


If both APPLY_LOOP_PREVENTION and MINE_LOOP_PREVENTION are disabled APPLY will not set/use transaction name 'DBREPL_%'.

...