Zum Inhalt springen

Frage bzgl. Vorgehensweise bei Oracle10g aufbau & Implementierung von "Analyse"-Logik


mailya

Empfohlene Beiträge

Hallo liebes Forenteam!

Bin auf eure Seite beim googlen nach kompetenten Hilfe-Foren gestoßen. 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 Facharbeit 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

PS:

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

habe ich das richtig verstanden, das du eine Funktion haben willst, die anhand der bisherigen Belastung der DB durch einen User entscheidet, ob für diesen gerade genug Ressourcen zur Verfügung stehen?

Wenn das auch etwas anders funktioniert, schau dir mal den ressourcen manager an, vielleicht kann der dir irgendwie weiterhelfen.

Ansonsten kann ich mir den Anwendungsfall (Benutzer verbrauchen immer gleiche Ressourcen, die Benutzer sind aber nicht anders zeitlich zu steuern) ausserhalb einer Laborbedigung irgendwie nicht sinnvoll vorstellen.

Ansonsten, was sind das für Statements die da Last machen (update/insert/delete/ddl/dml/pl-sql usw).???

Link zu diesem Kommentar
Auf anderen Seiten teilen

nene, eine funktion benötige ich nicht.

Nur tipps zur vorgehensweise und eventuell tiefgehende Hinweise was man beachten sollte.

Also der Resource-Manager ist ja der eigentlich "Casus-Knackus", weswegen das "Projekt" ins Leben gerufen wurde. Er ist scheinbar einfach zu leistungsschwach und zu starr. Es gibt hier einen ALgorithmus (meine Black-Box), die mit Hilfe von wirtschaftlichen Kennzahlen und Vorausschätzungen ob wichtigere Anfragen kommen werden eine aktuelle Anfrage Ablehnen und Annehmen kann. Und dies anhand der aktuellen Auslastung des Servers und der Messreihen der individuellen Benutzer-Verbrauchszahlen.

Die Tabelle mit diesen Verbrauchszahlen könnte man dann ja auch theoretisch dynamisch wachsend machen und so Benutzerverhalten analysiert werden. (Also das wäre jetzt reine Theorie).

Was ich machen muss ist die Umsetzung in Oracle, dass der externe Java-Algorithmus mit Werten gefüttert wird und somit die kommende Anfrage (in diesem Fall: der Login eines Benutzers) zur jeweiligen Zeit X angenommen oder abgelehnt wird. Ablehnen heißt in diesem Fall sozusagen in eine Warteschlange gesetzt zu werden.

Und wie gesagt, der Resource-Manager allein reicht dafür nicht aus. Im nächsten Schritt wird die ankommende Anfrage anstatt abgelehnt in eine niederwertigere Resource Consumer Group verschoben. Das simuliert dann die einreihung in die Warteschlange.

Sind nun alle Klarheiten beseitigt? Ich hoffe natürlich nicht *g*

Grüße und schon mal danke für die erste Antwort,

mailya

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok,...

dein Kernproblem ist nun erstmal, das bei identischen Transaktionen/Queries nicht gleiche Werte gemessen werden (deine vermutung redologbuffer)???

Dafür mal posten was das für Transaktionen/Queries sind und wie fragst du die verbrauchten ressourcen ab?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also der Resource-Manager ist ja der eigentlich "Casus-Knackus", weswegen das "Projekt" ins Leben gerufen wurde. Er ist scheinbar einfach zu leistungsschwach und zu starr.

das einzige, was dem resourcenmanager wirklich fehlt sind I/O-limite. ansonsten ist er recht brauchbar.

den resourcenverbrauch festzustellen dürfte nicht ganz einfach sein, da dieser von einer ganzen anzahl von faktoren abhängt, die im laufenden betrieb nur sehr schwer zu erfassen sind (cache hits, i/o-distribution, system-aktivitäten, etc. pp.). das gleiche gilt für die momentane auslastung des servers (intervallmessung).

ich würde den resourcenmanager einsetzen in zusammenhang mit profiles.

-j

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...