Skip to Main Content

Berkeley DB Family

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

DB->open() can not work after system crush. :(

545054Nov 16 2006 — edited Jan 22 2008
Hi all:

My application have multiple databases in a single file which has a database environments. BDB version is 4.5.20. IDE is BCB 6+SP4.

BDB works well before my system crush, but DB-open() return a error (error no:22). I don't know what happened.

My codes like this(partial):

DB_ENV *DbEnvData;
DB *DbTikSys;
DB *DbM01Sys;
DB *DbDaySys;

if(db_env_create(&DbEnvData, 0)) {Terminate(); return;}

try
{
if(DbEnvData->open(DbEnvData, FPathHome.c_str(), DB_CREATE | DB_THREAD | DB_INIT_CDB | DB_INIT_MPOOL, 0))
{
Terminate();
return;
}
}
catch(...)
{
Terminate();
return;
}

if(db_create(&DbTikSys, DbEnvData, 0)) {Terminate(); return;}
if(db_create(&DbM01Sys, DbEnvData, 0)) {Terminate(); return;}
if(db_create(&DbDaySys, DbEnvData, 0)) {Terminate(); return;}

if(DbTikSys->open(DbTikSys, NULL, FFileHisTik.c_str(),
"0000000000",
DB_BTREE, DB_CREATE | DB_THREAD, 0)) {Terminate(); return;}

if(DbM01Sys->open(DbM01Sys, NULL, FFileHisM01.c_str(),
"0000000000",
DB_BTREE, DB_CREATE | DB_THREAD, 0)) {Terminate(); return;}

if(DbDaySys->open(DbDaySys, NULL, FFileHisDay.c_str(),
"0000000000",
DB_BTREE, DB_CREATE | DB_THREAD, 0)) {Terminate(); return;}


After system crush, DbEnvData->open() OK, DbTikSys->open() error. And I found my application works well again after environment files(__db.001、__db.002、__db.003 、 __db.004) was deleted manual.

What shoud i do? Thandks a lot.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 19 2008
Added on Nov 16 2006
11 comments
2,221 views