oracle

Memoptimized Rowstore – Schneller Oracle Datenzugriff

23 Feb 2021

Unsere Oracle Tools unterstützt den mit Oracle 18c eingeführten Memoptimized Rowstore. Der Memoptimized Rowstore ermöglicht ein schnelles Abfragen von Daten aus Tabellen, auf die hauptsächlich per Primärschlüssel zugegriffen wird. Die Option sorgt für einen sehr schnellen und latenzarmen Zugriff bei hohen Abfrageleistungen, wie sie beispielsweise bei Internet of Things (IoT) Workloads vorkommen. Key-Value-Lookups auf Basis von Primärschlüsselwerten (mit Abfragefilter „Spalte = Wert“) nutzen direkt einen Memory Hash-Index bei der Ausführung

Das Feature Memoptimized Rowstore ist im Moment auf Exadata und dem Oracle Database Cloud Service „Enterprise Edition Extreme Performance“ verfügbar. Genaueres kann man im Handbuch Licensing Information User Manual nachlesen.

Um dieses Feature nutzen zu können, muss der Memoptimized Rowstore zunächst durch Setzen eines Datenbankparameters aktiviert werden. Bevor Sie Änderungen an den Parametern vornehmen, empfehlen wir, zunächst die aktuelle Konfiguration der als binäres SPFile gespeicherten Parameter als Kopie in einem editierbarem PFile zu sichern. Wir werden später zeigen, wie schnell Sie in so eine Situation kommen können.

Um das Backup mit Hora zu erzeugen, melden Sie sich als SYS an der ROOT-Datenbank an und öffnen Sie die SGA-Seite. Die Tabellendarstellung im unteren Bereich des Dialogs zeigt eine Auswahl von Datenbankparametern, die für die Konfiguration von Speicheroptionen relevant sind. Die vollständige Liste aller Datenbankparameter sehen Sie in Hora auf der Database-Seite.

Zum Sichern der Parameter klicken Sie mit der rechten Maustaste in die Parameterliste und wählen Sie den Menüpunkt ‚Backup SPFile to PFile‘. Der Menüpunkt öffnet den folgenden Dialog:

Der Name des SPFiles ist schreibgeschützt. Passen Sie den Namen des zu erzeugenden PFiles an und bestätigen Sie dann mit OK. Falls Sie die SQL-Preview-Option in Hora aktiviert haben, können Sie den im Hintergrund ausgeführten Befehl sehen:

CREATE PFILE=’/u01/oracle/dbs/test_init.ora‘ FROM SPFILE=’/u01/oracle/dbs/test_spfile.ora‘;

Jetzt besitzen Sie eine editierbare Sicherungskopie der Datenbankparameter, die ggf. später für ein Wiederherstellen der Datenbank genutzt werden kann.

Nun sind alle Vorbereitungen getroffen, um den entsprechenden Parameter zu setzen, der den Memoptimized Rowstore aktiviert. Suchen Sie den Parameter „memoptimize_pool_size“ und aktivieren Sie per rechter Maustaste das Kontextmenü „Alter system parameter“. Das öffnet den folgenden Dialog:

Geben Sie eine Größe von mindestens „100M“  an und beschränken Sie den Scope auf „spfile“. Wir empfehlen, für die Änderung des Parameters auch einen Kommentar anzugeben.
Nach Bestätigung der Änderung ist es erforderlich, die Datenbank neu zu starten, um den Memoptimized Rowstore nutzen zu können.

Falls Ihre Datenbank nicht die Anforderungen des Licensing Information User Manual erfüllt, kann es dazu kommen, dass die Datenbank nach Neustart des Dienstes nicht wieder richtig hochfährt. Starten Sie SQL-Plus und versuchen Sie, die Datenbank manuell hochzufahren:

SQL> connect SYS as sysdba 
SQL> startup
ORA-12754: Feature 'Memoptimized Rowstore' is disabled due to missing capability 'Runtime Environment'.

In dieser Situation ist es hilfreich, eine Sicherheitskopie der Parameterkonfiguration zu haben. Öffnen Sie das PFile auf dem Server in einem Texteditor, entfernen Sie die Zeile mit dem Parameter ‚memoptimized_pool_size‘ und speichern Sie.
Mit Hilfe des folgenden SQL-Plus-Befehls können Sie die Datenbank mit dem PFile starten:

SQL> connect SYS as sysdba
SQL> startup pfile=C:\Oracle\ora19c3\database\PFILEORA19C3.ORA
ORACLE instance started.

Falls Ihre Datenbank die oben erwähnten Voraussetzungen erfüllt, ist der Memoptimied Rowstore jetzt aktiviert. Melden Sie sich in Hora nun als Schema-Eigentümer an und öffnen Sie die Tables-Seite. In der Übersicht der Tabellen gibt es jetzt zwei neue Spalten „Memoptimize Read“ und „Memoptimize Write“, die den Status des memoptimized rowstore für jede Tabelle anzeigen.

 


Sie können die beiden Eigenschaften per rechts-Klick auf eine Tabelle ändern, indem Sie die Option „Mem Optimize …“ auswählen. In dem Dialog können die beiden Flags nun unabhängig voneinander geändert werden.

Nachdem für die Tabelle die Nutzung des memoptimized rowstore aktiviert wurde, kann der rowstore per

DBMS_MEMOPTIMIZE.POPULATE()

gefüllt werden.

Übrigens, KeepTool Reverse DB fügt die entsprechende ALTER TABLE – Anweisung erst weiter unten im Skript ein. Dadurch wird sichergestellt, dass der Primärschlüssel der Tabelle bereits erzeugt worden ist. Dieser wird von der Option Memoptimized Rowstore benötigt.