IBM® Informix® 12.10

Prozedur ifx_grid_connect()

Die Prozedur ifx_grid_connect() öffnet eine Verbindung zum Raster. Über eine Prozedur ifx_grid_connect() können Sie Routinen und DDL-Befehle auf einem Quellenserver ausführen und die Routinen oder Befehle dann an die anderen Rasterserver weitergeben.

Syntax

Syntaxdiagramm lesenSyntaxdiagramm überspringen
>>-EXECUTE PROCEDURE--ifx_grid_connect--(--'--rastername--'----->

>--+-+--------------+-+-------------------+-+--)--;------------><
   | '-,--'--tag--'-' '-,--er-aktivierung-' |         
   '-,--'--tag--'--,--verzögerung-----------'         

Element Zweck Einschränkungen
rastername Name des Rasters. Dies muss der Name eines vorhandenen Rasters sein.
er-aktivierung Aktiviert bzw. inaktiviert die Erstellung eines Replikats und Replikatsets und startet die Replikation für alle Tabellen, die erstellt werden, während eine Verbindung zum Raster aktiv ist. Unterdrückt optional alle Fehler, die bei Ausführung der Prozedur auftreten können. Folgende Werte sind gültig:
  • 0 = Standard. Enterprise Replication ist inaktiviert.
  • 1 = Enterprise Replication ist aktiviert.
  • 2 = Enterprise Replication ist inaktiviert, Fehler werden unterdrückt.
  • 3 = Enterprise Replication ist aktiviert, Fehler werden unterdrückt.
verzögerung Führt DDL-Anweisungen auf dem lokalen Server aus, verzögert jedoch die Weitergabe der Anweisungen an andere Server im Raster. Aktiviert optional die Erstellung eines Replikats und Replikatsets und startet die Replikation. Folgende Werte sind gültig:
  • 4 = Verzögert die Weitergabe von DDL-Anweisungen.
  • 5 = Verzögert die Weitergabe von DDL-Anweisungen und aktiviert Enterprise Replication.
tag Eine Zeichenfolge zur Angabe von Rasteroperationen. Muss in Rastersitzungen mit ausstehenden verzögerten DDL-Anweisungen eindeutig sein.

Verwendung

Starten Sie mit der Prozedur ifx_grid_connect() eine Rasterverbindung. Alle DDL-SQL-Anweisungen und Routinen, die Sie in der Rasterverbindung ausführen, werden an alle Server im Raster weitergegeben. Schließen Sie die Rasterverbindung und inaktivieren Sie die Rasterweitergabe mit der Prozedur ifx_grid_disconnect(). Weisen die Datenbanken auf Ihren Replikationsservern verschiedene Schemata oder Daten auf, führt eine über ein Raster ausgeführte DDL-Anweisung auf den einzelnen Servern möglicherweise zu unterschiedlichen Ergebnissen. Bei lokaler Ausführung einer Anweisung werden in einem Replikationssystem die Ergebnisse auf die anderen Replikationsserver repliziert. Eine über ein Raster ausgeführte Anweisung wird auf jedem Server gleichzeitig ausgeführt.

Sie müssen diese Routine als berechtigter Benutzer auf einem berechtigten Server ausführen, wie im Befehl cdr enable grid angegeben.

Sie müssen eine Verbindung zu einer Datenbank herstellen, bevor Sie die Prozedur ifx_grid_connect() ausführen. Wenn Sie beabsichtigen, eine Datenbank zu erstellen, können Sie eine Verbindung zur Datenbank sysmaster herstellen.

Wenn Sie Enterprise Replication beim Erstellen einer Tabelle über ein Raster aktivieren, wird ein Replikat erstellt, das die neu erstellte Tabelle mit allen Servern im Raster als Teilnehmer enthält. Das Replikat gehört zu einem Replikatset, das den gleichen Namen wie das Raster hat. Wenn Sie eine replizierte Tabelle über das Raster erstellen, werden die ERKEY-Spiegelspalten automatisch hinzugefügt.

Wenn Sie die Prozedur ifx_grid_connect() automatisch als Teil der Prozedur sysdbopen() ausführen, setzen Sie das Argument er-aktivierung auf 2 oder 3, um Fehler zu unterdrücken, die den Zugriff der Sitzung auf die Datenbank verhindern können.

Sie können die Weitergabe von DDL-Anweisungen an andere Server im Raster durch das Festlegen des Arguments verzögerung verzögern. Die DDL-Anweisungen werden für Weitergabe in eine Warteschlange gestellt, jedoch erst an andere Rasterserver gesendet, wenn Sie die Funktion ifx_grid_release() ausführen. Sie können verzögerte DDL-Anweisungen durch die Ausführung der Funktion ifx_grid_remove() entfernen. Sie müssen das Argument tag zusammen mit dem Argument defer verwenden. Das Argument tag gibt die Rastersitzung an, in der die Anweisungen verzögert wurden. Verwenden Sie dasselbe Argument tag in der Funktion ifx_grid_release() oder ifx_grid_remove().

Sie können die folgenden Aktionen nicht im Kontext einer Rasterverbindung ausführen: :
  • Weitergeben von DML-Anweisungen über ein Raster.
  • Erstellen oder Ändern einer Tabelle mit einer TimeSeries-Spalte.
  • Replizieren eines Datenbankobjekts, das auf einem Server im Raster vorhanden ist.
  • Verwenden der Syntax @servername, während eine Verbindung zum Raster besteht..
  • Löschen einer replizierten Spalte über ein Raster. Zum Löschen einer replizierten Spalte müssen Sie manuell ein Remastering für das Replikat ausführen und die Spalte anschließend löschen.
  • Umbenennen einer replizierten Datenbank. Sie müssen die Datenbank auf allen teilnehmenden Servern manuell umbenennen.

Beispiel 1: Erstellen einer Tabelle

Im folgenden Beispiel wird eine Rasterverbindung geöffnet, die die Weitergabe nur von DDL-Anweisungen aktiviert, auf allen Servern im Raster wird eine Tabelle erstellt und anschließend wird die Rasterverbindung geschlossen:

database sales;

EXECUTE PROCEDURE ifx_grid_connect('grid1');

CREATE TABLE special_offers(	  
    offer_description varchar(255),
    offer_startdate	date,
    offer_enddate	date,
    offer_rules		lvarchar);

EXECUTE PROCEDURE ifx_grid_disconnect();

In diesem Beispiel werden die Daten in der Tabelle special_offers nicht repliziert.

Beispiel 2: Erstellen einer replizierten Tabelle

Im folgenden Beispiel wird eine Rasterverbindung geöffnet, die die Weitergabe von DDL-Anweisungen und Datenreplikation aktiviert, auf allen Servern im Raster wird eine Tabelle erstellt und anschließend wird die Rasterverbindung geschlossen:

database sales;

EXECUTE PROCEDURE ifx_grid_connect('grid1', 1);

CREATE TABLE special_offers(
offer_description varchar(255),
    offer_startdate	date,
    offer_enddate	date,
    offer_rules		lvarchar)
    WITH CRCOLS;

EXECUTE PROCEDURE ifx_grid_disconnect();

Ein Replikat für die Tabelle special_offers wird mit Zeitmarkenkonfliktlösung erstellt und die Replikation von Daten in der Tabelle wird gestartet.

Beispiel 3: Ändern einer replizierten Tabelle zum Hinzufügen einer Spalte

Das folgende Beispiel fügt der Tabelle special_offers eine Spalte hinzu und führt auf allen Teilnehmern, die zum Raster gehören, ein für das Replikat aus:

database sales;

EXECUTE PROCEDURE ifx_grid_connect('grid1', 1);

ALTER TABLE special_offers ADD (
	  offer_exceptions	varchar(255));

EXECUTE PROCEDURE ifx_grid_disconnect();

Beispiel 4: Ändern einer replizierten Tabelle zum Hinzufügen einer nicht replizierten Spalte

Das folgende Beispiel fügt der Tabelle special_offers eine Spalte mit nicht replizierten Daten hinzu:

database sales;

EXECUTE PROCEDURE ifx_grid_connect('grid1', 0);

ALTER TABLE special_offers ADD (
	  local_promotions 	varchar(255));

EXECUTE PROCEDURE ifx_grid_disconnect();

Die Spalte local_promotions wird der Tabelle special_offers auf allen Rasterservern hinzugefügt, die Daten in der Spalte local_promotions werden jedoch nicht repliziert.

Beispiel 5: Verzögern der Weitergabe einer DDL-Anweisung

Im folgenden Beispiel wird die Weitergabe der Änderungsoperation für grid1 verzögert:

database sales;

EXECUTE PROCEDURE ifx_grid_connect('grid1','tag1',4);

ALTER TABLE special_offers ADD (
	  local_restrictions	 varchar(255));

Die Spalte local_restrictions wird der Tabelle special_offers nur auf dem lokalen Server hinzugefügt. Die Änderungsoperation wird für die Weitergabe an die anderen Rasterserver in eine Warteschlange gestellt.


Feedback | Beispielaustausch | Fehlerbehebung

Die PDF-Datei finden Sie unter Publications for the IBM Informix 12.10 family of products.
Releaseinformationen, Dokumentationshinweise und/oder Systeminformationen finden Sie auf der Seite Releaseinformationen.
Zeitmarke Freigabedatum: März 2013