====== 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