Warum sollte man den Datenbank-Zeichensatz umstellen?

Für Anwendungsszenarien, die über nationale Grenzen hinausgehen, d.h. wo viele Datenbanken, internationale Kunden oder Standorte und damit unterschiedliche Datenbank Zeichensätze vorhanden sind, müssen die Datenbanken in einem Datenbank Zeichensatz betrieben werden, der möglichst alle Zeichen abbilden kann. Sonst muss man schlimmstenfalls mit Datenverlust rechnen.

Welchen Zeichensatz sollte man wählen?

In unterschiedlichen Datenbank Zeichensätzen können identische Zeichen unterschiedlich kodiert sein. Bei einer Datenbank Zeichensatzkonvertierung gibt es Probleme, wenn ein Zeichen in einem der Zeichensätze nicht definiert ist.

Stimmt der binäre Code zweier Zeichensätze, dann besteht eine binäre Subset –Superset Beziehung.
Stimmt der binäre Code zweier Zeichensätze nicht, aber das Zeichen kann trotzdem dargestellt werden, dann besteht eine logische Subset-Superset Beziehung.

Z.B. ist US7ASCII ein binäres Subset von fast jedem Zeichensatz

Zeichensatz        Oracle Bezeichnung       Codelänge     Umlaute          €-Zeichen
–                     US7ASCII                 7Bit         Nein             Nein
OEM, IBMPC            WE8PC850                 8Bit         0x8E – 0xE0      Nein
Latin1                WE8ISO8859P1             8Bit         0xC4 – 0xFC      Nein
“ANSI”                MSWIN1252                8Bit         0xC4 – 0xFC      Ja (0x80)

Bei arabischen, chinesischen, kyrillischen Zeichensätzen werden die westlichen Zeichensätze nicht mehr zur Abbildung ausreichen. Spätestens dann sollte man migrieren.
Um alle Sprachen und Zeichen die existieren abzubilden, bietet sich Unicode (z.B. AL32UTF8) an.

Welche Methoden zur Umstellung des Datenbank-Zeichensatzes gibt es?

Export und Import
o Export der Daten aus der aktuellen Datenbank
o Neue Datenbank mit dem gewünschten Zeichensatz erstellen
o Import der Daten in die neue Datenbank

Nachteil:
o Der Export/Import kann je nach Datenvolumen ziemlich lang dauern und benötigt zusätzliche Ressourcen.

CSSCAN / CSALTER
o Überprüfung der DB mit CSSCAN auf Konflikte
o Manuelle Bereinigung der Problemdaten oder durch Reimport
o Ausführen vom CSALTER-Script

Nachteile:
o Neuer Zeichensatz soll ein binäres Superset des aktuellen Zeichensatzes sein.
o Nur Datenbank Zeichensatz Metadata in Datadictionary wird geändert.
o Komplexe Probleme wie Verlängerung von Spaltenbreiten oder Konvertierung von Datadictionary Objekte können damit nicht gelöst werden.

DMU (ORACLE Database Migration Assistant for Unicode)
Das neue DMU Tool ist für die Konvertierung der Datenbanken nach UNICODE(AL32UTF8) konzipiert worden. Durch seine überschaubare Oberfläche und Reports wird dem Benutzer das Konvertieren leichter gemacht. Es bietet dem User die Möglichkeit Problemfelder genauestens zu identifizieren und macht auch Vorschläge in Bezug auf Lösungen. Mit dem Data-Cleansing Editor wird die Bereinigung der Daten erleichtert und man kann die tatsächliche Ausführung der Bereinigung bis zum Zeitpunkt der Konvertierung aufschieben, so dass der produktive Betrieb nicht gestört oder gar verhindert wird. Erst zum Zeitpunkt der Konvertierung, in dem alle Benutzer ausgeloggt werden müssen, werden die Bereinigungen durchgeführt.

1. DMU-Tool auf den lokalen Rechner installieren
2. Verbindung mit der Datenbank herstellen
3. DMU-Repository erstellen
4. Bestandsaufnahme (Datenbank scannen, Scanreport erstellen)

Datenbank-Scan
dmu_scan

Scanreport
dmu_scan_report
5. Datenbereinigung (Data Cleansing mit Cleansing-Editor)
cleansing_editor

Datenbereinigung-Cleansing Editor
cleansing_editor_2

Datenbereinigung-Invalid Binary Representation
cleansing_invalid_binary_representation
6. Konvertierung

DMU – Vor- und Nachteile
Vorteile:
o GUI, Übersichtlich, User-freundlich
o Konvertierung ist automatisiert, Größtenteils keine User-Intervention nötig
o Userdaten können mit dem Cleansing-Editor bereinigt werden.
o Übersichtliche Darstellung von Problem Objekten
o Macht Vorschläge für Problembehandlung
o Visualisiert den Prozessablauf
o Erlaubt scheduled Bereinigung, d.h. Auszuführen von Tasks erst während der Konvertierung, damit der Datenbank-Betrieb bis dahin ungestört bleibt.
Nachteile:
o In der aktuellsten Version können die Data-Dictionary Objekte nicht editiert werden, d.h. die „Need Conversion“ Objekte müssen durch selektive Import/Export oder durch Skripte bereinigt werden.