Toiminto-ohje tietokannan vaurioitumistilanteessa Yleistä Jos Solidin tietokanta on vaurioitunut siten, että Solid.exe:n käynnistäminen manuaalisestikaan ei auta, niin tällöin on todennäköisesti tietokanta tai tietokannan lokitiedostot vaurioituneet. Tähän voi olla esim. syynä äkillinen sähkökatkos tai Solid-palvelun väkivaltainen sammutus (Lopeta tehtävä) Tämä ohje neuvoo Sinua selvittämään tietokannan vian syyn ja korjaamaan sen. Olemme ohjeessa pyrkineet neuvomaan mahdollisimman johdonmukaisen toimintatavan. Riippuen ongelmasta, voidaan kuitenkin joitakin osioita jättää tekemättä. Esim. Tietokannan täydellisen hajoamisen (kiintolevyrikko) yhteydessä on turha puhua loki-tiedostojen poistamisesta. TÄMÄ OHJE ON TARKOITETTU VAIN SOLIDIN TIETOKANNASTA TIETÄVILLE HENKILÖILLE. TARVITTAESSA OTA YHTEYTTÄ FUTURSOFTIN YLLÄPITOON LISÄOHJEITA VARTEN. NÄIN VÄLTYTÄÄN TIETOJEN HÄVIÄMISELTÄ, VIRHEELLISEN TOIMINNAN SEURAUKSENA. Solidin käynnistys manuaalisesti Ensimmäisenä pitää varmistua siitä, että Solid-tietokanta on syyllinen AutoFutur pron käynnistymättömyyteen. Tämä voidaan testata yksinkertaisesti suorittamalla ohjelma Solid.exe, joka sijaitsee polussa x:\tietokannat\afpdb\solid.exe (x=osio, jolla tietokanta sijaitsee) Jos käytössä on moniyritysversio, niin tällöin toinen tietokanta voi sijaita polussa x:\tietokannat\afpdb2. Tämä on siis hyvä muistaa, jos vain toinen yrityksen tietokannasta on pois pelistä. Tietokantaohjelma yrittää käynnistää polussa x:\tietokannat\afpdb\database\solid.db olevaa tietokantaa. Jos tulee oheinen ilmoitus 5 kertaa ja lopuksi ilmoitus Niin tällöin tietokanta on jo käynnissä ja toimii. Tällöin syy ei ole tietokannassa ja ongelmaa pitää lähteä etsimään muualta. (ODBC-tietolähde ei määritelty, verkkoasetukset väärin jne ) Toiminto-ohje tietokannan vaurioitumistilanteessa - 1 -
Ennen toimenpiteitä Ennen toimenpiteitä on syytä varmistua, että ns. taustatekijät ovat kunnossa, ennen kuin lähdetään korjailemaan itse tietokantaa. Näitä ovat esim. Kiintolevyn kunto, Kiintolevyn vapaa tila ja Solid.inin tietokantamääritykset. Kiintolevyn kunto Kiintolevyn kunto voidaan tarkistaa ajamalla Win95/98-koneissa Scandisk-niminen tarkistusohjelma. Tämä ohjelma tarkistaa kiintolevyn kunnon ja korjaa mahdolliset virheet. Kyseinen ajo löytyy esim. kohdasta Käynnistä - Ohjelmat Apuohjelmat - Järjestelmätyökalut WinNT/2000/XP-koneissa löytyy tämä kiintolevyn tarkistus esim. Oma Tietokone Tiedosto Ominaisuudet Työkalut - Virheentarkistus Ajo on syytä suorittaa ainakin C:-osiolle ja osiolle, jossa sijaitsee Tietokannat-kansio Kiintolevyn vapaa tila Kiintolevytilan vapaa tila voidaan tarkistaa esim. kohdasta Oma Tietokone Tiedosto Ominaisuudet Kiintolevytilaa pitää olla vähintään 200MT, jotta tietokanta toimisi luotettavasti. Tietokannan maksimikoko Polussa x:\tietokannat\afpdb\ löytyvä asetustiedosto solid.ini sisältää yhden rajoituksen tietokannan koolle ja se voi loppukädessä estää jopa tietokannan käynnistymisen, joten tämä tiedoston sisältö on syytä tarkistaa, ennenkuin lähdetään tekemään isompia työvaiheita. Solid.ini sijaitsee samassa polussa kuin Solid.exe, joten se on helppo löytää. Solid.ini:stä löytyykin sitten kohta FileSpec_1=D:\Tietokannat\AFPdb\DATABASE\solid.db 1509715200 Eli jos tietokannan todellinen koko tavuina on sama kuin tämä tietokannan maksimikokoasetus, niin tällöin tämän asetuksen nostaminen esim. 1 800 000 000:een auttaa (1,8GT). Tällöin on kuitenkin ensitilassa tehtävä tietokannan kloonaus, koska tietokannan koko on aivan liian iso. Lokitiedostojen poisto Solidin tietokanta muodostaa jokaisen työvaiheen (transaktio) jälkeen ns. lokitiedostoa. Lokitiedostot voivat joskus kuitenkin vaurioitua, varsinkin jos tiedoston kirjoitusvaiheessa koneesta katkeaa virta. Vaurioitunut loki-tiedosto voi uudelleen käynnistysvaiheessa, loppukädessä estää tietokannan käynnistymisen. Tästä pitäisi kuitenkin tulla erillinen ilmoitus, mutta näin ei välttämättä aina kuitenkaan tapahdu. Normaalisti lokitiedostoon viety tieto talletetaan myös itse tietokantaan, joten tietokannan käynnistymistä voidaan kokeilla poistamalla nämä loki-tiedostot kokonaan. TÄRKEÄÄ! lokitiedostot on kuitenkin syytä varmuuskopioida, koska niitä voidaan tulevaisuudessa tarvita, kun tietoja palautetaan varmuuskopiolta. Eli nämä lokitiedostot löytyvät polusta x:\tietokannat\afpdb\log ja ovat nimetty solxxxxx.log nimisiksi ja toimittaessa seuraavasti: - Tyhjennetään LOG-kansion sisältö - Yritetään käynnistää polusta x:\tietokannat\afpdb\solid.exe:ä Tällöin pitäisi tietokannan käynnistyä. TÄRKEÄÄ! Tämän jälkeen on syytä tarkistaa, että viimeisimmät toimenpiteet, kuten hinnastojen päivitykset, lähetemyynnit, käteismyynnit, tilaukset jne ovat säilyneet. Tämä toimenpide auttaa useimmissa tapauksissa ja näin ollen varmuuskopioon ei tarvitse turvautua. Toiminto-ohje tietokannan vaurioitumistilanteessa - 2 -
Tietokannan kunnon selvittäminen Jos tietokanta ei suostu käynnistymään edes loki-tiedostojen poistamisen jälkeen, niin tällöin on itse tietokanta vaurioitunut jollakin tavalla. Joten tässä vaiheessa on tehtävä päätös siitä, että turvaudutaanko varmuuskopioon vaiko kokeillaanko käynnistää tietokanta vikasietotilassa ja suorittaa ns. tietokannan kloonaus. Varmuuskopion käyttö on hyvin suositeltavaa varsinkin, jos varmuuskopio on otettu edellisenä iltana ja tietokanta on hajonnut heti aamusta. Jos taasen varmuuskopio on jostakin syystä epäonnistunut tai siinäkin on virheitä, niin tällöin on käytettävä kloonausta. ( viime viikollakin se tökki koko ajan ) Se, että kumpaako tapaa loppukädessä käytetään, voidaan selvittää ajamalla Solid-tietokannan diagnostiikkaohjelma lävitse seuraavalla tavalla: 1. Mene kohtaan Käynnistä Ohjelmat Apuohjelmat Komentorivi 2. Kirjoita seuraavasti X: (x=osio, jossa sijaitsee Tietokannat-kansio) CD TIETOKANNAT CD AFPDB SOLID xtestblocks 3. Tässä vaiheessa luo solid, x:\tietokannat\afpdb\-polkuun ssdebug.log nimisen tiedoston. Tästä merkkinä aukeaa pieni ikkuna. Tähän ssdebug-log-tiedostoon alkaa kertyä tietoa Solidin tietokannan taulujen kunnosta. Ajo kestää hetken. Jos taulut ovat kunnossa niin tästä tulee ko. tiedostoon ilmoitus (0 BAD BLOCK, Database blocks has been tested succesfully. Database is ok.) 4. Tässä vaiheessa kannattaa ssdebug.log-tiedosto poistaa. 5. Seuraavaksi testataankin sitten indeksien kunto suorittamalla seuraava komento SOLID xtestindex (tämä kestää 10-20min.) 6. Tässä vaiheessa Solid luo uudestaan x:\tietokannat\afpdb\-polkuun ssdebug.log-tiedoston. Tällöin aukeaa myös pieni ikkuna, jossa alkaa vilistämään numerosarjoja. Tällöin ssdebug-log-tiedostoon alkaa kertyä tietoa Solidin indeksien kunnosta. Ajo kestää jonkin aikaa (n.10minuuttia). Jos indeksit ovat kunnossa, niin tästä tulee ko. tiedostoon ilmoitus (Bonsai tree is ok., Storage tree is ok.) Tässä vaiheessa voidaan tehdä johtopäätös oikeasta toimenpiteestä. Eli jos ohjelma ei suostu pysymään käynnindeksit ovat rikki, niin tällöin kloonaus on erittäin varteenotettava vaihtoehto, tietokannan kuntoon laittamiseksi. Indeksit kun luodaan automaattisesti kloonauksen yhteydessä uudestaan. Tässä yhteydessä voidaan joutua käyttämään vikasietotilaa xignoreerrors, jotta tietokanta saadaan käynnistymään. Taasen jos tauluissa on vikaa, niin tällöin on turvauduttava varmuuskopioon tai on yritettävä käynnistää tietokanta disablemerge -tilassa, tietojen pelastusta varten. Toiminto-ohje tietokannan vaurioitumistilanteessa - 3 -
Tietokannan käynnistäminen vikasietotilassa Jos varmuuskopio on korruptoitunut tai sitä ei ole jostakin syystä tehty ollenkaan tai tietokanta on hajonnut huonolla hetkellä, niin tällöin voidaan tarvittaessa yrittää käynnistää vaurioitunutta tietokantaa ns. vikasietotilassa. Vikasietotilassa voidaan yrittää pelastaa taulujen sisältöä ja saada sitä kautta elintärkeitä tietoja ulos. (AutoFutur Prossa Tietojen Tuonti ja Vienti) HUOM!! On hyvin tärkeää, että näitä tiloja käytetään vain tietojen ulossaamiseksi. Joten ko. tilojen ollessa päällä, emme suosittele myyntien tai muiden vastaavien tiedontallennus-toimenpiteiden käyttöä. Vikasietotiloja on kaksi. Xignoreerrors-tila ja Disablemerge-tila. Tarvittaessa kumpaakin tilaa voidaan käyttää yht aikaa. Kannattaa huomioida se, että kumpikin tila estää mahdolliset virheilmoitukset, joten näiden ajojen jälkeen on tarkistettava, että tiedot ovat siirtyneet 100%:sti (Myynti, Lähete, Reskontra-tiedot jne ) XIGNOREERRORS-TOIMINTO Tämä toiminto käynnistää solidin tietokannan siten, että se ei huomioi virheitä indekseissä. Kyseinen tila saadaan helposti päälle seuraavalla tavalla: 1. Mene kohtaan Käynnistä Ohjelmat Apuohjelmat Komentorivi 2. Kirjoita seuraavasti X: (x=osio, jossa sijaitsee Tietokannat-kansio) CD TIETOKANNAT CD AFPDB SOLID xignoreerrors 3. Tässä vaiheessa pitäisi Solidin käynnistyä ilman virheilmoitusta kuvakkeeksi alapalkkiin 4. Seuraavaksi käynnistetäänkin sitten AutoFutur Pro ja ajetaan kloonaus lävitse kohdasta Tietojen ylläpito Tietokantatyökalut ja Kloonaus-lehdykkä) DISABLEMERGE-TOIMINTO Tämä toiminto käynnistää solidin tietokannan siten, että se estää ns. merge-prosessin käynnistymisen. Merge-prosessi kirjoittaa commitoidut tapahtumat välimuistista levylle ja vapauttaa käytetyn välimuistin, jos tämä prosessi ei ole käynnissä, loppuu muisti varsin nopeasti. Tätä toimintoa kannattaa käyttää tilanteessa, jossa tietokannasta on saatava pelastettua jotain tietoja. Myös normaalin kloonauksen yhteydessä sitä voidaan käyttää, mutta tämän jälkeen on ehdottomasti tarkistettava kloonauksen jälkeen, että tiedot ovat siirtyneet (Myynti, Lähete, Reskontra-tiedot jne ) TÄRKEÄÄ! Tämä asetus ON EHDOTTOMASTI POISTETTAVA tämän operaation jälkeen. Toiminto saadaan päälle kirjoittamalla solid.ini:iin (x:\tietokannat\afpdb\solid.ini) Srv-osioon oheinen rivi [Srv] DisableMerge=Yes Tietokannan pitäisi tällöin käynnistyä ilman virheilmoituksia. Tämän jälkeen on suoritettava tietojen pelastus tai kloonaus. Toiminto-ohje tietokannan vaurioitumistilanteessa - 4 -
Varmuuskopion palautus Varmuuskopiota palautettaessa voidaan palautua loki-tiedostojen avulla tilanteeseen juuri ennen tietokannan hajoamista. Tämä kuitenkin vaatii sen, että lokitiedostot on tallessa ja ne eivät itsessään ole vaurioituneet. Toimenpide itsessään on seuraava: 1. Tarkistetaan x:\tietokannat\afpdb\backup-kansiosta löytyvän solid.db:n päivämäärä 2. Kopioidaan itse tietokanta (solid.db) x:\tietokannat\afpdb\backup-kansiosta, x:\tietokannat\afpdb\databasekansioon. Mahdolliseen kysymykseen korvataanko, vastataan Kyllä (Muista kopion kopio, koska alkuperäinen korvaantuu) 3. Kopioidaan kaikki varmuuskopion jälkeen x:\tietokannat\afpdb\backup-kansioon muodostuneet lokitiedostot (solxxxxx.log), x:\tietokannat\afpdb\log-kansioon. HUOM! Jos tulee ilmoitus korvataanko tiedosto se ja se, niin tällöin vastataan KYLLÄ, jos korvattava tiedosto on vanhempi kuin uusi tiedosto. Siis uudempia tiedostoja ei korvailla. 4. Käynnistetään Solid-tietokanta, jolloin Solid alkaa lisätä puuttuvia tietoja tietokantaan loki-tiedostojen avulla. Tästä tulee lopuksi ilmoitus xxx Transaction recovery completed. 5. Tämän jälkeen on syytä vielä suorittaa, varmuuden vuoksi, tietokannan kunnosta kertovat xtestblocks- ja xtestindex-ajot. Näin varmistutaan siitä, että myös itse varmuuskopio on alun perin ollut kunnossa. 6. Lopuksi tarkistetaan taas, että tärkeimmät tiedot (Käteis, Lähete, Laskutus-myynti) on tallessa Lisäkeinoja tietokannan kuntoon laittamiseen Allolevalla toiminnolla voidaan tarvittaessa selvittää vioittuneen indeksin nimi Tietokantatyökaluissa (Tietojen ylläpitolehdykkä). Esim. jos key_id = 10291 select * from _system.sys_keys where id=10291 ja poistaa se komennolla (esim. TP_NIMI2) DROP INDEX TP_NIMI2 ja luoda tämän jälkeen uudestaan CREATE INDEX TP_NIMI2 ON TUOTPER2(TP_NIMI) Oikean sanamuodon saat selvitettyä etsimällä ko. indeksiä esim. Windowsin Etsi-toiminnolla Sisältää tekstiä TP_NIMI2, kansiosta C:\Ohjelmatiedostot\AutoFuturPro\sql_arkisto tai C:\Ohjelmatiedostot\AutoFuturPro\sql Esimerkkitilanne Tämän esimerkkitilanteen, johdosta tehtävät toimenpiteet ovat auttaneet tähän mennessä ainakin kahdessa erillisessä tapauksessa, joten Helpdesk suosittelee tämän toimintatapavan käyttämistä, jos varmuutta tietokannan vaurioitumistilanteesta ei ole. TILANNE: Serveristä on hajonnut osittain kiintolevy, mutta kaikki tiedot on saatu pääpiirteittäin siirrettyä uudelle kiintolevylle. Kuitenkin tietojen siirtämisen jälkeen on ohjelma alkanut käyttäytyä omituisesti. Raportteja otettaessa tietokanta ilmoittaa virheitä, joista pitäisi ilmoittaa Solid Information technologues:n ylläpitoon. Myös myyntitilanteessa tulee ko. virheilmoituksia. Jonkin ajan kuluttua alkaa, AutoFutur Pron käynnistymisvaiheessakin tulla erilaisia virheilmoituksia. Loppujen lopuksi AutoFutur Pro ei suostu käynnistymään ollenkaan. Toiminto-ohje tietokannan vaurioitumistilanteessa - 5 -
TOIMENPITEET: Ajamalla koneessa XTESTBLOCKS- ja XTESTINDEX-ajot, huomataan solin tietokannan olevan vaurioituneen. Laittamalla DISABLEMERGE-tila ja käynnistämällä tietokanta XIGNOREERRORS-tilassa, suostuu ohjelma käynnistymään. Tämä tarkoittaa sitä, että tietokanta on vaurioitunut niin pahoin, että tietojen pelastamiseksi on viipymättä aloitettava toimenpiteet. Ensimmäisenä kokeillaan tietokannan kloonausta. Kloonaus luo uuden tietokannan ja alkaa viemään tietoja ulos tietokannasta. Lopuksi tulee ilmoitus taulujen TUOTPER ja TUOTVAIH vaurioitumisesta. Tässä vaiheessa on syytä peruuttaa kloonaus, jotta vaurioituneet taulut saadaan ulos yksitellen. Samalla kloonauksen yhteydessä muodostunut kloonitietokanta sammutetaan ja klooni-kansio poistetaan Ko. tauluja pyritään viemään erikseen ulos tietokannasta, kohdassa Tietojen ylläpito Tietojen tuonti ja vienti. Sama virheilmoitus toistuu myös täältä käsin. Kun tietojen tuonti ja vienti-työkalua käytetään, niin tällöin muodostuu C:\Ohjelmatiedostot\AutoFuturPro\Vientikansioon TUOTPER.DAT, TUOTPER.CTR, TUOTVAIH.DAT ja TUOTVAIH.CTR. Katsomalla ko. taulujen sisältöä, saadaan selville se että tietojen ulosvienti on keskeytynyt TUOTPER.DAT-taulussa tuotekoodiin 009-112. Tällöin tietoja voidaan kokeilla viedä ulos Select-lausekkeella. Tähän käytetään lauseketta SELECT * FROM TUOTPER WHERE TP_TUOTEKOODI<> 009-112 Tietoja uudelleen vietäessä, siirtyy tietoja enemmän, mutta taas ohjelma keskeytyy tiettyyn kohtaan. Katsomalla uudestaan TUOTPER-taulun sisältöä, huomataan, että ohjelma keskeytyi tuotenumeroon 123-WE2. Tällöin tietojen viennissä käytettävää lauseketta voidaan tehostaa SELECT * FROM TUOTPER WHERE TP_TUOTEKOODI<> 009-112 AND TP_TUOTEKOODI<> 123-WE2. Tällä tavalla toimittaessa voidaan tietokannasta pelastaa tietoja jopa täydellisesti. Tämä kuitenkin vaatii tietoa Solidin tietokannan taulujen sisällöstä. Kun loppujen lopuksi ollaan onnistuttu pelastamaan vaurioituneista tietokannoista kaikki tarpeellinen ja mahdollinen, niin tämän jälkeen voidaan tehdä kloonaus uudestaan. Kloonauksen yhteydessä tulevat virheilmoituksen voidaan nyt kuitata Kyllä:llä, jolloin kloonaus jatkaa eteenpäin. Lopuksi on kloonaus suoritettu. HUOM TÄSSÄ VAIHEESSA ON DISABLEMERGE-TILA OTETTAVA POIS PÄÄLTÄ!! Uuteen tietokantaan on tämän jälkeen vielä vietävä Tietojen tuonti ja Vienti työkaluilla viedyt taulut. Eli tässä tapauksessa TUOTPER ja TUOTVAIH-taulut. Tietojen tuonti vaiheessa käytetään Tyhjennä kohdetaulut-ruksia, jolloin varmistutaan siitä että kaikki tiedot siirtyvät uuteen tietokantaan. Tarvittaessa voidaan käyttää myös Enablelogging=No asetusta SOLID.INI:ssä, jolloin tietojen lukeminen tietokantaan on erittäin nopeata. Toiminto-ohje tietokannan vaurioitumistilanteessa - 6 -
Lisätietoja FuturSoft Lars Sonckin Kaari 16 00260 Espoo Vaihde 0207-288 730 Fax 0207-288 731 Helpdesk 0600-9-4044 mailto: helpdesk@futursoft.fi http://www.futursoft.fi Ohjeen versiohistoria Muutospäivä Tekijä Muutos 26.3.2010 MK Muokattu ala- ja yläviitettä, sekä lisätty lisätietoja osio Toiminto-ohje tietokannan vaurioitumistilanteessa - 7 -