2016-06-22 1 views
0

Es wäre eine gute Idee, das NLS_LENGTH_SEMANTICS in einer Live-Datenbank zu ändern. Der Datenbankzeichensatz verwendet ein Multibyte-Zeichencodierungsschema. Aus diesem Grund erhält die Anwendung zufällige Fehler, die nicht neu erstellt werden können. In den meisten Fällen wird ORA-06502: PL/SQL: numeric or value error ausgelöst. Um dies zu beheben, planen wir den NLS_LENGTH_SEMANTICS Parameterwert zu ändern. Für die Anwendung war die empfohlene NLS_LENGTH_SEMANTICS-Einstellung CHAR und wurde nicht auf diesen Wert festgelegt, als die DB-Instanz erstellt wurde. Meine Frage ist, Will nur den Wert auf CHAR Hilfe ändern? Oder wird eine neue DB-Instanz mit NLS_LENGTH_SEMANTICS = 'CHAR' erstellt und die alte DB exportiert und in die neue DB-Hilfe importiert?Wird empfohlen, NLS_LENGTH_SEMANTICS in einer Live-Datenbank von "BYTE" auf "CHAR" zu setzen

Antwort

2

NLS_LENGTH_SEMANTICS ermöglicht es Ihnen, CHAR und VARCHAR2 Spalten mit entweder Byte oder Zeichenlänge Semantik zu erstellen. Vorhandene Spalten sind nicht betroffen. Es bedeutet, dass kein Risiko für vorhandene Daten besteht.

Der Parameter NLS_LENGTH_SEMANTICS, der auf CHAR festgelegt ist, kann jedoch dazu führen, dass viele vorhandene Installationsskripts unerwartet Spalten mit Zeichenlängensemantik erstellen, was zu Laufzeitfehlern einschließlich Pufferüberläufen führt. es zu Problemumgehung Sie müssen sicherstellen, dass Sie NLS_LENGTH_SEMANTICS=BYTE gesetzt, wenn alle Oracle „internes“ Skripte wie Patches ausgeführt, Upgrades, etc ..

+0

das NLS_LENGTH_SEMANTICS = CHAR nicht einstellen, während ein Oracle-Patch installieren oder Effekt die gesamte Datenbank aktualisieren (einschließlich die alten Daten/existierende Installati- onsskripte auch) oder nur die neuen Daten ?? Ich möchte in der Lage sein, die Einstellung zu ändern, so dass sie auch vorhandene Daten beeinflusst. – Asl506

+0

Die Änderung von NLS_LENGTH_SEMANTICS in CHAR wirkt sich nur auf neue Operationen aus. Ich denke, Sie müssen herausfinden, was die Ursache des Problems ist. Wird es verursacht durch a) zu kleine Spalten in vorhandenen Tabellen oder b) zu kleine Größe von Variablen in Ihren Anwendungsskripten? Falls es a) ist, wird das Ändern von NLS_LENGTH_SEMANTICS nicht helfen. Jedoch für b) kann es helfen. – dcieslak

+0

Was passiert, wenn ich eine neue Datenbankinstanz mit NLS_LENGTH_SEMANTICS zu CHAR erstelle? Exportieren Sie die alte Datenbank und importieren Sie sie in die neu erstellte Datenbank. Wird es alle alten Objekte (Spalten und usw.) in CHAR ändern? – Asl506

Verwandte Themen