Pular para o conteúdo
  • Este tópico contém 6 respostas, 3 vozes e foi atualizado pela última vez 11 anos, 6 meses atrás por Avatar de Fábio PradoFábio Prado.
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #105352
    Avatar de Guilherme Vieira de StefaniGuilherme Vieira de Stefani
    Participante

      Boa tarde a todos,

      Estou passando por algumas dificuldades relacionadas ao meu banco de dados. Uso um Oracle 11g instalado sobre um CentOS 6.2 64 Bits. Eventualmente, quando faço a atualização do nosso ERP que utiliza Delphi 11(se não me engano), ao utilizar partes do sistema que utilizem datas, o banco de dados(Atravez do ERP) emite a seguinte mensagem:

      ORA-01843: not a valid month

      Reinicializo o servidor do banco e o problema é resolvido. O que aparentemente, elimina a possibilidade de um formato de entrada de dados incorreto.

      Se alguem tiver alguma ideia agradeço desde já.

      Att. Guilherme Vieira de Stéfani

      #105353
      Avatar de rmanrman
      Participante

        @spinalsc

        Isso pode ser configuração do cliente Oracle ou Sistema Operacional.

        Você está usando o Client ou Instant Client?

        Windows Ingles ou Português?

        Verifique se o Windows está configurado para reconhecer o formato de data e hora como Português (Brasil) e o Local está como Brasil, consulte Região e Idioma no painel de controle (Windows 7). Modifique a mascara da data conforme necessário.

        Se for Instant Client é necessário configurar a variável de ambiente NLS_LANG com o seguinte valor: BRAZILIAN PORTUGUESE_BRAZIL.WE8MSWIN1252

        Se for Client Oracle essa configuração está em um registro do regedit.exe, se as configurações do formato de data e hora e o local não foram configuradas corretamente no momento da instalação do Client, configure e reinstale o client Oracle.

        #105354
        Avatar de Guilherme Vieira de StefaniGuilherme Vieira de Stefani
        Participante

          Na realidade, o sistema apresenta a mensagem: ORA-03114: not connected to Oracle mas eu consigo continuar fazendo outras consultas pelo sistema, ou seja, ele não perde conexão realmente com o banco.

          Outro ponto, não é usado o client nem o instant cliente, o sistema precisa ter as DLL’s oraociei11.dll e oci.dll, e tenho que criar as variáveis de ambiente
          NLS_LANG: american_america.we8mswin1252
          tns_admin: C:SistemasNOME_DO_SISTEMAC (onde está o TNSNAMES.ORA)

          Windows, Oracle e Linux em Portugues.

          Sobre a máscara da data, não acredito que seja o problema pois reiniciando o servidor do banco de dados o problema não voltou a acontecer. Caso o problema fosse esse, ao meu ver, persistiria.

          Obrigado Rman

          #105355
          Avatar de rmanrman
          Participante

            @spinalsc

            NLS_LANG: american_america.we8mswin1252 ? Realmente é isso ? Não deveria ser BRAZILIAN PORTUGUESE_BRAZIL.WE8MSWIN1252 ?

            Como está configurado la em Região e Idioma? Qual é o formato da data que o seu sistema deve utilizar?

            As dll são do Instant Client.

            #105356
            Avatar de Guilherme Vieira de StefaniGuilherme Vieira de Stefani
            Participante

              Rman,

              O formato de Data lá em configurações regionais da minha máquina(e dos outros servidores de aplicação) está: dd/MM/aaaa que aparentemente é o formato do sistema.

              Sobre a variável de ambiente NLS_LANG, confesso que segui orientação da Software House e não questionei. Esta variável também está no banco de dados? Posso conferir se são as mesmas entre si? Confesso desconhecer isto.

              Att

              #105357
              Avatar de rmanrman
              Participante

                @spinalsc

                As configurações entre client e server não precisam estar iguais, se cada um for configurado adequadamente, a conversão é feita automática.

                Mas caso queira verificar, segue as VIEWs, NLS_DATABASE_PARAMETERS, NLS_INSTANCE_PARAMETERS, NLS_SESSION_PARAMETERS. Existe uma ordem de hierarquia, NLS_SESSION_PARAMETERS sobreescreve NLS_INSTANCE_PARAMETERS que sobrescreve NLS_DATABASE_PARAMETERS.

                O NLS_LANG é composto por NLS_TERRITORY, NLS_LANGUAGE e NLS_CHARACTERSET.

                #105366
                Avatar de Fábio PradoFábio Prado
                Participante

                  @spinalsc

                  Uma dica que já utilizei p/ resolver este problema é criar uma trigger de logon para o usuário de BD do sistema, que executa um código para formatar a mascara de data que o seu sistema trabalha, como por exemplo:
                  ALTER SESSION SET NLS_DATE_FORMAT = 'dd/mm/yyyy hh24:mi:ss';
                  

                  De qq forma sugiro também a leitura do artigo http://www.fabioprado.net/2012/11/configurando-national-language-support.html para vc entender melhor as configurações de NLS.

                  []s

                Visualizando 7 posts - 1 até 7 (de 7 do total)
                • Você deve fazer login para responder a este tópico.
                plugins premium WordPress