Oracle: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Elvisleegwater (overleg | bijdragen)
Elvisleegwater (overleg | bijdragen)
Geen bewerkingssamenvatting
Regel 53:
 
==== archivelogfiles ====
 
==Geheugengebieden==
 
[[Afbeelding:sga1.png|center]]
 
 
De System Global Area (SGA) of soms ook Shared Global Area van een Oracle database is het geheugengebied op de server dat gebruikt wordt door de verschillende Oracle processen. De SGA is onder te verdelen in verschillende gebieden. De belangrijkste gebieden zijn de buffer cache, shared pool, large pool, redo buffer en de java pool. Deze processen lezen en/of schrijven in deze geheugengebieden van de SGA. Een serverproces leest bijvoorbeeld de rijen uit een tabel uit de buffer cache en stuurt dit door naar de client. Een achtergrondproces zoals de database writer (DBWR) leest databaseblokken uit fysieke datafiles en plaatst deze in de buffer cache. Naast deze verschillende variabele gebieden waarin data wordt opgeslagen, is er ook een vast gebied waar sturingsinformatie in wordt opgeslagen voor de processen. Hierin wordt bijvoorbeeld ook de status van de database en instance in weggeschreven. De verschillende processen kunnen hier ook de locking informatie uitlezen. Dit gedeelte van de SGA wordt de [[fixed SGA | fixed SGA]] genoemd.
 
Tijdens het starten van de Oracle database wordt de SGA gealloceerd en dit gehele geheugengebied wordt weer vrijgegeven bij het stoppen van de Oracle database.
 
De totale omvang van de SGA wordt bepaalt door een aantal instance parameters. De omvang van de verschillende deelgebieden kunnen apart worden aangegeven of vanaf [[Oracle9i]] kan men automatisch de verschillende deelgebieden laten groeien of krimpen. Zie verder bij [[ConfigSGA |Configuratie van de SGA]].
 
==== Buffer Cache ====
 
==== Shared Pool ====
 
==== Large Pool ====
 
==== Java Pool ====
 
=== Program Global Areas ===
 
Zoals je kunt zien in bovenstaande tekening heeft elk proces een eigen prive geheugengebied, dit wordt de Program Global Area (PGA) genoemd. Deze geheugengebieden vallen dus ook buiten de SGA en heeft elk proces, of het nu een achtergrondproces is zoals [[DBWR]] of een serverproces ten behoeve van een client connectie. De processon kunnen dan ook niet lezen of schrijven in de PGA van een ander proces.
 
De totale omvang van alle PGA gebieden bijelkaar wordt de ''aggregated PGA'' genoemd. Vanaf [[Oracle9i]] kan met een limiet zetten op de totale, ''aggregated'', omvang van de PGA. Voor [[Oracle8i]] was de omvang van de PGA, met name de SQL Work Area, alleen te sturen met enkele instance parameters, zoals sort_area_size en hash_area_size. Hoe je de PGA kan configureren lees je in [[ConfigPGA| Configuratie van PGA]]
 
==== Private SQL Area ====
 
Een SQL opdracht dat door een client wordt gestart heeft in de PGA van het serverproces een Private SQL area. Hierin worden bijvoorbeeld de waarden van bindvariabelen in opgeslagen. Dus naast een Shared SQL area waarin alle SQL statements staan, is er ook een Private SQL Area.
 
De data in de ''persistent area'' van de Private SQL area wordt pas vrijgegeven als een cursor, SQL opdracht, wordt gesloten.
 
De Private SQL Area valt niet in alle gevallen in de PGA van het serverproces, als voor een instance de zogenaamde [[Shared Server]] mode actief is, dan wordt de Private SQL Area opgeslagen in de SGA. Om precies te zijn in de [[DatabaseGeheugengebieden#Large_Pool|large pool]] van de SGA.
 
==== SQL Work Area ====
 
Als voor een bepaalde SQL opdracht een sortering uitgevoerd moet worden dan zal eerst een poging gedaan worden om deze sortering in het geheugen uit te voeren. Dit gebeurt in de SQL Work Area van de PGA. Ook het uitvoeren van [[hash joins]] gebeurt in eerste instantie in de SQL Work Area. Mocht blijken dat deze operaties niet in het geheugen uitgevoerd kunnen worden dan zal de operatie verder worden uitgevoerd op disk, in de [[Temporary Tablespace]].
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.