Проблемы с timezone

bobskiy
Дата: 20.10.2015 07:28:02
Доброго времени суток.
У меня тоже проблема со временем.
Windows server 2008. Oracle 11G.
Системное время (UTC +5), время в СУБД (TIMEZONE +5) установлены правильно.
В БД везде время указывается правильно, кроме журнала аудита. Как будто пишется время UTC, и не учитывается таймзона.

Может кто подскажет, куда копать? Может нужно явно указать зону ASIA/Yekaterinburg?
Vadim Lejnin
Дата: 20.10.2015 08:40:32
bobskiy
Доброго времени суток.
У меня тоже проблема со временем.
Windows server 2008. Oracle 11G.
Системное время (UTC +5), время в СУБД (TIMEZONE +5) установлены правильно.
В БД везде время указывается правильно, кроме журнала аудита. Как будто пишется время UTC, и не учитывается таймзона.

Может кто подскажет, куда копать? Может нужно явно указать зону ASIA/Yekaterinburg?

dbtimeone?
bobskiy
Дата: 20.10.2015 14:34:00
Vadim Lejnin, не совсем понял.
Стоит правильная зона.
SYSDATE
-----------
20.10.2015 16:32:41
 
SQL> 
 
DBTIMEZONE SESSIONTIMEZONE
---------- ---------------------------------------------------------------------------
+05:00     +05:00


Время правильное. Но почему в журнал аудита записывается, как UTC (без сдвига на 5 часов)?
Vadim Lejnin
Дата: 20.10.2015 14:38:04
bobskiy
Vadim Lejnin, не совсем понял.
Стоит правильная зона.
SYSDATE
-----------
20.10.2015 16:32:41
 
SQL> 
 
DBTIMEZONE SESSIONTIMEZONE
---------- ---------------------------------------------------------------------------
+05:00     +05:00


Время правильное. Но почему в журнал аудита записывается, как UTC (без сдвига на 5 часов)?


Журнал аудита - это журнал windows или AUD$?
Как Вы смотрите?

Покажите если сможете
bobskiy
Дата: 20.10.2015 14:39:00
Я так понял, копать в сторону
автор
Setting the session time zone does not affect the value returned by the SYSDATE and SYSTIMESTAMP SQL function. SYSDATE returns the date and time of the operating system on which the database resides, taking into account the time zone of the database server's operating system that was in effect when the database was started.
bobskiy
Дата: 20.10.2015 14:40:51
Vadim Lejnin,
AUD$
Делаю выборку из таблицы аудита. В поле timestamp время указано меньше на 5 часов, чем должно быть.
bobskiy
Дата: 20.10.2015 14:45:10
Вот, например. Время должно быть 9:18
select t.userid, t.ntimestamp# from SYS.AUD$ t
SYSTEM	15.10.15 04:18:53,457000


Пока сделал костыль, добавляющий 5 часов.
Vadim Lejnin
Дата: 20.10.2015 15:02:26
bobskiy
Вот, например. Время должно быть 9:18
select t.userid, t.ntimestamp# from SYS.AUD$ t
SYSTEM	15.10.15 04:18:53,457000


Пока сделал костыль, добавляющий 5 часов.

это не баг, это фича:
In  Oracle 10g - 11g, the LOGOFF$TIME is also be recorded in UTC; the aud$.logoff$time column is stored by the kernel as date/time in UTC format (however we still use a DATE datatype for it). 

Whenever logoff$time is queried through the audit-views (DBA_AUDIT_TRAIL) it is converted to the session timezone format using "'cast((from_tz(cast(logoff$time as timestamp),'00:00') at local) as date)". 
bobskiy
Дата: 20.10.2015 15:06:20
Vadim Lejnin,
Большое спасибо. Я так и сделал в своем представлении и в рассылке аудита.
Теперь буду знать и спать спокойно)
timestamp vs extended_timestamp
Дата: 20.10.2015 15:51:11
bobskiy
Вот, например. Время должно быть 9:18
select t.userid, t.ntimestamp# from SYS.AUD$ t
SYSTEM	15.10.15 04:18:53,457000


Пока сделал костыль, добавляющий 5 часов.
лучше бы использовал публичную view и не парил мозг неумением найти подходящие задаче поля.