Está en la página 1de 3

Firebird

Recuperacin de bases de datos


Estedocumentoesunaguadecomoarreglarunabasededatosquehayaresultadadaada.Evidentementeno setienengarantasdexito,perolaexperiencianosdiceque,enun80%deloscasos,losdatosserecuperansin mayoresproblemas.Enelotro20%,loindicadoenestaguiasequedacortoysenecesitaunpocomasdetrabajo. Enun5%deloscasos,sobretodoenaquellosenquesehaseguidoutilizandoelprogramavariosdasapesarde losavisosdecorrupcinenelfichero,nosehapodidorecuperarelficheroenabsoluto. Lamoralejaessimple:Inviertamediahoraenconfigurarcorrectamenteunsistemadecopiasdeseguridad,por ejemploste,yseahorraradasenterosdelaempresaparadasinsabersilosdatospodrnrecuperarseosi tendrqueusarlacopiadeseguridaddehacedosotressemanas...ylaposibilidaddeperderlosdatosesmas quereal! PASO 1 Comosqueestrota Sesabequeunabasededatosestrotadevariasmaneras,aunquelaUNICAseguraeshacerunacopiade seguridadyrecuperarla:Sielprocesonodaerrores,obtenemosunabasededatosimpecable,ysabemosquela originalnocontenaproblemas. Normalmentelosabremosporqueelprogramadaerroresalentraraalgunapantalla,coneltexto"consistency error"onopuedeconectarsealabasededatos,osilascopiasdeseguridadfallan,o,engeneral,cuandoel programasecomportaextrao. PASO 2 Pasosprevios Cuandosospechamosquelabasededatosestcorrupta,seaporlaraznquesea,loimportanteesintentar solventarelproblemaCUANTOANTES,yaqueseguirusandoelprogramaconlosdatosenmalascondiciones agravarlasituacinypuedenllegarahacersetotalmenteirrecuperables. Lospasospreviosserianestos,enesteorden(esimportanteelorden): 1. LoPRIMEROesdejardeusarelprograma,queTODOSsalgandelaaplicacin. 2. Todolosiguientelorealizaremosdesdeelservidor,esdecir,elordenadordondefsicamenteestn grabadosesosdatos. 3. Localizarelficherodedatos(extensinFDBoGDB,podemosaveriguarcualeslacarpetamirandolaruta queapareceenlaventanadeentradaalprograma,enlaltimalnea). 4. Cambiarleelnombrealficherodebasededatos,deestaforma,estaremossegurosdequenadieloest usando(alguienpuedehabersedejadoelprogramaminimizado)ytambinquenadieentrarenel programayusarlosdatosmientrasdureelproceso. 5. HacerunacopiadelficheroyllamarleROTA.FDB(enelrestodeinstruccionessuponemosqueelficheroa repararsellamaas). 6. Crearemoseneldisco(delservidorsiempre)unacarpetadetrabajoquellamaremosSOS,esdecir,laruta seria"/SOS"ymovemosROTA.FDBaesacarpeta. 7. Puedequenecesitemosusaresteprogramapararealizarelproceso.Debemosdescomprimirloenla carpeta/SOS 8. Comotodoslospasosquevienenacontinuacinserealizandesdelaconsoladecomandos(smbolodel sistema),abriremosunaventanadecomandos.Unavezabierto,escribiremoscd/SOSypulsaremosla teclaintro.Enlaventanadeberaquedar/SOS>enlalineadondeahorapodemosescribirotroscomandos. Bueno,yatenemostodolistoparaintentararreglarelficherodedatos.

PASO 3 Confirmarqueestrota Loprimeroesasegurarnosdequepodemoshacerunacopiadeseguridadyluegorecuperarlasinproblemas.Silo podemoshacer,lacopiadelosdatosqueobtenemosestar100%sana,yelficherooriginalnocontenaerrores importantes. Lonormaldecualquierformaesqueunabasededatosestropeadadeerroresenesteproceso,asqueno esperemosmuchodeestafase. Enlaventanadeconsola,escribiremosestoparahacerlacopiadeseguridad: gbak -user SYSDBA -password masterkey -mode read_only -b rota.fdb rota.fbk AcontinuacinvolvemosaconvertirelficheroFBKenunoFDBusabledesdeelprograma: GBAK -user SYSDBA -password masterkey -C rota.fbk nueva.fdb Silosdoscomandosseterminansinerrores,labasededatosoriginalnoestabadaada,oeldaoerapoco.El ficheroNUEVA.FDBobtenidoest100%libredeproblemas,asquelepondramoselnombredelabasededatos originalylocopiaramosasucarpetaparavolverausarelprogramaaccediendoaeste"ficherosaneado". Sihemosrecibidoalgnerror,continuamosconlatarea... PASO 4 Intentararreglarelfichero Nohemosconseguidohaceryrecuperarunacopiadeseguridad,asquenostocaarreglarelficheroparaquese puedahacerestacopia. Estosehaceconestecomando: gfix -user SYSDBA -password masterkey -mend -full -ignore ROTA.FDB EstoNOarreglaelficherocomoparaserusadoenelprograma,peroconunpocodesuerte,squeloarregla comoparapodersehacerunacopiadeseguridad,locualarreglaranuestrosproblemas. PASO 5 Recuperarlosdatosaotrofichero Bsicamenteahoravamosarepetirlospuntosindicadosenelpaso3,peroestaveznotendramosquerecibirlos erroresanteriores.Siaunasrecibimoserrores,nopasanada,hayparmetrosextraqueseusanparaintentar "saltarse"loserrores. Bueno,loprimeroesvolveraconvertirlosdatosaformatoFBKdecopiadeseguridad,primerolointentaremoscon elcomando"normal": gbak -user SYSDBA -password masterkey -mode read_only -b rota.fdb rota.fbk Sidaerroresdeltipo"badchecksum"significaquealgunosdatosestnmalgrabadosyelficheroestcorruptoa pesardelohechoenelpasoanterior,peroaunpuedeintentarsehacerlacopiaconestosparmetros"reforzados": gbak -user SYSDBA -password masterkey -mode read_only -IGNORE -b rota.fdb rota.fbk Suponiendoqueconlaversin"reforzada"hayamosobtenidofinalmenteunficheroROTA.FBK,ahoraseguiramos conlasegundaparte: gbak -user SYSDBA -password masterkey -C rota.fbk nueva.fdb Siesteprocesonosdaerroresdelestilo"indexerror"o"validationerror"esosignificaquealgndatoestgrabado peronodeberaestarlo,poresonolopuederecuperar. Denuevo,podemosintentarforzarlaconversinaficheroFDBaadiendoalgunosparmetrosextras: gbak -user SYSDBA -password masterkey -IG -N -I -C rota.fbk nueva.fdb Sitodohaidobien,finalmentetendremosunficheroNUEVA.FBKenlacarpeta/SOS,puedeocuparunpocomaso

unpocomenosqueeloriginal,delordendel5oel10%,esoesnormal. Alllegaraqu,puedenhabernospasadotrescosas:

Losdosprocesossehicieronsinerrores.EsoquieredecirqueenlacarpetatendremosunNUEVA.FDB 100%libredeproblemas.Slonosrestacopiarloalacarpetadondeestabaelficherooriginalyponerleel nombrequeestesolatener.Yadeberapoderseusarelprogramasinproblemas. Enalgunodelosdospasosnosdioerror,perousandoelcomando"reforzado"conseguimosterminarel proceso.Labasededatosresultantesest"mejor"quelaoriginal,peroposiblementeperdimoslosndices delosdatos(labasededatosresultanteserlentsimadeusar)ypuedequealgndatodebaserborrado porhabersidoafectadoporlarotura.Asquesiusamoslos"comandosreforzados",deberemosseguircon elpaso6. Nohubomaneradeterminarelproceso,nohemosobtenidoningnNUEVA.FDB,porloquedebemos seguirconelsiguientepasocruzandolosdedos,yaquesilos"comandosreforzados"noloconsiguieron, seguroqueelpasosiguientenosdaralgnqueotroproblemainesperado.

PASO 6 Bombeardatos Sihemosllegadoaqu,tenemosunficheronorecuperable,msomenosdaado,asquenosquedaunasolucin alternativa:Crearunabasededatosvacaidnticaalaoriginal,eintentar"bombear"datoadatotodoelcontenido delaoriginalaestanuevabasededatos. Esteprocesonormalmentenosdaralgunoserrores,estoscorrespondernconlosdatosirrecuperables. Detallamosaqulospasosnecesariosparaesteproceso:

1. Crearemosunabasededatosidnticaperovacaconestosdoscomandos:
gbak -user SYSDBA -password masterkey -m ROTA.FDB VACIA.FBK gbak -user SYSDBA -password masterkey -c VACIA.FBK VACIA.FDB EstodeberatardarpocoycrearunficheroVACIA.FBKbastantepequeo,delordendemediomegabyte,y otroVACIA.FDBdeunosmegabytes. Ahorafalta"bombear"losdatosdeNUEVA.FDB(odeROTA.FDBsinoconseguimoscrearlabasede datosNUEVA.FDBenelpasoanterior)aVACIA.FDB,yestosehaceconelprogramaIBPUMP.Suuso estaexplicadoenestapagina.Tambinpuedeserdescargadoelprogramadeaquyeltutorialdeaqu ademsdeesteotroqueestaqu.

2.

Enelproceso,siseproducenerrores,losdatosquelosproducensernsaltados,ydependiendodelagravedad deldatopuedequeotrosdatosauxiliarestampocopasen(sifallaunregistrodecabecera,nopasarantampocosus lneas,porejemplo).Estotienedifcilarreglo,perosisonmuchoslosdatosperdidos,sepuedeverlamanerade volcarlos"manualmente",peroesoyaesdemasiadocomplejoparaexplicarloaquydeberponerseencontacto conampc. PASO 7 ltimorecurso Bueno,realmentenohaynadamsquepodamoshacer,sihaseguidoestospasos,tienelasmismas oportunidadesdearreglarelficheroquenosotros,peroaunhaygentequesabemuchomsdeltemay,cobrando bastanteseuros,puedeintentararreglarelfichero.Estagentesepuedecontactarenhttp://www.ibphoenix.com