Archive for agosto, 2008

ORA-12899: VALUE TOO LARGE FOR COLUMN

miércoles, agosto 27th, 2008

Tiempo atrás había postado un link que resolvía este problema bajo algunas circunstancias.
Tiempo después me encontré con el mismo problema en una máquina con otro sistema operativo, y tuve que aplicar otra solución y en ese momento no publiqué como lo solucioné. A pedido de Carlos, amigo visitante de mi sitio, quien me preguntó por email si existia alguna otra forma de solucionar este problema, acudí a mis apuntes y estoy dejando aquí 2 pasos que solucionaron mi problema particular en aquella época.

Básicamente este problema está relacionado con la conversión de caracteres de oracle, de un banco para otro. Léase NLS_CHARACTERSET.
Por tal motivo pido atención a ver cual es su problema en particular, para saber cual procedimiento aplicar, es por eso que dejo links relacionados, que me ayudaron a encontrar la solución en aquel momento.

Problema 1:

c:\sqlplus /nolog
conn / as sysdba;

select parameter,value from nls_session_parameters where parameter=’NLS_LENGTH_SEMANTICS’;
alter system set nls_length_semantics=CHAR scope=both;

shutdown e startup para verificar.

Problema 2:

c:\sqlplus /nolog
conn / as sysdba;
shutdown;
startup restrict;
Alter database character set INTERNAL_USE WE8ISO8859P1;
shutdown;
startup open;

A continuación links de apoyo, que me ayudaron mucho y les estoy muy agradecido.

http://www.oracle.com/technology/oramag/oracle/03-mar/o23sql.html
http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/ch2charset.htm#g1015066
http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/applocaledata.htm#i635016
http://users.telenet.be/oraguy.be/Characterset1.htm
http://www.oracle-base.com/articles/10g/CharacterSetMigration.php

Usted elija la opción y el character set que corresponda.

Fabricio De los Santos
Gerencia de Proyectos –
Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Erro de Oracle, reorganizando um atributo Caracter para um tamanho menor com GeneXus X

lunes, agosto 25th, 2008

Simplesmente tinha um campo Character(40) onde o tamanho era muito grande para o string a ser guardado nele.
A decisão foi de mudar para Character(9).
Na hora de reorganizar tive um erro que não podia reorganizar para um campo menor porque os dados não entravam na coluna.
Olhando os dados nenhum deles era maior a 9.
Existe uma diferença no banco de dados no tratamento de atributos CHAR e VarChar, espacio reservado, etc, para o tipo Varchar é menor.
Solução sem entrar no detalhe de porque isso estava acontecendo (ja que depois não consegui reproduzir novamente o erro), simplesmente passei o campo CHARACTER(40) para VARCHAR(40), e depois para VARCHAR(9), para por ultimo passar para CHAR(9) e não deu problemas.
Conclusão: O erro não sei porque aconteceu, mas o que sim é seguro que o length do string antes da conversão, não era maior que 9, já que após esses 3 passos CHAR -> VARCHAR -> CHAR, a tabela ficou como desejava sem problemas.

Não reportei este caso porque não consegui reproduzir, então acho que é um workaround válido se volta a acontecer.

Fabricio De los Santos
Gerência de Projetos – Consultoria GeneXus –
ERP – Sistemas de Missão Crítica – Bancos de Dados.

Veja meus blogs em:
www.fabriciodelossantos.com

Ser eficaz ou ser eficiente?

viernes, agosto 22nd, 2008

A primeira vez que me explicaram a diferença entre eficaz e eficiente, usaram o exemplo de uma pessoa que queria chegar a um lugar determinado no importando o caminho a seguir. Ela era eficaz por ter chegado, em quanto seria eficiente se tivesse escolhido a melhor rota, seja por caminho mais curto ou rápido.
A partir desse dia preferi ser eficiente, achei que era melhor, até que um dia li algo mais ou menos assim:

O eficiente faz as coisas da maneira correta, o eficaz faz aquilo que agrega mais valor.

É muito interessante este conceito.
Hoje em dias as empresas procuram as pessoas que agregam mais valor, mesmo parecendo contrario ao conceito de ser eficiente, na realidade hoje em dia tem muito valor que você chegue na empresa e imediatamente faça uma revolução positiva, as empresas precisam resultados e os precisam para ontem, então o melhor é ser eficaz e eficiente, mas se tem que escolher, meu conselho, seja eficaz, depois capriche na eficiência.

Fabricio De los Santos
Gerência de Projetos – Consultoria GeneXus –
ERP – Sistemas de Missão Crítica – Bancos de Dados.

Veja meus blogs em:
www.fabriciodelossantos.com

Renomear um atributo em GeneXus X

jueves, agosto 21st, 2008

Quando queremos renomear um atributo em GeneXus X, dependendo da ordem ou da complexidade do que queremos fazer, podemos ter algumas dores de cabeça, por exemplo se estamos falando de um atributo foreign key.

Para evitar alguns problemas, o primeiro que temos que fazer é tirar a constraint de null nas trns onde sejam referenciados. Após isso, em Workwith Atributes, com F4 para cada atributo podemos renomear ele.
Logo F5 para gerar o impacto da base de dados.
Uma vez executada a reorganização novamente em GeneXus colocamos a propriedade para não permitir o atributo nulo.

Fabricio De los Santos
Gerência de Projetos – Consultoria GeneXus –
ERP – Sistemas de Missão Crítica – Bancos de Dados.

Veja meus blogs em:
www.fabriciodelossantos.com

Iphone objeto de desejo

jueves, agosto 21st, 2008

O Iphone foi homologado finalmente o dia 13 de agosto aqui no Brasil pela Anatel.

Procurei informação de quando começa a venda aqui em São Paulo nas empresas Vivo e Claro.

Em junho na operadora Claro me disseram quem em julho começariam a vender.
O mesmo dia na Vivo não tinham informação.

Em julho voltei na operadora Claro, e me disseram que em agosto começariam a vender.
O mesmo dia na Vivo não tinham informação.

Em agosto (este fim de semana), após de ler que tinha sido homologado para o uso aqui no Brasil, na operadora Claro me disseram que tal vez em Novembro começariam a vender.

Obvio nem fui a perguntar, mas com certeza na Vivo a informação seria mais confiável, o seja:

Ninguém tem ideia de quando vão começar a vender oficialmente o iphone no Brasil.

Fico aguardando para testar um Sistema Web realizado com GeneXus X no iphone.

Fabricio De los Santos
Gerência de Projetos – Consultoria GeneXus –
ERP – Sistemas de Missão Crítica – Bancos de Dados.

Veja meus blogs em:
www.fabriciodelossantos.com

ORA-01400 GeneXus X e Oracle

miércoles, agosto 20th, 2008

Este erro está prometido para ser corrigido em GeneXus logo em breve.
O problema é porque criamos uma tabela com uma chave primaria numérica.
E depois decidimos que ela seja autonumérica.
Então fomos nas propriedades do atributo e marcamos ele para autonumber = true.
Executamos a reorganização e tudo parece certo.
Mas na hora de executar, nos encontramos com esse problema.
O que aconteceu e que GeneXus não criou o trigger correspondente, e sim a sequência.

Bem, a solução é entrar no GeneXus novamente e marcar esse atributo para autonumber = false.

Executar F5 e GeneXus vai mostrar a sequência e o trigger a ser apagado.

Só que não vamos a apagar nada, vamos pegar a sentencia do trigger por exemplo:

DROP TRIGGER AN$ZZZNossoAtributo

(tem que marcar e com botão direito copiar, senão não vai)

para criar a mão o trigger no oracle da seguinte forma.

create or replace TRIGGER AN$ZZZNossoAtributo BEFORE INSERT ON NossaTabela FOR EACH ROW BEGIN SELECT NossoAtributo.NEXTVAL INTO :new.NossoAtributo FROM DUAL; END;

ZZZ é o número interno que identifica o atributo en GeneXus.

Listo, agora voltamos a GeneXus, cancelamos a reorganização e colocamos o atributo novamente com a propriedade de autonumber = true.

Fabricio De los Santos
Gerência de Projetos – Consultoria GeneXus –
ERP – Sistemas de Missão Crítica – Bancos de Dados.

Veja meus blogs em:
www.fabriciodelossantos.com