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.