解决一个Berkeley DB的问题
  在Oracle运行中我们都知道具体的log可以设置为归档和非归档来运行,归档模式下将产生很多日志,时间长了不删除就会出现磁盘满的,在归档模式下就3个或多个日志来回重复利用。两种模式各有各的好处。
我要解决的问题就是在Berkeley DB中怎么可以让日志在几个文件中来回使用(有点像Oracle的归档模式运行)。google了好几天,说可以修改DB_LOG_AUTOREMOVE来实现自动删除没用的log的,但我测试了不行阿。
        苦阿,发了两个贴,一个ITPUB的: http://www.itpub.net/thread-1067012-1-1.html,一个是 www.berkeleydb.net上的,结果我一注册完berkeleydb.net上的用户没一会该网站就打不开了。哎,看来搞这个的人还是不多。itpub上的也没人问了,自己就再慢慢找吧。

发的帖子内容如下:
===========================
http://gan.cublog.cn
DB_LOG_AUTOREMOVE 为什么没办法删除多余的日志?

环境:Linux localhost.localdomain 2.6.25.4-10.fc8 #1 SMP Thu May 22 23:34:09 EDT 2008 i686 i686 i386 GNU/Linux
我使用的版本:Berkeley DB,   db-4.5.20

测试的实例为:db-4.5.20/examples_c/ex_thread.c

--------
自己修改了点:
新添加的line: 450

ret = dbenv->set_flags(dbenv, DB_LOG_AUTOREMOVE, 1);

但产生的日志就是无限的增加,气死人了。  有没有办法像Oracle那样设置成3个日志来回使用的呢? 请多帮忙,多谢!
==========================

自己编译ex_thread.c文件来作的测试,结果产生了一堆日志:
[gan@localhost dbk]$ ls
access.db       log.0000000002  log.0000000010  log.0000000018  log.0000000026
__db.001        log.0000000003  log.0000000011  log.0000000019  log.0000000027
__db.002        log.0000000004  log.0000000012  log.0000000020  log.0000000028
__db.003        log.0000000005  log.0000000013  log.0000000021  log.0000000029
__db.004        log.0000000006  log.0000000014  log.0000000022  log.0000000030
__db.005        log.0000000007  log.0000000015  log.0000000023
__db.006        log.0000000008  log.0000000016  log.0000000024
log.0000000001  log.0000000009  log.0000000017  log.0000000025

我设置了DB_LOG_AUTOREMOVE的,他就是不删除阿?怎么办呢?怎么找阿?  看DB_ENV中的函数都有些什么,后来google说db_archive可以删除,说是用db_archive -d来删除的。自己测试了db_archive也是没办法删除的,不知道为什么。
http://gan.cublog.cn
不知道什么时候提起db_checkpoint,也是google来的,如是看看db_checkpoint是否可以解决问题,原来db_checkpoint -1一使用就delete了。哎,我爱死你了,原来是没有checkpoint阿,自己看了一下db_checkpoint应用程序的源码,比较简单。起主要作用的还是那个DB_ENV->txn_checkpoint()

在找东西过程中发现一本不错的介绍Berkeley DB的书: 《The Berkeley DB Book》 http://www.xpressionsz.com/2008/01/02/the-berkeley-db-book/
还发现一个不错的电子书bbs, http://www.itepub.net/ 真是好记itepub, 跟itpub就差一个e。 没有做广告的意思,有用就给推荐一下!