Consultor Eletrônico



Kbase P144829: Unable to start Replication - The RCB for this database cannot be opened. Error -159 occurred. (116
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   17/02/2010
Status: Verified

SYMPTOM(s):

Replication source and target databases fail to connect

Function dssBlobGet failed in rpREC_ReadRCB_Nolock with error -35026. (10428)

Function rpREC_ReadRCB_Blob failed in rpREC_OpenRCB with error -1. (10428)

The RCB for this database cannot be opened. Error -159 occurred. (11691)

The Fathom Replication Server is ending. (10505)

Function dssBlobUpdate failed in rpREC_WriteRCB_Blob with error -35022. (10428)

Function rpREC_WriteRCB_Blob failed in rpREC_CloseRCB with error -1. (10428)

The target Replication Agent starts sucessfully then terminates after timeout

This Replication Agent has never been contacted by a Replication Server. The Agent is ending so the Target databse can be shutdown normally. (11700)

The target replication enabled database has been created from a restored copy of source database with -REPLTargetCreation flag

The target replication enabled database has been enabled as a target database and started with -DBService replagent flag

no backups inbetween

FACT(s) (Environment):

All Supported Operating Systems
OpenEdge Replication
OpenEdge Replication 10.x

CAUSE:

When the source database was initially restored, it was a probkup of a prior source-enabled replication database. The probkup of a source replication-enabled database is assumed for target creation not self-source-creation.

In later versions, this is reported in the source database lg file in the 'proutil dbname -C enablesitereplication source' instruction:
Replication (source) is already enabled for database <path>/<db-name>. (10350)

Effectively the RCB block on a source database is incorrect as a result.

FIX:

STEPS: assuming the correct *.repl.properties files are in place

[target]
$ proshut target -by
delete *.recovery (for target)
$ prostrct list target target.st #this target.st (ie dbname.st) will be used later when the target is restored with prorest
$ prodel target
STOP any dsrutil scripts or other batch/cron jobs that run against the target database

[source]
$ proshut source -by
$ proutil source -C disablesitereplication source
$ proutil source -C truncate bi
delete *.recovery (for source)
$ proutil source -C enablesitereplication source
$ proserve source [+ parameters]
$ probkup online source source_bak -REPLTargetCreation

/It's important that NO (none, zero) probkups or rfutil -C mark backedup occur between the time you take this backup and the time the RPLA and RPLS have touched base./
With remote targets, consider increasing the "defer-agent-startup= 1440 in the source.repl.properties for 'just in case' there are further delays in target creation.

[target]
copy source_bak to target (Check with md5 or similar)
$ prorest target source_bak (as long as the dbname.st above is inplace, there is no need to prostrct create first)
$ proutil target -C enablesitereplication target
$ proserve target [+parameters] -DBService replagent

[source]
$ dsrutil source -C restart server

[target]
START the dsrutil scripts that run against target once replication has successfully established.