Sim, é verdade que o TZ de GMT-2 reportado estaria correto se o seu Estado adotou o horário de verão - esse meu exemplo que mostra isso foi tirado duma máquina Windows com o relógio acertado pelo serviço de hora default do Windows (time.windows.com), setada para o TZ de Brasília GMT-3 E com a opção de usar Horário de Verão tickada.... EM TESE, falando propriamente, Não deveria ser necessário se alterar esse TZ, que está correto, mas na prática a gente vê muita "programação criativa" pelaí, muita monstruosidade, pode até ser que como uma enorme gambi vc acabe tendo que alterar manualmente o tz (que está correto) do servidor ... Antes disso, porém : 1. confirme com eles que REALMENTE essa data/hora que está atrasada está mesmo vindo do banco de dados : NADA impede que na verdade isso esteja sendo extraído dalgum servidor de aplicação, por exemplo... 2. SE realmente tá vindo do database, mostre para eles o meu exemplo que demonstra a TZ de banco, de sessão E de SO (e repita-o no seu database), e QUESTIONE qual eles estão usando : PODE ser que seja só um caso de ajustar o ambiente (via variáveis de ambiente, arquivo de config, ou o que for) - isso faz bastante sentido, já que quando vc (ou o próprio Windows) ajusta a TZ do servidor as configs de sessão (principalmente se forem em variáveis de ambiente) não são automaticamente alteradas, de repente esse é o seu problema : a SYSTIMESTAMP tá vindo correta porque vêm do SO que está ajustado mas na verdade eles usam a CURRENT_TIMESTAMP, que está setada via config de ambiente defasada.... Uma vez confirmado que eles usam a TZ do SO refletida no SYSTIMESTAMP (ou então se eles usam TZ de sessão não souberem indicar onde/como alterar o ambiente de TZ na tool deles, o que não é impossível) aí OK, vc vai ter que altera a TZ no SO ... Só relembro que, como já foi dito algumas vezes nas últimas threads recentes, antes de alterar data/hora/tz do Sistema Operacional tenha em mente que o RDBMS em si é INDIFERENTE a isso, mas MUITOS componentes auxiliares (como CLUSTERWARE, DBMS SCHEDULER JOBS, e mais alguns) e atividades de administração (como RECOVER por tempo, retenções no RMAN, arquivos de log e assemelhados que estejam com o nome composto por data/hora, entre outras) usam/podem usar internamente o componente date/time/tz do Sistema Operacional e podem ter registrado a informação de antes da mudança - se vc está INSEGURO se o seu database usa itens do tipo, o mais Seguro (se vc tiver janela para tal) seria fazer um shutdown (de banco, aplicação, listener, tudo) antes da troca e um startup depois .... []s
Chiappa --- Em oracle_br@yahoogrupos.com.br, André Luiz Silva <mennuciano@...> escreveu > > Fábio e Chiappa muito obrigado pelo retorno, > > A solicitação para alterar o TZ do SO partiu da fabricante do software que > roda neste DB, hoje o TZ do SO do servidor está em GMT 02:00 já que > estamos em sp e no horário de verão o que está correto na minha opinião. > > Más o horário que aparece nas telas e relatórios da aplicação estão com uma > hora em atraso e eles alegam que a solução é alterar o fuso do SO para > 03:00 já que segundo eles este é o TZ do Brasil > > Abs e obrigado novamente. > > Ps.já alterei o TZ do DB para 03:00 e não surtiu o efeito esperado. > Em 24/10/2013 15:28, "J. Laurindo Chiappa" <jlchiappa@...> > escreveu: > > > ** > > > > > > Sim, a função SYSTIMESTAMP retorna ** todas ** as suas informações a > > partir do clock e do calendário ativos no servidor que hospeda o RDBMS, sim > > - o manual apropriado "Oracle® Database SQL Language Reference 11g Release > > 2" na entrada sobre ela textualmente diz (ênfase com *s minha) > > > > " > > Purpose > > > > SYSTIMESTAMP returns the system date, including fractional seconds *** and > > time zone ** , of the system ** on which the database resides **. > > " > > > > ok ? NOTAR, porém, que EXISTE sim a propriedade de TIMEZONE no database > > (ela é uma das propriedades que vc informa na criação do database, veja no > > CREATE DATABASE a opção de SET TIMEZONE) , E além disso existe também a > > timezone-default para a sessão, que pode ser alterada via environment como > > Qualquer Outra propriedade de uma sessão... Então a pergunta é, QUAL desses > > timezones vc quer alterar ??? O timezone do ambiente/SO vc altera no SO (e, > > DA MESMA MANEIRA que uma alteração de data/hora, em princípio NÂO DEMANDA > > um restart do database, já que o database é INDIFERENTE ao clock do > > servidor, ele se controla via SCN), o timezone do DB vc pode alterar com > > ALTER DATABASE SET TIME_ZONE='valorsesejado', e o da sessão vc altera via > > variável de ambiente ( ou ALTER SESSION, iirc) .... Um exemplo : > > > > SQL> select systimestamp from dual ; > > > > SYSTIMESTAMP > > ---------------------------------------------------------- > > 24/10/13 14:26:06,871000 -02:00 > > > > SQL> SELECT DBTIMEZONE FROM DUAL; > > > > DBTIME > > ------ > > +00:00 > > > > SQL> select current_timestamp from dual; > > > > CURRENT_TIMESTAMP > > ---------------------------------------------------------- > > 24/10/13 14:36:17,603000 -02:00 > > > > => ok, na falta de especificação o current timestamp assumiu o do servidor > > E a sessão (o CURRENT_TIMESTAMP no mesmo manual acima citado tá documentado > > que registra a TZ da sessão) seguiu... Vou alterar o timezone da sessão : > > > > SQL> exit > > > > C:\Windows\system32>set ORA_SDTZ=+05:00 > > > > C:\Windows\system32>echo %ORA_SDTZ% > > +05:00 > > > > C:\Windows\system32>sqlplus system/oracle > > > > ..... > > > > SQL> select current_timestamp from dual; > > > > CURRENT_TIMESTAMP > > ---------------------------------------------------------- > > 24/10/13 21:42:52,673000 +05:00 > > > > SQL> SELECT DBTIMEZONE FROM DUAL; > > > > DBTIME > > ------ > > +00:00 > > > > SQL> select systimestamp from dual ; > > > > SYSTIMESTAMP > > ---------------------------------------------------------- > > 24/10/13 14:43:05,546000 -02:00 > > > > SQL>exit > > > > => okdoc ? não alterei a tz do database, E não alterei a do ambiente/SO > > (então AMBAS permaneceram a mesma, E a systimestamp como documentado > > derivou do SO/servidor), ** MAS ** o tz da sessão foi SIM alterado... Agora > > vou mudar no SO para GMT-1 (Açores) , e veja (SEM nenhum reboot do servidor > > nem restart do banco) : > > > > C:\Windows\system32>sqlplus system/oracle > > > > ... > > > > SQL> select systimestamp from dual ; > > > > SYSTIMESTAMP > > ---------------------------------------------------------- > > 24/10/13 16:07:36,060000 -01:00 > > > > SQL> SELECT DBTIMEZONE FROM DUAL; > > > > DBTIME > > ------ > > +00:00 > > > > SQL> select current_timestamp from dual; > > > > CURRENT_TIMESTAMP > > ---------------------------------------------------------- > > 24/10/13 22:07:48,270000 +05:00 > > > > SQL> exit > > > > ==> Tá jóia ??? > > > > E aí vem a SEGUNDA pergunta, POR QUE/PARA QUE vc quer mudar a TZ reportada > > pelo SYSTIMESTAMP ??? Pergunto isso porque se for para mudar TZ de > > SCHEDULER JOBs, vc muda esse atributo diretamente com as built-ins de JOBs, > > por exemplo.... Dia aí o que vc quer/precisa que talvez a gente possa > > palpitar melhor... > > > > []s > > > > Chiappa > > > > --- Em oracle_br@yahoogrupos.com.br, André Luiz Silva <mennuciano@> > > escreveu > > > > > > Pessoal bom dia, tudo bem? > > > > > > O timezone retornado na consulta select systimestamp from dual pertence > > ao > > > DB ou ao SO? Pelo que andei pesquisando este é o timezone do SO onde o > > > RDBMS está instalado correto? Se sim alguém já teve que alterar? Quais > > são > > > os steps? É necessário stop/start da instance? > > > > > > DB: ora 11g > > > SO: windows 2003 > > > > > > Atenciosamente > > > André > > > > > > > > > >