[Oracle 10g] Feldlängen unterschiedlich

Hallo Allerseits,

Wir haben folgendes Problem: auf zwei unterschiedlichen Windows-Rechnern haben wir Oracle 10g installiert (diesselbe Version). Auf beiden Rechnern wurde mit folgendem Kommando eine Tabelle angelegt:

CREATE TABLE map_areadens
(RECN NUMBER(5)
,VALU VARCHAR2(2)
,descript VARCHAR2(80)
);

In die Tabelle wollen wir (vorerst mal mit SQL Plus) Text einfügen der ausländische Sonderzeichen enthält (thailändische Schriftzeichen). Interessant ist jetzt, dass auf Rechner A volle 80 Zeichen eingefügt werden können, während auf Rechner B schon bei weniger Schluss ist. Wir haben jetzt vermutet, dass die 80 eine Begrenzung der Bytes ist und eventuell Rechner A einen 1-Byte-per-Zeichen Code verwendet (für Thai wäre das TIS-620) während auf Rechner B Unicode zum Einsatz kommt.

Was uns auch aufgefallen ist, dass auf Rechner A das Feld als VARCHAR2(80 CHAR) ausgegeben wird, während auf Rechner B VARCHAR2(80 CHAR) steht.

Leider wissen wir nicht wo man da nachschauen/einstellen kann welcher Zeichensatz zur Anwendung kommt. Weiss das vielleicht jemand? Oder habt ihr eine andere Idee woran das Problem liegen könnte?

Danke und Grüße, Robert

Hallo Allerseits,

Leider wissen wir nicht wo man da nachschauen/einstellen kann
welcher Zeichensatz zur Anwendung kommt. Weiss das vielleicht
jemand? Oder habt ihr eine andere Idee woran das Problem
liegen könnte?

Danke und Grüße, Robert

  • Was gibt select * from nls_database_parameters
    where parameter=‚NLS_CHARACTERSET‘
    auf beiden Server ?

Gruss

Hallo Ulrich,

Danke für deine Antwort und sorry für meine späte Antwort. Auf beiden Rechnern ist die Datenbank mit UTF-8 angelegt, daran sollte es also nicht liegen.

Was wir sonst noch aus der Oracle-Doku rausbekommen haben ist, dass bei normalen Usern es zwar funktioniert die Feldlänge per Zeichen (und nicht per Byte zu spezifzieren), dass aber sobald man den SYSTEM User verwendet immer Byte gezählt werden (eigentlich seltsam …). Aber auch die Erkenntnis hat uns nicht wirklich weitergeholfen, nachdem auf beiden Rechnern „normale“ User verwendet wurden.

Im Moment sind wir bei einem Workaround gelandet, und zwar auf dem Rechner wo er Byte statt Zeichen gezählt hat haben wir die Datenbank mit TIS-620, dem Thai-Zeichensatz bei dem 1 Byte = 1 Zeichen ist eingerichtet. Das funktioniert und da wir das Programm auf diesem Rechner nur für einen eingeschränkten Zeitraum brauchen ist es ein aktzeptabler Workaround.

Schöne Grüße, Robert