Tutorial Parte 2b - Configurando uma instancia - continuação
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.
- Colocando a instancia em online
- Alocando os espaços em disco necessário
- Configurando Logical Log
- Configurando o Physical Log
- Ativando a utilização do dbspace temporário
- Configurando a memória utilizada
- 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.ch1Por 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 .
- 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.
# 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.000000Depois 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...
- 957 leituras





Dropando os "Logical Logs"
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"
Comentar