====== Správa databází ====== ===== Kontrola a oprava struktury databáze ===== ==== Kontrola struktury databáze ==== Kontrolu struktury databáze seprovede příkazem: gfix -validate -full jméno_databáze Přepínač //-v[alidate]]// specifikuje požadavek na kontrolu struktury, a přepínač //-full// je jeho rozšířením pro komplexnější analýzu struktury datových řádků a stránek. Pokud //gfix// ohlásí velké množství chyb v kontrolních součtech databázových stránek, použijte přepínač //-i[gnore]//, který způsobí ignorování chyb kontrolních součtů. ==== Oprava struktury databáze ==== Pokud byly ohlášeny chyby struktury, je potřeba spustit příkaz: gfix -mend -full -ignore jméno_databáze Po opravě struktury databáze je potřeba opět spustit kontrolu struktury. ===== Garbage Collection, Sweep, OIT, OAT ===== MGA architektura ponechává v databázi informace o předchozích verzích řádků, což časem může omezovat rychlost práce databáze. Pro čištění nepotřebných verzí se používá technika Garbage Collection a Sweep. Práce Garbage Collection (GC) se liší dle architektury serveru a je prováděna průběžně. Kdykoli server načítá řádek, provádí u něho detekci nepotřebných verzí. U Classic se provádí odstraňování okamžitě po přečtení řádku, u Super se stará o GC samostatné vlákno. Sweep prochází celým obsahem databáze a odstraní všechny nepotřebné verze. Zároveň aktualizuje tabulku transakcí. Tabulka transakcí je od transakce OIT (Oldest Interested Transaction) -- nejstarší nepotvrzená (např. nekorektně ukončený klient). Dále exituje transakce OAT (Oldest Active Transaction) -- nejstarší doposud aktivní transakce (např. spuštěný klient nebo OBISCSERVER). Rostoucí rozdíl mezi OIT a OAT znamená, že se zbytečně zvětšuje velikost tabulky transakcí a databáze pravděpodobně obsahuje značné množství nepotřebných verzí řádků. Každá databáze má nastaven tzv. //Sweep Interval//. Tato hodnota stanovuje práh rozdílu mezi OIT a OAT, kdy se v databázi automaticky spustí //Sweep//. Sweep Interval lze zjistit: * v programu //isql// příkazem **SHOW DATABASE** * programem //gstat// příkazem ''gstat -h jméno_databáze'' (vyžaduje fyzický přístup k databázi) ==== Změna hodnoty parametru Sweep Interval ==== Změna sweep intervalu se provede příkazem: gfix -housekeeping n jméno_databáze Kde //n// je požadovaná hodnota parametru. Pokud je n=0, Sweep je vypnut. V případě vypnutí sweep intervalu je třeba sledovat rozdíl mezi OIT a OAT a sweep provádět v rámci údržby databáze mimo pracovní dobu. Provedení sweep databáze lze přikázat pomocí programu GFIX: gfix -sweep cesta_k_databazi ==== GSTAT -- statistiky databáze ==== Výpis samotné hlavičky databáze: ''gstat -header jméno_databáze'' Analýza uložení dat v tabulce rozpocty_cenik ''gstat -data -r -user username -password password jméno_databáze -t rozpocty_cenik'' Analýza struktury indexů v tabulce rozpocty_cenik ''gstat -index -user username -password password jméno_databáze -t rozpocty_cenik'' Přístup k databázi zajišťuje systém dvěma způsoby. První způsob se používá u Classic serveru a variantě přímého přístupu k databázi (bez uvedení adresy serveru) a je založen na přístupových právech k souboru databáze. Druhý způsob se používá u obou architektur při připojení přes TCP/IP a jde o bezpečnostní databázi serveru (SECURITY.FDB). Tato databáze se spravuje programem GSEC: ''gsec -user sysdba -pass heslo -database server:cesta_k_security.fdb'' V interaktivním režimu lze pak zadávat tyto příkazy: * di[splay] - zobrazení seznamu uživatelů * a[dd] jmeno -pw heslo - vytvoření uživatele * mo[dify] jmeno -pw heslo - změna hesla * de[lete] jmeno - smazání uživatele * h[elp] - nápověda * q[uit] - ukončení Program GFIX vyžaduje autentizaci pomocí parametrů //-user// a //password// nebo proměnnými prostředí //ISC_USER// a //ISC_PASSWORD//. Nastavení velikosti vyrovnávací paměti se provede následujícím příkazem. ''gfix -buffers hodnota jmeno_database'' Hodnota je údávána v počtu stránek. Implicitně je tato hodnota 2048 pro Super Server a 75 stránek pro Classic. Implicitní velikost stránky je 4kB a lze ji zvětšit programem GBAK (parametr -page_size 8192 nebo 16384). Nastavení způsobu zápisu do databáze se provede příkazem: gfix -write sync jmeno_database gfix -write async jmeno_database Asynchronní způsob zápisu zvyšuje výkon databáze až o 50%. Lze jej ale použít **POUZE** pokud je server bezpečně zálohovaný pomocí **UPS**. ==== Read Only databáze ==== Pro OBIS5 verze > 5.0.057 lze archivní databázi přepnout na read only: /opt/firebird/bin/gfix -mode read_only data2010.fdb /opt/firebird/bin/gfix -mode read_write data2010.fdb #vraceni zpet na rw ==== ShutDown Database ==== Shutdown gfix -shut single -force 0 database_name Starting a Database The -o[nline] command allows a database to be restarted. It takes a single parameter which is the database name as follows: gfix -o[nline] database_name