{"id":517,"date":"2013-06-24T13:30:23","date_gmt":"2013-06-24T16:30:23","guid":{"rendered":"http:\/\/blog.abratel.com.br\/?p=517"},"modified":"2013-06-24T13:30:23","modified_gmt":"2013-06-24T16:30:23","slug":"reparando-e-restaurando-base-interbasefirebird","status":"publish","type":"post","link":"https:\/\/blog.abratel.com.br\/?p=517","title":{"rendered":"Reparando e restaurando base Interbase\/Firebird"},"content":{"rendered":"<p>O Interbase possui dois modos de escrita:<\/p>\n<p>S\u00edncrona e Ass\u00edncrona<\/p>\n<p>S\u00edncrona \u2013 Dados s\u00e3o gravados em disco imediatamente.<\/p>\n<p>Ass\u00edncrona \u2013 \u00c9 a escrita considerada \u201ccuidadosa\u201d, pois os dados s\u00e3o gravados assim que a transa\u00e7\u00e3o for commitada. A desvantagem \u00e9 que em ambiente de trabalho windows, estas instru\u00e7\u00f5es s\u00e3o ignoradas, uma vez que o pr\u00f3prio sistema operacional controla estas tarefas. Em sistemas como Linux e\/ou Unix, este tipo de escrita funciona muito bem.<\/p>\n<p>A vantagem deste tipo de escrita \u00e9 a performance, uma vez que o sistema operacional ir\u00e1 gerenciar o cache de dados. Mas \u00e9 preciso ter uma pol\u00edtica muito boa de backup, para o caso de acontecer algum problema de corrup\u00e7\u00e3o.<\/p>\n<p>Na vers\u00e3o 6 do Interbase, ass\u00edncrona \u00e9 a escrita padr\u00e3o.<\/p>\n<p><strong>Ajustando a escrita<\/strong><\/p>\n<p>gfix -write sync banco_de_dados.gdb<br \/>\n\/\/ajusta em modo S\u00edncrono<\/p>\n<p>gfix -write async banco_de_dados.gdb<br \/>\n\/\/ajusta em modo Ass\u00edncrono<\/p>\n<p><strong>Reparando o banco<\/strong><\/p>\n<p>Inicialmente, poder\u00edamos utilizar v\u00e1rios programas para proceder com a recupera\u00e7\u00e3o do banco de dados, mas o pr\u00f3prio Interbase possui uma excelente ferramenta para isso.<\/p>\n<p>Esta ferramenta \u00e9 o GFIX que se encontra instalado no diret\u00f3rio BIN do banco de dados, e funciona em linha de comando no Prompt do MS-DOS.<\/p>\n<p>A primeira coisa a ser definida, para facilitar e muito o trabalho, \u00e9 incluir vari\u00e1veis de ambiente no sistema operacional, onde iremos definir usu\u00e1rio, senha e localiza\u00e7\u00e3o (path) do GFIX. Para tanto, inclua as linhas abaixo no arquivo AUTOEXEC.BAT e depois disso reiniciar o computador:<\/p>\n<p>SET ISC_USER=SYSDBA<br \/>\nSET ISC_PASSWORD=masterkey<br \/>\nSET PATH=%PATH%;c:\\arquiv~1\\borland\\interb~1\\bin<\/p>\n<p>Note que a vari\u00e1vel SET PATH poder\u00e1 mudar de acordo com o diret\u00f3rio de instala\u00e7\u00e3o do interbase.<\/p>\n<p>Caso o sistema operacional seja o Windows 2000, Windows 2000 Server ou Windows XP, voc\u00ea poder\u00e1 incluir estas vari\u00e1veis na op\u00e7\u00e3o \u201cVari\u00e1veis de Ambiente\u201d nas Propriedades do Sistema (Painel de Controle)<\/p>\n<p>Lembrando que, a dever\u00e1 ser observada a condi\u00e7\u00e3o de Case-Sensitive para usu\u00e1rio e senha.<\/p>\n<p><strong>1\u00ba Passo ( C\u00f3pia e Acesso )<\/strong><\/p>\n<p>Sempre utilize uma c\u00f3pia do banco de dados corrompido, al\u00e9m de possuir acesso exclusivo ao mesmo.<\/p>\n<p>Proceda ent\u00e3o com uma c\u00f3pia utilizando o pr\u00f3prio windows explorer ou o MS-DOS, ex:<\/p>\n<p>copy banco.gdb copia.gdb<\/p>\n<p><strong>2\u00ba Passo ( Verificar )<\/strong><\/p>\n<p>Verifique se o banco de dados realmente se encontra corrompido utilizando o seguinte comando:<\/p>\n<p>gfix -v -full banco_de_dados.gdb<\/p>\n<p>Caso o comando tenha indicado algum tipo de problema, a\u00ed sim iremos come\u00e7ar as rotinas de reparo do banco a seguir.<br \/>\n<strong><br \/>\n3\u00ba Passo ( Reparar )<\/strong><br \/>\ngfix -mend -full -ignore banco_de_dados.gdb<\/p>\n<p>Ap\u00f3s este procedimento, deveremos novamente verificar se o banco foi reparado, utilizando o comando do 2\u00ba Passo. Caso ainda assim o banco continue apresentando erros, o pr\u00f3ximo passo ser\u00e1 efetuar um backup completo e depois restaur\u00e1-lo conforme descrito adiante.<\/p>\n<p><strong>Backup do Banco de Dados<\/strong><\/p>\n<p>Da mesma maneira como utilizamos o GFIX do Interbase, poderemos utilizar o utilit\u00e1rio de backup, o GBAK, que tamb\u00e9m se encontra instalado no diret\u00f3rio Bin do Interbase \/ Firebird e funciona em linha de comando. Veja alguns comandos descritos abaixo:<\/p>\n<p>gbak -backup -v -ignore banco_de_dados.gdb arquivo_de_backup.gbk<\/p>\n<p>Este \u00e9 o comando em sua forma mais simples. Caso houver necessidade, por falhas no procedimento, por exemplo, poder\u00e1 optar em incluir outras op\u00e7\u00f5es, como descrito abaixo:<\/p>\n<p>Ignorar o \u201cgarbage collection\u201d.<br \/>\ngbak -backup -v -ignore -garbage banco_de_dados.gdb arquivo_de_backup.gbk<\/p>\n<p>Ignorar transa\u00e7\u00f5es em limbo:<br \/>\ngbak -backup -v -ignore -garbage -limbo banco_de_dados.gdb arquivo_de_backup.gbk<\/p>\n<p>Ap\u00f3s proceder com o backup, poderemos agora finalmente tentar a restaura\u00e7\u00e3o do mesmo, descartando informa\u00e7\u00f5es danificadas, corrompidas, etc.<\/p>\n<p><strong>Restaurando o Banco de Dados<\/strong><\/p>\n<p>Para a restaura\u00e7\u00e3o do banco, podemos continuar a utilizar o utilit\u00e1rio GBAK, conforme descrito abaixo:<\/p>\n<p>Restaura\u00e7\u00e3o b\u00e1sica:<\/p>\n<p>gbak -create -v arquivo_de_backup.gbk novo_banco.gdb<\/p>\n<p>Caso este procedimento relate erros, tente as seguitnes op\u00e7\u00f5es:<\/p>\n<p>N\u00e3o ativar indices durante a restaura\u00e7\u00e3o:<\/p>\n<p>gbak -create -v -inactive arquivo_de_backup.gbk novo_banco.gdb<\/p>\n<p>Ap\u00f3s a conclus\u00e3o da restaura\u00e7\u00e3o, voc\u00ea dever\u00e1 ativar os \u00edndices manualmente.<\/p>\n<p><strong>Restaurar uma tabela de cada vez:<\/strong><\/p>\n<p>gbak -create -v -one_at_time arquivo_de_backup.gbk novo_banco.gdb<\/p>\n<p>Este procedimento far\u00e1 com que cada tabela seja restaurada e em seguida commitada, portanto desta maneira voc\u00ea poder\u00e1 conseguir ao menos restaurar uma parte do banco de dados.<\/p>\n<p>Por: Felipe Olivaes <\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"DsOKrBJeFS\"><p><a href=\"https:\/\/www.republicavirtual.com.br\/blog\/2007\/08\/20\/reparando-e-restaurando-base-interbasefirebird\/\">reparando e restaurando base Interbase\/Firebird<\/a><\/p><\/blockquote>\n<p><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;reparando e restaurando base Interbase\/Firebird&#8221; &#8212; pra n\u00e3o esquecer...\" src=\"https:\/\/www.republicavirtual.com.br\/blog\/2007\/08\/20\/reparando-e-restaurando-base-interbasefirebird\/embed\/#?secret=DsOKrBJeFS\" data-secret=\"DsOKrBJeFS\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Interbase possui dois modos de escrita: S\u00edncrona e Ass\u00edncrona S\u00edncrona \u2013 Dados s\u00e3o gravados em disco imediatamente. Ass\u00edncrona \u2013 \u00c9 a escrita considerada \u201ccuidadosa\u201d, pois os dados s\u00e3o gravados assim que a transa\u00e7\u00e3o for commitada. A desvantagem \u00e9 que em ambiente de trabalho windows,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/517"}],"collection":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=517"}],"version-history":[{"count":0,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/517\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}