Replicat-Transaktionen optimieren

Replicat verwendet reguläres SQL, so dass seine Performance von der Performance der Zieldatenbank und dem angewendeten SQL-Typ abhängt (einfügt, aktualisiert oder löscht). Sie können jedoch bestimmte Schritte unternehmen, um die Replicat-Effizienz zu maximieren.

Koordinationsperformance für Barrierentransaktionen optimieren

In einer koordinierten Replicat-Konfiguration verursachen Sperrtransaktionen wie Aktualisierungen des Primärschlüssels eine erhöhte Anzahl von Commits in der Datenbank, und sie unterbrechen die Vorteile des Features GROUPTRANSOPS von Replicat. Wenn in der Gesamt-Workload des koordinierten Replicats eine hohe Anzahl von Sperrtransaktionen vorhanden ist, kann die Verwendung einer hohen Anzahl von Threads die Replicat-Performance tatsächlich beeinträchtigen.

Um eine hohe Performance zu erhalten, wenn eine große Anzahl von Barrieretransaktionen erwartet wird, können Sie Folgendes tun:

Vollständige Table Scans ohne Schlüssel verhindern

Wenn eine Zieltabelle keinen Primärschlüssel, keinen eindeutigen Schlüssel oder einen eindeutigen Index enthält, verwendet Replicat alle Spalten, um die WHERE-Klausel zu erstellen. Dies ist im Wesentlichen ein Full Table Scan.

Um die Zeilenauswahl effizienter zu gestalten, verwenden Sie eine KEYCOLS-Klausel in den Anweisungen TABLE und MAP, um eine oder mehrere Spalten als eindeutig zu identifizieren. Replicat verwendet die angegebenen Spalten als Schlüssel. Das folgende Beispiel zeigt eine KEYCOLS-Klausel in einer TABLE-Anweisung:

TABLE hr.emp, KEYCOLS (FIRST_NAME, LAST_NAME, DOB, ID_NO);

Verwendungsrichtlinien und Syntax finden Sie in den Parametern TABLE und MAP in der Referenz zu Parametern und Funktionen für Oracle GoldenGate.

Große Transaktionen aufteilen

Wenn die Zieldatenbank große Transaktionen aus der Quelldatenbank nicht verarbeiten kann, können Sie sie mit dem Replicat-Parameter MAXTRANSOPS in eine Reihe kleinerer Transaktionen aufteilen. Weitere Informationen finden Sie in der Referenz zu Parametern und Funktionen für Oracle GoldenGate.

Hinweis: MAXTRANSOPS ist für ein integriertes Replicat in einem Oracle AI Database-System nicht gültig.

Offene Cursor anpassen

Der Replicat-Prozess verwaltet Cursor für gecachte SQL-Anweisungen und für SQLEXEC-Vorgänge. Ohne genügend Cursor muss Replicat mehr Aussagen altern. Standardmäßig verwaltet Replicat so viele Cursor, wie der Parameter MAXSQLSTATEMENTS zulässt. Möglicherweise muss der Wert dieses Parameters erhöht werden. In diesem Fall müssen Sie möglicherweise auch die maximale Anzahl offener Cursor anpassen, die von der Datenbank zugelassen werden. Weitere Informationen finden Sie in der Referenz zu Parametern und Funktionen für Oracle GoldenGate.

Verbesserung der Aktualisierungsgeschwindigkeit

Übermäßige Blockfragmentierung führt dazu, dass Replicat SQL-Anweisungen langsamer als normal anwendet. Reorganisieren Sie stark fragmentierte Tabellen, und stoppen und starten Sie Replicat, um die neue Objekt-ID zu registrieren.

Replicat-Transaktionstimeout festlegen

Verwenden Sie den Parameter TRANSACTIONTIMEOUT, um zu verhindern, dass eine nicht festgeschriebene Replicat-Zieltransaktion Sperren in der Zieldatenbank aufhält und deren Ressourcen unnötig belegt. Sie können den Wert dieses Parameters ändern, sodass Replicat innerhalb vorhandener Anwendungstimeouts und anderer Datenbankanforderungen am Ziel arbeiten kann.

TRANSACTIONTIMEOUT begrenzt die Zeit, die Replicat eine Zieltransaktion offen halten kann, wenn sie den Datensatz für das Transaktionsende für die letzte Quelltransaktion in dieser Transaktion nicht erhalten hat. Standardmäßig gruppiert Replicat mehrere Quelltransaktionen in einer Zieltransaktion, um die Performance zu verbessern. Es wird jedoch keine teilweise Quelltransaktion festgeschrieben und auf diesen letzten Datensatz unbegrenzt gewartet. Der Replicat-Parameter GROUPTRANSOPS steuert die Mindestgröße einer gruppierten Zieltransaktion.

Die folgenden Ereignisse können lange genug dauern, um TRANSACTIONTIMEOUT auszulösen:

Weitere Informationen finden Sie unter TRANSACTIONTIMEOUT in der Referenz zu Parametern und Funktionen für Oracle GoldenGate.