Archiv der Kategorie: Performance

Windows Large Pages

Vor einiger Zeit hatte ich hier über Linux HugePages geschrieben. Die sind ja mittlerweile kein Geheimtipp mehr, und ab Oracle 12.2 lässt sich mit dem DBCA sogar eine Datenbank bei einem RAM > 4GB nur noch mit HugePages anlegen (oder es erscheint die Fehlermeldung „[DBT-11211]“).

Etwas anders scheint es nach meinem Eindruck um die Windows Large Pages bestellt zu sein. Da Oracle jedoch ab 4 GB SGA empfiehlt, auch unter Windows die größeren Speicherseiten zu nutzen, möchte ich hier eine kurze Einführung dazu schreiben.

Weiterlesen

Lock-Diagnose im RAC

In meinem Artikel „Diagnose von Locks in Oracle-Datenbanken“ von 2009 hatte ich bereits auf das bei der Oracle-Software mitgelieferte Script „utllockt.sql“ hingewiesen. Dieses Script berücksichtigt jedoch nur Locks auf einer DB-Instanz. Im Cluster-Betrieb kann jedoch eine Verkettung von Locks über mehrere Instanzen hinweg entstehen.

In diesem, kurzen Beitrag möchte ich einen Weg vorstellen, die Funktionalität von „utllockt.sql“ mit reinem SQL und RAC-fähig zu bauen.

Locked?

Bild: Mike Gabelmann / flickr / CC-BY-NC-SA

Weiterlesen

Adaptiver Optimizer in Oracle 12.1 und 12.2

Diese Woche ist eine aktualisierte Version des Whitepapers „Optimizer with Oracle Database 12c“ bei Oracle erschienen. Aus diesem Anlass möchte ich kurz über die wichtigste – und zugleich problematischste – Neuerung im 12c-Optimizer schreiben: Die adaptiven Features.

Weiterlesen

Linux Huge Pages: Schnellstart

If you’re not using HugePages, you’re doing it wrong!  (Mark J. Bobak)

Sie haben eine SGA von mehreren GB Größe, dazu mehrere Hundert Sessions auf der Datenbank? Ihr DB-Server läuft unter Linux, aber ohne Einsatz von HugePages? Dann verschenken Sie RAM und CPU-Leistung, und zwar nicht zu knapp!

Über Linux HugePages wurde schon viel geschrieben (s. Literaturliste unten), jedoch hauptsächlich auf Englisch und meist sehr ausgedehnt. Dieser Artikel soll die wichtigsten Fakten und Maßnahmen in Kürze aufzeigen.

Szenario

Ein Praxisbeispiel vorweg: Eine Data Warehouse-DB mit 20 GB SGA und etwa 300 Sessions läuft auf einem Server mit 32 GB RAM. Gelegentlich gerät der Server unter höhere Last und fängt daraufhin an, massiv zu swappen; die Performance geht in die Knie. Was ist passiert?

Weiterlesen

SYSDATE in SQL und PL/SQL

Heute fühle ich mich genötigt, ein Thema anzusprechen, das zwar ein Grundlagenthema ist, das aber immer wieder gerne in Vergessenheit gerät. ;-)

Anlass ist ein Fund in einer Produktionsumgebung, in der eine Überlastung der CPU bei sehr hoher Anzahl an SQL-Ausführungen zu beobachten war. Die Umgebung basiert sehr stark auf PL/SQL, wobei häufig verwendete SQL-Abfragen gerne in einer Function gekapselt und dann aus SQL heraus aufgerufen werden. Weiterlesen

WITH-Clause Reloaded: Hierarchie und Rekursion

Vor ein paar Jahren hatte ich schon einmal über die „WITH-Klausel“ geschrieben, als sie noch ein relativ unbekanntes SQL-Feature war.

Mittlerweile hat sich auch die Oracle-Welt weiter gedreht, und es sind neue Möglichkeiten seit 11g hinzugekommen — z.T. Features, die mit dem ISO-Standard SQL1999 schon etwa 10 Jahre zuvor verabschiedet wurden.

Zeit also, sich einmal wieder mit der Syntax der WITH-Clause zu beschäftigen und sie mit Oracles bisherigen, proprietären Lösungen zu vergleichen!

Weiterlesen

Hyperthreading in HP-UX aktivieren

Jan Karremans aus den Niederlanden erwähnte kürzlich in seinem Blog-Artikel „Can you boost your Oracle database performance on HP-UX for free?“ ein Szenario, das auch mir schon untergekommen ist:

Wenn Hyperthreading in HP-UX (ia64) nicht aktiviert ist, zeigt sich das z.B. in „top“ daran, dass die Numerierung der CPUs nicht fortlaufend sondern unterbrochen ist.

Da Oracle vom Hyperthreading profitiert, ist es sinnvoll es anzuschalten. Dies geht durch den Kernel-Parameter lcpu_attr, der per Default auf 0 steht, aber dynamisch geändert werden kann. Dazu sollten die Datenbanken auf dem betroffenen Server zuvor heruntergefahren werden.

Weitere Details im Original-Artikel (Englisch)