Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Golden Gate COMMITTIMESTAMP WITH TIMEZONE / 25 сообщений из 25, страница 1 из 1
10.04.2012, 11:36
    #37746482
windws
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Добрый день!

Есть источник данных допустим находиться во Владивостоке часовой пояс +11 час время там 18:33
В Москве время, где находиться целевой сервер 11:33 часовой пояс +4
когда используется @GETENV ("GGHEADER", "COMMITTIMESTAMP")
время записывается 11:33 +4 , а должно записываться 18:33 +11
как это можно сделать?
...
Рейтинг: 0 / 0
10.04.2012, 12:09
    #37746576
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
windwsДобрый день!

Есть источник данных допустим находиться во Владивостоке часовой пояс +11 час время там 18:33
В Москве время, где находиться целевой сервер 11:33 часовой пояс +4
когда используется @GETENV ("GGHEADER", "COMMITTIMESTAMP")
время записывается 11:33 +4 , а должно записываться 18:33 +11
как это можно сделать?Для COMMITTIMESTAMP не требуется делать преобразования самостоятельно.
...
Рейтинг: 0 / 0
10.04.2012, 12:16
    #37746596
windws
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Александр,
вот именно что COMMITTIMESTAMP сам делает преобразование времени, а мне это не нужно, необходимо чтобы время которое приходило оставалось таким же как и было на источнике. а COMMITTIMESTAMP его автоматически преобразует к времени, целевого сервера.
...
Рейтинг: 0 / 0
10.04.2012, 12:32
    #37746630
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
windwsАлександр,
вот именно что COMMITTIMESTAMP сам делает преобразование времени, а мне это не нужно, необходимо чтобы время которое приходило оставалось таким же как и было на источнике. а COMMITTIMESTAMP его автоматически преобразует к времени, целевого сервера.Он не преобразует его ко времени источника. Он все времена приносит в GMT.
Насколько я знаю TIMESTAMP WITH TIMEZONE можно только реплицировать. Т.е. если вы сами такое поле заполняете в таблице(например, триггером), то это можно перетаскивать OGG
...
Рейтинг: 0 / 0
10.04.2012, 12:33
    #37746633
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
А какова цель этого танца?
...
Рейтинг: 0 / 0
10.04.2012, 12:39
    #37746648
windws
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Такие требования..
Я так понимаю что параметр @GETENV ("GGHEADER", "COMMITTIMESTAMP") должен выводить время которое находится на источннике?
у меня почему-то COMMITTIMESTAMP переводит время на время которое находится на таргете.
И не знаю что с этим сделать.
...
Рейтинг: 0 / 0
10.04.2012, 12:54
    #37746675
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
аwindwsТакие требования..
Я так понимаю что параметр @GETENV ("GGHEADER", "COMMITTIMESTAMP") должен выводить время которое находится на источннике?
у меня почему-то COMMITTIMESTAMP переводит время на время которое находится на таргете.
И не знаю что с этим сделать.Не совсем так. Он переводит время во временную зону +0:00.
Допустим у вас есть источник и приемник:
1. Источник в Москве, временная зона +3:00 и время COMMIT 3:00 ночи
2. Приемник в Екатеринбург, временная зона +5:00 и время COMMIT 5:00 ночи
При правильной настройке в обоих случаях в COMMITTIMESTAMP вы получите 0:00.
...
Рейтинг: 0 / 0
10.04.2012, 12:55
    #37746678
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
зоны, конечно -3:00 и -5:00
...
Рейтинг: 0 / 0
10.04.2012, 13:43
    #37746777
windws
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Александр,
ну все таки как правильно сделать, чтобы время было правильно в целевой таблице?
...
Рейтинг: 0 / 0
10.04.2012, 14:19
    #37746854
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
windwsДобрый день!

Есть источник данных допустим находиться во Владивостоке часовой пояс +11 час время там 18:33
В Москве время, где находиться целевой сервер 11:33 часовой пояс +4
когда используется @GETENV ("GGHEADER", "COMMITTIMESTAMP")
время записывается 11:33 +4 , а должно записываться 18:33 +11
как это можно сделать?Ну решите влоб.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
MACRO #add_hours 
PARAMS (#date_field, #num_hours) 
BEGIN 
@DATE ("YYYY-MM-DD:HH:MI:SS", "JTS", 
@COMPUTE (@DATE ("JTS", "YYYY-MM-DD:HH:MI:SS", #date_field) + 1000000*60*60*#num_hours)) 
END;

map ggtest.employees, target ggtest.employees_hist, colmap (usedefaults, 
HIRE_DATE_4=#add_hours(HIRE_DATE, 4));
...
Рейтинг: 0 / 0
10.04.2012, 16:27
    #37747158
Barkovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
windwsДобрый день!

Есть источник данных допустим находиться во Владивостоке часовой пояс +11 час время там 18:33
В Москве время, где находиться целевой сервер 11:33 часовой пояс +4
когда используется @GETENV ("GGHEADER", "COMMITTIMESTAMP")
время записывается 11:33 +4 , а должно записываться 18:33 +11
как это можно сделать?

Есть желание понять, откуда вы взяли, что COMMITTIMESTAMP пишется с таймзоной?

Код: plsql
1.
2.
3.
4.
“COMMITTIMESTAMP” Returns the transaction timestamp (the time when the transaction
committed) expressed in the format of YYY-MM-DD HH:MI:SS.FFFFFF, for
example:
2006-01-24 17:08:59.000000
...
Рейтинг: 0 / 0
10.04.2012, 16:29
    #37747162
Barkovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Alexander RyndinwindwsАлександр,
вот именно что COMMITTIMESTAMP сам делает преобразование времени, а мне это не нужно, необходимо чтобы время которое приходило оставалось таким же как и было на источнике. а COMMITTIMESTAMP его автоматически преобразует к времени, целевого сервера.Он не преобразует его ко времени источника. Он все времена приносит в GMT.
Насколько я знаю TIMESTAMP WITH TIMEZONE можно только реплицировать. Т.е. если вы сами такое поле заполняете в таблице(например, триггером), то это можно перетаскивать OGG

Александр, что вы имеете в виду, под "он все времена переносит в GMT"? GG переносит времена так, как они были записаны в redo.log, а там может быть все что угодно, и не обязательно это GMT.
...
Рейтинг: 0 / 0
10.04.2012, 17:05
    #37747244
windws
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
BarkovskywindwsДобрый день!

Есть источник данных допустим находиться во Владивостоке часовой пояс +11 час время там 18:33
В Москве время, где находиться целевой сервер 11:33 часовой пояс +4
когда используется @GETENV ("GGHEADER", "COMMITTIMESTAMP")
время записывается 11:33 +4 , а должно записываться 18:33 +11
как это можно сделать?

Есть желание понять, откуда вы взяли, что COMMITTIMESTAMP пишется с таймзоной?

Код: plsql
1.
2.
3.
4.
“COMMITTIMESTAMP” Returns the transaction timestamp (the time when the transaction
committed) expressed in the format of YYY-MM-DD HH:MI:SS.FFFFFF, for
example:
2006-01-24 17:08:59.000000



есть в целевой таблице создать поле timestamp with timezone, тогда параметр COMMITTIMESTAMP будет писать туда еще и тамйзону.
...
Рейтинг: 0 / 0
10.04.2012, 17:09
    #37747256
Barkovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Я так и думал.
COMMITTIMESTAMP тут тогда вообще ни при чем.
Вам надо курить логику работы TIME ZONE. Вы записываете значение типа DATE в поле с тайм зоной, естественно, что это трактуется как время в таймзоне оракловой сессии.
...
Рейтинг: 0 / 0
10.04.2012, 18:05
    #37747405
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
BarkovskyAlexander Ryndinпропущено...
Он не преобразует его ко времени источника. Он все времена приносит в GMT.
Насколько я знаю TIMESTAMP WITH TIMEZONE можно только реплицировать. Т.е. если вы сами такое поле заполняете в таблице(например, триггером), то это можно перетаскивать OGG

Александр, что вы имеете в виду, под "он все времена переносит в GMT"? GG переносит времена так, как они были записаны в redo.log, а там может быть все что угодно, и не обязательно это GMT.в редо время пишется в gmt. по другому я не видел. Естестверно гг сам время не переводит, но по факту он приносит время в гринвиче
...
Рейтинг: 0 / 0
10.04.2012, 18:19
    #37747422
Lga-Eg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Собственно, примерно это мне нужно было, когда я спрашивала вот здесь: http://www.sql.ru/forum/actualthread.aspx?tid=930119
Пока ничего лучше хардкода не придумалось...
К сожалению, у меня на тестовой среде и таргет и источник в одной таймзоне, но я не увидела приведения к GMT. Alexander Ryndin, точно он его приводит?..
...
Рейтинг: 0 / 0
10.04.2012, 18:25
    #37747432
Lga-Eg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Получается, голденгейт получает зону из операционной системы?
...
Рейтинг: 0 / 0
10.04.2012, 19:18
    #37747478
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Lga-EgПолучается, голденгейт получает зону из операционной системы?Барковский правильно сказал - это делает не GG, а сама СУБД Oracle. А так да, СУБД берет информацию из настроек ОС, чтобы понять насколько нужно сдвинуть время, чтобы получить GMT.
...
Рейтинг: 0 / 0
11.04.2012, 11:21
    #37748140
Barkovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Alexander RyndinBarkovskyпропущено...


Александр, что вы имеете в виду, под "он все времена переносит в GMT"? GG переносит времена так, как они были записаны в redo.log, а там может быть все что угодно, и не обязательно это GMT.в редо время пишется в gmt. по другому я не видел. Естестверно гг сам время не переводит, но по факту он приносит время в гринвиче

Склонен не согласиться с вами. Тесткейс приводить времени мало, но на 99% процентов уверен, что COMMITTIMESTAMP - это время OS, оно же sysdate.
...
Рейтинг: 0 / 0
11.04.2012, 12:51
    #37748394
Barkovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Вот, что нарылось. Я вижу одной последних записей в текущем трейле:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Logdump 76 >x date
Wed Apr 11 12:00:22 MSD 2012
Logdump 77 >n
___________________________________________________________________
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)
RecLength  :   268  (x010c)   IO Time    : 2012/04/11 12:00:07.000.000
IOType     :     5  (x05)     OrigNode   :   255  (xff)
TransInd   :     .  (x03)     FormatType :     R  (x52)
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00)
AuditRBA   :      14325       AuditPos   : 2281488
Continued  :     N  (x00)     RecCount   :     1  (x01)

Админ гайд говорит, что в логдампе время локальное, но в GMT формате (надо полагать так они называют отображение без таймзоны).

admin guideIO Time - The timestamp of the commit record, in local time of the source system, in GMT format. All records in a transaction will have the same commit timestamp. The combination of IO Time and AuditRBA uniquely identifies data from a given transaction.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.01.2018, 19:16
    #39592232
Rudyshin Sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
выяснилось, что ГГ перед сохранением COMMITTIMESTAMP (он же "IO Time" в logdump) в трейл, переводит время в часовую зону, в которой сам же и запущен.
причем поля с типом TIMESTAMP, оставляет без изменений, что на мой взгляд является очень старнным
было бы логично, и наверное даже полезно, если бы все времена приводились к другой зоне

проверил следующим образом
остановил и запустил экстракт два раза с явным указанием переменной TZ
в первом случае UTC, во втором UTC-3 (Москва)

каждый раз выполняя апдейт двух полей

Код: sql
1.
2.
3.
4.
5.
6.
SQL> desc TEST.template
 Name					   Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID						    NUMBER(19)
 DESCRIPTION					    VARCHAR2(1000)
 LAST_UPDATE_DATE				    TIMESTAMP(6)



Код: sql
1.
update TEST.TEMPLATE set DESCRIPTION=systimestamp, LAST_UPDATE_DATE=systimestamp where rownum = 1;



Код: sql
1.
setenv (TZ=UTC)



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    78  (x004e)   IO Time    : 2018/01/27 13:43:59.000.000   
IOType     :    15  (x0f)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         29       AuditPos   : 14385168 
Continued  :     N  (x00)     RecCount   :     1  (x01) 

2018/01/27 13:43:59.000.000 FieldComp            Len    78 RBA 1501 
Name: TEST.TEMPLATE 
After  Image:                                             Partition 4   G  s   
 0002 0027 0000 0023 3237 2d4a 414e 2d31 3820 3031 | ...'...#27-JAN-18 01  
 2e34 332e 3536 2e35 3630 3232 3620 504d 202b 3030 | .43.56.560226 PM +00  
 3a30 3000 0400 1f00 0032 3031 382d 3031 2d32 373a | :00......2018-01-27:  
 3133 3a34 333a 3536 2e35 3630 3232 3630 3030      | 13:43:56.560226000  
Column     2 (x0002), Len    39 (x0027)  
 0000 0023 3237 2d4a 414e 2d31 3820 3031 2e34 332e | ...#27-JAN-18 01.43.  
 3536 2e35 3630 3232 3620 504d 202b 3030 3a30 30   | 56.560226 PM +00:00  
Column     4 (x0004), Len    31 (x001f)  
 0000 3230 3138 2d30 312d 3237 3a31 333a 3433 3a35 | ..2018-01-27:13:43:5  
 362e 3536 3032 3236 3030 30                       | 6.560226000  

Код: sql
1.
setenv (TZ=UTC-3)



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    78  (x004e)   IO Time    : 2018/01/27 10:48:28.000.000   
IOType     :    15  (x0f)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         29       AuditPos   : 14544816 
Continued  :     N  (x00)     RecCount   :     1  (x01) 

2018/01/27 10:48:28.000.000 FieldComp            Len    78 RBA 1501 
Name: TEST.TEMPLATE 
After  Image:                                             Partition 4   G  s   
 0002 0027 0000 0023 3237 2d4a 414e 2d31 3820 3031 | ...'...#27-JAN-18 01  
 2e34 382e 3236 2e30 3733 3539 3620 504d 202b 3030 | .48.26.073596 PM +00  
 3a30 3000 0400 1f00 0032 3031 382d 3031 2d32 373a | :00......2018-01-27:  
 3133 3a34 383a 3236 2e30 3733 3539 3630 3030      | 13:48:26.073596000  
Column     2 (x0002), Len    39 (x0027)  
 0000 0023 3237 2d4a 414e 2d31 3820 3031 2e34 382e | ...#27-JAN-18 01.48.  
 3236 2e30 3733 3539 3620 504d 202b 3030 3a30 30   | 26.073596 PM +00:00  
Column     4 (x0004), Len    31 (x001f)  
 0000 3230 3138 2d30 312d 3237 3a31 333a 3438 3a32 | ..2018-01-27:13:48:2  
 362e 3037 3335 3936 3030 30                       | 6.073596000   
...
Рейтинг: 0 / 0
27.01.2018, 23:28
    #39592277
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Если это 12.2, то он ещё и приносит информацию о временной зоне самой базы данных. А время коммита он случаем не в utc переводит?
...
Рейтинг: 0 / 0
28.01.2018, 10:07
    #39592305
Rudyshin Sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
да кстати версия ГГ 12.1.2.1.0, версия БД 12.1.0.2.0

подробности версии ***********************************************************************
Oracle GoldenGate Capture for Oracle
Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140727.2135.1_FBO
Linux, x64, 64bit (optimized), Oracle 12c on Aug 7 2014 10:40:21

Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights reserved.


Starting at 2018-01-27 14:55:44
***********************************************************************

Operating System Version:
Linux
Version #2 SMP Wed Nov 25 13:51:41 PST 2015, Release 3.8.13-98.7.1.el7uek.x86_64
Node: ol7-121.localdomain
Machine: x86_64



Database Version:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
CORE 12.1.0.2.0 Production
TNS for Linux: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production



Да ГГ переводит время в UTC, но проблема в том, что только COMMITTIMESTAMP, а поля типа DATE и TIMESTAMP оставляет как есть.

Причем если запускать сам logdump, то отображение "IO Time" изменяется в зависимости от переменной TZ, с которой запущен logdump. А поля DATE и TIMESTAMP отображаются как есть в UTC.

и в заголовке трейла вижу информацию о временной зоне
Код: plaintext
1.
2.
TokenID x3d '=' DbTimeZone       Info x00  Length    5 
 0003 474d 54                                      | ..GMT  
...
Рейтинг: 0 / 0
28.01.2018, 10:22
    #39592310
Rudyshin Sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
на самом деле COMMITTIMESTAMP не так важен
что делать со обычными полями типа DATE и TIMESTAMP?
как заставить ГГ конвертировать их к другой зоне?
получается что только через "MACRO #add_hours"?
...
Рейтинг: 0 / 0
28.01.2018, 12:34
    #39592344
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Golden Gate COMMITTIMESTAMP WITH TIMEZONE
Попробовать 12.2. Там может быть другие проведение. Но если нет, то там должно быть ещё реализовать addhours
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Golden Gate COMMITTIMESTAMP WITH TIMEZONE / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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