Kontrola Sybase databáz

Kontrola Sybase databáz

Po "tvrdom" výpadku systému sa databázy niekedy dostanú do takého stavu, že rozbehnutie systému nie je možné bez servisného zásahu. Zásah spočíva väčšinou z ošetrenia poškodeného LOG súboru niektorej z používaných databáz. Navrhované riešenie zabezpečí rozbeh systému pri takto poškodenom logu databázy.

Spôsob realizácie

Databázy sa musia testovať pred spustením procesu D2000 Server alebo D2000 Archiv, pretože hrozí uviaznutie Enginu (Servera) Sybase.

Na testovanie databáz bola vytvorená utilita checksql.exe.

Deklarácia

checksql DBF=path [PWD=heslo] [UID=meno] [VER=verzia]

Parametre

path

Cesta na databázu (napr.: d:\D2000.V45\TEST\ARCHIV\ARCHIV.DB).

heslo

Prístupové heslo k databáze pre užívateľa. Udáva sa len v prípade, ak to nie je SYSCFG a ARCHIV (napr.: pre TREZOR.DB je PWD=sql).

meno

Meno užívateľa v databáze. Udáva sa len v prípade, ak by bolo potrebné pristupovať pod iným menom ako je štandardné DBA.

verzia

Verzia Sybase databázy. Podporované sú verzie 6,7,9 a 12. Pokiaľ nie je verzia zadaná, snaží sa utilita checksql.exe postupne otvárať databázu s použitím ovládačov verzie 6,7,9 a 12. Odporúča sa zadať verziu najmä na systémoch, na ktorých je nainštalovaná viac ako jedna verzia Sybase.

Popis

Utilita checksql vykoná pokus o pripojenie sa na databázu. Ak sa to nepodarí, zmaže sa MENO.LOG v adresári, kde je databáza a štartuje sa engine s prepínačom -f. Databáza sa spustí bez transakčných záznamov a opakuje sa pokus o pripojenie sa na databázu. Návratový kód môže byť:

  • 0 - ak sa dá na databázu pripojiť

  • 1 - chyba otvorenia po zmazaní logu

  • 2 - log nebol nájdený

  • 3 - log nemohol byť vymazaný

Pre zabezpečenie testovania databáz pred štartom systému bol upravený program D2Start tak, že ak nájde v adresári aplikácie povelový súbor "check.cmd", tak ho odštartuje ešte pred štartom procesu D2000 Server. Umožní to vykonať test databáz a príslušné akcie. Napríklad odloženie poškodenej databázy a núdzový štart s template.

Pred reštartom procesu D2000 Server sa povelový súbor "check.cmd" spúšťa s parametrom /RESTART. Túto situáciu je tak možné ošetriť osobitne.

Príklad súboru check.cmd

D:\D2000_EAGLE4\Bin\checksql.exe DBF=d:\D2000.V45\test\archiv\Archiv.db IF %ERRORLEVEL% EQU 0 GOTO OK1 ECHO Databaza Archiv.db je neopraviteľná rename d:\D2000.V45\test\archiv\Archiv.db Archiv.bad copy D:\D2000_EAGLE4\Templates\Archiv.db d:\D2000.V45\test\archiv\Archiv.db :OK1 D:\D2000_EAGLE4\Bin\checksql.exe DBF=d:\D2000.V45\test\LogTrezor\LogTrezor.db PWD=sql IF %ERRORLEVEL% EQU 0 GOTO OK2 ECHO Databáza LogTrezor.db je neopraviteľná :OK2 D:\D2000_EAGLE4\Bin\checksql.exe DBF=d:\D2000.V45\test\Logfile\Logfile.db IF %ERRORLEVEL% EQU 0 GOTO OK3 ECHO Databaza Logfile.db je neopravitelna :OK3 D:\D2000_EAGLE4\Bin\checksql.exe DBF=d:\D2000.V45\test\Syscfg\Syscfg.db IF %ERRORLEVEL% EQU 0 GOTO OK4 ECHO Databaza Syscfg.db je neopravitelna :OK4 IF NOT EXIST d:\D2000.V45\test\Trezor\Trezor.db GOTO NEXT1 D:\D2000_EAGLE4\Bin\checksql.exe DBF=d:\D2000.V45\test\Trezor\Trezor.db PWD=sql IF %ERRORLEVEL% EQU 0 GOTO OK4 ECHO Databaza Trezor.db je neopravitelna :OK4 :NEXT1 IF NOT EXIST d:\D2000.V45\test\Trezor\Prev\TrezorP.db GOTO NEXT2 D:\D2000_EAGLE4\Bin\checksql.exe DBF=d:\D2000.V45\test\Trezor\Prev\TrezorP.db PWD=sql IF %ERRORLEVEL% EQU 0 GOTO OK4 ECHO Databaza TrezorP.db je neopravitelna :OK4 :NEXT2