| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/07/2011 16:35:00
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Oi,
Estamos usando o HSQLDB numa aplicação aqui, mas recentemente essa aplicação passou para notebooks. O problema é que se o usuário estiver com o notebook e a bateria acabar, o sistema é desligado abruptamente e o banco fica corrompido. O problema ocorre também nos desktops, se o cabo de energia for puxado, ou se o sistema for resetado pelo botão de power.
Alguém sabe se é possível evitar o corrompimento desses dados (eu imagino que a resposta seja "não é possível", mas não custa perguntar, heheeh )?
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/07/2011 17:54:55
|
RafaelViana
GUJ Master
Membro desde: 23/03/2008 18:56:02
Mensagens: 1257
Localização: Venâncio Aires/RS
Offline
|
Não uso o HSQLDB, mas achei algo que talvez possa te ajudar:
http://hsqldb.org/doc/guide/apc.html
Appendix C. Hsqldb Database Files and Recovery
Database is aborted
This may happen by sudden power off, Ctrl+C in Windows, but may be simulated using the command SHUTDOWN IMMEDIATELY.
Aborted Database state
The test.properties still containes 'modified=yes'.
The test.script contains a snapshot of the database at the last checkpoint and is OK.
The test.data file may be corrupt because the cache in memory was not written out completely.
The test.backup file contains a snapshot of test.data that corresponds to test.script.
The test.log file contain all information to re-do all changes since the snanapshot. As a result of abnormal termination, this file may be partially corrupt.
Repair
The current test.data file is corrupt, but with the old test.data (from the test.backup file and test.script) and the current test.log, the database is made up-to-date. The database engine takes these steps:
Procedure C.3. Database Repair
1. Restore the old test.data file from the backup (uncompress the test.backup and overwrite test.data).
2. Execute all commands in the test.script file.
3. Execute all commands in the test.log file. If due to corruption, an exception is thrown, the rest of the lines of command in the test.log file are ignored.
4. Close the database correctly (including a backup).
|
Rafael Rodrigues Viana
Estudando Java e Flex
Blog: http://www.cauirs.com.br/rafael/
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/07/2011 18:26:10
|
Adelar
GUJ Master
![[Avatar]](/images/avatar/4ad38ecf2884a47a5efa657f3358e635.jpg)
Membro desde: 31/10/2008 10:07:36
Mensagens: 1237
Localização: Cascavel
Offline
|
Acho que não. Mesmo se tentar recuperar os dados ainda vai ter corrompidos depois do desligamento forçado. Achava que o log não era corrompido neste caso
|
"Errando e aprendendo com os bugs"
http://www.cajuscript.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/07/2011 20:44:02
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
O guide foi o primeiro lugar que eu olhei. Mas, infelizmente, isso só constata que ele corrompe mesmo. =/
Eu imaginei que não teria nenhum jeito de contornar o problema. Parece ser uma falha da arquitetura dele.
E o bichinho corrompe fácil, fácil. O jeito é apelar para um "workaround" (para não dizer xunxo mesmo).
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/07/2011 20:52:14
|
Adelar
GUJ Master
![[Avatar]](/images/avatar/4ad38ecf2884a47a5efa657f3358e635.jpg)
Membro desde: 31/10/2008 10:07:36
Mensagens: 1237
Localização: Cascavel
Offline
|
Tanto que não é recomendado para produção... mas a gente usa
Alguma das configurações dele (in-memory e tal) deve ser melhor neste caso... mas nenhuma parece resolver o problema. Tivemos problema com ele também neste caso... mas como é servidor que fica ligado sempre e as informações podem ser facilmente recuperadas isso foi deixado de lado.
|
"Errando e aprendendo com os bugs"
http://www.cajuscript.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2011 08:16:08
|
andreiribas
JavaEvangelist
![[Avatar]](/images/avatar/39016cfe079db1bfb359ca72fcba3fd8.jpg)
Membro desde: 30/04/2006 10:43:13
Mensagens: 478
Localização: Curitiba - PR
Offline
|
Aqui usamos o HSQLDB em uma aplicação embarcada que não pode falhar.
A solução que encontramos foi usar um workaround:
Temos um job que fica rodando a cada tanto tempo chamando o comando CHECKPOINT, e às vezes faz o defrag do log também.
Aqui não tivemos perda de performance, pois o BD é usado somente com a aplicação local.
http://hsqldb.org/doc/guide/ch09.html#checkpoint-section
|
SCJP 6.0
OCE JSP and Servlet Developer, JEE 6 |
|
|
 |
|
|