OAT plugins: Do it yourself! / Plugins para o OAT: Fa�a voc� mesmo!

This article is written in English and Portuguese
Este artigo est� escrito em Ingl�s e Portugu�s


English version:

Some time ago, during a customer engagement, I felt the need to be able to show them if there were lock waiting sessions in their most busy system. Of course any old time Informix DBA will tell that onstat -k/K is able to provide this. But in their environment they needed this to be available to a broader audience than just the DBA team (who are the ones with database server command line access). So we decided to create a simple PHP script with Informix connection that showed it in a web page available in their Intranet. They're currently moving into using Open Admin Tool (OAT) and I though it would be nice to move that into OAT. Note that OAT already includes some reports that provide similar (although with less detail) information (session waiting report).
So I thought it would be nice to do it properly and create a plug-in. I searched around, specifically in OAT's home ( http://www.openadmintool.org ) and found a link to an article about creating plugins in OAT: http://www.ibm.com/developerworks/db2/library/techarticle/dm-0808vonbargen/
The author of this article is Erika Von Bargen, an IBM colleague, which is very active in the OAT specific IIUG mailing list. People who went to this year's IIUG conference possibly also know her since she was there presenting sessions about OAT.
Now... To tell you the complete truth, sometimes I'm very lazy (aren't we all at times?) when it comes to properly read documentation. So I just jumped into a terminal and started looking at an example plug-in provided with OAT. In a few minutes I had changed the query and I was seeing the information we were used to see in the customized web page. Obviously every message and column header was missing, the menus were wrong etc. But It was enough to become enthusiastic about this subject. I posted a few messages in OAT's mailing list, and had a quick feedback from Erika, which was a great help.
After the initial startup I decided to do it properly, and I read the article above, and it's a nice, clear and concise article. It's perfect to get you started.

So, after the initial "code, test, fix error, test....", instead of the "read, plan, code, test, fix..." I was ready to do it properly and I took some time at home to play with this. And I kept adding some features, some usability details and finally got to a point where I think I have a working plug-in. It has four options:
  1. List all the instance locks
    This shows information similar to onstat -K, but most of the information is immediately readable (meaning you don't have to query sysmaster to get the table names, and you don't have to run onstat -u | grep .... to get the session number.
  2. List locks with waiters
    This shows information on every lock that has a lock list. The information includes:
    - The owner username, session number, process id and client machine
    - The waiter username, session number, process id and client machine
    - The table/index in question, the time the lock was established and how long the wait is waiting
  3. List locks per table
    This shows information about locking for every active table in your system. The information includes the number of currently held locks, the number of lock requests made on the table, the number of lock waits, the number of deadlocks and the number of lock timeouts
  4. List locks per session
    This shows the number of currently held locks, the number of lock requests made by the session, the number of lock waits, the number of deadlocks and the number of lock timeouts
One of the great things about OAT is how easy we can localize our plug-ins. In this case, due to my linguistic limitations, I've only included the standard English messages and naturally the Portuguese ones. I'd be glad to add more, if people who can write in other languages (already used by OAT) could send me the translated messages. The number of words/phrases to translate is really short and to be honest I'm tempted to give some online translation a try... But I would prefer some user contributions, in case you find the plug-in useful....
Also, I'd love to receive feedback about bugs or improvements. I have a few ones on my mind, but it's always better to listen to others...

So, where is it? I've just upload it to IIUG software repository. It's the first time I do it, so I'm not sure how long will it take to become available
[UPDATE 31 Aug 2010]: It's already available on the IIUG repository .

If you want to check the aspect of it, before giving it a try, please see below some snapshots.

How stable is it? It wasn't tested on big systems. But all it does is query the sysmaster. So, the worst thing that could happen would be giving you some wrong information. It should not do any harm to your system. In any case treat this as a beta release for now. One thing that can happen is that the pages show all the information fetched by the queries. In large systems, with thousands of locks, sessions, or tables, this can translate into very big HTML pages... Be aware of this.
To the best of my knowledge the queries return proper results. The locks with waiters page is based on a query being used for a fairly long time. The other queries were created and tested in a very controlled environment, so admittedly it's possible that they don't cover some situations.

Every feedback is welcome. Although OAT already includes some functionality in this area, I think this will give you a more direct and condensed tool to monitor your database locking activity. As such I believe the plug-in can be useful and it certainly can be improved.


Vers�o portuguesa:


H� algum tempo atr�s, durante um trabalho num cliente, senti a necessidade de lhes mostrar se tinham sess�es � espera de locks no sistema mais utilizado. Claro que qualquer DBA Informix com alguma experi�ncia dir� que o onstat -k/K � capaz de responder a esta necessidade. Mas no caso que refiro, era necess�rio que esta informa��o estivesse dispon�vel para uma audi�ncia mais alargada que apenas a equipa de DBAs (os �nicos com acesso � linha de comando no servidor de base de dados).
Por isso, decidimos criar um script PHP, simples, com conex�o ao Informix, que mostrasse a informa��o numa p�gina Web dispon�vel na Intranet da empresa. Actualmente est�o a come�ar a usar o Open Admin Tool (OAT) e pareceu-me adequado colocar esta funcionalidade dentro da mesma ferramenta. Note-se que o OAT j� fornece informa�ao semelhante (embora com menos detalhe) no relat�rio de sess�es em espera.
Assim pensei que seria bom fazer isto como deve ser e criar um plug-in. Procurei informa��o, especificamente no website do OAT ( http://www.openadmintool.org ) e encontrei uma liga��o a um artigo sobre cria��o de plug-ins para o OAT: http://www.ibm.com/developerworks/db2/library/techarticle/dm-0808vonbargen/

A autora deste artigo � a Erika Von Bargen, uma colega da IBM, bastante activa na mailing list do OAT do IIUG. Quem teve oportunidade de estar na confer�ncia do IIUG este ano tamb�m teve oportunidade de assistir a sess�es apresentadas por ela, precisamente relacionadas com o OAT
Bom... Para ser franco, ocasionalmente sou bastante pregui�oso (n�o seremos todos de vez em quando?) quando toca a ler documenta��o. Por isso, abri uma sess�o e comecei a estudar um exemplo de plug-in fornecido com o OAT. Em apenas alguns minutos, tinha mudado a query que lhe serve de base e estava a ver a informa��o a que est�vamos habituados na p�gina personalizada. Naturalmente, todas as mensagens e cabe�alhos de tabelas estavam errados ou em falta, os menus estavam errados etc. Mas foi o suficiente para me tornar um entusiasta do assunto. Coloquei algumas mensagens na mailing list do OAT e obtive respostas r�pidas da Erika que foram uma grande ajuda.
Ap�s o arranque inicial, decidi que devia fazer as coisas devidamente, e li o artigo mencionado acima, que � bom, claro e conciso. Ideal para quem quer come�ar com a tarefa de criar um plug-in.

Assim, ap�s a abordagem inicial de "codificar, testar, corrigir erros, testar....", passei para a de "ler, planear, codificar, testar, corrigir....". Estava preparado para fazer isto como deve ser e disponibilizei algum tempo em casa para "brincar" com isto. E fui adicionando funcionalidades, detalhes para melhorar a usabilidade, e finalmente cheguei a um ponto onde julgo ter um plug-in que funciona.
Tem quatro op��es:


  1. Listar os bloqueios na inst�ncia
    Isto mostra informa��o semelhante ao onstat -K, mas a maioria da informa��o � de leitura imediata (ou seja, n�o � necess�rio pesquisar na sysmaster para obter os nomes das tabelas, e n�o temos de correr um onstat -u | grep ... para obter o n�mero da sess�o
  2. Listar os bloqueios com fila de espera
    Isto mostra informa��o de cada bloqueio que tenha uma lista de espera. Esta informa��o inclu�:
    - O dono do bloqueio, incluindo nome de utilizador, n�mero de sess�o, n�mero de processo e a m�quina cliente
    - Quem est� � espera, inclu�ndo o nome de utilizador, n�mero de sess�o, n�mero de processo e a m�quina cliente
    - A tabela/ind�ce que tem o bloqueio, o instante em que o bloqueio foi estabelecido e h� quanto tempo existe a espera
  3. Listar os bloqueios por tabela
    Isto mostra informa��o sobre os bloqueios para todas as tabelas activas do seu sistema.
    A informa��o inclu� o n�mero de bloqueios activos no momento, o n�mero de pedidos de bloqueios feitos sobre a tabela, o n�mero de esperas por bloqueios sobre a tabela, o n�mero de deadlocks que envolveram a tabela, e o n�mero de vezes que os tempos de espera por bloqueios expiraram
  4. Listar os bloqueios por sess�o
    Isto mostra o n�mero de bloqueios que cada sess�o mant�m activos, o n�mero de pedidos de bloqueio feitos pelas sess�es, o n�mero de esperas por bloqueios, o n�mero de deadlocks da sess�o, e o n�mero de tempos de espera por bloqueios expirados

Uma das coisas boas do OAT � a facilidade com que se pode localizar ou traduzir os nossos plug-ins. Devido �s minhas limita��es lingu�sticas, neste caso, o plug-in s� inclu� as mensagens em Ing�s (standard) e naturalmente em Portugu�s. Gostaria de adicionar mais, caso quem escreva noutras l�nguas (das j� usadas pelo OAT) me queira enviar as mensagens traduzidas. O n�mero de palavras/frases a traduzir � realmente pequeno, e para ser honesto sinto-me tentado a experimentar os tradutores autom�ticos online. Mas seria prefer�vel se algu�m contribu�sse caso considere o plug-in �til.

Adicionalmente, terei todo o gosto em receber coment�rios sobre bugs ou melhorias. Tenho algumas em mente, mas � sempre melhor escutar opini�es de outros...

Ent�o, onde est� o plug-in? Acabei de fazer o envio para o reposit�rio de software do IIUG. � a primeira vez que o fa�o, e sinceramente n�o sei quanto tempo levar� a ficar dispon�vel.
[ACTUALIZA��O 31 Aug 2010]: J� est� dispon�vel no reposit�rio de software do IIUG.

Se desejar ver o aspecto do plug-in, antes de o testar, por favor veja as imagens abaixo.

Qu�o est�vel � o plug-in? N�o foi testado em sistemas grandes. Mas tudo o que faz � pesquisar a sysmaster. Por isso, al�m de alguma poss�vel informa��o errada n�o dever� causar qualquer problema nos seus sistemas. Em todo o caso trate isto como uma release beta por enquanto. Algo que pode acontecer � que as p�ginas mostram toda a informa��o obtida nas queries. Em sistemas grandes, com milhares de bloqueios, sess�es ou tabelas, isto pode traduzir-se em p�ginas HTML muito grandes.... Tenha algum cuidado com isso.
Tanto quanto me apercebi, as pesquisas retornam resultados correctos. A lista de bloqueios com lista de espera baseia-se numa query que utilizo h� bastante tempo. As outras pesquisas foram criadas e testadas num ambiente muito controlado, logo � poss�vel que possam n�o prever algumas situa��es.

Todo o feedback ser� muito bem vindo. Apesar de o OAT j� incluir alguma funcionalidade nesta �rea, julgo que este plug-in ser� uma ferramenta mais directa e condensada para monitorizar toda a actividade relacionada com bloqueios nas suas inst�ncias Informix. Como tal, acredito que o plug-in possa ser �til e certamente poder� ser melhorado.


Snapshots/�crans:

















Lock List
Lista de bloqueios


















Lock waiters
Lista de bloqueios com fila de espera

















Locks per table
Bloqueios por tabela























Locks per session
Bloqueios por sess�o

Chat with the Labs: Post End of Service Support Options and Upgrade Best practices / Op��es de suporte ap�s fim de servi�o

This article is written in Portuguese and English
Este artigo est� escrito em Portugu�s e Ingl�s


English Version:

Andrew Ford already announced this in his blog, so for the English version I'll just recommend that you check his article. Basically there will be a very important Chat with the labs session on August 26. For all the customers still in version 9.40 and v10, this may really make a difference.

Portuguese Version:

No dia 26 de Agosto decorrer� mais uma sess�o "Chat with the labs" sobre o tema "op��es de suporte ap�s o fim de servi�o e melhores pr�cticas para upgrades ou actualiza��es".
A IBM disponibiliza v�rias op��es de suporte para clientes cujos productos tenham atingido o fim de servi�o, e esse ser� o tema principal desta sess�o.
O tema ser� mais relevante para clientes que estejam ainda a correr as vers�es 7.31 (sem suporte normal desde Setembro de 2008), a 9.40 (sem suporte normal desde Abril de 2008) e a 10 que deixar� de ter suporte normal no pr�ximo dia 30 de Setembro.
Na sess�o ser�o tamb�m abordadas as melhores estrat�gias e pr�cticas para migra��es da vers�o 10 para a 11.50.

Para assistir � sess�o dever� registar-se em:

https://events.webdialogs.com/register.php?id=d6def198fd&l=en-US

Os slides dever�o estar dispon�veis antes da confer�ncia em:

http://www.ibm.com/informix/labchats

Caso n�o lhe seja poss�vel assistir em directo poder� obter os slides e mais tarde som. Caso o tema seja �til, e em caso de d�vida n�o deixe de contactar o seu representante IBM.

A bug can undermine your troubleshooting / Como um bug pode minar a resolu��o de problemas

This article will be written in English and Portuguese.
Este artigo ser� escrito em Ingl�s e Portugu�s.

English version:

A few articles ago I tried to lecture on how to do a good troubleshooting. And I wrote that it all starts with an error or a bad behavior. When we have an error we should start from there. If we don't have it, it's harder.... But what about the situations when we have an error that says:

"No error message available"

Not good... I faced a situation on a customer where this happened. It's a Web application written in ASP using the windows driver (OleDB) and running on IIS. After an engine restart they started having an error that says:

No error message available, result code: E_UNEXPECTED(0x8000FFFF)
ErrorCode -2147418113

So, we had an error, but it wasn't really helpful. It wasn't too hard to find out what happened, since this particular engine has some variables to avoid problems with code set conversions and it was started without those variables in the environment. But It would have been quicker to understand if we had a proper error code. So, after solving the main issue, I dig in to the subject and found a very interesting APAR:

IC64220: THREADED OLEDB DOES NOT RETURN THE CORRECT ERROR MESSAGE

Basically, the driver was doing a bad use of the MS API to expose errors and in some situations the error structures were not properly initialized. This caused the "No error message available" information.
The fix is in CSDK 3.50.xC5 and if nothing else, this would be a good reason to upgrade.
It was not the first time I had "weird errors" in Windows environment, and in fact there were other similar bugs reported. So I leave here the suggestion to upgrade. Obviously, like with any other upgrade, test, test, test....

Portuguese version:

H� alguns artigos atr�s eu dei um "serm�o" sobre como fazer um bom despiste de problemas. E escrevi que tudo deve come�ar com um erro ou com um mau comportamento. Quando temos um erro devemos come�ar por a�. Se n�o tivermos � mais dific�l.... Mas e se tivermos um erro que diz:

"No error message available"

Nada bom... Encontrei uma situa��o num cliente onde isto apareceu. � uma aplica��o Web escrita em ASP utilizando os drivers Windows (OleDB) a correr em IIS. Ap�s uma paragem de um motor, come�aram a ter o seguinte erro:

No error message available, result code: E_UNEXPECTED(0x8000FFFF)
ErrorCode -2147418113

Portanto, tinhamos um erro, mas n�o era grande ajuda. N�o foi muito dif�cil descobrir o que se tinha passado, dado que este motor em particular tem algumas vari�veis posicionadas para evitar problemas na convers�o de caracteres entre diferentes mapas ou codesets, e estas vari�veis n�o estavam posicionadas quando se arrancou com o motor. Mas teria sido mais r�pido de entender se tiv�ssemos tido um c�digo e mensagem de erro v�lidos. Assim, ap�s resolver o problema principal, investiguei um pouco mais e encontrei o seguinte APAR:


IC64220: THREADED OLEDB DOES NOT RETURN THE CORRECT ERROR MESSAGE

Basicamente, o driver estava a fazer uma utiliza��o errada da API da MS para expor erros, e em determinadas situa��es as estruturas de erro n�o eram devidamente inicializadas. Isto causava a mensagem "No error message available"

A correc��o est� no CSDK 3.50.xC5, e mesmo s� por isto j� seria uma boa raz�o para fazer a actualiza��o.
N�o foi a primeira vez que me deparei com erros "estranhos" no ambiente Windows, e na verdade havia outros bugs semelhantes reportados. Assim, deixo a sugest�o para se fazer a actualiza��o. Claro que em qualquer situa��o de actuliza��o de vers�es, a ordem � testar, testar, testar....

Informix Editions revisited / Vers�es Informix revisitadas

This article will be in English and Portuguese.
Este artigo ser� em Ingl�s e Portugu�s

English version:

After the announcements in May, new changes were made to Informix packaging. Basically the free versions for Windows and Mac OSX (Ultimate-C) were withdrawn. To replace them the Innovator-C version (also free, but with lower usage limits) will be available for all platforms (including the Windows and Mac OSX).

Also a new edition will be available, called Choice Edition, just for Windows and Mac OSX. This one will have license costs, but is cheaper than Growth Edition. The limits are higher than Innovator-C and lower than Growth Edition.

I believe these changes have created some confusion, but there are some important points to note:

  1. Clients will still be able to use a version without license costs for all platforms supported by Informix (Innovator-C). The usage limitations are fairly acceptable for a lot of usages
  2. Windows and Mac OSX are target platforms with a more aggressive price, considering Choice Edition (again, with fairly respectable functionality and usage limits)
  3. Existing customers are not necessarily affected by the new editions. They already payed for the licenses, and are (probably) paying maintenance/support. Obviously they can consider the new editions for new deployments
  4. Existing Enterprise Edition customers get more value, because Ultimate Edition includes more features than the Enterprise
The last changes were announced a few days ago and are explained in IIUG website, more specifically here:
http://www.iiug.org/news/announcements/new_prices.php

I delayed the publishing of this article because I was expecting the website comparing the different versions to be updated:

http://www.ibm.com/developerworks/data/library/techarticle/dm-0801doe/

This is the best, and the official place to check each version available functionality.

Other links:



Vers�o Portuguesa:

Depois dos an�ncios em Maio, novas altera��es foram feitas nas vers�es de Informix dispon�veis. Basicamente as vers�es gr�tis para Windows e Mac OSX (Ultimate-C) foram descontinuadas. Para as substituir a vers�o Innovator-C (igualmente gr�tis, mas com limites de utiliza��o mais baixos) estar� dispon�vel para todas as plataformas (incluindo Windows e Mac OSX)

Uma nova vers�o estar� dispon�vel, designada por Choice Edition, apenas para Windows e Mac OSX. Esta vers�o ter� custos de licenciamento, mas ser� mais barata que a Growth Edition. Os limites situam-se entre a Innovator-C e a Growth Edition.

Acredito que estas altera��es provoquem alguma confus�o, mas h� que salientar alguns pontos:

  1. Os clientes poder�o utilizar uma vers�o sem custos em todas as plataformas suportadas pelo Informix (Innovator-C). As funcionalidades inclu�das e os limites impostos n�o dever�o ser obst�culo a um leque grande de ambientes.
  2. Windows e Mac OSX s�o plataformas alvo, com pre�os mais agressivos, considerando a vers�o Choice (tamb�m com funcionalidades e limites de utiliza��o bastante respeit�veis.
  3. Os clientes existentes n�o s�o necessariamente afectados pelas novas vers�es. Na realidade o custo das licen�as j� foi pago, e o que estar�o (provavelmente) a pagar s�o os custos de manuten��o/suporte. Naturalmente poder�o considerar as novas vers�es para novos projectos.
  4. Clientes actuais da Enterprise Edition obt�m mais valor, porque a vers�o Ultimate inclu� mais funcionalidade que a Enterprise
As �ltimas altera��es foram anunciadas alguns dias atr�s e est�o explicadas no website do IIUG, mais especificamente aqui:

http://www.iiug.org/news/announcements/new_prices.php

Atrasei um pouco a publica��o deste artigo porque estava � espera que o website que tem a compara��o entre as vers�es fosse actualizado:

http://www.ibm.com/developerworks/data/library/techarticle/dm-0801doe/

Este � o melhor sitio (e o oficial) para verificar as funcionalidades e limites de cada vers�o.

Outros links: