Showing posts with label panther. Show all posts
Showing posts with label panther. Show all posts

Sunday, July 15, 2012

Panther: Installing.... / Panther: Instalando....

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

English version:

Let's start the series by the beginning. The Informix installation method has been changing with some frequency. Panther is not an exception, at least under the covers. From a user perspective it didn't change too much... A bit of history: Why does IBM change this? Many old timers miss the days where we simply unpacked an archive into the destination folder and then run a shell script (Unix/Linux) and that was it. Of course in Windows it was different. And there was no MacOS version... And it was different if you were using version 7.31 or 9+... And some platforms used cpio, others tar (I believe I've seen a cpio with a tar file inside), others RPM.
Ok... Enough. I think I've made IBM point clear... But there's more... You could not choose what to install, or what not to install. And there was no option to automatically create an instance (or when it appeared we could not control it's configuration).

So, the goals of the new installation process are to provide the same feeling across platforms and offer flexibility at the same time, by allowing to customize the installation, choose what to install with greater granularity and allow the user to create a working database instance.
The version 11.1 and 11.5 install method already provided most of this, but people complained about several things. Most noticeable the fact that it used Java for the installation process and it was sensitive to which JRE your system was using. Specially in Linux systems it didn't like the OpenJDK that many of them use. There was an option to use a JRE included in the installer, but some times it was hard to force it to use that one.

All this and some internal presentations I've seen made me curious to test the new installer and I must say I'm pleased with it. It has one problem that I believe is the price to pay for the advantages: The installer takes a large amount of temporary space (~1GB). If this looks too much stay tuned because you can workaround it. Note that this space will be freed at the end of a successful installation. If something goes wrong it will leave info there (so a few unsuccessful installations may lead to lack of space pretty quickly).
The temporary space will be used inside /tmp (Unix and Linux). If it has not enough space it will try the user (who is installing) home directory. Be aware, that if you're running with root this may be the root filesystem which many times doesn't have too much free space. In any case, if you define an environment variable called IATEMPDIR (point it to some directory with enough free space and correct permissions), it will use that location. This is the safest and easiest way to control where it will put the temporary files needed during the installation.

Let's check the installation process:

The software comes in an archived format (.tar, .zip, ...?). So first we need to unpack it into any directory - an install base directory - . After that we need to run one script to install any of the included components (server, client sdk, connect and JDBC driver). We can choose to install in three ways:
  1. Graphic mode
    ./ids_install -i swing
  2. Console mode
    ./ids_install -i console
  3. Silent mode
    ./ids_install -i silent-f PATH_TO_OPTIONS_FILE
For graphic and console mode you can ask the installer to save your options into a file that can later be used for silent installations. And this brings me to an important note: The option to record the options file is -r and it takes an absolute pathname as argument. A relative pathname will not work, and will not raise an error. It just ignores it. So don't forget this. Apparently this is a limitation of the software used to create the installer. Working with absolute pathnames is not a big issue, but the fact that it doesn't warn you if you try to use a relative one can really be annoying.

For the interactive methods, either in GUI or character mode, you'll be asked a few questions:
  1. You must accept the license
  2. If you want a "typical" or "custom" installation
  3. What components you want to install if you choose "custom"
  4. The install location (it will default to $INFORMIXDIR if that is defined in the environment)
  5. If you want to do role separation (and the respective groups if you say yes...)
  6. If you want to create an instance, and if the answer is yes, a few more questions to configure it (space, number of CPUVPs, type of instance - OLTP or DSS -, number of expected clients and a few more)
Then it verifies the free space and proceeds. Easy and quick as usual....
If you choose to install in text mode (-i console), and you choose the custom installation you'll have to choose the components to install. In text mode, this is done after the install present you a list of all the parts you can choose. Note that this list may possibly not fit on your console screen. Be prepared to scroll back (so your terminal program must have some sort of buffer).
Each item and sub-item has a number. To select it (which will turn it on or off depending on current state), you just have to include it's number in a comma separated list of components. This is as convenient as possible in a character mode interface. When you're done choosing the components you just ask it to advance and that's it.

Another option to install the software is to use what we call silent installation (-i silent -f path_name). This is a good way to install the software in big shops. You just setup the options file (or create one during an installation), and then re-use it as many times as you want. With a simple command (./ids_install -i silent -f pathname) you will get a similar installation every time. No questions, no answers, no delays.
You can create a customized version of the option file just by changing three entries in the example file (assuming you want a customized install, with no instance creation and no role separation). The entries you need to change are:
  1. LICENSE_ACCEPTED=FALSE
    This must be changed to LICENSE_ACCEPTED=TRUE (which implies you read and agreed with all the licensing terms)
  2. #USER_INSTALL_DIR=/opt/ibm/informix/11.70
    This one should be uncommented and changed. It will the be install directory (INFORMIXDIR) for the product.
  3. CHOSEN_FEATURE_LIST=IDS,IDS-SVR,IDS-EXT,IDS-EXT-JAVA,IDS-EXT-OPT,IDS-EXT-CNV,IDS-EXT-XML,IDS-DEMO,IDS-ER,IDS-LOAD,IDS-LOAD-ONL,IDS-LOAD-DBL,IDS-LOAD-HPL,IDS-BAR,IDS-BAR-CHK,IDS-BAR-ONBAR,IDS-BAR-ISM,IDS-BAR-TSM,IDS-ADM,IDS-ADM-PERF,IDS-ADM-MON,IDS-ADM-ADT,IDS-ADM-IMPEXP,SDK,SDK-CPP,SDK-CPP-DEMO,SDK-ESQL,SDK-ESQL-DEMO,SDK-ESQL-ACM,SDK-LMI,SDK-ODBC,SDK-ODBC-DEMO,JDBC,GLS,GLS-WEURAM,GLS-EEUR,GLS-CHN,GLS-JPN,GLS-KOR,GLS-OTH
    Ok... I bet you loved this one... Each name separated by commas identifies a component that you can choose not to install. If you want to leave out one of them just remove it from the list. Some of them are easy to understand, but others not so. That's why it's easier to select them during an interactive installation (character or GUI) and save the preferences in a file by using the -r option.
There is one more way to install it, that is not evident from the documentation (although it is documented). If you've been working with Informix for some years you may remind that we used to be able to "install" the software as user informix and after that run a script as root (Unix and Linux). In some situations, where the use of root permissions is very strict you may want to use this method. Personally it's my favorite when I do not have root. This method is documented as a way to "extract" the files. The idea is that you can extract the files into a directory that is similar to the final INFORMIXDIR setup, with the exception that the ownership of the files and the file permissions is not set. It includes a script called RUNasroot.installserver that should be run by root (as the name suggests). This script will do all the necessary chown/chmod commands to correct the file permissions and ownerships. You can copy this full directory (or an archive of it) into other machines and run the mentioned script to complete the installation.
This is called the legacy installation and you can do it by running the command:

./ids_install -i swing|console -DLEGACY=TRUE

If you use this, please don't forget to run the RUNasroot.installserver script after. If you don't, the installation directory will not be a usable INFORMIXDIR. It should be highlighted that after the initial unpack of the files into a directory, you won't require any more temporary space for installation.

So, in short:
  • Everything is installed with the command
    ids_install
  • Can do a console (-i console), a graphical (-i swing) or a silent (-i silent) install
  • Can save a preferences file during a console or graphical install using -r option (full pathname). Can then re-use that file in silent installations with the -f option (full or relative pathname)
  • The install temporary directory is /tmp or the user home directory, but can (should?) be overridden by defining the variable IATEMPDIR (needs around 1GB)
  • You can uncompress the files or install with a non-root user using the option -DLEGACY=TRUE
    After that you'll need to run the script RUNasroot.installserver (as root) to complete the installation (this step is documented, but the installer will not remind you about it...)
I had no issues with the installer and up to now, all the problems I've heard about were all related to installations in non-supported platforms. In many of these cases if the install would work, the product would fail...

I hope this time people will be happy with the install process. There are several options depending on your needs. It's easy for Informix newcomers, and old timers can run with -DLEGACY=TRUE.

If you need to sort all this, we can establish a sort of installation matrix trying to match installation processes with environment conditions:

  • Silent install (-i silent)
    If you have a large number of machines and you want to install it the same way in every machine. Needs root privileges, but can easily be done by system administrators, as long as you provide them the options file
  • Console install (-i console)
    If you don't have a graphical environment or simply prefer character mode interfaces
    Can be used by root or by informix. If run as informix needs that root runs RUNasroot.installserver script
  • Gui install (-i swing)
    If you're new to Informix this is the ideal way. Again, can be used by informix or root.
  • -DLEGACY=TRUE
    This option must be used in console or GUI installations if you're not running as root. You can use it to install the software (requiring RUNasroot.installserver) or simply to create an image of INFORMIXDIR, that can then be copied (simple OS copy) into other systems where you would then just need to run the script RUNasroot.installserver

This article does not cover the installation of other products included in version 11.70 of Informix like Optim Development Studio ou IBM Mashup Center. Hopefully I'll cover these in following articles.


Versão Portuguesa:

Vamos começar esta série de artigos pelo princíipio. O método de instalação do Informix tem mudado com alguma frequência. O Panther não é excepção, pelo menos internamente. Da perspectiva do utilizador não mudou assim tanto... Um pouco de história: Porque é que a IBM muda isto? Muitos dos utilizadores antigos certamente têm saudades dos dias em que simplesmente descompactavamos um arquivo para o directório de destino e depois corríamos um script SHELL (Unix/Linux) e já estava. Claro que no Windows era diferente. E não existia versão para MacOS... E era diferente conforme fosse versão 7.3x ou 9.x... E algumas plataformas usavam cpio, outras tar (creio que cheguei a ver um cpio com um tar lá dentro), outras RPM.
Ok.... Chega. Creio que já tornei a justificação da IBM suficientemente clara... Mas há mais... Não podíamos escolher o que instalar, ou o que não instalar. E não havia opção para criar uma instância automaticamente (ou quando apareceu, não tinhamos controlo sobre a sua configuração).

Portanto, em resumo, os objectivos do novo processo de instalação são fornecer a mesma sensação entre plataformas e oferecer flexibilidade ao mesmo tempo, permitindo que a instalação seja adaptada, escolher o que instalar com maior granularidade e permitir a criação de uma instância funcional de base de dados.
O programa de instalação da versão 11.1 e 11.5 já permitia a maior parte disto, mas os clientes queixavam-se de várias coisas. A mais frequente é que usava Java para o processo e era muito sensível ao JRE que o sistema estava a usar. Especialmente em sistemas Linux, não gostava do OpenJDK que muitos deles usam. Existia uma opção para usar o JRE inscluído no programa de instalação, mas algumas vezes era difícil forçar a sua utilização.

Tudo isto e algumas apresentações internas a que assisti deixaram-me curioso para testar o novo instalador e devo dizer que estou bastante satisfeito com ele. Tem um problema que acredito ser o preço a pagar pelas vantagens: O instalador consome um espaço temporário relativamente grande (~1GB). Se isto lhe parecer demasiado continue atento pois é possível contormar a questão. Note que este espaço será libertado no final de uma instalação bem sucedida. Se alguma coisa correr mal ele vai deixar informação lá (portanto uma sequência de instalações mal sucedidas podem levar a falta de espaço bastante rapidamente).
O espaço temporário será usado em /tmp (Unix e Linux). Se esta localização não tiver espaço suficiente tentará a home directory do utilizador que está a efectuar a instalação. Atenção que se estiver a fazer a instalação como root isto pode ser o root filesystem que muitas vezes não terá muito espaço disponível. Em qualquer caso, se definir uma variável de ambiente chamada IATEMPDIR (apontar para um directório com espaço livre suficiente e com permissões adequadas), o instalador usará essa localização. Esta é a forma mais segura e fácil de controlar onde é que são colocados os ficheiros temporários necessários durante a instalação.

Vejamos o processo de instalação:

O software vem num formato de arquivo (.tar, .zip, ...?). Por isso, primeiro temos de o descompactar para um qualquer directório - directório base de instalação -. Depois é necessário correr um script para instalar qualquer dos componentes incluídos (servidor, client sdk, connect e driver JDBC). Podemos escolher três formas de instalação:

  1. Modo gráfico
    ./ids_install -i swing
  2. Modo de consola
    ./ids_install -i console
  3. Modo silencioso
    ./ids_install -i silent-f PATH_TO_OPTIONS_FILE
Para os modos gráfico e de consola podemos pedir ao instalador que grave as nossas opções para um ficheiro que pode depois ser usado para efectuar instalações em modo silencioso. E isto requer uma chamada de atenção muito importante: A opção que permite gravar as opções em ficheiro é a opção -r e requer como argumento um caminho absoluto para um ficheiro. Um caminho relativo não funcionará, e não gera nenhum erro. Apenas ignora a opção. Não se esqueça disto. Aparentemente isto é uma limitação no produto com o qual foi construido o instalador. Trabalhar com caminhos de ficheiro absolutos não será um grande problema, mas o facto de não ser gerado nenhum erro caso se use um caminho relativo pode ser realmente irritante.

Para os métodos interactivos, seja modo gráfico ou em consola, ser-lhe-ão feitas algumas perguntas:
  1. Terá de aceitar a licença
  2. Se quer uma instalação "típica" ou "personalizada"
  3. Quais os componentes que quer instalar se escolheu "personalizada"
  4. O directório de instalação (usará o que está na variável INFORMIXDIR se estiver definida)
  5. Se quer configurar separação de funções (e caso queira, quais os respectivos grupos...)
  6. Se quer criar uma instância, e caso a resposta seja sim mais umas questões para a configurar (espaço, número de CPUVPs, tipo de instância - OLTP ou DSS -, número esperado de clientes e mais alguns)
Depois verifica o espaço livre e prossegue. Fácil e rápido como habitualmente...
Se escolher o modo de consola (-i console), e escolher a instalação "personalizada", terá de escolher quais os componentes a instalar. Em modo de texto, isto é feito após o instalador apresentar uma lista de todos os elementos que pode escolher. Note que esta lista poderá não caber no écran. Esteja preparado para ter de fazer um pouco de scroll back (portanto o seu programa de terminal deve ter alguma capacidade de guardar as últimas linhas).
Cada item e sub-item tem um número. Para o seleccionar (o que irá activar ou desactivar dependendo do estado actual), terá de incluir o seu número numa lista de números separada por vírgulas.
Isto é tão conveniente quanto possível num interface em modo de caracter. Quando tiver concluído a seleccção basta pedir-lhe que avance e pronto.

Outra opção para instalar o software é o modo silencioso (-i silent -f ficheiro). Esta forma de instalação é adequada a ambientes com muitas máquinas. Basta preparar o ficheiro de opções (ou criá-lo durante uma instalação), e depois re-utilizá-lo as vezes que se queira. Com um comando simples (./ids_install -i silent -f ficheiro) obter-se-á uma instalação semelhante em cada execução. Sem questões, sem respostas, sem demoras.
Pode criar-se uma versão personalizada do ficheiro de opções mudando três opções no ficheiro fornecido como exemplo (assumindo que se quer uma instalação personalizada, sem criação de instância e sem separação de funções). As entradas que é necessário modificar são:
  1. LICENSE_ACCEPTED=FALSE
    Isto tem de ser modificado para LICENSE_ACCEPTED=TRUE (o que pressupõe que leu e concordou com os termos da licença)
  2. #USER_INSTALL_DIR=/opt/ibm/informix/11.70
    Este deve der descomentado e modficado. Será o directório de instalação (INFORMIXDIR) para o produto
  3. CHOSEN_FEATURE_LIST=IDS,IDS-SVR,IDS-EXT,IDS-EXT-JAVA,IDS-EXT-OPT,IDS-EXT-CNV,IDS-EXT-XML,IDS-DEMO,IDS-ER,IDS-LOAD,IDS-LOAD-ONL,IDS-LOAD-DBL,IDS-LOAD-HPL,IDS-BAR,IDS-BAR-CHK,IDS-BAR-ONBAR,IDS-BAR-ISM,IDS-BAR-TSM,IDS-ADM,IDS-ADM-PERF,IDS-ADM-MON,IDS-ADM-ADT,IDS-ADM-IMPEXP,SDK,SDK-CPP,SDK-CPP-DEMO,SDK-ESQL,SDK-ESQL-DEMO,SDK-ESQL-ACM,SDK-LMI,SDK-ODBC,SDK-ODBC-DEMO,JDBC,GLS,GLS-WEURAM,GLS-EEUR,GLS-CHN,GLS-JPN,GLS-KOR,GLS-OTH
    Ok... Calculo que tenha adorado esta... Cada nome separado por vírgulas identifica um componente que pode ser escolhido para instalar. Se não quiser instalar um deles basta removê-lo desta lista. Alguns são fáceis de decifrar mas outros nem tanto. É por isso que é mais fácil seleccioná-los durante uma instalação interactiva (modo caracter ou gráfico) e gravar as escolhas num ficheiro com a opção -r

Existe ainda outra forma de instalação que pode não ser evidente na documentação (apesar de estar lá referida). Se tem trabalhado com Informix há alguns anos, talvez se recorde que era habitual ou possível instalar o software com o utilizador informix e depois correr um script como root (Unix e Linux). Em alguns ambientes, onde o uso de permissões de root é muito restrito, talvez queira utilizar este método. Pessoalmente é o meu favorito quando não tenho acesso a root. Este método está documentado como uma forma de "extrair" os ficheiros. A ideia é que possa extrair os ficheiros para um directório que será semelhante ao INFORMIDIR final, com a excepção que as permissões e titularidade dos ficheiros não está devidamente estabelecida. Esses ficheiros incluém um script chamado RUNasroot.installserver que terá de ser executado como root (tal como o nome indica). Este script fará todos os chown/chmod necessários para corrigir a titularidade e permsissões dos ficheiros. Pode copiar-se este directório completo (ou um arquivo do mesmo) para outras máquinas e correr o script mencionado para completar a instalação.
Isto é a chamada instalação legacy e pode ser feita executando o comando:

./ids_install -i swing|console -DLEGACY=TRUE

Se usar este método não se esqueça de correr o script RUNasroot.installserver. Se não o fizer o directório de instalação não será um INFORMIXDIR válido. Saliente-se que após a colocação inicial dos ficheiros num directório não será mais necessário espaço temporário para a instalação.


Fazendo um resumo:
  • Tudo é instalado com o comando:
    ids_install
  • Pode fazer-se uma instalação em consola (-i console), em modo gráfico (-i swing) ou em modo silencioso (-i silent)
  • Pode gravar-se um ficheiro de opções durante a instalação em consola ou modo gráfico usando a opção -r (caminho absoluto). Pode depois re-utilizar-se o ficheiro em instalações silenciosas com a opção -f (caminho absoluto ou relativo)
  • O directório de instalação é /tmp ou a directoria base do utilizador que instala mas pode (deve-se?) sobrepor definindo a variável IATEMPDIR (precisa de cerca de 1GB)
  • Pode descompactar-se os ficheiros ou instalar com um utilizador não root usando a opção
    -DLEGACY=TRUE
    Depois disto é necessário correr o script RUNasroot.installserver com o utilizador root para completar a instalação (este passo está documentado, mas o instalador não o irá lembrar disso...)

Não tive problemas com o instalador e até agora, todos os problemas que vi referenciados resultaram de tentativas de instalação em plataformas não suportadas. Nestes casos, mesmo que o instalador funcionasse o mais provável era existirem problemas com o produto propriamente dito.

Espero que desta vez as pessoas fiquem satisfeitas com o processo de instalação. Existem várias opções dependendo das suas necessidades. É fácil para recém chegados ao Informix e os utilizadores mais experientes podem sempre usar a opção -DLEGACY=TRUE.

Se precisar de ordenar ideias, podemos estabelecer uma espécie de matriz entre os métodos de instalação e as condições do ambiente:
  • Modo silencioso (-i silent)
    Se tiver um grande número de máquinas e quiser instalar sempre da mesma forma em todas. Requer privilégios de root, mas pode facilmente ser executada pelos administradores de sistema desde que lhes forneça o ficheiro de opções
  • Modo de consola (-i console)
    Se não tiver um ambiente gráfico disponível ou simplesmente se preferir um ambiente de texto
    Pode ser utilizado por root ou por informix. Se executar como informix necessita que o root corra o RUNasroot.installserver
  • Modo gráfico (-i swing)
    Se é novo no Informix esta é a forma ideal. Tal como o anterior pode ser usado como informix ou como root.
  • -DLEGACY=TRUE
    Esta opção pode ser usada em conjunto com os modos gráfico e de consola se não estiver a correr como root.
    Pode usar este formato para instalar o software (requer execução do RUNasroot.installserver) ou simplesmente para criar uma imagem do INFORMIXDIR, que poderá depois ser copiada (cópia simples de SO) para outrous sistemas onde apenas seria necessário executar o RUNasroot.installserver
Este artigo não cobre a instalação de outros produtos fornecidos com a versão 11.70 do Informix como sejam o Optim Development Studio ou o IBM Mashup Center. Espero poder falar disto em artigos seguintes.

Friday, July 13, 2012

Informix Roadshow 2011 Lisboa

This article is written only in Portuguese due to it's local nature
Este artigo só está escrito em Português dada a natureza local

Versão Portuguesa:

A IBM vai realizar o Informix Roadshow 2011 no dia 3 de Maio, no IBM Fórum Lisboa (instalações da IBM no Parque das Nações).
Será meio dia dedicado às últimas novidades da família Informix. Em particular:

  • Funcionalidades da versão 11.7 (Panther)
  • Informix Warehouse Accelerator
  • Informix Genero
Comemoram-se este ano os primeiros 10 anos após a aquisição da Informix, pelo que será apresentado um balanço desta década e lançamento das bases para a próxima
As sessões contarão com oradores nacionais e internacionais. Haverá tempo para questões e interação entre clientes, parceiros e equipa IBM.
Não deixe se comparecer e se não receber convite nos próximos dias não deixe de contactar a IBM ou a mim pessoalmente.
No final das sessões será proporcionado um almoço onde terá toda a equipa IBM e oradores à sua disposição para qualquer esclarecimento adicional.
O convite é extensível a todos os que não sendo clientes ou parceiros desejem conhecer melhor uma base de dados fiável, robusta, rápida, moderna, extensível e especialmente adaptada para ambientes "embebidos".

Finalmente, mantenha-se atento a este espaço para obter informação mais detalhada sobre a agenda.

Monday, July 2, 2012

Panther: Instance schema / Schema da instância

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

English version:
This time I'll cover a little but helpful improvement in the dbschema utility. dbschema is the fastest way we have to extract DDL statements about our databases and tables. We can get the full database schema, or just for a table, view, synonym etc. It can also provide all the privileges of objects in the database.

Version 11.7 (Panther) introduces an extension to this tool. We can now obtain the following information at the instance level:

  • Allocated space (dbspaces, chunks...)
  • Location and size of the physical log
  • Location and size of the logical logs
This information was easily available either as the output of onstat commands or by querying the sysmaster database. But then you would need to construct the statements to allocate them. Also note that this could be done by using shell command line interface (onspaces utility) or (since version 11.10) by using the SQL Admin API.

So, now in version 11.7 you can obtain all this info in a ready to use format by running dbschema utility with the new option "-c". By default it will generate SQL statements you can use through the SQL Admin API. But if you also use the "-ns" option (no SQL) it will generate the operating system utilities syntax. Let's see an example of each. I will crop the output so that it does not become too long.


panther@pacman.onlinedomus.net:fnunes-> dbschema -c -q

-- Dbspace 1 -- Chunk 1
-- EXECUTE FUNCTION TASK
('create dbspace', 'rootdbs', 'rootdbs.c1', '250000', '0', '2', '500', '500');

-- Dbspace 2 -- Chunk 2
EXECUTE FUNCTION TASK
('create tempdbspace', 'dbtemp1', 'dbtemp1.c1', '100000', '0', '2', '100', '100');

-- Dbspace 3 -- Chunk 3
EXECUTE FUNCTION TASK
('create sbspace', 'sbs1', 'sbs1.c1', '20000', '0');

-- Dbspace 4 -- Chunk 4
EXECUTE FUNCTION TASK
('create dbspace', 'dbs1', 'dbs1.c1', '250000', '0', '2', '100', '200');

-- Physical Log
EXECUTE FUNCTION TASK
('alter plog', 'rootdbs', '50000');

-- Store pre-existing logical logs information before create new logical logs
DATABASE sysadmin;
CREATE TABLE llog (log smallint, flags smallint);
INSERT INTO llog SELECT number, flags FROM sysmaster:syslogfil;

-- Logical Log 1
EXECUTE FUNCTION TASK
('add log', 'rootdbs', '10000');

-- Logical Log 2
EXECUTE FUNCTION TASK
('add log', 'rootdbs', '10000');

-- [ CUTTED TEXT.... ]
-- [... more logical logs here... ]

-- Logical Log 10
EXECUTE FUNCTION TASK
('add log', 'rootdbs', '10000');

-- Drop all pre-existing logical logs
EXECUTE FUNCTION TASK
('checkpoint');

SELECT TASK ('drop log', log) FROM sysadmin:llog
WHERE sysmaster:bitval(flags,'0x02')==0;

EXECUTE FUNCTION TASK
('checkpoint');

SELECT TASK('onmode', 'l') FROM sysmaster:syslogfil
WHERE chunk = 1 AND sysmaster:bitval(flags,'0x02')>0;

EXECUTE FUNCTION TASK
('checkpoint');

SELECT TASK ('drop log', log) FROM sysadmin:llog
WHERE sysmaster:bitval(flags,'0x02')==1;

DROP TABLE sysadmin:llog;


And now with the -ns option:


panther@pacman.onlinedomus.net:fnunes-> dbschema -c -q -ns
# Dbspace 1 -- Chunk 1
# onspaces -c -d rootdbs -k 2 -p rootdbs.c1 -o 0 -s 250000 -ef 500 -en 500

# Dbspace 2 -- Chunk 2
onspaces -c -d dbtemp1 -k 2 -t -p dbtemp1.c1 -o 0 -s 100000

# Dbspace 3 -- Chunk 3
onspaces -c -S sbs1 -p sbs1.c1 -o 0 -s 20000 -Ms 348

# Dbspace 4 -- Chunk 4
onspaces -c -d dbs1 -k 2 -p dbs1.c1 -o 0 -s 250000 -ef 100 -en 200

# Physical Log
onparams -p -s 50000 -d rootdbs -y

# Store pre-existing logical logs information before create new logical logs
dbaccess sysadmin << END
CREATE TABLE llog (log smallint, flags smallint);
INSERT INTO llog SELECT number, flags FROM sysmaster:syslogfil;
END

# Logical Log 1
onparams -a -d rootdbs -s 10000

# Logical Log 2
onparams -a -d rootdbs -s 10000

## CUTTED TEXT HERE
## ... More logical logs...

# Logical Log 10
onparams -a -d rootdbs -s 10000

# Drop all pre-existing logical logs
onmode -c

dbaccess sysadmin << END
SELECT TASK ('drop log', log) FROM sysadmin:llog
WHERE sysmaster:bitval(flags,'0x02')==0;
END

onmode -c

dbaccess sysadmin << END
SELECT TASK('onmode', 'l') FROM sysmaster:syslogfil
WHERE chunk = 1 AND sysmaster:bitval(flags,'0x02')>0;
END

onmode -c

dbaccess sysadmin << END
SELECT TASK ('drop log', log) FROM sysadmin:llog
WHERE sysmaster:bitval(flags,'0x02')==1;

DROP TABLE sysadmin:llog;
END

This is useful if you want to keep your instance layout for recovery purposes or if you want to recreate a similar instance layout on your test or quality environments.
Just one thing to note. The generated instructions include the statements to create the root dbspace. And as we know, this is created during instance initialization. That chunk instruction should be removed from the scripts but it's important for documentation purposes.

Versão Portuguesa:

Desta vez vou abordar uma pequena mas útil melhoria no utilitário dbschema. dbschema é a forma mais rápida de extrair instruções DDL sobre as nossas bases de dados e tabelas. Podemos obter o esquema completo da base de dados ou apenas de uma tabela, view, sinónimo etc. Pode também fornecer todos os privilégios dos objectos na base de dados.

A versão 11.7 (Panther) introduz uma extensão a esta ferramenta. Podemos agora obter a seguinte informação ao nível da instância:

  • Espaço alocado (dbspaces, chunks...)
  • Localização e tamanho do physical log
  • Localização e tamanho dos logical logs
Esta informação já estava disponível facilmente quer como resultado da execução do comando onstat ou através de queries na base de dados sysmaster. Mas depois tinham de ser criados os comandos para alocar/definir os referidos objectos. Note-se ainda que isto poderia ser feito através de utilitários na shell (utilitário onspaces) ou (desde a versão 11.10) através da SQL Admin API.

Agora, na versão 11.7, podemos obter esta informação num formato "pronto a usar" correndo o utilitário dbschema com a opção "-c". Por pré-definição irá gerar as instruções SQL que pode usar através da SQL Admin API. Mas pode também usar a opção "-ns" (no SQL) para que seja gerada a sintaxe utilizando os utilitários a correr no sistema operativo. Vejamos um exemplo de cada. Irei cortar o output para que não se torne demasiado longo.

panther@pacman.onlinedomus.net:fnunes-> dbschema -c -q

-- Dbspace 1 -- Chunk 1
-- EXECUTE FUNCTION TASK
('create dbspace', 'rootdbs', 'rootdbs.c1', '250000', '0', '2', '500', '500');

-- Dbspace 2 -- Chunk 2
EXECUTE FUNCTION TASK
('create tempdbspace', 'dbtemp1', 'dbtemp1.c1', '100000', '0', '2', '100', '100');

-- Dbspace 3 -- Chunk 3
EXECUTE FUNCTION TASK
('create sbspace', 'sbs1', 'sbs1.c1', '20000', '0');

-- Dbspace 4 -- Chunk 4
EXECUTE FUNCTION TASK
('create dbspace', 'dbs1', 'dbs1.c1', '250000', '0', '2', '100', '200');

-- Physical Log
EXECUTE FUNCTION TASK
('alter plog', 'rootdbs', '50000');

-- Store pre-existing logical logs information before create new logical logs
DATABASE sysadmin;
CREATE TABLE llog (log smallint, flags smallint);
INSERT INTO llog SELECT number, flags FROM sysmaster:syslogfil;

-- Logical Log 1
EXECUTE FUNCTION TASK
('add log', 'rootdbs', '10000');

-- Logical Log 2
EXECUTE FUNCTION TASK
('add log', 'rootdbs', '10000');

-- [ CUTTED TEXT.... ]
-- [... more logical logs here... ]

-- Logical Log 10
EXECUTE FUNCTION TASK
('add log', 'rootdbs', '10000');

-- Drop all pre-existing logical logs
EXECUTE FUNCTION TASK
('checkpoint');

SELECT TASK ('drop log', log) FROM sysadmin:llog
WHERE sysmaster:bitval(flags,'0x02')==0;

EXECUTE FUNCTION TASK
('checkpoint');

SELECT TASK('onmode', 'l') FROM sysmaster:syslogfil
WHERE chunk = 1 AND sysmaster:bitval(flags,'0x02')>0;

EXECUTE FUNCTION TASK
('checkpoint');

SELECT TASK ('drop log', log) FROM sysadmin:llog
WHERE sysmaster:bitval(flags,'0x02')==1;

DROP TABLE sysadmin:llog;


E agora usando a opção -ns:


panther@pacman.onlinedomus.net:fnunes-> dbschema -c -q -ns
# Dbspace 1 -- Chunk 1
# onspaces -c -d rootdbs -k 2 -p rootdbs.c1 -o 0 -s 250000 -ef 500 -en 500

# Dbspace 2 -- Chunk 2
onspaces -c -d dbtemp1 -k 2 -t -p dbtemp1.c1 -o 0 -s 100000

# Dbspace 3 -- Chunk 3
onspaces -c -S sbs1 -p sbs1.c1 -o 0 -s 20000 -Ms 348

# Dbspace 4 -- Chunk 4
onspaces -c -d dbs1 -k 2 -p dbs1.c1 -o 0 -s 250000 -ef 100 -en 200

# Physical Log
onparams -p -s 50000 -d rootdbs -y

# Store pre-existing logical logs information before create new logical logs
dbaccess sysadmin << END
CREATE TABLE llog (log smallint, flags smallint);
INSERT INTO llog SELECT number, flags FROM sysmaster:syslogfil;
END

# Logical Log 1
onparams -a -d rootdbs -s 10000

# Logical Log 2
onparams -a -d rootdbs -s 10000

## CUTTED TEXT HERE
## ... More logical logs...

# Logical Log 10
onparams -a -d rootdbs -s 10000

# Drop all pre-existing logical logs
onmode -c

dbaccess sysadmin << END
SELECT TASK ('drop log', log) FROM sysadmin:llog
WHERE sysmaster:bitval(flags,'0x02')==0;
END

onmode -c

dbaccess sysadmin << END
SELECT TASK('onmode', 'l') FROM sysmaster:syslogfil
WHERE chunk = 1 AND sysmaster:bitval(flags,'0x02')>0;
END

onmode -c

dbaccess sysadmin << END
SELECT TASK ('drop log', log) FROM sysadmin:llog
WHERE sysmaster:bitval(flags,'0x02')==1;

DROP TABLE sysadmin:llog;
END

Isto é útil se quiser manter um "esqueleto" da sua instância para propósitos de recuperação ou se quiser recriar uma estrutura semelhante nas suas instâncias de teste ou qualidade.
Há que notar um detalhe. As instruções geradas incluém código para criar o root dbspace. E como nós sabemos, este é criado durante a inicialização da instância. Assim, a instrução referente a esse chunk deverá ser removida dos scripts. No entanto a sua existência é importante para efeitos de documentação.

Monday, May 9, 2011

IIUG 2011: Last call / Ultima chamada

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

English version:

The 2011 International Informix User Group conference is just around the corner. It will take place in Lenexa, Kansas City between 15 and 18 May. The conference site has all the information you may need. This includes the sessions abstracts, the list of tutorials, hotel and transportation information etc.

And what a great conference this will be. Remember that we have Informix 11.7, Informix Warehouse Accelerator and the Genero partnership with 4Js.
And then you have all the permanent/usual attractions, like deep technical sessions, keynote speakers, the Sunday tutorials etc. Some of my personal favorites this year would be:
  • Sunday tutorials (Flexible grid, Fastest Informix DBA, Partitioning, Certification preparation)
  • Keynote speakers (Jerry Keesee - Director of Informix Database Development, Rob Thomas - Vice President of Business Development, Arvind Krishna - General Manager IBM Information Management) including this year's special with Dr. David Ferrucci the lead researcher and Principal Investigator (PI) for the Watson/Jeopardy! project
    These are great opportunities to understand IBM plans and to ask the difficult questions
  • Several sessions on specific topics like Informix 11.7, Informix Warehouse Accelerator, Performance and Tunning, integrating Informix with other products
  • Free certification opportunity
  • Networking with many people from the Informix community
  • Evening specials... Great fun to trigger networking
As I observed in last year's conference, the IIUG team does everything possible to provide you the best value for money. And they, together with all the people delivering sessions in the conference, really manage to provide great sessions, great tutorials and great entertainment.

If you never had the opportunity to go to one of the IIUG's conferences you really don't know what you're missing. If you had, you know it's worth it. Unfortunately this year I won't be able to join, but I'm eagerly waiting for feedback from the community and to check the presentation materials. To all the lucky attendees I wish you a great conference, and please blog/email about it!

Versão Portuguesa:

A conferência de 2011 do grupo internacional de utilizadores de Informix está quase a acontecer. Terá lugar em Lenexas, Kansas City entre 15 e 18 de Maio. O site da conferência tem toda a informação possível. Isto incluí as sinapses das sessões, a lista de tutorials, informação sobre o hotel e transportes etc.

E tudo indica que esta será uma grande conferência. Lembremo-nos que temos a versão 11.7 do Informix, o Informix Warehouse Accelerator e a parceria Genero com a 4JS.
Para além disso teremos as atracções habituais, como sessões muito técnicas, os oradores especiais, os tutorials de domingo etc. Alguns dos meus favoritos detes ano seriam:

  • Tutorials de domingo (Flexible grid, Fastest Informix DBA, Partitioning, Preparação para certificação)
  • Oradores especiais (Jerry Keesee - Director de Informix Database Development, Rob Thomas - Vice Presidente de desenvolvimento de negócio, Arvind Krishna - General Manager IBM Information Management) incluindo uma participação especial do Dr. David Ferrucci - lead researcher and Principal Investigator (PI) para o projecto Watson/Jeopardy!
    São grandes oportunidades para entender os planos da IBM e para colocar as questões difíceis
  • Várias sessões sobre tópicos específicos como Informix 11.7, Informix Warehouse Accelerator, Performance e optimização, integração de Informix com outros produtos
  • Oportunidade para obter a certificação gratuitamente
  • Convivio com imensas pessoas da comunidade Informix
  • Animação nocturna... Muito divertimento para proporcionar o convivio e interacção entre os participantes
Como pude observar na conferência do ano passado, a equipa do IIUG faz tudo o possível para proporcionar o melhor retorno do investimento. E eles, juntamente com quem apresenta as sessões, conseguem realmente providenciar óptimas sessões, excelentes tutorials e muito entretenimento.

Se nunca teve a oportunidade de participar numa das conferências do IIUG então não sabe o que perde. Se já teve, então sabe que valem a pena. Infelizmente este ano não me vai ser possível participar, mas fico ansioso pelo feedback da comunidade e para espreitar as apresentações quando estiverem disponíveis. A todos os felizardos que vão assistir á conferência, desejo um excelente evento, e por favor bloguem ou contem na lista de mail como está a ser.

Sunday, October 31, 2010

Panther: EXISTS or NOT EXISTS

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

English version:

I'll continue with the quick and easy posts about Panther (v11.70). This time I'll focus on some new SQL that was added in Panther. Most (if not all) CREATE and DROP statements now allow for IF NOT EXISTS and IF EXISTS clauses respectively. These clauses allow us to write CREATE/DROP statements that will not raise errors in case the objects already exist and we're trying to create them, or when they don't exist and we're trying to drop them.
As an example:


panther@pacman.onlinedomus.net:fnunes-> onstat -

IBM Informix Dynamic Server Version 11.70.UC1 -- On-Line -- Up 00:03:17 -- 369588 Kbytes

panther@pacman.onlinedomus.net:fnunes-> dbaccess stores -

Database selected.

> DROP TABLE test;

206: The specified table (test) is not in the database.

111: ISAM error: no record found.
Error in line 1
Near character position 15
> DROP TABLE IF EXISTS test;
>

These two clauses can be used for TABLE, PROCEDURE, FUNCTION, DATABASE, INDEX, ROLE etc. (both for create and drop).
This can be used in scripts to prevent that they abort prematurely. Also interesting is the fact that this syntax can be found on mySQL. So it's easier now to port existing code into Informix.



Versão Portuguesa:

Vou continuar com os artigos rápidos e fáceis sobre a versão 11.70 (Panther). Desta vez vou abordar uma mudança no SQL que foi adicionada ao Panther. A maior parte (se não todas) as instruções CREATE e DROP suportam agora as cláusulas IF NOT EXISTS e IF EXISTS respectivamente. Estas cláusulas permitem-nos escrever instruções CREATE/DROP que não geram erros caso os objectos já existam e os estejamos a tentar criar, ou quando não existem e os estamos a tentar eliminar.
Como exemplo:


panther@pacman.onlinedomus.net:fnunes-> onstat -

IBM Informix Dynamic Server Version 11.70.UC1 -- On-Line -- Up 00:03:17 -- 369588 Kbytes

panther@pacman.onlinedomus.net:fnunes-> dbaccess stores -

Database selected.

> DROP TABLE test;

206: The specified table (test) is not in the database.

111: ISAM error: no record found.
Error in line 1
Near character position 15
> DROP TABLE IF EXISTS test;
>

Estas duas cláusulas podem ser usadas para TABLE, PROCEDURE, FUNCTION, DATABASE, INDEX, ROLE etc. (tanto para o CREATE como para o DROP).
Isto pode ser usado em scripts para evitar que abortem prematuramente. Também é interessante o facto de que esta sintaxe pode ser encontrada no mySQL. Portanto será agora mais fácil portar código existente para Informix

Wednesday, October 13, 2010

Panther: The beginning / Panther: O início

This article is written in English and Portuguese
Este artigo está escrito em Ingês e Português

English version:

Around 2007, after IBM launched the version 11.10 (Cheetah), I wrote a series of articles focusing on several new features. I called it "Chetah spot by spot: ...". I wanted to do the same for Panther, but I have a big problem: What is a Panther? Does it have spots?! Kate Tomchik (IIUG board member), asked about this in Jerry Keesee's (Informix development director) Facebook profile... For me a Panther is a black variant of several animals (leopard, jaguar and possibly a mountain lion or cougar). So, although it may have spots, they're not very visible... So, in short, I don't have a nice title for these articles... it's a shame, but I think we can all live with that :)
So, I took a look at the Panther release notes and looked at the new features... Too many! Too good. Since this is the first article, I'll try to group them (giving some highlights) following my personal view:

  • Embeddability
    This version is the best Informix version ever in terms of ability to embed it into some controlled environment. Some features that contribute to this are: better install, several capabilities for cloning and deploying instances, more autonomic features, improved ability to control it in a programmable way (alarm codes, oninit return codes), storage provisioning etc.
  • Grid
    Imagine you have a large number of instances. And you need to run something in all of them (or a subset). How do you do it? With scripts.... Yes... I've done it... But now you can do it with "grid functionality". You just define the grid nodes (add/delete) and then you connect to the grid, run you SQL, and voilá.... This requires a lot more explanation, but it's that simple.
  • Performance
    As always, a new version is expected to run faster than it's predecessors. This can be done with code improvements and new features. Panther has both. To list a few, it has several Informix XPS features that were ported into Dynamic Server like XPS api (faster tables and indexes access times), Index Skip Scan, Multi Index Scan, improved light scans, push down hash joins (or Star joins), and a few others like Forest of Trees Indexes (FOT), DLL preload, improved name service connection time (NS_CACHE) etc.
  • Warehousing
    Well... I named a few in the performance group. But there are others, like fragment level statistics, more fragmentation schemes (interval, list), online fragment attach/detach for interval fragmentation scheme
  • Security
    This is one of my favorites... Users don't need to be recognized by the OS anymore, trusted context was ported from DB2 (change the authentication inside an already established session - perfect for application servers, and hopefully in the future for 4GL web services), and finally the ability to audit only specific tables (when using the RDRW, INRW, DLRW and UPRW mnemonics). This last one was the Achilles' heel of the Informix auditing facility
  • Others
    It's weird to group such nice features into an "others" category, but I'll do it anyway for simplification: End of extent limit, online table reorg, WebSphere MQ datablade enhancements, OAT enhancements (too match all the relevant new features), DDL support for "CREATE/DROP ... IF [NOT] EXISTS", DDL on secondary nodes, Enterprise Replication without primary key, connection manager improvements, SPL debugging, Optim Development Studio and IBM Mashup Center 2.0 included, etc.
The next article will focus on the installation process. After that I'll proceed with several other features. Don't expect a specific order. I thought about going for the more important features first, but then I realized that there are excellent features in totally different areas. What can be fundamental to some people may as well be nearly useless to others... So, the order will not reflect the feature importance.


Versão Portuguesa:

Em 2007, após a IBM ter lançado a versão 11.10 (Cheetah), eu escrevi uma série de artigos que focavam várias funcionalidades novas. Na altura, só em Inglês, chamei-lhes "Chetah spot by spot: ..." que se poderiam traduzir por "Cheetah, mancha por mancha". Queria fazer algo semelhante para a nova versão com o nome de código "Panther" ou pantera mas deparei-me com um problema: O que é uma pantera? Tem manchas? A Kate Tomchik, perguntou sobre isto no profile do Jerry Keesee (director de desenvolvimento do Informix) no Facebook... Para mim, uma pantera é uma variante negra de vários animais (leopardo, jaguar e possivelmente leão da montanha ou puma). Portanto, embora possa ter manchas serão pouco visíveis.... Em resumo, não tenho um título sonante para estes artigos... é uma pena, mas penso que conseguimos viver sem isso :)

Continuando, dei uma vista de olhos nas release notes do Panther à procura das novas funcionalidades... Muitas e muito boas. Sendo este o primeiro artigo, vou tentar agrupá-las (salientando algumas) seguindo a minha visão pessoal:

  • Embeddability
    Esta é a melhor versão Informix de sempre em termos de capacidade de embeber a base de dados num ambiente controlado. Algumas funcionalidades contribuem para isto: Melhor instalação, várias formas de clonar e "implantar" instâncias, mais funcionalidades autonomicas, melhoria nas possibilidades de controlar as instâncias de forma programática (códigos de alarme, códigos de retorno do oninit), aprovisionamento de espaço etc.
  • Grid
    Imagine que tem um grande número de instâncias. E que necessita executar algo em todas elas (ou numa parte). Como é que o faz? Com scripts... sim... já o fiz... Mas agora pode fazê-lo com a funcionalidade "grid". Só tem de definir os nós do grid (adicionar/remover) e depois conectar-se à grid correr o SQL e voilá.... Isto requer muito mais explicações, mas é assim tão simples...
  • Desempenho
    Como sempre, espera-se que uma nova versão seja mais rápida que as anteriores. Isto pode ser feito com melhorias no código ou novas funcionalidades. O Panther tem ambas. Só para listar algumas, tem várias funcionalidades que foram portadas do Informix XPS para o Dynamic Server como a XPS api (melhores tempos de acesso a tabelas e indíces), Index Skip Scan, Multi Index Scan, melhoria nos light scans, push down hash joins (ou Star Joins) e mais algumas como indíces Forest Of Trees (FOT), pré-carregamento de DLLs, melhores tempos do serviço de nomes (NS_CACHE) etc.
  • Warehousing
    Bom.... Já mencionei algumas no grupo de desempenho. Mas existem outras, como estatisticas ao nível dos fragmentos (ou partições), mais formas de framentação/particionamento (intervalo, lista), attach/detach de fragmentos online para tabelas particionadas por intervalo
  • Segurança
    Este é um dos meus favoritos.... Os utilizadores já não necessitam de ser reconhecidos pelo sistema operativo (note-se que a autenticação já podia ser feita externamente, mas os utilizadores tinham de ter a sua identidade - uid, home dir, group etc. - conhecido pelo SO), trusted context foi portado do DB2 (mudar a autenticação dentro de uma conexão já estabelecida - perfeito para servidores aplicacionais, e esperemos no futuro para os web services em 4GL), e finalmente a possibilidade de auditar tabelas específicas (quando se quer usar as menemónicas RDRW, INRW, DLRW e UPRW). Esta última era o calcanhar de Aquiles do sistema de auditing do Informix
  • Outros
    É estranho agrupar estas funcionalidades tão interessantes numa categoria "Outros" mas faço-o para simplificar: Fim do limite de extents, reorganização (junção de extents) de tabelas online, melhorias no datablade WebSphere MQ, melhorias no Open Admin Tool (para acompanhar as novas funcionalidades do motor), suporte para a sintaxe "CREATE/DROP ... IF [NOT] EXISTS", DDL nos nós secundários, Enterprise Replication sem chave primária, melhorias no connection manager, depuramento de stored procedures SPL, Optim Development Studio e IBM Mashup Center 2.0 incluído etc.

O próximo artigo focará o processo de instalação. Depois prosseguirei com várias outras funcionalidades. Não espere uma ordem específica. Pensei em abordar primeiro as funcionalidades mais importantes, mas depois tomei consciência que há excelentes novidades em áreas completamente distintas. O que pode ser fundamental para um cliente pode ser praticamente inútil para outro. Assim a ordem não reflectirá a importância das funcionalidades

Tuesday, October 12, 2010

Panther is out / Panther está disponível

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

English version:

The new release of Informix (v11.70) is out and available on Passport Advantage. The announcement letter is here:

http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?subtype=ca&infotype=an&appname=iSource&supplier=877&letternum=ENUSZP10-0472

Later I'll focus on the new features. For now you can read the announcement letter and check it on PA.

Versão Portuguesa:

A nova versão do Informix (v11.70) foi anunciada e está disponível no Passport Advantage. O anúncio oficial está aqui:

http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?subtype=ca&infotype=an&appname=iSource&supplier=877&letternum=ENUSZP10-0472

Mais tarde irei abordar as novas funcionalidades. Por agora pode ler o anúncio e aceder ao produto no PA

Wednesday, October 6, 2010

Happy birthday... / Feliz aniversário

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

English version:

I'm really not very good with dates. I keep forgetting them. Today I was reviewing some of the blog links and structure, and one date poped up: September 26 of 2006. Around four years ago I made the first post in this blog. During these four years I believe I've made some interesting posts here (apologies for the lack od modesty), and judging by some feedback I have received some of this posts were important for my readers. That's the best reward I could get.
On that first post I explained some of the reasons why I was creating a blog. And these were:

  1. The only blog I've found about Informix seems empty
  2. I've been involved with Informix technology for several years and I think the Informix community although enthusiastic is a bit invisible
  3. I have some subjects about which I'd like to write a bit...
It's with great pleasure that I see that 1) and 2) aren't valid anymore. As you can see from the lists of links on the right side, we have a healthy blog community. We also have a strong international user group, and new user groups are appearing around the world (China, Adria, Brazil...)

One thing has not changed: I still have some subjects about which I'd like to write a bit. History is a funny thing and tends to repeat itself. Around 2006 we were preparing Cheetah which was released in 2007. Then came Cheetah 2 (2008). We're now waiting for Panther.

So I hope you enjoy the links/blogs revision and stay tuned for upcoming articles. Let's hope I have the time for everything I want to publish

Versão Portuguesa:

Não sou nada bom com datas. É habitual esquecer-me dos aniversários dos amigos (e até mesmo do meu!). Hoje estava a rever a lista de links e blogs e uma data saltou-me à vista: 26 de Setembro de 2006. Há cerca de quatro anos atrás eu coloquei o primeiro artigo neste blog. Durante estes quatro anos escrevi alguns artigos interessantes (modéstia à parte) e a julgar por algumas reacções que recebi, alguns desses artigos foram importantes para os meus leitores. Essa é a melhor recompensa que poderia ter.

Nesse primeiro artigo eu indiquei as razões porque estava a criar um blog. E estas eram:

  1. O único blog que encontrei sobre Informix parecia vazio
  2. Estava envolvido com a tecnologia Informix há já vários anos e parecia-me que a comunidade Informix, apesar de entusiasta, parecia invisível.
  3. Tinha vários assuntos sobre os quais queria escrever...
É com grande prazer que vejo que 1) e 2) já não são válidos. Como se pode ver pela lista de à direita, temos uma comunidade de blogs bastante saudável. Também temos um grupo internacional de utilizadores forte, e novos grupos locais têm aparecido (China, Adria, Brasil...)

Algo que não mudou: Ainda tenho vários assuntos sobre os quais desejo escrever. A história costuma repetir-se. Por volta de 2006 estávamos a preparar a versão Cheetah que foi lançada em 2007. Depois veio a Cheetah 2 (2008). Agora estamos à espera do Panther.

Assim, espero que aprecie a revisão dos links/blogs e mantenha-se alerta aos próximos artigos. Espero que tenha tempo suficiente para tudo o que pretendo publicar.

Wednesday, April 28, 2010

IIUG 2010 conference: 3rd and last day

Well, all good things must come to an end, and the 2010 IIUG conference is no exception.
This last day started with a Q&A sessions with some IBM executives and we heard about how they plan to face the challenges ahead. Right after that I skipped the regular sessions and went to one off track session I was anxiously waiting: The Panther session. Kevin Brown talked about all the new stuff and it's really amazing. From small but crucial to big new features we got a clear view of what's coming. Unfortunately everyone present there has to comply with a non-disclosure agreement (NDA) so I can't really talk about it... What I can say is that it's great!!! But, if you didn't have the chance to be there it does not mean you can't find more about it. You just have to join the Panther beta program. Madhuri Ahuja, the Customer Validation Manager will surely welcome you and lead you through the process.

In the afternoon I was present in two sessions. First one, presented by Hyun-Ju Veja, was about the use of SQLTRACE and OAT. Hyun-Ju works in the advanced problem diagnostic (APD) team, and she based her presentation on a real case scenario, which is always great. SQLTRACE is a real powerful and flexible (specially on latest versions) feature and Open Admin Tool (OAT) makes it very easy to use.
The second session was a must... Darin Tracy, also from APD talked about the ins and outs of the checkpoints specifically in a MACH-11 environment... The added benefit was the presence of Madison Pruet, the replication architect in the room, so things got really deep. I would say this was one of the most useful sessions in the conference, and it's always nice when you face the truth: we usually know less than what we think, meaning some things we assume can be wrong.

Not related with today, there are also some other news. First, I'd like to point out that IIUG got a new area in their website. If you go to http://www.iiug.org/opensource you'll see that there's a big movement in the Informix community related to open source. You can find there some new stuff that can allow some of your favorite open source projects to work with your favorite database. Even better, this is clearly not a work done, but instead it's a work in progress. Feel free to participate either by helping, or simply by saying what open source applications you would like to use with Informix. To start with, you can check a beta version of some changes to Hibernate and MediaWiki. Hibernate is used by many people and it was known to have some issues with Informix. Hopefully they're all solved in this fix, and it will be submitted to the project.
MediaWiki needs no explanations besides saying that it's the software that runs Wikipedia.
To end the post I just want to thank all the IIUG board and all the people who worked to get the conference up and running, specially because the current times are not easy times, with all the economical problems etc. We were told that 22 countries were present in the event. USA was big as expected, a lot of people from south America (the Brazilian crew was enough to make a soccer team, and apparently they did :) ), several European countries like Portugal, Spain, UK, Germany, Czech Republic (hope I got this right), one person from Cameroon, others from Russia (speaking of which Tatiana Saltykova got the lead again in Advanced Data Tools Fastest Informix DBA Contest III - congratulations), and one person from Malasya (again, hope I got this right)