Pular para o conteúdo
  • Este tópico contém 12 respostas, 5 vozes e foi atualizado pela última vez 15 anos, 3 meses atrás por David Siqueira.
Visualizando 13 posts - 1 até 13 (de 13 do total)
  • Autor
    Posts
  • #96964
    DBA_LUCAS
    Participante

      Bom dia Amigos !

      Tenho uma nova duvida , na verdade ja tem um bom tempo que estou com esse problema ,

      ORA-04031: unable to allocate 16 bytes of shared memory (“shared pool”,”select increment$,minvalue,m…”,”sql area”,”kglhin: temp” )

      Eu coloquei meu SGA_MAX_SIZE = 1000M
      Eu coloquei meu SGA_TARGET = 160M

      mas mesmo assim o problema persisti , eu ja tentei colocar o SGA_MAX_SIZE com 2000M ,mas assim o banco nao subiu mais , ja não sei o que eu faço mais … alguem tem alguma ideia ? tenho duvida se eu setando valores para o MAX e para o TARGET o oracle ja gerencia automatico a memoria ?

      #96977
      VitorLeandro
      Participante

        Fala Lucas,

        Posta a versão do Oracle, Sistema operacional e o Hardware…

        #96978
        vieri
        Participante

          faz um teste pra mim.

          coloca o SGA_TARGET e o SGA_MAX_SIZE ambos com 500M
          e ve se a base sobe.

          depois explico o pq caso não entenda.

          #96979
          DBA_LUCAS
          Participante

            Xeon QuadCore 2.4Ghz, Memória de 4Gb, HD de 250gb distribuição FEDORA

            #96980
            DBA_LUCAS
            Participante

              Me explica isso vieri ? pq 500 em kda , num intendi …

              #96984
              vieri
              Participante

                existem duas possibilidades, ou sua sga_target está pequena demais e a shared_pool não está conseguindo chegar no valor que ela precisa alcançar ou seu sga_max_size está grande, a ponto de não ser possível ser alocado. com esse teste vc mata os dois coelhos com uma paulada só.

                capitche?

                #96985
                vieri
                Participante

                  setando ao SGA_MAX_SIZE e SGA_TARGET o oracle assume a distribuição entre as áreas de memória.
                  mesmo com o oracle assumindo vc também pode fixar um valor minimo,
                  ou um valor para alocar inicialmente mais é um pouco mais complicado.

                  entende esse 2 parâmetros basicos primeiro e elimina esse erro com a config que te falei de 500M pra cada um.

                  #96986
                  DBA_LUCAS
                  Participante

                    sim , mas se minha TARGET = 160 e MAX = 1G pq eu DIMINUINDO a MAX e AUMENTANDO a TARGET possa resolver ?

                    como vc disse é um valor que vai do min ao max , ou seja ,o oracle ira usar no caso de 160M ate 1G do jeito que precisar , pq se eu diminuir o valor de max possa resolver ?

                    #96988
                    CleitonHanzen
                    Participante

                      Cara,

                      Sugiro que vocë dë uma lida na documentação da Oracle sobre isso. Lá você vai encontrar a seguinte informação:

                      “SGA_TARGET specifies the total size of all SGA components. If SGA_TARGET is specified, then the following memory pools are automatically sized…… ”

                      Ou seja, não importa se o teu SGA_MAX_SIZE está com 1g ou 2g, se o teu SGA_TARGET está setado para 160m, a instance irá utilizar somente este 160m para “distribuir” entre os pools (shared pool, buffer cache, large e java).

                      Inclusive, um dos engenheiros da Oracle uma vez comentou que uma boa prática, é que o SGA_TARGET seja correspondente a 80% do SGA_MAX_SIZE. Caso ocorra alguma falha de alocação de memória, o próprio DBA pode “brincar” com o redimensionamento das áreas.

                      []s

                      #97024
                      vieri
                      Participante

                        Então, seguindo a linha lógica do problema,
                        coloque a SGA_TARGET para 500M e a SGA_MAX_SIZE para 700M,
                        e as chances do problema ser solucionado são grandes, não adianta vc questionar nossas alterações sem dominar a tecnologia , estamos te dando dicas baseado na documentação.
                        Vc precisa ler ela, se não vai ficar igual cego em tiroteio…
                        só na tentativa e erro sem embasamento.

                        verifique também se tem algum parametro fixando algum pool.

                        show parameters shared ;
                        show parameters large;
                        show parameters cache;

                        No seu caso é melhor deixar com 0 .

                        #97025
                        vieri
                        Participante

                          Para ficar mais claro..

                          O oracle só vai alocar a memória setada no SGA_TARGET,
                          o parametro SGA_MAX_SIZE, existe para que vc possa extender
                          o valor da SGA_TARGET “on the fly” com a base no ar, até o teto
                          setado pelo sga_max_size, mas isso manualmente via alter system.
                          Quem define a qtd de memoria alocada é o sga_target,
                          ele não está nem ai para o sga_max_size, somente quando vc tenta aumentar a sga_target on-line. vc irá esbarra no valor do sga_max_size.

                          Imagine um velocimetro do seu carro que vai até 200KM
                          e vc está andando a 60KM.

                          200Km é seu sga_max_size, aonde vc pode chegar se vc pisar no acelerador, sga_target é sua velocidade atual que vc pode ir de
                          1Km até 200Km.

                          O SGA_max_size é o seu velocimentro diz até aonde você pode chegar de alocação de memoria sem restartar a instancia, lembrnado que manualmente sosinho ele só vai chegar até o SGA_TARGET.

                          Acho que agora ficou molinho de entender… 😆

                          #97029
                          DBA_LUCAS
                          Participante

                            Intendi sim , hehehehehe …
                            Estou aperfeiçoando meus conhecimentos para no semestre que vem fazer um curso de oracle para tentar me certificar !!!
                            Vlw dmais galera pela força !!!

                            #97067
                            David Siqueira
                            Participante

                              Boa Lucas,

                              Uma dica é você usar gerenciamento manual até pegar o jeito com o gerenciamento automatico, pois o comportamento da SGA muda muito, e pra quem já tem mais experiencia em lidar com isso fica muito mais fácil.

                              Eu mesmo apanhei bastante com essa novidade quando usei a algum tempo atrás, pois estava acostumado a usar gerenciamento manual.

                              Vieri, mandou bem como sempre.

                              Abraço

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