Tutorial Parte 2b - Configurando uma instancia - continuação

Versão para impressãoEnviar para amigoVersão PDF

Esta é Parte 2b , continuação da Parte 2 do tutorial , agora iremos ver como personalizar um pouco a configuração do Informix, alocando espaços (chunks) , definindo areas especificas para os logical logs, physical logs e areas temporárias.
Ao final desta parte escrevi uma breve explicação do porque destas alterações.

  1. Colocando a instancia em online
  2. Alocando os espaços em disco necessário
  3. Configurando Logical Log
  4. Configurando o Physical Log
  5. Ativando a utilização do dbspace temporário
  6. Configurando a memória utilizada
  7. Mas por que alterar estas configurações?

Colocando a instancia em online


Considerando que você já realizou todos os procedimentos da parte 1 e 2 do tutorial, neste momento você já tem a Instancia do Informix online.
Caso não esteja online por algum motivo , basta definir as variáveis de ambiente e inicia-lo com comando oninit (*sem* o parâmetro -i!):
    $ export INFORMIXDIR=/dados/IBM/ids1150uc4de/
    $ export INFORMIXSERVER=idstitan
    $ export INFORMIXSQLHOSTS=$INFORMIXDIR/etc/sqlhosts.$INFORMIXSERVER
    $ export ONCONFIG=onconfig.$INFORMIXSERVER
    $ export PATH=$PATH:$INFORMIXDIR/bin      
    $ oninit -v
    Checking group membership to determine server run mode...succeeded
    Reading configuration file '/dados/IBM/ids1150uc4de//etc/onconfig.idstitan'...succeeded
    Creating /INFORMIXTMP/.infxdirs...succeeded                                            
    Creating infos file "/dados/IBM/ids1150uc4de//etc/.infos.idstitan"...succeeded         
    Linking conf file "/dados/IBM/ids1150uc4de//etc/.conf.idstitan"...succeeded            
    Checking config parameters...succeeded                                                 
    Writing to infos file...succeeded                                                      
    Allocating and attaching to shared memory...succeeded                                  
    Creating resident pool 10572 kbytes...succeeded                                        
    Allocating 100016 kbytes for buffer pool of 2K page size...succeeded                   
    Initializing rhead structure...succeeded                                               
    Initialization of Encryption...succeeded
    Initializing ASF...succeeded
    Initializing Dictionary Cache and SPL Routine Cache...succeeded
    Bringing up ADM VP...succeeded
    Creating VP classes...succeeded
    Onlining 0 additional cpu vps...succeeded
    Onlining 2 IO vps...succeeded
    Forking main_loop thread...succeeded
    Initializing DR structures...succeeded
    Forking 1 'soctcp' listener threads...succeeded
    Starting tracing...succeeded
    Initializing 8 flushers...succeeded
    Initializing SDS Server network connections...succeeded
    Initializing log/checkpoint information...succeeded
    Initializing dbspaces...succeeded
    Opening primary chunks...succeeded
    Opening mirror chunks...succeeded
    Validating chunks...succeeded
    Initialize Async Log Flusher...succeeded
    Starting B-tree Scanner...succeeded
    Initializing DBSPACETEMP list...succeeded
    Checking database partition index...succeeded
    Initializing dataskip structure...succeeded
    Checking for temporary tables to drop...succeeded
    Forking onmode_mon thread...succeeded
    Creating periodic thread...succeeded
    Starting scheduling system...succeeded
    Verbose output complete: mode = 5
    
    $ onstat -
    
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:00:21 -- 144144 Kbytes
    

Alocando os espaços em disco necessário


Com a instancia online, já podemos começar com o nosso trabalho de alocar os espaços.
Na parte anterior do tutorial já deixamos os arquivos criados:
    $ ls -oh /ifmxdados/*ch*
    -rw-rw---- 1 informix    0 2009-06-10 14:44 /ifmxdados/dados1.ch1
    -rw-rw---- 1 informix    0 2009-06-10 14:44 /ifmxdados/llog.ch1
    -rw-rw---- 1 informix    0 2009-06-10 14:44 /ifmxdados/plog.ch1
    -rw-rw---- 1 informix 196M 2009-06-12 14:25 /ifmxdados/rootdbs.ch1
    -rw-rw---- 1 informix    0 2009-06-10 14:44 /ifmxdados/temp1.ch1
    

No meu disco ainda tenho pelo menos 450MB livres para utilizar e 1 GB de memória RAM, então pensando que esta instancia será um ambiente de teste e não irá sofrer uma carga pesada de transações irei distribuir os espaços da segunte maneira:

  • llog = 80 MB
  • plog = 150 MB
  • temp1 = 70 MB
  • dados1 = 150 MB

Para realizar esta alocação iremos utilizar o comando onspaces , este comando é especifico para tratamento de alocação/desalocação de espaços , ativação de mirror, renomear dbspaces , etc.

Para maiores detalhes sobre o onspaces veja o Information Center.

Os parametros do onspaces que iremos utilizar :

  • -c -d [nome_dbspace] Indicam que um novo DbSpace será criado
  • -p [chunk] Define o path para o chunk
  • -t Define o dbspace como tipo "temporário". Repare que este parâmetro é utiliado em apenas um dos comandos.
  • -s [tamanho_em_kbytes] Define o tamanho do chunk que está sendo alocado , sempre em KBytes
  • -o [tamanho_em_kbytes] Define o espaço de offset , sempre em KBytes.
    $ onspaces -c -d llog -p /ifmxdados/llog.ch1 -s 80000 -o 0
    Verifying physical disk space, please wait ...
    Space successfully added.
    
    ** WARNING **  A level 0 archive of Root DBSpace will need to be done.
    
    $ onspaces -c -d plog -p /ifmxdados/plog.ch1 -s 150000 -o 0
    Verifying physical disk space, please wait ...
    Space successfully added.
    
    ** WARNING **  A level 0 archive of Root DBSpace will need to be done.
    
    $ onspaces -c -d temp1 -t -p /ifmxdados/temp1.ch1 -s 70000 -o 0
    Verifying physical disk space, please wait ...
    Space successfully added.
    
    $ onspaces -c -d dados1 -p /ifmxdados/dados1.ch1 -s 150000 -o 0
    Verifying physical disk space, please wait ...
    Space successfully added.
    
    $ ls -oh /ifmxdados/*ch*
    -rw-rw---- 1 informix 147M 2009-06-12 15:50 /ifmxdados/dados1.ch1
    -rw-rw---- 1 informix  79M 2009-06-12 15:46 /ifmxdados/llog.ch1
    -rw-rw---- 1 informix 147M 2009-06-12 15:48 /ifmxdados/plog.ch1
    -rw-rw---- 1 informix 196M 2009-06-12 15:50 /ifmxdados/rootdbs.ch1
    -rw-rw---- 1 informix  69M 2009-06-12 15:50 /ifmxdados/temp1.ch1
    
Por enquanto pode ignorar esta mensagem de WARNING.

Para verificar no Informix quais os chunks e dbspaces existentes , utilize o comando onstat -d
O comando onstat é um dos principais do Informix onde com ele é possível capturar quase que todas as informações de execução do banco. Para um refêrencia sobre ele, veja este artigo.

    $ onstat -d
    
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 01:43:24 -- 144144 Kbytes
    
    Dbspaces
    address  number   flags      fchunk   nchunks  pgsize   flags    owner    name
    4ae4d808 1        0x60001    1        1        2048     N  B     informix rootdbs
    4bcde970 2        0x60001    2        1        2048     N  B     informix llog
    4ba11cd8 3        0x60001    3        1        2048     N  B     informix plog
    4bccbb98 4        0x42001    4        1        2048     N TB     informix temp1
    4bcfb590 5        0x60001    5        1        2048     N  B     informix dados1
     5 active, 2047 maximum
    
    Chunks
    address  chunk/dbs     offset     size       free       bpages     flags pathname
    4ae4d968 1      1      0          100000     39155                 PO-B- /ifmxdados/rootdbs.ch1
    4bcdead0 2      2      0          40000      39947                 PO-B- /ifmxdados/llog.ch1
    4ba11e38 3      3      0          75000      74947                 PO-B- /ifmxdados/plog.ch1
    4bccbcf8 4      4      0          35000      34947                 PO-B- /ifmxdados/temp1.ch1
    4bcfb6f0 5      5      0          75000      74947                 PO-B- /ifmxdados/dados1.ch1
     5 active, 32766 maximum
    
    NOTE: The values in the "size" and "free" columns for DBspace chunks are
          displayed in terms of "pgsize" of the DBspace to which they belong.
    
    Expanded chunk capacity mode: always
    

Configurando Logical Log


O espaço para o Logical Log foi alocado com o onspaces na etapa anterior, porém ainda não está sendo utilizado. Todo o logical log é criado por padrão no rootdbs, porém isso não é recomendável.
Para visualizar a situação dos logical logs, utilize o comando onstat -l
    $ onstat -l
    
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 01:46:28 -- 144144 Kbytes
    
    Physical Logging
    Buffer bufused  bufsize  numpages   numwrits   pages/io
      P-1  17       64       1          0          0.00
          phybegin         physize    phypos     phyused    %used
          1:263            25000      1410       17         0.07
    
    Logical Logging
    Buffer bufused  bufsize  numrecs    numpages   numwrits   recs/pages pages/io
      L-2  0        32       3          2          2          1.5        1.0
            Subsystem    numrecs    Log Space used
            OLDRSAM      2          84
            HA           1          44
    
    address  number   flags    uniqid   begin                size     used    %used
    4ae4dcc8 1        U-B----  1        1:25263              5000     5000   100.00
    4ae4dd10 2        U---C-L  2        1:30263              5000     3740    74.80
    4ae4dd58 3        A------  0        1:35263              5000        0     0.00
    4ae4dda0 4        A------  0        1:40263              5000        0     0.00
    4ae4dde8 5        A------  0        1:45263              5000        0     0.00
    4ae4de30 6        A------  0        1:50263              5000        0     0.00
     6 active, 6 total
    
O output deste comando é dividio em três partes, a primeira descreve a situação do Physical Log, a segunda descreve o Logical Log e a terceira descreve cada Logical Log.
Na terceira parte, observe as colunas number, flags, uniqid, begin e size . Estas colunas são as colunas que utilizamos para identificar o numero do logical log, seu status, numero sequencial de utilização, endereço fisico de onde está alocado e seu tamanho.
O endereço fisico é dividio em dois, onde o primeiro valor é o numero do dbspace , que no caso é o número 1 (dbspace rootdbs), pelo menos por enquanto, já que iremos troca-los para o dbspaces llog.
O tamanho (coluna size) é sempre demonstrada em paginas (tamanho default de pagina do sistema operacional), portanto 5000 = 10000 KBytes.
Já os flags do Logical Log , por enquanto precisamos nos preocupar apenas com os que possuiem C e/ou L que representam o logical log em uso (C) e o ultimo checkpoint realizado (L).

O que precisamos fazer agora é remanjar estes 6 logical logs existentes para o dbspace llog, porém o Informix não permite mover Logical Log, então teremos de exclui-los e recria-los no lugar correto.
Mais uma observação, não tem como a Instancia trabalhar sem Logical log, então o minimo que deve existir é 3 , para assim permitir a rotatividade entre eles.

O procedimento que iremos realizar será o seguinte:

  • Adicionar 3 logical logs de 10 MB cada no dbspace llog
  • Colocar um destes três logical log como o atual (flag C)
  • Forçar um checkpoint (e assim acertar o flag L)
  • Remover os 6 logical logs antigos
  • Adicionar mais 4 novos logical logs de 10 MB no dbspace llog, totalizando 70 MB .
Para realizar este procedimento iremos utilizar três comandos: onparams , onmode, onstat
  • onparams Este comando tem por finalidade realizar manutenção no Logical Log , Physical Log e buffer pools.
  • onmode Realiza grande parte das alterações de configuração do banco com ele online, sendo algumas destas alterações que normalmente são conhecidas como "on-fly" .
  • onstat Comando já apresentado, utilizado para capturar informações da Instancia.
Abaixo segue demonstraçõa de todo procedimento com os comentários explicado cada comando e observações.
    # Com o comando onparams adicionamos três novos Logical Logs
    # Os parâmetros do comando utilizados são: 
    #  -a para adicionar logical log
    #  -d [dbspace] para definir qual dbspace será salvo o logical log
    #  -s [tamanho_em_kbytes] Tamanho do logical log em KBytes.
    $ onparams -a -d llog -s 10000
    Log operation started. To monitor progress, use the onstat -l command.
    Logical log successfully added.
    $ onparams -a -d llog -s 10000
    Log operation started. To monitor progress, use the onstat -l command.
    Logical log successfully added.
    $ onparams -a -d llog -s 10000
    Log operation started. To monitor progress, use the onstat -l command.
    Logical log successfully added.
    
    # Com o comando onmode -l forçamos a troca do logical log em uso para 
    # o próximo disponível, onde realizamos este comando cinco vezes para que assim
    # o log em uso seja um alocado no dbspace llog.
    $ onmode -l 
    $ onmode -l 
    $ onmode -l 
    $ onmode -l   
    $ onmode -l   
    
    # A aqui é possivel visualizar que o logical log atual é o 8 , com flag "C"
    # Repare também que os novos logical logs (7,8 e 9) possuem o endereço começando 
    # com 2, que representa o dbspace llog
    $ onstat -l   
    
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:02:01 -- 144144 Kbytes
    
    Physical Logging
    Buffer bufused  bufsize  numpages   numwrits   pages/io
      P-2  11       64       241        9          26.78   
          phybegin         physize    phypos     phyused    %used   
          1:263            25000      1668       11         0.04    
    
    Logical Logging
    Buffer bufused  bufsize  numrecs    numpages   numwrits   recs/pages pages/io
      L-2  0        32       13727      1294       957        10.6       1.4     
            Subsystem    numrecs    Log Space used                               
            OLDRSAM      13722      1323408                                      
            HA           5          220                                          
    
    address  number   flags    uniqid   begin                size     used    %used
    4ae4dcc8 1        U-B----  1        1:25263              5000     5000   100.00
    4ae4dd10 2        U-B----  2        1:30263              5000     5000   100.00
    4ae4dd58 3        U-B---L  3        1:35263              5000       21     0.42
    4ae4dda0 4        U-B----  4        1:40263              5000        4     0.08
    4ae4dde8 5        U-B----  5        1:45263              5000        4     0.08
    4ae4de30 6        U-B----  6        1:50263              5000        4     0.08
    4bed8730 7        U-B----  7        2:53                 5000        4     0.08
    4bf646a0 8        U---C--  8        2:5053               5000        3     0.06
    4bf64ba8 9        A------  0        2:10053              5000        0     0.00
     9 active, 9 total                                                             
    
    # Forçamos um checkpoint (flush dos dados em disco) com o comando onmode -c
    $ onmode -c
    $ onstat -l
    
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:02:08 -- 144144 Kbytes
    
    Physical Logging
    Buffer bufused  bufsize  numpages   numwrits   pages/io
      P-1  0        64       242        9          26.89
          phybegin         physize    phypos     phyused    %used
          1:263            25000      1679       0          0.00
    
    Logical Logging
    Buffer bufused  bufsize  numrecs    numpages   numwrits   recs/pages pages/io
      L-1  0        32       13744      1298       961        10.6       1.4
            Subsystem    numrecs    Log Space used
            OLDRSAM      13739      1324976
            HA           5          220
    
    address  number   flags    uniqid   begin                size     used    %used
    4ae4dcc8 1        U-B----  1        1:25263              5000     5000   100.00
    4ae4dd10 2        U-B----  2        1:30263              5000     5000   100.00
    4ae4dd58 3        U-B----  3        1:35263              5000       21     0.42
    4ae4dda0 4        U-B----  4        1:40263              5000        4     0.08
    4ae4dde8 5        U-B----  5        1:45263              5000        4     0.08
    4ae4de30 6        U-B----  6        1:50263              5000        4     0.08
    4bed8730 7        U-B----  7        2:53                 5000        4     0.08
    4bf646a0 8        U---C-L  8        2:5053               5000        5     0.10
    4bf64ba8 9        A------  0        2:10053              5000        0     0.00
     9 active, 9 total
    
    # Agora excluimos os seis primeiros logical logs com o comando 
    # onparams onde os parâmetros utilizados foram:
    #   -d Exclusão de logical log
    #   -l [numero_log] Define qual log deverá ser excluido (coluna number)
    #   -y Para excluir o log em pedir confirmação
    $ onparams -d -l 1 -y
    Logical log 1 successfully dropped.
    $ onparams -d -l 2 -y
    Logical log 2 successfully dropped.
    $ onparams -d -l 3 -y
    Logical log 3 successfully dropped.
    $ onparams -d -l 4 -y
    Logical log 4 successfully dropped.
    $ onparams -d -l 5 -y
    Logical log 5 successfully dropped.
    $ onparams -d -l 6 -y
    Logical log 6 successfully dropped.
    
    # Após a exclusão finalizamos o procedimento incluido os novos logs faltantes.
    $ onparams -a -d llog -s 10000
    Log operation started. To monitor progress, use the onstat -l command.
    Logical log successfully added.
    $ onparams -a -d llog -s 10000
    Log operation started. To monitor progress, use the onstat -l command.
    Logical log successfully added.
    $ onparams -a -d llog -s 10000
    Log operation started. To monitor progress, use the onstat -l command.
    Logical log successfully added.
    $ onparams -a -d llog -s 10000
    Log operation started. To monitor progress, use the onstat -l command.
    Logical log successfully added.
    
    # Apenas para confirmar a situação final, verificar com o onstat -l
    # o status dos logs
    $ onstat -l
    
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:03:29 -- 144144 Kbytes
    
    Physical Logging
    Buffer bufused  bufsize  numpages   numwrits   pages/io
      P-1  0        64       252        20         12.60
          phybegin         physize    phypos     phyused    %used
          1:263            25000      1699       0          0.00
    
    Logical Logging
    Buffer bufused  bufsize  numrecs    numpages   numwrits   recs/pages pages/io
      L-1  0        32       13817      1330       993        10.4       1.3
            Subsystem    numrecs    Log Space used
            OLDRSAM      13801      1329540
            HA           16         704
    
    address  number   flags    uniqid   begin                size     used    %used
    4bed8730 7        U-B----  7        2:53                 5000        4     0.08
    4bf646a0 8        U---C-L  8        2:5053               5000       35     0.70
    4bf64ba8 9        A------  0        2:10053              5000        0     0.00
    4bcd4fd0 1        A------  0        2:15053              5000        0     0.00
    4bcdff18 2        A------  0        2:20053              5000        0     0.00
    4bf64410 3        A------  0        2:25053              5000        0     0.00
    4bf64458 4        A------  0        2:30053              5000        0     0.00
     7 active, 7 total
    

Pronto, os logical logs já estão OK, temos 7 deles com 10 MBytes de tamanho cada um, totalizando 70 MBytes , o que para um pequeno ambiente de teste já "está de bom tamanho".

Configurando o Physical Log


Para a alteração do physical log o procedimento é mais simples e menos trabalhoso, basta apenas um comando.

Repare no ultimo onstat -l executado no procedimento anterior a parte que fala sobre o physical log, lá temos a coluna phybegin , que indica o endereço fisico de onde o physical log começa, como já deve ter repardo o endereço começa com 1 que é o rootdbs.

    # Para realizar a alteração iremos utilzar o comando 
    # onparams -p -s 140000 -d plog -y onde os parâmetros utilizados representam:
    # -p Alteração do physicial log
    # -s [tamanho_em_kbytes] Novo tamanho do Physical log em KBytes
    # -d [dbspace] Dbspace onde o novo physical log será alocado
    # -y Realiza o comando sem pedir confirmação
    $ onparams -p -s 140000 -d plog -y 
    Log operation started. To monitor progress, use the onstat -l command.
    ** WARNING ** Because the physical log has been modified, a level 0 archive 
    must be taken of the following spaces before an incremental archive will be 
    permitted for them: rootdbs plog                                            
    (see Dynamic Server Administrator's manual)  
    
    # Já podemos ver que o endereço na coluna phybegin foi alterada.
    $ onstat -l | head -n9
    
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:45:42 -- 144144 Kbytes
    
    Physical Logging
    Buffer bufused  bufsize  numpages   numwrits   pages/io
      P-1  4        64       283        24         11.79
          phybegin         physize    phypos     phyused    %used
          3:53             70000      0          4          0.01
    
    # O comando onstat -c exibe o arquivo de configuração $ONCONFIG atual.
    # repare que os 3 parâmetros abaixo foram alterados automaticamente para os 
    # valores que utilizamos nos comandos anteriores.
    # Aqui já fica uma observação, nunca altere estes parâmetros pelo onconfig,
    # se deseja modifica-los, utilize o onparams
    $ onstat -c |egrep "^PHYSFILE|^LOGFILE|^LOGSIZE"
    PHYSFILE        140000
    LOGFILES        7
    LOGSIZE 10000
    
    

Ativando a utilização do dbspace temporário

No inicio desta parte do tutorial criamos vários dbspaces e um deles foi com um parâmetro especial, o dbspace temp1, que é um dbspace para dados temporários.

Ë de extrema importância que este dbspace tenha sido criado de modo correto ou o efeito que desejamos não será realizado.
Para garantir que este dbspace desempenhe seu papel é preciso duas coisas, primeiro que ele tenha sido criado corretamente, para verificar isso , basta executar o comando onstat -d e verificar se ele possui o flag "T" de Temporário.

    $ onstat -d
    
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 01:00:06 -- 144144 Kbytes
    
    Dbspaces
    address  number   flags      fchunk   nchunks  pgsize   flags    owner    name
    4ae4d808 1        0x70001    1        1        2048     N  B     informix rootdbs
    4ae4deb0 2        0x60001    2        1        2048     N  B     informix llog
    4af1e230 3        0x70001    3        1        2048     N  B     informix plog
    4af1e390 4        0x42001    4        1        2048     N TB     informix temp1
    4af1e4f0 5        0x60001    5        1        2048     N  B     informix dados1
     5 active, 2047 maximum
    ...
    ..
    .
    

Caso não esteja com este flag, você terá de excluir o dbspace com o comando onspaces -d temp1 e recria-lo (veja parte do tutorial que demonstra a criação).

A segunda coisa que precisamos para que este dbspace funcione 100% é alterar alguns parâmetros no arquivo de configuração do Informix o $INFORMIXDIR/etc/$ONCONFIG, Edite este arquivo altere os parâmetros:

  • DBSPACETEMP temp1
    Para ativar o dbspace temp1 como um dos dbspaces temporários
  • TEMPTAB_NOLOG 1
    Este parâmetro não é excêncial, mas recomendo defini-lo, ele evita que as alterações de tabelas temporárias sejam logadas no logical log (o que não é necessário em 99.8% dos casos).
    $ onstat -c |egrep "^DBSPACETEMP|^TEMPTAB_NOLOG"
    DBSPACETEMP  temp1
    TEMPTAB_NOLOG 1
    

99% das alterações realizadas no arquivo $ONCONFIG não possuem efeito imediato. Para surtir efeito é necessário reiniciar a instancia:

    $ onmode -ky
    $ oninit
    
Observação: A partir da versão 11.10 alguns parâmetros podem ser alterados na memória sem a necessidade de reiniciar a instancia, mas não é o caso dos parâmetros que estamos trabalhando.

Pronto, todas as nossas alteracões foram realizadas e para confirmar algumas delas, podemos utilizar o comando onstat -d. Com ele podemos observar que os chunks llog.ch1 e plog.ch1 já possuem boa parte do seu espaço utilizado (veja a coluna free)

    $ onstat -d
    
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:01:44 -- 144144 Kbytes
    
    Dbspaces
    address  number   flags      fchunk   nchunks  pgsize   flags    owner    name
    4ae4d808 1        0x60001    1        1        2048     N  B     informix rootdbs
    4af1e230 2        0x60001    2        1        2048     N  B     informix llog
    4af1e390 3        0x60001    3        1        2048     N  B     informix plog
    4af1e4f0 4        0x42001    4        1        2048     N TB     informix temp1
    4af1e650 5        0x60001    5        1        2048     N  B     informix dados1
     5 active, 2047 maximum
    
    Chunks
    address  chunk/dbs     offset     size       free       bpages     flags pathname
    4ae4d968 1      1      0          100000     93973                 PO-B- /ifmxdados/rootdbs.ch1
    4af1e7b0 2      2      0          40000      4947                  PO-B- /ifmxdados/llog.ch1
    4af1e988 3      3      0          75000      4947                  PO-B- /ifmxdados/plog.ch1
    4af1eb60 4      4      0          35000      34947                 PO-B- /ifmxdados/temp1.ch1
    4af1ed38 5      5      0          75000      74947                 PO-B- /ifmxdados/dados1.ch1
     5 active, 32766 maximum
    
    NOTE: The values in the "size" and "free" columns for DBspace chunks are
          displayed in terms of "pgsize" of the DBspace to which they belong.
    
    Expanded chunk capacity mode: always
    

Para confirmar se o dbspace temporário está sendo utilizado corretamente será necessário forçar a criação de algum dado temporário e observar em outra sessão se o espaço livre nele diminui. Veja o exemplo abaixo de como testar, mas leia também este artigo para entender onde as tabelas temporárias são criadas:

    # Caso não tenha reiniciado a instancia para que o parâmetro DBSPACETEMP 
    # tenha efeito, reinicie agora.
    # Abra duas sessões de shell, em uma execute o comando onstat -d e observe
    # os valores na coluna free do chunk temp1.ch1 e dados1.ch1. 
    $ onstat -d |egrep "chunk.*free|dados1.ch1|temp1.ch1"
    address  chunk/dbs     offset     size       free       bpages     flags pathname
    4af1eb60 4      4      0          35000      34947                 PO-B- /ifmxdados/temp1.ch1
    4af1ed38 5      5      0          75000      73777                 PO-B- /ifmxdados/dados1.ch1
    
    # Em outra shell execute o dbaccess, 
    # conecte (menu query-language, new ) em qualquer banco de dados (pode 
    # ser o sysmaster) e execute o seguinte script:   
      create database teste in dados1 with buffered log;
      create temp table tab_teste(descricao char(30000)) with no log;
      insert into tab_teste values ("teste1");
      insert into tab_teste values ("teste2");
      insert into tab_teste values ("teste3");
      insert into tab_teste values ("teste4");
      insert into tab_teste values ("teste5");
      insert into tab_teste values ("teste6");
    
    # Após a primeira execução, edite o script, comente (com "--") 
    # ou exclua os dois create, deixando apenas os inserts e 
    # execute (menu Run) algumas vezes, umas 15 vezes pelo menos.
    
    # Volte para a outra shell e execute novamente o onstat, observer de qual chunk
    # o espaço livre diminuiu
    $ onstat -d |egrep "chunk.*free|dados1.ch1|temp1.ch1"
    address  chunk/dbs     offset     size       free       bpages     flags pathname
    4af1eb60 4      4      0          35000      32243                 PO-B- /ifmxdados/temp1.ch1
    4af1ed38 5      5      0          75000      73777                 PO-B- /ifmxdados/dados1.ch1
    
    # Se o parametro DBSPACETEMP e a criação do dbspace estiverem corretos, você verá
    # que o dbspace que teve seu espaço livre diminuiro é o temp1.
    

Configurando a memória utilizada


A configuração de memória é divida em duas partes, a resident portion e a virtual portion. Se você não sabe nada sobre elas ainda, leia o artigo sobre a arquitetura do Informix.

Para uma configuração básica da memória devemos alterar apenas dois parâmetros no arquivo de configuração $ONCONFIG.
  • SHMVIRTSIZE Tamanho da memória virtual inicial, neste parâmetro deve ser informado em KBytes, o padrão é 32 Mbytes.
  • BUFFERPOOL Este parâmetro é subdivido em várias informações e ele afeta o buffer de dados(cache do banco de dados). O valor da quantidade de buffers é em unidade de paginas, o padrão é 100 MBytes.

Se você pretende realizar pequenos testes, não se preocupe em alterar estes parâmetros agora, o Informix funciona muito bem com estas configurações padrões.

No meu caso eu ainda tenho 1 GB de memória RAM livre, então irei subir um pouco estes valores.
Para isso editei o arquivo $ONCONFIG. Abaixo demonstro como estava e como deixei .

    # Antes 
    
    $ onstat -c |egrep "^SHMVIRTSIZE|^BUFFERPOOL"
    SHMVIRTSIZE 32656
    BUFFERPOOL      default,buffers=10000,lrus=8,lru_min_dirty=50.000000,lru_max_dirty=60.500000
    BUFFERPOOL      size=2K,buffers=50000,lrus=8,lru_min_dirty=50.000000,lru_max_dirty=60.000000
    
    # Depois
    
    $ onstat -c |egrep "^SHMVIRTSIZE|^BUFFERPOOL"
    SHMVIRTSIZE 256000
    BUFFERPOOL      default,buffers=10000,lrus=8,lru_min_dirty=50.000000,lru_max_dirty=60.500000
    BUFFERPOOL      size=2K,buffers=150000,lrus=8,lru_min_dirty=50.000000,lru_max_dirty=60.000000
    
Depois de alterar estes parâmetros é necessário reiniciar o Informix.
Para verificar se teve efeito, execute o comando onstat:
    $ onmode -ky
    $ oninit
    $ onstat -
    
    IBM Informix Dynamic Server Version 11.50.UC4DE -- On-Line -- Up 00:00:16 -- 585468 Kbytes 
    

Mas por que alterar estas configurações?


No informix há dados que são considerados críticos, são eles: banco de dados sysmaster (que sempre fica no dbspace root), logical log e physicial log. Sem um destes três a instância simplismente não funciona.
O motivo de alterar estas configurações são para evitar problemas básicos e mais comuns quando não realizados, como falta de espaço para os dados, utilização indevida de dbspace para dados temporários, problemas em transações maiores, congelamento da instancia por falta de backup e por ai vai.
  • Alocação dos espaços em discos Bom, a maior parte foi devido a necessidade das configurações abaixo, porém uma em especifico precisa de uma explicação, o dbspace dados1. Este dbspace foi criado especialmente para os dados dos usuários, os dados do usuários nunca devem ficar misturados com os dados criticos (rootdbs/sysmaster) devido motivos de segurança, administraçào, performance, facilidade em backup/restore.
  • Alteração dos logical logs Os logical logs registram todas(exceto para banco de dados não logados) as transações da instancia , não é recomendável mante-los no mesmo dbspace do rootdbs por motivos de concorrência de I/O (isto vale mais para ambientes com alta taxa de transações), segurança, facilidade para administração caso precise aumenta-los, backup/restore e outros motivos.
  • Alteração do physical log Por motivos similares ao do logical log, evitar concorrência de I/O, segurança, facilidade de administraçào.
  • Alteração de memória Este parâmetro não precisa de muita explição, afinal se você tiver mais dados e usuários trabalhando no banco, para manter uma boa performance é melhor manter o máximo possível na memória.
  • Dbspace temporário Quando criado uma tabela temporária propositalmente pelo usuário ou de modo inconciente (através de ORDER BY e JOINS) esta tabela precisa de um lugar para ser criada e se não for realizado esta configuração ela poderá ser criada nos mesmos dbspaces dos dados, podendo gerar problemas de performance, falta de espaço, concorrência de I/O , geração de logs desenecessáriamente e por ai vai. Se uma tabela temporária for "logada" todas as suas alterações serão salvas no logical log (gerando logs a mais) e elas sofrerão efeitos de transações (commit, rollback), porém são raros os casos que isso seja necessário.

Pronto, fim desta parte...

5
Média: 5 (3 votos)
Sua avaliação: Nenhum

Dropando os "Logical Logs"

Oi, Cesar Excelentes seus totoriais! já segui seus passos para configurar o IDS 10, más estou testando agora o Innovator -C IDS 11.5, e estou com problema no momento em que tenho que apagar os Logical Logs que estão no meu rootdbs, a saída do meu "onstat -l" é normal, exceto pelo fato de que a flag "B" não aparece na saída dos logical logs. Quando tento apagar com o onparams -d -l 1 -y ele apresenta uma msg de erro! "This log file is in use." Não sei o que pode ser, já analisei várias coisas, testei más não encontro nada que me ajude, nem ao menos na internet encontrei algo que possa me ajudar, eu notei que a flag "B" não existe, será que é isso? o que pode ser? Aguardo retorno. atte., Adalto

RE: Dropando os "Logical Logs"

Olá Adalto!
Obrigado pelo elogio!

Quanto ao seu problema, é exatamente este que você falou, a falta do flag "B", que representa que um logical log já foi "backupeado".
Você precisa fazer o backup deste logical log manualmente através do comando "onstat -a", mas para isso seu parametro LTAPEDEV precisa estar corretamente definido (para um arquivo ou diretório).
Como seu ambiente ai é de teste, você pode configurar para o Informix fazer o backup automatico do log e descartar este backup de imediato. Para isso aponte o LTAPEDEV para o valor /dev/null (se for linux), então reinicie a instancia. Quando subir ela, todos os logs já estarão com o flag "B". E sempre que um completar ele vai ser automaticamente "backupeado".

Existe mais detalhes, mas se for descrever aqui vai ficar muito longa a mensagem. Mas com isso você já resolve seu problema .

Abraço
Cesar

RE: RE: Dropando os "Logical Logs"

\o/ Funcionou... Muito Obrigado! Cesar pela rápida resposta e pela eficiente ajuda =] Vou procurar mais informações sobre esse assunto! Abraço

Comentar

O conteúdo deste campo é privado não será exibido ao público.
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Você pode usar tags BBCode no texto.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Mais informações sobre as opções de formatação

CAPTCHA
Este teste é para bloquear programas automatizados e previnir spams
CAPTCHA de Imagem
Digite o texto exibido na imagem.