Fórum Erro banco gds_#receive failed #47405
13/10/2004
0
Estou com este erro pela terceira vez, uso Interbase 6.0 Delphi 6, servidor Linux Debian. o banco principal esta com 2.0gb.
Apos alguns dias de uso do sistema, informa erro nas estacoes ´request netword host 192.168.XXXX´.
Quando faço gfix nao apresenta erro, mas no backup tanto pelo ibconsole quanto gbak, apresenta erro em alguma tabela ´gds_receive failed´, e para o backup.
Sou obrigado a dar um drop na tabela com este erro e continuar com backup e depois restore.
Até o momento as tabelas com erro sao recuperaveis, o problema é o transtorno ao cliente devido a paralisacao e a possivel perda de uma tabela nao recuperavavel devido as inconsistencias de dados.
Obrigado.
Bibi
Curtir tópico
+ 0Posts
13/10/2004
Tap_pedroso
para q serve o gbak?
agradeço desde já
Gostei + 0
13/10/2004
Aroldo Zanela
Colega,
Recomendo uma pesquisa no fórum ou a abertura de uma thread específica para o seu problema.
Gostei + 0
13/10/2004
Aroldo Zanela
Colega,
Nunca fui usuário do IB6, mas pelo que sei o limite teórico do mesmo é de 2Gb e isso pode ser o problema. É possível fazer uma limpeza no banco, visando uma drástica redução?
Gostei + 0
13/10/2004
Gandalf.nho
Gostei + 0
13/10/2004
Vinicius2k
Acho que não necessariamente... já pelo que eu sei, o limite está atrelado ao tamanho máximo de arquivo suportado pelo O.S, no caso, 2 GB é para Win 9X/Me (FAT32) e 4 GB para plataforma NT (NTFS) e Linux* (tive informações vagas de que não seriam todas as distros do Linux que permitiriam 4 GB, mas como não trabalho com ele, não sei se existe algum fundamento nisso...)
Como o colega usa Linux, não creio que seja limitação do O.S, e ao que me parece, é uma falha do IB com um arquivo tão grande... (mera suposição em virtude da mensagem)...
Na minha opinião, uma tentativa de migração para o Firebird, como sugerido pela gandalf, é a melhor alternativa no momento... como é relativamente simples desinstalar um servidor e instalar outro (isso no Windows, não sei no Linux) seria a forma mais rápida de eliminar uma possibilidade...
T+
Gostei + 0
14/10/2004
Afarias
Eu acho q já está na hora de você adicionar um novo arquivo -- Se não me engano no linux o limite é 2Gb por arquivo.
Qual a versão do seu IB ?? A partir do 6.0.1.6 ele deve retornar um erro quando o arquivo chegar ao seu limite, infelizmente, versões anteriores corrompiam a base.
Já passou GFIX -MEND no banco e depois tentou realizar o backup?
T+
Gostei + 0
18/10/2004
Bibi
|Quantos arquivos afinal tem esse banco de dados?? Qual a page_size do mesmo??
- Este banco tem 490 tabelas, antes estava com page_size 4096, e recentemente aumentei para 8192 na tentativa de solucionar, contudo nao adiantou.
|Eu acho q já está na hora de você adicionar um novo arquivo -- Se não me engano no linux o limite é 2Gb por arquivo
- Nao sei realmente qual o limite de tamanho por arquivo no Linux, contudo se for apenas 2 GB, creio ser pouco tal limite !!!!
|Qual a versão do seu IB ?? A partir do 6.0.1.6 ele deve retornar um erro quando o arquivo chegar ao seu limite, infelizmente, versões anteriores corrompiam a base.
- No about do IBCONSOLE apresenta version 1.0.0.315
Conforme alguns comentaram, estou seriamente pensando em migrar ou para Interbase 7.1, ou para Firebird, mas antes de migrar realmente gostaria de descobrir a causa deste erro, pois se eu migrar talvez nao entenda o que causou o erro.
Por enquanto estou de maos atadas, rezando pra que nao corrompa o banco novamente.
Alguem tem mais alguma ideia ?
Gostei + 0
18/10/2004
Bibi
afarias disse:
|Já passou GFIX -MEND no banco e depois tentou realizar o backup?
-Sim, tentei varios parametros de gfix, inclusive -m
gfix -m -f -i -user sysdba -password xxxxxx dados.gdb
ocorre o mesmo erro
gds_receive failed,
Só consigo fazer backup de der um drop nas tabelas com erro e fazer restore, antes de dar um drop faço um extract como insert deste banco corrompido e apos restaurar insiro os dados novamente.
Gostei + 0
18/10/2004
Afarias
|recentemente aumentei para 8192 na tentativa de solucionar, contudo
|nao adiantou.
Mudar o page_size não adianta, só queria a informação (por outro motivo) -- bem, mas vc não me falou quantos ARQUIVOS tem seu banco de dados... Estou achando q apenas 1 e isso é seu problema, vc deve criar novos arquivos visto q ja atingiu o limite de 2Gb por arquivo (limite este do Interbase 6.0)
|- Nao sei realmente qual o limite de tamanho por arquivo no Linux,
|contudo se for apenas 2 GB, creio ser pouco tal limite !!!!
Sim, no Linux é 2Gb (na maior parte das distribuições pelo menos), vc deve sim adicionar 1 novo arquivo a seu banco de dados
Esse limite é apenas no IB 6.0, mas note q não é um limite do tamanhh do banco de dados, é apenas o limite do tamanho dos arquivos do banco de dados. Um banco de dados pode conter vários arquivos.
|- No about do IBCONSOLE apresenta version 1.0.0.315
O IBConsole não interessa a vc. Tem q estar atento a versão do Interbase.
|Conforme alguns comentaram, estou seriamente pensando em migrar
|ou para Interbase 7.1, ou para Firebird, mas antes de migrar realmente
|gostaria de descobrir a causa deste erro, pois se eu migrar talvez nao
|entenda o que causou o erro.
O que causou o erro foi o fato de vc atingir o limite do arquivo de banco de dados e não ter adicionado novos arquivos. O Interbase 6.0 tinha um limite de 2GB por arquivo no Linux e 4Gb no Windows NT, quando vc tem um banco maior q esse limite, deve adicionar mais arquivos.
Essa limitação foi removida nas versões atuais do IB e no FB com a implementão do I/O de 64bits, no FB 1.0 já havia uma versão com este suporte entretanto é importante vc verificar a sua distribuição Linux quanto a compatibilidade e tb tomar conhecimento dos compatibilidades/limites impostos por cada sistema de arquivo seja no Linux ou Windows.
|Por enquanto estou de maos atadas, rezando pra que nao corrompa o
|banco novamente.
Adicione 1 novo arquivo a sua base e isso não ocorrerá.
|-Sim, tentei varios parametros de gfix, inclusive -m
|gfix -m -f -i -user sysdba -password xxxxxx dados.gdb
|ocorre o mesmo erro gds_receive failed,
gfix -v -f
depois
gfix -m -i
depois
backup/restore
|Só consigo fazer backup de der um drop nas tabelas com erro e fazer
|restore, antes de dar um drop faço um extract como insert deste banco
|corrompido e apos restaurar insiro os dados novamente.
certifíque-se q a base esteja OK, adicione 1 novo arquivo, faça um backup e restaure para validar tudo.
T+
Gostei + 0
18/10/2004
Bibi
Muito obrigado pelas dicas, e obrigado a todos que contribuiram para esclarecer minhas duvidas.
Valeu
T+
Gostei + 0
18/10/2004
Bibi
[b:c0f3ebed76]afarias[/b:c0f3ebed76] escreveu:
| Sim, no Linux é 2Gb (na maior parte das distribuições pelo menos), vc deve sim adicionar 1 novo arquivo a seu banco de dados
Esse limite é apenas no IB 6.0, mas note q não é um limite do tamanhh do banco de dados, é apenas o limite do tamanho dos arquivos do banco de dados. Um banco de dados pode conter vários arquivos. |
- o banco ´dados.gdb´, tem 2.1GB, voce quer dizer que um table nao pode ter mais que 2 GB ou o dados.gdb nao pode ter mais que 2 GB. ???
Gostei + 0
18/10/2004
Afarias
|ter mais que 2 GB ou o dados.gdb nao pode ter mais que 2 GB. ???
o arquivo físico ´dados.gdb´ não pode ter mais q 2GB
as tabelas são apenas elementos lógicos, não se preocupe com elas.
um banco de dados pode conter diversos arquivos físicos (ex: banco.gdb + banco2.gdb + banco3.gdb + ...)
para adicionar um novo arquivo físico ao seu banco de dados, e aproveitar para não deixar isso ocorrer novamente, vc faz::
ALTER DATABASE ADD FILE ’banco2.gdb’ LENGTH nnn
ADD FILE ’banco3.gdb’;
onde nnn é o número máximo de páginas q o segundo banco vai ter. Se estiver usando 4096 acho q nnn pode ser 500000 (acho q isso dá 2GB se não me engano, verifique quantas páginas seu banco tem atualmente)
note q neste exemplo estou adicionando 2 arquivos e não apenas 1, isso serve pq quando o IB esgotar o 2º arquivo ele automaticamente vai para o 3º arquivo evitando que este problema volte a ocorrer com vc.
vc pode tb dividir seu banco durante o restore do backup, exemplo::
gbak -r arquivo.gbk banco.gdb 480000 banco2.gdb
onde 480000 é o número de páginas máximo do arquivo 1 ´banco.gdb´ (veja ai o melhor número para vc) após isso o restante da base vai para o arquivo 2 ´banco2.gdb´
T+
Gostei + 0
18/10/2004
Bibi
Mais uma vez muito obrigado, vou adicionar mais arquivos fisicos e estudar a possibilidade de migrar para Firebird ou Interbase 7.
Valeu mesmo.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)