tag:blogger.com,1999:blog-43501499781987284082024-03-04T22:36:19.027-08:00Ask PontesProver Informações sobre banco de dados InformixAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.comBlogger34125tag:blogger.com,1999:blog-4350149978198728408.post-85371006845530330352017-04-28T04:16:00.001-07:002017-04-28T04:16:03.370-07:00Parceria Estratégica IBM + HCL<br />Boas novas, a IBM e a HCL estabelecaram uma parceria estratégica para desenvolver e comercializar o produtos Informix.<br /><br />Nada muda para os clientes atuais, a IBM permanece como primeiro ponto de contato para qualquer interação com os clientes.<br /><br />Esta não é a primeira vez que a IBM e a HCL iniciam uma cooperação
deste tipo. No ano passado o mesmo se passou com alguns produtos Rational.<br /><br />O anúncio foi feito por Dan Hernanzed, <i>VP Offering Management Analytics, </i>este está disponível no <a href="https://ibmdatamanagement.co/2017/04/18/ibm-and-hcl-strategic-partnership-to-jointly-develop-and-market-ibm-informix/" target="_blank">IBM Data Management Blog</a> e <a href="http://www.iiug.org/en/2017/04/17/ibm-and-hcl-strategic-partnership-to-jointly-develop-and-market-ibm-informix/" target="_blank">IIUG.</a>Ask Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-47315026320001769622016-12-08T11:59:00.000-08:002016-12-08T11:59:52.492-08:00Informix 12.10.xC8 !!O release 12.10.xC8 foi liberado, segue abaixo a lista de funcionalidades:<br />
<br />
<br />
<ul>
<li>Migração</li>
<ul>
<li class="li">Mudanças no servidor que afetam a migração<br />Introdução de um novo parâmetro do $ONCONFIG (DISK_ENCRYPYION)<br />Introdução de uma nova variável de sessão (USE_SHARDING)<br />Introdução de uma nova variável de ambiente (IFX_LO_READONLY)<br />Este <i>fixpack</i> força mudanças na estrutura interna. Para voltar atrás será necessário efetuar uma reversão (onmode -b)</li>
</ul>
<li>Administração</li>
<ul>
<li>Ver e re-executar comandos do DBAccess<br />O
dbaccess tem agora uma opção (-history) que pode ser usada em modo
direto (sem menus). Esta opção faz com que os comandos executados sejam
numerados, para mais fácil re-execução de um comando anterior (run #). A
lista de comandos já executados e o seu respetivo número pode ser
obtida com o comando "history"</li>
</ul>
<li>Compatibilidade JSON</li>
<ul>
<li>Operações (INSERT/UPDATE/DELETE) em <i>shards</i> de forma consistente<br />Quando trabalhamos com uma <i>sharded collection</i>,
e inserimos uma linha que deverá pertencer a outro nó que não aquele a
que estamos ligados, o registo deveria ser movido para o destino de
forma assíncrona para o servidor correto. Agora, se assim o desejarmos,
podemos pedir que a movimentação seja síncrona (<i>two phase commit</i>) e só então nos seja retornado o COMMIT</li>
<li>Pesquisa de texto utilizando expressões regulares<br />Finalmente introduzimos as funcionalidades dadas pelas expressões regulares no motor. Trata-se de um novo <i>datablade</i> que se auto-regista quando usamos as suas funções pela primeira vez (já existia um <i>bladelet</i>
não oficialmente suportado). Funciona no MongoDB API e em SQL normal,
com a introdução de uma série de funções como regexp_match(),
regexp_split() etc.</li>
<li>Melhorias de compatibilidade JSON<br />Várias novidades em clientes MongoDB API:</li>
<ul>
<li>Podem utilizar cursores nativos, o que permite maior eficiência em <i>queries</i> para efetuar paginação. Anteriormente o cliente teria de enviar uma <i>query</i> para cada página</li>
<li>Os cursores referidos anteriormente têm um <i>timeout</i> para evitar que fiquem abertos mesmo após longos períodos de inatividade dos clientes</li>
<li>Nova opção para fechar conexões inativas no <i>listener</i> de JSON</li>
<li>Um novo parâmetro do <i>listener</i> (listener.http.headers.size.maximum) permite controlar o tamanho máximo dos cabeçalhos dos pedidos HTTP recebidos</li>
</ul>
</ul>
<li><i>Enterprise replication</i></li>
<ul>
<li><i>Operações (INSERT/UPDATE/DELETE) em <i>shards</i> de forma consistente </i><br />Como a nota anterior para <i>sharded collections</i>, mas para tabelas tradicionais</li>
<li>Listar comandos de <i>Enterprise Replication</i><br />Novo comando "<span class="keyword cmdname">cdr
list
catalog" permite obter uma lista de comandos CDR necessária para
duplicar o ambiente corrente (para testes ou cópia para produção)</span></li>
</ul>
<li>Desenvolvimento aplicacional</li>
<ul>
<li>Renomear índices gerados pelo sistema<br />Um índice gerado automaticamente pelo sistema é um índice criado pelo Informix para suportar uma <i>constraint</i> como chave primária, chave estrangeira, ou <i>unique constraint</i>.<br />Se removermos a <i>constraint</i> o índice é automaticamente eliminado. Estes índices distinguem-se dos normais porque o seu nome começa com um " " (espaço).<br />Agora temos a possibilidade de renomear estes índices o que tem duas vantagens:</li>
<ul>
<li>Podemos querer <i>standardizar</i> os nomes dos índices</li>
<li>Podemos querer remover a <i>constraint</i> mas manter o índice (o que tornará mais rápida a recriação da <i>constraint</i> se for essa a intenção)</li>
</ul>
<li>Utilização de espaço temporário<br />Uma
das minhas favoritas! Era quase impossível obter a identificação das
sessões que estavam a consumir espaço temporário na instância.
Recentemente criei um <i>script</i> chamado <a href="https://github.com/domusonline/InformixScripts/blob/master/scripts/ix/ixtempuse" target="_blank">ixtempuse</a>
para contornar essa dificuldade). Agora foi adicionada uma nova coluna (SID) à <i>view</i> da <i>sysmaster</i> chamada <i>sysptnhdr</i>. A coluna será preenchida para objetos temporários como <i>hash tables</i>, <i>sorts</i>, materialização de <i>views</i> etc. Portanto a partir deste <i>fixpack</i> será trivial obter a informação de que sessão(ões) está a consumir espaço temporário.</li>
<li>Suspender a validação de <i>check constraints</i><br />Tals como as chaves estrangeiras, agora as <i>check constraints</i> também aceita a cláusula "no validate". Isto é muito importante nos seguintes cenários:</li>
<ul>
<li>Quando importamos dados e sabemos que os mesmos estão corretos</li>
<li>O
Informix verifica que os dados de uma tabela que está a ser adicionada
como fragmento de uma tabela fragmentada/particionada, validam a
expressão de fragmentação em uso.<br />Isto pode consumir muito tempo e recursos durante a execução da instrução ALTER FRAGMENT ATTACH, dado que força um <i>full scan</i> na tabela que é consumida. Uma solução para isto era criar uma <i>check constraint</i>
na tabela que vamos adicionar que correspondesse à expressão de
fragmentação. O otimizador tem inteligência para detetar a relação e
evitar a verificação (dado que a <i>constraint</i> já o garante). Isto evita o tempo durante o ATTACH, mas implicava gastar os recursos na validação quando se criava a <i>constraint</i>. Ora agora com o "no validate" podemos criar a <i>constraint</i>
instantaneamente, e evitar por completo o desperdício de tempo. Claro
que a responsabilidade de garantir que os dados carregados estão
corretos fica inteiramente a cargo do utilizador.</li>
</ul>
<li>Conformidade com JDBC 4.0<br />Finalmente melhoramos a compatibilidade do <i>driver</i> nativo com o <i>standard </i>JDBC<i>.</i> Eu penso que termos <i>drivers</i> nativos e DRDA coloca o Informix numa situação delicada: Por um lado os <i>drivers</i> DRDA estão mais adequados aos vários <i>standards</i>
e são mais frequentemente atualizados pois podem ser usados em várias
bases de dados da IBM. Mas por outro lado não suportam algumas
funcionalidades específicas do Informix e para corrigir isto o <i>standard</i> DRDA teria de ser modificado. Sendo um <i>standard</i> aberto isto não é fácil. Por isso é muito bom ver investimento feito nos <i>drivers</i> nativos.</li>
<li>Acesso a <i>smart large objects</i> em modo de leitura apenas<br />Uma aplicação pode optar por abrir <i>smart large objects</i> apenas em modo de leitura o que evita a sobrecarga que a gestão de <i>locks</i> traz.</li>
</ul>
<li>Segurança</li>
<ul>
<li>Encriptação de ficheiros de dados<br />A partir deste <i>fixpack</i> poderemos usar encriptação de dados transparente ao nível dos <i>dbspaces</i>.
Não irei entrar em detalhes muito técnicos, mas esta encriptação é
totalmente transparente para as aplicações e utilizadores da base de
dados. Destina-se a proteger os dados de administradores de sistema e
possíveis cópias ou roubos de disco ou de problemas de privacidade
levantados pela descontinuação de uso de discos antigos.<br />A forma como funciona é muito simples. Após configurar um novo parâmetro (DISK_ENCRYPTION) com o nome de uma <i>keystore</i>, qualquer <i>dbspace</i> novo será encriptado. Existe uma opção para os criar sem encriptação.<br />A encriptação de <i>dbspaces</i> já existentes pode ser alcançada através de <i>backup/restore</i>. Desencriptação de <i>dbsapces</i> já encriptados pode ser obtido da mesma forma.<br />Cada <i>dbspace</i>
terá a sua própria chave de encriptação. O espaço ocupado não crescerá
por via da encriptação. Encriptação de uma tabela ou conjunto de tabelas
específico pode ser conseguido pela movimentação das mesmas para um <i>dbspace</i> encriptado</li>
</ul>
<li>Time series</li>
<ul>
<li>Analítica avançada sobre dados <i>timeseries</i><br />Novas funções para analisar dados <i>timeseries</i>,
como pesquisa de padrões ou anormalidades, incluindo quantificação de
similaridade, distância e correlação entre duas sequências</li>
<li>Melhorias em funções de <i>timeseries</i><span class="keyword cmdname"> <br />Várias melhorias no que pode ser usado como expressões para as funções CountIF e Apply</span><span class="keyword cmdname"></span> </li>
</ul>
<li><i>Embeddability</i></li>
<ul>
<li>Distribuição "embebida" mais fácil<br />O <i>ifxdeploy</i> pode ser usado como <i>non-root</i> e o seu ficheiro de configuração foi descontinuado em favor de parâmetros na linha de comandos, que foram expandidos</li>
</ul>
</ul>
Conteudo reproduzido a partir do Blog do Fernando Nunes:<br /><br />
<a href="http://informix-technology.blogspot.com.br/2016/12/informix-1210xc8-is-out-informix.html">http://informix-technology.blogspot.com.br/2016/12/informix-1210xc8-is-out-informix.html</a>Ask Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-68312248358347437162016-10-03T07:40:00.004-07:002016-10-03T07:43:58.233-07:00Informix on CloudOlá,<br />
<br />
Estou retomando as postagens neste blog, para este mês irei falar um pouco sobre Softlayer, BlueMix e Informix on Cloud.<br />
<br />
Apenas para passar uma breve explicação, o Informix on Cloud é a oferta da IBM onde é possível adquirir a infra-estrutura como serviço dentro da plataforma de serviços chamada Bluemix, o serviço está armazenado dentro da nuvem da IBM (Softlayer). <br />
<br />
Segue abaixo a carta de anúncio:<br />
<a href="http://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/9/877/ENUSZP16-0499/index.html&lang=en&request_locale=en" target="_blank">http://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/9/877/ENUSZP16-0499/index.html&lang=en&request_locale=en</a><br />
<br />
O servíço pode ser acessado através do Bluemix:<br />
<a href="http://bit.ly/2d6wqq7" target="_blank">http://bit.ly/2d6wqq7</a><br />
<br />
A oferta de Informix on Cloud inclui serviços de gerenciamento da infra-estrutura, o gerenciamento da instância continua sendo feita pelo DBA do cliente.<br />
<br />
Segue abaixo uma matriz de responsabilidades.:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.blogger.com/blogger.g?blogID=4350149978198728408" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="" border="0" height="246" src="data:image/png;base64,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" style="cursor: move;" width="400" /></a></div>
<br />
<a href="https://www.blogger.com/blogger.g?blogID=4350149978198728408" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><br />Em breve postarei mais detalhes sobre Informix + Bluemix!<br /><br />
Vagner Pontes<br />
<br />
<br />
<br />Ask Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-83439985219284849202011-12-15T17:00:00.000-08:002011-12-15T17:28:45.226-08:00Implementando Conexoes IPC entre ServidoresOla amigos,<br /><br />Estou ha algum tempo sem postar nenhum artigo, como o ano esta para acabar reservei um tempo para fazer um prova de conceito sobre conexoes stream pipe na plataforma IBM AIX.<br /><br />A cerca de 10 anos atras quando ainda trabalhava com Informix rodando sobre Tru64 tinhamos um problema de performance com aplicacoes 4gl que estavam sendo executadas dentro do servidor do banco de dados atraves de conexoes IPCSHM (Shared Memory).<br /><br />Um certo momento no lancamento do Bigbrother 1 no Brasil tivemos uma sobrecarga no ambienten e nao pudemos crescer o servidor, e foi necessario segregar os aplicativos 4gl e o banco de dados em servidores distinto, nao preciso dizer que trocamos o metodo de acesso IPCSHM por TCP/IP.<br /><br />Apos algum tempo fizemos um estudo com StreamPipe e descobrimos uma oportunidade, o protocolo IPC utiliza o metodo SHM (Shared Memory) para a troca de informacoes entre a aplicacao client e o servidor, no caso do metodo STR (Stream Pipe) sao utilizados arquivos que ficam residentes no cache do filesystem.<br /><br />A tecnologia embutida no cluster do Tru64 nos permitia compartilhar arquivos (shared disk) em diversos servidores, configuramos os filesystems $INFORMIXDIR e /INFORMIXTMP para acesso read/write em todos os servidores de forma simultanea e implementamos a conectividade atraves de IPCSTR para todos os aplicativos 4gl.<br /><br />O resultado disto foi um ganho de performance grande tendo em vista que removemos a comunicao atraves de TCP/IP e passamos a utilizar o mecanismo interconnect to cluster para transportar a informacao , para o banco de dados tudo isto foi transparente.<br /><br />Me lembro que esta configuracao nao era suportada pela Informix, somente pelo fato que nao era comum este tipo de configuracao na epoca.<br /><br />Estou elaborando uma prova de conceito desta mesma arquitetura em ambiente AIX com GPFS/PowerHA, caso funcione irei fazer os benchmarks para demonstrar aqui os resultados/ganhos deste POC.<br /><br />Quem tiver interesse em acompanhar esses testes pode me contactar atraves do email vagnerpontes@ig.com.br<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-60669807388666738612010-08-26T19:58:00.000-07:002010-08-26T20:31:55.080-07:00BRIUG - Brazilian Informix Users GroupOla,<br /><br />Ja ha algum tempo sem blogar estou aqui novamente, a copa do mundo se foi e o Brasil nao ganhou nada, mas pelo visto meu amigo Cesar trabalhou muito e nao assistiu a copa do mundo.<br /><br />A novidade de hoje que nasceu oficialmente o BRIUG (Brazilian Informix Users Group), o acesso ao portal do grupo pode ser feito atraves de: http://www.briug.org/<br /><br />Um dos objetivo do grupo e integrar a comunidade de usuarios Informix em lingua-portuguesa, nossos amigos Fernando Nunes e Sergio Ferreira suportam o BRIUG.<br /><br />Mas voce deve estar se perguntando "porque o Miguel Carbone nomeou o Grupo em Ingles?"<br /><br />Eu tenho algumas teorias:<br /><br />1. Em portugues ficaria horrivel "Grupo Brasileiro de Usuarios Informix"!<br />2. BRI lembra BRIC!! Talvez um dia o grupo possa incluir usuarios da Russia e da India<br />3. Talvez tenha sido coisa do Miguel mesmo.<br /><br />Quanto a mim continuarei blogando no ASKPONTES e tambem no BRIUG, alias estou estudando a tecnologia Flashdrive... (opa ja pensei no proximo post)<br /><br />Saludos<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-66339399366181457332010-05-26T08:12:00.000-07:002010-05-26T08:42:07.502-07:00Analisando o Buffer Cache do InformixOlá,<br /><br />Hoje vou postar um recurso que hoje em dia é pouco utilizado, como o preço de memória caiu não é mais usual a análise da ocupação do buffer cache no dia a dia do DBA, é feita apenas a valição do PCT de Read/Write, está formula funciona mas não em todos os casos.<br /><br />Vamos lá, o primeiro passo é executar o onstat -P que irá exibir um output conforme abaixo:<br /><br />partnum total btree data other resident dirty<br />0 215 8 158 49 0 58<br />1048578 2 1 1 0 0 0<br />1048579 9 5 4 0 0 0<br />1048584 4 2 2 0 0 0<br />1048585 2 1 1 0 0 0<br />1048747 1 1 0 0 0 0<br />3145776 60 8 52 0 0 0<br />9437190 177 177 0 0 0 0<br />10485762 26826 0 26826 0 0 0<br />.......<br />Totals: 300000 53097 246852 51 60 3444<br /><br />Vejam a ultima coluna nomeada como DIRTY, calcule quanto esse coluna representa do total de paginas do buffer cache, se este valor for muito alto para uma tabela isto indica uma aplicação não performatica e deve ser revista.<br /><br />Outro ponto é a coluna DATA, esta indica a quantidade de paginas de dados alocadas para a tabela , se este valor for igual ao total de paginas alocadas isto indica que ou a tabela sofre sequential scan ou tem alguma aplicação não performática acessando a mesma, causando a HIGH_Priority na LRU mantendo a mesma residente em memória.<br /><br />A coluna RESIDENT indica que foi executado um comando para forçar a residência da tabela em memória, a sintaxe do comando é:<br /><br />set table your_table memory_resident/set index your_index memory_resident <br /><br />Lembre-se que este comando deve ser usado em casos extremos, se você usou se resolveu seu problema já é indicio de que há algo errado, não devemos fazer o uso sem controle deste recurso.<br /><br />A coluna BTREE indica a quantidade de paginas de indices, para identificarmos o objeto que está alocado no buffer cache devemos pegar a coluna PARTNUM e pesquisar na sysmaster:systabnames conforme abaixo:<br /><br />select tabname, ti_nrows, ti_nptotal <br />from sysmaster:systabnames, sysmaster:systabinfo<br />where partnum=1048585<br /><br />Lembre-se , indices detachados ou particionados também possuem partnum portanto no onstat -P temos o resumo de utilização de partitions, sendo tabelas e indices.<br /><br />Há alguns anos desenvolvi um script e postei no Repositório do IIUG, o mesmo está no link:<br /><br />http://www.iiug.org/software/archive/mon_buffer<br /><br />By the way, dentro do repositorio do IIUG podemos encontramos muito scripts interessantes, este foram desenvolvidos por DBAS em situações reais do dia-a-dia de um DBA.<br /><br />Segue abaixo o link:<br />http://www.iiug.org/software/index_DBA.html<br /><br />A partir do Informix 11 temos é possivel configurar multiplos buffers, um para cada tamanho de pagina (4K, 8K ,16K), para ambientes OLTP é recomendado o uso de paginas de 8K e para DSS/DW é recomendado o uso de páginas de 16K.<br /><br />O importante para o DBA é ter o conceito do funcionamento da buffer cache, seguindo este artigo teriamos outras coisas para estudar (LRU, LIGHT SCAN, LIGHT APPEND) mas isto ficará para outro post.<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-40227848593360793512010-04-13T15:22:00.000-07:002010-04-13T15:39:41.044-07:00Monitorando data/hora de último acesso em objetosOlá a todos,<br /><br />A carta traduzida do VP da IBM gerou um volume alto de acessos no meu blog, estou postando outro artigo para dar um quebrada no gelo, não é nada novo no Informix porém surgiu de uma necessidade diária de DBAS.<br /><br />Para uma necessidade especifica elaborei um script para monitorar a data/hora de acesso.<br /><br />Segue abaixo a estrutura da tabela:<br /><br />create table dba_tab_stat<br /> (objpartnum integer,<br /> objname varchar(28),<br /> objcreated date,<br /> objlastacc datetime year to second<br /> ) <br /><br />create unique index key001dbatabstat on dba_tab_stat (objpartnum,objname);<br />create index key002dbatabstat on dba_tab_stat (objname);<br /><br />O shell script deve ser construido com o codigo abaixo:<br /><br /><strong>vi mon_read.sh</strong><br /><br />------------------------------------------------------------------------------------<br /><br /><em>while true<br />do<br /><br />dbaccess ibs << FIM<br /><br /><br />select partnum, tabname, today created<br />from sysmaster:systabnames a<br /> where not exists (select 1 from dba_tab_stat where objname = a.tabname)<br />into temp x with no log;<br /><br /><br />insert into ibs:dba_tab_stat (objpartnum, objname, objcreated, objlastacc)<br /> select *, '' from x<br /> where partnum not in( select dbsnum*1048576 from sysmaster:sysdbspaces<br /> where is_temp=1);<br /><br />select * from sysmaster:sysptprof into temp prof1 with no log;<br />!sleep 60<br />select * from sysmaster:sysptprof into temp prof2 with no log;<br /><br />create index ix01prof1 on prof1(partnum);<br />update statistics low for table prof1;<br /><br />select partnum, tabname, bufreads<br /> from prof2<br /> where not exists (select 1 from prof1 where prof1.partnum=prof2.partnum )<br />into temp t_buffreads with no log;<br /><br />insert into t_buffreads<br />select partnum, tabname, bufreads<br /> from prof2<br /> where exists<br /> (select 1 from prof1 where prof1.partnum=prof2.partnum and prof2.bufreads!=prof1.bufreads);<br /><br />update ibs:dba_tab_stat set objlastacc=current<br />where exists (select 1 from t_buffreads<br /> where objpartnum=t_buffreads.partnum<br /> and objname=t_buffreads.tabname)<br /><br />FIM<br /><br />done</em>------------------------------------------------------------------------------------<br /><br /><strong>chmod +x mon_read.sh<br /><br />./mon_read.sh</strong><br />O shell ficara executando em loop, para consultar a data/hora de ultimo acesso das tabelas é só executar a query abaixo:<br /><br />select objpartnum, objname, objlastacc<br />from dba_tab_stat<br />where objlastacc is not null<br /><br />objpartnum objname objlastacc<br /><br /> 1048579 tab_1048579 2010-04-13 19:12:02<br /> 1048585 tab_1048585 2010-04-13 19:11:13<br /> 1048597 tab_1048597 2010-04-13 19:08:58<br /> 7340064 tab_7340064 2010-04-13 15:54:35<br /> 9437190 tab_9437190 2010-04-13 15:57:39<br /> 10485762 tab_10485762 2010-04-13 19:08:58<br /> 11534339 tab_11534339 2010-04-13 19:11:13<br /> 11534341 tab_11534341 2010-04-13 19:11:13<br /> 11534347 tab_11534347 2010-04-13 17:33:57<br /> 11534349 tab_11534349 2010-04-13 17:11:13<br /> 11534351 tab_11534351 2010-04-13 19:11:13<br /> 11534353 tab_11534353 2010-04-13 19:08:58<br /><br /><br />O Script está porém pode ser melhorado, talvez a data/hora de última gravação no objeto, é possivel usar a mesma logica para ter regsitro de ultimo acesso em procedures.<br /><br />Espero que este tipo de informação faça parte do catálogo do Informix na versão Panther.<br /><br />Frequentemente ouço queixas dos DBAS SQL Server de algumas informações que o Informix não possue, no caso do Informix o produto foi criado para que os dbas criem suas próprias ferramentas.<br /><br />Em uma nova versão do script seria interessante converte para a versão 11 do Informix e usar as funções <strong>task() </strong>e <strong>sensor() </strong>mas isto vai dar um trabalho e deixo a cargo do Cesar , meu camarada de Jundiai).<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-53783383416604072972010-03-31T15:33:00.000-07:002010-03-31T16:05:09.368-07:00Carta ao MissionáriosAbaixo segue carta em portugues do Vice-President de Information Management da IBM:<br /><br />http://www.iiug.org/Insider/RThomas_Letter_Portuguese.pdf<br /><br /><br />À Nossa Comunidade Informix e Clientes:<br /><br />Eu gostaria de iniciar esta carta escrevendo sobre George Dantzig. Eu não o<br />conheço pessoalmente a nunca tive a chance de encontrá-lo, mas sua historia é<br />muito interessante. George Dantzig era um estudante na Universidade de<br />Stanford. Como muitos de nós, George não sabia exatamente o que gostaria de<br />fazer após sua vida acadêmica, mas estava motivado e inspirado a fazer algo<br />extraordinário. <br /><br />Finalmente, ele decidiu iniciar com um cargo na Faculdade de Stanford. Para conseguir esta posição era requerido que ele fosse aprovado nas provas finais.<br /><br />Na manhã do teste, ele foi acordado pelo barulho de seus companheiros de quarto. Ele não tinha ouvido seu despertador, e ainda estava na cama, 20 minutos após sua prova começar. Ele correu pelo campus, com as mesmas roupas utilizadas na noite anterior, chegando no local do exame muito atrasado. <br /><br />Quando se sentou, percebeu que faria um teste com seis questões escritas, mais duas questões que estavam escritas na lousa. Ele resolveu os seis problemas escritos e estava muito satisfeito em relação ao seu desempenho ate o momento. Contudo, quando ele foi para os problemas da lousa, ele percebeu que estava em um beco sem saída. Uma vez que todos terminavam e entregavam seus testes, ele pediu ao professor que lhe<br />concedesse mais tempo para os dois problemas, que lhe concedeu até a meia noite. Chegando a meia noite, desanimado, ele entregou seu teste, e havia resolvido apenas uma das duas ultimas questões.<br /><br />Na manhã seguinte George foi acordado com um telefonema de seu professor, cumprimentando George pelo seu incrível desempenho. Ele havia resolvido 1 dos dois problemas escritos pelo professor na lousa. O que George não sabia era que quando o professor passou os problemas para a turma, ele havia mencionado que os dois problemas, que não tinham solução até o momento (“nem mesmo Einstein havia resolvido estes problemas”).<br /><br />George não tinha o conhecimento (nem a noção) do que era possível acontecer no dia que ele entrou na sala de aula. Dizendo de maneira diferente, ele não foi influenciado pelos o que os tão chamados experts acreditavam ser possível ou não. George apenas acreditava, e realizou com bilhantismo.<br /><br />Assim como ao escrever esta primeira carta para a Comunidade Informix (nossos Clientes, Parceiros e usuários), eu me encontrei numa situação similar a de George. Eu não tenho a pretensão de ser um expert em Informix ou de ter uma longa experiência nesta tecnologia (eu não tenho!). E não fui influenciado pelo o que deveria ter acontecido, ou deveria ter sido no decorrer da historia do Informix (Eu já havia lido sobre isto). <br /><br />Contudo, Eu tenho o otimismo de uma pessoa, avaliando esta historia por uma nova perspectiva. Eu acredito no futuro do Informix, como tecnologia e negócio. Eu, juntamente com a IBM, estamos comprometidos com o sucesso do Informix. Se você esta disposto a investir alguns minutos lendo esta carta, vou compartilhar com você como nós planejamos investir para garantir o crescimento desta tecnologia.<br />***<br /><br />Assim como eu gastei alguns meses pesquisando, aprendendo e conversando<br />com muitas pessoas sobre o status do Informix, uma coisa me impressionou:<br /><br />uma paixão permanente que sempre existiu ao redor desta tecnologia.<br /><br />Clientes a adoram, parceiros a adoram, usuários a adoram. Todo mundo adora<br />o Informix!! Juntamente com esta paixão sem igual, eu levantei algumas<br />questões. Muitas delas quando confrontadas eram válidas. <br /><br /><em>Informix é estratégico para a IBM?<br />Como podemos aumentar a capacitação ao redor do Informix? <br />Por que a IBM não fala do Informix publicamente?<br />Qual é o posicionamento do informix no mercado?</em><br /><br />Todas estas questões são justas. Nós estamos focados em garantir que cada<br />uma destas questões sejam respondidas com ações, ao invés de meras<br />palavras. Na verdade, nossas respostas a estas e outras questões, irão vir na<br />forma de uma estratégia de 3 anos para o Informix que será descrita aqui.<br />Informix tem um histórico que fala por si mesmo. Ao longo dos anos, o<br />informix foi classificado como o #1 em satisfação do cliente por duas vezes<br />(2008/2009 pela VendorRate) e premiado com 56 patentes por inovações. Nós<br />estamos orgulhosos de ter recebidos estes prêmios e elogios e isto é uma<br />comprovação da paixão mencionada anteriormente. <br /><br />Isto levanta uma importante questão a todos: Dada à paixão pelo Informix, sua história, seu sucesso atual, e os inúmeros clientes que continuam a optar pelo Informix, o que a IBM, e a Comunidade Informix pode fazer para impulsionar o sucesso do Informix no Mercado?<br />***<br />Informix vai continuar a crescer, como tem acontecido nos últimos 5 anos, em primeiro lugar, vamos preservar o que o tornou grande, enquanto também expandimos para novas áreas, tendo uma abordagem mais agressiva em vendas, marketing e tecnologia. Existem 4 pontos que serão nossas diretrizes para o futuro:<br /><br /><strong>Encantando a Base Instalada</strong>Como mencionado acima, O Informix continua a impressionar pela perspectiva de satisfação do cliente. Nossa grandeza esta baseada e construída ao redor e pelos nossos clientes e, nós iremos enfatiza isto, em todas nossas atividades daqui para frente.<br /><br />Isto se inicia ouvindo, e muito mais importante que isto, compreendendo o que é critico para nossos clientes. Recebemos pedidos de ofertas de suporte estendido e flexível, suporte abrangente às aplicações e inovação contínua.<br /><br />Nós concordamos com estes pedidos e já iniciamos a executar cada um deles. <br /><br /><strong>Construir uma estratégia diferenciada</strong><br />Nós acreditamos que é importante esclarecer como e onde o informix esta posicionado na indústria de software. <br /><br /><em>Primeiramente </em>ele esta posicionado em sua base instalada. Em outras palavras, não é simplesmente econômico (ou não apropriado gerencia de risco) que os usuários atuais considerem alternativas. <br /><br />De fato, Eu desafiei a todos a me provar o ROI por detrás de uma mudança de plataforma para alguém que esta usando Informix atualmente. <br /><br /><em>Em segundo lugar</em>, Informix continuará o ter foco na indústria ao qual é dominante hoje em dia (telecomunicações e varejo) e expandira onde já temos uma forte presença entretenimento e saúde). <br /><br /><em>Em terceiro lugar</em>, Informix irá a continuar a ser a base de dados escolhida para as<br />aplicações embarcadas. O número de eletrônicos, empresas de saúde e empresas de rede que continuam a mudar para informix é impressionante. O problema é que a maioria do mercado não sabe disso pois o informix é leve e invisível. <br /><br /><em>Em quarto lugar</em>, iremos continuar a focar o Informix para o “middle-market”. Empresas que necessitam de infraestutura que “simplesmente funcione”, com administração-nula, Informix é a grande solução. <br /><br /><strong>Criar uma cultura Pró ativa</strong>Temos que re-energizar a Comunidade Informix, dentro e fora da IBM. Novas<br />ofertas com uma clara diferenciação são ambos passos para a direção correta.<br />Contudo, para darmos um passo mais longe, temos que focar em capacitação<br />técnica, laboratórios hands-on, comprometimento dos nossos laboratórios,<br />centros de excelência, benchmarks competitivos e uma maior consciência.<br /><br />Vamos aumentar o volume e necessitamos de nossa comunidade de parceiros,<br />clientes e usuários para ajudar.<br /><br /><strong>Construir um fluxo de Novas Receitas</strong><br />Como em qualquer outro negócio, nada é mais importante do que seus clientes atuais. Contudo, para continuar a crescer e prosperar temos que avançar em novas áreas. <br /><br />Alinhado ao posicionamento descrito acima, a IBM irá apostar em cada uma destas áreas. Assim como direcionamos nosso foco ao suporte à aplicações, iremos iniciar com os muitos produtos que a IBM adquiriu ao longo dos anos, e alguns deles ainda não suportam Informix. <br /><br />Isto por si só, abre um novo cenário de negócios para o Informix e para novas oportunidades e inovações em nossos clientes. Por último, vamos garantir que iremos triplicar o investimento e nosso trabalho em clientes no mercado embarcado. Como<br />mencionado anteriormente, é um mercado fértil, onde só a IBM pode juntar a tecnologia (Informix) e os sistemas aos sistemas de arquitetura que os clientes demandam. <br /><br />Por último, iremos garantir que os Produtos Informix sejam empacotados corretamente, para garantir as necessidades de nossos desenvolvedores, clientes sejam eles pequenos, médios ou grandes corporações.<br /><br />Executar estes 4 prontos não é um evento mas sim um processo que será executado ao longo de 3 anos, e além. Nós acreditamos que estas medidas são passos acertados para garantir o futuro e capitalizar o crescimento gerado nos últimos 5 anos. Tomaremos uma atitude disciplinada para garantir que estas ações sejam executadas, da maneira mais rápida possível, sem sacrificar a qualidade ou foco em tudo o que fizermos.<br />***<br />Estamos orgulhosos do Informx e gratos por nossa leal comunidade. Nós nem sempre fomos perfeitos em nossos atos no passado, mas os negócios continuaram crescendo. Eu sei que ainda há alguns que duvidam, mas peço que mantenham a mente aberta. Eu acredito no que estamos fazendo e confiante que estes passos estão certos. <br /><br />Vou manter contato com vocês regularmente, mas se quiserem atualizações freqüentes de nosso progresso, os incentivo a visitar o blog de Bruce Weed’s (http://bruceweed.wordpress.com/ ).<br /><br />Eu realmente incentivo a todos a visitarem http://iiug.org/president e compartilhar comigo suas duvidas e comentários. Nestes primeiros meses de trabalho temos nos esforçado para manter a transparência e a abertura. <br /><br />Qualquer coisa que desejar compartilhar será de grande valia para mim e para<br />toda a comunidade Continuamos comprometidos com o Informix e focados em liderar, ou orientar cada um dos pontos que identifiquei. <br /><br />Não podemos fazer nada disto sem o apoio e o suporte da comunidade Informix: nossos clientes, parceiros e usuários. <br /><br />A Comunidade Informix não pode ser um espectador nesta jornada, necessitamos de sua ajuda e orientação em cada um destes pontos.<br /><br />Agradecemos a sua fidelidade e lealdade e esperamos que compartilhem de nosso otimismo para com o futuro. Estou ansioso para encontrá-los em Abril na Conferência do IIUG.<br /><br />Sincerely,<br /><br /><strong>Robert D. Thomas<br />Vice President, Information Management<br />IBM Software Group<br /><em>Translated to Portuguese by Miguel Carbone (IIUG Board of Directors</strong>)</em>Ask Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-4679339875931715722010-03-11T16:51:00.000-08:002010-03-11T17:21:50.839-08:00Informix VisionaryOlá,<br /><br />Nesta ultima semana estive em uma palestra de um fornecedor e assisti a um show de dashboards, era indicador e graficos para todo igual, era a visão dos sonhos de um executivo.<br /><br />Durante a apresentacao lembrei de alguns projetos que eu havia participado e nao tive como nao lembrar do <strong>Informix Visionary</strong>. <br /><br />Para quem nunca ouviu falar deste produto ele foi desenvolvido pela Informix na gestão do <strong>Dr Michael StoneBracker </strong>quando o mesmo foi CTO da Informix Corp.<br /><br />Enfim , em meados do ano 2000, apenas um ano antes da aquisiçao da Informix, eu estava eu aqui na America do Sul fazendo pré-venda desse produto, coisa de louco, alias a única pessoa que conheci que trabalhou com este produto foi a Roseli da própria Informix Brasil, alias tenho que falar do Dirceu que era o cliente neste projeto, vou arriscar dizer que ele foi um dos primeiros DBAs Informix no Brasil. o cara é bom.<br /><br />Lembro que na época a dificuldade era muito grande de divulgar o Visionary, faltava a cultura de dashboards por parte da empresas brasileiras, o que eu mais via eram gráficos gerados por planilhas excel e colados na parede.<br /><br />Atualmente quando visito alguma empresa logo me mostram um televisor de LCD ou uma imagem projetada na parede com Dashboards coloridos.<br /><br />Resolvi fazr uma pesquisa no google para saber o qoe aconteceu com o Informix Visionary e para minha supresa o produto ainda existe.<br /><br />Vejam o link abaixo:<br />http://www.rocketsoftware.com/category/business-intelligence<br /><br />Em meados de 2004 a Rocket Software (Business Partner IBM) comprou o Visionary da IBM, e não parou por ai, recentemente a Rocket Software comprou a tecnologia U2.<br /><br />Então a IBM vendeu parte de sua tecnologia? <br /><br />Sim, e não parou por ai, dpois de um tempo a IBM fez a doação de parte do código fonte do CloudScape para Fundação Apache e ai surgiu o Derby DB.<br /><br />Em apenas um artigo citei 3 tecnologias da Informix que ainda estão vivas e em pleno funcionamento.<br /><br />Acreditem ainda suporto o Informix 7.31.FD9 !!! Vai bem e obrigado!!!<br /><br />Quem sabe qual será o destino final do Informix?<br /><br />Num mundo globalizado e cheio de incertezas tudo é possivel, vamos aguardar.<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-57186757954046402492010-01-07T12:43:00.001-08:002010-01-07T13:03:10.185-08:00Restart de ListenerNihao,<br /><br />Ja está disponivel o Release FC6 do Informix 11, neste veio embutida uma feature muita simples mas com grande impacto para o DBA.<br /><br />Em ambientes de missão critica com servidores de aplicações distribuidos é preciso planejar as portas de banco por onde essas aplicações irão se conectar, recomenda-se distribuir as portas de forma que quando um ambiente pare o outro continue no ar.<br /><br />Caso algum aplicação (por exemplo uma aplicação Web) estoure o limite de conexções de uma porta do banco e simule um DOS (Denyal of Services) antigamente era necessário fazer um stop/start do banco para que o Listener voltasse a responder.<br /><br />Após o Informix 9.40 foram embutidas 2 novos parametros:<br /><br /><strong>LISTEN_TIMEOUT</strong> - determina o timeout da abertura da conexão TCP/IP, mesmo com a conexão em estado established e o thread alocado na instância isto não quer dizer que a conexão já foi estabelecida.<br /><br /><strong>MAX_INCOMPLETE_CONNECTIONS</strong> - determina a quantidade de threads em status de abertua de conexão que serão permitidos antes do Informix comecar a descartar as conexões.<br /><br />Antes desta implementação o Informix possuia apenas um listener thread (thread responsavel pela abertura de conexões), agora existem multiplos listener threads<br />(listen_authenticate).<br /><br />Mais informações sobre o assunto pesquisar em:<br />http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.admin.doc/admin210.htm<br /><br /><br />Após um cenário onde uma aplicação causa estouro de requisições no listener muitas vezes podemos recuperar o ambiente apenas desligando a aplicação causadora e depois fazendo um restart no listener.<br /><br />Agora no Informix 11.50.FC6 temos uma opção no onmode que permite manipular o status das portas (listener) sem a necessidade de parar toda a instancia.<br /><br /><strong>>>-onmode-- -P--+-start---+--server_name-----------------------><<br /> +-stop----+ <br /> '-restart-' </strong> <br /><br />Esta feature tambem é util quando temos multiplas interfaces de rede no servidor, quando é necessário fazer a manutenção em apenas uma podemos indisponibilizar somente as aplicações que acessam esta interface.<br /><br />Como falei anteriormente, esta é uma feature que poucos usam, porém em grandes ambientes de missão critica é muito importante, é mais um sinal que o Informix não é um banco de dados para Appliances ou ambientes pequenos, a cada release possui mais e mais features para manutenção online sem causar indisponibilidade de ambiente.<br /><br />SaludosAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-40146916861002834752009-10-28T11:37:00.000-07:002009-10-28T11:51:28.972-07:00IBM Information on Demand (IOD) - News IOla,<br /><br /><br />Ontem participei de uma excelente palestra com o Dr. Arvind Krishna, o nome foi "Reduzindo seus custos com gerenciamento de dados com workload otimizado", o objetivo foi apresentar a melhor forma de como otimizar o workload de ambientes produtivos baseados em solucao de hardware e software IBM.<br /><br />A palestra comecou com DB2 Pure Scale, a recente solucao da IBM para competir com a Oracle, realmente a solucao 'e muito boa, foi baseado em Arquitetura Power utilizando a feature Power HA, a solucao 'e muito consistente , parece ser algo promissor, muito parecido com o Sysplex que existe no mainframe.<br /><br />No final da apresentacao foi apresentada a solucao da Cisco Corp, inclusive a mesma foi premiada como Partner of the year, e fizeram uma bela apresentacao sobre Informix 11.50.<br /><br />Tambem participei de diversas sessoes sobre Informix e realmente o release 11.50.xc6 esta repleto com novas funcionalidades, em breve devo postar alguns artigos sobre essas features, para dar um ideia agora 'e possivel configurar listeners online sem ter a necessidade de baixar o banco.<br /><br />Creio que depois deste evento terei muita informacao para postar ate o final do ano.<br /><br />AbracosAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-37682880888749927792009-10-23T07:40:00.000-07:002009-10-23T07:48:19.725-07:00IBM Information on Demand (IOD)Ni-hao,<br /><br />Chegou o dia da viagem, estamos indo ao IBM IOD, evento muito importante dentro da Brand de Software da IBM.<br /><br />Irei participar de várias palestras e sessões técnicas, claro que estarei nas principais sessões de Informix, mas vou focar em Infosphere, Solidb e soluções para MDM.<br /><br />Segue abaixo a lista de palestrasr/sessões técnicas de Informix:<br /><br /><strong>1227 Upgrading Hardware and IBM Informix Dynamic Server with Zero Downtime</strong><br /><br />Network IP recently migrated all of their database servers to IBM hardware and upgraded to IBM Dynamic Server 11.5 at the same time. Learn how they achieved this rolling upgrade with zero downtime.<br /><br /><strong>1231 SOA Enablement on IBM Informix 4GL: Reinvigorating Legacy Business Logic</strong><br /><br />IBM Informix 4GL (I4GL) has come up with several releases for the SOA enablement of the product. Prior to I4GL-SOA, organizations seeking flexibility and interoperation of their I4GL code with other languages across diverse locations had only one option -- rewrite the code using a modern programming language. I4GL-SOA has not only enabled customers to publish their business logic as Web services, but also enabled consumption of other Web services on the Internet by I4GL. The product renders flexibility to distributed systems by ensuring seamless operation across multiple programming languages and platforms. Customers save precious dollars in time and effort by reusing code published as Web services in other locations worldwide.<br /><br /><strong>1309 Tuning Informix in a Sandbox Environment</strong><br /><strong><br /></strong>At GSN Digital, formerly WorldWinner, the use of Exact Solutions? iCapture and iReplay products to capture and replay 100% of production SQL calls in a dedicated engineering sandbox allows for empirical measurement of these changes before they take place in production. The empirical tests show what gains are achieved with changes to the ONCONFIG parameter values, to table and index fragmentation strategies, and utilization of new IBM Informix Dynamic Server functionality. The ability to automatically and properly handle transactions open when a level 0 begins is one of the valuable features.<br /><br /><strong>1400 Integrating IBM Informix Dynamic Server with the Enterprise: An Overview<br /></strong><br />In this session, we will look at how IBM Informix Dynamic Server can integrate with the enterprise. We will discuss the use of standard interfaces, homogeneous and heterogeneous replication, Web services, message queues and more.<br /><br /><strong>1404 Virtualization and Cloud Computing with IBM Informix Dynamic Server<br /></strong><br />This session outlines IBM's strategy for virtualization and cloud computing with IBM Informix. It includes an overview of the latest Informix virtual machine and cloud computing offerings, and how to start using them. The session will also include how to leverage Informix features, such as high availability, to add value to your solutions deployed in cloud computing environments, such as the Amazon Elastic Compute Cloud (EC2).<br /><br /><strong>1409 Introduction to IBM Informix Dynamic Server 11.5<br /></strong><br />The talk will focus on the new features added in IBM Informix Dynamic Server 11.5, and how they help your business.<br /><br /><strong>1410 Using IBM Informix in Telecommunications<br /></strong><br />IBM Informix has become the database of choice in the telecommunications market. Come learn more about why Informix is such a good fit.<br /><br /><strong>1430 IBM Informix Warehouse -- Product and Roadmap<br /></strong><br />This talk will describe the IBM Informix Warehouse product, its architecture, its benefits and its intended users. The Informix Warehouse offering includes data compression and storage optimization. It discusses features that may be attractive to other Informix customers currently running on XPS or Red Brick.<br /><br /><strong>1431 Dimensional Modeling for IBM Informix Warehouse Users<br /></strong><br />Data warehouses are designed to enable access to the data to facilitate reporting and analysis. The concepts of design have a language and approach all their own. IBM Informix Dynamic Server customers new to data warehousing should learn about the importance of data modeling and practical techniques for designing a data warehouse to serve their business needs.<br /><br /><strong>1438 IBM Informix Embeddability Enhancements<br /></strong><br />Recent releases of IBM Informix Dynamic Server -- IBM's enterprise class embeddable data server -- have included many new features designed to make it easier to deeply embed a data server in your application. This session shows how to use these new features to reduce overhead and cost of embedding Informix Dynamic Server without user interaction.<br /><br /><strong>1467 Building Data Warehouses with IBM Informix<br /></strong><br />IBM Informix is a great data warehouse server and is used by many customers as a warehouse database. With the new IBM Informix Warehouse Feature from IBM, it is an even better tool. This session will focus on our experience building warehouses, best practices for warehouse development and the exciting new features added in the Informix Warehouse Feature.<br /><br /><strong>1538 Overview of Security and IBM Informix Dynamic Server<br /></strong><br />A high-level overview of security issues as they relate to IBM Informix Dynamic Server.<br /><br /><strong>1564 Managing IDS Configuration and Performance with Server Studio and Sentinel<br /></strong><br />Are you getting top notch performance from your mission-critical IDS databases? Optimizing and tuning your IDS environment means managing ALL the pieces — not just your SQL. This presentation will introduce IDS developers and DBAs to the various new and updated tools in the Release 7 of Server Studio and Sentinel and demonstrate how and when to apply each to efficiently manage IDS configuration and optimize its performance. Learn some of the best practices, and save countless hours of wrestling with the complexity of your IDS infrastructure. Gain hands-on experience with the new wide-ranging functionality provided by latest release of AGS' Server Studio and Sentinel.<br /><br /><strong>1760 Eat OATs? Open Source Graphical Database Administration with IBM OAT<br /></strong><br />Understand the capabilities and architecture of OAT -- OpenAdmin Tool for IBM Informix Dynamic Server. This will be an overview of the capabilities of the OpenAdmin Tool, highlighting such things as replication, query tracing, database compression, performance history graphs, auto update statistics, space management and many other capabilities. An overview of the architecture and what open source components are utilized within OpenAdmin Tool conclude this talk.<br /><br /><strong>1763 Achieving the Ultimate in Performance with IBM Informix Dynamic Server<br /></strong><br />This presentation will focus on how a database administrator can improve the database performance with a concentrated effort on three main areas. First is storage optimization -- how to optimize data and index storage making the disk drives work for you. Second is SQL statements monitoring and turning -- how a database administrator can monitor and improve the performance of queries without modifying the application. Third is new monitoring and administration techniques added to version 11 to make a database administrator's life easier.<br /><br /><strong>1884 Master Informix Enterprise Replication with the OpenAdmin Tool<br /></strong><br />The enterprise replication plugin is a free extension to the free OpenAdmin Tool for Informix Dynamic Server that allows one to interact with IBM Informix Dynamic Server Enterprise Replication technology through a browser. It makes enterprise replication easier to understand and use. Do you want to set up enterprise replication from scratch? Do you want to modify existing replicate and server settings? Do you want to monitor your enterprise replication domain? See how fast and easy it is with the OpenAdmin Tool.<br /><br /><strong>1910 Understanding the IBM Informix Dynamic Server System Databases<br /></strong><br />This session is an updated version of last year's session on the same topic. The new syscdcv1 and sysadmin databases, along with the older sysmaster, sysusers and sysutils databases are explained, and examples of how each database might be used are given. These databases provide a way to easily customize administration and monitoring of databases and applications if you understand what is contained in them.<br /><br /><strong>1979 Using the Change Data Capture API with Informix<br /></strong><br />Today's databases utilize a "logical log" to record the series of changes made via transactions. Various utilities (e.g., backup/restore tools) utilize this log, and beginning with IBM Informix Dynamic Server 11.50.xC3, user applications can too. The new IBM InfoSphere Change Data Capture API allows a C, Java or .NET application to see changes made to a given table. This enables a new type of user program.<br /><br /><strong>1991 Availability Solutions within IBM Informix Dynamic Server<br /></strong><br />The IBM Informix Dynamic Server provides several availability solutions. This talk will provide an overview of the portfolio.<br /><br /><strong>2331 Maximizing Storage Investment with IBM Informix Dynamic Server Compression<br /></strong><br />Learn how compression in IBM Informix Dynamic Server can help optimize your database storage and maximize your storage investment.<br /><br /><strong>2351 IBM Cognos Express: BI and Planning for Midsize Organizations<br /></strong><br />Midsize companies are not unlike large enterprises in their need for business intelligence (BI) and performance management. However, they often have limited budgets, limited IT resources and limited expertise in these areas. This session will demonstrate the new IBM Cognos Express solution that provides the essential BI and planning capabilities midsize companies need. We will explore features and capabilities, including: - Simplified data modeling and creation of dimensions. - Building a self-service environment for reporting and analysis. - "What-if" scenario modeling. - Transforming spreadsheets for planning, budgeting and forecasting. - Creating actionable dashboards. - Benefits of in-memory OLAP. - Administration and management highlights.<br /><br /><strong>2560 Developing and Prototyping Database Applications in the Cloud<br /></strong><br />Cloud computing has evolved to address the explosive growth of Internet-connected devices, and to complement the increasing presence of technology today. In this session, we will discuss best practices and strategies for prototyping and developing IBM database applications (both IBM DB2 and IBM Informix Dynamic Server) in public and private cloud computing platforms.<br /><br /><strong>2631 Deploying IBM Databases in the Cloud with Amazon EC2<br /></strong><br />Cloud computing is the new buzzword in the industry, and the hype is getting to be quite intense. Some in the industry have likened it to the impact that microprocessors had on IT in the 1980s. Regardless of the hype, there is real promise. Come to this session to understand what cloud computing really is and how it applies to data and databases, such as IBM DB2 and IBM Informix Dynamic Server. Hear about the experiences of some of the early adopters, and learn the areas where benefits are real and where it is just empty hype.<br /><br /><strong>2683 IBM Informix Dynamic Server Performance and Troubleshooting: Tips & Tricks<br /></strong><br />This session will cover performance and troubleshooting tips and tricks for the IBM Informix<br />Dynamic Server. Topics will include configurable page sizes, configuring Btree scanners, finding CPU-intensive processes and trigger-based replication for table reorganization.<br /><br /><strong>2806 .NET Application Development in IBM DB2 and IBM Informix Dynamic Server<br /></strong><br />IBM DB2 and IBM Informix Dynamic Server are great fits for applications in the .NET environment. In this session, you will get an in-depth look at the .NET provider and Visual Studio add-ins, as well as the latest enhancements to support LINQ. You've heard about the ability to leverage static performance and security with existing Java applications using client optimization. Now you can drive down MIPS and improve security, stability and accountability for your .NET applications as well. Attention DB2 database administrators: You won't want to miss this talk!<br /><br /><strong>2898 Optimizing IDS Physical Database Design Using Partitioning<br /></strong><br />This session will start with business scenarios (OLTP, warehousing, hybrid) for time cyclic data management and performance requirements, and creates examples of partitioning/fragmentation strategies appropriate for table and indexes. This session will also explain ways to exploit fragment elimination -- one of the crucial ways to improve performance.<br /><br /><strong>3045 Secure & Availabile Public Finances with IBM IDS Continuous Availability<br /></strong><br />Secretaria de Finanzas (Sefin) in Mexico is the Jalisco's state agency responsible for all the finances and tax collections. They have been an IBM Informix user since 1998, and now they also use IBM Content Manager, IBM Lotus Notes, IBM Tivoli, IBM WebSphere Application Server, IBM Rational Solutions, IBM DB2 and IBM InfoSphere Warehouse. Sefin manages US$6 billion annually, with more than 300 collection offices and more than 3,500 (up to 8,000) concurrent users. They needed to improve their availability of services and operating hours to a 99.9999 level. To do this, they evaluated and selected IBM Informix Dynamic Server Continuous Availability Feature along with perimetral security, DMZ configuration and hardware actualization.<br /><br /><strong>3046 IBM Informix Roadmap<br /></strong><br />Jerry Keesee, director of IBM Informix Database Development, will summarize key highlights of Informix Dynamic Server, including the latest release information and upcoming product plans.<br /><br /><strong>3047 Keeping Costs Low and Maximizing Flexibility for Jamaica Using IDS<br /></strong><br />The Jamaican Government relies on IBM Informix Dynamic Server to keep their IT costs low and provide the flexibility needed to react quickly to constantly changing requirements. With over 50 mission critical applications deployed across 40 locations, they rely on the performance, ease of use and reliability of IBM Informix Dynamic Server. Their complex systems incorporate sophisticated business logic and complex SQL to meet the needs of these government solutions. Learn about the best practices that FSL Jamaica uses to deliver high quality and reliable solutions with IDS.<br /><br /><strong>3205 Integrated Data Management - Yesterday, Today & Tomorrow</strong><br /><br />Esta agenda consta no link abaixo:<br /><a href="https://www-950.ibm.com/events/wwe/iod/iod09cms.nsf/Tracks?Open&Category=Technical%20Skill%20Building%20-%20Data%20Management:%20Informix%20Dynamic%20Server%20(IDS">https://www-950.ibm.com/events/wwe/iod/iod09cms.nsf/Tracks?Open&Category=Technical%20Skill%20Building%20-%20Data%20Management:%20Informix%20Dynamic%20Server%20(IDS</a>)Ask Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-88025388901351830062009-10-20T17:31:00.000-07:002009-10-20T17:40:13.096-07:00Oracle pode vender Mysql!!Opa,<br /><br />O gato subiu no telhado!! A comissao europeia esta julgando a aquisicao da Sun pela Oracle, e o questionamento forte esta sendo feito em relacao o banco de dados Mysql.<br /><br />Uma vez que o Oracle é o lider de mercado de bancos de dados comerciais e o mysql é o lider no segmento open-source, existe conflitos de interesse e a Oracle pode ter que vender o Mysql.<br /><br />Vejam o artigo abaixo:<br /><a href="http://europa.eu/rapid/pressReleasesAction.do?reference=IP/09/1271&format=HTML&aged=0&language=EN&guiLanguage=en">http://europa.eu/rapid/pressReleasesAction.do?reference=IP/09/1271&format=HTML&aged=0&language=EN&guiLanguage=en</a><br /><br />O próprio Monty (um dos funcadores do Mysql) fez seus comentários em seu blog:<br /><a href="http://monty-says.blogspot.com/2009/10/press-release-concerning-oraclesun.html">http://monty-says.blogspot.com/2009/10/press-release-concerning-oraclesun.html</a><br /><br /><br />Não costumo postar artigo de Oracle ou Mysql, mas este não pude deixar passar pois durante anos ouvi que o mundo open-source iria acabar com os bancos de dados comerciais.<br /><br />Bom tá ai a resposta do capitalismo em apenas 2 anos a tecnologia Mysql já passou por duas aquisições!! Viva o mundo open-source!!<br /><br />E por aqui na terra da Uva e do trabalho o AIX vive muito bem obrigado!<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-21213409075696319162009-09-20T16:53:00.000-07:002009-09-23T16:38:31.718-07:00Criando Indices em grandes volumes de dadosNihao,<br /><br />Outro dia conversando com meu amigo de <strong>Mato Grosso do Sul </strong>me lembrei de algumas histórias, foi durante uma consultoria em Campo Grande que fiz o meu eject de Sao Paulo para Jundiaí, que deixem os paulistas lá com o Kassab.<br /><br />Aliás Campo Grande lembra muito o Kansas , onde fica um dos laboratorios de desenvolvimento do Informix, lá tem muito gado e o povo é friendly, só falta mesmo o <strong>Tererê.</strong><br /><br />Por isto vou postar algumas informacoes de como criar um indice em uma tabela com tipo uns 256GB de dados, vamos pensar grande mesmo!!!<br /><br />Bom primeiro passo, temos que usar o Informix 11 e precisamos saber qual a carga de I/O que nosso storage suporta, isto pode ser feito atraves da analise do TOPAS (AIX) ou TOP (Linux), imaginemos que num momento de pico nosso storage executa muito bem a leitura de 2GB/Seg, nao me lembro qual a media no meu ambiente, deve ser algo acima disto.<br /><br />No lado f'isico do banco de dados iremos alocar um dbspace com tamanho de pagina de 16KB para armazenar dados e outro dbspaces com pagina de 16KB para armazenar o indice.<br /><br />Lembre-se de criar um buffer pool de 16KB tambem, alias lembre-se de configurar 2 arquivos onconfig, uma que sera usado normalmente e outro que sera usado somente na criacao do indice.<br /><br />Sobre o arquivo onconfig usado na criacao do indice devemos configurar o seguinte:<br /><br /><strong>- Parametros de pre-fetch:</strong> ra_pages/ra_threshold, esses parametros sao validos para a instancia, inclusive o Cesar me alertou sobre isto.<br />Com um valor alto para pre-fetch os dados serao lidos mais rapidamente para a memoria e assim acelera a criacao do indice.<br />Na minha opniao este parametro deveria ser definido no escopo de buffer pool, pois assim poderiamos ter um pre-fetch agressivo para situacoes especificas.<br /><br /><strong>- Parametros de LRU:</strong> os parametros de LRU_MIN e LRU_MAX tambem foram incluidos no parametro de criacao de buffer pool, a ideia 'e colocar valores altos para que a instancia nao entre em contencao de processos background para fazer flush.<br /><br /><strong>- Parametros de Checkpoint:</strong> agora o Informix nao bloqueia a instancia durante o checkpoint, mas seria interessante desligar o parametro de checkpoint automatico.<br /><br /><strong>- Area temporaria:</strong> procure criar dbspaces temporarios do mesmo tamanho do indice a ser criado, se a tabela for particionada tambem crie dbspaces temporarios de acordo com a quantidade de partitions que voce criar na sua tabela. Nao use filesystem para fazer sort do indice, por exemplo setando a variavel DBSPACETEMP ou DBTEMP para um diretorio, sempre direcione para um dbspace temporario.<br /><br /><strong>- Parametros de PDQ:</strong> Procure setar os parametros de paralelismo (DS_*) , por default os valores estao definidos de forma ilimitada, isto pode causar contencao na criacao do indice.<br /><br />Para a tabela ser criada com 256GB é necessario que o dbspace seja criado com página de 16KB, com isto será possivel criar a tabela com apenas um fragmento, porém a criaçao do indice vai demorar, entao procure particionar a tabela de acordo com alguma regra/coluna especifica de modo que os fragmentos comportem até 64GB.<br /><br />É claro que não executei a criação de indice de tabelas com 256GB, no meu cenário atual fiz somente com 64GB e o tempo foi legal.<br /><br />Se tiver algum problema como configurar o PDQ Priority dê uma olhada no site do Cesar (Se nao tiver nenhuma sessao falando de PDQ pode mandar email pra ele!!)<br /><br /><a href="http://www.imartins.com.br/informix/">http://www.imartins.com.br/informix/</a><br /><br />Agora imaginem que voce nao tenha uma janela de downtime de 6 horas para criar o indice o que voce deve fazer?<br /><br />Neste caso voce pode clonar seu ambiente para um outro ambiente identico e neste criar o indice, ai com um pouco de bruxaria podemos transportar o indice inteiro para a producao sem ter que fazer rebuild, como ? (onunload/onload)<br /><br />O onload/onunload permite fazer move de grandes volumes muito parecido com o recurso de transportable tablespace do Oracle, essas ferramentas existem desde a versao 7 e realmente sao muitos boas.<br /><br />Vou deixar na lista de pendencias um post sobre onload/onunload, como sempre procurei passar o conceito de como criar um indice em um tabela com grande volume de dados, agora o como fazer fica como licao de casa.<br /><br />Se eu esqueci de algum truque e alguem lembra por favor comentem.<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com2tag:blogger.com,1999:blog-4350149978198728408.post-52189304806905251472009-09-15T14:14:00.000-07:002009-09-15T15:08:51.510-07:00Truncate Table no InformixNi-hao,<br /><br />Muitas vezes precisamos eliminar todo o conteudo tabela , isto deve ocorrer de forma rápida e sem impactos.<br /><br />Até a versão 7 do Informix era comum executarmos um drop/create table, pois fazer um delete de todas as linhas da tabela não era algo eficiente.<br /><br />A partir da versão 9.40 temos o truncate table, o mesmo foi melhorada e na versão 11.50 chegou a um excelente nivel de funcionalidade.<br /><br />Segue abaixo as sintaxes do comando:<br /><br /><strong>Truncate table</strong> your_table;<br />Truncate table your_table <strong>drop storage</strong> ;<br />Truncate table your_table <strong>reuse storage</strong>;<br /><br /><strong>TRUNCATE TABLE</strong><br /><br />Este comando irá zerar o conteudo da tabela, a eliminacao de linhas nao ocorre, o Informix apenas elimina as referencias ao extent dentro da partition page, somente o extent inicial permance.<br /><br /><strong>CLAUSULA DROP STORAGE</strong><br /><br />Tem a mesma função padrão do truncate table, ou seja elimina os extents subsequentes e insere esses espaços contiguos na free list do dbspace onde a tabela reside, assim outras tabelas ou indices podem reutilizar este espaco.<br /><br /><strong>CLAUSULA REUSE STORAGE</strong><br /><br />Esta clausula é muito util, pois os extents não são removidos da tabela, as paginas de dados e bitmap apenas são marcadas como free , este recurso é muito útil em tabelas usadas por processos batches, onde são truncadas e populadas com frequência.<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-89684171875410212472009-08-31T17:51:00.001-07:002009-08-31T17:53:24.795-07:00Informix Road Show no Brasil!Clique na imagem abaixo para mais detalhes do evento.<br /><br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhznn47kfGXgUsEkLtHw1ZXNQDxR_2lIUyIvOoSBr4R_2z-cNImEoyl6dOIuBkPpKf5Wx_uYJ3ji6Q8nerGQQ9jEHCL3f3LsO5SOMUNcZNQfPE4IcKD-D2qy0wn04a-gkSs6UJU6srFYPAj/s1600-h/convite_informix.jpg"><img id="BLOGGER_PHOTO_ID_5376295366982158146" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 282px; CURSOR: hand; HEIGHT: 400px" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhznn47kfGXgUsEkLtHw1ZXNQDxR_2lIUyIvOoSBr4R_2z-cNImEoyl6dOIuBkPpKf5Wx_uYJ3ji6Q8nerGQQ9jEHCL3f3LsO5SOMUNcZNQfPE4IcKD-D2qy0wn04a-gkSs6UJU6srFYPAj/s400/convite_informix.jpg" border="0" /></a><br /><div></div>Ask Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-25670457567883267882009-08-21T16:22:00.000-07:002009-08-22T12:37:04.637-07:00Mutex Contention - Parte INi-hao,<br /><br />Para quem gosta de estudar sobre software com arquitetura multithread irei falar um pouco sobre como o Informix utiliza a Arquitetura DSA (Dynamic Server Architecture) para implementar o controle de threads.<br /><br />Basicamente quando um thread tenta acessar algum recurso em modo exclusivo o mesmo precisa que um latch ou mutex seja alocado.<br /><br />No Informix existem diversas formas de identificarmos os mutexes e seus status, basta usar o onstat:<br /><br />onstat -g lmx: lista todos os latches que estao bloqueados, ou sejam um thread foi marcado com holder e outros threads estao waiters.<br /><br />onstat -g amx: similar ao anterior porem lista todos os latches independentes de status.<br /><br />E muito comum alguns tipos de contencao abaixo:<br /><br />- NSF.LOCK<br /> Este latch indica que o sistema operacional pode estar com o kernel mal-configurado, por exemplo o numero de file descriptors 'e pequeno.<br /><br /> Em toda nova conexao ao banco de dados um file descriptor 'e alocado, em ambiente AIX esse parametro costuma ser definido como ilimitado.<br /> <br /> Para checar sua configuracao conecte-se como usuario informix e rode ulimit -a<br /><br /> Existes outro cenario que esta contencao pode ocorrer, nao e um problema muito comum na maioria das vezes recomendo que o Suporte da IBM seja acionado.<br /><br /> Neste link tem uma nota da IBM sobre este tipo de contencao:<br /> http://www-01.ibm.com/support/docview.wss?uid=swg21145897<br /><br /> A contenção também pode ser um defect:<br /> http://www-01.ibm.com/support/docview.wss?uid=swg1IC50796<br /><br /><br />- DBS_PARTN<br /> Este tipo de latch indica contencao na TBLSPACE, para reduzir isto voce deve distribuir suas tabelas em diversos dbspaces.<br /> Esta contencao ocorre em instancias com um alto volume de threads concorrentes e muitas tabelas no catalogo.<br /><br />http://www-01.ibm.com/support/docview.wss?rs=630&context=SSGU8G&dc=DA400&uid=swg27015907&loc=en_US&cs=UTF-8&lang=en&rss=ct630db2<br /><br />- PT_??????<br /> Aqui sao contencoes de tabelas mesmo, PT significa partition, meios de reduzir este tipo de contencao:<br /> <br /> Onde consta ????? 'e o partnum em hexa, voce deve converte-lo para decimal e acessar a tabela sysmaster:systabnames e identificar o objeto atraves do partnum.<br /><br /> Caso seja um indice , voce deve checar a quantidade de extents ou niveis do indice.<br /><br /> Caso seja uma tabela, voce deve checar a quantidade de extents, ocorrencias de lock wait etc.<br /><br />De forma geral voce deve verificar os caches de dicionario, distribuicao e procedure:<br /><br />onstat -g dic -> ver parametro DD_HASHSIZE / DD_MAXSIZE<br />onstat -g dsc -> ver parametro DS_HASHSIZE / DS_POOLSIZE<br />onstat -g prc -> ver parametro PC_POOLSIZE<br /><br />Lembrete: muitas instalacoes Informix trabalham com estes parametros com valores default.<br /><br />O Cesar Martins tem um artigo muito interessante sobre o tunning no cache de distrbuicao:<br /><br />http://www.imartins.com.br/informix/artigos/configurando-cache-distribuicao-dados<br /><br />Aguardem no proximo capitulo, irei colocar alguns exemplos de como identificar longspings.<br /><br />Saludos<br /> <br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com1tag:blogger.com,1999:blog-4350149978198728408.post-81932100270860507462009-08-07T07:58:00.000-07:002009-08-07T09:47:01.954-07:00Detalhes sobre DBINFONi-hao,<br /><br />Outro dia expliquei ao meu amigo Lud alguns detalhes sobre o DBINFO, achei interessante expor aqui essa dúvida.<br /><br />Lá em meados de 1996 quando eu começei a programar em Informix 4gl (bons tempos!) eu fazia uso de uma estrutura chamada SQLCA, a mesma me retornava algumas informações do tipo:<br /><br />- Numero de linhas processadas no comando SQL<br />- Ultimo numero inserido em um coluna do tipo serial<br />- Isam error<br /><br />Nos dias atuais as linguagens de programação não trabalham ligadas diretamente ao banco de dados, é comum existir o ODBC, OLEDB ou outra camada entre a aplicação e o banco de dados.<br /><br />No caso da funcao DBINFO a duvida do meu amigo foi "Mas oque realmente faz o DBINFO?"<br /><br />A explicação é o DBINFO apenas acessa a estrutura ifx_sqlca_t que é estrutura correspondente ao SQLCA que conhecemos no Informix 4gl.<br /><br />A definição da estrutura ifx_sqlca_t pode ser visualizada em $INFORMIXDIR/incl/esql/sqlca.h<br /><br />Abracos<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-66850158203955400602009-08-02T07:10:00.000-07:002009-08-02T07:16:11.160-07:00Usando cláusula Current em Stored ProcedureNi-hao,<br /><br />Hoje irei falar de uma coisa que ocorre no Informix 7, quando executamos uma procedure e dentro dela temos que usar a cláusula CURRENT, temos um problema pois está cláusula não reflete a data e hora corrente quando a procedure tem um longo tempo de duração.<br /><br />Para este tipo de situação eu criei a procedure abaixo:<br /><br />create procedure "informix".timestamp()<br />returning datetime year to second;<br /><br />define whora datetime year to second;<br /><br />SELECT DBINFO( 'UTC_TO_DATETIME', sh_curtime ) into whora<br /> FROM sysmaster:sysshmvals;<br /><br />return whora;<br /><br />end procedure;<br /><br /><br />O select abaixo acessa a coluna sh_curtime que representa o relógio interno do banco de dados, a função DBINFO converte a coluna sh_curtime do formato integer para data/hora.<br /><br />SELECT DBINFO( 'UTC_TO_DATETIME', sh_curtime ) into whora<br /> FROM sysmaster:sysshmvals;<br /><br /><br />SaludosAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-1668796704334876522009-06-25T14:19:00.000-07:002009-06-25T14:25:58.009-07:00Acelerando a abertura de conexõesOlá,<br /><br />A partir da versão 11.10 do Informix podemos usar um artificio que permite que o processo de abertura de conexões seja acelerado.<br /><br />Quando um cliente solicita a abertura de uma nova conexão o <strong>VP MSC</strong> é oVP responsável pela autenticação da senha no sistema operacional.<br /><br />A idéia aqui é adicionar mais um VP do MSC é reduzir a contenção na chamada de funções dentro deste VP.<br /><br />Para adicionar o novo VP MSC:<br /><br />onmode -p +1 MSC<br /><br />No online.log aparecerá a mensagem abaixo:<br /><br /><strong>Dynamically Added 1 msc vp</strong><br /><strong></strong><br />Para veificar a quantidade de VPs alocados:<br /><br /><strong>onstat -g glo</strong><br /><br />Abraços<br /><br /><strong></strong>Ask Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-21428890756497069092009-05-27T12:41:00.000-07:002009-06-05T12:33:54.784-07:00Identificando Transação AbertaOlá,<br /><br />Muitos desenvolvedores 4gl necessitam saber se na sessão corrente existe uma transação aberta (begin work).<br /><br />O primeiro passo é identificar o ID da sessão corrente através do comando dbinfo.<br /><br /><strong>select dbinfo('sessionid') into wsid</strong><br /><strong>from sysdual</strong><br /><br />Depois faça um acesso em sysmaster:sysrstcb (Rsam Thread Control Block) e identifique o endereço físico da sessão em memória:<br /><br /><strong>select address into waddress from sysrstcb </strong><br /><strong>where sid=wsid</strong><br /><br />Com este endereço procure algumas transação aberta onde o owner seja igual a waddress:<br /><br /><strong>select bitval(flags,2) from systxptab where owner= waddress</strong><br /><br />Se a query retornar valor 1 quer dizer que na sessão especificada foi executado o comando <strong>BEGIN WORK.</strong><br /><br />Abrazos<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-11318857849706544772009-05-21T06:16:00.001-07:002009-05-21T06:28:12.545-07:00Backup de Logical Log para discoOlá,<br /><br />Muita gente se pergunta porque o Informix não faz backup de logical log para disco em pequenos arquivos, como é feito no Oracle.<br /><br />Bom a explicação é que na versão 7 é possivel fazer isto, mas é preciso de efetuar algumas alterações no alarmprogram.sh, é um configuração trabalhosa, mas o recurso existe.<br /><br />Na versão 11 esta necessidade foi implementada de forma muito fácil.<br /><br />Segue abaixo os passos necessários para habilitar esta funcionalidade:<br /><br />No arquivo onconfig define o parâmetro <strong>LTAPEDEV</strong> para um diretório valido:<br /><br /><strong>LTAPEDEV /myinformixlogs</strong><br /><br />Agora é preciso configurar o informix para fazer o backup automático do logs:<br /><br />Editar o arquivo <em>$INFORMIXDIR/etc/alarmprogram.sh</em> e alterar o parâmetros conforme abaixo :<br /><br /><strong>BACKUPLOGS=Y</strong><br /><strong>BACKUP_CMD="ontape -a -d"</strong><br /><br />A partir desta todo log será gravada e um arquivo distinto no diretório informado, o formato padrão do nome dos arquivos é:<br /><br /><strong>hostname_servernum_Ln = serv1_11_307</strong><br /><br />Esta nomenclatura pode ser alterada através da variavel de ambiente:<br /><br /><strong>IFX_ONTAPE_FILE_PREFIX</strong><br /><br />Este recurso é muito útil em pequenas instalações informix, onde os logs são direcionados para disco e serão armazenados posteriormente pois uma solução de backup de file-system.<br /><br />Para quem trabalha com <strong>HDR/RSS</strong> é muito interessante implementar esta feature, pois é possivel enviar os logs do servidor primário para o servidor secundário logo após a sua gravação em disco.<br /><br /><strong><em>Apenas lembre-se que o file-system que contém os logs precisa ter redundância configurada pelo Administrador de Sistema!!</em> </strong><br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-90369958685466240482009-05-15T15:45:00.000-07:002009-05-18T08:05:32.227-07:00Calculando Limites de ParticaoOla,<br /><br />Estou envolvido em um estudo de sizing para determinado ambiente, e me deparei com algo interessante que os Dbas Informix devem estar atentos, que e o limite de alocacao de paginas por particao.<br /><br />Para explicar o problema, a referencia logica de um registro e feita atraves do rowid, no caso do Informix o rowid tem o seguinte format:<br /><br /><strong>0xPPPPPPSS<br /></strong><br />P=Indica a Pagina logica dentro do extent<br />S=Indica o slot onde a linha se encontra dentro na pagina<br /><br />O <strong>rowid </strong>257 quando transformamos para hexadecimal temos 0x101, isto indica pagina logica 1 e slot 01, dentro do slot temos duas informacoes:<br /><br />Offset=E o endereco do byte onde a linha se encontra na pagina<br />len=indica a quantidade de bytes que a linha possui<br /><br />Portanto o Informix para acessar o registros se posiciona na pagina logica, vai ate o slot e le o byte onde inicia a linha e faz a leituras de N (Len) bytes a partir desta posicao.<br /><br />E onde esta o problema citado no inicio do post?<br /><br />Bom, neste formato enderecamos uma quantidade limitada de paginas , por exemplo:<br /><br /><strong>0xFFFFFF = 16777215<br /></strong><br />Digamos que o tamanho da pagina logica do dbspace 'e de 2K, teremos 2*16777215 = 33.554.430 de paginas ou seja 32GB, se quisermos expandir o limite para 128GB temos que criar um dbspace com tamanho de pagina de 8K.<br /><br />Após esta alteração caso o limite seja atingido ai a solução e particionar a tabela mesmo.<br /><br />Lembre-se de nunca fazer isto:<br /><br />select max(rowid) from tabela<br /><br />Isto nao ira retornar o ultimo registros inserido!!<br /><br />SaludosAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-30553576353661343852009-04-21T12:09:00.000-07:002009-04-21T12:35:30.925-07:00Oracle X Sun, e o Mysql?De acordo com os anúncios da midia após a IBM desistir de adquirir a Sun, a Oracle anunciou a intenção de aquisição.<br /><br />O que mais me deixa curioso é o futuro do Mysql, apesar de pouco contato com o produto ele possui uma participação expressiva no mercado de soluções embarcadas , principalmente nos pequenos ISVs.<br /><br /><br />Vejam alguns numeros sobre o Mysql:<br /><br />- 70.000 Downloads por Dia!!<br />- Mais de 12.000.000 de instancias em producao!! (Claro que isto inclui as instalacoes open-source).<br /><br />Se a IBM tivese comprado a Sun com certeza o Mysql seria continuado, pois este e o perfil da IBM, manter software legado , o Mysql seria integrado a Divisao de IM e iria coexistir com o DB2 e Informix, com este cenário seria possivel que a IBM voltasse para a primeira posição no market share de bancos de dados.<br /><br />Em relação ao suporte do Mysql, quando a empresa foi adquirida pela Sun muitas pessoas de suporte e desenvolvimento se desligaram da empresa, inclusive um dos fundados (monty) foi atuar em uma empresa startup e agora se dedica ao MariaDb.<br /><br />Inclusive o próprio monty ja postou algo em seu blog:<br /><a href="http://monty-says.blogspot.com/2009/04/to-be-free-or-not-to-be-free.html">http://monty-says.blogspot.com/2009/04/to-be-free-or-not-to-be-free.html</a><br /><br />Com esta aquisição a Oracle abocanhou 2 tecnologias open-source de uma só vez, que foram o Java e o Mysql, agora a coisa fica menos interessante para a SAP e IBM que pregam o uso de java extensivamente.<br /><br />Historicamente falando de tecnologia de banco de dados a Oracle ja Adquiriu:<br /><br />- RDB da Digital , foi o que deu muita base para o OPS (Parallel Server)<br />- Berkeley DB<br />- Timesten (In-memory database)<br />- Mysql<br /><br />Agora a Oracle se torna uma empresa completa com soluções que vão de Hardware, Software para infra-estrutura a ERP etc.<br /><br />Sera que agora a Oracle quer ser a Digital Corporation e peitar a IBM?<br /><br />Vamos aguardar as cenas do próximo capitulo.<br /><br />VagnerAsk Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0tag:blogger.com,1999:blog-4350149978198728408.post-55749116195221004072009-04-06T18:14:00.000-07:002009-04-06T18:36:18.123-07:00Alter In-PlaceAlter In-Place é uma daquelas features que ninguém sabe que existe até no dia que é preciso fazer um alter table no Oracle ou Db2.<br /><br />Veja a tabela abaixo:<br /><br /><em>create table tabela1<br />( codigo integer,<br />campo1 char(30)<br />)<br /></em><br />Aqui neste ponto insermos 10GB de dados na Tabela!!!<br /><br />Agora por uma mudança na área de negócio a tabela irá receber mais uma coluna, porém ela será criada antes da coluna campo1.<br /><br /><em>alter table tabela1<br />add (novo_campo integer) before campo1;<br /></em><br />Quanto tempo o Informix demorou para adicionar uma coluna na tabela? 1 Segundo!!!<br /><br />Como isto é possivel magia negra? Não, pra quem é safo sabe que o Informix apenas fez o versionamento da estrutura da tabela, os dados antigos estão com a mesma estrutura, os novos inserts farão com que os dados sejam inseridos no novo lay-out.<br /><br /><strong>Se é tão fácil assim porque no Oracle/Db2 tenho que recriar a tabela para fazer este tipo de alteração?</strong><br /><br />É simples, nos outros RDBMS a estrutura da tabela é armazenada fisicamente no mesmo bloco com os dados, isto é bom se olharmos no caso de um crash onde a partition page seja destruida, os dados continuam no disco e é possivel extrair com as ferramentas de suporte avançado.<br /><br /><strong>Então a estrutura do Informix é pior?</strong><br /><br />Claro que não, o produto foi projetado para operar com esforço reduzido de administração, com este tipo de feature é possivel criar appliances (soluções) onde não é necessário intervenção manual.<br /><br />Resumindo um bom Arquiteto de Soluções ou um bom Desenvolvedor pode criar soluções embutidas e espalhar sua solução por ai sem ter que se preocupar com o banco de dados.<br /><br /><strong>Se eu escrevo solução embarcada porque não usar Mysql ou Postgress?<br /></strong><br />Bom o Mysql acabou de ser adquirido pela Sun, o Postgress é questão de tempo até alguem adquirir, o sonho do open-source acabou, só é bom para o fornecedor que economizou milhões em pesquisa e desenvolvimento que foi feito pela comunidade open-source.<br /><br />Voltando ao comando alter table do Informix, existem três tipos de alter in-place:<br /><br /><strong>Slow Alter</strong><br /><br />Neste caso o Informix efetua o reorg da tabela inteira, caso a tabela seja muito grande pode-se correr o risco de long-transaction, um exemplo pode ser um alter table que altera o tipo de dados de uma coluna de varchar(20) para char(40).<br /><br /><strong>In-Place Alter</strong><br /><br />Quando ocorre alteracao na estrutura da tabela e o Informix efetua o versionamento do layout, assim nao executando reorg da tabela.<br /><br /><strong>Fast Alter</strong><br /><br />O fast alter ocorre quando:<br /><br />- ocorre alteracao do next extent size<br />- uma constraint é criada ou dropada<br />- o lock mode da tabela é alterado<br />- um atributo da tabela é alterado para único.<br /><br />Como sempre quem quiser mais informações sobre alter in-place acesse:<br /><a href="http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp">http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp</a><br /><br />O objetivo deste post foi por em cena uma feature bacana que muitas vezes ninguém nem sabe que existe.Ask Ponteshttp://www.blogger.com/profile/17629906286038623053noreply@blogger.com0