要恢复已损坏的日历数据库 (caldb),请使用 csdb 实用程序的 rebuild 命令。rebuild 命令将扫描所有日历数据库以查看其中是否存在损坏。如果 rebuild 命令发现冲突,它将在 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目录中重新建立一个日历数据库(.db 文件)。
rebuild 命令会生成许多信息,因此请考虑将所有输出结果(包括 stdout 和 stderr)重定向到一个文件中。
在以下说明中,rebuild 命令不会重新建立组调度引擎 (Group Scheduling Engine, GSE) 数据库。
要重新建立不包括 GSE 数据库的日历数据库,请执行以下步骤:
以具备管理权限的用户身份登录安装了 Calendar Server 的系统。
停止 Calendar Server。
如果尚未备份,请备份日历数据库。只需复制数据库 (.db) 文件和日志 (log.*) 文件。无需复制任何共享 (__db.*) 文件。
转至 cal_svr_base/SUNWics5/cal/sbin 目录。例如,在 Solaris 操作系统上输入以下内容:
cd /opt/SUNWics5/cal/sbin |
如果 sbin 目录的磁盘空间不足,请在其他目录中运行 rebuild 命令。
针对日历数据库副本运行 rebuild 命令:
./csdb rebuild /tmp/db /tmp/ |
如果未指定数据库目录,则 rebuild 命令将针对当前目录中的数据库。在上述示例中,/tmp/ 参数用于指定重新建立的数据库所在的目标目录。
请始终使用最新的备份副本重建日历数据库。
但是,如果曾丢失大量数据,同时由于定期备份数据库而创建了多个副本,请从最新副本向最旧副本进行重建。(这样做的唯一缺点是已删除的日历组件将重新出现在重建数据库中。)
例如,如果目录 db_0601、db_0615 和 db_0629 中分别有三组备份日历数据库文件,请按以下顺序运行 rebuild 命令:
./csdb rebuild db_0629
然后检查是否存在损坏。如果该备份副本已被损坏,则针对下一个备份副本运行 rebuild。
./csdb rebuild db_0615
然后检查是否存在损坏。如果该备份副本已被损坏,则针对下一个备份副本运行 rebuild。
./csdb rebuild db_0601
... 等等。
rebuild 命令将重新建立的数据库写入 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目录。
运行完 rebuild 命令后,查看rebuild.out 文件中的输出结果。如果重新建立成功,rebuild.out 文件中的最后一行应如下所示:
Calendar database has been rebuilt |
验证 rebuild 成功后,将重新建立的数据库 (.db) 文件从 rebuild_db 目录复制到您的生产数据库中。
如果从损坏的数据库中恢复了任何共享 (__db.*) 文件,请将它们移到其他目录中。
重新启动 Calendar Server。