Pular para o conteúdo
  • Este tópico contém 5 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 1 mês atrás por airoosp.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #92629
    airoosp
    Participante

      Boa tarde,

      Será que alguém pode ajudar, o cenário é o seguinte:

      1 – Servidor antigo com 512MB de RAM, executando banco Oracle 8.0.5 e o sistema operacional Windows NT.
      Feito dump gerando arquivo com 9GB.

      2 – Servidor novo com 2GB de RAM, executando banco Oracle 8.0.5 e o sistema operacional Windows 2003 Server.

      Feito o import do arquivo dump para este servidor.

      Após a importação, ao executar um count (servidor novo) para verificar a quantidade de registros de duas tabelas uma com 6 e outra com 8 milhões de registros, cada execução demorou 8 minutos e no servidor antigo não acontecia essa demora.
      Comparei os 2 arquivos INITORCL.ORA vi que alguns parâmetros estavam com valor baixo no servidor novo, fiz algumas alterações para ver se a performance melhora.
      Abaixo esta o conteúdo do arquivo, será necessário alterar mais algum parâmetro?

      # replace “oracle” with your database name
      db_name=ORCL

      db_files = 1024 # INITIAL
      # db_files = 80 # SMALL
      # db_files = 400 # MEDIUM
      # db_files = 1000 # LARGE

      control_files = d:orantDATABASEctl1ORCL.ora

      db_file_multiblock_read_count = 32 # INITIAL
      # db_file_multiblock_read_count = 8 # SMALL
      # db_file_multiblock_read_count = 16 # MEDIUM
      # db_file_multiblock_read_count = 32 # LARGE

      db_block_buffers = 30000 # INITIAL
      # db_block_buffers = 100 # SMALL
      # db_block_buffers = 550 # MEDIUM
      # db_block_buffers = 3200 # LARGE

      shared_pool_size = 102400000 # INITIAL
      # shared_pool_size = 3500000 # SMALL
      # shared_pool_size = 5000000 # MEDIUM
      # shared_pool_size = 9000000 # LARGE

      log_checkpoint_interval = 10000

      processes = 100 # INITIAL
      # processes = 50 # SMALL
      # processes = 100 # MEDIUM
      # processes = 200 # LARGE

      parallel_max_servers = 5 # SMALL
      # parallel_max_servers = 4 x (number of CPUs) # MEDIUM
      # parallel_max_servers = 4 x (number of CPUs) # LARGE

      log_buffer = 32768 # INITIAL
      # log_buffer = 8192 # SMALL
      # log_buffer = 32768 # MEDIUM
      # log_buffer = 163840 # LARGE

      sequence_cache_entries = 100 # INITIAL
      # sequence_cache_entries = 10 # SMALL
      # sequence_cache_entries = 30 # MEDIUM
      # sequence_cache_entries = 100 # LARGE

      sequence_cache_hash_buckets = 89 # INITIAL
      # sequence_cache_hash_buckets = 10 # SMALL
      # sequence_cache_hash_buckets = 23 # MEDIUM
      # sequence_cache_hash_buckets = 89 # LARGE

      # audit_trail = true # if you want auditing
      # timed_statistics = true # if you want timed statistics
      max_dump_file_size = 10240 # limit trace file size to 5 Meg each

      # Uncommenting the line below will cause automatic archiving if archiving has
      # been enabled using ALTER DATABASE ARCHIVELOG.
      # log_archive_start = true
      # log_archive_dest = %ORACLE_HOME%databasearchive
      # log_archive_format = “%ORACLE_SID%%S.%T”

      # If using private rollback segments, place lines of the following
      # form in each of your instance-specific init.ora files:
      # rollback_segments = (name1, name2)

      rollback_segments=(RB1,RB2,RB3,RB4,RB5,RB6,RB7,RB8,RB9,RB10,RB11,RB12,RB13,RB14,RB15,RB16)

      # If using public rollback segments, define how many
      # rollback segments each instance will pick up, using the formula
      # # of rollback segments = transactions / transactions_per_rollback_segment
      # In this example each instance will grab 40/10 = 4:
      # transactions = 40
      # transactions_per_rollback_segment = 10

      # Global Naming — enforce that a dblink has same name as the db it connects to
      global_names = FALSE

      # Edit and uncomment the following line to provide the suffix that will be
      # appended to the db_name parameter (separated with a dot) and stored as the
      # global database name when a database is created. If your site uses
      # Internet Domain names for e-mail, then the part of your e-mail address after
      # the ‘@’ is a good candidate for this parameter value.

      # db_domain = us.acme.com # global database name is db_name.db_domain

      # Uncomment the following line if you wish to enable the Oracle Trace product
      # to trace server activity. This enables scheduling of server collections
      # from the Oracle Enterprise Manager Console.
      # Also, if the oracle_trace_collection_name parameter is non-null,
      # every session will write to the named collection, as well as enabling you
      # to schedule future collections from the console.

      # oracle_trace_enable = TRUE

      # define directories to store trace and alert files
      background_dump_dest=%RDBMS80%trace
      user_dump_dest=%RDBMS80%trace

      db_block_size = 2048

      remote_login_passwordfile = shared

      text_enable = TRUE

      sort_area_size=8192000
      sort_area_retained_size=81920

      # The following parameters are needed for the Advanced Replication Option

      job_queue_processes = 2
      job_queue_interval = 10
      job_queue_keep_connections = false

      distributed_lock_timeout = 300
      distributed_transactions = 25

      open_links = 128
      open_cursors = 512

      Obrigado.

      Airton

      #92631
      Anônimo

        O melhor é instalar em Red Hat.

        #92632
        Ishii
        Participante

          Olá,

          Tirei a poeira do meu Livro Oracle Tuning 8.0 (que comprei na Amazon para entregar via navio!! uau #coisavelha) e dando uma olhada nele e nas configurações sugiro:

          1) Aumentar o shared_pool_size para pelo menos 1Gb (pois está com 100Mb);
          2) Desabilitar os serviços desnecessários do Windows Server 2003;
          3) Passe as configurações do Servidor (discos – qtd e tamanho, proc, etc);
          4) Tablespaces (rollback e temp) com um tamanho razoável e ainda crie um segmento de rollback (deixando offline) com o maior tamanho possível pois será útil nos casos de DML

          De resto, sugiro usar uma versão acima (8.1.7) pois acho que funciona melhor com Win2003 Server…

          []s Ishii

          #92633
          Leonardo Faria Ferreira
          Participante

            Olá,

            tente além de aumentar shared_pool também aumentar db_block_buffers.

            att.

            #92642
            Rodrigofs
            Participante

              Olá Airton, o banco apresenta essa lentidão somente quando você consulta essas tabelas ?
              No seu COUNT você especifica um índice ?
              Sugiro verificar o status dos índices das tabelas, por exemplo:

              SELECT owner, table_name, index_name, status
              FROM dba_indexes
              where table_name=’BIGTABLE’

              Abraço.

              #92646
              airoosp
              Participante

                Boa tarde,

                Verifiquei e os índices das tabelas estam válidos, após alterar a shared_pool_size para 1GB e executar o count(*) em uma tabela o tempo de resposta foi de 2 minutos 48 segundos retornando um total 8420200 registros.
                Em uma outra tabela executando o count em um campo que tem índice o tempo de resposta foi de 3 minutos e 56 segundos retornando 6597743 registros.
                O valor do parâmetro DB_BLOCK_BUFFERS é 30000.

                O servidor tem 2GB de RAM e espaço disponível na unidade D 4GB.

                Obrigado.

                Airton

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