Consultor Eletrônico



Kbase P122566: dsrutil applyextent causes a memory violation in the replication agent
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   6/4/2008
Status: Verified

FACT(s) (Environment):

Fathom High Availability Replication 3.0A
OpenEdge 10.0x
OpenEdge 10.1A
OpenEdge 10.1B

SYMPTOM(s):

dsrutil applyextent causes a memory violation in the replication agent

Attempting to roll forward an After Image (AI) extent onto a replication target database

dsrutil <dbname> -C applyextent <ai_extent.a#>

No errors displayed on screen

Errors are shown within the target database log file

SYSTEM ERROR: Memory Violation Error (49)

Disconnecting dead user <userid>. (2527)

CAUSE:

This problem only occurs if the dsrutil command is run from a directory other than the directory where the database was started from.

FIX:

Upgrade to OpenEdge 10.1C where relative path names for the ai extent name are recognised.

Once the error has occurred, the target database will need to be stopped and restarted using the normal target database startup parameters before being able to re-attempt applying AI files.

Workaround: Assuming that either the source database is inoperable or the replication server (RPLS) has been stopped.

Stop the target database and restart it manually, using the normal target database startup parameters. Do not use the force option when stopping the target.

$ proshut target -by
$ proserve target [+ startup parameters ] -DBService replagent

Once the target database is started, run the following commands from the same directory:

1.) TriggerTransition so that the target database agent goes into the pre-transition state, which allows AI files to be applied.
$ dsrutil <dbname> -C triggerTransition

2.) Find the next ai file that needs to be rolled forward. For detailed information, please refer to Solution P128467, "How to determine the correct ai extent number to apply to target first?"
$ dsrutil target -C recovery agent

3.) Apply the needed ai files with the fully qualified the path to the ai extent from the directory that the database.db file is in.
$ dsrutil <dbname> -C applyextent <path>/<ai_extent.a#>

4.) Transition the target if this is the intent, otherwise restart the target database for communications to resume between the RPLS and RPLA once syncronisation has completed.