Hallo Chris!
okay, also, wenn ich das richtig verstanden habe, dann kann
ich zwar theoretisch den Zeichensatz ändern, sollte das aber
besser nicht machen.
Leider ist die Diskussion des Zeichensatzes eines der komplexesten (und am schlechtesten gelösten) Themen bei Oracle Datenbanken. Ich musste mich unlängst auch mit dem Thema auseinandersetzen und bin (nach langen Diskussionen mit dem Oracle Support) zum Schluss gekommen, dass die lieben Herrschaften (und Damen natürlich) das ganze überhaupt nicht im Griff haben.
Wenn du Metalink Zugang hast, dann sieh dir mal die dortigen Docs zum Thema „character set“ an. Mir hat es nur etwa 3 Tage gekostet so einigermaßen durchzublicken.
bei der Erstellung wurder der Zeichensatz WE8ISO8859P1
eingetragen das ist doch der deutsche oder ?
Antwort von Radio Eriwan: Im Prinzip jaaaaa, aber nur… Dieser Zeichensatz hat Lücken. Zum Beispiel ist das €-Zeichen nicht enthalten. Allerdings kommt jetzt der Clou: Das €-Zeichen kann trotzdem in der DB abgespeichert werden, und zwar dann, wenn auch der Client den gleichen Zeichensatz verwendet (unter Windows siehe Registry des Clients HKEY_LOCAL_MACHINE/Software/Oracle -> da gibts dann ein- oder mehrmals den Eintrag NLS_LANG) wie der Server. In dem Fall werden nämlich die Zeichen nicht konvertiert, sondern einfach binär durchgeschrieben, gleichgültig, ob die DB das eintreffende Zeichen überhaupt kennt (d.h. ob es im Zeichensatz der DB enthalten ist oder nicht).
Der neuere Zeichensatz, den Oracle bei Installationen unter Windows verwendet (zumindest seit 9.2, ich nehme aber an in allen 9er Versionen) ist übrigens WE8MSWIN1252. Ich gehe mal davon aus, dass das dein Setting in NLS_LANG ist.
Was zu tun ist: Unbedingt im Metalink nachlesen, die Sache versuchen zu verstehen und erst dann am character set drehen, ansonsten hast Du schneller alles voller „¿“ in der DB als du sehen kannst…
in der init.ora steht zum thema Sprache nls_language=GERMAN
nls_territory=GERMANY
Das ist eigentlich egal, sind nur default parameter für die Sessions, die meist vom Client übersteuert werden. Ausserdem haben die ohnehin nur bei Meldungen, beim langen Datumsformat (Monatsnamen) und für die Sortierung von Strings eine Bedeutung.
und das ganze ist eine deutsche oracle9.2 version.
sollte also eigentlich alles richtig sein oder habe ich hier
einen denkfehler ?
Ich vermute das Problem - wie schon gesagt - darin, dass die DB (vermutlich noch mit älteren Erstellungsskripts, oder auch um sich die Konvertierung zu ersparen, die ist nämlich auch nicht trivial) mit ISO8859P1 erstellt wurde, der Client aber mit MSWIN1252.
wie genau ist dasmit dem wiederherstellen der statistiken wenn
ich jetzt einnen Dump einspiele bei dem die Statistiken nicht
mit importiert wurden ? geschieht das automatisch oder wie
stoße ich das an ?
Die Statistiken werden entweder mit DBMS_UTILITY.ANALYZE_SCHEMA (alte Variante bis 8.1.7, also eher nicht verwenden) oder besser mit DBMS_STATS.GATHER_DATABASE_STATS und DBMS_STATS.GATHER_SYSTEM_STATS erstellt. Diese Prozeduren solltest du entweder manuell oder mittels DBMS_JOB regelmässig neu erstellen (die Häufigkeit in der das notwendig ist hängt hauptsächlich davon ab, wie schnell sich die Anzahl der Sätze in den Tabellen ändern, wir bei uns machen es einfach immer nach der nächtlichen Sicherung). Die DBMS_STATS-Variante unterstützt auch monitoring, d.h. Oracle merkt sich selbständig (wenn du das einschaltest), für welche Tabellen etc. die Statistiken neu erstellt werden müssen (Stichwort für die Doku: „GATHER STALE“).
sorry für die vielen fragen, aber ich kümmer mich hier seit
einem jahr um 7datenbanken ohne das ich wirklich ahnung davon
hätte geschweige denn das ich mal einen kurs bekommen
hätte…
Also entschuldigen brauchst du dich für deine Fragen sicherlich nicht. Trotzdem würde ich dir empfehlen, dir die Doku so nach und nach zu Gemüte zu führen. Ich weiss, dass das sehr mühsam und eintönig ist, aber im Endeffekt findest du da drin das meist von dem, was ich hier verzapfe.
Beste Grüße aus Wien,
Martin