Nehnevajte sa ale takmer cokolvek co bezi na mainframe dokaze mat takmer nulovy downtime, pretoze to je uloha mainframeu.
Mainframe neni jenom HW. Pro vysokou dostupnost je potreba aby tuto funkcionalitu podporoval operacni system a aplikace. Je nutna soucinost vsech techto slozek. Pokud na mainframe jedete linux, tak to ho pak pouzivate jen jako nastroj pro virtualizaci.
Takze kdyz na mainframe nainstalujete oracle, tak ty veci co neumeli delat bez downtime na unixu nebude umet delat ani na mainframu. Mainframova DB2 a unixova DB2 jsou dva odlisne produkty, ktere maji jednak uplne rozdilnou administraci a nemaji ani 100% kompatibilni user mode SQL statementy. Mainframova DB2 toho umi vic nez unixova DB2. Kuprikladu unixova neumi index nad vyrazem bez toho aniz by se vytvoril v tabulce
generated always sloupecek. Unixova DB2 je slabsi odvar te mainframove, ackoliv to neplati vzdy par drobnosti ma ta unixova zase navic. Mainframovej oracle je ale klasickej oracle jaky zname z unixu.
My mame na mainframu za poslednich 8 let nulovy downtime (planovany i neplanovany). Srovnejte si to s oraclem, ktery donedavna (neco okolo 10 nebo 11) neumel ani tak zakladni vec jako
online index build. DB2 podporuje jenom online index build uz od svych ranych verzi pred 25 lety. Proto taky oracle na mainframech prakticky nikdo nepouziva (linuxovou verzi nepocitam to spis pouzivaj zVM virtualizaci).
Ale zabudli ste na jednu podstatnu vec, napr. na ludsky faktor, chyba v aplikacii, tieto veci vam mozu sposobit stratu dat a tu vam mainframe vobec nepomoze.
Ale pomuze, vzdyt u DB2 kdyz mate jeden z toolu co k tomu dodavaji - tusim snad recovery expert tak muzete selektivne vracet jednotlive transakce nebo vratit databazi par minut zpet. Nejsou k tomu zapotrebi zadne specialni upravy aplikace, staci klasicke transakcni logy.
Opravim vas, prv nez Oracle zapise do datafileu, tak pred tym zapise do logu (konkretne do online redo logu) je to prave kvoli tomu, ze ak by doslo k vypadku, urobi takzvane Instance (alebo crash) recovery, kde v ramci rollforward fazy aplikuje vsetky zmeny a potom vramci rollback fazy tie necommitnute odroluje (to uz pri otvorenej DB).
Vidite, ziadna strata.
1. oracle ma spoustu bugu. uz nekolikrat se mi stalo ze mi
shutdown immediate zmrsilo databazi tak ze pak nesla nastartovat bez recovery.
shutdown abort jsem nekolikrat pouzil a to mi zrovna databazi nezmrsilo, nicmene jsem mel dost vitr ze prijdu o data.
Naproti tomu u db2 shutdowny nedelam nikdy a to asi uz 10 let a nikdy jsem o zadna data neprisel. udelam power off na cely virtualni stroj, je to rychlejsi. Taky delam misto cekani na rollback reset virtualniho stroje. Recovery probiha v nekolika procesech soucasne, tak vyjde rychleji nez uzivatelsky rollback ktery dela jen jeden agent. Pravda, odpraskne to transakce i vsem ostatnim uzivatelum, ale websphere je umi zopakovat na novem pripojeni do db, ktere si automaticky vezme dalsi db2 image ktery je up.
U oracle jsem chtel taky praktikovat resetem delane rollbacky nicmene asi 3 ti den jsem prisel o data a tak jsem toho uz pak nechal. Misti oracle admini mi to nedoporucovali.
Ano, Oracle si opravnene mysli, ze zapisal na disk (aj ked zapisal do cache) pretoze dostal ACK o zapise.
Oracle je kriticky zavisly na tom ze kdyz zapise do logu checkpoint rekord ze musi mit datove stranky opravdu zapsane na disk. Pokud je nema poskodi to databazi pri recovery, nabouraji se mu bloky. Vzhledem k tomu ze tento jev nenastava zrovna malo casto (disky maji casto interni cache a kecaji o zapisu) tak ma oracle funkci block recover. DB2 ji nema nebyl k jejimu napsani duvod, protoze tento jev u ni nenastava, tam bloky zarvou jen v pripade hw chyb.
Chcete snad povedat, ze IBM DB2 kona inak, resp. ze nepise do cache na urovni storage? Za prve to nevie ovplyvnit a za druhe sa riadi tym co jej povie OS.
DB2 nedela nikdy checkpointy, takze jeji suma fuk zda ji ty disky kecaji nebo ne. dokaze se s tim pri recovery vyrovnat. Takove algoritmy existuji. ZFS to umi taky. Oracle by si mel tuto patentovanou technologii koupit.
Mimochodom crash recovery u DB2 je velmi podobna ako u Oracle, je tu par specifickych rozdielov, ale princip je ten isty.
neni. Oracle pouziva checkpoint based system - tedy klasiku. DB2 ma ARIES, coz je checkpoint free algoritmus pro obnovu dat pri vypadku. Z pohledu admina to sice muze vypadat velmi podobne, ale uvitr je to velmi jine. ARIES taky pracuje s tim ktere transakce jsou a ktere nejsou na disku, ale nepotrebuje tuto informaci pro obnovu. ARIES se umi vyporadat se stavem ze ma sice v logu napsano ze tato transakce by mela byt zapsana i v datovych souborech a on kontrolou hlavicek stranek zjisti ze se tam nezapsala tak umi transakci vratit zpet, naproti tomu oracke rozbije ty inkriminovane bloky. Oracle by mohl udelat to same pokud by mel konzistentni rollback segment ale to mit nebude protoze pri tehlech pruserech zarve rollback segment jako prvni.
DB2 pri prvnim startu po rebootu projede cely transakcni log bez ohledu na znacku kam az se to udajne stihlo zapsat na disk a porovna hlavicky logu s hlavickama datovych stranek zda jsou vuci sobe konzistentni. Vetsinou si lidi nechavaji tak 10GB online logu aby to nedelalo dlouhe starty, ty to projede maximalne za 5 minut, vetsinou neco pres minutu.
Ak dovolite, toto necham bez komentara, pretoze evidentne "rozumiete problematike" a nechcem pouzivat invektivy.
Ja problematice databazi rozumim rozhodne lepe nez vy. Mam cerifikaty jak od oraclu tak od ibm a to na unix i mainframe platformu. Jsem v data warehousingu dost dobrej a navic vyrazne vic vydelavam. Za 1 den vydelam asi tolik co vy za rok, kdybyste byl tak dobrej jak tady machrujete tak proc by jste si uz nekoupil nejakou IT firmu. Banky dneska pujcuji na cokoliv levne.
Mozno sa to zda prilis komplikovane, ale presne tak je to komplikovane aj pri inych DB, niekde menej a niekde viacej a prave preto tu mame poziciu DBA.
DBA pozice by mela delat tvurci praci a ne rutini ukoly. Znalosti dba by se meli vlozit do db enginu a nechat ho delat tyto veci automaticky.
1.
DB2 umi jednak automaticky spoustet statistiky kdy jsou potreba (synchrone - necha dotaz cekat nez dojedou nebo asynchrone). To je vyrazne zlepseni vuci oracle, ktery dela statistiky pres pouhy job scheduler.
2.
Umi trasovat dotazy a zjistovat nad kterymi sloupecky jsou potreba podrobnejsi a jak moc podrobne statistiky.
3.
DB2 Executor (technologie LEO) umi kompenzovat statistiky neodpovidajici datum. V pripade ze admin + 1 + 2 selze. Dela si krivku kterou aplikuje na statistiky tak aby odpovidaly skutecnemu stavu. Dokaze pri zjisteni neschody - statistiky vs real v prubehu dotazu spustit novou optimalizaci dotazu a pouzit jiz ty casti ktere se vykonaly aby se nemuseli v novem planu opakovat. Vynikajici vec pro dlouhe warehouse dotazy.
4.
i5/os DB2 umi dokonce sama vytvaret i chybejici a likvidovat nadbytecne indexy. Vynikajici vec. Tahleta edice se povedla a ma MYSQL kompatibilni modul! Proto si LAMP patlalove v bankach oblibili i5/os.
5.
automatickou reorganizaci dat a indexu umi vsechny
6.
taky ma db2 (i unixova) vynikajici vec - workload manager. To je naprosta nutnost, krasne si nadefinujete classy dotazu a muzete pak OLTP dotazy uprednostnovat pred OLAP. Workload managing v zOS je uzasna technologie a hezky to spolupracuje i s websphere.
Shrnuto. DB2 nema neustale srani se se statistikama. V pripade ze to dotaz na zaklade chybnych statistik podela, tak ho to podela jen 1x, pri dalsim vykonavani jiz pojede optimalni trasou. Proto se taky v DB2 manualni hinting prakticky nepouziva, zato v oracle se hintuje fest.
Napriklad ten, ze s Oracle su sustavne problemy... tu mozem povedat len jedno, zamyslite sa nad kvalitou vasich DBA.
Vemte si to tak, mam asi 90+ databazi (instanci v terminologii ora) DB2 a to mi spravuji 2 fulltime lidi. Kdybych mel 90 oraclu tak bych na to potreboval aspon 10 lidi.
Vemte si jaka je poptavka po oracle a db2 adminech. Odpovida trznimu podilu databazi t.j. 2:1 pro oracle? Ne, je zhruba 10:1 pro oracle adminy. Proc tomu asi tak je?
Znate nekoho kdo by mel 200k zamestancu a SAP pod oraclem a nemel na ten Oracle admina? Ja takovy instalace mainframove DB2 znam. Pravda maji tam asi jen 2 TB dat.
Jdu vydelavat. Nemam cas na dlouhe flamewars.