Sun Java System Calendar Server 6 2005Q4 管理指南

csdb 管理任务

本节介绍了如何使用 csdb 实用程序执行以下管理任务:


注 –

要运行 csdb 实用程序,必须以具备管理权限的用户身份登录正在运行 Calendar Server 的系统。有关更多信息,请参见附录 D,Calendar Server 命令行实用程序参考


Procedure列出数据库组的状态

要查看数据库组(caldbsessdbstatdb)的状态,请使用 csdb 实用程序的 list 命令。

要列出数据库的状态,请执行以下步骤:

步骤
  1. 以具备管理权限的用户身份登录安装了 Calendar Server 的系统。

  2. Calendar Server 可以正在运行或已经停止,但最好停止 Calendar Server。

  3. 转至 /sbin 目录。例如,在 Solaris 操作系统上输入以下内容:


    cd /opt/SUNWics5/cal/sbin
  4. 针对一个或所有数据库组运行 list 命令。例如,列出所有三种数据库组的状态和统计信息:

    ./csdb list

    以下代码显示了样例输出:


    Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002)
    
    Calendar database version: 3.0.0 [BerkeleyDB]
    Total database size in bytes: 57344
    
    Session database version: 1.0.0 [BerkeleyDB]
    Total database size in bytes: 0
    
    Counter database version: 1.0.0 [Memory Mapped Files]
    Total database size in bytes: 118792
    
                   

    您也可以选择使用详细模式。例如:

    ./csdb -v list

    以下样例代码显示了详细输出:


    Sleepycat Software: Berkeley DB 4.1.25: (December 19, 2002)
    
    Calendar database version: 3.0.0 [BerkeleyDB]
    Total database size in bytes: 57344
    Total number of calendars:    2
    Total number of events:       0
    Total number of tasks:        0
    Total number of alarms:       0
    Total number of gse entries:  0
    Total number of master component entries:  0
    Total number of deletelog entries:  0
    Total logfile size in bytes:  5779919
    
    Session database version: 1.0.0 [BerkeleyDB]
    Total database size in bytes: 0
    Total logfile size in bytes:  0
    
    Counter database version: 1.0.0 [Memory Mapped Files]
    Total database size in bytes: 118792
    
                   

    或者,使用 -t 选项来指定一个目标数据库组(caldbsessdbstatdb)。例如,只查看日历数据库的数据库状态和统计信息:

    csdb -t caldb list

Procedure检查日历数据库的损坏

使用 check 命令可以扫描日历数据库(包括日历属性 [calprops] 和事件及待办事件 [任务])中的损坏。如果使用 check 命令发现无法解决的冲突,则将在输出结果中报告该情况。

check 命令不检查警报或组调度引擎 (Group Scheduling Engine, GSE) 数据库中的损坏。

要检查数据库的损坏,请执行以下步骤:

步骤
  1. 以具备管理权限的用户身份登录安装了 Calendar Server 的系统。

  2. Calendar Server 可以正在运行或已经停止,但最好停止 Calendar Server。

  3. 如果尚未备份,请备份日历数据库。只需复制数据库 (.db) 文件。无需复制任何共享 (__db.*) 文件或日志 (log.*) 文件。

  4. 转至 cal_svr_base/SUNWics5/cal/sbin 目录。例如,在 Solaris 操作系统上输入以下内容:


    cd /opt/SUNWics5/cal/sbin
  5. 针对日历数据库副本运行 check 命令:


    ./csdb check dbdir \> /tmp/check.out 2\>&1

    如果未指定 dbdir,则 check 命令将针对当前目录中的数据库。

    check 命令会生成许多信息,因此请考虑将所有输出结果(包括 stdoutstderr)重定向到一个文件中(如示例中所示)。

  6. 运行完 check 命令后,查看输出文件。

    如果数据库遭受损坏,则可以选择用热备份副本进行替换。另外,您可以选择通过运行 rebuild 命令来尝试重新建立已损坏的数据库。

Procedure重新建立日历数据库 (caldb)(不包括 GSE 数据库)

要恢复已损坏的日历数据库 (caldb),请使用 csdb 实用程序的 rebuild 命令。rebuild 命令将扫描所有日历数据库以查看其中是否存在损坏。如果 rebuild 命令发现冲突,它将在 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目录中重新建立一个日历数据库(.db 文件)。

rebuild 命令会生成许多信息,因此请考虑将所有输出结果(包括 stdoutstderr)重定向到一个文件中。

在以下说明中,rebuild 命令不会重新建立组调度引擎 (Group Scheduling Engine, GSE) 数据库。

要重新建立不包括 GSE 数据库的日历数据库,请执行以下步骤:

步骤
  1. 以具备管理权限的用户身份登录安装了 Calendar Server 的系统。

  2. 停止 Calendar Server。

  3. 如果尚未备份,请备份日历数据库。只需复制数据库 (.db) 文件和日志 (log.*) 文件。无需复制任何共享 (__db.*) 文件。

  4. 转至 cal_svr_base/SUNWics5/cal/sbin 目录。例如,在 Solaris 操作系统上输入以下内容:


    cd /opt/SUNWics5/cal/sbin

    如果 sbin 目录的磁盘空间不足,请在其他目录中运行 rebuild 命令。

  5. 针对日历数据库副本运行 rebuild 命令:


    ./csdb rebuild /tmp/db /tmp/

    如果未指定数据库目录,则 rebuild 命令将针对当前目录中的数据库。在上述示例中,/tmp/ 参数用于指定重新建立的数据库所在的目标目录。


    注 –

    请始终使用最新的备份副本重建日历数据库。

    但是,如果曾丢失大量数据,同时由于定期备份数据库而创建了多个副本,请从最新副本向最旧副本进行重建。(这样做的唯一缺点是已删除的日历组件将重新出现在重建数据库中。)

    例如,如果目录 db_0601db_0615db_0629 中分别有三组备份日历数据库文件,请按以下顺序运行 rebuild 命令:

    1. ./csdb rebuild db_0629

      然后检查是否存在损坏。如果该备份副本已被损坏,则针对下一个备份副本运行 rebuild。

    2. ./csdb rebuild db_0615

      然后检查是否存在损坏。如果该备份副本已被损坏,则针对下一个备份副本运行 rebuild。

    3. ./csdb rebuild db_0601

      ... 等等。

    rebuild 命令将重新建立的数据库写入 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目录。


  6. 运行完 rebuild 命令后,查看rebuild.out 文件中的输出结果。如果重新建立成功,rebuild.out 文件中的最后一行应如下所示:


    Calendar database has been rebuilt
  7. 验证 rebuild 成功后,将重新建立的数据库 (.db) 文件从 rebuild_db 目录复制到您的生产数据库中。

  8. 如果从损坏的数据库中恢复了任何共享 (__db.*) 文件,请将它们移到其他目录中。

  9. 重新启动 Calendar Server。

Procedure重新建立日历数据库(包括 GSE 数据库)

如果您已在您的站点中实现了组计划,则应在重新建立日历数据库时包括 GSE 数据库。

要重新建立日历数据库和 GSE 数据库,请执行以下步骤:

步骤
  1. 通过运行 csschedule -v list 命令确定 GSE 数据库是否具有任何条目,如果有,则让 GSE 处理完这些条目。

  2. 以具备管理权限的用户身份登录安装了 Calendar Server 的系统。

  3. 停止 Calendar Server。

  4. 如果尚未备份,请备份日历数据库。

    只需复制数据库 (.db) 文件和日志 (log.*) 文件。无需复制任何共享 (__db.*) 文件。

  5. 转至 cal_svr_base/SUNWics5/cal/sbin 目录。

    例如,在 Solaris 操作系统上输入以下内容:

    cd /opt/SUNWics5/cal/sbin

    如果 sbin 目录的磁盘空间不足,请在其他目录中运行 rebuild 命令。

  6. 针对日历数据库副本运行 rebuild 命令:

    ./csdb -g rebuild /tmp/db /tmp/

    如果未指定数据库目录,则 rebuild 命令将针对当前目录中的数据库。在上述示例中,/tmp/ 参数用于指定重新建立的数据库所在的目标目录。


    注 –

    请始终使用最新的备份副本重建日历数据库。

    但是,如果曾丢失大量数据,同时由于定期备份数据库而创建了多个副本,请从最新副本向最旧副本进行重建。(这样做的唯一缺点是已删除的日历组件将重新出现在重建数据库中。)

    例如,如果目录 db_0601db_0615db_0629 中分别有三组备份日历数据库文件,请按以下顺序运行 rebuild 命令:


    ./csdb rebuild db_0629 ./csdb rebuild db_0615 ./csdb rebuild db_0601

    rebuild 命令然后会将重新建立的数据库写入 cal_svr_base/SUNWics5/cal/sbin/rebuild_db 目录。


  7. 运行完 rebuild 命令后,查看rebuild.out 文件中的输出结果。

    如果重新建立成功,rebuild.out 文件中的最后一行应如下所示:


    Calendar database has been rebuilt
  8. 验证 rebuild 成功后,将重新建立的数据库 (.db) 文件从 rebuild_db 目录复制到您的生产数据库中。

  9. 如果从损坏的数据库中恢复了任何共享 (__db.*) 文件,请将它们移到其他目录中。

  10. 重新启动 Calendar Server。


示例 16–1 重建输出样例

通过以下输出结果样例可以看到事件和待办事件数据库均被扫描了两次。这不是错误。首次扫描是为了验证 calprops 数据库中的信息,再次扫描是为了确保可以从日历数据库访问 calprops

以下示例显示了此命令及其生成的输出:


# ./csdb -g rebuild
Building calprops based on component information.
Please be patient, this may take a while...
Scanning events database...
512 events scanned
Scanning todos database...
34 todos scanned
Scanning events database...
512 events scanned
Scanning todos database...
34 todos scanned
Scanning deletelog database...
15 deletelog entries scanned
Scanning gse database...
21 gse entries scanned
Scanning recurring database...
12 recurring entries scanned
Successful components db scan
Calendar database has been rebuilt
Building components based on calprops information.
Please be patient, this may take a while...
Scanning calprops database to uncover events...
25 calendars scanned
Scanning calprops database to uncover todos...
25 calendars scanned
Successful calprops db scan
Calendar database has been rebuilt

删除数据库组

要删除日历数据库,请使用 csdb 实用程序的 delete 命令。必须停止 Calendar Server。

请使用 -t 选项指定目标数据库(caldbsessdbstatdb);否则,csdb 将删除所有三个数据库。

例如,可使用以下命令删除日历数据库:

csdb -t caldb delete

删除数据库之前,csdb 实用程序将发出警告。