Изменить язык (кодовую страницу) базы данных Oracle

У нас есть две базы данных Oracle, которые настроены на:

SQL> SELECT USERENV ('language') FROM DUAL;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

Остальные наши экземпляры установлены следующим образом:

SQL> SELECT USERENV ('language') FROM DUAL;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.WE8ISO8859P1

Это создает всевозможные проблемы при передаче данных из одной базы данных в другую. Можно ли преобразовать два "нестандартных" БД в соответствие с другими. Если так, то как?

1 ответ

Ну , первый набор символов - это Unicode, который в основном поддерживает все языки. Второй ("P1") - ASCII для Западной Европы, поддерживающий английский и некоторые дополнительные западные символы.

Так,

  • на каких языках ваши данные? какие языки вам нужно будет поддерживать?
  • Вы хотите конвертировать UNICODE db в ASCII db или наоборот?

Преобразование из WE8...P1 в Unicode может быть легко выполнено путем экспорта (установка NLS_LANG в WE8..P1), создания новой пустой базы данных и импорта (опять же, установка NLS_LANG в WE8..P1). Однако преобразование в Unicode имеет некоторые побочные эффекты, особенно в отношении ограничений любых столбцов varchar2 - если это был varchar2 (20), это обычно означает 20 байтов, поэтому при использовании Unicode 20 байтов могут содержать меньше (не английских) символов. Таким образом, чтобы избежать усечения данных, некоторые столбцы могут быть увеличены... Все подробности здесь:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28298/ch11charsetmig.htm

Преобразование из UTF8 в WE8..P1 выполняется снова, выполняется экспорт с NLS_LANG=WE8...P1 (теперь вы потеряете все символы, которые не отображаются в P1 ASCII, такие как арабский, китайский и т. Д.), Создав пустой We8.. База данных P1 и импорт данных с NLS_LANG=WE8ISO8859P1.

Другие вопросы по тегам