So ändern Sie den Zeichensatz in Oracle 11g R2 Express Edition

8

Ich muss den Zeichensatz von AL32UTF8 in WE8MSWIN1252 in einer Oracle 11g r2 Express-Instanz ändern ... Ich habe versucht, den Befehl zu verwenden:

%Vor%

Aber es versagt zu sagen, dass MSWIN1252 keine Obermenge von AL32UTF8 ist. Dann habe ich einige Artikel über CSSCAN gefunden, und dieses Tool scheint in Oracle 11 Express nicht verfügbar zu sein.

Ссылка

Jeder hat eine Idee, wie man das macht? Vielen Dank im Voraus

Bearbeiten Ein wenig geklärt: Das eigentliche Problem ist, dass ich versuche, Daten in eine Tabelle zu importieren, in der eine Spalte als VARCHAR (6 Byte) definiert ist. Die Zeichenfolge, die das Problem verursacht, ist "eq.mês", es benötigt 6 Bytes in MSWIN1252 und 7 Bytes in UT8

    
alessandroasm 02.02.2012, 17:58
quelle

3 Antworten

4

Sie können nicht.

Die Express Edition von 11g ist nur mit einem UTF-8-Zeichensatz verfügbar. Wenn Sie zur Express Edition von 10g zurückkehren möchten, gab es eine westeuropäische Version, die den Windows-1252-Zeichensatz verwendete. Im Gegensatz zu den anderen Editionen unterstützt Oracle nicht die gesamte Palette von Zeichensätzen in der Express Edition und unterstützt auch nicht das Ändern des Zeichensatzes einer vorhandenen XE-Datenbank.

Warum glauben Sie, dass Sie den Datenbank-Zeichensatz ändern müssen? Abgesehen davon, dass sie möglicherweise etwas mehr Speicherplatz benötigen, um die Zeichen in der oberen Hälfte des Windows-1252-Bereichs zu unterstützen, die im Allgemeinen nicht besonders häufig verwendet werden, gibt es für eine UTF-8-Datenbank nicht viele Nachteile.

    
Justin Cave 02.02.2012, 18:08
quelle
1

Ich würde sagen, dass Ihre beste Option, wenn Sie zu einem Zeichensatz gehen möchten, der nur eine Teilmenge der ursprünglichen Zeichen unterstützt, die beste Option ist, exp und imp back (oder expdp und impdp) zu verwenden.

Sind Sie sicher, dass keine einzelne Tabelle ein Zeichen enthält, das nicht in der 1252-Codepage gefunden wurde?

    
Benoit 02.02.2012 18:01
quelle
1

Das Problem, dass nur der Befehl ALTER DATABASE ausgeführt wird, ist, dass das Data Dictionary nicht konvertiert wurde und beschädigt werden kann.

Ich hatte das gleiche Problem. In meinem Fall verwenden wir eine Oracle 11g Express Edition (11.2.0.2.0) und wir müssen wirklich den Zeichensatz WE8MSWIN1252 verwenden, aber ich kann den Zeichensatz bei der Installation nicht ändern (er wird immer mit AL32UTF8 installiert).

Wenn ein Oracle Client 11g als Administrator installiert ist und nur die csscan full=y ausgeführt wird (überprüfen Sie diesen Link Ссылка ) und wir stellen fest, dass es sich um verlustbehaftete und konvertierbare Datenprobleme in unserer Datenbank handelt. Die Probleme liegen jedoch bei den Schemas MDSYS (Oracle Spatial) und APEX_040000 (Oracle Application Express). Also, da wir diese Produkte nicht brauchen, entfernen wir sie (siehe diesen Link: Ссылка ).

Dann exportieren wir mit expdp die Benutzerschemas und löschen die Benutzer (sie müssen am Ende des Prozesses neu erstellt werden).

Wenn Sie csscan erneut mit full=y capture=y ausführen, wird Folgendes gemeldet: The data dictionary can be safely migrated using the CSALTER script . Wenn der Bericht dies nicht hat, funktioniert das Skript csalter.plb nicht, da einige Bedingungen nicht erfüllt sind:

  • changeless für alle CHAR VARCHAR2- und LONG-Daten (Datenwörterbuch und Anwendungsdaten)
  • changeless für alle Anwendungsdaten CLOB
  • changeless und / oder konvertierbar für alle Data Dictionary CLOB

In unserem Fall waren diese Bedingungen erfüllt und wir konnten das CSALTER-Skript erfolgreich ausführen. Darüber hinaus führt dieses Skript den ALTER DATABASE-Befehl aus, den Sie auszuführen versuchen, und es konvertiert die CLOB-Daten des Data Dictionary, das konvertierbar ist.

Schließlich erstellen wir die Benutzer und die Tablespaces unserer Anwendung und wir importieren den Speicherauszug der Benutzerdaten erfolgreich.

    
lssilveira 03.07.2015 17:28
quelle

Tags und Links