quarta-feira, 22 de setembro de 2010

Profissionais Windows x Linha de Comando

Interessante esse tema, para ser sincero nem acho que nem tenho condições de estar escrevendo algum artigo para Windows, pois não conheço quase nada, porem tenho vários colegas de profissão que são profissionais em Windows e trabalham com o Mesmo, só que dar uma ênfase aqui, estou falando de profissionais que trabalham com Servidores Windows.

Pois bem… não é difícil deduzir que sou um profissional especializado no Mundo Unix, HP-UX, Linux, AIX, etc, trabalho com consultoria, a maioria sendo cliente Totvs principalmente aplicado ao sistema Logix, e 99% das consultoria que faço é baseado em sistemas Unix, aconteceu que esses dias um cliente que tem a base em Windows Server me contatou para fazer um serviço em Banco de Dados Informix.

Bom aceitei o desafio a principio somente auxiliando o responsável pelo sistema, e o auxilio foi no sentido de ajudar a criar uma instancia, dbspaces, chunks, etc,… até ai tudo bem, mas ai me deparei com um problema interessante, para entendermos melhor o problema vou explicar como faço no Unix para resolver isso.

Quando se cria a instancia no informix o IDS já cria os logical logs dentro do rootdbs, então geralmente, não sendo uma regra, por questão de organização até e performance a gente cria um dbspace e um chunk somente para o logical log:

# onspaces –a –d llog –p /dblog/llog.000 –o 0 –s 1000106

e no windows não é diferente:

# onspaces –a –d llog –p C:\IFMXDATA\tst\llog.000 –o 0 –s 1000212

muito bem, depois a gente da uma organizada em tudo isso, primeiro criando mais 3 arquivos de logs para o dbspace llog:

# onparams –a –d llog

e para o Windows o mesmo procedimento

depois de criado os 3 logs, então movemos o ponto do logical log e do check point ate os logs que foram criados.

# onmode –l

# onmode –c

muito bem, movidos os ponteiros, entra aqui uma brincadeira em shell script que utilizo muito para simplificar as tarefas, nesse caso para remover os logs do rootdbs

# for i in `seq 6`
do
onparams –d –l $i –y
done

esse comando simplesmente remove os 6 primeiros logical logs que estão no rootdbs, simplifica não…

pois bem…

depois comento isso para o windows,

feito isso no linux, o normal é a gente encher agora o chunk criado para os logs de logs, o comando ja passei acima , porem já pensou um chunk de 500.000 paginas, sendo que cada logical log tem o tamanho de 5000 paginas, a gente teria que executar o comando 100 vezes. é ai que entra a linha de comando novamente:

um exemplo bem simples e rápido

while true
do
onparams –a –d llog
done;

na era que começar a dar a mensagem na console de que o chunk esta cheio, simplesmente aperte o ctrl-c para cancelar a execução do script…

um exemplo mais elaborado

x=1
while [ $x != 0 ]
do
onparams –a –d llog
x=`onstat –d |grep tstlog | awk ‘{print $6}’`
done

esse script já é mais elaborado, na hora que a coluna do onstat free chegar a 0 quer dizer que ja encheu os logs, então o valor do x vai retornar 0 ao while fazendo que o mesmo aborte o código.

magico não , isso é o mundo linux.

Porem retornando ao tema Windows, no atendimento a esse cliente, fiquei pensando e agora como vamos encher o log…

uma maneira seria fazer na unha, seta para cima e enter… ate encher o log ,mas o Windows não? tem como automatizar a tarefa… ? postei em alguns blog essa duvida, e no máximo o que me responderam foi , cria um arquivo .bat e insira um monte de vez o comando e depois rode o arquivo de lote, sinceramente  acho que foi a pior resposta que ouvi até hoje, porem continuei minha pesquisa no google por dias, e não consegui achar a solução desse problema, e também consultei alguns especialistas em plataforma Microsoft.

ontem instalando um servidor windows para teste, fiquei ainda pensando … caramba será que não tem maneira de automatizar isso mesmo?

foi ai que para minha surpresa resolvi digitar um for la no prompt do windows, pode parecer engraçado, mas o windows tem um for, me desculpem os usuários de windows que conhecem, pois eu nao conhecia, e resolvi ler o help do FOR e para minha surpresa, resolvi o primeiro problema…..

sim removi os 6 primeiros logs no windows com o comando FOR olhem só….

FOR /L %i IN (1,1,6) DO onparams –d –l %i –y

magico também, risos.

ai tinha o segundo problema que na verdade já tinha resolvido o segundo o com o primeiro ficando assim:

FOR /L %i IN (1,1,97) DO onparams –a –l llog

problema resolvido, o windows server até que foi interessante nesse caso, resolver um problema via prompt, confesso que para mim foi novidade sim, porem conhecimento adquirido.

Mas gostaria de destacar a não resolução desse problema pelos profissionais do Windows, eles mesmos não conhecem isso, so sabem mexer em mouse? mau costume……

abraços a todos e qualquer duvida estou a disposição.

terça-feira, 21 de setembro de 2010

Códigos de retorno do utilitário onstat

O utilitário onstat exibe um conjunto de códigos de retorno quando você executa o utilitário.

Valor

Descrição

-1 Inicialização GLS local falhou ou IDS não anexou a memória compartilhada
0 Modo de Inicialização
1 Quiescent mode
2 Recovery mode
3

Backup mode

4 Shutdown mode
5 Online mode
6 Abort mode
7 User mode
255

Off-Line mode

segunda-feira, 6 de setembro de 2010

onstat – : Status do Servidor

Todas as saídas onstat inclui um cabeçalho. O comando onstat - exibe apenas o cabeçalho, devolvendo valores que indica o modo do servidor. A primeira parte da saída identifica a versão do Server, a segunda parte identifica o status do server. O status do servidor Informix pode assumir um dos seguintes valores:

  • Initialization

  • Shutting Down

  • Quiescent

  • OnLine

  • Fast Recovery

  • Abort

  • Archive Backup

  • Unknown

  • Read-Only

Adicionalmente, o status do servidor pode ser acompanhada de informações secundárias. O valor (PRIM) ou (SEC) será exibido para os sistemas em sistemas de replicação de dados. (CKPT REQ) aparecerá caso haja necessidade; (CKPT INP) aparecerá se um ponto de verificação está em andamento; e (LONGTX) aparecerá caso esteja tendo um ROLL BACK sendo executado.

E na parte final das informações são fornecidas o tempo que o servidor esta no ar, seguido pelo tamanho total dos segmentos da shared memory (resident + virtual) utilizado pelo servidor em Kbytes. Se o servidor é impedido de realizar qualquer trabalho, a razão é adicionado ao final da linha de status. As possíveis  razões para um sistema de bloqueio são:

  • CKPT Checkpoint
  • LONGTX Long Transaction
  • ARCHIVE Archive Requested Block
  • MEDIA_FAILURE DBSpace being marked down
  • HANG_SYSTEM Server Requested Block
  • DBS_DROP DBSpace is being dropped
  • DDR DDR Synchronization
  • LBU Prevent Log Backups

Sintaxe:

isis:~ # onstat -

(Version--Mode (Type)--(Checkpnt)--Up Uptime--Sh_mem Kbytes)

IBM Informix Dynamic Server Version 11.50.FC6WE -- On-Line -- Up 19 days 03:08:27 -- 1310184 Kbytes

Version:
Nome e a versão do produto

Mode:
É o modo atual

Type:
Se o servidor de banco usa HDR, indica se o servidor é primario ou secundario.
Se o servidor não esta envolvido com HDR, então este campo não contem nada. Se o server é primario então será mostrado o valor P e se for um servidor secundario será exibido o valor S.

Checkpnt:
Se um flag Checkpnt é definido, poderá então ser mostrado mais 2 valores
(CKPT REQ) - Indica que um segmento de usuário solicitou um checkpoint
(CKPT INP) – Indica que um checkpoint esta em progresso. Durante o checkpoint, o acesso é limitado somente para leitura. O Servidor de Banco de Dados não pode escrever ou atualizar dados até que o checkpoint termine.

Uptime:
Indica o tempo que o Servidor de Banco de dados esta rodando.
Se a hora do sistema é alterado manualmente para uma data posterior da inicialização do banco de dados, o tempo de atividade não estará disponível. Nesta situação será exibido essa mensagem: Uptime Unavailable.

Sh_mem:
È o tamanho do banco de dados na Shared Memory, mostrado em kilobytes

sexta-feira, 3 de setembro de 2010

onstat -d: Comando que mostra informações sobre o chunk

 

Use o comando onstat-d para mostrar informações sobre os chunks de cada espaço de armazenamento.

O comando onstat –d fornece uma saída em duas partes. A primeira parte identifica todos os dbspaces numa instancia; a segunda parte identifica todos os chunks associados aos dbspaces da primeira parte.

Sintaxe:

onstat –d

O comando onstat –d fornece uma saída em duas partes. A primeira parte identifica todos os dbspaces numa instancia; a segunda parte identifica todos os chunks associados aos dbspaces da primeira parte.

Usando onstat-d com blobspaces

Se você usar o comando onstat-d em uma instância com chunks blobspace, o servidor de banco de dados exibira a seguinte mensagem:

NOTE: For BLOB chunks, the number of free pages shown is out of date. Run ‘onstat -d update' for current stats.

Para obter estatísticas dos chunks blobspaces atualizadas,  digite o comando onstat –d update. O utilitário onstat atualiza a shared memory com uma contagem exata de páginas livres para cada chunk blobspace.

Waiting for server to update BLOB chunk statistics ...

Exemplo do comando onstat –d:

IBM Informix Dynamic Server Version 11.50.FC6WE -- On-Line -- Up 14 days 04:47:06 -- 1310184 Kbytes
Dbspaces
address
number 
flags
fchunk
nchunks
pgsize
flags
owner
name
4c4cc028
1
0x70001
1
1
2048
N  B
informix
rootdbs
4d53e9d0
2
0x70001
2
1  
2048
N  B
informix
plog
4d53eb68   
3
0x42001
3
1
2048
N TB
informix
tmp1_tst
4d53ed00
4
0x42001
4
1
2048
N TB
informix
tmp2_tst
4d540028
5
0x42001
5
1
2048
N TB
informix
tmp3_tst
4d5401c0
6
0x60001
6
1
2048
N  B
informix
logicallog
4d540358
7
0x60001
7
1
2048
N  B
informix
crm_tst
4d5404f0
8
0x60001
8
4
2048
N  B
informix
logix_tst
8 active, 2047 maximum
Chunks
address
chunk/dbs
offset
size
free
bpages
flags
pathname
4c4cc1c0
1      1
0
150000 
110158
 
P0-B-
/dbtst/dbroots/rootdbs
4d540688
2      2
0
500053
0
 
P0-B-
/tstlog/pyslog/plog
4d540878
3      3
0
250053  
249950
 
P0-B-
/tsttmp/tmp1_tst
4d540a68        
4      4
0
250053  
249950
 
P0-B-
/tsttmp/tmp2_tst
4d540c58        
5      5
0
250053  
249950
 
P0-B-
/tsttmp/tmp3_tst
4d541028        
6      6
0
1500053
0
 
P0-B-
/tstlog/logicallog/llog
4d541218        
7      7
0
1000053
699914
 
P0-B-
/dbtst/crm/crm.01
4d541408        
8      8
0
2000053
116
 
P0-B-
/dbtst/logix/tst.01
4d5415f8        
9      8
0
2000003
90
 
P0-B-
/dbtst/logix/tst.02
4d5417e8        
10     8
0
2000003
542310
 
P0-B-
/dbtst/logix/tst.03
4d5419d8        
11     8
0
2000003
2000000
 
P0-B-
/dbtst/logix/tst.04
11 active, 32766 maximum
NOTE: The values in the “size” and “free” columns for DBspace chunks are
displayed interms of “pgsizes” of the DBspace to which they belong.
Expand chunk capacity mode: always

Descrição dos campos do DBspaces

address
É o endereço do dbspace na shared memory.

number
Número de identificação único do dbspace atribuído na criação.

flags
Valores hexadecimal usado para descrever cada dbspaces. Cada flag individual descreve o status do dbspace usando os seguintes valores hexadecimais:

Valor da Flag Descrição
0x00000000 Mirror não habilitado e dbspace não espelhado
0x00000001 Mirror habilitado e dbspace não espelhado
0x00000002 Mirror habilitado e dbspace espelhado
0x00000004 Mirror do chunk desabilitado
0x00000008 Mirror Recente
0x00000010 Blobspace
0x00000020 Blobspace em mídias removíveis
0x00000040 Blobspace em mídias óticas
0x00000080 Blobspace dropado
0x00000100 Blobspace é ótico STAGEBLOB
0x00000200 DBspace esta sendo recuperado
0x00000400 DBspace totalmente recuperado
0x00000800 Logical Log esta sendo recuperado
0x00001000 Uma tabela na dbspace esta sendo dropada
0x00002000 DBspace temporário
0x00004000 Blobspace esta sendo backupeado
0x00008000 Sbspace
0x00010000 Physical ou logical log alterado
0x00020000 Dbspace ou chunk tables alterado
0x00040000

Dbspace ou blobspace contem large chunk

0x00080000 Chunk nesse dbspace foi renomeado
0x00100000 DBspace temporários utilizados apenas em discos compartilhados em outros servidores.É um dos dbspaces listados no parâmetro ONCONFIG SDS_TEMPDBS.
0x00200000 DBspace temporários utilizados apenas em discos compartilhados em outros servidores. É um dos dbspaces listados no parâmetro ONCONFIG DBSPACETEMP.
0x00400000 O DBspace foi backapeado.

fchunk
É o numero de identificação do primeiro chunk da dbspace

nchunk
É o numero de chunk existente na dbspace

pgsize
É o tamanho da pagina do dbspace em bytes

flags
Usa letras em cada posição para descrever cada dbspace

Posição 1:

Flag Descrição
M Mirror
N Não Mirror

Posição 2:

Flag Descrição
X Mirror criado recente
P physical recuperado aguardando pela recuperação do Logical Log
L Logical esta sendo recuperado
R Sendo recuperado
D Down

Posição 3:

Flag Descrição
B Blobspace
S Sbspace
T DBspace temporária
U SBspace temporária
W DBspace temporário no server primário (Esta flag só é mostrada no server secundário)

Posição 4:

Flag Descrição
B O Dbspace tem chunks maiores que 2GB

Owner
Proprietário do DBspace

Name
Nome do DBspace

Na linha a seguir da lista dos dbspaces:
active: Numero de dbspaces sendo utilizando no momento pela instancia incluindo o rootdbs
Maximum: refere-se ao numero máximo de DBspaces que a instância suporta.

Descrição dos campos dos Chunks

address
É o endereço do chunk

chunk/dbs
É o numero do chunk associado ao numero do dbspace

offset
É o numero do offset do Chunk criado

size
Tamanho do total do chunk, esse numero é em paginas.

free
O número de páginas livres no chunk.
Para um blobspace, indica o números de paginas livres aproximado

bpages
Tamanho do total do chunk em blobpages.

flags
Prove informações de status dos chunks.

Posição 1:

Flag Descrição
P Primário
M Mirror

Posição 2:

Flag Descrição
N Renomeado e requer inicialização ou inconsistente
O Online
D Down
X Mirror criado recentemente
I Inconsistente

 

Posição 3:

Flag Descrição
- DBspace
B Blobspace
S Smart Blobspace

Posição 4:

Flag Descrição
B O chunk tem suporte acima de 2GB

Posição 5:

Flag Descrição
- Não utiliza direct I/O ou os I/O concorrentes estão em cooked
C No AIX ®, usando  I/O concorrendo em cooked
D Direto I/O

pathname
é o caminho dos chunks nos dispositivos físicos.

Na linha abaixo das visualizações dos chunks:
active: Numero de chunk sendo utilizando no momento pela instancia incluindo o rootdbs
Maximum: refere-se ao numero máximo de chunks a instância suporta.

quarta-feira, 1 de setembro de 2010

Comando onstat

O utilitário onstat lê estruturas de memória compartilhada e fornece estatísticas sobre o servidor de banco de dados no momento em que o comando é executado.

Você pode combinar várias opção em um único comando. O utilitário onstat não coloca lock na shared memory para executar o utilitário e não afeta o desempenho

onstat-D:

Imprima ler e gravar informações de página

Mostra informações de leituras e gravação das paginas.

Sintaxe:

onstat –D

Exemplo:

isis:~ # onstat -D

IBM Informix Dynamic Server Version 11.50.FC6WE -- On-Line -- Up 14 days 04:47:06 -- 1310184 Kbytes
Dbspaces
address
number 
flags
fchunk
nchunks
pgsize
flags
owner
name
4c4cc028
1
0x70001
1
1
2048
N  B
informix
rootdbs
4d53e9d0
2
0x70001
2
1  
2048
N  B
informix
plog
4d53eb68   
3
0x42001
3
1
2048
N TB
informix
tmp1_tst
4d53ed00
4
0x42001
4
1
2048
N TB
informix
tmp2_tst
4d540028
5
0x42001
5
1
2048
N TB
informix
tmp3_tst
4d5401c0
6
0x60001
6
1
2048
N  B
informix
logicallog
4d540358
7
0x60001
7
1
2048
N  B
informix
crm_tst
4d5404f0
8
0x60001
8
4
2048
N  B
informix
logix_tst
8 active, 2047 maximum
Chunks
address
chunk/dbs
offset
page Rd
page Wr
pathname
4c4cc1c0
1      1
0
304763  
234297  
/dbtst/dbroots/rootdbs
4d540688
2      2
0
4
794344  
/tstlog/pyslog/plog
4d540878
3      3
0
350420  
381160  
/tsttmp/tmp1_tst
4d540a68        
4      4
0
340538  
373925  
/tsttmp/tmp2_tst
4d540c58        
5      5
0
331212  
384088  
/tsttmp/tmp3_tst
4d541028        
6      6
0
6695    
2341270 
/tstlog/logicallog/llog
4d541218        
7      7
0
19987   
214     
/dbtst/crm/crm.01
4d541408        
8      8
0
1285405 
286704  
/dbtst/logix/tst.01
4d5415f8        
9      8
0
2809998
369856  
/dbtst/logix/tst.02
4d5417e8        
10     8
0
763712  
446188  
/dbtst/logix/tst.03
4d5419d8        
11     8
0
1
0
/dbtst/logix/tst.04
11 active, 32766 maximum
NOTE: The values in the "page Rd" and "page Wr" columns for DBspace chunks
are displayed in terms of system base  page size.
Expanded chunk capacity mode: always

A saída do onstat -D é quase idêntica à saída do onstat –d, com a ressalva de que as colunas size, free and bpages dos chunks são substituidos pelo page Rd e page Wr.

page Rd
É o numero de paginas lidas

page Wr
É o numero de paginas escritas