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
0
A
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 ..
Verwandte Themen
- 1. Von [] Byte zu char *
- 2. Byte-Wert von Char erhalten
- 3. Warum wird empfohlen, vor dem Drucken einen Zeiger auf einen generischen Zeiger zu setzen?
- 4. Fragen zu unsigned char, char, BYTE und Dateischreib
- 5. Verlust der Genauigkeit von 4 Byte Char-Array zu int?
- 6. Wird Byte, Kurz, Char in switch-Anweisung automatisch hochgestuft?
- 7. Warum wird empfohlen, .innerHTML zu vermeiden?
- 8. SWIG Java - Wrapping unsigned char [] in byte []
- 9. Fehler: ungültige Konvertierung von 'char *' zu 'char'
- 10. Byte-Array zu JSON und umgekehrt setzen
- 11. Wird die Verschlüsselung von Javascript empfohlen?
- 12. Wie wird empfohlen, Anmeldeinformationen in einer API-Restreaktion zurückzugeben?
- 13. Wie konvertiert man Byte in Char *
- 14. C# Konvertieren Char in Byte (Hexadezimale Darstellung)
- 15. Setzen Sie ein instanceField in Byte Buddy
- 16. Wie wird empfohlen, benutzerdefinierte doppelte Unterstrichvariablen in Python zu verwenden?
- 17. Convert Go [] Byte in ein C * char
- 18. Unterschied zwischen Byte und Char in C
- 19. Kein Sinn in der Verwendung von Byte, kurz und char
- 20. Saving Char von lex zu Array von Char in C
- 21. Warum wird das Löschen einer Verzweigung in CVS nicht empfohlen?
- 22. Lesen von 2 Byte zu einer Zeit aus einer Binärdatei
- 23. Wird empfohlen, in Oracle-Tabellenbereichen einheitliche Extent-Größen zu verwenden?
- 24. Warum wird ein führendes Leerzeichen in einer scanf-Formatzeichenfolge empfohlen?
- 25. Warum HibernateTemplate nicht empfohlen wird?
- 26. Welcher PyPy Speicherprofiler wird empfohlen?
- 27. Warum wird empfohlen, Fragmente nicht mit der Benutzeroberfläche zu behalten?
- 28. C: byte-copy vorzeichenloser char-Wert
- 29. Was Importeinstellungen in Datenbank-Projekt empfohlen wird
- 30. Ist es möglich, die Variable byte [] in File() zu setzen?
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
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
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