ADW 配置为 UTC 时区,需要将其更改为 EST 时区。
ETL 自定义应用程序有许多存储的自定义过程,它们 SYSDATE 返回为操作系统设置的当前日期和时间。
在 ADW 中解决此问题的最佳方法是什么?
ADW 配置为 UTC 时区,需要将其更改为 EST 时区。
ETL 自定义应用程序有许多存储的自定义过程,它们 SYSDATE 返回为操作系统设置的当前日期和时间。
在 ADW 中解决此问题的最佳方法是什么?
要更改时区,请参阅此处。
请注意,这不会更改 SYSDATE 的输出,因为它依赖于无法更改的操作系统时区。建议改为使用 CURRENT_DATE。
升级示例
此示例说明将 DST 行为更新到默认时区版本为 14 的 Oracle 数据库 11g 第 2 版。首先,假设您当前的数据库使用时区版本 3,并且还假设您有一个现有的表 t,其中包含时间戳带有时区数据。
以用户身份连接数据库
scott
并执行以下语句:
DROP TABLE t;
CREATE TABLE t (c NUMBER, mark VARCHAR(25), ts TIMESTAMP WITH TIME ZONE);
INSERT INTO t VALUES(1, 'not_affected',
to_timestamp_tz('22-sep-2006 13:00:00 america/los_angeles',
'dd-mon-yyyy hh24:mi:ss tzr tzd'));
INSERT INTO t VALUES(4, 'affected_err_exist',
to_timestamp_tz('11-mar-2007 00:30:00 america/st_johns',
'dd-mon-yyyy hh24:mi:ss tzr tzd'));
INSERT INTO t VALUES(6, 'affected_no_err',
to_timestamp_tz('11-mar-2007 01:30:00 america/st_johns',
'dd-mon-yyyy hh24:mi:ss tzr tzd'));
INSERT INTO t VALUES(14, 'affected_err_dup',
to_timestamp_tz('21-sep-2006 23:30:00 egypt',
'dd-mon-yyyy hh24:mi:ss tzr tzd'));
COMMIT;
然后,您可以选择启动一个准备窗口来检查受影响的数据和潜在的语义错误,其中存在重叠或不存在时间。为此,您应该启动一个窗口以准备迁移到时区版本 14。假设您具有必要的权限。这些权限由 DBMS_DST 包控制。