Danke und Frage

Hmmm, danke schonmal für die Antwort, aber ich starte den Export ja direkt auf dem DB-Server, wie kann es dann sein das ich 2 verschiedene Sprachen verwende ?

ich exportiere jetzt erst mal ohne statistiken, wie funktioniert dasmit dem recalculate ?

Grüße

Chris

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Chris!

Hier der volle Text zur Fehlermeldung (aus der Oracle Doku):
_EXP-00091 Exporting questionable statistics

Cause: Export was able to export statistics, but the statistics may not be useable. The statistics are questionable because one or more of the following happened during export: a row error occurred, client character set or NCHARSET does not match with the server, a query clause was specified on export, only certain partitions or subpartitions were exported, or a fatal error occurred while processing a table.

Action: To export non-questionable statistics, change the client character set or NCHARSET to match the server, export with no query clause, or export complete tables. If desired, import parameters can be supplied so that only non-questionable statistics will be imported, and all questionable statistics will be recalculated._

Das mit dem unterschiedlichen Zeichensatz ist allerdings durchaus möglich: Der NCHARSET der Datenbank wird direkt bei der Erstellung der Instance (also beim CREATE DATABASE) angegeben, der Character Set des Clients (also in dem Fall des am Server installierten Clients) kann z.B. in der Registry geändert werden (was iA aber kaum zu empfehlen ist).

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi!

Hmmm, danke schonmal für die Antwort, aber ich starte den
Export ja direkt auf dem DB-Server, wie kann es dann sein das
ich 2 verschiedene Sprachen verwende ?

wie martin schon sagte. die eine für die db selber, die andere für die zugriffe auf die db, unabhängig davon, ob du am server direkt oder kilometerweit entfernt sitzt

grüße,
tomh

ps: hätte die doku besser durchlesen sollen, als nur das metalink-forum zu durchstöbern

okay, also, wenn ich das richtig verstanden habe, dann kann ich zwar theoretisch den Zeichensatz ändern, sollte das aber besser nicht machen.

bei der Erstellung wurder der Zeichensatz WE8ISO8859P1 eingetragen das ist doch der deutsche oder ?

in der init.ora steht zum thema Sprache nls_language=GERMAN
nls_territory=GERMANY

und das ganze ist eine deutsche oracle9.2 version.

sollte also eigentlich alles richtig sein oder habe ich hier einen denkfehler ?

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 ?

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…

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

1 Like

Danke schön euch beiden !
Grüße

chris