Pular para o conteúdo
  • Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 8 anos, 4 meses atrás por Avatar photoJosé Laurindo Chiappa.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #108114
    Avatar de Adriana GóisAdriana Góis
    Participante

      Bom dia a todos,

      Tenho um cliente que utiliza o Oracle XE 11.2.0.2.0 64 bits que só pode alocar até 1GB RAM. Tenho encontrado no alert vários erros ORA-04031 que param a aplicação front-end.

      ORA-04031: não é possível alocar 32 bytes de memória compartilhada (“shared pool”,”select t.ts#,t.file#,t.block…”,”KGLH0^b23236d”,”kglHeapInitialize:temp”)

      Existe algo que eu possa fazer sem ter que fazer o upgrade desta versão para uma versão paga?

      Agradeço a ajuda. Posso passar se necessário alguma parte do alert ou dos arquivos do incident.

      Grata,

      Adriana

      #108115
      Avatar photoJosé Laurindo Chiappa
      Moderador

        Colega, cfrme amplamente documentado (e repetido em n sites, http://www.oracle.com/technetwork/articles/sql/11g-xe-quicktour-498681.html é um exemplo) realmente o Express Edition tem diversos limites máximos , alguns dos principais sendo 11 Gb de dados e 1 GB de RAM : absolutamente Não tem Como vc ultrapassar esses limites no XE, se vc chegar num ponto onde eles estão te impedidno, um Upgrade para uma versão paga é a única Solução…
        O que vc pode tentar num primeiro momento é *** diminuir *** ao máximo a utilização de memória pelos caches e usos internos do banco : isso com certeza vai interferir na Performance, mas é uma maneira de “poupar” alguma coisa desse 1 GB máximo que o XE te deixa usar… Outro ponto ** crucial ** a ser entendido também é que dentro desse 1 Gb de RAM vai ter caber ** TANTO ** a SGA (ie, principalmente caches mas também áreas de sort e buffers em geral pro RDBMS) *** QUANTO *** vai ter que caber TAMBÉM a PGA, ie, a memória consumida PELA APLICAÇÃO para variáveis, arrays PL/SQL, flags em memória, etc, etc que os parâmetros de memória e sga …
        Assim sendo, eu recomendaria que vc :

        a) remova SGA_TARGET, PGA_TARGET e parâmetros de caches e buffers, etc : com isso o RDBMS é que vai tentar adequar a memória para atender SGA, PGA e usos internos … Este ajuste é o chamado AMM (Automatic Memory Management)

        b) colocasse MEMORY_TARGET para um tanto menos que o 1 Gb máximo que o XE pode usar, de modo a ter uma reservinha para eventuais necessidades advindas da aplicação ou de alguma query mais complexa, coisa assim : a Sugestão inicial é MEMORY_TARGET=700M

        Tente assim ….

        CASO ainda assim vc ainda receba erros, vc pode fazer uma tentativa sem AMM (ie, removendo MEMORY_TARGET e setando manualmente os parâmetros de TARGET e POOL/CACHE cfrme julgue adequado pro seu ambiente, e RESPEITANDO que SGA+PGA tem que ser menos que o 1 GB do XE), e finalmente, se nada disso der certo, aí tá Comprovado que essa Aplicação/ambiente tá demandando mais capacidade do que o XE é capaz, o Upgrade passa a ser Inevitável…

        []s

        Chiappa

        #108123
        Avatar de Adriana GóisAdriana Góis
        Participante

          Olá , bom dia,

          Eu poderia deixar os parâmetros desta forma?

          MEMORY_TARGET = 700M
          SGA_MAX_SIZE = 1GB

          Grata,

          Adriana

          #108124
          Avatar de Adriana GóisAdriana Góis
          Participante

            Ou deixar que ele aloque no máximo 1G de MEMORY_TARGET. Poderia ser dessa forma ?

            MEMORY_TARGET 700M
            MEMORY_MAX_TARGET = 1G

            Grata.

            #108136
            Avatar photoJosé Laurindo Chiappa
            Moderador

              veja bem : se vc quer deixar tudo automático (AMM, Automatic memory management, ie, que o próprio RDBMS gerencie, tirando memória da SGA (ie, dos caches) para atender eventuais necessidades de crescimento da PGA (ie, a memória alocada para as sessões/programas conectados, que contém variáveis, arrays, flags de sessão, etc) ou vice-versa, então SIM, vc elimina ** todos ** os parâmetros de SGA, de PGA, de BUFFER/cache, deixa só MEMORY_MAX_SIZE e MEMORY_TARGET – eu não vejo muito sentido em ter target diferente do tamanho máximo real que vc quer, isso pode levar a reajustes de memória frequentes mas ok, se vc quiser fazer pode fazer, sem probs eu creio…
              Aí, como eu disse, se MESMO deixando assim a tua Aplicação ainda abortar com erro de falta de memória, isso DIRETAMENTE INDICA que a aplicação precisa/quer alocar mais memória do que o máximo do XE, o Upgrade vai ser inevitável….

              []s

              Chiappa

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