Имеется бд 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;
Если нет - миграция данных и в худшем случае програм, которые не совсем понимают новую кодировку.
Подробнее читаем тут или в общих чертах по-русски тут
Комментариев нет:
Отправить комментарий