Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обрезает киррилические символы или как применить NLS_LENGTH_SEMANTICS=CHAR / 5 сообщений из 5, страница 1 из 1
05.03.2020, 15:34
    #39934731
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезает киррилические символы или как применить NLS_LENGTH_SEMANTICS=CHAR
Настройки базы данных
Код: plsql
1.
SELECT PARAMETER, VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER IN ('NLS_LENGTH_SEMANTICS', 'NLS_LANGUAGE');



авторNLS_LANGUAGE AMERICAN
NLS_LENGTH_SEMANTICS BYTE

есть таблица с тектовым полем
Код: plsql
1.
CREATE TABLE "DWH"."EMP"  ("ENAME" VARCHAR2(10 BYTE));



делаю инсерт с кириллистическими символами
Код: plsql
1.
Insert into DWH.EMP (ENAME) values ('Иванов');



получаю
авторORA-12899: value too large for column "DWH"."EMP"."ENAME" (actual: 12, maximum: 10)

т.е. 1 символ кириллицы БД считает за 2
команда
Код: plsql
1.
ALTER SYSTEM SET NLS_LENGTH_SEMANTICS=CHAR scope=both;


не приводит к успеху. БД также в NLS_LENGTH_SEMANTICS по прежнему BYTE

что нужно перенастроить, чтобы кириллические символы считались одекватно и вставлялись?
...
Рейтинг: 0 / 0
05.03.2020, 15:44
    #39934736
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезает киррилические символы или как применить NLS_LENGTH_SEMANTICS=CHAR
Ольга Семенова
что нужно перенастроить
Код: plsql
1.
alter table
...
Рейтинг: 0 / 0
05.03.2020, 15:55
    #39934746
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезает киррилические символы или как применить NLS_LENGTH_SEMANTICS=CHAR
Elic,

если я дополнительно при описании типа поля еще прописывать Char
CREATE TABLE "DWH"."EMP_2" ("ENAME" VARCHAR2(10 char ))

то тогда все в порядке инсертится
но если делать просто
CREATE TABLE "DWH"."EMP_3" ("ENAME" VARCHAR2(10))
то он таблицу делает в BYTE по умолчанию

нельзя ли эту дефолтную опцию BYTE переделать на Char? для всех вновь создаваемых таблиц с текстовыми полями
...
Рейтинг: 0 / 0
05.03.2020, 16:05
    #39934755
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезает киррилические символы или как применить NLS_LENGTH_SEMANTICS=CHAR
Ольга Семенова
нельзя ли эту дефолтную опцию BYTE переделать на Char? для всех вновь создаваемых таблиц с текстовыми полями
Возможно, нужен рестарт экземпляра после
Ольга Семенова
Код: plsql
1.
ALTER SYSTEM SET NLS_LENGTH_SEMANTICS=CHAR

...
Рейтинг: 0 / 0
05.03.2020, 16:24
    #39934773
Ольга Семенова
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезает киррилические символы или как применить NLS_LENGTH_SEMANTICS=CHAR
Elic
Ольга Семенова
нельзя ли эту дефолтную опцию BYTE переделать на Char? для всех вновь создаваемых таблиц с текстовыми полями
Возможно, нужен рестарт экземпляра после
Ольга Семенова
Код: plsql
1.
ALTER SYSTEM SET NLS_LENGTH_SEMANTICS=CHAR



не помогло . Тоже самое в NLS_LENGTH_SEMANTICS=BYTE

SQL>SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> STARTUP;
ORACLE instance started.

Total System Global Area 1610612736 bytes
Fixed Size 2924928 bytes
Variable Size 1040191104 bytes
Database Buffers 553648128 bytes
Redo Buffers 13848576 bytes
Database mounted.
Database opened.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обрезает киррилические символы или как применить NLS_LENGTH_SEMANTICS=CHAR / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]