SESAM/SQL-Server V7.0 Funktionale Erweiterungen Claudia Merfeld Juli 2011 München Copyright 2011 FUJITSU Überblick SQL-Schnittstelle JDBC Erweiterungen Utility Funktionen Hochverfügbarkeit Administration Nutzung neuer OSD-Funktionalität 1 Copyright 2011 FUJITSU SQL-Schnittstelle MERGE Anweisung Einfügen oder Ändern von Sätzen in einer SQL-Anweisung Satz in der Tabelle noch nicht vorhanden => Satz wird eingefügt Satz in der Tabelle bereits vorhanden Satz wird geändert Beispiel Lagerverwaltung: MERGE INTO Stock AS S USING Delivery AS D ON S.ItemID = D.ItemID AND S.Price = D.Price WHEN MATCHED THEN /* gleiches Teil und gleicher Preis: Anzahl wird erhöht */ UPDATE SET ItemCount = S.ItemCount + D.ItemCount WHEN NOT MATCHED THEN /* neues Teil oder neuer Preis: Teil wird neu aufgenommen */ INSERT ( ItemID, Price, ItemCount ) VALUES ( D.ItemID , D.Price , D.ItemCount ) 2 Copyright 2011 FUJITSU SQL-Schnittstelle LIKE_REGEX Prädikat Pattern Matching mit regulären Ausdrücken in SQL, wie z.B. in PERL Erheblich größere Funktionalität als mit LIKE Prädikat Beispiel: Suche nach dem Namen „Meier“ in allen geläufigen Schreibweisen, unabhängig von Groß- und Kleinschreibung WHERE Name LIKE_REGEX ’M[ae][iy]e?r’ FLAG ’i’ „Meier“ als regulärer Ausdruck Keine Unterscheidung zwischen Groß- und Kleinschreibung 3 Copyright 2011 FUJITSU SQL-Schnittstelle CASTABLE Prädikat Prüfung der Konvertierbarkeit von Werten im SQL Statement Beispiel: CASE WHEN :input IS CASTABLE AS NUMERIC(7,2) /* Wert ist konvertierbar */ THEN CAST :input AS NUMERIC(7,2) /* Ersatzwert wird vereinbart */ ELSE -1 END 4 Copyright 2011 FUJITSU SQL-Schnittstelle Erweiterung für CSV-Dateien in SQL Statements Ordinality in CSV-Tabellen Beim Lesen aus einer CSV-Tabelle wird mit dem Zusatz with ordinality die Ordnungszahl des gerade abgerufenen Satzes mitgeliefert. Beispiel: Überlesen von N Überschriftszeilen in einer CSV-Datei SELECT c1, c2, … cn FROM TABLE (CSV(‘CSVFILE‘ DELIMITER ‘,‘ QUOTE '“‘ ESCAPE '-' , CHAR(c1), CHAR(c2), … CHAR(cn) )) WITH ORDINALITY AS T (cc1, cc2, … ccn, counter) WHERE counter > N Caching von CSV-Dateien Mit der Annotation /*% CACHE %*/ wird das Ergebnis einer TableFunction in eine temporäre Datei gespeichert, um parallelen Zugriff auf die CSV-Datei zu ermöglichen. Dateien mit UTFE Codierung können als CSV-Dateien verwendet werden. 5 Copyright 2011 FUJITSU SQL-Schnittstelle Neue Funktionen zur Abfrage von Eigenschaften eines SQL Statements: CURRENT_CATALOG: Default Datenbank CURRENT_SCHEMA: Default Schema CURRENT_REFERENCED_CATALOG: Datenbank, auf die sich die aktuelle Anweisung bezieht CURRENT_ISOLATION_LEVEL: Isolation Level der aktuellen Transaktion 6 Copyright 2011 FUJITSU SQL-Schnittstelle Neue arithmetische Funktionen Numerische Funktionen: ABS() CEILING() EXTRACT() FLOOR() MOD() SIGN() TRUNC() Absolutwert eines numerischen Wertes Aufrunden („Runden zur Decke“) Bestandteile aus einem Zeitwert selektieren Abrunden („Runden zum Boden“) Rest einer Division zweier ganzer Zahlen Vorzeichen eines numerischen Wertes Ganzzahliger Anteil eines numerischen Wertes CASE Ausdruck: MAX(a,b, …) MIN(a,b, …) Wert des größten Ausdrucks Wert des kleinsten Ausdrucks 7 Copyright 2011 FUJITSU SQL-Schnittstelle Unicode Unterstützung Normalize() bringt eine National Zeichenkette in eine normalisierte Form • Normalize NFC (composed from) bildet alle Code Points, die zusammen ein Zeichen ergeben, in den entsprechenden Code Point ab. • Normalize NFD (decomposed form) zerlegt jedes zusammengesetzte Zeichen in das Grundzeichen und die zugehörigen diakritischen Zeichen. Beispiel: A NX‘0041‘ .. NX‘0308‘ Ä NX‘00C4‘ (composed form) NX‘00410308‘ (decomposed form) Collate liefert das Collation-Element (Sortierelement) gemäß Default Unicode Collation Table (DUCET) => Damit ist auch Sortierung in anderen Sprachen möglich. 8 Copyright 2011 FUJITSU JDBC Erweiterungen Neues Interface SQLXML Lesen von XML-Dokumenten aus SESAM Datenbanken Schreiben von XML-Dokumenten in SESAM Datenbanken Administration Auskunftsfunktion GetInfo Parameters liefert die aktuell gültigen Parameter des SESAM DBAccess Servers UserId eines JDBC Vorgangs besteht aus Identifikation des benutzten Clients und Servers zur besseren Identifikation eines JDBC Vorgangs Die ASCII EBCDIC Konvertierung zwischen Client und Server kann auch gemäß dem CCSN der Datenbank erfolgen. 9 Copyright 2011 FUJITSU Utility Funktionen Dynamische Änderung von Partitionsgrenzen mit ALTER PARTITIONING FOR TABLE Hinzufügen einer Partition (ADD PARTITION) Löschen einer Partition (DROP PARTITION) Ändern einer Partitionsgrenze (ALTER PARTITION) Umwandeln einer nicht partitionierten Tabelle in eine partitionierte und umgekehrt (ADD / DROP PARTITION) Fortschrittsanzeige ALTER PARTITIONING im SESAM Monitor Optionen bezüglich der betroffenen Datensätze: • Betroffene Datensätze können dabei zwischen den Partitionen verschoben werden (PRESERVE ROWS) • Änderung der Partitionsgrenzen wird nur durchgeführt, wenn keine Sätze zu verschieben sind (ONLY WHEN EMPTY) • Betroffene Datensätze werden gelöscht (DELETE ROWS) ist nur bei DROP PARTITION möglich 10 Copyright 2011 FUJITSU Utility Funktionen Anonymisierung von personenbezogenen Daten zu Testzwecken mit ALTER DATA FOR TABLE Vertauschung von Werten innerhalb der Spalte => Alle Werte bleiben erhalten => Häufigkeitsverteilung der Werte bleibt erhalten => Test der Applikation mit realen Werten möglich Gruppierung von Spalten möglich (z.B. Postleitzahl und Ortsname oder Geschlecht und Vorname) => logische Zusammenhänge bleiben erhalten => Plausibilitätsprüfungen der Applikation weiterhin möglich Keine logische Datensicherung für Alter Data for Table Zwei Aufrufe für die gleiche Tabelle führen zu unterschiedlichen Ergebnissen 11 Copyright 2011 FUJITSU Utility Funktionen CSV Format bei Load und Unload Ähnlich wie DELIMITER Format, aber zusätzliche Angabe von QUOTEund ESCAPE-Zeichen möglich DELIMITER-Zeichen ist Trennzeichen zwischen Spaltenwerten QUOTE-Zeichen, in das Spaltenwerte eingeschlossen werden, die z.B. DELIMITER-Zeichen oder NEWLINE-Zeichen enthalten ESCAPE-Zeichen zur Entwertung von DELIMITER-, QUOTE-, ESCAPEund NEWLINE-Zeichen im Spaltenwert Vorteile: Datenaustausch mit anderen Programmen wird erleichtert Beschränkung der Satzlänge auf 32KB aufgehoben Kompatibel mit Tabellenfunktion CSV() 12 Copyright 2011 FUJITSU Utility Funktionen Erweiterung der Exceptiondatei bei UNLOAD Werte, die nicht transliteriert oder konvertiert werden können, führen zu einem Eintrag in die Exceptiondatei Name der Ausgabedatei Zeitpunkt der Ausführung SQL-State Zeilennummer der Ausgabedatei, nach der der Satz einzuordnen wäre Spaltenname Wert in hexadezimal Nummer des prozessierten Satzes 13 Copyright 2011 FUJITSU Hochverfügbarkeit Laden eines neuen Korrekturstands ohne Betriebsunterbrechung des Database Handlers Applikationen warten bis DBH wieder betriebsbereit Einmalig im Datenbankbereich Realisiert mit neuer SESADM Anweisung RELOAD-DBH-SESSION Optional kann der Database Handler dabei neu parametrisiert werden Dynamische Rekonfiguration der DBH-Session Umstrukturierung des DBH Speichers (User-, System- und Cursor-Buffer) und Anpassung von DBH-Optionen an geänderte Anforderungen, wie z.B. Anzahl Spaces, Anzahl Columns, Anzahl Pläne und Anzahl Cursor Realisiert mit neuer SESADM Anweisung RECONFIGURE-DBH-SESSION 14 Copyright 2011 FUJITSU Administration Differenziertes Protokoll von Sperrsituationen View SYS_LOCK_CONFLICTS im SYS_INFO_SCHEMA zeigt die letzten Sperrkonflikte an mit Details über: • die die Sperre anfordernde Transaktion • die die Sperre verursachende Transaktion • das angeforderte Sperrobjekt • das die Sperre verursachende Objekt • Eigenschaften der Sperre • Zeitpunkt des Sperrkonflikts Sperrsituationen werden intern in einem Umlaufpuffer gespeichert Ausgabe der letzten 1000 Sperrsituationen möglich 15 Copyright 2011 FUJITSU Administration Verbesserte Unterstützung externer Kopierfunktionen Durch Erweiterung der SESADM Anweisung PREPARE-FOREIGN-COPY um den Parameter CLOSE Damit werden Datenbankdateien logisch und physikalisch geschlossen Konsistenter Zustand der Datenbankdateien => Kopierfunktionen, die physikalisch geschlossene Dateien benötigen, sind möglich, z.B. SNAPs Datenbankpuffer und Pläne bleiben erhalten Konsistenzprüfung beim Wiederöffnen der Datenbankdateien 16 Copyright 2011 FUJITSU Administration SESADM Anweisung SHOW-SQL-DB-CATALOG-ENTRIES Zeitstempel in der Ausgabe des SQL-Datenbankverzeichnisses Dokumentation, wann der aktuelle Zustand festgestellt wurde => Bessere Analyse von Problemen beim Zugriff auf Datenbanken SDF-Anweisung STEP in SESADM Prozeduren möglich Bei syntaktischen oder einigen semantischen Fehlern wird zur nächsten STEP Anweisung verzweigt => Verbessere Fehlerbehandlung in SESADM Prozeduren 17 Copyright 2011 FUJITSU Nutzung neuer OSD-Funktionalität Maximale Datenbankdateigröße von 64 GB auf 4 TeraByte erhöht Voraussetzung: Datenbankdateien liegen auf einem Pubset mit der Eigenschaft LARGE FILES = *ALLOWED Existierende Datenbankdateien werden mit der Utility Anweisung REORG SPACE in einen „Large Space“ migriert Neu erzeugte Datenbankdateien haben automatisch die Eigenschaft „Large Space“ SESAM/SQL unterstützt beide Typen sowohl bisherige Datenbankdateien als auch „Large Spaces“ Eine Datenbank kann sowohl Datenbankdateien des bisherigen Typs als auch „Large Spaces“ enthalten => Vorteil: Schrittweise Migration möglich 18 Copyright 2011 FUJITSU Nutzung neuer OSD-Funktionalität Nutzung der Mail-Funktionalität (SESAM/SQL-Server) Erweiterung der DBH-Option MSG-OUTPUT um den Parameter MAIL Ausgewählte Meldungen können sofort versandt werden (IMMEDIATE) Liste von maximal 100 MSG7 Meldungsschlüssel inklusive Wildcards möglich DBH-Protokoll kann am Ende der Session versandt werden (COLLECT) Empfänger und Absender E-Mail Adresse frei wählbar Alle Parameter per SESADM Anweisung MODIFY-MAIL-PARAMETERS änderbar 19 Copyright 2011 FUJITSU Nutzung neuer OSD-Funktionalität Nutzung der Mail-Funktionalität (Service-Task) Erweiterung der DBH-Option SERVICE-TASKS um den Parameter MAIL Versand des Service-Task Protokolls wahlweise • Immer • Nur im Fehlerfall • Nie Empfänger und Absender wie im DBH Alle Parameter per SESADM Anweisung MODIFY-SERVICE-TASKS änderbar Nutzung der Mail-Funktionalität (SESADM) Ausgabeinformationen werden gesammelt und bei der nächsten MODIFY-OUTPUT-MODE Anweisung als E-Mail gesendet Empfänger und Absender frei wählbar 20 Copyright 2011 FUJITSU Copyright 2009 FUJITSU TECHNOL 21 Copyright 2011 FUJITSU