Pular para o conteúdo
Visualizando 15 posts - 1 até 15 (de 28 do total)
  • Autor
    Posts
  • #98733
    leandrolbs
    Participante

      Pessoal, estou em um banco em media de 100GB, de 10 dias pra cá, o Oracle tá lento… mais lento.. que pra listar as tabelas do banco é quase 1 minuto…

      estou com serios problemas de lock pq as tabelas demora responder… em outras bases de tamanhos semelhantes isto não ocorre.

      Como aumento a memoria SGA do Oracle? como posso melhor o desempenho dele… Statisticas ???

      https://www.profissionaloracle.com.br/mo … pic&t=5091

      Por favor me de uma luz. Obrigado.

      #98734
      felipeg
      Participante

        Leandro, bom dia!

        Pelo que entendi esta base de 100Gb é apenas um schema do banco certo?

        Os outros estão funcionando normalmente?

        Para este tipo de situação eu aconselho 3 atividades básicas (mas que no seu caso podem demorar)

        • Coleta de estatísticas com o comando:
          execute dbms_stats.gather_schema_stats(ownname => , cascade => TRUE) ;
        • Rebuild de índices com o comando:
          select ‘alter index ‘||index_name||’ rebuild tablespace ;’ from dba_indexes where status = ‘UNUSABLE’ and owner = upper() order by owner,index_name;

        E por último reorganizar as tabelas:
        select ‘alter table ‘||table_name||’ move tablespace ;’ from dba_tables where owner = upper() order by table_name ;

        Recomendo fazer “fora do horário” pois como comentei acima irá demorar.

        Sobre a SGA, se o problema for relacionado a um dos pontos acima a SGA não irá ter o impacto desejado.

        Qualquer coisa é só postar.

        Atenciosamente,
        Felipe Romeu Gregolewitsch

        #98735
        leandrolbs
        Participante

          Meu SGE pelo EM está conforme o print..

          estava pensando em executar os comandos:

          ALTER SYSTEM SET sga_max_size = 1258291200 SCOPE=SPFILE;
          ALTER SYSTEM SET sga_target = 838860800 SCOPE=SPFILE;

          Quando a objetos fora da tablespace não existe, rebuild nos index ja executei..

          Quanto as statisticas quanto mais pesquiso, mais comando diferente encontro.

          Este seu, é recomendado?

          Conforme link no topico, executei aqueles comandos, e devo executar este após o aumento do SGA.


          exec dbms_stats.gather_schema_stats( -
          ownname => 'OWNER', -
          estimate_percent => dbms_stats.auto_sample_size, -
          method_opt => 'FOR ALL COLUMNS', -
          degree => 4);

          Sugestoes?? Terei problemas??

          Servidor é 2003 4gb XEON 4 nucleos .. e ele tá tranquilo..

          Oracle 10.2.0.3.0G Stand.

          #98736
          felipeg
          Participante

            Não existe um comando “recomendado” para coleta de estatísticas.

            Existem comandos para a coleta das mais variadas formas (por database inteira, por schema, por objeto) e cada uma delas faz exatamente a mesma coisa só que em abrangências diferentes dentro do seu banco de dados.

            Como eu perguntei no primeiro post, esta base de 100Gb é apenas de um schema? se for recomendo rodar apenas o comando de gather_stats que eu passei ( ele irá coletar as estatisticas de todos os objetos pertinenetes neste schema)

            Recomendo também gerar um trace de uma sessão e verificar qual o tipo de instrução que apresenta lentidão, este tipo de atividade facilita na hora de atacar um problema pois, se for analisar todos os parâmetros de banco, levará uma eternidade.

            Estou com um problema para visualizar imagens, segue um script bem útil para anlisar a sua SGA

            DECLARE
            libcac number(10,2);
            rowcac number(10,2);
            bufcac number(10,2);
            redlog number(10,2);
            spsize number;
            blkbuf number;
            logbuf number;
            total number;
            BEGIN
            select value into redlog from v$sysstat
            where name = ‘redo log space requests’;
            select 100(sum(pins)-sum(reloads))/sum(pins) into libcac from v$librarycache;
            select 100
            (sum(gets)-sum(getmisses))/sum(gets) into rowcac from v$rowcache;
            select 100*(cur.value + con.value – phys.value)/(cur.value + con.value) into bufcac
            from v$sysstat cur,v$sysstat con,v$sysstat phys,v$statname ncu,v$statname nco,v$statname nph
            where cur.statistic# = ncu.statistic#
            and ncu.name = ‘db block gets’
            and con.statistic# = nco.statistic#
            and nco.name = ‘consistent gets’
            and phys.statistic# = nph.statistic#
            and nph.name = ‘physical reads’;
            select value into spsize from v$parameter where name = ‘shared_pool_size’;
            select value into blkbuf from v$parameter where name = ‘db_block_buffers’;
            select value into logbuf from v$parameter where name = ‘log_buffer’;
            total := libcac + rowcac + bufcac + redlog;
            dbms_output.put_line(‘> SGA CACHE STATISTICS’);
            dbms_output.put_line(‘> ********************’);
            dbms_output.put_line(‘> SQL Cache Hit rate = ‘||libcac);
            dbms_output.put_line(‘> Dict Cache Hit rate = ‘||rowcac);
            dbms_output.put_line(‘> Buffer Cache Hit rate = ‘||bufcac);
            dbms_output.put_line(‘> Redo Log space requests = ‘||redlog);
            dbms_output.put_line(‘> Total SGA = ‘||total);
            dbms_output.put_line(‘> ‘);
            dbms_output.put_line(‘> INIT.ORA SETTING’);
            dbms_output.put_line(‘> ****************’);
            dbms_output.put_line(‘> Shared Pool Size = ‘||spsize||’ Bytes’);
            dbms_output.put_line(‘> DB Block Buffer = ‘||blkbuf||’ Blocks’);
            dbms_output.put_line(‘> Log Buffer = ‘||logbuf||’ Bytes’);
            dbms_output.put_line(‘> ‘);
            if
            libcac < 99 then dbms_output.put_line('*** HINT: Library Cache too low! Increase the Shared Pool Size.');
            END IF;
            if
            rowcac < 85 then dbms_output.put_line('*** HINT: Row Cache too low! Increase the Shared Pool Size.');
            END IF;
            if
            bufcac 100 then dbms_output.put_line(‘*** HINT: Log Buffer value is rather low!’);
            END IF;
            END;

            Atenciosamente,
            Felipe Romeu Gregolewitsch.

            #98738
            leandrolbs
            Participante

              result:

              SGA CACHE STATISTICS


              SQL Cache Hit rate = 98,52
              Dict Cache Hit rate = 99,77
              Buffer Cache Hit rate = 98,56
              Redo Log space requests = 69618
              Total SGA = 69914,85

              INIT.ORA SETTING


              Shared Pool Size = 0 Bytes
              DB Block Buffer = 0 Blocks
              Log Buffer = 2895360 Bytes

              *** HINT: Library Cache too low! Increase the Shared Pool Size.
              *** HINT: Log Buffer value is rather low!

              #98739
              leandrolbs
              Participante

                respondendo.. só tenho um schema. Apenas um owner com todo o sistema dentro dele.. e com 6 datafiles de 15gb.

                #98740
                felipeg
                Participante

                  Aumente o seu log_buffer usando o comando alter system set

                  Me envie os resultados abaixo:
                  select group#, round(bytes/1024/1024,2) from v$log;
                  /
                  Show parameter sga
                  /
                  select * from v$resource_limit
                  /

                  De qualquer forma colete as estatísticas desta base.

                  Atenciosamente,
                  Felipe Romeu Gregolewitsch.

                  #98741
                  leandrolbs
                  Participante

                    felipeg muitíssimo obrigado pela atenção.



                    GROUP# ROUND(BYTES/1024/1024,2)
                    1 50
                    3 50
                    2 50


                    SQL> Show parameter sga

                    NAME TYPE VALUE


                    lock_sga boolean FALSE
                    pre_page_sga boolean FALSE
                    sga_max_size big integer 584M
                    sga_target big integer 584M

                    SQL>


                    RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION LIMIT_VALUE
                    1 processes 34 38 300 300
                    2 sessions 37 42 335 335
                    3 enqueue_locks 19 41 4170 4170
                    4 enqueue_resources 19 19 1692 UNLIMITED
                    5 ges_procs 0 0 0 0
                    6 ges_ress 0 0 0 UNLIMITED
                    7 ges_locks 0 0 0 UNLIMITED
                    8 ges_cache_ress 0 0 0 UNLIMITED
                    9 ges_reg_msgs 0 0 0 UNLIMITED
                    10 ges_big_msgs 0 0 0 UNLIMITED
                    11 ges_rsv_msgs 0 0 0 0
                    12 gcs_resources 0 0 0 0
                    13 gcs_shadows 0 0 0 0
                    14 dml_locks 0 37 1472 UNLIMITED
                    15 temporary_table_locks 0 0 UNLIMITED UNLIMITED
                    16 transactions 1 10 368 UNLIMITED
                    17 branches 0 0 368 UNLIMITED
                    18 cmtcallbk 0 1 368 UNLIMITED
                    19 sort_segment_locks 0 1 UNLIMITED UNLIMITED
                    20 max_rollback_segments 17 17 368 65535
                    21 max_shared_servers 1 1 UNLIMITED UNLIMITED
                    22 parallel_max_servers 0 0 0 3600

                    Print do 3º select.

                    #98742
                    felipeg
                    Participante

                      Você tem dois problemas sérios nessa instância

                      Pelo tamanho das bases que citou deve ser um banco com um volume de transções relativamente alto certo?

                      Com estas informações chegamos a duas conclusões

                      1 – Seu SGA é muito baixo aumente os valores utilizando o comando alter system set sga_max_size = M scope=spfile;
                      **Altere os valores da sga_max_size e sga_target
                      *** Antes de fazer qualquer alteração faça um backup do seu spfile com o comando create pfile=’diretórioinitINSTANCIA.ora’ from spfile;

                      2 – Um outro gargalo muito importante é o seu redo log, aparentemente apenas 3 grupos não suportam o seu trabalho, este tipo de situação gera muita contenção para o tráfego dos dados (Log Buffer, Redo Log, Database Buffer), aumente o número de grupos e (forte recomendação) multiplexe os membros dos redo logs.
                      ** O aumento de grupos diminui a frequencia de logswitches e checkpoints que o Oracle terá de dar pois o mesmo terá um espaço mais de redo para trabalhar.
                      ** A multiplexação não é para performance e sim para segurança.

                      Segue a documentação da Oracle para auxiliar no passo 2:
                      http://download.oracle.com/docs/cd/B193 … neredo.htm

                      Esta é sua base de produção? Estes parâmetros estão muito subdimensionados, creio eu que a instância foi simplesmente criada na base no NEXT, NEXT, FINISH e isso é muito perigoso.

                      Atenciosamente,
                      Felipe Romeu Gregolewitsch.

                      #98743
                      leandrolbs
                      Participante

                        felipe, no horário de almoço tirei todos do sistema, reiniciei o banco, rodei as statiscs, aumentei o SGA e o log_buffer.


                        Connected to Oracle Database 10g Release 10.2.0.1.0
                        Connected as jr

                        SQL> show parameter SGA;

                        NAME TYPE VALUE


                        lock_sga boolean FALSE
                        pre_page_sga boolean FALSE
                        sga_max_size big integer 1200M
                        sga_target big integer 800M

                        SQL> show parameter log_buffer;

                        NAME TYPE VALUE


                        log_buffer integer 7025152

                        SQL>

                        Não trabalhamos com ASM, e pelas pesquisas acho que isso ajudaria, recomenda ?

                        No banco tenho em torno de 65 usuarios, porem meu sistema é inteiro em storage procedure, pacotes… toda estrutura está no banco, aplicação mesmo só layout….

                        mais uma vez muitissimo obrigado pela ajuda.

                        #98744
                        leandrolbs
                        Participante

                          felipe, respondendo a ultima sacada, não participei da instalação mais concerteza foi no next / next / next.

                          Sugere algo mais?

                          #98745
                          felipeg
                          Participante

                            Aumente também o seuSGA_TARGET, deixe que a instância trabalhe com o gerenciamento dessa memória.

                            No mais, por ora, as alterações que citei no último post devem ajudar.

                            Qualquer nova situação é só abrir um novo post e eu verifico, estou tentando ser mais ativo no fórum a partir de hoje.

                            Atenciosamente,
                            Felipe Romeu Gregolewitsch.

                            #98746
                            leandrolbs
                            Participante

                              Felipe, aumentei o SGA, e estou com mensagens de TNS.

                              Erro: ORA-12518


                              erro ORA-12518 : TNS:o listener não conseguiu distribuir conexão do cliente

                              Em pesquisa, achei comentario de que é necessário diminuir o SGA….

                              #98747
                              felipeg
                              Participante

                                O erro ocorreu após aumentar qual dos parâmetros?

                                #98748
                                leandrolbs
                                Participante

                                  eu executei todos, conforme falado acima…

                                  depois disso, quando o uso de memoria fisica foi crecendo de 400mb até 1,2gb a mensagem veio…
                                  ja reiniciei o banco e o listenner, coloquei large_pool_size para 24M, e diminui o process para 250

                                  aparentemente está normal.. mas ainda não chegou no apse dos acessos;..

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