Consultor Eletrônico



Kbase P26274: Why does using procopy with proutil BUSY option corrupt the target database?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   4/27/2010
Status: Verified

SYMPTOM(s):

Is it possible use procopy with proutil BUSY option

procopy running as background session: nohup procopy <sourcedb> <targetdb> &

To verify if procopy command has finished using: proutil <sourcedb> -C BUSY

The <targetdb> is then corrupted

Inconsistency between timestamps on the db and bi result on <targetdb> error 9213

Extent <file-name> has a different last opened date <timestamp>, (9213)

Extent <dbname.bi> has a different last opened date <dbname.db>, (9213)

FACT(s) (Environment):

All Supported Operating Systems
Progress/OpenEdge Product Family

CAUSE:

procopy doesn't lock the source or target databases (no .lk file) so that when you issue a proutil -C BUSY, you get a message back that it's not busy and can therefore access the database. It is not the proutil -BUSY operand (-C HOLDER would be another tool that could be used here) that causes the corruption, it is just that we assume incorrectly that the database can be accessed before the procopy operation has completed. In doing so, roll back recovery ensues and the bi file timestamps will be out of sync with the master block (.db)

FIX:

Rather than running the proutil -BUSY to monitor the completion of the procopy operation, consider:

Running a:
"ps -ef | grep procopy"
to find when the process ends
- or -
send the output to a file:
nohup procopy <source> <target> > pcopy.out &
and then monitor "pcopy.out" for "Copy complete (6722)" before accessing the database again.