Hallo liebes Tutorial-Foren-Team!
Wusste ja gar nicht, dass es hier auch eine Ecke für Datenbank-Geschädigte gibt ;-)
Erst einmal ein Lob! Die durchstöberten Threads wirken sehr nett und hilfsbereit - zudem aber auch sehr kompetent!
Doch nun zu meinem Problem bzw. wohl eher Anliegen.
Im Rahmen meiner Studienarbeit die ich gerade schreibe (Analyse von Kapazitäten bei Oracle) muss ich einen Oracle 10g-Server aufsetzen. Mit Hilfe des Universal Installers ist mir dies auch nicht sonderlich schwer gefallen.
Leider tu ich mir bei der optimalen Konfiguration ein wenig schwer.
Das was der Server leisten soll, sind vergleichbare Ergebnisse zu liefern. Ich generiere 3 verschiedene Benutzertypen. Diese Benutzertypen sind durch verschiedene immer gleich bleibende Transaktionen/Queries gekennzeichnet. Also wird der Ressourcenverbrauch (IO/CPU), bei einem identischen Benutzer immer der gleiche sein.
Um jedoch diesen Ressourcenverbrauch zu messen, habe ich versucht in einer "Endlosschleife" immer die gleichen Anfragen an den Datenbankserver mittels PL/SQL Prozeduren mit eingebetteten Anfragen zu ermitteln.
Leider sind die Ergebnisse je öfter die Schleife durchläuft immer langsamer und somit nicht aussagekräftig.
Ich vermute das liegt an den Redo-Log-Buffern, die pro Transaktion immer größer werden? (Bitte nicht auslachen, wenn ich hier komplett "sinnlose" Annahmen treffe. Bin leider kein Oracle bzw. allgemein DB-Experte!)
Habe versucht nach jeder EINZELNEN Messung die Datenbank herunterzufahren und anschließend wieder zu starten. Jetzt waren die Ergebnisse in etwa identisch. Doch es kann nicht sein, dass es hierbei keinen einfacheren Weg gibt?
Wie würdet ihr hierbei vorgehen?
Ziel des ganzen soll eine Tabelle sein, in der für jeden der 3 Benutzer Werte für den CPU und IO Verbrauch hinterlegt werden. Wenn der Benutzer nun in Zukunft mit der Datenbank verbindet, wird überprüft, wieviel Ressourcen mittels bisherigen Erfahrungen (==Datenbankspalte des Benutzers) verbraucht wurde und die Anfrage wird mit einem Algorithmus ausgewertet. Dieser Algorithmus wird zugeliefert und fungiert für mich als Black-Box.
Ich habe mir gedacht, das ganze per Trigger oder alternativ per VPD zu lösen... Hier wird eine PL/SQL-Prozedur aufgerufen, die die Werte aus der ertsllten Ressourcen-Tabelle ermittelt sowie die aktuelle Systemauslastung aus den v_$-Tabellen von Oracle. Dies alles wird dann an den Algorithmus übergeben (der ist übrigens in Java geschrieben; würde dann über meine PL/SQL-Prozedur "aufgerufen" werden!) und bekommt sozusagen eine 1 für Annahme und eine 0 für Ablehnung der Anfrage! Habe mir hierbei gedacht, das ganze per RMI zu lösen. Oder per Beans. Was performanter und Ressourcenschonender ist. Bei Beans hätte ich jedenfalls noch keine Idee wie ich vorgehen müsste.
Oder gibt es da bessere Möglichkeiten?
Vielen Dank schon einmal im Voraus für eure Hilfe! Werde jetzt erstmal Windows 2003 Server und anschließend mal wieder Oracle 10g R2 installieren
Gruß,
mailya
Achso, hier noch die Konfiguration des "armen,leistungsschwachen" Servers:
Die Konfiguration des "Servers" ist wie folgt (leider steht mir kein schnellerer Rechner zur Verfügung!)
FSC Celsius 400
P4 1700 MHz
1GB RAM
40 GB HDD
OS: Win 2003 Server Enterprise
DB: Oracle 10g R2
Wusste ja gar nicht, dass es hier auch eine Ecke für Datenbank-Geschädigte gibt ;-)
Erst einmal ein Lob! Die durchstöberten Threads wirken sehr nett und hilfsbereit - zudem aber auch sehr kompetent!
Doch nun zu meinem Problem bzw. wohl eher Anliegen.
Im Rahmen meiner Studienarbeit die ich gerade schreibe (Analyse von Kapazitäten bei Oracle) muss ich einen Oracle 10g-Server aufsetzen. Mit Hilfe des Universal Installers ist mir dies auch nicht sonderlich schwer gefallen.
Leider tu ich mir bei der optimalen Konfiguration ein wenig schwer.
Das was der Server leisten soll, sind vergleichbare Ergebnisse zu liefern. Ich generiere 3 verschiedene Benutzertypen. Diese Benutzertypen sind durch verschiedene immer gleich bleibende Transaktionen/Queries gekennzeichnet. Also wird der Ressourcenverbrauch (IO/CPU), bei einem identischen Benutzer immer der gleiche sein.
Um jedoch diesen Ressourcenverbrauch zu messen, habe ich versucht in einer "Endlosschleife" immer die gleichen Anfragen an den Datenbankserver mittels PL/SQL Prozeduren mit eingebetteten Anfragen zu ermitteln.
Leider sind die Ergebnisse je öfter die Schleife durchläuft immer langsamer und somit nicht aussagekräftig.
Ich vermute das liegt an den Redo-Log-Buffern, die pro Transaktion immer größer werden? (Bitte nicht auslachen, wenn ich hier komplett "sinnlose" Annahmen treffe. Bin leider kein Oracle bzw. allgemein DB-Experte!)
Habe versucht nach jeder EINZELNEN Messung die Datenbank herunterzufahren und anschließend wieder zu starten. Jetzt waren die Ergebnisse in etwa identisch. Doch es kann nicht sein, dass es hierbei keinen einfacheren Weg gibt?
Wie würdet ihr hierbei vorgehen?
Ziel des ganzen soll eine Tabelle sein, in der für jeden der 3 Benutzer Werte für den CPU und IO Verbrauch hinterlegt werden. Wenn der Benutzer nun in Zukunft mit der Datenbank verbindet, wird überprüft, wieviel Ressourcen mittels bisherigen Erfahrungen (==Datenbankspalte des Benutzers) verbraucht wurde und die Anfrage wird mit einem Algorithmus ausgewertet. Dieser Algorithmus wird zugeliefert und fungiert für mich als Black-Box.
Ich habe mir gedacht, das ganze per Trigger oder alternativ per VPD zu lösen... Hier wird eine PL/SQL-Prozedur aufgerufen, die die Werte aus der ertsllten Ressourcen-Tabelle ermittelt sowie die aktuelle Systemauslastung aus den v_$-Tabellen von Oracle. Dies alles wird dann an den Algorithmus übergeben (der ist übrigens in Java geschrieben; würde dann über meine PL/SQL-Prozedur "aufgerufen" werden!) und bekommt sozusagen eine 1 für Annahme und eine 0 für Ablehnung der Anfrage! Habe mir hierbei gedacht, das ganze per RMI zu lösen. Oder per Beans. Was performanter und Ressourcenschonender ist. Bei Beans hätte ich jedenfalls noch keine Idee wie ich vorgehen müsste.
Oder gibt es da bessere Möglichkeiten?
Vielen Dank schon einmal im Voraus für eure Hilfe! Werde jetzt erstmal Windows 2003 Server und anschließend mal wieder Oracle 10g R2 installieren
Gruß,
mailya
Achso, hier noch die Konfiguration des "armen,leistungsschwachen" Servers:
Die Konfiguration des "Servers" ist wie folgt (leider steht mir kein schnellerer Rechner zur Verfügung!)
FSC Celsius 400
P4 1700 MHz
1GB RAM
40 GB HDD
OS: Win 2003 Server Enterprise
DB: Oracle 10g R2