【发布时间】:2018-01-24 07:33:31
【问题描述】:
我有一个连接到 Oracle 数据库的 tomcat5 服务器,我喜欢指定 Oracle 会话时区。
我设法通过将JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Europe/Zurich" 添加到配置文件tomcat5.conf 来定义它。问题是当我在 Oracle SELECT SESSIONTIMEZONE FROM dual; 中查询时,我得到 +02:00
目前这是可以的,但是在夏令时关闭的冬季会出错 - 除非我重新启动 tomcat 服务器。
如何将时区设置为区域名称(例如 Europe/Zurich)而不是 UTC 偏移量(例如 +02:00)?我想避免在我的 Oracle 中运行显式 ALTER SESSION SET TIME_ZONE = ...;。
【问题讨论】:
-
您是否有可能将会话时区显式设置为 +02:00 的数据库登录触发器?或者 - 也许更有可能 - 配置中的其他东西正在丢失或替换该设置?如果您通过 SQL*Plus 连接到同一个数据库和帐户,您会看到哪个会话时区?
-
与环境变量(或注册表设置)
ORA_SDTZ定义的相同 - 符合预期。 -
登录触发器是一种解决方案,但在这种情况下,我会在我的 PL/SQL 代码中使用
ALTER SESSION SET TIME_ZONE = ...;。除此之外,我无权在此数据库上创建数据库触发器。 -
我是在问你是否已经有了一个,而不是建议你添加一个 *8-) 但是如果 SQL*Plus 可以的话,似乎无论如何都不会。您使用的
-D标志符合您的预期,因此由于某种原因,它似乎没有到达 JVM。我会检查JAVA_OPTS的后续设置是否会破坏这个设置,并且最终的 JVM 调用实际上使用了该变量。
标签: java oracle tomcat timezone