Unterschiedliche SQL-Befehle in der Replikationsumgebung
- Sie müssen die SQL-Befehle auf dem primären Rechner ausführen.
- Auf einem Replikat führen Änderungen an replizierten Objekten (DDL, DML, Datenbanktabellen und Sequenzen) zum Abbruch der Transaktion. Temporäre Tabellen werden nicht als replizierte Objekte betrachtet und können daher geändert werden.
- Alle Datenverweise, auch auf Daten in einer nicht replizierten oder Systemdatenbank, werden unterstützt. Verweise auf nicht replizierte Daten lösen eine By-Value-Replikation aus.
Darüber hinaus werden nicht-deterministische Anweisungen mit Hilfe der By-Value-Replikation (Replikation von Änderungswerten) behandelt.
- Repliziert: Der Befehl wird auf dem Primärsystem ausgeführt und auf dem Replikat wiedergegeben
- Nicht repliziert: Der Befehl wird auf dem primären oder replizierten Knoten ausgeführt, aber nicht auf einem anderen Knoten wiedergegeben
- Nicht unterstützt: der Befehl ist für die Ausführung gesperrt
Befehl | Hinweise | Siehe auch |
---|---|---|
ALTER DATABASE | Sie können diesen Befehl nur über eine Sitzungsverbindung zu einer replizierten Datenbank oder zur SYSTEM-Datenbank ausführen. Bei einer replizierten Datenbank auf einer Primärdatenbank wird der Befehl ALTER DATABASE auf das Replikat repliziert. Auf einem Replikat ist der Befehl ALTER DATABASE nur für eine nicht replizierte Datenbank zulässig. | Befehl CREATE DATABASE |
BEGIN undCOMMIT | Transaktionen mit Aktualisierungsabfragen (mit den entsprechenden Befehlen BEGIN und COMMIT ), die globale oder replizierte Objekte betreffen, werden repliziert. Transaktionen ohne Aktualisierungsabfragen (nur lesend, d.h. es werden keine Änderungen an der Datenbank vorgenommen) sind es nicht. | Befehl ROLLBACK |
CALL, EXEC, EXECUTE, und SELECT gespeicherte Prozedur | Die By-SQL- oder By-Value-Replikation wird danach ausgewählt, ob alle Objekte, auf die von einer gespeicherten Prozedur verwiesen wird, Mitglieder des Replikationssatzes sind. | Replikation von gespeicherten Prozeduren |
COPY FROM | Dieser Befehl wird nicht unterstützt. | |
CREATE AGGREGATE, CREATE [OR REPLACE] AGGREGATE, DROP AGGREGATE | Alle benutzerdefinierten Aggregate (und systemgefensterte Aggregatfunktionen, die nicht geändert werden können) verwenden die Replikation nach Werten. | |
CREATE CATEGORY, ALTER CATEGORY und DROP CATEGORY | Es gibt globale Objekte, die sich auf die mehrstufige Sicherheit beziehen. | Globale Objekte |
CREATE COHORT, ALTER COHORT, und DROP COHORT | Es gibt globale Objekte, die sich auf die mehrstufige Sicherheit beziehen. | Globale Objekte |
CREATE DATABASE REPLICATION SET | Ein Unterbefehl des Befehls CREATE DATABASE, der eine neue replizierte Datenbank erstellt, wenn er auf dem primären Rechner ausgeführt wird. | Erstellen neuer replizierter Datenbanken |
CREATE EXTERNAL TABLE | Bei der Ausführung des Befehls auf dem Replikat wird eine externe Datei erstellt, die nicht genau die Datei ist, die auf dem Primärsystem vorhanden war. Der Verzeichnispfad muss auf dem Replikat vorhanden sein, andernfalls wird die Replikation ausgesetzt. | Erstellung externer Tabellen |
CREATE [OR REPLACE] FUNCTION, ALTER FUNCTION und DROP FUNCTION | Sie können die Option DETERMINISTIC oder NOT DETERMINISTIC angeben. Wenn Sie die Option NOT DETERMINISTIC angeben, wird beim Aufruf der Funktion die Replikation nach Wert ausgewählt. | Synchronisation |
CREATE GROUP, ALTER GROUP und DROP GROUP | Globales Objekt. | Globale Objekte |
CREATE HISTORY CONFIGURATION, ALTER HISTORY CONFIGURATION, DROP HISTORY CONFIGURATION, und SET HISTORY CONFIGURATION | Befehle zur Konfiguration der Historie werden nicht repliziert. Knoten in einem Replikationsset können unterschiedliche oder nicht aktivierte Verlaufskonfigurationen haben. | |
CREATE [OR REPLACE] LIBRARY, ALTER LIBRARY und DROP LIBRARY | Benutzerdefinierte Bibliotheken sind Objekte in einer Datenbank. Die Befehle enthalten zwei Klauseln, EXTERNAL HOST OBJECT und EXTERNAL SPU OBJECT, die kompilierte Objekte im Dateisystem identifizieren, das für die Ausführung des Bibliothekscodes auf dem Host und der SPU verwendet wird. Sie müssen jede Bibliothek (einschließlich optionaler abhängiger Bibliotheken) und jedes kompilierte Objekt in einer replizierten Datenbank definieren; andernfalls schlägt der Befehl fehl. | |
CREATE MATERIALIZED VIEW | Siehe CREATE VIEW. | |
CREATE PROCEDURE, ALTER PROCEDURE und DROP PROCEDURE | Replikation von gespeicherten Prozeduren | |
CREATE SECURITY LEVEL, ALTER SECURITY LEVEL und DROP SECURITY LEVEL | Globale Objekte, die sich auf die mehrstufige Sicherheit beziehen. | Globale Objekte |
CREATE SEQUENCE, ALTER SEQUENCE und DROP SEQUENCE | Es wird eine By-Value-Replikation verwendet. | Konsistenz der Abfolge |
CREATE SYNONYM, ALTER SYNONYM und DROP SYNONYM | Sie können datenbankübergreifende Synonyme erstellen. Die By-value-Replikation wird für Verweise auf eine nicht replizierte Tabelle verwendet. | |
CREATE TABLE, ALTER TABLE und DROP TABLE | Die Befehle werden nur für nicht temporäre Tabellen in einer replizierten Datenbank repliziert. | |
CREATE TABLE AS SELECT | Die Replikation erfolgt nach SQL oder nach Wert, je nachdem, ob alle referenzierten Objekte Mitglieder der Replikationsgruppe sind. | |
CREATE TEMPORARY TABLE | Temporäre Tabellen verhalten sich in replizierten und nicht replizierten Datenbanken auf der Primärdatenbank identisch. Temporäre Tabellen sind keine Mitgliedsobjekte der Replikationsgruppe, und Verweise auf temporäre Tabellen führen zu einer By-Value-Replikation. | Regeln für die Implementierung der SQL-Replikation |
CREATE USER, ALTER USER und DROP USER | Die Ausführung des Befehls ALTER USER admin ist ein lokaler Vorgang. Sie können den Befehl auf jedem beliebigen Knoten ausführen, und er wird nicht repliziert. Alle anderen Benutzeroperationen müssen Sie auf dem primären Objekt durchführen, und sie werden mit anderen globalen Objekten repliziert. | |
CREATE VIEWundCREATE [OR REPLACE] VIEW | Der Befehl kann auf Objekte in einer replizierten Datenbank oder auf Systemobjekte verweisen. Der Befehl schlägt fehl, wenn er auf ein Objekt in einer nicht replizierten Datenbank verweist. | Ansichten beim Initialisieren einer Replik |
DROP DATABASE | Wenn Sie den Befehl für eine replizierte Datenbank auf dem primären Rechner ausführen, wird die Datenbank auf allen Replikationsknoten im Satz gelöscht. Das Fallenlassen einer Datenbank während der Ausführung gleichzeitiger replizierter Transaktionen kann zu einem Deadlock führen. Wird eine Datenbank gelöscht, während noch Sitzungen mit ihr verbunden sind, schlägt der Befehl fehl. | |
EXECUTE ASundREVERT | Die Befehle müssen repliziert werden, wenn sie sich in einer Multistatement-Aktualisierungstransaktion für replizierte oder globale Daten befinden. Keine Auswirkung, wenn es sich um eine implizite Transaktion handelt. | |
GRANTundREVOKE | Erteilung und Entzug von Privilegien | |
GENERATE STATISTICS | Der Befehl ändert keine Daten, wirkt sich aber auf die Abfrageleistung aus. In NPS®-Versionen vor 7.2.0.4 wird der Befehl immer repliziert, wenn Sie ihn auf der Primärseite eingeben. In NPS 7.2.0.4 oder höher wird der Befehl repliziert, wenn Sie ihn auf dem primären Rechner ausführen und der Parameter replReplayMaintenance in der Datei replrqm.cfg auf true gesetzt ist. Der Standardwert des Parameters ist true ; ändern Sie ihn nur nach Rücksprache mit dem Kundensupport. Sie können den Befehl gegen eine replizierte Datenbank auf dem Replikat ausführen, aber der Befehl wird nicht repliziert. |
|
GROOM TABLE | Der Befehl ändert keine Daten, wirkt sich aber auf die Abfrageleistung aus. In NPS-Versionen vor 7.1.0.4-P2 und 7.2.0.3-P2 führt ein replizierter GROOM TABLE -Befehl mit der Option RECLAIM BACKUPSET <backupsetid> dazu, dass das Replikat ausgesetzt wird. In NPS 7.1.0.4-P2 und 7.2.0.3-P2 oder höher behandelt das Replikat einen replizierten GROOM TABLE -Befehl mit der Option RECLAIM BACKUPSET <backupsetid> wie einen GROOM TABLE -Befehl ohne die Option RECLAIM BACKUPSET <backupsetid>. In NPS 7.2.0.4 oder höher wird der Befehl GROOM TABLE repliziert, wenn Sie ihn auf dem primären Rechner ausführen und der Parameter replReplayMaintenance in der Datei replrqm.cfg auf true gesetzt ist. Der Standardwert des Parameters ist true ; ändern Sie ihn nur nach Rücksprache mit dem Kundensupport. Sie können den Befehl GROOM TABLE für eine replizierte Datenbank auf dem Replikat ausführen, aber der Befehl wird nicht repliziert. Das Ausführen des Befehls für eine replizierte Tabelle auf einem Replikat bereinigt keine gelöschten Datensätze, die für nachfolgende replizierte Transaktionen auf dem Primärsystem oder für aktuelle Transaktionen auf dem Replikat sichtbar sein müssen. |
|
INSERT, UPDATE und DELETE | Die Befehle werden repliziert, wenn sie auf eine replizierte Datenbank angewendet werden, es sei denn, sie zielen auf eine temporäre oder externe Tabelle (unload). Die Befehle sind auf einem Replikat nur auf einer nicht replizierten Datenbank oder einer temporären Tabelle in einer replizierten Datenbank zulässig. Entladungen werden weder auf dem primären noch auf dem Replikat protokolliert und sind daher auch auf einem Replikat zulässig. | |
LOCK DATABASE Anweisung | Die Anweisung LOCK DATABASE wird nicht repliziert, ist aber auf der Primärseite erlaubt, um Transaktionssperren und -abbrüche zu verhindern. | |
LOCK TABLE Anweisung | Nicht repliziert, auch nicht für Tabellen in einer replizierten Datenbank. | LOCK TABLE-Anweisungen und das IBM Netezza Database User's Guide. |
ROLLBACK | Wird nicht repliziert. | BEGINundCOMMIT |
SELECT Abfragen | Implizite Transaktionen mit SELECTs, Nur-Lese-Transaktionen und SELECT-Anweisungen, die Teil einer Lese-/Schreib-Transaktion sind, werden nicht repliziert. | |
SET und RESET Aussagen | Bis auf wenige Ausnahmen nicht repliziert, da der Sitzungsstatus zwischen Primär- und Replikat nicht erhalten bleibt. | NPS-Sitzungsvariablen |
SHOW Anweisung | Nicht repliziert. | |
TRUNCATE TABLE | Der Befehl kann nicht Teil einer expliziten Transaktion sein. Wird der Befehl auf dem Primärserver ausgeführt, wird er repliziert, wenn die Datenbank repliziert ist. |