Sun ONE logo     上一章     目录     索引     下一章     
Sun ONE Calendar Server 管理员指南



第 5 章   管理 Calendar Server 数据库


本章介绍如何使用 csdb 公用程序来管理 Sun™ ONE Calendar Server 数据库和日历数据。

本章包含以下几节:

要运行 csdb 公用程序,请在运行 Calendar Server 的系统上使用具有管理权限的用户身份登录。有关更多信息,请参见第 7 章 “Calendar Server 命令行公用程序”

有关如何备份和恢复日历数据库的信息,请参见第 6 章 “备份和还原 Calendar Server 数据”


指定目标数据库

csdb 公用程序的 -t 选项允许您指定目标数据库:

  • -t caldb-日历数据库

  • -t sessdb-会话数据库

  • -t statdb-统计数据库

如果没有添加 -t 选项,则 csdb 会作用于所有这三个数据库,但 checkrebuild 命令除外,它们只会作用于日历数据库。

表 5-1 说明日历数据库 (caldb) 文件:


表 5-1    日历数据库文件

文件

说明

ics50calprops.db  

所有日历的日历属性。包括日历 ID (calid)、日历名称、访问控制列表 (ACL)、所有者等。  

ics50events.db  

所有日历的事件。  

ics50todos.db  

所有日历的待办事项(任务)。  

ics50alarms.db  

所有事件和待办事项(任务)的警报  

ics50gse.db  

组日程安排引擎 (GSE) 的日程安排请求队列。  

ics50journals.db  

所有日历的日记。Calendar Server 的当前版本尚未实现日记功能。  

ics50caldb.conf  

数据库版本标识符。  


查看日历数据库状态

要查看日历数据库的状态,请使用 csdb 公用程序的 list 命令。Calendar Server 可在运行状态或停止状态。

使用 -t 选项可指定目标数据库(caldbsessdbstatdb);否则,csdb 将作用于所有这三个数据库。

例如,要查看所有数据库的数据库状态和统计信息,请执行以下命令:

csdb list

要以详细模式查看当前目录中的日历数据库信息,请执行以下命令:

csdb -v -t caldb list


删除日历数据库

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

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

例如,要删除日历数据库,请执行以下命令:

csdb -t caldb delete

csdb 公用程序在删除数据库前会发出警告。


导入和导出日历数据

要将日历数据导出到文件或从文件导入日历数据,请使用 csexportcsimport 公用程序。日历数据可以是 iCalendar (.ics) 或 XML (.xml) 的格式。

必须在安装 Calendar Server 的机器上运行 csexportcsimport。Calendar Server 可在运行状态或停止状态。

导出日历数据

要将日历数据导出到文件,请使用 csexport。为输出文件指定的文件扩展名(.ics.xml)确定所使用的格式。

例如,要以 iCalendar(text/calendar MIME)格式将日历 ID (calid) 为 JSmithcal 的日历导出到名为 jsmith.ics 的文件,请执行以下命令:

csexport -c JSmithcal calendar jsmith.ics

要以 XML(text/xml MIME)格式将日历 JSmithcal 导出到名为 jsmith.xml 的文件,请执行以下命令:

csexport -c JSmithcal calendar jsmith.xml

导入日历数据

要从先前使用 csexport 公用程序保存的文件导入日历数据,请使用 csimport。导入文件的文件扩展名(.ics .xml)指示了保存文件时所使用的格式。

例如,要从以 iCalendar (text/calendar MIME) 格式保存的文件 jsmith.ics 将日历数据导入到日历 ID (calid) JSmithcal,请执行以下命令:

csimport -c JSmithcal calendar jsmith.ics

要从名为 jsmith.xml 的文件(此文件以 XML (text/xml MIME) 格式保存)将数据导入到日历 JSmithcal,请执行以下命令:

csimport -c JSmithcal calendar jsmith.xml

如果指定的日历 ID (calid) 已经存在,则在导入新数据之前会清除该日历 ID 的数据。


恢复损坏的数据库

要恢复损坏的会话或统计数据库,请使用 csdb 公用程序的 recover 命令。使用 -t 选项可指定目标数据库:sessdb(会话数据库)或 statdb(统计数据库)。

在运行 recover 命令前,请使用 stop-cal 命令停止 Calendar Server。

例如,要恢复当前目录中已损坏的会话数据库,请执行以下命令:

csdb -t sessdb recover



备注 要恢复已损坏的日历数据库 (caldb),请使用 csdb 公用程序的 checkrebuild 命令,而不是 recover 命令。

有关更多信息,请参见“检查和重建日历数据库”




检查和重建日历数据库

csdb 公用程序命令包括以下检查命令和在必要时重建日历数据库 (caldb) 的命令:

  • check 命令会扫描日历数据库,确定是否有任何损坏,并在命令输出中报告结果。(check 命令不会检查警报或组日程安排引擎 (GSE) 数据库中是否有损坏的情形。)

  • rebuild 命令也会扫描日历数据库,确定是否有损坏发生,并在必要时生成重建的日历数据库(即 .db 文件)。

csdb 公用程序还包括用于恢复损坏的会话或统计数据库的 recover 命令。如果损坏的是日历数据库,则请使用 checkrebuild,而不是 recover



警告

在运行这些命令之前,请使用 csbackup 公用程序(或其他备份公用程序)来备份日历数据库。



检查日历数据库是否损坏

check 命令会扫描日历数据库,并检查日历属性 (calprops) 事件和待办事项(任务)是否有任何损坏发生。如果 check 命令发现不一致的情形且无法解决,则此命令会在输出中报告此情况。

您应定期运行 check 命令,检查日历数据库是否有不一致的问题。例如,考虑在每次备份数据库后运行 check。然而,如果已经知道日历数据库发生损坏,就不必运行 check 命令。继续执行并重建损坏的数据库。

要检查日历数据库是否损坏:

  1. 请使用具有管理权限的用户登录到安装 Calendar Server 的系统。

  2. Calendar Server 可在运行状态或停止状态,但是最好先停止 Calendar Server。

  3. 如果尚未创建日历数据库的副本,请创建一个。只需复制六个数据库 (.db) 文件。不必复制任何共享 (*.share) 或日志 (log.*) 文件。

  4. 定位到 server-root/cal/bin/ 目录。例如,在 Solaris 上输入:

    cd /opt/SUNWics5/cal/bin

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

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

    如果没有指定 dbdir,则 check 会使用当前目录中的数据库。

    check 命令会产生大量信息,因此请考虑将所有输出(包括 stdoutstderr)重定向到文件(如本示例所示)。

  6. check 完成后,请查看输出文件。如果数据库已损坏,请运行 rebuild 命令。

重建损坏的日历数据库

rebuild 命令会扫描日历数据库,并检查日历属性 (calprops) 事件和待办事项(任务)是否有任何损坏发生。如果 rebuild 命令发现不一致的情形,它会在 server-root/cal/bin/rebuild_db/ 目录中生成一个重建的日历数据库(即 .db 文件)。



备注 rebuild 命令可重建除组日程安排引擎 (GSE) 数据库以外的所有数据库。要确定 GSE 数据库中是否包含项,请运行 csschedule -v list 命令,然后让 GSE 处理完各项,然后再运行 rebuild 命令。



重建损坏的日历数据库:

  1. 请使用具有管理权限的用户登录到安装 Calendar Server 的系统。

  2. 停止 Calendar Server。

  3. 如果尚未创建日历数据库的副本,请创建一个。只需复制六个数据库 (.db) 文件。不必复制任何共享 (*.share) 或日志 (log.*) 文件。

  4. 定位到 server-root/cal/bin/ 目录。例如,在 Solaris 上输入:

    cd /opt/SUNWics5/cal/bin

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

    ./csdb rebuild dbdir > /tmp/rebuild.out 2>&1

    如果没有指定目录,则 rebuild 会使用当前目录中的数据库。

    rebuild 命令会产生大量信息,因此请考虑将所有输出(包括 stdoutstderr)重定向到文件(如本示例所示)。



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

    但是,如果您遇到了大量的数据丢失,而您已经定期备份了数据库,有多个副本可用,这时就可以从最新的副本重建到最旧的副本。(唯一的缺点是已删除的日历组件将再次出现在重建的数据库中。)

    例如,如果在目录 db_0601db_0615db_0629 中有日历数据库文件的三个备份集,则请按以下顺序运行 rebuild 命令:

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

    之后 rebuild 命令便会将重建的数据库写入 server-root/cal/bin/rebuild_db/ 目录。



  6. rebuild 完成后,请查看 rebuild.out 文件中的输出。如果重建成功,则 rebuild.out 文件中的最后一行应为:

    Calendar database has been rebuilt

  7. 在上一步中验证重建成功后,请将重建的数据库 (.db) 文件从 server-root/cal/bin/rebuild_db/ 目录复制到产品数据库。

  8. 如果已损坏的数据库遗留了任何共享 (*.share) 或日志 (log.*) 文件,请将它们删除或移动到其他目录。

  9. 重新启动 Calendar Server。


上一章     目录     索引     下一章     
版权所有 2002 Sun Microsystems, Inc. 全权所有。

更新日期 2002 年 8 月 30 日