Страницы

Поиск по вопросам

среда, 13 марта 2019 г.

изменение кодировки oracle sql

Имеется бд oracle , в которой nls_lang установлено как russian_russia. Необходимо поменять кодировку на american.
как я проверяю кодировку : select * from nls_database_parameters
Пробовал изменить реестр и установить кодировку, что мне нужна. Пробовал прописать set nls_lang = american_america, но ничего не работает. Переустанавливать не хочется.
Может есть работающие алгоритмы смены кодировки?


Ответ

Если вы хотите установить окружение, то - set NLS_LANG=american_america. Так Вы измените окружение только для клиентских програм.
Я так понял Вам надо изменить на уровне ДБ. Тогда надо в файле параметрах init.ora прописать NLS_LANGUAGE и NLS_TERRITORY отдельно.
NLS_LANG не используется в init.ora.
UPD Выше сказаное касалось языка и территории. Кодировкa устанавливается в NLS_CHARACTERSET, т.е. v 3-й составляющей NLS_LANG (languge_territory.characterset). Кодировку можно изменить только, если новая кодировка является строгим супермножеством старой кодировки, т.е. нельзя поменять WE8ISO8859P5 на AL32UTF8, а US7ASCII можно всегда.
Если повезло, то alter database character set AL32UTF8; Если нет - миграция данных и в худшем случае програм, которые не совсем понимают новую кодировку. Подробнее читаем тут или в общих чертах по-русски тут

Комментариев нет:

Отправить комментарий