Performance Tuning mit Oracle Einstellungen
„in-STEP BLUE ist zu langsam“ habe ich oft von meinen Kollegen am Telefon, aber auch anderen in-STEP BLUE-Nutzern auf der Nutzerkonferenz gehört. Also was tun: bessere Serverhardware beschaffen, Anwendung soweit möglich optimieren, „in-STEP BLUE Server for Oracle“ nutzen (die Oracle-Express-Edition gibt es sogar kostenlos zum Download), einen dedizierten Datenbank-Server nutzen und Tuning des Netzwerkes. OK, hat alles etwas gebracht, aber von unseren Anwendern (wir entwickeln Realtime-Anwendungen!) höre ich immer noch Kritik.
Gut, dann spendieren wir unseren Servern auch noch ein wenig mehr Arbeitsspeicher, aber halt: der Oracle-11g-Server mag mit dem neu spendierten RAM gar nichts anfangen, er zeigt die gleiche RAM-Auslastung wie vorher.
Da wir bei uns nur begrenztes Oracle-DBA-Wissen besitzen und ein Experimentieren an dieser Stelle für uns allein zu heiß war, musste ein “Oracle-Guru” her.
Zusammen mit dem beauftragtem Oracle-Consultant haben wir festgestellt, dass (durch die Standard-Installation) Oracle sich selbst auf die Nutzung von 1GB beschränkte. Der dafür maßgebliche Konfigurationsparameter war die sga_max_size (= maximale Größe der sog. System Global Area). Weitere in diesem Zusammenhang wichtige Konfigurationsparameter sind db_cache_size (= Größe des Caches für Daten- und Index-Blöcke) und memory_target (= Gesamtgröße des von der Datenbankinstanz zu verwendenden Arbeitsspeichers).
Änderung der Oracle-Startparameter und ihre Auswirkung bei uns
Um eine Aussage treffen zu können, welche Auswirkungen eine Änderung der Startparameter hat, haben wir ein Analyse-Tool von microTOOL bemüht. Dieses öffnet – kurz gesagt – alle für einen bestimmten Nutzer konfigurierten Sichten und ermittelt und protokolliert die zum Öffnen benötigten Zeiten. Mit einem kleinen PowerShell-Script haben wir die Protokolle aggregiert.
Die folgende Tabelle zeigt eine Auswahl von Parameterkonfigurationen und die Summe der Zeiten:
Tabelle mit Parameterkonfigurationen
Durch die vorgenommenen Änderungen konnten wir die Geschwindigkeit – zumindest bei Leseoperationen, also bspw. beim Öffnen von Sichten – deutlich erhöhen.
Vorgehen zum Ändern der Oracle-Startparameter
Oracle benutzt zum Starten (in der Regel) ein sogenanntes SPFILE. Dort stehen neben binären Oracle-Informationen auch jene Konfigurationseinstellungen, die zum Betreiben der Oracle-Instanz benutzt werden.
Neben den SPFILEs exisitieren in Oracle noch sogenannte PFILEs. Diese korrespondieren mit den SPFILE, enthalten also Konfigurationseinstellungen, jedoch keine binären Oracle-Informationen.
Um herauszufinden, welche Datei die aktuelle Oracle-Instanz benutzt, kann folgende Abfrage im „SQL Plus“ als „SYS as SYSDBA“ ausgeführt werden:
select value from v$parameter where name =’spfile’;
Um die Konfigurationseinstellungen zu ändern, muss das benutzte SPFILE in ein PFILE umgewandelt werden. Dies erledigt Oracle selbst mit folgendem Befehl (als SYSDBA!):
create pfile=’C:/mypfile.ora’ from spfile;
Die Konfigurationseinstellungen können nun bequem mit einem Editor angepaßt werden. Nach erfolgreichem Editieren muss das PFILE wieder in ein SPFILE umgewandelt werden. Dies erledigt folgender Befehl (als SYSDBA!):
create spfile from pfile=’C:/mypfile.ora’;
Nach Neustart des Oracle-Dienstes werden die geänderten Einstellungen benutzt.
Zusammenfassung
Gefühlte Wartezeit
Auf dem beschriebenen Weg kommt man bzgl. Performance ein gutes Stück voran. Wir waren aber auch sehr schnell über die Grenzen der Oracle-Express-Edition hinaus, wenn auch anfangs nur beim Releasewechsel. So ganz kostenlos gibt es eben doch keine Performance „zum Download“.
Unabhängig von den Vorschlägen hier freuen auch wir uns auf in-STEP BLUE 4.9, was weitaus potentialreichere Ansätze zur Performance-Verbesserung nutzt.
Diskutieren Sie mit.