Archiv für die Kategorie „Oracle“

Erste Versuche mit Oracle 11g

Freitag, 19. Dezember 2008

Auch ich komme natürlich nicht umhin mich ein bisschen in das neue Oracle Release 11g einzuarbeiten und ein paar der zahlreichen neuen Features zu testen. Mein erstes Interesse galt dem Database Resident Connection Pooling, kurz: DRCP. Oracle implementiert hiermit eine dritte Variante der “Verbindungsoptionen” neben SHARED Server und DEDICATED Server. Der DRCP stellt ein Datenbank basiertes Connection Pooling zur Verfügung und soll damit insbesonders verbindungslose Webapplikationen wie PHP beschleunigen, da aufwendige Connects wegfallen. Ausserdem sollen Resourcen geschont werden, da Verbindungen wiederverwendet werden können.

Das Dokument “PHP Scalability and High Availability” beschreibt z.B. dass bei 5000 Connections anstatt 21GB Speicher mit DEDICATED Server nur 610MB mit DRCP benötigt werden. Durchaus ein Grund sich DRCP etwas genauer anzuschauen…
(weiterlesen…)

RRDTool für Oracle

Dienstag, 16. Dezember 2008

Kürzlich bin ich im Internet auf ein interessantes Tool namens RRDTool gestoßen. RRD steht für Round-Robin-Database, was sich ungefähr mit “Reihum Datenbank” übersetzen lässt. Kurz erklärt bedeutet dies, die Datenbank speichert eine gewisse Menge an Daten, und sobald die Menge erreicht ist, werden alte Werte gelöscht bzw. überschrieben. Ein solches Vorgehen eignet sich natürlich besonders bei zeitabhängigen Daten, z.B. wenn Informationen immer nur für einen Monat in die Vergangenheit zur Verfügung stehen sollen.

Exakt hierfür wurde RRDTool auch entwickelt, nämlich zur Protokollierung von Netzwerktraffic, Routeraktivitäten und ähnlichem. Mittlerweile verwenden aber z.B. auch Wetterdienste das Tool zur Speicherung und Darstellung von Temperaturkurven. Eine lange Liste mit verschiedenen Auswertungsmöglichkeiten, die gleichzeitig auch die Mächtigkeit des recht schlanken Tools zeigt finden Sie hier.

Natürlich lies sich auch in meinem Umfeld schnell eine praktische Anwendungsmöglichkeit für das RRDTool finden…

(weiterlesen…)

Multiple Clientumgebung für Admins

Freitag, 18. Juli 2008

Mit dem Update des Oracle Clients auf 11g (Danke IT!) kam vielleicht für manche – wie für mich auch – die erschreckende Meldung beim Aufruf von SQL*Plus: ERROR: ORA-03134: Verbindungen mit dieser Server-Version werden nicht mehr unterstützt. Was? Wie soll ich denn nun auf die ganzen restlichen 8.1.7er Datenbanken kommen?

Ein genereller Rollback des Clients auf 10g ist leider nicht so einfach möglich, immerhin sind die PC’s standardisiert und 11g ist als Clientplattform beschlossen… Politik. Also müssen sich die Entwickler für den Support selbst helfen. Abhilfe schafft der Oracle Instant Client in der Version 10.2.0.4.0 inkl. SQL*Plus Paket.

(weiterlesen…)

Pathfinding in PL/SQL

Dienstag, 15. Juli 2008

Schon vor längerer Zeit gab es im Datenbank Forum von Tutorials.de eine Diskussion zu rekursivem SQL. Genauer ging es darum, wie Social Network Seiten wie Xing oder StudiVZ die Bekanntschaftsgraphen “Wer kennt wen über wen?” abzubilden. Eins meiner Postings ist dabei sicher ein bisschen über das Ziel hinaus geschossen, aber der entstandene Algorithmus ist es allemal wert hier abzulegen.

Rein aus Interesse habe ich mich mal an den wohl bekanntesten Pathfinding Algorithmus (A*) gemacht und in PL/SQL umgesetzt. Als Grundlage dient mir ein Koordinatensystem mit fixen Orten, dargestellt durch folgende Tabelle und INSERTS. (weiterlesen…)

Gewusst wie – Analytische Funktionen!

Freitag, 27. Juni 2008

Heute morgen war ich mal wieder im Datenbankforum bei Tutorials.de unterwegs und bin (seit langem) wieder auf eine spannende und berechtigte Frage zu SQL gestoßen. Folgendes Problem liegt vor:

SELECT * FROM PRODUCTS;

PRODUKT      INHALT     LAENGE
------------ -------- --------
Produkt1     Kabel          10
Produkt1     Draht          11
Produkt1     Kabel          15
Produkt2     Draht          12
Produkt3     Kabel           8
Produkt3     Kabel           5
Produkt4     Kabel           3
Produkt5     Draht           1

Die Datensätze sollen nun nach Produkt und Inhalt gruppiert werden. Ermittelt werden soll neben der Gesamtlänge des Inhalts pro Produkt ( SUM( LAENGE ) .. GROUP BY PRODUKT, INHALT ) auch der prozentuale Anteil des Inhalts am Produkt. Im Falle vom Produkt1 hieße dies, 25m Kabel im Verhältnis zu 11m Draht. (weiterlesen…)