ORA-01882: região do fuso horário não encontrada

Estou acessando um database Oracle a partir de um aplicativo java, quando executo meu aplicativo recebo o seguinte erro:

java.sql.SQLException: ORA-00604: erro ocorrido no nível 1 do SQL recursivo ORA-01882: região do fuso horário não encontrada

Você também pode tentar verificar a versão do driver jdbc do Oracle e do database Oracle. Hoje mesmo tive esse problema ao usar ojdbc6.jar (versão 11.2.0.3.0) para conectar-me a um servidor Oracle 9.2.0.4.0. Substituí-lo pelo ojdbc6.jar versão 11.1.0.7.0 resolveu o problema.

Em uma planície, uma instalação do SQL-Developer no Windows vai para o diretório

C:\Program Files\sqldeveloper\sqldeveloper\bin 

e adicione

 AddVMOption -Duser.timezone=CET 

para arquivar sqldeveloper.conf .

Erro que recebi:

Erro de db_connection.java – >> java.sql.SQLException: ORA-00604: erro ocorrido no nível de SQL recursivo 1 ORA-01882: região de fuso horário não encontrada

ORA-00604: erro ocorrido no nível SQL recursivo 1ORA-01882: região do fuso horário não encontrada

Código Prev:

  public Connection getOracle() throws Exception { Connection conn = null; Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:tap", "username", "pw"); return conn; } 

novo Código:

  public Connection getOracle() throws Exception { TimeZone timeZone = TimeZone.getTimeZone("Asia/Kolkata"); TimeZone.setDefault(timeZone); Connection conn = null; Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:tap", "username", "pw"); return conn; } 

agora está funcionando !!

Atualize o arquivo oracle / jdbc / defaultConnectionProperties.properties em qualquer versão da biblioteca (ou seja, dentro do seu jar) que você está usando para conter a linha abaixo:

 oracle.jdbc.timezoneAsRegion=false 

O que acontece é que o cliente JDBC envia o ID do fuso horário ao servidor. O servidor precisa conhecer essa zona. Você pode verificar com

 SELECT DISTINCT tzname FROM V$TIMEZONE_NAMES where tzname like 'Etc%'; 

Eu tenho alguns servidores db que sabem sobre ‘Etc / UTC’ e ‘UTC’ (tzfile versão 18), mas outros só sabem ‘UTC’ (tz versão 11).

 SELECT FILENAME,VERSION from V$TIMEZONE_FILE; 

Há também um comportamento diferente no lado do cliente JDBC. A partir do 11.2, o driver enviará os IDs da zona se forem “conhecidos” para o Oracle, enquanto antes envia o deslocamento de horário. O problema com esse “envio de IDs conhecidos” é que o cliente não verifica qual versão / conteúdo de fuso horário está presente no servidor, mas possui sua própria lista.

Isso é explicado no artigo de suporte da Oracle [ID 1068063.1].

Parece que também depende do sistema operacional cliente, era mais provável que Etc / UTC falha com o Ubuntu do que o RHEL ou o Windows. Eu acho que isso é devido a alguma normalização, mas eu não descobri o que exatamente.

  1. no eclipse, vá executar -> executar configuração

  2. lá vai para a aba JRE nos painéis do lado direito

  3. na seção Argumentos da VM , cole isto

    -Duser.timezone=GMT

  4. então Aplicar -> Executar

Eu tive esse problema ao executar testes automatizados de um servidor de continuous integration. Eu tentei adicionar o argumento da VM ” -Duser.timezone=GMT ” aos parâmetros de construção, mas isso não resolveu o problema. No entanto, adicionar a variável de ambiente ” TZ=GMT ” corrigiu para mim.

ERRO:

ORA-00604: erro ocorrido no nível 1 do SQL recursivo ORA-01882: região do fuso horário não encontrada

Solução: configuração do CIM no Centos.

 /opt/oracle/product/ATG/ATG11.2/home/bin/dynamoEnv.sh 

Adicione este argumentos java:

 JAVA_ARGS="${JAVA_ARGS} -Duser.timezone=EDT" 

No Netbeans,

  1. Clique com o botão direito do mouse no seu projeto -> Propriedades
  2. Vá para Executar (em Categorias)
  3. Digite -Duser.timezone = UTC ou -Duser.timezone = GMT em Opções da VM.

Clique em Ok e execute novamente o programa.

Nota: Você também pode definir outros timestones além do UTC e GMT.

Se esse problema estiver no JDeveloper: Altere as propriedades do projeto para o modelo e para o projeto de visualização -> run / debug -> perfil padrão -> edit, adicione a seguinte opção de execução: -Duser.timezone = Asia / Calcutta

Certifique-se de que o valor do fuso horário acima seja buscado em seu database da seguinte maneira:

 select TZNAME from V$TIMEZONE_NAMES; 

Junto com isso, você deseja verificar as configurações de fuso horário no seu jdev.conf, bem como no JDeveloper -> Application Menu -> Propertências do Projeto Padrão -> Executar / Depurar -> Perfil Padrão -> Opções de Execução.

Eu também tive o mesmo problema quando tentei criar conexão no JDeveloper. Nosso servidor localizado em fuso horário diferente e, portanto, levantou os erros abaixo como:

 ORA-00604: error occurred at recursive SQL level 1 ORA-01882: timezone region not found 

Eu indiquei muitos fóruns que pediram para include o fuso horário nas Opções Java (Executar / Depurar / Perfil) das propriedades do Projeto e das propriedades do Projeto Padrão como -Duser.timezone="+02:00" bMas não funcionou para mim. Finalmente, a solução a seguir funcionou para mim.

Adicione a seguinte linha ao arquivo de configuração do JDeveloper ( jdev.conf ).

 AddVMOption -Duser.timezone=UTC+02:00 

O arquivo está localizado em “ \ Middleware \ jdeveloper \ jdev \ bin \ jdev.conf”.

No meu caso eu poderia fazer a consulta funcionar alterando “TZR” com “TZD” ..

 String query = "select * from table1 to_timestamp_tz(origintime,'dd-mm-yyyy hh24:mi:ss TZD') between ? and ?"; 

Eu corri para este problema com o Tomcat. Definir o seguinte em $CATALINA_BASE/bin/setenv.sh resolveu o problema:

 JAVA_OPTS=-Doracle.jdbc.timezoneAsRegion=false 

Tenho certeza de que usar uma das sugestões de parâmetros Java das outras respostas funcionaria da mesma maneira.

Eu também mesmo enfrentou problema semelhante.

Meio Ambiente:

Linux, projeto de hibernação, driver ojdbc6 ao consultar o database oracle 11g.

Resolução

O parâmetro TZ não foi configurado na máquina linux, que basicamente diz ao oracle sobre o fuso horário. Então, depois de adicionar a declaração de exportação “export TZ = UTC” no momento do início do aplicativo, resolvi meu problema.

UTC -> Altere o accorind para o seu fuso horário.

Consegui resolver o mesmo problema definindo o fuso horário no meu sistema linux (Centos6.5).

Reposting de

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html

  1. defina o fuso horário em /etc/sysconfig/clock por exemplo, defina como ZONE = “America / Los_Angeles”

  2. sudo ln -sf / usr / share / zoneinfo / América / Phoenix / etc / localtime

Para descobrir o valor do fuso horário, tente

 ls /usr/share/zoneinfo 

e procure o arquivo que representa seu fuso horário.

Depois de definir isso, reinicialize a máquina e tente novamente.

Enfrentando o mesmo problema usando o Eclipse e um Oracle Database distante, a alteração do fuso horário do sistema para corresponder ao fuso horário do servidor de database corrigiu o problema. Reinicie a máquina depois de alterar o fuso horário do sistema.

Espero que isso possa ajudar alguém

java.sql.SQLException: ORA-00604: erro ocorrido no nível 1 do SQL recursivo ORA-01882: região do fuso horário não encontrada

Para este tipo de erro, basta alterar a hora do seu sistema para o formato GMT padrão do seu país

Por exemplo, o fuso horário indiano é chennai, kolkata.