活动选项卡 常见问题解答
开始选项卡子链接

夏令时 (DST) 常见问题解答

上次更新时间:2007 年 12 月 9 日
综合
  1. 时区数据为何更改?
  2. 哪里可以找到有关世界各时区的信息?
  3. 我为何需要关注时区数据?
  4. 如果我们注意到存在应用依赖性或 DST 命令被撤销,是否有完整的紧急收回程序?
  5. 我的全球系统按格林威治标准时间运行。不应用补丁的话,这些系统是否“安全”?
  6. 百慕大刚刚宣布将在 DST 上与美国保持同步。Sun 有什么行动?
  7. 委内瑞拉最近宣布要更改时区。Sun 有什么行动?
  8. 如果我在孟斐斯有一台 Sun One 邮件服务器,委内瑞拉用户可以通过 PC(通过 Web 或通过 IMAP 客户端)进行访问,是否需要对孟斐斯的服务器应用该解决办法?
Solaris
  1. 您能否确认在应用 Solaris 8、9 和 10 DST 补丁之后是否需要重新启动系统?在 IBM 系统上看起来似乎可以联机执行。
  2. zoneinfo 补丁只是更新常规文件。那为什么需要重新启动?
  3. 什么是 POSIX TZ?什么是 Olson?如何区分?
  4. 我不知道我用的是不是 POSIX,我想在自己的系统上安装 POSIX DST 补丁以覆盖所有库。这种办法是否存在风险?
  5. 这些更改是否会影响到任何使用非美国时区的服务器(例如 GMT 或 BST)?
  6. 如果服务器使用非美国时区,是否应该应用 Sun 警报 102775 的补丁?
  7. DST 补丁中是否存在任何直接或间接影响 GMT 等其他时区规则的特定代码?
  8. 如果服务器在英国,执行了包含纽约当前时间的事务,但未安装美国 DST 补丁,既然美国 DST 规则未打补丁,该应用是否可能会出错?
  9. 我们的区域配置是混合的。有些是使用稀疏根文件系统设置的,有些则是整个根文件系统用于区域。它们是否有任何不同的打补丁过程?这种情况下推荐的办法是什么?
  10. 安装针对 Solaris 的 DST 补丁之前是否需要考虑任何补丁依赖关系?
  11. 我是否可以直接使用公共领域解决方案或第三方提供的解决方案来应对 Solaris 系统上的 DST 时间问题?
  12. 如果我的客户端系统使用 NTP 服务器,是否需要按照 DST 建议缓解这些系统上的问题?
  13. 我们在 Sun 机箱上安装了 NTP,有人告诉我们需要为 sun 服务器打补丁以处理此问题。如果使用 SUN 的 xntpd 后台进程,是不是有 DST 更改的问题?
  14. zdump 命令输出是否反映通过时区和 libc 补丁对操作系统所做的更改?
Java SE
  1. 我们是操作系统管理员,不熟悉 Java。如何确定是否符合新的 DST 标准?
  2. 是否可以只应用固件和操作系统补丁而不使用 JAVA?
  3. 是不是所有的 Java 版本都需要某种针对 DST 的修复?
  4. 为什么在一个生命周期未终止的 Solaris 8 安装 CD 上分发生命周期已终止的 Java 1.2.2 版?
  5. 应用 Java DST 修复之后是否需要重新启动?
  6. 我遇到一个情况,其中涉及在对 JRE 应用 TZ Update 之后强制重新启动多达 50000 个工作站。这是因为在更新期间不得使用 JRE。如何缓解此问题?
  7. 如何报告 tzupdater 工具的问题?
  8. 是否有办法回退 tzupdater 工具的更新?
  9. Sun 的 tzupdater 工具让对 1.4.2_11 的引用成为第一个包含美国 DST2007 更改的版本。但我们知道,直到 1.4.2_13 才包含加拿大时区。我们有几个 1.4.2_11 实例希望使用 Sun 的 tzupdater 工具修补,而不是升级到 1.4.2_13。是否可以请 Sun 确认对 1.4.2_11 运行其当前 tzupdater 会产生期望的结果?
  10. 是否有可用于版本 1.3.19 之前的 JRE 的 tzupdater 工具?
  11. 针对运行未修补的 JRE 而在生产中出现故障的异常,是否有关于 Java DST 问题的优先级和响应时间的支持指南?
  12. tzupdater 工具中包含哪一级的 Olson 数据库?是不是直到 tz2007a?如果不是,是否正在计划推出新的 tzupdater 工具版本?
Solaris 中的 Java
  1. 为什么需要担心 Solaris 中的 Java?
  2. 有哪些操作系统补丁级别用于认证每个 Java 版本?我们需要了解这一点,以便验证系统在新的 DST 升级之后是否兼容。
  3. 由于 Java 1.1 生命周期已终止,是否需要删除?
  4. Solaris 9 是否依赖 Java 1.2.2?

  5. 另请参见这里
其他软件
  1. 对 Solaris 8 应用 Java DST 补丁之后,SMC 为什么不重新启动?
  2. 我仍在使用 WorkShop 5.0 自带的 Rogue Wave 库。Wave for WorkShop 5.0 中是否会有用于更新 DST 问题的补丁?
系统
  1. 是否有针对 Sun Fire 系统上的 DST 更改的临时解决办法?在 3 月份之前我有 5 个 Sun Fire 6900 无法实施必要的固件升级,正在寻找临时解决办法,例如禁用系统控制器与域之间的时钟同步,然后手动更改其所有域上的时间。



综合

问:时区数据为何更改?
  • 时区设置是本地采用的。
    • 并没有一个世界性的时区权威机构。
    • 在北美,时区可能是按州/省、县或市采用的。
    • 一个市更改其时区可能是受到当地各种考量因素的推动:
      • 大型活动(例如,在悉尼召开英联邦运动会),
      • 投票(例如,巴西有一年因全国选举而更改其时区设置)

问:哪里可以找到有关世界各时区的信息?
问:我为何需要关注时区数据?
  • 时区数据频繁更改。
    • 这反映在 Olson 数据库的更改频率上。2007 年的美国 DST 更改碰巧是影响北美居民和客户的更改之一。

问:如果我们注意到存在应用依赖性或 DST 命令被撤销,是否有完整的紧急收回程序?
  • 没有。一般来说,请在开始这样做之前查看 DST 网站。请记住,DST 是一个地区性的活动。可能一个国家/地区废除了,但另一个国家/地区并未废除。需要使用更新后的 Olson 数据重新应用。

问:我的全球系统按格林威治标准时间运行。不应用补丁的话,这些系统是否“安全”?
  • 如果系统上运行的所有应用只使用 GMT,且“从不”执行本地时间到其他时区的转换,则不会影响该系统。
  • 注:所有系统和所有数据都需要按 GMT 运行,以避免 DST 问题。在受影响时区与 GMT 之间的转换方面,修补后的系统与未修补的系统彼此不一致

问:百慕大刚刚宣布将在 DST 上与美国保持同步。Sun 采取了什么行动?
  • Olson 2007a 数据中列出了这些更改。这将需要其他版本的时区补丁。一个解决办法是将时区设置为美国东部时间。

问:委内瑞拉最近宣布要更改时区。Sun 有什么行动?
  • Sun 正在制作官方补丁,同时,Sun 还已经开发了针对 Solaris、Java 等的解决办法。此事件中需要帮助的委内瑞拉 Sun 客户应通过 +58-212-9053888 与 Sun Venezuela Support Services 联系。委内瑞拉以外的客户请联系当地的 Sun 支持组织。

问:如果我在孟斐斯有一台 Sun One 邮件服务器,委内瑞拉用户可以通过 PC(通过 Web 或通过 IMAP 客户端)进行访问,是否需要对孟斐斯的服务器应用该解决办法?
  • 不需要,该解决办法不需要应用于孟斐斯的服务器。委内瑞拉客户端负责跟踪其本地系统时间,并假定孟斐斯的系统上运行的 Web/IMAP 服务器不使用委内瑞拉时区。如果您的环境按委内瑞拉时间运行,您只需该解决办法即可。




Solaris

问:您能否确认在应用 Solaris 8、9 和 10 DST 补丁之后是否需要重新启动系统?在 IBM 系统上看起来似乎可以联机执行。
  • 是 — 时区补丁明确声明需要重新启动。有两个补丁,一个用于 libc,另一个用于 zoneinfo。
  • zoneinfo 数据库加载到进程中。在 TZ 环境变量发生更改或进程重新启动之前,不会重新加载信息。为确保加载了 zoneinfo 数据库的所有进程重新加载新的 zoneinfo 数据库,需要重新启动系统。
  • 为使 libc 补丁维护系统的完整性,始终需要重新启动。

问:zoneinfo 补丁只是更新常规文件。那为什么需要重新启动?
  • 重新启动是确保系统上运行的所有应用重新读取 zoneinfo 文件的唯一办法。进程/应用中只读取 zoneinfo 数据库一次,之后不再重新读取。让它们重新读取新 zoneinfo 文件的唯一办法,是重新启动应用/进程。

问:什么是 POSIX TZ?什么是 Olson?如何区分?
  • Solaris 中支持两种类型的 TZ 变量设置。一种称为 POSIX 时区,另一种称为 Olson。
  • POSIX TZ 有一种“std 偏移量 dst 偏移量”(如 PST8PDT)形式,其中 TZ 字符串本身代表时区缩写和相对世界标准时间的偏移量。如果给定“dst 偏移量”,将使用美国 DST 规则。libc 中硬编码了默认的美国规则。因此,如果您采用这种形式,则需要 libc 补丁。
  • TZ 变量的另一种形式 (Olson) 是“美国/太平洋”的形式,它指向 /usr/share/lib/zoneinfo 下的文件,每个文件包含时区定义。该目录下有针对许多地区的大量文件。如果您采用这种形式,则需要 zoneinfo 补丁。
  • 请参见 environ(5) 手册页。

问:我不知道我用的是不是 POSIX,我想在自己的系统上安装 POSIX DST 补丁以覆盖所有库。这种办法是否存在风险?
  • 没有。一般来说,安装 POSIX 补丁没有风险。但有些系统(如墨西哥的系统)的时区与美国相同,却继续遵循 2007 年的旧 DST 日期,它们就不应该使用这些 libc 补丁中提供的新 POSIX 时区。如果此类系统安装了这些 libc 补丁,则不应再使用 POSIX 式时区。它们需要只使用 Olson 时区。

问:这些更改是否会影响到任何使用非美国时区的服务器?
  • 请参见补丁中所列错误描述,验证时区是否有任何更新。如果服务器上运行的应用只使用 TZ=GMT 或 TZ=BST,且“从不”执行本地时间到其他时区的转换,则无影响。

问:如果服务器使用非美国时区,是否应该应用 Sun 警报 102775 的补丁?
  • 请参见补丁中所列错误描述,确定其时区是否有任何更新。如果时区有更改且很重要,则需要安装补丁。

问:DST 补丁中是否存在任何直接或间接影响 GMT 等其他时区规则的特定代码?
  • 请参见补丁中所列所有错误号的描述。您的时区不一定有更改。但如果系统上的应用只使用“TZ=GMT”(不遵循 DST 的 POSIX 时区设置),且“永远不会”由本地时间转换到其他时区,则不会受到影响。

问:如果服务器在英国,执行了包含纽约当前时间的事务,但未安装美国 DST 补丁,既然美国 DST 规则未打补丁,该应用是否可能会出错?
  • 将纽约当地时钟转换成世界标准时间或格林威治标准时间或该时区之外的任何其他时间时,将使用美国时区规则。如果您在英国的服务器未打补丁,并打算将纽约的本地时钟转换成世界标准时间或格林威治标准时间的本地时间,在这种情况下,如果服务器未打补丁,在 3 月 11 日到 4 月 1 日期间转换将不能正确执行。

问:我们的区域配置是混合的。有些是使用稀疏根文件系统设置的,有些则是整个根文件系统用于区域。它们是否有任何不同的打补丁过程?这种情况下推荐的办法是什么?
  • 这些补丁和针对 Solaris 10 的任何其他补丁类似。修补脚本应注意系统中的时区。

问:安装针对 Solaris 的 DST 补丁之前是否需要考虑任何补丁依赖关系?
  • 请参见每个补丁自述文件中的“该补丁所需补丁:”部分。这将详细介绍安装 DST 补丁之前是否需要任何其他补丁。

问:我是否可以直接使用公共领域解决方案或第三方提供的解决方案来应对 Solaris 系统上的 DST 时间问题?
  • Sun 最了解 Solaris,已经开发、测试和发布了正式的补丁来解决 DST 时间问题。Sun 认为公共领域或第三方解决方案并不全面,且这些解决方案并不受 Sun 支持。如果使用这些不受支持的解决方案,您将风险自负,最终可能损坏系统或数据。为了获得经过测试且受支持的解决方案,您应安装和使用 Sun 提供的补丁。

问:如果我的客户端系统使用 NTP 服务器,是否需要按照 DST 建议缓解这些系统上的问题?
  • NTP 服务器提供的时间是自 1900 年 1 月 1 日开始的 UTC (GMT) 秒数,而客户端系统转换成已经设置的任何时区。NTP 服务器只保持内核时间正确。您需要在客户端安装适用的 DST 补丁,因为它们管理着自己的时区信息。

问:我们在 Sun 机箱上安装了 NTP,有人告诉我们需要为 sun 服务器打补丁以处理此问题。如果使用 SUN 的 xntpd 后台进程,是不是有 DST 更改的问题?
  • 是,即使在运行 xntpd 时,您仍需修补所有系统。NTP 没有时区的概念,因此完全无助于 DST 更改。

问:zdump 命令输出是否反映通过时区和 libc 补丁对操作系统所做的更改?
  • 是,确实会反映安装的补丁。成功应用补丁后,结果应如下所示:

    >zdump -v US/Eastern | grep 2007
    US/Eastern Sun Mar 11 06:59:59 2007 UTC = Sun Mar 11 01:59:59 2007 EST isdst=0
    US/Eastern Sun Mar 11 07:00:00 2007 UTC = Sun Mar 11 03:00:00 2007 EDT isdst=1
    US/Eastern Sun Nov 4 05:59:59 2007 UTC = Sun Nov 4 01:59:59 2007 EDT isdst=1
    US/Eastern Sun Nov 4 06:00:00 2007 UTC = Sun Nov 4 01:00:00 2007 EST isdst=0



Java SE

问:我们是操作系统管理员,不熟悉 Java。如何确定是否符合新的 DST 标准?
问:是否可以只应用固件和操作系统补丁而不使用 JAVA?
  • 不太可能。很多第三方应用都使用 Java。您可能会遇到系统时间正确而应用时间不正确的情况。

问:是不是所有的 Java 版本都需要某种针对 DST 的修复?
  • 不是。但 Olson 数据会不断更改(地理时间更改数据库)。请参见 Java 信息。

问:为什么在一个生命周期未终止的 Solaris 8 安装 CD 上分发生命周期已终止的 Java 1.2.2 版?
  • 因为兼容性方面的原因,Solaris 中有些工具依赖于 1.2.2

问:应用 Java DST 修复之后是否需要重新启动?
  • 不需要,但应停止引用它的所有 Java 应用,然后重新启动。

问:我遇到一个情况,其中涉及在对 JRE 应用 TZ Update 之后强制重新启动多达 50000 个工作站。这是因为在更新期间不得使用 JRE。如何缓解此问题?
  • 不需要重新启动系统。但必须重新启动应用,以防数据损坏。如果继续使用任何日期和时间,则现在有可能会随日期和时间而变化。如果更新后未重新启动应用,则可能出现某种形式的数据损坏,因此建议重新启动应用。
    1. 停止应用
    2. 缓解(更新版本安装或使用 tzupdater 工具)
    3. 重新启动应用
    4. 根据需要进行测试。(可选)

如何报告 tzupdater 工具的问题?
  • 如果发现 tzupdater 工具的问题,您应致电 Sun 支持。

问:是否有办法回退 tzupdater 工具的更新?
问:Sun 的 tzupdater 工具让对 1.4.2_11 的引用成为第一个包含美国 DST2007 更改的版本。但我们知道,直到 1.4.2_13 才包含加拿大时区。我们有几个 1.4.2_11 实例希望使用 Sun 的 tzupdater 工具修补,而不是升级到 1.4.2_13。是否可以请 Sun 确认对 1.4.2_11 运行其当前 tzupdater 会产生期望的结果?因为它将用更新的 DST2007 加拿大时区应用正确的时区数据库。我们希望确认 tzupdater 工具不会做出偏向美国的决策而不修补 1.4.2_11 及更高版本,因为从美国的角度来看,这已经被视为“符合 DST2007”。
  • tzupdater 工具包含 Olsen 数据 2006p(随时间累积),因此包含加拿大所需的更改。为避免需要应用 v1.4.2_13 更新,它们可以使用 tzupdater 工具并获得期望的结果,即适用于加拿大的 DST 2007。

问:是否有可用于版本 1.3.19 之前的 JRE 的 tzupdater 工具?
问:针对运行未修补的 JRE 而在生产中出现故障的异常,是否有关于 Java DST 问题的优先级和响应时间的支持指南?
  • 有关 DST 迁移过程(或之后)的问题,需要记录 Sun 支持案例。响应时间将遵照 Sun 支持合同。

问:tzupdater 工具中包含哪一级的 Olson 数据库?是不是直到 tz2007a?如果不是,是否正在计划新的 tzupdater 工具版本?
  • 目前是 2006p
  • 针对 2007a 的修订(相对于 USA-2007-DST,只更改了巴哈马)正在开发中



Solaris 中的 Java

问:为什么需要担心 Solaris 中的 Java?
  • Solaris 中许多产品是基于 Java 的,需要更新所使用的 Java 版本。

问:有哪些 Solaris 补丁级别用于认证每个 Java 版本?我们需要了解这一点,以便验证系统在新的 DST 升级之后是否兼容。
  • Sun 不维护 Java/操作系统补丁依赖关系表。尚未出现应用的 Java DST 更新导致后续 Java 错误的情况。

问:由于 Java 1.1 生命周期已终止,是否需要删除?
  • 不需要,但删除 1.1 将确保开发人员不会访问它,从而产生不兼容的代码。

问:Solaris 9 是否依赖 Java 1.2.2?
  • 没有,Solaris 9 并不依赖 Java 1.2.2,可以删除。但可能有些应用会使用 Java 1.2.2。客户应更新到最低要求的 Java 版本。



其他软件

问:对 Solaris 8 应用 Java DST 补丁之后,SMC 为什么不重新启动?
  • 正在研究中。

问:我仍在使用 WorkShop 5.0 自带的 Rogue Wave 库。Wave for WorkShop 5.0 中是否有用于更新 DST 问题的补丁?
  • Workshop 5.0 已于 2005 年达到使用年限 (EOSL)。使用此产品的客户将需要升级到更新的编译器。还需要升级操作系统。Workshop 5 在 Solaris 2.5.1、2.6 和 2.7 上受支持,所有这些均已达到使用年限。默认情况下,升级到 Studio 11 (C++ 5.8) 将生成兼容代码。从 Workshop 5.0 (C++ 5.0) 到 Studio 12 预览版 (C++ 5.9) 的所有 Sun C++ 编译器均默认为 -compat=5,并生成兼容的目标代码。早期 C++ 5.x 编译器生成的二进制文件可以链接到更高版本的 C++ 5.x 编译器生成的程序中。例如:如果您有 Workshop 5 创建的旧库,并已升级到 Sun Studio 11。您可以继续将旧库链接到 Sun Studio 11 创建的程序中。



系统

问:是否有针对 Sun Fire 系统上的 DST 更改的临时解决办法?在 3 月份之前我有 5 个 Sun Fire 6900 无法实施必要的固件升级,正在寻找临时解决办法,例如禁用系统控制器与域之间的时钟同步,然后手动更改其所有域上的时间。
  • 改为使用 GMT 偏移量。它并未针对夏令时做出调整。示例如下……

    tpa-sf4800a-sc0:SC> setdate -t -h
  • 这将给出各种时区的有效 GMT 偏移量列表 — 我在美国东部时区,因此如此设置:

    tpa-sf4800a-sc0:SC> setdate -t GMT-05:00
    Thu Jan 18 10:05:15 GMT-05:00 2007
    tpa-sf4800a-sc0:SC>
  • 在备用机上,禁用故障切换,运行命令并重新启用故障切换。不能在启用故障切换/活动的备用机上运行此命令。




变更日志

注:本更改日志仅反映对本网页的更改。有关产品更新的详细信息,请参见产品特定信息。
  • [2008 年 8 月 22 日] 删除了 Solaris 部分中过时的问题。
  • [2007 年 12 月 9 日] 在“综合”部分新增了问题 7 和问题 8。
  • [2007 年 2 月 26 日] 新增了有关 Java 1.3.1 tzupdater 工具的信息。
  • [2007 年 2 月 23 日] 在 Solaris 问题部分新增了问题 24。
  • [2007 年 2 月 23 日] 新增了 Java SE SDN 常见问题解答的链接。
  • [2007 年 2 月 16 日] 在“其他软件”部分新增了问题 2。
  • [2007 年 2 月 14 日] 在 Solaris 问题部分新增了问题 22。
  • [2007 年 2 月 12 日] 新增了 GMT 相关问题的澄清文本。
  • [2007 年 2 月 8 日] 编辑了 Solaris 问题中的问题 3。
  • [2007 年 2 月 8 日] 在 Solaris 问题部分新增了问题 4。