powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Таймзона 26: разница 10gR2 и 11gR2
8 сообщений из 8, страница 1 из 1
Таймзона 26: разница 10gR2 и 11gR2
    #39262246
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle недавно выпустил новый патч с таймзонами (для нас, в частности, достаточно критичен Сахалин -- он уехал на час вперед этой весной, т.е. времени с 02:00 до 02:59:59.(9) 28 марта 2016 на Сахалине не существовало ).
Правда, в списке патчи только для 11 и 12, для 10-ки я сделал из 11, скопировав timezlrg_26.dat и timezone_26.dat в timezlrg.dat и timezone.dat для соответствующего Endian.

И вот как обрабатывается пропущенное время (проверялось на Linux и Solaris SPARC):
для 10gR2
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> with t as (
  2     select to_timestamp_tz('27-03-2016 01:59 Asia/Sakhalin', 'dd-mm-yyyy hh24:mi tzr') a,
  3            to_timestamp_tz('27-03-2016 02:00 Asia/Sakhalin', 'dd-mm-yyyy hh24:mi tzr') b
  4     from dual
  5  )
  6  select (cast(sys_extract_utc(a) as date)-cast(a as date))*24 before,
  7     (cast(sys_extract_utc(b) as date)-cast(b as date))*24 after from t;

    BEFORE      AFTER
---------- ----------
       -10        -11



для 11gR2
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
tst> with t as (
  2     select to_timestamp_tz('27-03-2016 01:59 Asia/Sakhalin', 'dd-mm-yyyy hh24:mi tzr') a,
  3            to_timestamp_tz('27-03-2016 02:00 Asia/Sakhalin', 'dd-mm-yyyy hh24:mi tzr') b
  4     from dual
  5  )
  6  select (cast(sys_extract_utc(a) as date)-cast(a as date))*24 before,
  7     (cast(sys_extract_utc(b) as date)-cast(b as date))*24 after from t;
          to_timestamp_tz('27-03-2016 02:00 Asia/Sakhalin', 'dd-mm-yyyy hh24:mi tzr') b
                          *
ERROR at line 3:
ORA-01878: specified field not found in datetime or interval


Хотя старые переходы в 10gR2 отрабатывались тоже правильно (как и в 11gR2)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> with t as (
  2     select to_timestamp_tz('28-03-2010 01:59 Asia/Sakhalin', 'dd-mm-yyyy hh24:mi tzr') a,
  3            to_timestamp_tz('28-03-2010 02:00 Asia/Sakhalin', 'dd-mm-yyyy hh24:mi tzr') b
  4     from dual
  5  )
  6  select (cast(sys_extract_utc(a) as date)-cast(a as date))*24 before,
  7     (cast(sys_extract_utc(b) as date)-cast(b as date))*24 after from t;
          to_timestamp_tz('28-03-2010 02:00 Asia/Sakhalin', 'dd-mm-yyyy hh24:mi tzr') b
                          *
ERROR at line 3:
ORA-01878: specified field not found in datetime or interval

Вот, собственно и интересно -- файлики бинарно одинаковы (да и с чего им быть разными), предыдущие переходы отрабатывались одинаково, а щас вдруг такое различие

Есть еще предположение, что предыдущие переходы были вызваны летним/зимним временем, а текущий принудительный, но почему разница между версиями?
Или все-таки нельзя файлики от 11 юзать в 10 (с DST 23 вполне себе прокатывало)? Тогда просьба к тем, кто имеет расширенную поддержку и может получить патч непосредственно от Oracle проверить результат запроса в 10gR2
Спасибо

PS. Патч на OJVM вообще кривой -- кладет скрипты в левый каталог (javavm_src_2), а проверку потом все равно не проходит
fixTZb
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Testing various timezone DST attributes
FAILED for America/Santa_Isabel 1457863200000 -28800000 3600000
FAILED for America/Santa_Isabel 1478422799999 -28800000 3600000
FAILED for America/Santa_Isabel 1489312800000 -28800000 3600000
FAILED for America/Santa_Isabel 1509872399999 -28800000 3600000
FAILED for America/Santa_Isabel 1520762400000 -28800000 3600000
FAILED for America/Santa_Isabel 1541321999999 -28800000 3600000
FAILED for America/Santa_Isabel 1552212000000 -28800000 3600000
FAILED for America/Santa_Isabel 1572771599999 -28800000 3600000
FAILED for America/Santa_Isabel 1583661600000 -28800000 3600000
FAILED for America/Santa_Isabel 1604221199999 -28800000 3600000
FAILED for Asia/Kashgar 1451584800000 21600000 0
########################################################
Bug is still present.  Patch failed!!
########################################################
...
Рейтинг: 0 / 0
Таймзона 26: разница 10gR2 и 11gR2
    #39262360
Q.Tarantino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слава, 10g под рукой не имею. Ты скажи что конкретно надо? :)
...
Рейтинг: 0 / 0
Таймзона 26: разница 10gR2 и 11gR2
    #39262479
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне интересно, почему Oracle 10gR2 не выдает ORA-01878 на несуществующее время. Раньше выдавал. 11gR2 выдает.

Еще вариант, что где-то полгода-год назад немного изменилось описание таймзон в юниксовых базах. По крайней мере старый соляркин ZIC новые таймзоны компилирует с предупреждениями (что-то типа "time zone abbreviation differs from POSIX standard (+03)"), хоть и говорят, что их можно спокойно игнорировать, я на всякий и ZIC пересобрал из tzcode. Но к ораклу это вряд ли имеет отношение
...
Рейтинг: 0 / 0
Таймзона 26: разница 10gR2 и 11gR2
    #39265744
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровПравда, в списке патчи только для 11 и 12, для 10-ки я сделал из 11, скопировав timezlrg_26.dat и timezone_26.dat в timezlrg.dat и timezone.dat для соответствующего Endian.

А сравнивал эти файлы из существующих патчей одного уровня для 10 и 11? Они одинаковые? А то, может, какие биты потеряны...
...
Рейтинг: 0 / 0
Таймзона 26: разница 10gR2 и 11gR2
    #39265988
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, по крайней мере SHA256SUM для них считается одинаково
...
Рейтинг: 0 / 0
Таймзона 26: разница 10gR2 и 11gR2
    #39266106
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, не дочитал я, ты же писал

Вячеслав ЛюбомудровЕсть еще предположение, что предыдущие переходы были вызваны летним/зимним временем, а текущий принудительный, но почему разница между версиями?
Или все-таки нельзя файлики от 11 юзать в 10 (с DST 23 вполне себе прокатывало)?
DST 23 не создавал интервалов времени, которых не бывает, на которых можно поймать ORA-01878. Там, наоборот, один часовой интервал проходился 2 раза, спали на час больше.

Возможно, что-то в базу прописывается для ловли ORA-01878. Если критично, можно попробовать потрассировать с биндами, что патчи в базы 10 и 11 пишут. Хотя не факт, что что-то поймать получится...
...
Рейтинг: 0 / 0
Таймзона 26: разница 10gR2 и 11gR2
    #39266135
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nobody1111Вячеслав ЛюбомудровИли все-таки нельзя файлики от 11 юзать в 10 (с DST 23 вполне себе прокатывало)?
DST 23 не создавал интервалов времени, которых не бывает, на которых можно поймать ORA-01878. Там, наоборот, один часовой интервал проходился 2 раза, спали на час больше

Да, можно предположить, что для такого интервала, вводимого DST 23, Оракл по правильному не сможет однозначно определить timestamp_to_scn (конечно, пока SCN еще не протух) и выдаст ошибку, "зеркальную" ORA-01878. А для недопатченой 10-ки скорее всего не выдаст.
...
Рейтинг: 0 / 0
Таймзона 26: разница 10gR2 и 11gR2
    #39266292
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И DST-23 и DST-26 содержат не только последнее обновление, но и все предыдущие переходы тоже
Т.е. формат получается правильный, 10-ка старые переходы правильно определяет и ругается, не ругается только на один новый
11 ругается на все.

Честно говоря, что файлик таймзоны подходит я уверен на 99% (вот этот 1% и интересно проверить, если у кого будут родные патчи от Оракла для 10gR2)
Тогда получается разница в коде. Может, где-то блоху нашли. Тогда, возможно, 10-ка глючила и в каких-то других случаях обработки переходов.
Только не могу сообразить, как проверить
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Таймзона 26: разница 10gR2 и 11gR2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]