220 likes | 313 Views
Administrace Oracle DBI013. Inštancia Oracle (pamäť a background procesy) Ján Lučanský. Čo Oracle drží v pamäti. Kód programu Informácie o pripojených sessions D áta potrebné počas vykonávania programu Zdieľané medzi procesné informácie ( napr. informácie o zámkoch ) Cacheované dáta.
E N D
Administrace OracleDBI013 Inštancia Oracle (pamäť a background procesy) Ján Lučanský
Čo Oracle drží v pamäti • Kód programu • Informácie o pripojených sessions • Dáta potrebné počas vykonávania programu • Zdieľané medzi procesné informácie (napr. informácie o zámkoch) • Cacheované dáta
Základné pamäťovéštruktúry • System Global Area (SGA) • Je zdieľaný všetkými serverovými a background procesmi • Obsahuje: • Data buffer cache • Redo log buffer • Shared buffer • ... • Program Global Areas (PGA) • Privátna oblasť pre každý serverový a background proces • Jeden PGA pre každý proces • Obsahuje • Stack areas • Data areas
System Global Area1/2 • Jedná sa o zdieľané pamäťové štruktúry, ktoré obsahujú dáta pre jednu inštanciu databáze • Každá inštancia má svoju vlastnú SGA • Do SGA je typu read/write • Všetci užívatelia môžu čítať informácie obsiahnuté v SGA • Len niektoré procesy môžu do SGA zapisovať • SGA obsahuje: • Database buffer cache • Redo log buffer • Shared pool • Java pool • Large pool (nepovinné) • Data dictionary cache • Iné informácie
System Global Area2/2 • Ak Oracle beží ako Shared Server Processes, potom sú v SGA uložené aj fronty úloh a niektoré časti PGA • Veľkosť SGA je možno meniť za chodu. Veľkosť je určená následujúcimi parametrami : • SGA_MAX_SIZE – maximálna veľkosť SGA • SGA_CACHE_SIZE –veľkosť Database BufferCache • LOG_BUFFER –veľkosť Log Bufferu • SHARED_POOL_SIZE – veľkosť Shared Pool • LARGE_POOL_SIZE –veľkosť Large Pool SGA(implicitne 0) • Príkaz SHOW SGA v SQL*PLUS SQL> show sga Total System Global Area 61771936 bytes Fixed Size 73888 bytes Variable Size 44249088 bytes Database Buffers 16384000 bytes Redo Buffers 1064960 bytes
Fixed SGA • Jedna časť SGA obsahuje základné informácie o stave databáze a inštancií. • K tejto časti pristupujú background procesy • Táto časť neobsahuje žiadne užívateľské dáta. • Obsahuje informácie o medziprocesnej komunikácií (napr. o zamykaní objektov)
Database Buffer Cache • Časť SGA, ktorá drží kópie súborov v pamäti. • Všetky užívateľské procesy pripojené na inštanciu zdieľajú • Buffre v cache sú organizované v dvoch zoznamoch • Write list • Obsahuje tzv „dirty buffers“. Sú to tie buffers, ktoré boli modifikované, ale ešte neboli aktualizované na disku • LRU list (Least Recently Used) • Algoritmus LRU vyhadzuje najdlhšie nepoužívane bloky pamäte • Zoznam má dva konce: LRU koniec a MRU (Most Recently Used) koniec • Štandardne sa pri použití bufferu zaradí na MRU koniec • Vynímkou je full table scan, kde sa buffre ukladajú na LRU koniec • To je však možno zamedziť prepínačom CACHE pri príkaze CREATE TABLE, ALTER TABLE
Redo Log Buffer • Ide o “cyklyckú pamäť”, ktorá sa nachádza v SGA • Udržuje informácie o zmenách, ktoré v databáze nastali • Slúži k tomu, aby bolo možné vykonať “krok späť“ • Takisto môže poslúžiť pri obnove db • Zaznamenávanie operácie • INSERT • UPDATE • DELETE • CREATE • ALTER • DROP
Shared Pool – Library Cache • Librabry cache – jedná z častí Share Pool • Obsahuje • Zdieľané SQL oblasti • Privátne SQL oblasti • PL/SQL procedúry a balíčky • Kontrolné štruktúry (zámky,...) • Oracle dokáže rozpoznať, keď dvaja užívatelia spúšťajú ten istý SQL príkaz a takto využiť zdieľanú SQL oblasť (Shared SQL Area) • Shared SQL Area obsahuje strom rozdeleného SQL príkazu a plán vykonania pre daný príkaz. • Oracle týmto šetrí pamäť
Shared Pool – Dictionary Cache • Distionary cache • Uchováva read-only množinu tabuliek zvanú Data Dictionary, ktorá obsahuje následujúce informácie o databáze • Definície schém objektov (tabuľky, pohľady, indexy, clustre, funkcie, triggre,...) • Informácie o alokovanom a použitom mieste pre objekt • Defaultne hodnoty stĺpcov • Integritné obmedzenia • Meno, privilégia a rola každého užívateľa • Informácie o tom, kto pristupoval a menil objekty • Data dictionary je fyzicky uložený v • Data dictionary cache (známe aj ako row cache) • Library cache
Large pool • Nepovinná časť SGA, ktorá zaisťuje alokovanie pamäte pre: • Session pamäť pre shared server • I/O serverové procesy • Operácie na zálohovanie a obnovu • Nepoužíva LRU list
Program Global Area • Nezdieľaná pamäť vytvorená pri štarte serveru • Prístup k nej má výlučné serverovský proces (server process) • Obsah PGA pre dedicated server je odlišný od toho pre shared server
Processes • Obecná hierarchia procesov je nasledujúca: • Užívateľské procesy • Procesy databáze Oracle • Serverové procesy • Background procesy
Server Processes • dedicated server process • Jeden užívateľský proces je spojený so serverovým procesom v pomere 1:1 • shared server process • Viac užívateľských procesov môže byť spojených k jednému serverovému procesu
Oracle Dedicated Server Processes • Nie je veľmi výhodný pri bežnej práci. DB server nesie réžiu pri nečinnosti užívateľského procesu • Hodí sa len na niektoré situácie • Dávkové súvislé akcie • Zálohovanie, obnova a zotavenie (Recovery Manager)
Oracle Shared Server Processes • Typicky viac užívateľských procesoch pracuje s jedným serverovým • Je to efektívnejšie, keďže aplikácie spolupracujú s dátami DB serverom v časových odstupoch (SELECT, INSERT len raz za čas...). • So shared server processes je réžia rozdelená medzi viacero užívateľských procesov (na rozdiel od Dedicated Server Processes)
Background processespríklady 1/3 • Database writer(DBWn) • Zapisuje modifikované bloky z cache buffera do súborov Oracle dovoľuje spustiť maximálne 20 týchto súborov • Log writer (LGRW) • Slúži na zapisovanie redo logov na disk • Checkpoint(CKPT) • Dáta z bufferov sa na disk zapisujú v určitom čase (za pomoci DBWn) • Ten čas, kedy k tomu dôjde sa nazýva checkpoint. • Proces Checkpoint ma na starosti komunikáciu s DBWn.
Background processespríklady 2/3 • System monitor (SMON) • Vykonáva obnovu po zrútení inštancie. • Takisto dokáže uvoľniť dočasné segmenty, ktoré sa nebudú používať • dokáže obnoviť mŕtve transakcie, ktoré v sa v dôsledku havárie nestihli vykonať • Process monitor (PMON) • Vykonáva obnovu, ak dôjde ku pádu užívateľského procesu • je zodpovedný za uvoľnenie cache a zdrojov, ktoré proces používal • Archiver (ARCn) • Archivuje redo logy
Background processespríklady 3/3 • Recoverer (RECO) • využíva sa v distribuovaných databázach na obnovenie distribuovaných transakcií • Odrolovanie transakcie môže v tomto prípade zapríčiniť pád systému alebo problém so sieťou. • Dispatcher (Dnnn) • jedná sa o nepovinné procesy, ktoré bežia typicky v shared server • Global Cache Service (LMS) • Súvisí s Oracle Real Application Cluster enviroment • Coordinator Job Queue Process(CJQ0) • Koordinuje frontu úloh pre danú inštanciu
Monitorovanie Procesov • Oracle má vstavané pohledy, ktoré poskytujú informácie o procesoch. Ide o následujúce pohledy • V$PROCESS – informácie o práve bežiacich procesoch • V$SESSION – zoznam všetkých sessions • V$SESS_IO – štatistiky I/O pre sessions • V$SESSION_LONGOPS – informácie o procesoch bežiacich dlhšie než 6 sekúnd • V$SYSSTAT – štatistky session • V$SQLAREA - obsahuje štatistiky o shared SQL area a obsahuje jeden riadok pre každý SQL reťazec. Takisto obsahuje štatistiky o SQL príkazoch, ktoré sú v pamati, ktoré sú rozparsované a ktoré sú pripravené pre spustenie.