Wir sind aktuell im Begriff, ein neues Projekt aufzuziehen und
ein Kollege hat vorgeschlagen, gleich einen Oracle Server mit
Unicode Support zu verwenden. Das hat bei mir einige Fragen
aufgeworfen. Da wir mit Java arbeiten, dürfte Unicode hier
kein Problem sein. Aber was bedeutet das für die Datenbank
selbst?
1.) Jedes eingegebene Zeichen müsste nach meinem Verständnis
1,2,3 oder gar 4 Byte in der Datenbank belegen. Muss ich aus
einem VARCHAR(20) dann einen VARCHAR(80) machen? Oder bleibt
die Repräsentation nach aussen gleich, d.h. der VARCHAR(20)
belegt Server-Intern jetzt einfach mehr Speicher?
Du hast ganz recht, du musst die Länge entsprechend anpassen. Das kann dir übrigens schon dann passieren, wenn du nur die Codepage wechselst und Umlaute, also höhere ASCII Zeichen im Text hast.
2.) Wie funktioniert die Administration einer Unicode DB? In
der Shell gibt es nur ASCII-Code, heisst das sqlplus versucht
den internen Unicode dann auf die aktuelle Codepage
abzubilden?
Ja, das merkst Du gar nicht - fast jedenfalls. Bei der Ausgabe hat man sich ja eh schon an die paar kryptischen Zeichen gewöhnt, die die ÖÄÜ darstellen. Dem kann man Abhilfe schaffen, wenn man die richtige Codepage bei der Session angibt.
3.) Ändert sich für die Wartung einer solchen Datenbank etwas?
Nö.
4.) Was muss man noch beachten?
Mir fällt beim besten Willen nichts ein. Ausser, dass Du halt immer wieder Probleme beim IMPORT bekommen wirst, weil ein DMP aus einer DB nicht mit Deiner DB mehr kann. (Weil alle CHARACTER Felder jetzt Ihre Größe geändert haben.) Aber das passiert wie gesagt bereits beim einfachen Codepage-Wechsel.
Ach ja, es gibt eine Einstellung für Masochisten: Case-Sensitive Systemtabellen. So was hatte ich mal bei SQL-Server. Das war eine Sch…
Da musste man sogar bei den Tabellennamen die Codepage im Select mit angeben und Characters, die in jeder Codepage identisch sind transformieren. Dagegen hilft dann nur noch DROP DATABASE.
Gruß
Peter
Gruß Markus