[firebase-br] Migração de bancos

Eduardo Jedliczka jedyfb em gmail.com
Ter Maio 5 11:40:25 -03 2009


Entendo o seu ponto de vista. Sei de muitos casos (e até presenciei
alguns) que precisariam ser migrados (via PUMP) dados de uma base para
outra - pelos mais variados motivos.

Acredito que este procedimento deveria ser realizado pessoalmente, mas
imagino que seja possível, se for tomado muito cuidado (mas muito
mesmo), de ser feito pelo cliente.

Escreva um programa "migrador" que instale o Firebird 2.1 numa outra
porta (que tal 3055 ?) e com o banco "vazio". Depois rode o aplicativo
de migração, transferindo os dados de um banco para o outro - comitando
a cada 1000 ou 2000 registros e no final de cada tabela dar um count
para ver se tudo está lá...

Para ser sincero eu nunca fiz testes, mas sei que o Firebird 2.1 adotou
outro charset para as tabelas de sistema, e talvez seja possível criar
campos e tabelas acentuados (mas é só palpite pois não tenho como testar
isto agora).

Se funcionar, você está salvo (ok... vai dar trabalho mas não será o fim
do mundo) se não funcionar... acho melhor deixar do jeito que está, pois
como diz o velho deitado.... quanto mais se mexe mais fede!

Quanto ao puxão de orelha, não foi "exatamente" para você...
infelizmente tem muito "programa - a - dor" metido a esperto que corre
atrás de "gambiarras" para não ter que resolver um problema.

Confesso que não gostaria de estar no seu lugar.

Abraço

Eduardo Jedliczka

Em Ter, 2009-05-05 às 11:02 -0300, Edson Marco escreveu:

> Infelizmente não é tão simples. Hoje temos o maior sistema para igrejas
> católicas do Brasil, com mais de 600 paróquias utilizando-o e em todo
> território nacional. Então eu preciso tentar automatizar isto. Ir ao cliente
> não é uma opção.
> 
> É.. eu também não gosto de mecher com os padrões dos bancos, mas herdei
> isto. E acho que não foi direcionado a mim, mas eu não acho que o Firebird
> não presta.
> 
> Não sei o que o desenvolvedor que deu inicio ao projeto tinha na cabeça, mas
> ele por algum motivo gostou disto e o fez.
> 
> E como todo o sistema trabalha nesta estrutura de nomes de campos com
> caracteres especiais. Alterar todo o sistema não é uma opção viável.
> 
> Então busco uma solução no banco. Há alguma, ou estou preso a esta versão
> (por causa do collate)? Não entendo muito bem sobre o collate no firebird,
> mas se for possível alterar as tabelas das versões mais novas do Firebird,
> eu as faço também (para não ter que mecher no sistema inteiro).
> 
> 2009/5/5 Eduardo Jedliczka <jedyfb em gmail.com>
> 
> > Você não vai conseguir migrar este banco.... nunca deve-se alterar as
> > tabelas de sistema !!! você pode FACILMENTE perder um banco de dados! E
> > depois ficar falando que o Firebird não presta... (veja se alguém tem
> > coragem de alterar uma tabela de sistema do Oracle)
> >
> > Como, aparentemente, você ainda consegue conexão com o mesmo, sugiro que
> > extraia o metadata dele (via ibexpert, ou algum programa do gênero)
> > recrie o banco na nova versão do FB, e faça um PUMP dos dados.
> >
> > Se você tem um programador a sua disposição sugiro que ele mesmo faça um
> > programa que, tabela por tabela,  leia todos os campos do banco
> > "bichado" e grave no banco "novo", assim poderá tratar qualquer problema
> > de charset que exista.
> >
> > Abraço
> >
> > Eduardo
> >
> > Em Ter, 2009-05-05 às 09:05 -0300, Edson Marco escreveu:
> >
> > > Pessoal é uma migração de bancos 1.5 para 2.1 (ou mesmo 2.0). Sei que
> > esta
> > > pergunta já foi feita diversas vezes aqui. Mas minha situação é um pouco
> > > diferente (eu mesmo não tinha visto nada parecido).
> > >
> > > Na empresa que eu trabalho, há um sistema (feito em delphi para titulo de
> > > curiosidade) que roda com o firebird 1.5.2.4731, e com collate br.
> > >
> > > O desenvolvedor que criou o sistema fez uma alterações nas tabelas de
> > > sistema para que seja possível utilizar nomes de campos (tabelas,
> > procedures
> > > e views) acentuados.
> > >
> > > DEFAULT CHARACTER SET ISO8859_1;
> > >
> > > CREATE DOMAIN CAMPOTABELA AS CHAR(31) CHARACTER SET NONE;
> > >
> > > update RDB$RELATION_FIELDS set
> > > RDB$FIELD_SOURCE = 'CAMPOTABELA'
> > > where (RDB$FIELD_NAME = 'RDB$FIELD_NAME') and
> > > (RDB$RELATION_NAME = 'RDB$RELATION_FIELDS')
> > > ;
> > >
> > > update RDB$RELATION_FIELDS set
> > > RDB$FIELD_SOURCE = 'CAMPOTABELA'
> > > where (RDB$FIELD_NAME = 'RDB$RELATION_NAME') and
> > > (RDB$RELATION_NAME = 'RDB$RELATION_FIELDS')
> > > ;
> > >
> > > update RDB$RELATION_FIELDS set
> > > RDB$FIELD_SOURCE = 'CAMPOTABELA'
> > > where (RDB$FIELD_NAME = 'RDB$FIELD_SOURCE') and
> > > (RDB$RELATION_NAME = 'RDB$RELATION_FIELDS')
> > > ;
> > >
> > > update RDB$RELATION_FIELDS set
> > > RDB$FIELD_SOURCE = 'CAMPOTABELA'
> > > where (RDB$FIELD_NAME = 'RDB$QUERY_NAME') and
> > > (RDB$RELATION_NAME = 'RDB$RELATION_FIELDS')
> > > ;
> > >
> > > update RDB$RELATION_FIELDS set
> > > RDB$FIELD_SOURCE = 'CAMPOTABELA'
> > > where (RDB$FIELD_NAME = 'RDB$BASE_FIELD') and
> > > (RDB$RELATION_NAME = 'RDB$RELATION_FIELDS')
> > >
> > > Tá... agora o problema é que eu não consigo migrar a base, mas o pior de
> > > tudo é que não é possível nem fazer manutenção desta. Um Gbak/Restore é
> > > impossível, ele sempre da erro.
> > >
> > > Tem alguma versão especifica (da 2.0 ou 2.1) para que eu possa migrar, ou
> > > podem indicar alguma literatura que possa me auxiliar nisto?
> > >
> > > Obrigado.
> > >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> 
> 
> 



Mais detalhes sobre a lista de discussão lista