
|
Blobspace Datenbankbereich für Binary Large Objects (Videos, Bilder, Musik ...). |
|
ER Enterprise Replication, logische Replikation auf Tabellenebene. |
|
ESQL Balloning Embedded SQL, Spracherweiterung von SQL, um SQL-Anweisungen innerhalb anderer Programmiersprachen auszuführen. |
|
HDR High Availability Data Replication, 1:1 Primary/Secondary-Replikation mit automatisiertem Failover und Lesezugriff auf den Secondary). |
|
IDS Informix Dynamic Server. |
|
SDS Shared Disk Secondary, 1:n Primary/Secondary-Konfiguration mit Zugriff auf gemeinsame Plattenbereiche, Failover- und Lesezugriff auf die Secondaries. |
|
Semaphoren (Unix) Datenstruktur zur Prozesssynchronisation parallel ausgeführter Prozesse oder Threads. |
|
SPL Stored Procedure Language, SQL-Erweiterung zum Schreiben benutzerdefinierter Routinen. |
|
RSS Remote Standalone Secondary, 1:n Primary/Secondary-Replikation mit Lesezugriff auf die Secondaries. |
|
|||||||||||||||||||||||||||||||||
In Oracle schon lange vorhanden, beinhaltet die IDS Version 11.50.xC3 nun auch die Funktionalität der Savepoints. Savepoints ermöglichen es, innerhalb einer Transaktion Zustände zu markieren, auf die im Verlauf der Verarbeitung ggf. wieder aufgesetzt werden soll. Das ist somit quasi eine „kleine Transaktion“ innerhalb einer Transaktion.
Einem Savepoint wird ein Identifier zugeordnet. Wird ein weiterer Savepoint mit demselben Namen gesetzt, so geht der vorherige Savepoint mit diesem Namen „verloren“. Um unbeabsichtigtes Überschreiben eines Savepoints zu verhindern, kann ein Savepoint mit dem Zusatz „UNIQUE“ geschützt werden. Eine neue Vergabe desselben Namens führt in diesem Fall zu einem Fehler.
Mit dem Kommando ROLLBACK TO SAVEPOINT kann auf den Zustand des letzten Savepoints zurückgesetzt werden. Wird beim Kommando ROLLBACK TO SAVEPOINT der Name des Savepoints angegeben, wird die Transaktion bis zu diesem Savepoint zurückgerollt.
Das Kommando RELEASE SAVEPOINT
Ein Beispiel für Savepoints finden Sie in Abbildung 1.
Durch das Release des Savepoints sav2 wurde dieser und alle folgenden Savepoints (hier sav3) aufgehoben. Damit ist beim ROLLBACK TO SAVEPOINT der letzte gesetzte Savepoint sav1. Alle Statements vor sav1 bleiben durch den COMMIT erhalten. Die Statements nach dem Savepoint sav1 werden durch den ROLLBACK TO SAVEPOINT zurückgerollt.
Es besteht zudem die Möglichkeit, auf einen bestimmten Savepoint zurückzugehen. Hierzu muss beim ROLLBACK der Name des Savepoints mit angegeben werden (Abbildung 2). Im Beispiel der Abbildung 1 hätte also ein ROLLBACK TO SAVEPOINT sav1 das gleiche erreicht wie die Befehle RELEASE und ROLLBACK.
Die Funktionalität der Savepoints ist sehr nützlich für eine bessere Granularität innerhalb großer Transaktionen. Besonders in Java, SPL-Prozeduren oder ESQL wird die Fehlerbehandlung durch Savepoints sinnvoll erweitert. Vorsichtig ist dort aber mit geöffneten Cursorn zu agieren, die zwischen Savepionts eröffnet werden.
Wichtig ist auch das richtige Handling von temporären Tabellen. Hier muss genau unterschieden werden, ob diese mit oder ohne Logging verwendet werden.
Die meisten Informix-Administratoren beherrschen die vielen, nützlichen Kommandos mit ihren Optionen (onstat, onmode, ...). Administratoren, die beispielsweise vom Datenbanksystem Oracle kommen, sind es aber gewohnt ihr Datenbanksystem mittels SQL-Kommandos zu administrieren.
Für die Freunde der Administration via SQL bietet Informix nun das SQL Adminstration API. Es dient dazu, IDS per SQL-Statements zu administrieren.
Das API besteht aus den beiden „User Defined Routines“ (UDRs) admin() und task(). Diese Funktionen erledigen im Wesentlichen die gleiche Aufgabe und unterscheiden sich nur im Format des Rückgabewertes.
Die Funktion admin() liefert als Rückgabewert immer Integer-Werte, die Funktion task() immer einen String. Beim erfolgreichen Erledigen einer Aufgabe (Task) liefert admin() die "cmd_number" aus der Tabelle "command_history" zurück, die Funktion task() die "cmd_ret_msg" (siehe Abbildungen 3 - 5).
Den Funktionen task und admin werden ein oder mehrere Argumente übergeben, um die „Aufgabe zu definieren“. Es können maximal 28 Argumente übergeben werden.
Bietet die SQL-Administration über das API Vorteile, wenn das gleiche auch über die Kommandozeilen-Tools funktioniert? Ja. Der größte Vorteil ist, dass die Funktionen auch remote von anderen Datenbank-Servern aus gestartet werden können (siehe Abbildung 6).
Außerdem besteht die Möglichkeit, die Funktionen admin() und task() innerhalb von SQLStatements zu verwenden. Abbildung 7 zeigt eine elegante Art, mit der Funktion task ()in einem Select alle logischen Logs im Rootdbs (Chunk 1) zu löschen, sofern es nicht „aktuell“ ist.
Ein weiterer Vorteil des SQL API ist, dass sämtliche Kommandos in der Tabelle sysadmin:command_history protokolliert werden und somit nachträglich ausgelesen werden können.
Weiterhin stehen ab IDS 11.5.xC1 nun auch Kommandos zur Konfiguration von HA (High Availability) Clustern zur Verfügung.
VoraussetzungenAlle API-Funktionen und Objekte sind in der sysadmin-Datenbank definiert. Die Funktionen können nur von folgenden Benutzern aufgerufen werden:
Was geht nicht?
Das Starten (oninit) oder der Übergang vom quiescent in den Online Mode lassen sich natürlich nicht mit dem SQL API durchführen, da hierfür SQL-Kommandos in der sysadmin-Datenbank ausgeführt werden müssen. Genau dieses Ausführen der SQL-Kommandos ist allerdings nicht möglich, wenn der Server offline oder im Mode quiescent ist.
Die vorgestellten Leistungsmerkmale sind nur ein kleiner Ausschnitt aus dem, was sich seit Informix 11.1 alles getan hat. Die neuen Funktionalitäten bringen fast immer einen echten Mehrwert im Produktivbetrieb. Es bleibt zu hoffen, dass nicht nur die Informix Entwicklung Fahrt aufgenommen hat, sondern auch der Vertrieb des Produktes wieder erfolgreicher wird.
Seit September diesen Jahres hat IDS 7.31 den Status EOS (End of Support) und die Versionen 10.00 und 11.10 den Status EOM (End of Maintenance) erreicht (siehe Abbildung 8). Wer über eine Migration nachdenkt, sollte direkt auf IDS 11.5xC5 migrieren. Denn auch das nächste Fixpack wird interessante Leistungsmerkmale bieten.
Ulf Papenfuß (info@ordix.de).