Sun Java System Calendar Server 6.3 管理指南

第 4 部分 Calendar Server 6.3 管理

本部分的各章节介绍如何管理 Calendar Server 部署。

本部分包括以下章节:

第 12 章 Calendar Server 6.3 部署的服务器管理

本章介绍 Calendar Server 部署的服务器管理。

本章包括以下各节:

可通过运行 Delegated Administrator 实用程序(以前称为用户管理实用程序)或 Calendar Server 命令行实用程序并编辑 ics.conf 配置文件来管理 Calendar Server。

要运行命令行实用程序,必须以具备管理权限的用户身份登录正在运行 Calendar Server 的系统。

有关详细信息,参见 附录 D,Calendar Server 命令行实用程序参考


注 –

其他管理主题包含在单独的章节中。

这些章节包含以下主题:


12.1 启动和停止 Calendar Server 6.3 进程

本节介绍如何使用 start-calstop-cal 命令的概念性信息和说明。

本节包含以下主题:

12.1.1 关于 Calendar Server 6.3 命令 start-cal 和 stop-cal

可使用 start-calstop-cal 命令来启动和停止 Calendar Server。start-calstop-cal 实用程序位于 cal-svr-base/SUNWics5/cal/sbin 目录中。必须在已安装 Calendar Server 的本地计算机上运行这些实用程序。


注 –

检查脚本以确保没有使用旧的 csstart csstop 实用程序。使用 start-calstop-cal 实用程序来启动和停止 Calendar Server。


start-cal 实用程序按以下顺序启动 Calendar Server 服务:

  1. watcher — 监视程序,监视系统的进程

  2. enpd— 事件通知服务 (Event Notification Service, ENS)

  3. csstored— 自动备份服务

  4. csnotifyd— 通知服务

  5. csadmind— 管理服务

  6. csdwpd— 数据库有线协议 (Database Wire Protocol, DWP) 服务,只能通过远程 Calendar Server 数据库配置启动的分布式数据库服务

  7. cshttpd— HTTP 服务

有关这些服务的说明,参见 1.10 Calendar Server 版本 6.3 中作为守护进程运行的服务

Procedure使用 start-cal 启动 Calendar Server 6.3 服务

  1. 以具备管理权限的用户身份登录。

  2. 验证是否已通过发出 stop-cal 命令停止了所有 Calendar Server 服务。

  3. 转至目录。

    cal-svr-base/SUNWics5/cal/sbin

  4. 启动 Calendar Server。

    ./start-cal

Procedure使用 stop-cal 停止 Calendar Server

  1. 以具备管理权限的用户身份登录正在运行 Calendar Server 的系统。

  2. 转至目录。

    cal-svr-base/SUNWics5/cal/sbin

  3. 停止 Calendar Server。

    ./stop-cal

12.2 在 Calendar Server 版本 6.3 中启用或禁用自动备份

自动备份由 csstored 进程来管理,在发出 start-cal 命令时,将自动启动该进程。但是,您可以根据需要来启用或禁用自动备份。默认值为禁用自动备份。即使未启用自动备份,csstored 进程也会运行。

有两种自动备份:紧急备份和归档备份。您可以分别启用或禁用它们。

有关自动备份的信息和配置 csstored 的说明,参见第 9 章,配置自动备份

以下是启用和禁用自动备份的任务列表:

Procedure在 Calendar Server 版本 6.3 中启用紧急备份

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 ics.conf 文件所在的目录。

    cd /etc/opt/SUNWics5/config

  4. 通过将以下 ics.conf 参数设置为 "yes" 来启用紧急备份:

    caldb.berkeleydb.hotbackup.enable="yes"

  5. 指定紧急备份目录的目录路径:

    caldb.berkeleydb.hotbackup.path=
       /var/opt/SUNWics5/hotbackup_directory
    

    默认值为当前目录。

  6. 编辑完 ics.conf 文件后,重新启动 Calendar Server.。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

    无需为编辑 ics.conf 文件停止日历服务,但必须重新启动服务以使更改生效。

Procedure在 Calendar Server 版本 6.3 中启用归档备份

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 ics.conf 文件所在的目录。

    cd /etc/opt/SUNWics5/config

  4. 通过将以下 ics.conf 参数设置为 "yes" 来启用归档备份:

    caldb.berkeleydb.archive.enable="yes"

  5. 指定归档目录的目录路径。

    caldb.berkeleydb.archive.path=
       /var/opt/SUNWics5/hotbackup_directory
    

    默认值为当前目录。

  6. 编辑完 ics.conf 文件后,重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

    无需为编辑 ics.conf 文件停止日历服务,但必须重新启动服务以使更改生效。

Procedure在 Calendar Server 版本 6.3 中禁用紧急备份

默认情况下,禁用备份。如果您先前已启用了它们而现在要禁用它们,请执行以下步骤:

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 ics.conf 文件所在的目录。

    cd /etc/opt/SUNWics5/config

  4. 通过将以下 ics.conf 参数设置为 "no" 来禁用紧急备份:

    caldb.berkeleydb.hotbackup.enable="no"

  5. 编辑完 ics.conf 文件后,重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

    无需为编辑 ics.conf 文件停止日历服务,但必须重新启动服务以使更改生效。

Procedure在 Calendar Server 版本 6.3 中禁用归档备份

默认情况下,禁用备份。如果您先前已启用了它们而现在要禁用它们,请执行以下步骤:

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 ics.conf 文件所在的目录。

    cd /etc/opt/SUNWics5/config

  4. 通过将以下 ics.conf 参数设置为 "no" 来禁用归档备份:

    caldb.berkeleydb.archive.enable="no"

  5. 编辑完 ics.conf 文件后,重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

    无需为编辑 ics.conf 文件停止日历服务,但必须重新启动服务以使更改生效。

12.3 管理 Calendar Server 版本 6.3 的组调度引擎队列

本节介绍管理组调度引擎 (Group Scheduling Engine, GSE) 的概念性信息和说明。

GSE 维持用于更新组件数据库的一系列事件。管理员可以更改超时值以调整 Calendar Server 扫描队列的时间间隔。还可以列出队列中的事件,如果需要也可以将特定事件删除。

本节包含以下主题:

12.3.1 关于 Calendar Server 版本 6.3 的 GSE

GSE 允许 Calendar Server 用户创建事件和邀请其他参与者。如果参与者也在同一个 Calendar Server 上,则会在其日历上预定此事件。如果参与者不在同一个 Calendar Server 上,则会通过电子邮件向其发送邀请。参与者可以接受或拒绝邀请,GSE 将根据回复来更新事件。

12.3.2 关于 Calendar Server 6.3 GSE 队列

GSE 队列实际上是由 csadmind 进程管理的一个单独数据库,Calendar Server 扫描队列来了解需对组件数据库执行的更新。

可以调整扫描的频率来调整 Calendar Server。这可通过更改 ics.conf 文件中的 gse.belowthresholdtimeout 的超时值来完成。请参见第 21 章,优化 Calender Server 的性能

可以使用 csschedule 来管理(列出和删除)GSE 队列条目。必须在已安装 Calendar Server 的本地计算机上运行 csschedule

12.3.3 列出 Calendar Server 6.3 GSE 队列中的条目

要列出 GSE 队列中的条目,使用 csschedule 实用程序的 list 命令。

例如,要列出 GSE 队列中的所有条目:

csschedule list

要列出 GSE 队列中存储的前十个条目:

csschedule -c 10 list

要列出 GSE 队列中 calid Holiday_Schedule 的所有日历条目:

csschedule -v list Holiday_Schedule

12.3.4 在 Calendar Server 版本 6.3 中删除 GSE 队列中的条目

要删除 GSE 队列中的条目,使用 csschedule 实用程序的 delete 命令。

例如,要删除 GSE 队列中的所有条目:

csschedule -v delete

要删除 GSE 队列中 calA 日历的首次计划时间为 2001 年 11 月 30 日 13:30:45,偏移数为 1,唯一标识符为 1111,周期 ID 为 0,序列号为 0 的条目:

csschedule -v -t 20011130T133045Z -o 1 -u 1111 -r 0 -n 0 delete calA

12.4 监视 Calendar Server 6.3 进程

Calendar Server 和 Messaging Server 现在使用相同的停止和启动机制,它是 Sun JavaTM Enterprise System Monitoring Framework (JESMF) 的一部分。start-cal 命令首先启动 watcher 进程, 然后再启动所有其他进程。watcher 进程了解其他服务所具有的依赖关系,以及它们的启动顺序。

每个已注册的服务(进程)会打开一个与 Watcher 之间的连接。如果进程终止时并未正确断开,Watcher 将自动重新启动它。如果同一进程在定义的时间间隔内终止了两次,Watcher 将不会重新启动它。该超时时间间隔是可配置的。

Watcher 将向单个日志 cal-svr-base/data/log/watcher.log 中写入以下信息:

有关如何配置 Watcher 的信息,参见配置 Calendar Server 版本 6.3 的 Watcher 进程

12.5 在 Calendar Server 版本 6.3 中清除 CLD 高速缓存

本节介绍如何清除 CLD 高速缓存的概念性信息和说明。

本节包含以下主题:

12.5.1 为什么要清除 Calendar Server 6.3 的 CLD 高速缓存?

如果已启用 CLD 高速缓存,则可能需要经常清除此高速缓存。CLD 高速缓存会由于各种原因而失去与系统配置之间的同步(过时)。

以下是造成 CLD 高速缓存可能过时的一些原因。

如果执行了以上任一操作,则为了刷新 CLD 高速缓存,您必须清除它。

Procedure清除 CLD 高速缓存

  1. 停止 Calendar Server。

  2. 删除 /var/opt/SUNWics5/csdb/cld_cache 目录中的所有文件,但不要删除 cld_cache 目录本身。

  3. 重新启动 Calendar Server。

12.6 更改服务器名

如果在配置中添加、删除或更改了服务器名,则为了避免错误,应执行以下几个“内务处理”步骤。

以下步骤对于保持 CLD 为最新非常有用:

12.7 配置 Calendar Server 用户的匿名访问

本节介绍如何启用和禁用匿名访问(登录)的说明。

匿名访问是一种不需要验证的特殊登录方式。默认情况下,启用匿名登录时,将启用对公共日历的读写访问权限。有可能拒绝对公共日历的写访问权限。

本节包含以下主题:


注 –

Communications Express 需要允许进行读写操作的匿名登录。请参见4.1 配置 Communications Express


Procedure启用匿名访问

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 /etc/opt/SUNWics5/cal/config 目录。

  4. 通过复制和重命名旧的 ics.conf 文件来保存该文件。

  5. 编辑 ics.conf 中的以下参数来启用匿名访问:

    参数 

    说明和默认值 

    service.http.allowanonymouslogin

    如果需要,通过将该参数设置为 "yes" 可以启用匿名访问(登录)。默认值为 "yes"

    service.calendarsearch.ldap

    出于安全性目的,启用匿名登录之后,您可能希望在进行日历搜索时,首先禁用对 LDAP 的搜索,为此可以将该参数设置为 "no"(默认值)。


    注 –

    Communications Express 需要 service.calendarsearch.ldap 参数值为 "no"。这与有关在 DWP 环境中调优系统以获得最佳性能的说明冲突。(数据库分布在多个后端中。)参见 21.2 提高日历搜索在 DWP 环境中的性能


  6. 将此文件另存为 ics.conf

  7. 重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

Procedure禁止匿名用户对公共日历的写操作

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 /etc/opt/SUNWics5/cal/config 目录。

  4. 通过复制和重命名旧的 ics.conf 文件来保存该文件。

  5. 编辑下表中所示的以下 ics.conf 参数:

    参数 

    说明和默认值 

    service.wcap.anonymous.

    allowpubliccalendarwrite

    启用或禁用允许进行匿名访问的用户对公共日历的写操作。将此值设置为 "yes"(默认值)可以启用写访问权限。

  6. 将此文件另存为 ics.conf

  7. 重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

12.8 启用代理管理员登录

为实现 Communications Express,必须启用代理管理员登录(代理验证)。有关为 Communications Express 配置代理验证的说明,请参见4.1 配置 Communications Express

但是,即使不使用 Communications Express,也可以启用代理验证。本节包含启用代理验证而不使用 Communications Express 的过程:

Procedure在没有 Communications Express 的情况下启用代理授权

  1. 以有权更改此配置的管理员身份登录。

  2. 转至 /etc/opt/SUNWics5/cal/config 目录。

  3. 通过复制和重命名旧的 ics.conf 文件来保存该文件。

  4. 编辑 ics.conf 文件,确认以下参数的设置是否如下所示:

    service.http.allowadminproxy = "yes"

    如果不是,将其更改为 "yes"

  5. 将此文件另存为 ics.conf

  6. 重新启动 Calendar Server 以便新值生效。

Procedure验证代理验证正在工作

    使用以下 WCAP 命令验证管理员代理登录正在工作:

    http://server[:port]/login.wcap?
    user=admin-user&password=admin-password
    &proxyauth=calendar-user&fmt-out=text/html

    此列表定义了前一示例中的变量:

    • server—运行 Calendar Server 的服务器的名称。

    • port—Calendar Server 端口号。默认端口为 80。

    • admin-user—Calendar Server 管理员。例如,calmaster

    • admin-passwordadmin-user 的密码。

    • calendar-user –Calendar Server 用户的 calid

    如果命令运行成功,系统将显示 calendar-user 的日历。如果发生问题,系统将显示未授权

    以下是命令可能失败的一些原因:

    • admin-user 没有 Calendar Server 管理员权限。

    • admin-password 不正确。

    • calendar-user 不是有效的 Calendar Server 用户。

12.9 刷新 Calendar Server 配置

在 Calendar Server 6.3 版本中,使用 stop-calstart-cal 命令来刷新配置。有关详细信息,参见12.1 启动和停止 Calendar Server 6.3 进程

第 13 章 管理 Calendar Server 域

本章介绍如何管理 Calendar Server 部署中的域的概念性信息和说明。

本章包括以下各节,介绍如何管理多域:

13.1 选择正确的用户管理工具

有两种管理 Calendar Server 域的方法。

可使用以下两组工具中的一组:

有关特定对象类和属性的信息,参见《Sun Java System Communications Services 6 2005Q4 Schema Reference》

有关多域的概述和其他介绍材料,参见第 10 章,设置多域 Calendar Server 6.3 环境


注意 – 注意 –

Calendar Server 并不支持使用 Access Manager 控制台来管理域。


13.2 创建新 Calendar Server 域

本节介绍将域添加到 Calendar Server 部署的概念性信息和说明。可使用任一具有多域的模式。不过,如果可以,建议使用 Schema 版本 2 以利用更高级的工具集。

本节包含以下主题:

13.2.1 创建 Calendar Server 域的概述

默认情况下,Calendar Server 软件已启用多域。请勿更改以下 ics.conf 参数的值: service.virtualdomain.support="yes".

完成第 10 章,设置多域 Calendar Server 6.3 环境中描述的准备工作后,就可以添加新域了。

每个域都有一组可设置的属性和首选项。这些属性是 icsCalendarDomain 对象类的一部分。这些属性包含首选项,例如访问权限、访问控制列表 [ACL]、域搜索、域搜索访问权限、用户状态和代理登录。

13.2.2 在 Schema 版本 2 模式下添加域

本节介绍如何在 Schema 版本 2 模式下添加域。

您可以使用 Delegated Administrator 控制台或实用程序:

13.2.3 在 Schema 版本 1 模式下添加域

本节包括使用 csdomain 实用程序的简化范例说明。

要在 Schema 版本 1 下创建域,使用 csdomain create。例如,要创建 west.sesta.com,使用以下命令:

csdomain create west.sesta.com

有关如何配置多域的说明,参见第 10 章,设置多域 Calendar Server 6.3 环境

13.3 启用交叉域搜索

本节介绍如何启用交叉域搜索。

本节包括要启用交叉域搜索所必须执行的两项任务:

使用以下工具之一可以完成此操作:ldapmodify(用于任一 Schema 模式),或者 Delegated Administrator 控制台或实用程序(适用于 Schema 版本 2)。

13.3.1 添加允许搜索该域的域的名称

每个域 LDAP 条目在 ACE 中指定访问权限,该 ACE 是在 icsExtendedDomainPrefs 属性的 domainAccess 参数中定义的。允许外部域搜索该域的两种方法是:

1.8 Calendar Server 版本 6.3 的访问控制中有对 ACI 结构的更完整解释。

13.3.1.1 允许特定的域搜索该域

这有三种实现方法:


注 –

虽然您可以使用列出的前两种方法指定给予域的确切权限,但是后一种方法(使用 Delegated Administrator 控制台)却不能给予管理员同样多的控制权限。权限列表是预设的。给予的权限有:free-busy 访问和 event scheduling 访问。用户无法看到事件的详细信息,除非日历的所有者已将权限设置为允许所有用户阅读该信息。


13.3.1.2 允许所有外部域搜索该域

有三种方法允许外部域搜索该域:


注 –

虽然您可以使用列出的前两种方法指定给予域的确切权限,但是后一种方法(使用 Delegated Administrator 控制台)却不能给予管理员同样多的控制权限。权限列表是预设的。给予的权限有:free-busy 访问和 event scheduling 访问。用户无法看到事件的详细信息,除非日历的所有者已将权限设置为允许所有用户阅读该信息。


13.3.2 添加允许该域进行搜索的域的名称

本节介绍如何添加允许进行搜索的域的名称。

有三种方式可以添加允许该域进行搜索的外部域:

第 14 章 管理用户、组和资源

本章介绍如何使用 Delegated Administrator 和 Calendar Server 实用程序管理用户、组和资源。

本章包括以下各节:

14.1 创建日历用户 LDAP 条目

本节说明如何创建新用户条目。

本节包含以下主题:

14.1.1 在 Schema 版本 2 模式下创建新日历用户

本节介绍如何针对 Schema 版本 2 LDAP 条目创建新的日历用户。

您可以使用 Delegated Administrator 控制台或实用程序:

14.1.2 针对 Schema 版本 1 模式创建新的日历用户

使用 csuser 实用程序。例如,要在 sesta.com 域中添加用户 jdoe,使用以下命令:

csuser -m jdoe@sesta.com -d sesta.com create jdoe

14.2 创建日历组 LDAP 条目

本节介绍如何创建新的组 LDAP 条目

本节包括以下说明:

14.2.1 针对 Schema 版本 2 模式创建新的日历组

组为命名的用户、资源或其他组(嵌套组)的列表。组可以为静态或是动态。


提示 –

组不能同时包含静态成员和动态成员。如果创建了空组,默认情况下将其视为静态组。


可使用以下工具之一:

14.2.2 针对 Schema 版本 1 模式创建新的日历组

直接添加组 LDAP 条目。使用在《Sun ONE Directory Server Resource Kit 5.2 Tools Reference》中列出的 Directory Server LDAP 命令。

组 LDAP 条目应包括 icsCalendarGroup 对象类,它是 GroupofUniqueNames 对象类的扩展。以下为可包括的属性:

属性 

说明 

groupid

这是组唯一的必需属性。它是组的唯一标识符,类似于用户的 uid

icsSecondaryowners

组的共有所有者。 

icsDefaultacl

新的组日历的 ACL 字符串。 

icsCalendar

该组的默认日历的 calid

组可以没有默认日历。 

icsStatus

组日历的状态。可能的值有:activeinactivedeleted

icsTimezone

组的时区。 

icsDWPHost

默认日历所在的后端主机的名称。 

icsDoublebooking

默认日历是否允许在同一时期安排多个事件。此属性优先于域级别首选项(icsAllowRights 的第 15 位)。有关组的域级别默认值的信息,参见为组配置 Calendar Server

icsAutoaccept

默认日历是否会自动接受邀请。 

mail

该组的电子邮件地址。 

owner

组的所有者 LDAP 条目的标识名。必须为唯一值。 


注 –

通过 GroupOfUniqueNames 对象类的属性 owner 指定主要所有者。


例如,组 LDAP 条目可能包括:

dn: groupid=mygroup, ou=group, o=sesta.com
objectclass:groupofuniquenames
objectclass:icsCalendarGroup
groupid:mygroup
owner:uid=jdoe, ou=people, o=sesta.com
icsSecondaryowners:uid=pfox, ou=people, o=sesta.com
icsStatus:active
uniqueMember: uid=wsmith, ou=people, o=sesta.com

有关对象类和属性的更多信息,参见《Sun Java System Communications Services 6 2005Q4 Schema Reference》

14.3 创建日历资源 LDAP 条目

本节描述如何创建新资源。

使用以下方法之一创建日历资源条目:

14.3.1 针对 Schema 版本 2 模式创建新的日历资源

本节说明如何在 Schema 版本 2 模式下创建新的资源 LDAP 条目。

您可以使用 Delegated Administrator 控制台或实用程序:

14.3.2 针对 Schema 版本 1 创建新的日历资源

使用 csresource 实用程序创建 LDAP 条目和资源日历。例如,要添加投影仪 p101,请使用以下命令:

csresource -m p101@siroe.com -c p101 create Projector_101

有关 csresource 的更多信息,参见D.15 csresource

14.4 将 mail 属性添加到用户、组和资源 LDAP 条目

本节介绍为 LDAP 条目启用邮件服务的概念性信息和说明。

本节包含以下主题:

14.4.1 将邮件服务添加到 Calendar Server LDAP 条目的概述

Calendar Server 要求用户、组和资源拥有 mail 属性,它包含用户、组或资源的电子邮件地址。这使用户可以使用电子邮件地址或 calid 来搜索日历。使用 Delegated Administrator 创建新用户时,它将自动添加 mail 属性。即使未为用户指定 mail 服务,也会自动添加该属性。然而,如果用户和资源是在一个无需 mail 属性的 Calendar Server 版本中创建的,则可能需要将 mail 属性添加到现有的用户和资源 LDAP 条目中。


注 –

添加 mail 属性并不启用针对用户日历的电子邮件通知。

Calendar Server 不支持针对组或资源日历的电子邮件通知。

要针对用户日历启用电子邮件通知,请将以下两个属性添加到用户的 LDAP 条目中:


14.4.2 检查 LDAP 条目中是否存在 mail 属性

如果不知道自己的用户、组和资源是否拥有 mail 属性,那么在 Schema 版本 2 环境中,使用 Delegated Administrator 来检查是否存在邮件服务。

对于 Schema 版本 1 环境,使用带有 -v(详细)选项的 csattribute list 命令。

例如,要检查会议室资源 Room100 是否拥有 mail 属性,应发出以下命令:

csattribute -v list Room100

输出说明了 mail 属性是否存在:

cn=Room 100,ou=conferenceRooms,dc=sesta,dc=com
 has mail: Room100@sesta.com

如果存在 mail 属性,则无需再添加此属性。如果不存在此属性,需按照以下章节中的介绍进行添加。

14.4.3 将 Mail 属性添加到 Calendar Server 版本 6.3 的现有用户、组和资源 LDAP 条目中

如果要将现有的 LDAP 条目转换到日历启用的条目,必须将 mail 属性添加到每个不包含此属性的用户、组和资源 LDAP 条目。

要将 mail 属性添加到现有用户、组和资源,使用以下方法之一:

14.5 管理现有用户

本节介绍管理 LDAP 数据库中的用户条目的概念性信息和说明。但并不包括创建用户条目。有关创建用户条目的信息,参见14.1 创建日历用户 LDAP 条目

对于 Schema 版本 2 LDAP 用户条目,使用 Delegated Administrator 实用程序或控制台来管理用户,而对于 Schema 版本 1 LDAP 用户条目,使用 csuser 实用程序来管理用户。

本节中介绍的管理任务有:

14.5.1 显示日历用户信息

本节显示两个使用 Calendar Server 实用程序命令 csuser list 的示例,一个示例是获取所有日历用户列表,另一个示例是显示特定用户的日历属性(从 LDAP 用户条目)。

本节包含以下主题:

14.5.1.1 显示所有已启用日历操作的用户

要显示所有已启用日历操作的用户,可使用以下命令行实用程序:

csuser list

14.5.1.2 显示特定用户的日历属性

要显示某个用户的所有日历属性,可发出以下命令行实用程序:

csuser -v list fully-qualified-user-name

例如,如果用户是属于 sesta.com 域的 jsmith,命令行将如下所示:

csuser -v list jsmith@sesta.com

14.5.2 禁用日历用户

禁用用户的目的是阻止用户登录 Calendar Server。根据创建用户所使用的用户管理工具,禁用用户的处理方法不尽相同。在 Delegated Administrator 控制台中创建的用户,也应使用该控制台进行管理。同样地,如果是使用 Delegated Administrator 实用程序为用户指定了日历服务,也应使用该实用程序删除日历服务。每一种情况的处理方法都有所相同。

本节包含以下主题:

14.5.2.1 使用 Delegated Administrator 控制台禁用用户

在 Delegated Administrator 控制台中,无法仅临时禁用用户。必须从用户删除日历服务。要执行此操作,从“用户列表”页面中选择用户。在该用户的“属性”中,删除带有日历服务的服务软件包。该操作将禁止用户访问日历,还会将用户的 icsStatus 设置为 inactive


注 –

如果该软件包还包含其他服务,则必须用不包含日历的另一个软件包重新指定这些服务。


14.5.2.2 使用 Delegated Administrator 实用程序 (commadmin user delete) 禁用用户

要禁止用户访问日历服务,请从用户的 LDAP 条目删除该服务,如下例所示:

commadmin user delete jsmith -S cal

此命令会从用户删除日历服务,但并不完全删除 LDAP 条目。此外,该命令将把用户的 icsStatus 更改为 inactive

14.5.2.3 使用 Calendar Server 实用程序 (csuser disable) 禁用用户

disable 命令将禁止用户访问日历数据,但它并不从用户的 LDAP 条目或 Calendar Server 数据库删除日历服务。实用程序会通过将 icsAllowedServiceAccess="http" 添加到用户 LDAP 条目来标识被禁用的用户。

例如,可使用以下命令禁止 jsmith 访问 Calendar Server:

csuser disable jsmith

如果 jsmith 当前已经登录 Calendar Server,则在注销之前 jsmith 将一直拥有对日历数据的访问权。

14.5.2.4 使用 Calendar Server 实用程序从用户删除日历服务

要从用户删除日历服务,可使用 csuser 实用程序 reset 命令。

例如,要从 jsmith 删除日历服务,可使用如下命令:

csuser reset jsmith

执行此命令会从用户的 LDAP 条目(包括 icsCalendarUser(对象类)、icsSubscribedicsCalendarOwnedicsCalendaricsDWPHost(如果使用 LDAP CLD))中删除所有日历属性。Calendar Server 管理员将不能再以该用户的名义创建日历。


注 –

出现以下任一情况时,将恢复用户的日历服务:


14.5.3 启用日历用户

本节介绍如何为用户启用日历服务。

创建用户后,通常会为其启用日历服务。不过也可能禁用某个用户。要重新为用户启用日历服务,必须使用本节中的某种方法。


注意 – 注意 –

使用 Delegated Administrator 控制台和实用程序启用用户的方法会略有不同。因此,应使用同一工具来启用和禁用用户。请勿使用一个工具禁用用户,又使用另一工具来重新启用用户。


本节包括以下启用用户的方法:

14.5.3.1 使用 Delegated Administrator 控制台启用用户

无法从控制台禁用用户。可先删除日历服务,然后再重新添加。要重新添加服务,可从“用户列表”页面选择用户,然后使用“指定服务软件包”向导将日历服务软件包添加到用户的 LDAP 条目。将自动启用该用户。


注 –

它也是用于添加日历服务的过程(14.5.4 为用户添加日历服务)。


14.5.3.2 使用 Delegated Administrator 实用程序启用用户

Delegated Administrator 实用程序可使用以下方法之一启用用户:


注意 – 注意 –

确保使用同一方法启用和禁用用户。如果尝试使用 Delegated Administrator 控制台启用用户,在使用 Delegated Administrator 实用程序禁用用户后(仅更改 icsStatus),系统将无法再添加服务,因为用户已拥有服务且用户仍将被禁用。


14.5.3.3 使用 Calendar Server 实用程序重新启用用户

要为用户重新启用日历服务,可使用 csuser enable 从用户的 LDAP 记录中删除 icsAllowedServiceAccess="http"

14.5.4 为用户添加日历服务

不必为使用旧的(Schema 版本 1)Calendar Server 实用程序创建的用户添加日历服务。但是,使用(Schema 版本 2)Delegated Administrator 时,可从用户的 LDAP 条目添加和删除日历服务。

要将日历服务添加到现有用户,使用以下工具之一:

14.5.4.1 使用 Delegated Administrator 控制台为用户添加日历服务

可将日历服务添加到新用户和现有用户:

14.5.4.2 使用 Delegated Administrator (commadmin user create) 为用户添加日历服务

创建新用户时添加日历服务,如以下示例所示:

commadmin user create jsmith -S cal

如果创建用户时没有添加日历服务,则可以在以后使用 modify 命令为用户添加日历服务,如以下示例所示:

commadmin user modify jsmith -S cal

14.5.4.3 使用 Calendar Server 实用程序添加日历服务

如果在创建用户条目时使用 csuser create,则实用程序会通过将 icsCalendarUser 及其属性添加到用户 LDAP 条目来为用户指定日历服务。

14.5.5 从用户 LDAP 条目删除日历服务

一种拒绝为用户指定日历服务的方法是从用户条目中删除服务。另一种方法是临时禁用用户。这些内容在之前的14.5.2 禁用日历用户一节中都有介绍。

14.5.6 为日历用户设置电子邮件别名

如果需要为日历用户设置电子邮件别名,可将 mailalternateaddress 属性添加到用户的 LDAP 条目。mail 属性提供了主电子邮件地址,而 mailalternateaddress 属性提供了电子邮件别名。这两个属性都将邮件地址映射到用户的日历 ID (calid)。

可通过以下三种方法来添加属性:

使用 commadmin user modify -A 或使用 ldapmodify 直接更新 LDAP。


注 –

要启用这些更改,可能还需要重新生成别名表或别名配置。请参阅 Messaging Server(或您的电子邮件产品)的文档,以及您站点上关于更改邮件服务的文档和过程。可在以下位置获得 Messaging Server 文档:http://docs.sun.com/coll/1312.2http://docs.sun.com/coll/1392.2


Procedure使用 Delegated Administrator 控制台设置电子邮件别名

  1. 选择用户所在的组织。

  2. 搜索用户。

  3. 单击用户名显示用户的属性。

  4. 编辑“邮件服务详细信息”以添加别名。

另请参见

Delegated Administrator 联机帮助。

14.5.6.1 使用 Delegated Administrator 实用程序设置电子邮件别名

可为日历用户设置电子邮件别名(与向用户传送消息一样),只需将 mailalternateaddress 添加到 LDAP 条目。要通过 Delegated Administration 实用程序添加属性,使用 commadmin user modify -A mailalternateaddress:value

14.5.6.2 使用 Calendar Server 实用程序 csattribute 设置电子邮件别名

要为用户添加电子邮件别名,使用 csattribute add -a 命令将 mailalternateaddress 属性添加到用户条目。

例如,要为具有以下值的用户 John Smith 添加两个别名:

命令类似如下:

csattribute -a mailalternateaddress=johns@sesta.com add johnsmith@sesta.com

csattribute -a mailalternateaddress=jsmith@sesta.com add johnsmith@sesta.com

14.5.7 验证用户是否具有日历服务

本节说明如何验证日历服务。

使用以下工具验证用户是否具有日历服务。

14.5.7.1 使用 Delegated Administrator 控制台检查用户是否具有日历服务

如果存在“日历服务详细信息”页面,则表示其具有日历服务。也可在服务软件包详细信息中查看所列出的服务类型。

14.5.7.2 使用 Delegated Administrator 实用程序检查用户是否具有日历服务

使用以下命令列出所有与用户相关的目录属性:

commadmin user search

14.5.7.3 使用 Calendar Server 实用程序 csuser 检查用户是否具有日历服务

使用以下命令检查是否为用户启用了日历服务:

csuser check

14.5.8 从 LDAP 数据库删除用户

使用 Delegated Administrator 或 Calendar Server 实用程序从 LDAP 删除用户。

使用以下两种方法之一从 LDAP 数据库中删除用户:


注意 – 注意 –

没有 undelete 命令。

一旦使用 Delegated Administrator 删除了域中的用户,就必须清除这些用户并从头重新添加。清除之前,无法重新使用用户名。


Procedure使用 Delegated Administrator 删除 Schema 版本 2 中的用户

您可以通过任何一个 Delegated Administrator 界面标记要删除的用户,但是,无法使用 Delegated Administrator 控制台实际从 LDAP 删除(清除)用户。必须使用 Delegated Administrator 实用程序清除用户。以下任务列出了从 LDAP 删除用户的步骤。完成最后一个步骤之前,不会真正从 LDAP 删除用户。

  1. 标记要删除的用户条目。

    对于 Delegated Administrator 控制台:从“用户列表”页面中选择要删除的用户,并单击“删除”。

    对于 Delegated Administrator 实用程序:使用 commadmin user delete 命令。例如:

    commadmin user delete -D chris -n siroe.com 
    -w bolton -l jsmith

    两种情况中,用户 LDAP 条目中的 icsStatus 属性都从 active 更改为 deleted

  2. 使用 Calendar Server 实用程序的 csclean 在一个或所有域中删除属于所有已删除用户的所有日历,如下例所示:

    csclean clean“*”

    或指定实际的域以删除属于该域中所有已删除用户的日历,如下例所示:csclean clean sesta.com


    提示 –

    如果在删除用户日历之前,不小心从 LDAP 清除了用户,您可以稍后使用 cscal 实用程序删除日历,如15.6 管理用户日历所述。


  3. 使用 Delegated Administrator 实用程序命令 commadmin domain purge 清除域中所有标记为删除的用户。

    例如:

    commadmin domain purge -D chris -d sesta.com -n siroe.com -w bolton

    在本示例中,将清除 sesta.com 中标记为已删除的所有用户,也就是永久删除。


    提示 –

    请经常手动运行此实用程序以清除 LDAP 目录。有关此命令的更多信息,参见《Sun Java System Communications Services 6 2005Q4 Delegated Administrator Guide》


14.5.8.1 在 Schema 版本 1 环境中删除用户

使用 Calendar Server 实用程序 csuserdelete 命令删除指定用户的 LDAP 条目及其默认日历。

例如,要删除用户 jsmith 的 LDAP 条目和默认日历,请使用以下命令:

csuser delete jsmith

如果您希望删除属于该用户的其他日历,则必须使用 cscal,如15.6 管理用户日历所述。

14.5.9 重命名日历用户

如果需要更改一个或多个用户 ID,运行 csrename 实用程序。

此实用程序将执行以下步骤:


注 –

请注意,即使只更改一个用户 ID,也会导致整个数据库被重写。因此,运行该实用程序要付出很大代价。

有关 csrename 实用程序的更多信息,参见附录 D,Calendar Server 命令行实用程序参考


14.5.10 关闭公共可写入日历功能

公共可写入日历为一个 Calendar Server 功能。可打开或关闭此功能。默认情况下启用此功能。以下任务显示如何编辑配置文件以更改设置。

如果启用此功能,可在生成邀请时计划(写入)日历。事件会自动添加到参与者的日历中。

如果禁用此功能,仅在生成邀请时日历所有者才会收到电子邮件通知。事件不会自动添加到参与者的日历中。只有所有者才可将事件和任务添加到日历中。

Procedure禁止用户拥有可写入的公共日历

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 /etc/opt/SUNWics5/cal/config 目录。

  4. 通过复制和重命名旧的 ics.conf 文件来保存该文件。

  5. 编辑下表所示的以下 ics.conf 参数:

    参数 

    说明和默认值 

    service.wcap.

    allowpublicwritablecalendars

    允许用户拥有可写入的公共日历。默认情况下,已启用(设置为 "yes")此功能。

  6. 将此文件另存为 ics.conf

  7. 重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

14.6 管理 Calendar Server 资源

本节介绍管理日历资源的概念性信息和说明。

添加资源后,可使用 Delegated Administrator 或 csresource 来管理这些资源。

本节包含以下主题:

14.6.1 检索资源的 LDAP 信息

本节说明如何检索资源的 LDAP 信息。

可使用以下三种工具之一从 LDAP 资源条目检索资源属性:

Procedure使用 Delegated Administrator 控制台检索资源信息

  1. 在 Delegated Administrator 控制台中,单击“日历资源”选项卡。

  2. 使用“搜索结果”下拉框选择以下选项之一:

    • 通过资源 ID 搜索日历资源

    • 通过日历资源名称搜索日历资源

  3. 键入要搜索的值。

  4. 单击“搜索”。

14.6.1.1 使用 Delegated Administrator 实用程序检索资源信息

使用 commadmin resource search 命令检索资源的 LDAP 信息。

例如,要在 sesta.com 域中搜索资源 CF101,可使用以下命令:

commadmin resource search -D serviceadmin -w serviceadmin -n sesta.com \s
-d sesta.com -u CF101

Procedure使用 csresource 检索资源信息

可使用 csresource 实用程序检索特定资源或所有资源的 LDAP 条目信息。

  1. 转至 sbin 目录。

  2. 使用 csresource list 命令列出一个或所有资源。

    例如,可输入以下命令列出关于所有资源的所有信息:

    ./csresource -v list

    或者列出有关特定资源 CF101 的所有信息:

    ./csresource

Procedure启用资源

  1. 转至 sbin 目录。

  2. 使用 csresource enable 命令启用一个或多个资源。

    例如,可使用以下命令启用 ConfRm12 资源:

    ./csresource -v enable ConfRm12

Procedure禁用资源

  1. 转至 sbin 目录。

  2. 使用 csresource disable 命令禁用一个或多个资源。例如,可使用以下命令禁用 ConfRm12 资源:

    ./csresource -v disable ConfRm12

Procedure删除资源

  1. 转至 sbin 目录。

  2. 使用 csresource delete 命令删除一个或多个资源。例如,可使用以下命令删除 ConfRm12 资源:

    ./csresource -v delete ConfRm12

14.6.2 为资源电子邮件设置 Bitbucket 通道

本节说明如何为 Messaging Server 和 Sendmail 设置 bitbucket 通道。使用 bitbucket 通道可以删除为资源日历生成的电子邮件。这些示例使用了 sesta.com 服务器上名为 Room100 的资源。如果不设置 bitbucket 通道(或等价机制),则需要定期删除发送至资源日历的电子邮件。

本节包含以下过程:

Procedure设置 Messaging Server bitbucket 通道

  1. 确保在 imta.cnf 文件中定义了 bitbucket 通道。

  2. 要将消息定向至 bitbucket 通道,使用 csattribute 实用程序为资源创建电子邮件地址:


    csattribute -a mail=Room100@bitbucket.sesta.com add Room100

Procedure设置 Sendmail bitbucket 通道

  1. 在相应主机上的 /etc/aliases 文件中添加如下条目:

    Resource/Conference room aliases Room100: /dev/null

  2. 使用 csattribute 实用程序将资源的电子邮件地址添加到 LDAP 目录中:

    csattribute -a mail=Room100@sesta.com add Room100

14.7 管理用户和资源的 LDAP 属性

可使用 D.3 csattribute 实用程序或 ldapmodify 管理 Calendar Server 使用的 LDAP 属性。可使用 csattribute 列出、添加或删除属性。要修改属性,使用 ldapmodify

本节包含以下主题:

Procedure列出 LDAP 条目属性

  1. 以安装过程中指定的运行 Calendar Server 的用户或组(例如 icsusericsgroup)身份登录,或以 root 登录。

  2. 转至 sbin 目录。

  3. 使用 csattribute list 命令列出用户或资源的属性。例如,要列出 tchang@sesta.com 的属性,可发出以下命令:

    ./csattribute -t user -d sesta.com list tchang

Procedure添加 LDAP 条目属性

  1. 以安装过程中指定的运行 Calendar Server 的用户或组(例如 icsusericsgroup)身份登录,或以 root 登录。

  2. 如果要立即识别此属性更改,请停止 Calendar Server。否则,您无需停止 Calendar Server。

  3. 转至 sbin 目录。

  4. 使用 csattribute add 命令为用户或资源添加属性。例如,要为用户 tchang 添加值为 Conference_Schedule 的 LDAP 属性 icsCalendar,使用以下命令:

    ./csattribute -a icsCalendar=Conference_Schedule add tchang@sesta.com

Procedure删除 LDAP 条目属性

  1. 以安装过程中指定的运行 Calendar Server 的用户或组(例如 icsusericsgroup)身份登录,或以 root 登录。

  2. 如果要立即识别此属性更改,请停止 Calendar Server。否则,您无需停止 Calendar Server。

  3. 转至 sbin 目录。

  4. 使用 csattribute delete 命令删除用户或资源的属性。例如,要删除用户 tchang 的值为 Conference_Schedule 的 LDAP 属性 icsCalendar,使用以下命令:

    ./csattribute -a icsCalendar=Conference_Schedule -t user -d sesta.com delete tchang

14.7.1 修改 LDAP 条目属性

要修改 LDAP 条目属性,使用 ldapmodify。例如,要更改 uid=tchang 所对应的用户的状态,按以下所示使用 ldapmodify 命令:


dn:uid=tchang,ou=people,o=sesta.com
 changetype: modify
 add: objectclass
 objectClass: icsCalendarUser
 add: icsStatus
 icsStatus: active

注 –

如果站点正在使用 LDAP CLD 插件,请勿尝试通过使用 csattribute 更改 icsDWPHost 的值将用户的日历从一个后端主机移动到另一个后端主机。修改 icsDWPHost 并不会将日历移动到新的后端主机。有关如何将日历从一个后端服务器移动到另一个后端服务器的说明,参见15.6 管理用户日历


第 15 章 管理日历

本章介绍多个包含如何使用 Calendar Server 命令行实用程序来创建和管理日历的说明的主题。

本章包含以下主题:

15.1 Calendar Server 版本 6.3 的日历管理概述

Delegated Administrator 不会创建或管理日历。您必须使用附录 D,Calendar Server 命令行实用程序参考 中介绍的 Calendar Server 实用程序。

在创建日历之前,您必须了解以下信息:

要运行 cscalcsresource,必须以对运行 Calendar Server 的系统具备管理权限的用户身份登录。必须从 /opt/SUNWics5/cal/sbin 目录运行这些命令。也就是说,必须更改为 sbin 目录;不能通过指定路径来从其他目录运行这些命令。

15.2 创建日历的唯一标识符 (calid)

Calendar Server 数据库中的每个日历都由一个唯一的日历标识符 (ID) 或 calid 标识。创建日历时,需要指定 calid

本节包含以下主题:

15.2.1 Calid 语法

数据库中的每个日历都由一个唯一的日历 ID (calid) 标识。下面的 calid 语法分成三部分:

userid[@domain][:calendar-name]

这三个部分分别为:

userid

此 Calendar Server 实例中的域的唯一用户 ID。

domain

用户的域的名称。

如果只有单个域,则域这一部分可选,因为用户位于哪个域中是明确的。

如果存在多个域,而又没有指定域这一部分,则 Calendar Server 将使用 ics.conf 参数 service.defaultdomain 中指定的值来指定域。如果用户不在默认的域中,则必须指定域部分。

有关多域环境的详细信息,参见 第 10 章,设置多域 Calendar Server 6.3 环境 以及 第 13 章,管理 Calendar Server 域

calendar-name

特定用户的唯一可选日历名。虽然一个所有者只有一个默认日历,但是,出于其他用途,有可能拥有多个日历。每个非默认日历由其日历名称识别。例如,如果用户 John Doe 具有 uid jdoe,则他的默认日历可能是 jdoe@sesta.com。而他用于记录他所执教的 Little League 队的棒球比赛的附加日历可能由下面的 calid 标识:jdoe@sesta.com:baseball

15.2.2 日历 ID 创建规则

本节描述创建日历 ID (calid ) 的规则。

创建 calid 时,请注意以下规则:

15.2.3 将非域 calid 转换为多域格式的 calid

如果在您拥有域之前已创建了 calid,而现在又希望将其转换为特定于域的 calid,则可使用实用程序 csvdmig 将域部分添加到现有的 calid 中。有关如何使用此实用程序的说明,请参见3.6 csvdmig

如果未将域名添加到现有的 calid 中,则系统将假定它们属于默认域。

15.3 自动创建日历

本节介绍使用 Calendar Server 功能来在用户首次登录时自动创建日历的概念性信息和说明。

默认情况下,将启用日历的自动创建。启用后,系统会在以下两种情况下自动创建日历:

有关在此类情况下实现日历的自动创建所必需的配置信息,参见为组配置 Calendar Server

本节包含以下主题:

15.3.1 创建 calid

Calendar Server 根据用户 ID 和域名为新的默认日历创建日历 ID (calid)。

例如,John Smith 的用户 ID 为 jsmith,而他的 LDAP 条目驻留在 sesta.com 域中。在他首次登录到 Calendar Server 时,系统会自动创建默认日历,其中 jsmith@sesta.comcalid。John Smith 随后创建的每个日历的 calid 都将使用 jsmith@sesta.com: 作为日历名称的前缀。例如,如果 John Smith 稍后创建一个名为 meetings 的新日历,则新日历的 calidjsmith@sesta.com:meetings

如果事件的参与者列表中列出了不具有默认日历的用户、组或资源,则系统将在事件所有者域的 LDAP 中查找 uid,并将其作为事件所有者。如果没有为所有者分配域,则假定采用默认域。系统通过将域附加到 uid 来构造 calid

如果系统在事件所有者的域中找不到 uid,则它将搜索允许事件所有者搜索的任何其他域。有关详细信息,参见 11.2 在 Calendar Server 6.3 系统中执行交叉域搜索

Procedure启用日历的自动置备

默认情况下,将启用日历的自动创建。但是,如果要在禁用它以后再次启用它,请执行以下步骤:

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 /etc/opt/SUNWics5/cal/config 目录。

  4. 通过复制和重命名旧的 ics.conf 文件来保存该文件。

  5. 在 Calendar Server 配置文件 ics.conf 中编辑下表中所示的一个或多个参数:

    参数 

    说明和默认值 

    local.autoprovision

    设置为 "yes",则允许在用户首次登录后自动创建默认日历。默认情况下,将启用自动置备。 

    要禁用此功能,请将该值设置为 "no"。 

  6. 验证是否已为日历启用了用户的 LDAP 条目。

    此条目必须包含 icsCalendarUser 对象类。如果尚不存在该对象类,请向用户的 LDAP 条目添加该对象类。

  7. 如果站点使用多个域,则用户的域也必须启用日历,自动置备才能正常运行。此域条目必须包含 icsCalendarDomain 对象类。

  8. 保存此文件。

  9. 重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

Procedure禁用日历的自动置备

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 /etc/opt/SUNWics5/cal/config 目录。

  4. 通过复制和重命名旧的 ics.conf 文件来保存该文件。

  5. 在 Calendar Server 配置文件 ics.conf 中编辑下表中所示的一个或多个参数:

    参数 

    说明和默认值 

    local.autoprovision

    将该参数设置为 no 将禁用用户日历的自动置备。

  6. 保存此文件。

  7. 重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal


    注 –

    如果禁用了自动置备,则必须为用户明确创建日历,用户才能成功登录。


15.4 日历访问控制

Calendar Server 使用访问控制列表 (Access Control List, ACL) 来确定日历、日历属性和日历组件(例如事件和待办事项(任务))的访问控制。

本节包含以下主题:

15.4.1 访问控制的配置参数

下表介绍了 ics.conf 文件中 Calendar Server 用于访问控制的配置参数。

表 15–1 访问控制的配置参数

参数 

说明 

calstore.calendar.default.acl

指定用户创建日历时使用的默认访问控制设置。默认值为: 

"@@o^a^r^g;@@o^c^wdeic^g;

@^a^fs^g;@^c^^g;@^p^r^g"

calstore.calendar.owner.acl

指定日历所有者的默认访问控制设置。默认值为: 

"@@o^a^rsf^g;@@o^c^wdeic^g"

resource.default.acl

指定创建资源日历时使用的默认访问控制设置。默认值为: 

"@@o^a^r^g;@@o^c^wdeic^g;

@^a^rsf^g"

15.4.2 “公用”和“私人”事件与任务过滤器

创建新事件或任务时,用户可以指定该事件或任务是“公用”、“私人”还是“仅时间与日期(保密)”:

公用

对用户的日历拥有读取权限的任一用户均可以查看事件或任务。

私人

仅日历所有者可以查看事件或任务。

仅时间与日期

这些是保密事件和任务。日历所有者可以查看事件或任务。拥有日历读取权限的其他用户只能查看日历中“未命名的事件”,而且此标题不是一个活动链接。

calstore.filterprivateevents 确定 Calendar Server 是否过滤(识别)“私人”和“仅时间与日期(保密)”事件和任务。默认情况下,此参数设置为 "yes"。如果将 calstore.filterprivateevents 设置为 "no",那么 Calendar Server 将按处理“公用”事件和任务的方式处理“私人”及“仅时间与日期”事件和任务。

15.4.3 访问控制的命令行实用程序

下表介绍了 Calendar Server 命令行实用程序,它们允许您设置或修改访问控制的 ACL:

表 15–2 访问控制的命令行实用程序

实用程序 

说明 

cscal

使用带有 -a 选项的 createmodify 命令为特定的用户或资源日历设置 ACL。

csresource

使用带有 -a 选项的 csresource 实用程序为资源日历设置 ACL。

commadmin 用户

csuser

对于 Schema 版本 2,使用 Delegated Administrator 控制台或 Delegated Administrator 实用程序 commadmin 来更改创建用户日历时使用的默认 ACL。

对于 Schema 版本 1,使用带有 -a 选项的 csuser 实用程序来更改用户创建日历时所使用的默认 ACL。


注 –

要在 Delegated Administrator 控制台中从“组织属性”页(或从“新建组织”向导)设置访问权限,请单击“高级权限”按钮查看可通过控制台管理的访问权限列表。


15.5 创建日历

本节介绍如何创建日历的概念性信息和说明。

本节包含以下主题:

15.5.1 使用 cscal 实用程序创建用户日历

本节包含以下主题和示例:

以下示例创建与前一个示例类似的日历,但它还将设置特定的访问控制设置以用于组计划:

cscal -n Hobbies -o jsmith -a "@@o^a^sfr^g" create Personal

字符串 -a "@@o^a^sfr^g" 为其他所有者授予对该日历的组件和日历属性的预定、空闲/繁忙和读取访问权限,以便进行组计划。

15.5.1.1 新建日历概述

要新建日历,使用 cscal 实用程序的 create 命令。LDAP 目录中必须已经存在用户条目或资源条目。有关向 LDAP 目录添加用户和资源的信息,请参阅第 14 章,管理用户、组和资源

如果您的站点使用的是 LDAP 日历查找数据库 (Calendar Lookup Database, CLD) 插件,则必须按照用户条目或资源条目中的 icsDWPHost LDAP 属性中的指定,在同一后端服务器上为特定用户或资源创建所有日历。如果试图在不同的后端服务器上创建日历,cscal 实用程序将返回一条错误消息。有关 LDAP CLD 插件的信息,参见 第 5 章,在 Calendar Server 版本 6.3 中配置跨多个计算机的日历数据库分发

15.5.1.2 新建日历

要新建日历,至少要使用以下命令:

cscal -o uid  create calid

例如,对于唯一 ID 和日历 ID 为 jsmith 的用户 John Smith,命令将如下所示:

cscal -o jsmith create jsmith

命令具有以下部分:

cscal

实用程序的名称。

-o

该日历的主要所有者的唯一 ID (uid)。

create

用于新建日历的命令。

calid

将分配给该日历的日历 ID。

有关 cscal 实用程序的详细信息,参见 D.5 cscal(它也在本指南中)。


提示 –

默认访问控制设置由 ics.conf 文件中的 calstore.calendar.default.acl 定义。


15.5.1.3 为用户创建另一个日历

可为任意用户创建多个日历。但是,始终会将它们标识为默认日历的子日历。在新日历的全限定名称中,冒号分隔符的左边是默认日历的名称,右边则为新日历的名称。

以下示例演示了如何为用户 John Smith 创建另一个(非默认)日历,新日历的名称为 Personal

cscal -o jsmith@sesta.com create Personal

命令的组成部分如下:

cscal

实用程序的名称。

-o jsmith@sesta.com

该日历的主要所有者的唯一 ID (uid)。

create

用于新建日历的命令。

Personal

要分配给该日历的日历 ID (calid) 的后半部分。

全限定日历 ID 为 jsmith@sesta.com:Personal

15.5.1.4 使用可见名称来创建日历

本示例显示如何为在前一示例中创建的 Personal 非默认日历创建一个单独的可见名称 "Hobbies"。

cscal -o jsmith@sesta.com -n Hobbies create Personal

-o

jsmith@sesta.com 指定主要所有者的用户 ID。

-n

Hobbies 指定日历的可见名称。

Personal

John Smith 的该新附加日历的名称。

整个 calid 变为:jsmith@sesta.com: Personal

15.5.1.5 使用其他属性来创建日历

以下示例通过与前一示例类似的步骤来新建日历 Personal,但它还会将日历与名为 sports 的类别关联起来,启用重复预订,并将 Ron Jones 指定为另一个所有者:

cscal -n Hobbies -o jsmith - g sports -k yes -y rjones create Personal

命令具有以下部分:

cscal

实用程序的名称。

-o jamsith@sesta.com

该日历的主要所有者的唯一 ID (uid)。

-g sports

该选项会将日历 Personal 与名为 sports 的类别关联起来。

-y

rjones@sestas.com 指定了日历的另一个所有者。

-k yes|no

此选项会在一段时间内启用或禁用事件的重复预订。

值为 yes 会启用重复预订。值为 no 会禁用重复预订。

create

用于新建日历的命令。

Personal

将分配给该日历的日历 ID。

15.5.2 为资源配置 Calendar Server

资源日历与可计划的事物相关联,如会议室、笔记本电脑、顶置光源投影仪以及其他设备。资源日历需要访问控制列表。

表 15–3 所示,ics.conf 文件中的两个配置参数适用于资源日历:

resource.default.acl

默认访问控制列表。

resource.allow.doublebook

允许或禁止重复预订的参数。

要更改这些参数(如 表 15–3 中所示)的默认值,请编辑 ics.conf 文件。对默认值所做的更改只能应用到新的资源日历,而不能更改现有资源日历的值。

对于 Schema 版本 1,使用 Calendar Server 实用程序 cscal 更改现有资源日历的值。csresource 实用程序没有 modify 命令。

对于 Schema 版本 2,使用 Delegated Administrator 实用程序的 commadmin resource modify 命令。Delegated Administrator 控制台不允许您更改日历资源的这些值。


注 –

Calendar Server 通知软件不会向资源发送通知,而是仅向用户发送通知。


表 15–3 ics.conf 文件中的资源日历配置参数

参数 

说明和默认值 

resource.default.acl

此参数决定创建资源日历时使用的默认访问控制权限。默认权限由以下访问控制列表 (ACL) 指定: 

"@@o^a^r^g;@@o^c^wdeic^g;@^a^rsf^g"

此 ACL 将授予所有日历用户读取、调度和空闲/繁忙访问该日历(包括组件和属性)的权限。 

要更改资源的权限,在使用 csresource 实用程序的 create 命令创建日历时使用 -a 选项。

resource.allow.doublebook

此参数决定资源日历是否允许重复预订。重复预订允许资源日历同时具有多个预定的事件。 

默认值为 "no"—不允许重复预订。

要启用资源日历的重复预订功能,请在使用 csresource 实用程序的 create 命令创建日历时使用 -k 选项。

resource.invite.autoprovision

默认值为 "yes"

resource.invite.autoaccept

默认值为 "yes"

15.5.3 创建资源和资源日历


提示 –

如果 ics.conf 参数 resource.invite.autoprovision 的值为 "yes",则会在首次邀请时创建资源日历。也就是说,如果该资源尚没有默认日历,则在邀请中首次对其进行预定时,会创建资源日历。


要创建资源,使用以下方法之一:

Calendar Server 实用程序(Schema 版本 1)

使用 csresource create

此实用程序创建了资源的 LDAP 条目和默认日历。

如果已存在该资源的 LDAP 条目,csresource 将仅创建日历。而不会创建重复的 LDAP 条目。

例如,可以使用以下命令创建日历 ID 为 aud100、可见名称为 Auditorium 且具有默认设置的资源 LDAP 条目和日历:

csresource -m aud100@siroe.com -c aud100 create Auditorium

Delegated Administrator 实用程序和 Calendar Server 实用程序

使用两个命令的组合:

  • Delegated Administrator 实用程序命令 commadmin resource create,用于创建 LDAP 条目。

  • Calendar Server 实用程序命令 csresource create,用于创建默认日历。

Delegated Administrator 控制台

要使用控制台创建 LDAP 资源,请从“组织列表”选择此资源将驻留的组织。从此组织的“日历资源”页,单击“新建”以显示“新建日历资源向导”。

有关 Delegated Administrator 实用程序的更多信息,参见 《Sun Java System Communications Services 6 2005Q4 Delegated Administrator Guide》

有关 Delegated Administrator 控制台的更多信息,请参见联机帮助。

有关 csresource 的更多信息,参见 附录 D,Calendar Server 命令行实用程序参考

15.5.4 允许重复预订资源日历

默认情况下,Calendar Server 不允许对资源日历进行重复预订(resource.allow.doublebook 参数)。此默认值用于防止资源(例如房间和设备)的预定冲突。但是,如果您要允许对资源日历进行重复预订,可以在创建日历时将 csresource -k 选项设置为 "yes"。

以下命令创建资源 LDAP 条目和日历,但 -k 选项允许对日历进行重复预订,-o 选项指定 bkamdar 作为日历的所有者,而 -y 选项指定 jsmith@sesta.com 作为另一个所有者:

csresource -m aud100@siroe.com -c aud100 -k yes
    -o bkamdar -y jsmith@sesta.com create Auditorium

15.5.5 限制对资源日历的访问

要控制可以预定特定资源的人员,请考虑限制对资源日历具有写入权限的用户。例如,您可能只希望几个特定用户预定会议室或设备。

如果不为资源日历指定所有者,则其值将由 ics.conf 文件中的 service.siteadmin.userid 参数指定。

15.6 管理用户日历

本节介绍如何使用 Calendar Server 实用程序 D.5 cscal 来管理用户日历的说明。

本节包含以下管理任务:

15.6.1 显示日历

要显示所有日历、用户拥有的所有日历或特定日历的属性,使用 cscal 实用程序 list 命令。

以下示例演示了使用 cscal 的三个不同任务。

15.6.2 删除日历

要从 Calendar Server 删除一个或多个日历,使用 cscal 实用程序 delete 命令。此实用程序将删除日历,但并不会从 Directory Server 中删除用户。

以下两个示例演示了可利用 cscal delete 完成的不同任务:


注意 – 注意 –

delete 命令将从日历数据库中删除所有日历信息,并且不能撤消。删除日历后,只有在已经对日历数据进行了备份的情况下才能恢复它。有关更多信息,参见 第 17 章,备份和恢复 Calendar Server 数据


15.6.3 删除已删除的用户的日历

如果您已使用 Calendar Server 实用程序命令 csuser delete 或者 Delegated Administrator 控制台或实用程序删除了一个或多个用户,则用户所拥有的日历可能仍存在于数据库中。

可以用两种方法来删除用户的日历。要使用的方法取决于删除用户所使用的工具:

Calendar Server 实用程序 csuser

csuser 实用程序用于删除 LDAP 目录下的用户以及该用户的默认日历,但不会删除该用户可能拥有的其他任何日历。有关如何使用 cscal 来删除这些日历的说明,参见在 Calendar Server 版本 6.3 中删除使用 csuser 删除的用户的所有日历

Delegated Administrator 控制台和实用程序

Delegated Administrator 不会删除任何日历。使用 Delegated Administrator 将用户标记为已删除,然后使用 Calendar Server 实用程序 csclean 删除标记为已删除的用户的所有日历。

有关如何使用 csclean 来删除已删除的用户的日历的说明,参见删除由 Delegated Administrator 删除的用户的所有日历

有关使用 Delegated Administrator 实用程序的说明,参见 《Sun Java System Communications Services 6 2005Q4 Delegated Administrator Guide》

有关使用 Delegated Administrator 控制台的说明,请参见联机帮助。

Procedure在 Calendar Server 版本 6.3 中删除使用 csuser 删除的用户的所有日历

  1. 运行 cscal list 命令来查找已删除的所有者 uid 的所有日历。

    cscal -o owner list

  2. 使用 cscal 命令来删除此所有者的所有日历。

    cscal -o owner delete

  3. 通过再次运行 csuser list 来验证是否已删除所有日历。


    注 –

    如果您已使用 commadmin 将用户标记为已删除,并且该用户的 LDAP 条目已被清除,则使用此过程。


Procedure删除由 Delegated Administrator 删除的用户的所有日历

Delegated Administrator 不会删除日历。使用 csclean 实用程序来删除已使用 Delegated Administrator 标记为已删除的任何用户的所有日历。

  1. 使用 csclean 来删除标记为已删除但尚未被清除的用户的所有日历。

    例如,要删除最近 10 天 sesta.com 域中标记为已删除的用户的所有日历,则应执行如下命令:

    csclean -g 10 clean sesta.com

  2. 如果用户已从 LDAP 中清除,那么您必须使用 cscal

    有关说明,参见在 Calendar Server 版本 6.3 中删除使用 csuser 删除的用户的所有日历

15.6.4 启用日历

要允许用户访问其日历,必须首先使用 cscal enable 命令来启用日历。

以下示例演示了如何启用日历:

15.6.5 禁用日历

要防止用户访问日历,使用 cscal 实用程序的 disable 命令。disable 命令将禁止用户访问日历,但并不会从日历数据库中删除信息。

例如,要防止用户访问 jsmith@sesta.com:meetings ,使用以下命令:

cscal disable jsmith@sesta.com:meetings

15.6.6 修改日历属性

要修改日历的属性,使用 cscal 实用程序的 modify 命令。

例如,可使用以下命令来更改 AllAdmins 的组预定访问控制设置并将 RJones@sesta.com 指定为另一个所有者:

cscal -a "@@o^c^wd^g" -y RJones@sesta.com modify AllAdmins

以下内容介绍了上面的示例中所使用的两个命令变量:

15.6.7 从日历中删除属性

要从日历删除属性值,使用 cscal modify 命令并用两个双引号 ("") 指定选项的值。

以下三个示例显示如何删除不同的属性:

15.6.8 恢复“丢失的”默认日历

如果用户的默认日历对于 Communications Express 用户界面客户端不可见但仍存在于数据库中,则可通过更新用户的 LDAP 条目中的两个属性来恢复日历并使其再次可见。

要恢复日历,确保用户的 LDAP 条目中的以下属性的值为用户的全限定 calid

对于 Schema 版本 2,使用以下方法之一更新属性:

对于 Schema 版本 1,使用 csattribute add 命令更新属性。

Procedure将用户日历移至不同的后端服务器

要将用户日历从一个后端服务器移至其他后端服务器,请执行以下操作:

  1. 在原始服务器上,使用 D.19 csuser 实用程序禁用日历用户。例如,可使用以下命令禁用用户 ID 和 calidbkamdar 的用户:

    csuser disable bkamdar

  2. 在原始服务器上,使用D.10 csexport实用程序将用户的每个日历从日历数据库导出到某个文件中。例如:

    csexport -c bkamdar calendar bkamdar.ics

  3. 将导出的日历文件 (*.ics) 从原始服务器复制到新服务器上。

  4. 在新服务器上,针对已导出的每个日历,使用D.11 csimport实用程序将日历从此文件导入到日历数据库中。例如:

    csimport -c bkamdar calendar bkamdar.ics

  5. 在 LDAP 目录服务器上,使用 D.3 csattribute 实用程序更新日历所有者的 icsDWPHost LDAP 属性,以指向新的后端服务器。要更新属性,必须先删除该属性,然后再添加它并为其指定新值。例如,要将新服务器名设置为 sesta.com


    csattribute -a icsDWPHost delete bkamdar
     csattribute -a icsDWPHost=sesta.com add bkamdar
  6. 在新服务器上,使用 D.19 csuser 实用程序来启用用户日历的日历用户。例如:

    csuser enable bkamdar

  7. 在新服务器上,使用以下命令验证这些属性是否正确以及是否已正确移动了每个日历。例如:


    cscal -v -o bkamdar list bkamdar
     ...
     csattribute -v list bkamdar
  8. 在原始服务器上,删除刚刚移动的每个日历。例如:

    cscal -o bkamdar delete bkamdar

    -o 选项将删除主要所有者为 bkamdar 的所有日历。


    注 –

    如果您要在将日历移至不同的后端服务器之后使用 CLD 高速缓存选项,则应清除 CLD 高速缓存以删除该服务器名称。CLD 高速缓存中的过期条目可以阻止前端服务器在日历被移动后查找此日历。

    要清除 CLD 高速缓存,请执行以下操作:

    • 停止 Calendar Server。

    • 删除 /var/opt/SUNWics5/csdb/cld_cache 目录中的所有文件,但不删除 cld_cache 目录本身。

    • 重新启动 Calendar Server。


15.7 管理资源日历

本节描述了如何使用 csresource 实用程序来管理资源日历。

以下是管理资源日历所需的过程:

15.7.1 显示资源日历及其属性

要显示资源日历,使用 csresource 实用程序的 list 命令。

例如,使用实用程序执行以下任务:

15.7.2 修改资源日历

本节描述了如何修改资源日历。必须使用 D.5 cscal 实用程序命令,因为 csresource 实用程序没有 modify 命令。

例如,以下命令同时执行两项任务:

cscal - o tchang -y mwong modify aud100

在本示例中,cscal 实用程序要求指定资源的 calid (aud100) 而不是日历名称 (Auditorium)。

15.7.3 禁用或启用资源日历

您可能希望禁用资源日历,以防止用户预定事件。例如,会议室可能因为装修而无法使用,或顶置光源投影仪已送修。

要禁用或启用资源日历,使用 csresource 实用程序的 enabledisable 命令。

例如,可使用以下命令禁用名为 Auditorium 的资源日历:

csresource disable Auditorium

然后,可使用以下命令启用资源日历:

csresource enable Auditorium

15.7.4 删除资源日历

要删除资源日历,使用 csresource 实用程序的 delete 命令。

例如,要删除 Auditorium 资源日历,发出以下命令:

csresource delete Auditorium

Calendar Server 将显示以下消息:

Do you really want to delete this resource (y/n)?

输入 y 删除日历或输入 n 取消操作。

如果输入 y,Calendar Server 将删除日历并显示表明日历已被删除的消息。

Procedure将资源日历移动到另一后端服务器

要将用户或资源日历从一个后端服务器移至其他后端服务器,请执行以下操作:

  1. 在原始服务器上,使用D.15 csresource实用程序禁用日历资源。例如,禁用具有公用名称 Auditorium 的资源:

    csresource disable Auditorium

  2. 在原始服务器上,使用D.10 csexport实用程序将资源的每个日历从日历数据库导出到某个文件中。例如:

    csexport -c aud100 calendar aud100.ics

  3. 将导出的日历文件 (*.ics) 从原始服务器复制到新服务器上。

  4. 在新服务器上,针对已导出的每个日历,使用 D.11 csimport实用程序将文件中的日历导入到日历数据库中。例如:

    csimport -c bkamdar calendar bkamdar.ics

  5. 在 LDAP 目录服务器上,使用 D.3 csattribute 实用程序更新日历所有者的 icsDWPHost LDAP 属性,以指向新的后端服务器。要更新属性,必须先删除该属性,然后再添加它并为其指定新值。例如,可使用以下命令将新服务器名设置为 sesta.com

    csattribute -a icsDWPHost delete bkamdar csattribute -a icsDWPHost=sesta.com add bkamdar

  6. 在新服务器上,使用 D.15 csresource 实用程序启用日历资源。例如:

    csresource enable bkamdar

  7. 在新服务器上,使用以下命令验证这些属性是否正确以及是否已正确移动了每个日历。例如:

    cscal -v -o bkamdar list bkamdar csattribute - v list bkamdar

  8. 在原始服务器上,删除刚刚移动的每个日历。例如:

    cscal -o bkamdar delete bkamdar

    -o 选项将删除主要所有者为 bkamdar 的所有日历。


    注 –

    如果您要使用 CLD 高速缓存选项并且已将日历移至不同的后端服务器,则应清除 CLD 高速缓存以删除该服务器名称。CLD 高速缓存中的过期条目可以阻止前端服务器在日历被移动后查找此日历。要清除 CLD 高速缓存,请执行以下操作:

    • 停止 Calendar Server。

    • 删除 /var/opt/SUNWics5/csdb/cld_cache 目录中的所有文件,但不删除 cld_cache 目录本身。

    • 重新启动 Calendar Server。


15.8 创建日历链接

只要将每个日历的权限设置为允许读取访问,就可以创建指向一个或多个用户或资源日历的链接。例如,可以在 Web 页或电子邮件消息中嵌入日历链接。然后,其他用户就可以匿名查看该日历而无需登录 Calendar Server。

可使用以下语法创建到一个或多个用户日历的链接:

http://CommunicationsExpresshostname:
CommunicationsExpressport/uwc/
   ?calid=calid-1[; ... ;calid-n]

对于多个日历,使用半角分号 (;) 分隔每个日历 ID (calid)。

例如,要链接到 jsmith@sesta.comjdoe@siroe.com 的默认日历,请输入:

http://calendar.sesta.com:8080/uwc/?calid=jsmith@sesta;jdoe@siroe.com

要链接 calid overhead_projector10 的顶置光源投影仪的资源日历,请输入:

http://calendar.sesta.com:8080/uwc/?calid=overhead_projector10

15.9 导入和导出 Calendar Server 6.3 数据库中的日历数据

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

必须在已安装 Calendar Server 的本地计算机上运行 csexportcsimport。Calendar Server 可以正在运行或已经停止。

15.9.1 导入日历数据

要从以前使用 csexport 实用程序保存的文件中导入日历数据,使用 csimport。导入文件的文件扩展名(.ics.xml)表明了文件的保存格式。

例如,可使用以下命令从以 iCalendar (text/calendar MIME) 格式保存的文件 jsmith.ics 中将日历数据导入到日历 ID (calid) 为 jsmithcal@sesta.com 的日历中:

csimport -c jsmithcal@sesta.com calendar jsmith.ics

可使用以下命令从以 XML (text/xml MIME) 格式保存的文件 jsmith.xml 中将数据导入到日历 jsmithcal@sesta.com 中:

csimport -c jsmithcal@sesta.com calendar jsmith.xml

15.9.2 导出日历数据

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

以下示例显示了如何使用导出实用程序:

第 16 章 使用 csdb 实用程序管理 Calendar Server 数据库

Calendar Server 在多个目录中保留多个数据库文件。您必须实施第 9 章,配置自动备份中所述的自动备份过程或者实施您自己的系统备份来保护数据库文件。可使用 csdb 实用程序来管理数据库文件。

本章介绍了如何使用 csdb 实用程序来管理 Calendar Server 数据库,并包含以下各节:

16.1 使用 csdb 实用程序管理日历数据库

要管理数据库文件,请使用 Calendar Server 实用程序 csdb。本节包含以下主题:

16.1.1 识别三种逻辑数据库组

日历数据库实用程序 csdb 将数据库文件视为以下三种逻辑数据库(组):

16.1.1.1 日历数据库组 (Calendar Database Group, csdb)

caldb 数据库由数据库目录中的所有 .db 文件和 _db.* 文件组成。以下为日历数据库文件(以及 cld_cacheldap_cache 子目录)的默认位置:

/var/opt/SUNWics5/csdb

如果愿意,也可在运行 Calendar Server 配置程序 (csconfigurator.sh) 时指定另一目录。有关配置程序的信息,参阅第 2 章,Calendar Server 6.3 软件的初始运行时配置程序 (csconfigurator.sh)

下表介绍了各种日历数据库 (caldb) 文件。

表 16–1 Calendar Server 数据库文件

文件 

说明 

ics50calprops.db

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

ics50events.db

所有日历的事件。 

ics50todos.db

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

ics50alarms.db

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

ics50gse.db

组调度引擎 (group scheduling engine, GSE) 的计划请求队列。 

ics50journals.db

日历的日志。当前发行版中尚未实现日志功能。 

ics50caldb.conf

数据库版本标识符。 

ics50recurring.db

重复性事件。 

ics50deletelog.db

已删除的事件和待办事项(任务)。另请参见第 18 章,管理“删除日志”数据库

16.1.1.2 会话数据库组 (Session Database Group, sessdb)

会话数据库由以下目录中的所有文件组成:/opt/SUNWics5/cal/lib/admin/session//opt/SUNWics5/cal/lib/http/session/

16.1.1.3 统计信息数据库组 (Statistical Database Group, statdb)

统计信息数据库由 counter 目录中的所有文件组成:

/opt/SUNWics5/cal/lib/counter/

16.1.2 使用 csdb 实用程序确定特定的数据库组目标

使用 csdb 实用程序的 -t 选项可以指定目标数据库:

-t caldb

日历数据库组。

-t sessdb

会话数据库组。

-t statdb

统计信息数据库组。


提示 –

如果没有 -t 选项,csdb 将对所有三个数据库执行操作。checkrebuild 这两个命令则仅对日历数据库 caldb 执行操作。


16.2 使用 csdb 实用程序管理数据库

本节介绍了如何使用 D.8 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重新建立日历数据库组 (Calendar Database Group, caldb)(不包括 GSE 数据库)

要恢复已损坏的日历数据库 (calendar database, 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) 文件和事务日志 (log.*) 文件从 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

16.2.1 删除数据库组

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

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

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

csdb -t caldb delete

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

第 17 章 备份和恢复 Calendar Server 数据

如果已选择不使用由 Calendar Server 提供的自动备份工具(使用 csstored),则您需要执行备份过程以保护数据。本章介绍了如何使用 Calendar Server 工具和其他 Sun 工具来执行对日历数据库文件的手动备份和恢复。

要备份和恢复 /var/opt/SUNWics5/csdb 目录中的 Calendar Server 数据,使用以下命令行实用程序:


注 –

如果您具有使用 Berkeley 数据库工具(例如 db_recover)的现有自定义脚本,则会发现在升级到 Calendar Server 版本 6.3 后,这些工具将无法工作。在 Calendar Server 软件的较早版本中,使用静态库对这些工具进行编译。现在使用动态库来编译它们。

要适应此更改,请按以下方式更改自定义脚本以便使用动态链接库:将全局变量 LD_LIBRARY_PATH 更改为动态库的名称 (libdb-4.2.so)。


本章包括以下各节:


注意 – 注意 –

Calendar Server 版本 2 数据与当前产品不兼容。请不要尝试恢复由 Calendar Server 版本 2 backup 实用程序备份的日历数据,否则可能会导致数据丢失。

如果您有要移动到当前版本的版本 2 日历数据,则必须与技术支持部门联系以获取相应的迁移实用程序。


17.1 备份 Calendar Server 数据

csbackup 实用程序可以备份日历数据库、指定日历或用户的默认日历。本节包括以下内容:

Procedure将日历数据库备份到目录中

  1. 以数据库文件所有者的身份登录(例如 icsuser)。

  2. 使用 csbackup 实用程序 database 命令。

    例如,可使用以下命令将日历数据库备份到名为 backupdir 的目录中:

    csbackup -f database backupdir

  3. 通过检查备份目录中的 ics50caldb.conf 版本文件来验证是否已备份数据库的正确版本。


    注 –

    如果目标备份目录已存在而您没有指定 -f 选项,则 csbackup 实用程序将失败。例如,如果 backupdir 已经存在,即使该目录为空,以下命令也将失败:

    csbackup database backupdir

    因此,如果指定的目标备份目录已经存在,则需在运行 csbackup 时包含- f 选项。

    也可以指定一个不存在的目标备份目录,让 csbackup 为您创建该目录。


Procedure将特定日历备份到文件中

  1. 以数据库所有者的身份登录 (icsuser)。

  2. 要以 iCalendar 或 XML 格式将日历备份到文件中,使用 csbackup 实用程序 calendar 命令。

    备份文件的扩展名(.ics.xml)表明了其格式。

    例如,可使用以下命令以 iCalendar (text/calendar MIME) 格式将日历 jsmithcal@sesta.com 备份到 backupdir 目录中的 jsmith.ics 文件中:

    csbackup -c jsmithcal@sesta.com calendar backupdir/jsmith.ics

    或者,使用以下命令以 XML (text/XML) 格式将日历 jsmithcal@sesta.com 备份到 backupdir 目录中的 jsmith.xml 文件中:

    csbackup -c jsmithcal@sesta.com calendar backupdir/jsmith.xml

Procedure将用户的默认日历备份到文件中

  1. 以数据库所有者的身份登录 (icsuser)。

  2. 要以 iCalendar 或 XML 格式将用户的默认日历备份到文本文件中,使用 csbackup 实用程序 def cal 命令。为输出文件指定的文件扩展名(.ics.xml)决定了使用的格式。

    例如,使用以下命令以 iCalendar (text/calendar MIME) 格式将用户 jsmith@sesta.com 的默认日历备份到备份目录中名为 jsmith.ics 的文件中:

    csbackup -a jsmith@sesta.com defcal backupdir/jsmith.ics

    或者,使用以下命令以 XML (text/xml MIME) 格式将用户 jsmith@sesta.com 的默认日历备份到备份目录中名为 jsmith.xml 的文件中:

    csbackup -a jsmith@sesta.com defcal backupdir/jsmith.xml

17.2 恢复 Calendar Server 数据

csrestore 实用程序恢复使用 csbackup 保存的日历数据库、单个日历或用户默认日历。必须在安装 Calendar Server 的本地计算机上运行 csrestore 实用程序,且必须首先停止 Calendar Server。(但备份数据库时可以运行 Calendar Server。)

本节包括以下内容:

Procedure恢复日历数据库

  1. 以数据库所有者的身份登录 (icsuser)。

  2. 要恢复使用 csbackup 实用程序保存到备份目录的日历数据库,使用 csrestore 实用程序 database 命令。

    例如,可使用以下命令恢复保存到名为 backupdir 的备份目录中的日历数据库:

    csrestore database backupdir

Procedure从备份目录中恢复日历

  1. 以数据库所有者的身份登录 (icsuser)。

  2. 要从数据库中恢复使用 csbackup 实用程序保存到备份目录的特定日历,使用带有 -c 选项的 csrestore 实用程序 database 命令。

    例如,可使用以下命令从备份数据库目录 backupdir 中恢复日历 jsmithcal@sesta.com

    csrestore -c jsmithcal@sesta.com calendar backupdir

Procedure从文件中恢复日历

  1. 以数据库所有者的身份登录 (icsuser)。

  2. 要恢复使用 csbackup 实用程序保存到备份文件中的特定日历,使用带有 -c 选项的 csrestore 实用程序 calendar 命令。

    备份文件的文件扩展名(.ics .xml)表明了日历的保存格式。

    例如,可使用以下命令恢复以 iCalendar (text/calendar MIME) 格式保存到 backupdir 目录中文件 jsmith.ics 中的日历 jsmithcal@sesta.com

    csrestore -c jsmithcal@sesta.com calendar backupdir/jsmith.ics

    或者使用以下命令恢复以 XML (text/calendar MIME) 格式保存到 bcakupdir 目录中文件 jsmith.xml 中的日历 jsmithcal@sesta.com

    csrestore -c jsmithcal@sesta.com calendar backupdir/jsmith.xml

Procedure恢复用户的默认日历

  1. 以数据库所有者的身份登录 (icsuser)。

  2. 要恢复使用 csbackup 实用程序保存到备份文件中的用户默认日历,使用 csrestore 实用程序 defcal 命令。

    备份文件的文件扩展名(.ics.xml)表明了日历的保存格式。

    例如,使用以下命令恢复用户 jsmith@sesta.com 的以 iCalendar (text/calendar MIME) 格式保存到备份目录 backupdir 中名为 jsmith.ics 的文件中的默认日历:

    csrestore -a jsmith@sesta.com defcal backupdir/jsmith.ics

    使用以下命令恢复以 XML (text/xml MIME) 格式保存到备份目录 backupdir 中名为 jsmith.xml 的文件中的 jsmith 默认日历:

    csrestore -a jsmith@sesta.com defcal backupdir/jsmith.xml

17.3 使用 Sun StorEdge Enterprise BackupTM 或 Legato Networker®

也可以使用 Sun StorEdge Enterprise Backup 软件(以前称为 Solstice Backup)或 Legato Networker 来备份和恢复 Calendar Server 数据。Sun StorEdge Enterprise Backup 软件和 Legato Networker 相似,本节中的说明同时适用于这两种产品。

然而,在尝试备份 Calendar Server 之前,请参见 Sun StorEdge Enterprise Backup 或 Legato Networker 文档。

有关 Sun StorEdge Enterprise Backup 软件的文档,请访问 http://docs.sun.com

本节包括以下内容:

17.3.1 StorEdge 或 Legato 工具

Calendar Server 在 /opt/SUNWics5/cal/sbin 目录中提供了以下文件,可与 Sun StorEdge 或 Legato 备份软件一起使用:

icsasm

Calendar Server 应用程序特定模块 (Application Specific Module, ASM)。ASM 是一个程序,可由 Sun StorEdge 或 Legato 备份软件调用以备份和恢复数据。

legbackup.sh

用于调用 csbackup 实用程序的脚本。

legrestore.sh

用于调用 csrestore 实用程序的脚本。

Procedure使用 Sun StorEdge Enterprise Backup 软件或 Legato Networker 备份日历数据

要使用 Sun StorEdge 或 Legato 备份软件来备份日历数据库,请执行以下操作:

  1. 将 Sun StorEdge 或 Legato 的 nsrfile 二进制文件复制到 /usr/lib/nsr 目录中。

  2. /usr/lib/nsr 目录中创建以下符号链接:

    icsasm -\> /opt/SUNWics5/cal/sbin/icsasm nsrfile -\> /usr/lib/nsr/nsrfile

  3. 转到 /opt/SUNWics5/cal/sbin 目录,并运行带有 -l 选项的 csbackup 实用程序。例如:

    cd /opt/SUNWics5/cal/sbin ./csbackup -l

    -l 选项将在当前目录下创建备份目录映像。该目录中是一些空文件,仅用于向备份程序提供关于如何在备份介质中存储日历的信息。如果备份目录已经存在,系统将按照当前目录的结构对其进行同步。

  4. 使用 save 命令备份日历数据。例如:

    /usr/bin/nsr/save -s /opt/SUNWics5/cal/sbin/budir

    也可以使用 Sun StorEdge 或 Legato 备份 GUI 来预定备份,方法是设置客户端存储集以定期备份数据库。

    注意:请不要修改 .nsr 文件。这些生成的文件包含备份过程中由 save 命令和 icsasm 命令负责解释的指令。

    Calendar Server 不支持增量备份功能。请不要使用该功能,因为备份目录只是文件夹结构的映像,并不包含实际的数据。

    不能备份名称中包含非 ASCII 字符或反斜杠 (/) 的日历。

  5. 让备份过程自动完成。

    前面的步骤介绍了如何手动运行备份操作。在运行备份程序的 save 命令之前,设置备份程序的 backup 命令以运行 Calendar Server csbackup 命令行实用程序,从而实现自动化的备份进程。

Procedure使用 Sun StorEdge Enterprise Backup 软件或 Legato 软件来恢复日历数据

要恢复日历数据:

  1. 使用 Sun StorEdge Enterprise Backup 软件 nwrestore 功能或 recover 命令恢复备份的日历信息。

    如果使用 nwrestore,将看到以下消息:


    "File already exists. Do you want to overwrite, skip, backup, or rename?"
  2. 选择 overwrite

    出现该消息是因为备份树只是目录的分层结构。也就是说,备份树由空文件组成,且永远保持这种状态。

第 18 章 管理“删除日志”数据库

Calendar Server 包括“删除日志”数据库 (ics50deletelog.db),该数据库用来存储已删除的事件和待办事项(任务)。

在早期版本中,Calendar Server 没有提供维护已删除事件和任务的数据库。存储日历事件和任务的本地副本的用户界面很难确定已删除了哪些事件。客户端软件不得不将所有事件或待办事项(任务)的唯一标识符 (uid) 或周期标识符 (rid) 与数据的 Calendar Server 副本进行比较,以确定已删除哪些组件。这种局限性直接影响了使用 WCAP 命令生成客户端用户界面 (UI) 的安装。为解决此局限性,创建了“删除日志”数据库。

与必须对所有数据库文件进行管理一样,也需要管理“删除日志”数据库。以下章节介绍了如何管理删除日志文件:

18.1 创建“删除日志”数据库

csdb 目录下除了创建其他 Calendar Server 数据库文件,Calendar Server 还将自动创建“删除日志”数据库 (ics50deletelog.db)。Calendar Server 按如下方式在“删除日志”数据库中写入事件和待办事项:

18.2 查询“删除日志”数据库

本节说明如何查询“删除日志”数据库。

要从“删除日志”数据库返回条目,使用 WCAP 命令 fetch_deletedcomponents(不管是在扩展模式还是在压缩模式下)。

以下信息介绍指定每种模式的时间和方法。

有关 WCAP 命令的更多信息,参见《Sun Java System Calendar Server 6.3 WCAP Developer’s Guide 》

18.3 清理“删除日志”数据库

本节说明如何清理“删除日志”数据库。Calendar Server 提供两种清理“删除日志”数据库的方法,即自动清理和手动清理。

本节包含以下主题:

18.3.1 调优“删除日志”清理

在清理“删除日志”数据库前,需非常了解您正在为其提供服务的最终用户。如果最终用户使用的是 Communications Express,则默认的参数设置已足够。然而,如果他们使用的是存储事件和任务的本地副本的客户端用户界面(例如 Connector for Microsoft Outlook 或 Sync Tool),则必须调整自动清理配置参数的设置以满足其需求。通常,他们需要“删除日志”数据库包括 30 天甚至更多的条目。这样会显著增加“删除日志”的大小。如果调整失败,则会导致数据库出错。同样还应调整清理时间间隔以满足用户的需求。例如,在允许清理“删除日志”数据库之前,如果该数据库保留了 30 天的数据,则不应每分钟都运行清理。数据库的内容每天都会换出,因此一天执行一次清理比较合理。

手动运行 cspurge 时也会出现类似的问题。如果从“删除日志”中删除的内容过多,则会导致 Connector for Microsoft Outlook 和 Sync Tool 的用户无法与服务器数据库保持同步。

如果隔很长时间才清理一次“删除日志”数据库,可能会导致文件变得非常大。然后,在开始清理这些巨型文件时,日常事务日志也会明显增大,以反映每个被清理的项目都是一个记录到这些日志中然后又归档到归档和紧急备份中的一个事务。事务日志中的这些大型异常现象会使其显得系统似乎出现了故障,并且需花费时间来指明所发生的事情。

18.3.2 自动清理“删除日志”数据库

如果需要,可让 Calendar Server 在指定时间间隔内自动清理“删除日志”数据库中的条目。默认情况下,禁用自动清理。

下列 ics.conf 参数可控制自动清理功能。

表 18–1 自动清理“删除日志”数据库的配置参数

参数 

说明 

service.admin.purge.deletelog

启用 ("yes") 或禁用 ("no") 自动清理“删除日志”数据库 (ics50deletelog.db) 条目功能。

默认值为 "no"

caldb.berkeleydb.purge.deletelog.interval

指定自动清理“删除日志”数据库 (ics50deletelog.db) 中条目的时间间隔(以秒为单位)。

默认值为 60 秒。

caldb.berkeleydb.purge.deletelog.beforetime

指定清理“删除日志”数据库 (ics50deletelog.db) 中条目前的时间(以秒为单位)。

默认值为 518400 秒(6 天)。

例如,要使 Calendar Server 每五分钟(300 秒)自动清理一次 2 天(172800 秒)前生成的“删除日志”数据库条目,按如下所示设置18.3.2 自动清理“删除日志”数据库中所述参数:

service.admin.purge.deletelog="yes"
 caldb.berkeleydb.purge.deletelog.interval=600
 caldb.berkeleydb.purge.deletelog.beforetime=172800

设置这些参数后,重新启动 Calendar Server 以使新值生效。

18.3.3 手动清理“删除日志”数据库

可选择使用 cspurge 实用程序手动清理“删除日志”数据库 (ics50deletelog.db) 中的条目:

该实用程序的用法如下:

cspurge -e endtime -s starttime

变量 endtimestarttime 指定以祖鲁时间(也称为 GMT 或 UTC 时间)表示的开始时间和结束时间。

要运行 cspurge,必须以运行 Calendar Server 的用户和组身份登录(默认值为 icsusericsgroup )或以 root 用户身份登录。

例如,可使用以下命令清理自 2003 年 7 月 1 日到 2003 年 7 月 31 日之间的条目:

cspurge -e 20030731T235959Z -s 20030701T120000Z

有关更多信息,请参见D.13 cspurge

18.4 使用适用于“删除日志”数据库的 Calendar Server 实用程序

下表列出了支持“删除日志”数据库 (ics50deletelog.db) 的 Calendar Server 实用程序。

表 18–2 支持“删除日志”数据库的实用程序

实用程序 

说明 

cspurge

允许手动清理“删除日志”数据库中的条目。 

csbackupcsrestore

支持“删除日志”数据库的备份和恢复。 

csstats

报告“删除日志”数据库的统计信息。 

csdb

支持对“删除日志”数据库执行重建、恢复和检查操作。 

cscomponents

列出(只读)“删除日志”数据库中的条目数。 

有关更多信息(包括这些实用程序的语法),参见附录 D,Calendar Server 命令行实用程序参考

第 19 章 管理 Calendar Server 时区

本章介绍 Calendar Server 软件如何定义和处理时区。

本章包括以下各节:

有关时区属性和参数的更多信息,请参阅 RFC 2445 "Internet Calendaring and Scheduling Core Object Specification (iCalendar)":

http://www.ietf.org/rfc/rfc2445.txt

19.1 Calendar Server 时区概述

本节包含 Calendar Server 软件所实施时区的概述。

timezones.ics 文件中包含 Calendar Server 支持的时区表示。该文件位于以下目录中:

/etc/opt/SUNWics5/config/

启动时,Calendar Server 读取 timezones.ics 文件,生成时区数据,然后将数据存储在内存中。这样,在 Calendar Server 运行时,时区数据将一直保存在内存中。之后,如果添加新时区或修改现有的时区,必须停止并重新启动 Calendar Server 才能使所做的更改生效。

timezones.ics 文件中的时区由 TZID 参数标识。例如,Calendar Server 使用 America/Los_Angeles TZID 标识太平洋标准时间 (PST/PDT) 时区,如示例 19–1 所示。TZNAME 属性是时区的缩写表示,例如 PST(Pacific Standard Time,太平洋标准时间)代表 America/Los_Angeles 时区。

可识别夏令时 (daylight savings time, DST) 的时区(例如 America/Los_Angeles)包含两个组成部分:表示标准时间的 STANDARD 和表示 DST 的 DAYLIGHTX-NSCP-TZCROSS 列表包含一系列日期,用于表明时区何时被更改为(或更改自)DST (DAYLIGHT) 和标准时间 (STANDARD)。

RRULE 属性定义 STANDARDDAYLIGHT 规则的模式。TZOFFSETFROMTZOFFSETTO 属性定义从 DST 更改为标准时间或从标准时间更改为 DST 之前和之后的 GMT 偏移。Communications Express 用户界面通过 X-NSCP-TZCROSS 中的日期来确定何时显示时区中的更改。

包含时区 ID (tzid) 参数的 WCAP 命令应引用 timezones.ics 文件中定义的有效时区。Calendar Server 然后将返回以该时区表示的数据。如果 WCAP 命令指定了无法识别的时区,默认情况下,Calendar Server 将返回以 GMT 时区表示的数据。有关 WCAP 的更多信息,参阅《Sun Java System Calendar Server 6.3 WCAP Developer’s Guide 》


示例 19–1 timezones.ics 文件中 America/Los_Angeles 时区的表示

下面的示例显示了 timezones.ics 文件中 America/Los_Angeles 时区的表示。


19.2 管理 Calendar Server 时区

本节介绍如何管理时区的概念性信息和说明。

本节包含以下主题:

19.2.1 添加新时区

本节介绍如何为 Calendar Server 添加新时区,以便可以在 Communications Express 用户界面中使用它。例如,您可能需要添加 America/Miami 新时区。

要添加新时区,最简单的方法就是在以下步骤介绍的文件中复制并编辑与要添加的时区类似的时区条目。例如,如果要添加 America/Miami 时区,请复制并编辑每个文件中的 America/New_York 时区条目。如果新时区具有夏令时 (Daylight Savings Time, DST),可尝试找到类似的时区进行复制。

19.2.2 修改现有时区

本节介绍如何修改现有时区。例如,您可能需要更改时区的名称,比如将 "America/Phoenix" 更改为 "US/Arizona"。

Procedure修改现有时区

  1. 在以下文件中修改要更改的时区的时区块:

    /etc/optSUNWics5/config/timezones.ics

    如果要更改时区名称,请将 TZID 条目更改为新名称。

  2. 修改以下文件中的 getDisplayNameofTZID 模板:

    cal-svr-base/SUNWics5/cal/html/language/i18n.xsl

    其中:language 指定您的站点使用的语言的目录。例如:en 代表英语,fr 代表法语。

    如果要更改名称,请将现有的时区名称更改为新名称。

  3. 修改以下 XML 文件,对时区进行所需的更改:

    cal-svr-base/SUNWics5/cal/html/change_timezone.xml

    cal-svr-base/SUNWics5/cal/html/new_cal.xml

    cal-svr-base/SUNWics5/cal/html/new_group.xml

    有关这些文件中的条目的信息,参见19.2.1 添加新时区

  4. 如果所做的更改影响用户首选项的默认时区,修改以下文件中的 "icsTimeZone" 条目:

    cal-svr-base/SUNWics5/cal/html/default_user_prefs.xml


    注 –

    如果使用 Calendar Express 用户界面,则只需执行步骤 2、3 和 4。


  5. 停止(如果必要)并重新启动 Calendar Server 以使时区更改生效。

第 20 章 使用 Instant Messaging 弹出式提醒通知

与 Sun Java System Instant Messaging 6.0(或更高版本)集成的 Calendar Server 可以为日历事件和任务提供自动弹出式提醒通知。

本章介绍如何配置弹出式提醒通知的概念性信息和说明。

本章包括以下各节:

20.1 弹出式提醒通知概述

本节包括了解弹出式提醒通知在 Calendar Server 软件中的工作方式所需的概念性信息。

本节包含以下主题:

20.1.1 日历弹出式提醒通知的配置概念

本节介绍必须配置哪些内容才可使弹出式提醒通知起作用。

用户可以在其日历上接受到即将举行的事件和任务的 Instant Messenger 弹出式提醒通知。

要启用弹出式提醒通知,必须完成以下两件任务:

启用了弹出式提醒通知后,即将发生的事件或任务临近时,Event Notification System 中设置的警报将使 Calendar Server 发送电子邮件通知并使 Instant Messaging 显示弹出式提醒通知。

Calendar Server 管理员可以选择为最终用户配置电子邮件提醒通知或弹出式提醒通知,也可以选择同时配置这两项。例如,要关闭电子邮件提醒通知,可在 ics.conf 文件中设置以下参数:

caldb.serveralarms.binary.enable= "no"

20.1.2 弹出式提醒通知如何工作

本节介绍弹出式提醒通知的工作方式。

如果配置了 Instant Messaging 弹出式提醒通知,它将遵循下面的构建流程:

  1. Instant Messaging JMS 订户在事件通知服务 (ENS) 中订阅 Calendar Server 事件和通知。

  2. Calendar Server 将事件或任务通知以 text/xmltext/calendar 格式发送给 ENS。

  3. Instant Messaging JMS 订户接收日历事件或任务通知,然后生成 text/calendar 格式的消息。

  4. Instant Messaging Server 将消息发送给日历所有者(如果最终用户在线)。

  5. 如果收件人在线,Instant Messenger 将根据该消息在最终用户的桌面上生成 HTML 弹出式提醒通知。

20.2 配置弹出式提醒通知

本节介绍如何配置 Calendar Server 软件的弹出式提醒通知。

本节包括以下配置说明:

Procedure配置 Instant Messaging Server

配置 Instant Messaging 弹出式提醒通知所需的以下较高级别任务列表可以为您提供方便。要配置 Instant Messaging,请参阅以下站点上可用的 Instant Messaging 文档:

http://docs.sun.com/coll/1309.2

  1. 安装新软件包 SUNWiimag

    使用 Instant Messaging 弹出式提醒通知之前,必须首先使用 Java Enterprise System 安装程序安装 Instant Messaging 软件包。

  2. 在已安装 Instant Messaging 的计算机中,转到以下目录:

    cd /etc/opt/SUNWiim/default/config

  3. 编辑下表中所示的 iim.conf 文件中的一个或多个参数。

    显示的参数值假定您要为事件和任务都启用弹出式提醒通知。如果 iim.conf 文件中尚不存在这些参数,则先添加它们。

    参数 

    说明和要使用的适当值 

    JMS Consumers 部分 

     

    jms.consumers

    警报名称。将该值设置为 cal_reminder

    jms.consumer.cal_reminder.destination

    警报目标。将该值设置为 enp:///ics/customalarm 

    jms.consumer.cal_reminder.provider

    提供者名称。设置为 ens。提供者名称必须与 JMS Providers 部分中的 jms.providers 的名称相同。

    jms.consumer.cal_reminder.type

    要设置的警报的类型。将该值设置为 topic

    jms.consumer.cal_reminder.param

    警报参数。将该值设置为 "eventtype=calendar.alarm"(包括引号)

    jms.consumer.cal_reminder.factory

    C++ 工厂名称。将该值设置为: 

    com.iplanet.im.server.
    JMSCalendarMessageListener

    JMS Providers 部分 

     

    jms.providers

    提供者名称。将该值设置为 ens。该值必须与 JMS Consumers 部分中列出的 jms.consumer.cal_reminder.provider 的值相同。

    jms.provider.ens.broker=cal.example.com

    ENS 侦听的端口号。设置为 ics.conf 文件参数 service.ens.port 中指定的端口。默认值为 57997。

    jms.provider.ens.factory

    要使用的 C++ 工厂。设置为 com.iplanet.ens.jms.EnsTopicConnFactory

    Calendar Server 常见参数 

     

    iim_agent.enable

    启用 Calendar 代理。按如下所示设置该值(包括引号): 

    iim_agent.enable="true"

    iim_agent.agent-calendar.enable

    装入启用 Calendar 代理的组件。按如下所示设置该值(包括引号): 

    iim_agent.agent-calendar.enable="true"

    agent-calendar.jid

    Calendar 代理的 JID。按如下所示设置该值: 

    agent-calendar.jid=calimbot.server.domain

    agent-calendar.password

    Calendar 代理密码。按如下所示设置该值: 

    agent-calendar.password=password

    iim_server.components

    按如下所示设置该值: 

    iim_server.components=agent-calendar

  4. 转到 imadmin 命令行实用程序所在的目录:

    cd /opt/SUNWiim/sbin

  5. 使用 imadmin 启动 Calendar 代理:

    imadmin start agent-calendar

    Calendar 代理是 Instant Messaging 的一个组件,可以为 Calendar Server 用户提供弹出式功能。使用 Instant Messaging 提供的工具,可以启动、停止、重新启动 Calendar 代理或检查它的状态,也可以通过日志文件监视它的活动。


    注 –

    如果有包含 stopstartrefresh 命令的脚本,则可将 Calendar 代理加入其中。


    有关 imadmin 和 Calendar 代理的更多信息,参见《Sun Java System Instant Messaging 7 2005Q1 管理指南》。

Procedure配置 Calendar Server

开始之前

确认下表中所示的 ics.conf 参数具有所示的值。如果它们不具有这些值,或者您要对它们进行自定义设置,则按以下步骤操作:

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 /etc/opt/SUNWics5/cal/config 目录。

  4. 通过复制和重命名旧的 ics.conf 文件来保存该文件。

  5. 编辑下表中所示的 ics.conf 参数:

    参数 

    说明和默认值 

    caldb.serveralarms

    启用要排队的日历警报。默认值为 "yes"(启用)。

    caldb.serveralarms.contenttype

    警报内容的输出格式。默认值为 "text/xml"

    caldb.serveralarms.dispatch

    启用要分发的日历警报。默认值为 "yes"

    caldb.serveralarms.dispatchtype

    要分发的服务器警报的类型。默认值为 "ens"

    caldb.serveralarms.url

    这是检索警报内容的警报的 URL。默认值为 "enp:///ics/customalarm"

  6. 将此文件另存为 ics.conf

  7. 重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

Procedure配置 Instant Messenger

要接收 Calendar Server 事件和任务的弹出式提醒通知,最终用户必须按以下方式配置 Instant Messenger:

  1. 在“主”窗口中,从“工具”菜单中选择“设置”。

  2. 在“设置”窗口中,单击“警报”选项卡。

  3. 选中“显示日历提醒通知”选项。

  4. 单击“确定”。

第 21 章 优化 Calender Server 的性能

本章介绍优化 Calendar Server 性能的概念性信息和说明。

要改进 Calendar Server 的性能,请考虑使用以下方法:

21.1 为 LDAP Directory Server 编制索引

要改进 Calendar Server 访问 LDAP Directory Server 时的性能,请在 LDAP 配置文件中添加以下属性的索引:

icsCalendar

此属性用于搜索日历用户或资源的默认日历。指定存在 (pres)、等式 (eq) 和子串 (sub) 索引类型。

icsCalendarOwned

此属性用于搜索用户所拥有的其他日历。指定存在 (pres)、等式 (eq) 和子串 (sub) 索引类型。另请参见21.2 提高日历搜索在 DWP 环境中的性能

mailmailAlternateAddress

这两个属性用于指定用户的主电子邮件地址和备用电子邮件地址。另请参见14.1 创建日历用户 LDAP 条目14.5.4.3 使用 Calendar Server 实用程序添加日历服务

有关添加目录服务器索引的信息,请参阅以下位置处的 Directory Server 文档:

http://docs.sun.com/coll/1316.1http://docs.sun.com/coll/1389.1

21.2 提高日历搜索在 DWP 环境中的性能

处于 DWP 环境(即,日历数据库分布在多个后端服务器中)中时,在日历数据库中搜索某个日历将会消耗大量时间。如果先在 LDAP 条目中查找,然后直接找出该日历所在的那个 DWP 主机,日历搜索的速度将会更快。

本节包含以下主题:

Procedure启用日历搜索以查看 LDAP

要启用日历搜索先查看 LDAP 目录,然后查看日历数据库,请执行以下步骤:

  1. 以具有配置权限的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至配置目录 /etc/opt/SUNWics5/cal/config

  4. ics.conf 文件中的 service.calendarsearch.ldap 参数设置为 "yes"(默认值),如下所示:

    service.calendarsearch.ldap="yes"

  5. 重新启动日历服务,如下所示:

    start-cal


    注 –

    如果允许匿名访问公共日历,您可能希望禁用日历搜索对 LDAP 进行查看。事实上,Communications Express 要求此参数值为 "no"。


Procedure通过创建索引提高搜索性能

  1. 要确定是否可以通过创建索引提高日历搜索性能,请尝试使用以下 LDAP 命令:


    ldapsearch -b "base" "(&(icscalendarowned=*user*)
       (objectclass=icsCalendarUser))"

    其中,base 是用户和 Calendar Server 资源数据所在的 Directory Server 的 LDAP 基本 DN,user 是最终用户可以在搜索对话框中输入的值。

    测试表明,如果没有为 icsCalendarOwned 创建索引,使用上述搜索功能搜索 60,000 个条目大约需要 50 到 55 秒。而创建索引后,上述搜索只需要大约 1-2 秒时间。

  2. 通过运行 comm_dssetup.pl 为相应的 LDAP 属性或仅仅为 icsCalendarOwned 创建索引。

    comm_dssetup.pl 将为该属性和许多其他属性创建索引,以提高各方面的性能。如果尚未运行 comm_dssetup.pl,或者已运行但尚未执行创建索引操作,则可以再次运行此实用程序来创建索引,也可以使用 Directory Server 工具来执行创建索引操作。

    有关 comm_dssetup.pl 如何创建索引的信息,参见《Sun Java System Communications Suite 5 Installation and Configuration Guide》中的 "Attribute Indexes"。

    有关添加目录服务器索引的信息,请参阅以下位置处的 Directory Server 文档:

    http://docs.sun.com/coll/1316.1http://docs.sun.com/coll/1389.1

21.3 通过禁用通配符搜索提高日历搜索的性能

默认情况下,Calendar Server 中禁用通配符搜索。即,当您使用图形用户界面搜索日历时,或在自定义界面中发出 search_calprops.wcap 时,它将搜索与使用 WCAP 命令传递的搜索字符串完全匹配的字符串。

如果您通过取消注释 ics.conf 文件中的以下行(删除开头的惊叹号 "!")启用了通配符搜索,则可能对性能产生负面影响。

!service.calendarsearch.ldap.primaryownersearchfilter = "(&(|(uid=*%s*)(cn=*%s*))(objectclass=icsCalendarUser))"

要测试通配符搜索对性能的影响,请通过在行前插入惊叹号 ("!") 再次注释行。

21.4 改进 CLD 插件的性能

在系统访问日历数据库中的日历之前,系统必须确定哪台后端计算机存储了该用户的日历。为了找到相应的后端计算机,系统将搜索 LDAP 目录以查找该用户的条目并选取 icsDWPHost 属性。此搜索会消耗大量时间,而且每次对日历数据进行访问时都必须执行它。每个用户会话都需要多次访问数据库,从而导致多次搜索 LDAP。为了节省时间并提高性能,通过编辑 ics.conf 文件来启用 CLD 高速缓存,如下所示:

caldb.cld.cache.enable="yes"

LDAP 数据高速缓存存储了用户 ID 及其关联的 icsDWPHost 属性。在搜索 LDAP 查找用户条目之前,系统将检查该高速缓存中是否存在该用户 ID。如果高速缓存中有该用户 ID,系统将从存储在高速缓存中的 icsDWPHost 属性中选取后端主机名。如果高速缓存中没有该用户 ID,系统将执行 LDAP 搜索并将该用户 ID 和属性复制到 CLD 高速缓存中。以后,对该用户日历数据的访问速度就会变快,因为现在可以在高速缓存中找到该用户 ID。

21.5 提高 LDAP 数据高速缓存的性能

启用 LDAP 数据高速缓存后,可以使用 ics.conf 参数对其进行优化,请对下表中列出的一个或多个参数进行调整:


注 –

默认情况下,已启用 LDAP 数据高速缓存。您可以通过以下设置来禁用它:local.ldap.cache.enable="no"


表 21–1 用于自定义 LDAP 数据高速缓存的 ics.conf 参数

参数 

说明/值 

local.ldap.cache

.checkpointinterval

检查点之间检查点线程休眠的秒数。默认值为 "60"

在活动频繁的 LDAP 中,您可能需要降低该时间间隔以使高速缓存尽可能地保持当前状态。同时,请记住刷新高速缓存的频率越高,引入的系统开销就越多。 

local.ldap.cache.

circularlogging

指定在处理完 LDAP 数据高速缓存数据库日志文件之后是否将其删除。默认值为 "yes"

请勿更改该参数,除非您有用于删除旧日志文件的自定义清理例程。 

local.ldap.cache.

logfilesizemb

以兆字节为单位指定检查点文件大小的最大值。默认值为 "10" 兆字节。

如果您拥有一个活动频繁的 LDAP,此文件可能在检查点时间间隔结束之前填满。请根据您的经验尝试将该值设置为接近日志实际大小的值。 

local.ldap.cache.

maxthreads

指定 LDAP 数据高速缓存数据库的最大线程数。默认值为 "1000"

在活动频繁的 LDAP 中,您可能希望增加线程数。这可能会导致对 CPU 占用的增加。仅当 LDAP 活动程度最小时,才能减少线程数。 

local.ldap.cache.

mempoolsizemb

以兆字节为单位指定共享内存的大小。默认值为 "4" 兆字节。

local.ldap.cache.

entryttl

以秒为单位指定 LDAP 数据高速缓存条目的“生存时间”(Time to Live, TTL)。默认时间为 "3600" 秒(1 小时)。

如果高速缓存过快地填满(活动频繁),您可以减少 TTL。但是,这会增加 LDAP 数据库的总访问次数,从而降低系统的总体性能。 

local.ldap.cache.

cleanup.interval

以秒为单位指定清理各个高速缓存数据库的时间间隔。默认值为 "1800" 秒(30 分钟)。

系统将删除过期条目。此时间间隔不必与条目的 TTL 相同。但将这两个时间同步会使系统更高效。 

local.ldap.cache.

stat.enable

指定是否将访问记录到 LDAP 数据高速缓存,以及是否在日志文件中记录统计信息。默认值为 "no"

为了增强性能,请仅在调试模式下使用此参数。 

local.ldap.cache.

stat.interval

以秒为单位指定每个统计报告写入日志文件的时间间隔。默认值为 "1800" 秒(30 分钟)。

仅当启用 local.ldap.cache.stat.enable 时,此参数才处于活动状态。减少时间间隔有助于您查明问题所在。增加时间间隔有助于降低系统负载。


注 –

Communications Express 要求禁用数据高速缓存。


21.6 调优 LDAP SDK 高速缓存

有一对参数用于控制项目保存在高速缓存中的时间以及高速缓存可以具有的大小。

要对高速缓存进行优化,请编辑下表中列出的一个或多个参数。

表 21–2 用于配置 LDAP SDK 高速缓存的 ics.conf 参数

参数 

说明和默认值 

service.ldapmemcachettl

目前尚未实现。必须手动删除 ldap_cache 目录中的内容,然后重新启动 Calendar Server。

如果将 service.ldapmemcache 设置为 "yes",则可以使用此参数来设置所允许的项目的最大高速缓存秒数。如果设置为 "0",则项目的高速缓存时间没有限制。默认值为 "30"

service.ldapmemcachesize

如果将 service.ldapmemcache 设置为 "yes",则可以使用此参数来设置高速缓存将消耗的最大内存量(以字节为单位)。如果设置为 "0",则高速缓存没有大小限制。默认值为 "131072"

21.7 调优自动备份

必须根据需要调整保留在磁盘上的备份数目,以使其不会超出可用磁盘空间。您可以通过更改各种 ics.conf 参数来管理归档和紧急备份所占用的磁盘空间量,这些参数用于确定可以同时保留的备份副本数以及将触发清理旧副本操作的磁盘空间阈值。

可以针对每种备份类型(归档和紧急备份)调整以下三种参数:

Calendar Server 保留备份的最多可能天数是以不超过磁盘空间阈值为准。因此,如果当前备份将要使磁盘使用率超过阈值,系统将清除最早的备份副本,并查看磁盘使用率是否降低到阈值以下。系统将继续清除早期的备份副本,直到满足以下条件之一:再删除一个备份副本将使磁盘上的备份数目小于备份副本的最小数目,或者磁盘空间使用率已低于阈值。

因此,您可以使用阈值参数来管理备份使用的磁盘空间量。反之,您也可以通过调整允许的磁盘空间量和副本数目来管理保留在磁盘上的备份数目。

下表列出了用于控制磁盘空间和在磁盘上保留的备份数目的 ics.conf 参数。

表 21–3 用于设置保存在磁盘上的备份数目的 ics.conf 参数

ics.conf 参数

默认设置 

说明 

caldb.berkeleydb.hotbackup.mindays

将紧急备份保留在磁盘上的最少天数。 

caldb.berkeleydb.hotbackup.maxdays

将紧急备份保留在磁盘上的最多天数。 

caldb.berkeleydb.hotbackup.threshold

70 

用于紧急备份的磁盘空间占总磁盘空间的百分比。超过此值时将触发清除最早的副本。 

caldb.berkeleydb.archive.mindays

将归档备份保留在磁盘上的最少天数。 

caldb.berkeleydb.archive.maxdays

将归档备份保留在磁盘上的最多天数。 

caldb.berkeleydb.archive.threshold

70 

用于归档备份的磁盘空间占总磁盘空间的百分比。超过此值时将触发清除最早的副本。 

21.8 在多个 CPU 中使用负载平衡

默认情况下,Calendar Server 会启用负载平衡。Calendar Server 使用以下算法达到负载平衡:进程在每 n 个连接中接受一个连接,其中 n 为进程数目。

要禁用负载平衡,将 service.http.loadbalancing 参数添加到 ics.conf 文件中,并将其设置为 "no"。然后重新启动 Calendar Server 以使更改生效。

21.9 控制为每个服务运行的进程数目

如果服务器上有多个 CPU,则默认情况下 Calendar Server 会将 HTTP 服务(cshttpd 进程)和分布式数据库服务(csdwpd 进程)分布到这些 CPU 中。

如果要控制为每个服务运行的进程数目,可编辑 service.http.numprocessesservice.dwp.numprocesses 参数。默认情况下,在安装时将这些参数设置为服务器的 CPU 数目,但您可以重新设置这些值。例如,如果服务器具有 8 个 CPU,但您希望 cshttpdcsdwpd 只在 4 个 CPU 中运行,可以将这些参数设置为:

service.http.numprocesses="4"
 service.dwp.numprocesses="4"

21.10 使用超时值

本节介绍使用各种 ics.conf 参数的超时值来调优 Calendar Server 性能的概念性信息和说明。

共有以下几类超时:

有关编辑 ics.conf 参数的信息,参见E.1 编辑 ics.conf 配置文件

21.10.1 csadmind 的超时值

下表介绍了 ics.conf 文件中由管理 (csadmin) 服务使用的 Calendar Server 超时参数。

表 21–4 管理服务 (csadmin) 的 HTTP 超时值

参数 

说明 

service.admin.idletimeout

指定在空闲 HTTP 连接超时前 csadmind 服务等待的秒数。

默认值为 120 秒(2 分钟)。 

service.admin.resourcetimeout

指定资源日历的 HTTP 会话超时前 csadmind 服务等待的秒数。

默认值为 900 秒(15 分钟)。 

service.admin.sessiontimeout

指定 HTTP 会话超时前 csadmind 服务等待的秒数。

默认值为 1800 秒(30 分钟)。 

21.10.2 最终用户的 HTTP 超时值

下表介绍了 ics.conf 文件中适用于最终用户的 Calendar Server HTTP 超时参数。

表 21–5 ics.conf 文件中适用于最终用户的 HTTP 超时值(cshttpd 服务)

参数 

说明 

service.http.idletimeout

指定空闲 HTTP 连接超时前 cshttpd 服务等待的秒数。

默认值为 "120" 秒(2 分钟)。

service.http.resourcetimeout

指定资源日历 HTTP 会话超时前 cshttpd 服务等待的秒数。

默认值为 "900" 秒(15 分钟)。

service.http.sessiontimeout

指定 HTTP 会话超时前 cshttpd 服务等待的秒数。

默认值为 "1800" 秒(30 分钟)。

21.10.3 GSE 队列超时值

以下 ics.conf 文件参数以秒为单位指定要在 Calendar Server 扫描组调度引擎 (Group Scheduling Engine, GSE) 队列中的传入作业之前等待的时间:

gse.belowthresholdtimeout="3"

如果队列中的作业数目大于分配的最大线程数,最后一个线程始终会重新扫描队列。因此,此设置仅在作业数目少于分配的最大线程数时才有效。

默认值为 "3"。增加该值可以减少服务器扫描队列的频率,改进总体性能。但是,如果队列因事件数量的增加而变得太大,则可以减少该时间以加快处理队列。这有可能导致总体性能降低,但用于更新事件的时间会更短。

第 22 章 Calendar Server 6.3 软件故障排除

本章包括如何设置日志记录以及怎样处理某些常见问题。

本章包含以下主题:

22.1 打开 Calendar Server 6.3 软件的调试信息

本节介绍使用日志和调试信息来故障排除 Calendar Server 部署的问题的概念性信息和说明。

由于没有哪个 ics.conf 参数可用于将整个系统置入“调试模式”,因此,本节介绍了一些获取有用调试信息的方法:


注 –

确保在不需要的时候关闭超额的日志记录和监视,因为它将对性能产生负面影响。


22.1.1 提高日志记录级别

使用下表显示的参数来提高日志记录的详细级别:

参数 

说明和默认值 

logfile.loglevel

设置为 DEBUG 可以获得所有详细级别的日志,其中包括 CRITICALALERTERRORWARNINGNOTICEINFORMATION。此参数适用于所有日志。

22.1.2 启用将访问记录到 LDAP 高速缓存

要将所有访问信息记录到 LDAP 数据高速缓存并打印日志(报告),设置下表中所示的 ics.conf 参数:

参数 

说明和默认值 

local.ldap.cache.stat.enable

指定是否将访问记录到 LDAP 数据高速缓存,以及是否在日志文件中记录统计信息。默认值为 "no"(不记录统计信息)。设置为 "yes" 可以记录统计信息。

为了增强性能,请仅在调试模式下使用此参数。 

local.ldap.cache.stat.interval

以秒为单位指定每个统计报告写入日志文件的时间间隔。默认值为 "1800" 秒(30 分钟)。

仅当启用了日志记录时,此参数才处于活动状态。减少时间间隔有助于您查明问题所在。增加时间间隔有助于降低系统负载。 

22.1.3 清除 LDAP 高速缓存

目前 Calendar Server 中没有使 LDAP 高速缓存数据过期的设置。必须手动删除 ldap_cache 目录中的内容,并重新启动 Calendar Server。

Procedure清除 LDAP 高速缓存

  1. 停止 Calendar Server。

  2. 删除 /var/opt/SUNWics5/csdb/ldap_cache 目录中的所有文件,但不删除 ldap_cache 目录本身。

  3. 重新启动 Calendar Server。

22.1.4 WCAP 命令和 HTTP 访问记录

两个便于调试的配置参数会启用收到的命令和 HTTP 访问的日志记录。将这两个参数中的一个或全部添加到 ics.conf 文件以激活日志记录:


注意 – 注意 –

日志文件可能会迅速增大,并最终占用全部的可用磁盘空间。需小心监视这些文件,以避免发生问题。选择系统活动性较低的时期来启用并运行这些命令。如果在高峰时期运行,性能会大幅度下降。完成故障排除前始终禁用这两个命令。


22.1.5 使用 Calendar Server 6.3 csstats 实用程序监视系统

使用 csstats list 命令显示 counter.conf 文件中定义的计数器对象中的统计信息。

有关 csstats 实用程序的更多信息,参见附录 D,Calendar Server 命令行实用程序参考

22.2 LDAP 问题故障排除

本节包括故障排除 LDAP 问题的概念性信息。

如果是首次创建多域环境,则必须通过添加域、容器、用户、组和资源的适当条目来创建 LDAP 中的 DC 树。使用诸如 cscal 之类的 Calendar Server 实用程序时,如果 DC 树尚未存在,则可能会看到以下错误消息:“初始化失败.... 退出”。

请确保 DC 树在其根目录下至少包含一个(默认)域。按照13.2 创建新 Calendar Server 域中提供的说明,创建 DC 树结构。

22.3 迁移实用程序故障排除

Calendar Server 提供了几个用于迁移日历数据库和 LDAP 目录的实用程序。

本节包含以下主题:

22.3.1 在致电技术支持之前需要做什么

通常,如果在使用迁移实用程序时遇到问题,应与技术支持联系。

在联系之前,应收集以下信息:

22.3.2 迁移实用程序的位置

您可以从下述内容所指明的位置处找到各个迁移实用程序及其文档:

模式迁移实用程序 (commdirmig)

该实用程序与 Delegated Administrator (一个可单独安装的组件)捆绑在一起。此实用程序将 LDAP 目录从 Schema 版本 1 迁移到 Schema 版本 2。有关此实用程序的信息,参见《Sun Java Communications Suite 5 Schema Migration Guide》

Calendar Server 6.2 至 6.3 的迁移实用程序 csmigrate

安装软件后可在 sbin 目录中找到此实用程序。

Calendar Server 5 至 Calendar Server 6.2 的迁移实用程序 (cs5migrate)

安装软件后可在 sbin 目录中找到此实用程序。

Calendar Server 多域数据库准备实用程序 (csmig)

安装软件后可在 sbin 目录中找到此实用程序。

可在第 3 章,Calendar Server 6.3 的数据库迁移实用程序中找到有关此实用程序的文档,该章还包括故障排除一节。

Calendar Server 非域到多域的迁移实用程序 (csvdmig)

安装软件后可在 sbin 目录中找到此实用程序。

可在第 3 章,Calendar Server 6.3 的数据库迁移实用程序中找到此实用程序的文档。使用该实用程序可以针对多域准备日历数据库和 LDAP 目录条目。


注 –

始终先运行 csmig,再运行 csvdmig


Calendar Server 2 至 Calendar Server 6 的迁移实用程序 (ics2migrate)

此实用程序是随 Calendar Server 一起安装的。可在第 3 章,Calendar Server 6.3 的数据库迁移实用程序中找到相关文档。使用此实用程序可以迁移 Calendar Server 2 数据库从而使其与 Calendar Server 5 兼容。

Netscape Calendar Server 4 至 Calendar Server 5 的迁移实用程序 (ncs4migrate)

您只能从技术支持处获得此实用程序。实用程序软件包包含文档。此实用程序将 Netscape Calendar Server 4 迁移至 Calendar Server 5。由于在源数据库中缺乏一致性,进行这些迁移时往往需要特别注意。可在很多手册中找到该实用程序的说明。您只能从技术支持处获得此实用程序。实用程序软件包包含文档。此实用程序将 Netscape Calendar Server 4 迁移至 Calendar Server 5。进行这些迁移时往往需要特别注意。通常需要对源文件做大量工作后,才可以运行该实用程序。您可以考虑使用专业服务来帮助您规划迁移。

22.4 Calendar Server 的非数据库故障排除

本节介绍了对非数据库问题的各种故障排除方法。

本节包含以下主题:


提示 –

此外,在讲述 SSL 的一章中有一节是说明 SSL 故障排除:

7.2 Calendar Server 6.3 软件的 SSL 故障排除


22.4.1 一个 cshttpd 进程接受了过多的连接并且占用了 100% 的 CPU 时间

如果一个 cshttpd 进程接受了过多的连接并且占用了 100% 的 CPU 时间,可能是禁用了负载平衡。要重新启用负载平衡,将 ics.conf 的参数 service.http.loadbalancing 的值更改为 "yes"

Procedure解决 start-cal 问题

如果在您发出 start-cal 后并没有启动所有日历服务,则在重新启动之前必须停止已启动的日历服务。例如,如果 enpdcsnotifydcsadmind 已启动,但 cshttpd 没有启动,则必须停止 enpdcsnotifydcsadmind

要启动日历服务,请执行以下步骤:

  1. 以具有配置权限的管理员身份登录。

  2. 发出 stop-cal 命令。

  3. 如果 stop-cal 命令无法停止所有的 Calendar Server 服务,则可能仍有某些子进程在运行。要解决此问题,参见22.4.2 解决 stop-cal 问题

  4. 确定已停止全部的 Calendar Server 进程后,可使用 start-cal 命令启动所有服务。例如:

    cal-svr-base/SUNWics5/cal/sbin/start-cal

22.4.2 解决 stop-cal 问题

本节介绍改正 stop-cal 问题的某些概念性信息和说明。

当 Calendar Server 关闭时,需要单独考虑两个问题:

Procedure停止子进程

发出 stop-cal 之后,某些子进程可能仍未停止。例如,stop-cal 可以停止 cshttpd 父进程,但无法停止任何 cshttpd 子进程。在这种情况下,必须使用以下过程单独停止其余的 Calendar Server 进程。

  1. 以具备管理权限的用户身份登录正在运行 Calendar Server 的系统。

  2. 通过针对每一项服务输入 ps 命令来确定其余 Calendar Server 进程的进程 ID (Process ID, PID):

    ps -elf | grep cs-process

    其中,cs-processenpdcsnotifydcsdwpdcsadmindcshttpd。例如:

    ps -elf | grep cshttpd

  3. 使用仍在运行的每个进程的 PID,并输入 kill -15 命令来中止这些进程。例如:kill -15 9875

  4. 再次针对每项服务输入 ps 命令,以确保已停止所有 Calendar Server 进程。


    如果仍有 Calendar Server 进程在运行,请输入 kill -9 命令将其中止。例如:kill -9 9875

    注 –

    在运行 Calendar Server 的 Linux 系统中,如果使用 ps 命令搜索日历进程,搜索结果的显示可能会十分混乱。在 Linux 系统中,ps 命令返回正在运行的线程的列表,而不是进程列表。尚未找到解决方法来仅显示进程。


Procedure不正确关闭后的恢复

如果未正确关闭 Calendar Server,请执行以下步骤:

  1. 执行上一个过程22.4.2 解决 stop-cal 问题中的步骤。

  2. 手动删除 LDAP 数据高速缓存数据库目录中的所有文件。

    这些遗留文件可能会导致数据库损坏。要删除这些文件,请执行以下步骤:

    1. 转到 LDAP 数据高速缓存目录。

      默认值为 /opt/SUNWics5/csdb/ldap_cache,但请使用 ics.conf 文件中 local.ldap.cache.homedir.path 参数所指定的目录。

    2. 删除该目录下的所有文件。

      例如:rm *.*

    3. 检查以确保已删除所有文件。

      例如:ls

  3. 重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

    有关如何配置 LDAP 数据高速缓存的说明,参见4.8 配置 Calendar Server 版本 6.3 的 LDAP。有关 LDAP 数据高速缓存的更多信息,参见《Sun Java Communications Suite 5 Deployment Planning Guide》

22.4.3 无法连接至后端服务器

  1. Ping 后端服务器以查看它是否响应。

    如果不响应,确定失败的原因。当其再次起作用时,继续进行本任务中的下一个步骤。

  2. 清除 CLD 高速缓存。参见12.5 在 Calendar Server 版本 6.3 中清除 CLD 高速缓存

    如果使用的是 CLD 高速缓存选项,并已通过 ics.conf 参数更新了服务器名,则应清除 CLD 高速缓存以删除服务器名。CLD 缓存中的旧条目会导致前端服务器无法正确连接到后端服务器,或导致 Calendar Server 无法找到移动后的日历。

  3. 使用 stop-cal 命令停止服务器。

  4. 使用 start-cal 重新启动 Calendar Server。

22.4.4 无法找到日历

如果使用的是 CLD 高速缓存选项,并已将一个或多个日历移至其他后端服务器(或更改了后端服务器的名称),则可能无法查看新服务器上的日历。

    出现这样的情况时,执行以下步骤:

  1. 清除 CLD 高速缓存。参见12.5 在 Calendar Server 版本 6.3 中清除 CLD 高速缓存

    如果已将一个或多个日历移至其他后端服务器,则 CLD 高速缓存将失效。要刷新 CLD 高速缓存,您需要先清除它,这样才可重建它。

  2. 如果失败,请确保是否遵循了正确的步骤来移动日历。可在以下章节中找到该信息:

    15.6 管理用户日历

    然后清除高速缓存。

22.4.5 无法在后端计算机上创建日历

如果尝试在指定的后端服务器上创建日历,则会看到以下错误消息:DWP 主机服务器无效,原因可能有以下两种。服务器配置不正确,或者已将日历所有者分配给另一后端服务器。

本节介绍如何改正这两个问题:

22.4.5.1 后端服务器配置不正确

查看存在问题的后端服务器的 ics.conf 文件。

确认是否存在以下设置:

service.dwp.enable = "yes"
caldb.cld.type = "directory"
local.hostname = "back-end hostname"

22.4.5.2 将日历所有者分配给了另一后端服务器

查看用户的 LDAP 条目并确认是否存在 icsDWPHost 属性。icsDWPHost 的值必须与尝试在其中创建日历的后端服务器的名称相匹配。不能在另一后端服务器上为该用户创建日历。

22.4.6 尝试使用代理验证进行登录时,提示“未授权”。

本节包括对可能的失败原因的建议。遵循建议的步骤并重试登录。

  1. 执行一个或多个以下步骤来改正此错误:

    • 验证 service.http.allowadminproxy 是否设置为 "yes"

    • 验证 admin-user 是否具有 Calendar Server 管理员权限。

    • 验证 admin-password 是否正确。

    • 验证 calendar-user 是否为 Calendar Server 的有效用户。

  2. 重试登录。

22.4.7 对未正确完成的搜索进行故障排除

本节包括故障排除未正确完成的搜索的概念性信息和说明。

LDAP Directory Server 配置中的 nsslapd-sizelimitnsLookthroughLimit 属性必须足够大,以使搜索能够顺利完成。如果 nsSizeLimit 不够大,则进程可能被中断,而不显示任何结果。如果 nsLookthroughLimit 不够大,则可能无法完成搜索。

本节包含以下主题:

Procedure确定限制属性是否具有适当的值

  1. 要确定是否为这些属性设置了适当的值,请尝试以下命令:

    ldapsearch -b "base" "(&(icscalendarowned=*user*)(objectclass=icsCalendarUser))"

    其中,base 是 Calendar Server 用户和资源数据所在目录服务器的 LDAP 基本 DN,user 是最终用户可以在用户界面的搜索对话框中输入的值。

  2. 如果 LDAP 服务器返回错误消息,则可能是由于参数 nsSizeLimitnsLookthroughLimit 的值不够大。

Procedure为限制属性设置适当的值

这些属性的 DN 为:

dn: cn=config,cn=ldbm databases,cn=plug ins,cn=config

  1. 使用 ldapmodify 动态设置 nsLookthroughLimit 的值。

    即,无需停止和重新启动 Directory Server 来更改此属性。

    默认值为 5000。如果搜索未报告结果,您可能希望增大该值。但是,这将使 LDAP 服务器的性能降低。

    可以将限制设置为 -1,这样将取消任何限制。但是,这样做时应小心,因为它很可能会导致系统挂起。

  2. 如果要将 nsslapd-sizelimit 设置为更高的值,则必须执行以下步骤:

    1. 停止 Directory Server。

    2. 编辑 dse.ldif 文件。

    3. 重新启动 Directory Server。


      注 –

      有关如何使用 ldapmodify 和编辑 dse.ldif 文件的信息,参见以下位置处的 Directory Server 文档:

      http://docs.sun.com/coll/1316.1http://docs.sun.com/coll/1389.1


22.5 处理 Calendar Server 数据库问题

本节包括与 Calendar Server(Berkeley 数据库)数据库有关的各种问题:

本节包含以下主题:

22.5.1 查找 Berkeley 数据库工具

所要采取的多数故障排除步骤都需要您具有对 Berkeley 数据库实用程序的访问权限。虽然在 Calendar Server 包中提供了这些实用程序的某个版本,但它们不受支持。您可能希望直接从 Sleepycat Software (http://www.oracle.com/database/berkeley-db/index.html) 上获得更多信息。

本节包含以下主题:

22.5.1.1 访问 Berkeley 数据库实用程序

设置并导出 LD_LIBRARY_PATH 环境变量以反映以下目录:

cal-svr-base/SUNWics5/cal/tools/unsupported/bin/

22.5.1.2 可用工具列表

下表列出了一些常用 Berkeley 数据库工具(实用程序)。

Berkeley 数据库工具 

说明 

db_archive

将不再使用的日志文件的路径名写入标准输出结果中,每行一个路径名。 

db_checkpoint

一个守护进程,用于监视数据库日志并定期调用检查点例程以对其进行检查点检查。 

db_deadlock

遍历数据库环境锁定区域,并在每次检测到死锁或已超时的锁定请求时异常中止锁定请求。 

db_dump

将指定文件以 db_load 实用程序能够识别的平面文本格式写入标准输出结果中。

db_load

从标准输入中读取文件并将其载入指定的数据库文件。如果文件尚未存在,此工具将创建它。 

db_printlog

调试用于将日志文件转储为用户可读格式的实用程序。 

db_recover

在发生意外的应用程序、数据库或系统故障后,将数据库恢复到一致性状态。 

db_stat

显示数据库环境的统计信息。 

db_verify

验证一个或多个文件及其所包含的数据库的结构。 

Procedure检测和修复数据库死锁

如果 Berkeley 数据库处于死锁状态,则必须重置数据库。尽早检测到此状态是很重要的。

要使系统可以定期检查数据库以检测到死锁状态并通知管理员,请执行以下步骤:

  1. 以有权更改此配置的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 转至 /etc/opt/SUNWics5/cal/config 目录。

  4. 通过复制和重命名旧的 ics.conf 文件来保存该文件。

  5. 如果必要,编辑 ics.conf 使其具有以下值:

    local.caldb.deadlock.autodetect=”yes”


    注 –

    将此参数设置为 "yes" 时,将启动用于监视锁定区域的 db_deadlock 守护进程。


22.5.2 检测数据库损坏

导致日历数据库损坏的原因有多种:系统资源争用、硬件错误、应用程序错误和数据库错误,当然还有人为错误。本节介绍了如何检测日历数据库损坏:

22.5.2.1 数据库损坏基本知识

没有人可以保证数据库不被损坏。但您可以最小化数据丢失和运行的停机时间。严密监视数据库和日历服务器是尽早检测到损坏的关键。频繁和完整的备份是在发现损坏后从损坏中恢复的关键。

日历数据库中有两种可能的损坏级别:

22.5.2.2 监视日志文件

查看 Calendar Server 日志文件(包括警报日志)中的错误消息,这些消息可能会表明数据库受到损坏。

应该定期查看日志文件,看是否发生了 ALERTCRITICALERRORWARNING 级别的错误,如果发现这些错误,请检查事件以找出 Calendar Server 操作可能出现的问题。在 Calendar Server 的正常操作过程中,系统会生成 NOTICEINFORMATION 级别的日志事件,以帮助您监视服务器的活动。

任何情况下都不要移除数据库目录中的任何事务日志文件。事务日志文件包含事务更新(添加、修改或删除),移除这些文件将损坏日历数据库,且无法恢复。


注 –

在请求 Calendar Server 技术支持时,可能需要您提供日志文件以协助解决问题。


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

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

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

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

    (参见22.5.6 重建损坏的日历数据库。)

22.5.3 处理大小和数目突然剧增的事务日志文件

自动清除配置设置可能没有正确反映出最终用户希望看到的客户机用户界面。事务日志文件数目和大小的急剧增加可能只是长时间延迟清除“删除日志”记录所造成的。如果是有意进行这样的延迟以满足 Connector for Microsoft Outlook 或 Sync Tool 用户的需求,则出现事务日志文件的大小和数目的剧增并非异常。无需进一步的操作。系统最终会恢复正常。不过,如果最终用户正在使用 Communications Express 客户机,将自动清除设置恢复为其默认值应该可以解决此问题。

22.5.4 防止在数据库损坏(只读模式)时服务中断

本节介绍了如何在处于恢复模式时使损坏的数据库仍然可访问,包含以下主题:

22.5.4.1 使用只读模式

如果遇到数据库损坏,一种防止服务中断的方法是将数据库置入只读模式。此模式允许最终用户读取数据库条目,但不允许添加、修改或删除。如果最终用户试图添加、修改或删除任何日历数据,系统将给出错误消息。另外,数据库处于只读模式时,用于添加、修改或删除日历事件和待办事项的管理员工具将不起作用。


注 –

如果数据库被损坏到无法读取的程度,则必须中断服务直到用备份进行了恢复。使用备份进行恢复的最快方法是拥有完好的紧急备份。参见22.5.8.1 恢复之前


Procedure将数据库置入只读模式

  1. 以有权更改此配置的管理员身份登录。

  2. 发布 stop-cal 命令停止 Calendar Server 服务。

  3. 在命令行处,转至 ics.conf 所在的目录:

    cd /etc/opt/SUNWics5/config

  4. 将参数设置为如下形式以将日历指定为只读模式:

    caldb.berkeleydb.readonly=”yes”

  5. 通过发出 start-cal 命令重新启动 Calendar Server。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

    必须重新启动这些服务才能使 ics.conf 更改生效。

22.5.5 处理常见数据库故障

本节介绍了一些常见数据库故障,并提供了一些建议的修正方法。本节包含以下主题:

Procedurecsadmind 不启动或在启动过程中崩溃

由于 csadmind 是处理组调度引擎 (Group Scheduling Engine, GSE) 和警报分发引擎的服务,因此,此故障可能是由 GSE 队列或警报队列中的违例条目引起的。

修正方法:

  1. 如果 csadmind 未处于运行状态,立即发出 stop-cal 命令。

    保持日历服务器运行可能导致事务日志累积,从而进一步损坏数据库,并可能需要更长时间才能使事务日志文件与数据库一致。

  2. 验证是否已停止所有 Calendar Server 进程。

    有关如何验证是否已停止所有进程的说明,参见停止子进程

  3. 通过发出 start-cal -csadmind 命令来尝试再次重新启动 csadmind

    如果启动成功,通过执行以下步骤确保两个队列运行正常:

    1. 使用 csschedule 检查 GSE 队列。

    2. 使用 dbrig 检查警报队列。

      有关运行 csscheduledbrig 的说明,参见附录 D,Calendar Server 命令行实用程序参考

  4. 如果 csadmind 发生转储故障,分析 pstack

    如果您在跟踪中发现任何与 GSE 相关的函数(这些函数将带有 GSE 字母),请查看 GSE 队列中的第一个条目和引用的事件数据库中的条目。通常情况下,GSE 条目中引用的事件就是违例条目。要解决此问题,请执行以下步骤:

    1. 使用 csschedule 删除 GSE 条目。

    2. 使用 cscomponents 从数据库中删除违例事件。

      有关运行 csschedulecscomponents 的说明,参见附录 D,Calendar Server 命令行实用程序参考

  5. 如果条目未损坏,则可能是日历服务器无法处理的特殊故障。

    请执行以下步骤:

    1. 拍下损坏的数据库的日历环境快照,并与客户支持联系。

      要创建环境备份,请执行以下步骤:

      1. 使用 db_checkpoint 实用程序(位于:

        cal-svr-base/SUNWics5/cal/tools/unsupported/bin/db_checkpoint

      2. 运行 db_archive -s

        使用 -s 选项确定所有数据库文件,并将其复制到可移动介质(例如 CD、DVD 或磁带)中。

      3. 运行 db_archive -l

        使用 -l 选项确定所有日志文件,并将未应用的日志文件复制到可移动介质设备中。

    2. 为避免服务中断,请将日历数据库临时置入只读状态,并恢复为紧急备份副本。

      • 将日历数据库临时置入只读状态,以防出现添加、修改或删除事务。最终用户尝试添加、修改或删除任何日历数据时,将收到错误消息。数据库处于只读模式时,用于添加、修改或删除日历事件和待办事项的管理员工具也将不起作用。

        要将日历数据库置入只读模式,编辑 ics.conf 文件,按如下所示将指定参数设置为 "yes"

        caldb.berkeleydb.readonly=”yes”

      • 按照22.5.8 恢复自动备份副本中的说明,恢复为紧急备份副本。

        配置并启用 csstored 之后,在几分钟的更新后即可使用紧急备份。还应当始终验证紧急备份副本以确保其未损坏。(运行 db_verify。)

  6. 如果所有修复操作均失败,请执行转储和重新装入过程以查看是否可以抢修数据库。

    22.5.7 使用转储和装入过程来恢复日历数据库中介绍了此过程。

Procedure服务已挂起,最终用户无法连接—孤立的锁定

这种情况可能是由包含 Berkeley DB 数据库页面锁定的控制线程在退出时没有释放该锁定而引起的。要确认是否存在此问题,请针对 cshttpd 进程和 csadmind 运行 pstack。(pstack 是位于/usr/bin/pstack 中的标准 UNIX 实用程序)它应当显示为获取锁定而正在等待的线程。

要解决此问题,请重新启动 Calendar Server,如下所示:

  1. 转到 start-cal 所在的目录。

    cd cal-svr-base/SUNWics5/cal/sbin

  2. 发出 start-cal 命令。

    ./start-cal

Procedurecsdb 的重新建立总不停止—数据库循环

数据库循环通常是由数据库文件损坏引起的。由于是数据库损坏,因此,它是不可修复的。有以下几种选择:

  1. 恢复为紧急备份。

    如果是最近发生的损坏,则可以使用其中一个紧急备份。

  2. 使用灾难归档恢复过程。

    有关建议的过程,请参见22.5.8 恢复自动备份副本

  3. 使用转储和重新装入过程(22.5.7 使用转储和装入过程来恢复日历数据库)。

22.5.6 重建损坏的日历数据库

本节介绍了如何使用 csdb rebuild 命令,并包含以下主题:

22.5.6.1 rebuild 概述

rebuild 命令可以扫描日历数据库并检查日历属性 (calprops)、事件和待办事项(任务),以确定是否发生了损坏。如果 rebuild 命令发现冲突,它将在 cal-svr-base/SUNWics5/cal/sbin/rebuild_db 目录中重新建立一个日历数据库(.db 文件)。

如果未指定 -g 选项,rebuild 命令将重新建立除组调度引擎 (Group Scheduling Engine, GSE) 数据库之外的所有数据库。如果还要重新建立 GSE 数据库,请包含 -g 选项。

要确定 GSE 数据库中是否存在任何条目,运行 csschedule -v list 命令,然后在 GSE 处理完这些条目后再运行 rebuild 命令。

Procedure重建日历数据库

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

  2. 停止 Calendar Server。

  3. 制作日历数据库的副本并将其放到 /tmp/db 目录中。

    只需复制数据库 (.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/ 参数指定了重新建立的数据库所在的目录。

    如果还要重新建立 GSE 数据库,则包含 -g 选项。

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


    注 –

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

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

    例如,如果目录 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 目录中。


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

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


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

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

  9. 重新启动 Calendar Server。

22.5.6.2 重建输出样例

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


# ./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
            

注 –

以上样例输出显示了对事件和待办事项数据库扫描了两次。这不是错误。首次扫描是为了验证日历属性数据库中的信息,再次扫描是为了确保可以访问日历属性数据库。


22.5.7 使用转储和装入过程来恢复日历数据库

本节包含以下主题:

22.5.7.1 转储和装入概述

使用转储和装入过程尝试恢复损坏的数据库。转储和装入过程使用 Berkeley 数据库 db_dumpdb_load 实用程序,它们包含在 Calendar Server 的以下目录中:

cal-svr-base /SUNWics5/cal/tools/unsupported/bin

db_dump 实用程序读取数据库文件并将数据库条目写入输出文件,使用的格式与 db_load 实用程序兼容。

要获得有关 db_dumpdb_load 实用程序的文档,访问 Sleepycat Software 公司的 Web 站点:

http://www.sleepycat.com/docs/utility/index.html

使用 db_dumpdb_load 实用程序恢复数据库能否成功取决于数据库的损坏程度。可能需要使用多个 db_dump 选项才能成功恢复数据库。但如果数据库严重损坏,不可能再恢复,您可能需要恢复为最近一次完好的数据库紧急备份或归档备份。


注 –

在执行转储和装入过程之前,您的日历数据库必须为 Berkeley DB 版本 3.2.9 或更高版本。如果使用的是早期版本,需首先运行 cs5migrate 实用程序升级日历数据库。

要获得 cs5migrate 的最新版本,请与 Sun 技术支持联系。


Procedure执行转储和装入过程

  1. 以运行 Calendar Server 的用户和组(例如 icsusericsgroup)身份登录,或以超级用户 (root) 身份登录。

  2. 如果必要,请停止 Calendar Server。

  3. 使用 csbackup、Sun StorEdge Enterprise BackupTM 软件或 Legato Networker® 等实用程序备份损坏的数据库。

    有关更多信息,请参阅第 17 章,备份和恢复 Calendar Server 数据

  4. 使用 db_dump 实用程序转储每个损坏的数据库文件。

    数据库文件包括 ics50calprops.dbics50journals.dbics50alarms.dbics50events.dbics50todos.dbics50gse.db

    依次使用以下选项运行 db_dump,直到数据库恢复(或确定数据库无法恢复):

    • 没有用于数据库稍微损坏的选项。

    • 对于中等程度的数据库损坏,使用 -r 选项

    • 对于严重程度的数据库损坏,使用 -r 选项-R 选项从损坏的数据库中转储的数据(包括不完整的记录和已删除的记录)比 -r 选项要多。

      例如,运行 db_dump 时带上 -r 选项:

      db_dump -r ics50events.db \> ics50events.db.txt

  5. 使用 db_load 实用程序将输出文件装入新数据库文件。

    例如:

    db_load new.ics50events.db < ics50events.db.txt

    如果 db_load 报告奇数个关键字或数据条目,编辑 db_dump 输出文件,并删除多余的关键字或数据条目。然后再次运行 db_load

  6. 对其他损坏的数据库文件重复以上两步。

    也就是,对其他损坏的数据库文件运行 db_dump

  7. 使用 csdb rebuild 命令重新建立已恢复的数据库文件,如22.5.6 重建损坏的日历数据库所述。

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


    Calendar database has been rebuilt

    如果 csdb rebuild 命令失败,则使用下一个 db_dump 选项(-r-R)来转储数据库。

    如果即使是 db_dump-R 选项也无法恢复损坏的数据库,请与 Sun Microsystems 的技术支持或销售代表联系以获得帮助。在此期间,您可能需要恢复为数据库上次完好无损的备份。

22.5.8 恢复自动备份副本

如果已使用第 9 章,配置自动备份中所述的自动备份功能,则可以在动态数据库损坏时使用紧急备份副本。

本节介绍了如何恢复两个不同的自动备份:

22.5.8.1 恢复之前

在恢复备份之前,请确保您已经执行了以下操作:

Procedure恢复紧急备份

当动态数据库损坏时,紧急备份应当是首选的备份。要恢复紧急备份,请执行以下步骤:

  1. 标识损坏的动态数据库目录中的任何未应用或为写入而打开的日志文件。

  2. 关闭为写入打开的日志。它包含最新事务。

  3. 创建新的(恢复)目录。

  4. 将当前紧急备份副本复制到新的恢复数据库目录中。

  5. log.* 文件从损坏的动态数据库目录中复制到新的恢复数据库目录中。

  6. 如果您要保留数据库的归档副本,请将尚未应用到动态数据库的日志复制到归档目录中,这样归档备份副本就完整了。

  7. 针对新的恢复数据库运行 db_recover,同时指定 -c -h 选项。

    例如,如果新的恢复目录名为 recoverydb,则命令将如下所示:

    db_recover -c -h recoverydb

  8. log.* 文件保留在新的恢复目录中。

    db_recover 程序将日志文件应用到新的恢复数据库,但是从 4.2 版开始,Berkeley DB 要求保留这些日志文件。

  9. 针对新的恢复目录中的数据库文件运行 db_verify。运行 db_verify

    1. 使用这些命令停止 Calendar Server。

      cd /opt/SUNWics5/cal/sbin

      ./stop-cal

    2. 使用此命令创建 Calendar Server 数据库 (csdb) 的另一个副本。

      cp -Rp /var/opt/SUNWics5/csdb /var/opt/SUNWics5/csdb.db_verify

    3. 针对 csdb 的副本运行 db_verify


      注 –

      请勿针对初始 csdb 运行 db_verify


      LD_LIBRARY_PATH=/opt/SUNWics5/cal/lib
      export LD_LIBRARY_PATH
      cd /opt/SUNWics5/cal/tools/unsupported/bin
      ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50alarms.db
      ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50calprops.db
      ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50events.db
      ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50gse.db
      ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50journals.db
      ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50recurring.db
      ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50todos.db
      ./db_verify -o -h /var/opt/SUNWics5/csdb.db_verify ics50deletelog.db

      注 –

      针对 ics50deletelog.db 运行 db_verify,同时带上 -o 选项。


      如果成功运行完成 db_verify,则不会收到任何错误消息。如果数据库文件已损坏,它会抛出错误消息。例如:


      ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50todos.db
      db_verify:Page 612: last item on page sorted greater than parent entry
      db_verify: Page 612: incorrect next_pgno 885 found in leaf chain (should be 501)
      db_verify: Page 0: page 501 encountered a second time on free list
      db_verify: DB->verify: ics50todos.db: DB_VERIFY_BAD: Database verification failed
      
  10. 针对新的恢复目录运行 csdb -v list

  11. 如果新的恢复目录通过了上述全部三个恢复步骤,则损坏的旧动态数据库将替换为新的恢复数据库。

  12. 将新的动态数据库复制到紧急备份目录中以用作新快照。

    所有新的日志都将应用到此副本中,直到拍下了下一个定期快照。

  13. 启动 Calendar Server。

  14. 如果新的恢复目录在任何一个步骤失败,则按如下所述确定未损坏的早期紧急备份:

    1. 从新到旧依次对每个紧急备份运行 db_verifycsdb -v list,以找到最近一个未损坏的副本。

    2. 可以将第一个找到的无损紧急备份副本恢复到动态数据库目录中。

      用未损坏的紧急备份替换损坏的动态数据库,如恢复紧急备份所述。(请确保首先阅读22.5.8.1 恢复之前。)

    3. 如果所有紧急备份均已损坏且没有可供恢复的归档备份,请致电技术支持。如果具有归档备份,请执行恢复归档备份中的过程。(另请参见22.5.8.1 恢复之前。)

Procedure恢复归档备份

如果您没有未损坏的紧急备份,但有归档备份及其事务日志,则可以通过执行以下步骤来恢复最近未损坏版本的已归档数据库:

  1. 标识损坏的动态数据库目录中的任何未应用或为写入而打开的日志文件。

  2. 关闭为写入打开的日志。它包含最新事务。

  3. 创建新的(恢复)目录。

  4. 将最新的归档副本及其日志文件复制到新的恢复数据库目录中。

  5. 将任何未应用的 log.* 文件从已损坏的动态数据库目录复制到新的恢复数据库目录中。

  6. 针对新的恢复数据库运行 db_recover,同时指定 -c -h 选项。

    例如,如果新的恢复目录名为 recoverydb,则命令将如下所示:

    db_recover -c -h recoverydb

  7. log.* 文件保留在新的恢复目录中。

    db_recover 程序将日志文件应用到新的恢复数据库中,但是从 4.2 版开始,Berkeley DB 要求保留这些日志文件。

  8. 针对新的恢复目录中的数据库文件运行 db_verify

    恢复紧急备份过程中的步骤说明了如何运行 db_verify

  9. 针对新的恢复目录运行 csdb -v list

  10. 如果新的恢复目录通过了上述全部三个恢复步骤,则损坏的旧动态数据库将替换为新的恢复数据库。

  11. 将新的动态数据库复制到紧急备份目录中以用作新快照。

  12. 启动 Calendar Server。

  13. 如果新的恢复目录在任何一个步骤失败,则标识未损坏的早期归档备份,如下所述:

    1. 依次从新到旧对每个归档备份副本运行以下三个恢复程序,以找到最近一个未损坏的副本:db_recover -c-hdb_verifycsdb -v list

    2. 可以将第一个找到的无损归档副本恢复到动态数据库目录中。

      用未损坏的归档备份替换损坏的动态数据库,如恢复归档备份所述。

    3. 如果所有的归档备份均已损坏,请致电技术支持。

22.5.9 修复自定义备份脚本

本节包括以下主题:

22.5.9.1 现在使用动态库编译 Berkeley 工具

如果使用诸如 db_recover 之类的 Berkeley 数据库工具创建了自定义备份脚本,则在升级到 Calendar Server 后可能会发现该脚本不再工作。出现此问题的原因是早期版本的 Calendar Server 使用静态库来编译这些工具。而现在使用动态库 libdb-4.2.so 编译这些工具。

22.5.9.2 修复自定义备份脚本

要将新的动态库与现有的自定义脚本结合使用,请设置以下全局变量,如下所示:

LD_LIBRARY_PATH=libdb-4.2.so